mask rcnn算法原理图_基于MASK RCNN算法实现瑕疵图像识别(训练模型及应用)
數據的準備其實是最花功夫和時間的,度過了上一個階段后,就進入激動的模型訓練階段了,首先簡要聊聊我對Mask RCNN算法的理解:
MaskRCNN是何凱明大神基于FastRCNN的改進,2018年初在tensorflow上實現了該模型算法。在原有FastRCNN的基礎上,將ROIPooling部分調整為ROIAlign,同時增加mask值描述分類。我對整個Mask RCNN的理解如下:
MaskRCNN 是一種two stage圖像檢測方法,追求精度和識別效果,所謂two stage,就是說第一步先要對圖像進行掃描,然后生成目標區域,認為里面有東西;第二部再進行圖片分類以及生成界限框(矩形框rois)和mask。與yolo和視網膜等追求速度的one stage算法不一樣。
下面一步一步說,first stage:
圖像進來首先是卷積層:這是一個標準的殘差網,代碼使用的是ResNet101網絡作為特征抽取器,前面的幾層可以檢測低層次的特征,比如邊緣和邊角,后面的層次可以檢測一些高級特征,具體汽車、人、天空等等,通過這個backbone網絡,圖片會被提取出32*32的特征圖 共計2048個。這些特征圖會進入下一個stage
在殘差網絡生成特征的同時,FPN特征金字塔也能更好識別物體的多重尺度上的特征,它將不同層級的特征可以自由的傳遞。雖然最后一層的feature maps 語義強,但是位置和分辨率都比較低,容易檢測不到比較小的物體。FPN的功能就是融合了底層到高層的feature maps ,從而充分的利用了提取到的各個階段的特征(ResNet中的C2-C5? ? ,參閱https://blog.csdn.net/remanented/article/details/79564045)。
這里再說說高層上采樣:為了在圖像分辨率高的時候看見小東西,就要把后面分辨率低的特征拿到前面分辨率高的圖樣里融合成新的特征。繞嘴。。。
這段代碼能看出先生成上層特征,再生成下層特征 ,upsampling即是上采樣。原代碼將FPN放在RPN網絡中用于生成proposal,原來的RPN網絡是以主網絡的某個卷積層輸出的feature map作為輸入,簡單講就是只用這一個尺度的feature map。但是現在要將FPN嵌在RPN網絡中,生成不同尺度特征并融合作為RPN網絡的輸入。(參閱https://blog.csdn.net/u014380165/article/details/72890275)
ResNet殘差網結構
好了,下面談談對second stage的理解。
RPN 區域推薦的網絡,用于幫助網絡推薦感興趣的區域,首先是來自FPN輸出的特征P2到P5,即conv feature map
獲得窗口坐標和前后景置信度
接下來就是RoIAlign了,這也是MaskRCNN的重點改進
ROIpooling與ROIalign的區別
可以看出來,兩者最大的區別就是ROIPooling做了2次取整,從圖片到特征圖,又從特征圖到ROI池化層,這對于圖像分割會產生很大的誤差。RoiAlign采用雙線性插值來得到固定四個點坐標的像素值。得到固定的7*7的區域特征圖
這些搞定了,就可以開始分類和mask了:包括了物體檢測最終的classes和bounding boxes。該部分是利用了之前檢測到了ROI進行分類和回歸(是分別對每一個ROI進行);mask的預測也是在ROI之后的,通過全連接層來進行的。因為每個ROI只對應一個物體,只需對其進行語義分割就好,相當于了實例分割了(? 在訓練的時候,二者都是同時進行的;在預測的時候,先得到分類的結果,然后再把此結果傳入到mask預測中得到mask)
---------------------------------------------------------------------------------------------------------------------------
以上是模型的預測原理,下面談談實際的訓練,訓練的時候要先注明是訓練的哪一個部分:
我這里采用的是訓練頭部70 epoch,訓練resnet stage 5+ 20epoch,總計訓練90epoch,step設置為100.
STEPS_PER_EPOCH 要在config類里面事先說明。
一般情況下訓練到stage5+就可以了
90輪訓練的tensorboard展示
整整跑了130小時。。。
mAP的計算可以調用util的方法,實際上,我們發現關于臟點類的識別,在系統的總體loss值下降到.5以內既可以滿足要求。
另外通過visualize里的方法,可以實現豐富的圖像識別效果
以下為臟點類瑕疵的識別效果:
原圖
訓練效果圖
訓練不足時,會出現誤識別現象
對于鋼板擦痕和劃痕的識別效果比較奇怪,超過一定訓練輪數后,會出現過擬合現象。有點進一步研究:
正常識別效果
過擬合
具體識別規律必須要實際確認,loss和mAP只能算作輔助吧,訓練不一定越多越好,這就是本次”煉丹“的體會吧。
總結
以上是生活随笔為你收集整理的mask rcnn算法原理图_基于MASK RCNN算法实现瑕疵图像识别(训练模型及应用)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 语言用加法实现加饭运算_「编程之美」用C
- 下一篇: ftp上传当天文件的方法_五种方法将文件