目标检测(或分隔)算法Mask R-CNN简介
在博文https://blog.csdn.net/fengbingchun/article/details/87195597 中對Faster R-CNN進行了簡單介紹,這里在Faster R-CNN的基礎上簡單介紹下Mask R-CNN。
Mask R-CNN是faster R-CNN的擴展形式,能夠有效地檢測圖像中的目標,并且Mask R-CNN訓練簡單,只需要在Faster R-CNN的基礎上增加一個較小的開銷,同時還能為每個實例生成一個高質量的分隔掩碼(segmentation mask)。Mask R-CNN是Kaiming He等人在2017年提出的,論文名字為”Mask R-CNN”,可以從https://arxiv.org/pdf/1703.06870.pdf 直接下載。
Mask R-CNN的構建方法是:在每個興趣點RoI上加一個用于預測分隔掩碼的分層,稱為掩碼層(mask branch),使該層并行于已有box層和分類層,具體框架結構如下圖所示:
Mask R-CNN可實現像素級別的圖像實例分隔(Instance Segmentation),Mask R-CNN將物體檢測和目標分隔同時并行處理,取得較好實例分隔效果。Mask R-CNN是在Faster R-CNN基礎上發展而來,在其基礎上增加RoIAlign以及全卷積網絡(Fully Convolutional Network, FCN),Mask R-CNN將分類預測和掩碼(mask)預測拆分為網絡的兩個分支,分類預測分支與Faster R-CNN相同,對興趣區域給出預測,產生類別標簽以及矩形框坐標輸出,而掩碼預測分支產生的每個二值掩碼依賴分類預測結果,基于此刻分隔出物體。Mask R-CNN對每個類別均獨立地預測一個二值掩碼,避開類間的競爭。Mask R-CNN是逐像素分隔。
Mask R-CNN框架結構:當我們在該網絡中輸入一張任意大小的圖像,系統會通過深度卷積網絡完成兩個任務,第一個任務是Faster R-CNN的RPN網絡,主要實現候選區域;第二個任務是目標檢測。KaiMing He等人做出的第一點改進就是將原來的RoIPool改為了RoIAlign,如下圖所示,主要原因是對于分隔操作是基于像素的,而Faster R-CNN在對圖像進行RoIPool時,有兩次量化過程,這中間出現像素的輸入與輸出沒有一一對應。RoIAlign直接將feature map劃分成m*m的bin,然后采用雙線性插值就可以保證池化過程中像素在輸入前后的一一對應關系。
Mask R-CNN網絡經過區域推薦網絡提取候選區域,區域推薦網絡是一個輕量的神經網絡,通過滑動窗口掃描特征圖進行卷積操作,結合不同的尺寸與長寬比,生成互相重疊區域,即anchor,并給出每個anchor默認預置的位置信息,用以后續提取候選區域。區域推薦網絡針對每個anchor輸出兩種信息,第一種信息是對anchor前景或背景類別的預測,前景類別代表該anchor中具有一定概率存在某類或多類目標,背景類別指待檢測目標之外的其它物體,后續會濾除。第二種信息是預置邊框的精調,當目標的中心與前景anchor的中心不完全重合,即存在偏移時,輸出位置信息(x, y, w, h)的變化百分比,以精確地調整anchor位置,對目標位置的擬合更正確。在前景anchor中存在互相重疊的現象,通過非極大值抑制方法濾除前景得分低的anchor,保留得分最高的anchor,最終得到的興趣區域。
Mask R-CNN采用RoIAlign網絡層對興趣區域尺寸進行統一定義,然后分別輸入進兩個分類器分支,Faster R-CNN網絡進行類別以及位置的預測,FCN網絡進行像素級分割。通過FCN網絡來預測并輸出m*m二值掩膜(Binary Mask),m*m是所提取的局部小特征圖的尺寸。為了減少計算量且達到較好分割效果,采用RoIAlign網絡層將m*m特征圖映射回原始輸入圖像上,RoIAlign網絡層映射質量的好壞直接影響到圖像分割掩膜位置的準確度,RoIAlign插值算法的選取對Mask R-CNN網絡分割速度具有較大影響。
FCN分支網絡:常規神經網絡如 Faster R-CNN,為達到像素級別的像素分類,選取某像素鄰域圖像像素塊,輸入神經網絡進行訓練或者預測,像素塊的使用造成數據重復存儲;預測物體類別以及位置時,將特征圖壓縮到全連接層,并輸出一維特征向量存儲預測信息,該過程破壞了特征圖的平面結構,無法進行空間上的卷積計算。而圖像在做實例分割時,像素生成的預測掩膜是對輸入圖像在空間結構上的編碼,輸出像素的預測掩膜無需壓縮特征圖為向量。
FCN網絡傳統卷積神經網絡中的全連接層全部都換成卷積層,故稱為全卷積網絡。采用 RoIAlign 層更精確地將興趣區域于特征圖進行映射,由于興趣區域在特征圖上位置精確,故可以直接對特征圖進行卷積,以卷積形式表達圖像各像素點之間的位置以及映射關系。
經典卷積神經網絡,先是連續的5個卷積層,第 6 以及第 7 層壓縮特征圖,得到長度為4096的一維特征向量,第8層對該向量進一步處理使得長度減小為1000,分別對應預測得到的1000類別的概率。FCN網絡將后3層的一維特征向量進行改變,將其同樣表示為卷積層,即(4096,1,1)、(4096,1,1)、(1000,1,1),可將其視為1*1的卷積核,如下圖所示:
在多個卷積層后邊周期性的插入池化層,導致特征圖在網絡中的分辨率越來越低,FCN使用上采樣(Upsample)方法,使特征圖從低分辨率恢復到較高的分辨率,經過5次卷積層以及池化層的搭配之后,圖像的原始分辨率依次被降低到了1/ 2、1/4、1/8、1/16、1/32。為得到分辨率較高的特征圖,需對最后一層的輸出結果進行32倍上采樣,該過程可通過添加反卷積層(Deconvolution Layer)實現,反卷積層對網絡中最后一層卷積層的輸出的特征圖進行上采樣操作,最終得到原圖相同的尺寸輸出,且特征圖的分辨率提升。特征圖經歷上采樣操作之后,經過神經網絡最后的softmax分類器,預測某像素屬于某類別的概率,在上采樣的特征圖上進行逐像素的預測分類,同時對原始圖像的空間結構未造成破壞。
FCN在圖像分割領域與使用CNN系列網絡方法進行對比,具有兩大優勢:一是輸入圖像的尺寸不受限定,訓練圖像和后續測試圖像的尺寸不做統一要求;二是效率更高,FCN不采用CNN方式將像素塊輸入網絡,避免了重復存儲問題。
RoIAlign:Mask R-CNN的主干網絡,即Faster R-CNN經RPN產生眾多anchor,將其映射的特征圖上,再經非極大值抑制得到興趣區域。常規的Faster R-CNN網絡采用Ro IPool層對特征圖中大小各異的興趣區域進行尺寸上的統一,將興趣區域轉化成不同細粒度的特征圖,后續使用最大池化進行特征提取。任意尺寸的特征圖輸入RoIPool層,輸出固定尺寸特征圖。
RoIPool是卷積神經網絡中常用的特征提取方法,對特征圖尺寸進行縮放歸一化處理,Ro IPool過程采用最近鄰插值方法,通常情況下,縮放后興趣區域位置信息不是整數,但最近鄰插值簡單的進行四舍五入操作,賦給目標點最近像素點的像素值,會導致提取的特征和興趣區域不重合,如下圖所示,假設經卷積提取特征之后的特征圖尺寸為128*128 ,將其池化為固定尺寸,如25*25的特征圖,在將特征區域映射到原始圖像上時,為將原始圖像左下角15*15區域與特征圖中的某特定特征區域建立聯系,需進行插值操作。原始圖像中長寬均為15個的區域像素,在特征圖上對應尺寸為15*25/128≈2.93像素。在此情況下,若采用RoIPool會進行最近鄰插值,非整數部分被四舍五入處理,得到特征區域如3*3,導致區域與真值之間一定程度的錯位。在RoIAlign中會使用雙線性插值法準確得到2.93像素的內容,這樣就能很大程度上,避免了錯位問題。
針對此問題采用舍棄經典RoIPool層,改進池化操作,加入ROIAlign層,使用ROIAlign 層對提取的特征和輸入之間進行校準。基于四個采樣位置使用雙線性插值(Bilinear? Interpolation),將興趣區域歸一化到一定尺寸,再將其池化到統一尺寸大小,在很大程度上避免了RoIPool方法造成的像素錯位。雙線性插值在兩個方向上各自進行線性插值,可視為線性插值的精度升級,保證了空間的對稱性。
在Faster R-CNN的網絡設計上,并未考慮輸入與輸出之間的像素到像素對齊。而實際應用到目標上的核心操作執行的是粗略的空間量化特征提取,為了改進空間錯位,Mask R-CNN提出了一種簡單的方法,叫做ROIAlign,它可以保留精確的空間位置,并將掩碼的準確度提高。
在Faster R-CNN中分為兩個步驟進行訓練,首先是RPN用于提取候選區域,然后,使用ROIPool對候選區域提取的特征進行分類和box回歸,且使用共享權值來提高網絡訓練速度。Mask R-CNN同樣采用兩個步驟,第一步也是RPN提取候選區域,在第二步中,對于每個ROI,Mask R-CNN輸出一個二值的掩碼,將分類與box回歸同時進行,簡化了訓練流程,網路結構如下圖所示:
Mask R-CNN的思路很簡潔,既然Faster R-CNN目標檢測的效果非常好,每個候選區域能輸出種類標簽和定位信息,那么就在Faster R-CNN的基礎上再添加一個分支從而增加一個輸出,即物體掩膜(object mask),也即由原來的兩個任務(分類+回歸)變為了三個任務(分類+回歸+分割)。Mask R-CNN將二進制mask與來自Faster R-CNN的分類和邊界框組合,便產生驚人的圖像精確分隔,如下圖所示:Mask R-CNN是靈活通用的對象實例分割框架,它不僅可以對圖像中的目標進行檢測,還可以對每一個目標輸出一個高質量的分割結果。另外,Mask R-CNN還易于泛化到其他任務,比如人物關鍵點檢測。
以上內容均來自網絡,主要參考文獻如下:
1.?《基于深度學習的海面船舶目標檢測》,哈爾濱工程大學,碩論,2018
2.?《基于深度學習的復雜背景下目標檢測與分隔方法》,中北大學,碩論,2018
3.?https://medium.com/@jonathan_hui/image-segmentation-with-mask-r-cnn-ebe6d793272
4.?https://blog.csdn.net/jiongnima/article/details/79094159
5.?https://github.com/Ewenwan/MVision/blob/master/CNN/%E7%AE%80%E4%BB%8B%E7%89%A9%E4%BD%93%E6%A3%80%E6%B5%8B%E4%BB%8ERCNN%E5%88%B0Mask%20RCNN%E7%9A%84%E7%BD%91%E7%BB%9C%E6%9E%84%E5%9E%8B%E5%8F%98%E5%8C%96.md
6.?https://www.jianshu.com/p/0db565b2ef7d
7.?https://alvinzhu.xyz/2017/10/07/mask-r-cnn/
GitHub:http://github.com/fengbingchun/NN_Test?
總結
以上是生活随笔為你收集整理的目标检测(或分隔)算法Mask R-CNN简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 目标检测算法Faster R-CNN简介
- 下一篇: 图像集存储成MNIST数据集格式实现