一、Faster RCNN

Faster RCNN使用CNN提取圖像特征,然后使用region proposal network(RPN)去提取出ROI [ROI(region of interest),感興趣區(qū)域。],然后使用ROI pooling將這些ROI全部變成固定尺寸,再喂給全連接層進行Bounding box回歸和分類預測。
RPN region proposal network
得到用來預測的feature map:圖片在輸入網(wǎng)絡后,依次經(jīng)過一系列卷積+ReLU得到的51×39×256維feature map,準備后續(xù)用來選取proposal。
生成Anchors:anchor是固定尺寸的bbox。具體作法是:把feature map每個點映射回原圖的感受野的中心點當成一個基準點,然后圍繞這個基準點選取k個不同的尺寸和比例的anchor。
雖然anchors是基于卷積特征圖定義的,但最終的 anchors是相對于原始圖片的。
ROI pooling
根據(jù)輸入image,將ROI映射到feature map對應位置;
將映射后的區(qū)域劃分為相同大小的sections(sections數(shù)量與輸出的維度相同);(例如2x2)
對每個sections進行max pooling操作;
二、ResNet-FPN 多尺度檢測

FPN結(jié)構(gòu)中包括自下而上,自上而下和橫向連接三個部分,如下圖所示。這種結(jié)構(gòu)可以將各個層級的特征進行融合,使其同時具有強語義信息和強空間信息,在特征學習中算是一把利器了。
三、MASK RCNN
Mask R-CNN 擴展自 Faster R-CNN,由同一作者在去年提出。Faster R-CNN 是一個流行的目標檢測框架,Mask R-CNN 將其擴展為實例分割框架。


這是一個標準的卷積神經(jīng)網(wǎng)絡(通常來說是 ResNet50 和 ResNet101),作為特征提取器。底層檢測的是低級特征(邊緣和角等),較高層檢測的是更高級的特征(汽車、人、天空等)。
ROI Align
- ROI Align
在Faster RCNN中,有兩次整數(shù)化的過程:
region proposal的xywh通常是小數(shù),但是為了方便操作會把它整數(shù)化。
將整數(shù)化后的邊界區(qū)域平均分割成 k x k 個單元,對每一個單元的邊界進行整數(shù)化。經(jīng)過上述兩次整數(shù)化,此時的候選框已經(jīng)和最開始回歸出來的位置有一定的偏差,這個偏差會影響檢測或者分割的準確度。在論文里,作者把它總結(jié)為“不匹配問題”.
為了解決這個問題,ROI Align方法取消整數(shù)化操作,保留了小數(shù),使用以上介紹的雙線性插值的方法獲得坐標為浮點數(shù)的像素點上的圖像數(shù)值。但在實際操作中,ROI Align并不是簡單地補充出候選區(qū)域邊界上的坐標點,然后進行池化,而是重新進行設計。
下面通過一個例子來講解ROI Align操作。如下圖所示,虛線部分表示feature map,實線表示ROI,這里將ROI切分成2x2的單元格。如果采樣點數(shù)是4,那我們首先將每個單元格子均分成四個小方格(如紅色線所示),每個小方格中心就是采樣點。這些采樣點的坐標通常是浮點數(shù),所以需要對采樣點像素進行雙線性插值(如四個箭頭所示),就可以得到該像素點的值了。然后對每個單元格內(nèi)的四個采樣點進行maxpooling,就可以得到最終的ROIAlign的結(jié)果。
代碼
Mask R-CNN for object detection and instance segmentation on Keras and TensorFlow