Mask-RCNN技术解析
Mask-RCNN技術(shù)解析
MaskR-CNN
論文鏈接:https://arxiv.org/pdf/1703.06870.pdf
代碼鏈接:https://github.com/CharlesShang/FastMaskRCNN
摘要
提出了一個(gè)概念簡(jiǎn)單,靈活,通用的對(duì)象實(shí)例分割框架。本方法有效地檢測(cè)圖像中的對(duì)象,同時(shí)為每個(gè)實(shí)例生成高質(zhì)量的分割掩碼。該方法稱為Mask R-CNN,通過在已有的包圍盒識(shí)別分支的基礎(chǔ)上增加一個(gè)預(yù)測(cè)對(duì)象掩模的分支,使R-CNN擴(kuò)展得更快。Mask R-CNN訓(xùn)練簡(jiǎn)單,僅為速度更快的R-CNN增加少量開銷,運(yùn)行速度為5 fps。此外,Mask R-CNN易于推廣到其他任務(wù),例如,允許在相同的框架中估計(jì)人體姿勢(shì)。展示了COCO系列挑戰(zhàn)的所有三個(gè)軌跡的最佳結(jié)果,包括實(shí)例分割、包圍盒對(duì)象檢測(cè)和人的關(guān)鍵點(diǎn)檢測(cè)。不需要經(jīng)過修飾,Mask R-CNN在每一項(xiàng)任務(wù)上都勝過所有現(xiàn)有的單模式參賽作品,包括COCO 2016挑戰(zhàn)賽的獲勝者。簡(jiǎn)單有效的方法將作為一個(gè)堅(jiān)實(shí)的基線,并有助于在實(shí)例級(jí)識(shí)別的未來研究。
一. Mask-RCNN
介紹
Mask-RCNN,看著比較好理解,就是在 RCNN 的基礎(chǔ)上添加 Mask。
Mask-RCNN 來自于Facebook的 Kaiming He,通過在 Faster-RCNN 的基礎(chǔ)上添加一個(gè)分支網(wǎng)絡(luò),在實(shí)現(xiàn)目標(biāo)檢測(cè)的同時(shí),把目標(biāo)像素分割出來。
假設(shè)大家對(duì) Faster已經(jīng)很熟悉了,其中,黑色部分為原來的 Faster-RCNN,紅色部分為在 Faster網(wǎng)絡(luò)上的修改
1)將 Roi Pooling 層替換成了RoiAlign;
2)添加并列的 FCN 層(mask 層);
Mask-RCNN的幾個(gè)特點(diǎn)
1)在邊框識(shí)別的基礎(chǔ)上添加分支網(wǎng)絡(luò),用于 語(yǔ)義Mask 識(shí)別;
2)訓(xùn)練簡(jiǎn)單,相對(duì)于 Faster 僅增加一個(gè)小的 Overhead,可以跑到 5FPS;
3)可以方便的擴(kuò)展到其他任務(wù),比如人的姿態(tài)估計(jì) 等;
4)不借助 Trick,在每個(gè)任務(wù)上,效果優(yōu)于目前所有的 single-model entries;包括 COCO 2016 的Winners。
二. Mask-RCNN 技術(shù)要點(diǎn)
Mask R-CNN基本結(jié)構(gòu):與Faster RCNN采用了相同的two-state步驟:首先是找出RPN,然后對(duì)RPN找到的每個(gè)RoI進(jìn)行分類、定位、并找到binary mask。這與當(dāng)時(shí)其他先找到mask然后在進(jìn)行分類的網(wǎng)絡(luò)是不同的。
● 技術(shù)要點(diǎn)1 - 強(qiáng)化的基礎(chǔ)網(wǎng)絡(luò)
通過 ResNeXt-101+FPN 用作特征提取網(wǎng)絡(luò),達(dá)到
state-of-the-art 的效果。
● 技術(shù)要點(diǎn)2 -ROIAlign 采用 ROIAlign 替代 RoiPooling(改進(jìn)池化操作)。引入了一個(gè)插值過程,先通過雙線性插值到1414,再 pooling到77,很大程度上解決了僅通過 Pooling 直接采樣帶來的 Misalignment 對(duì)齊問題。
雖然
Misalignment 在分類問題上影響并不大,但在 Pixel 級(jí)別的 Mask 上會(huì)存在較大誤差。
后面把結(jié)果對(duì)比貼出來(Table2 c & d),能夠看到 ROIAlign 帶來較大的改進(jìn),可以看到,Stride 越大改進(jìn)越明顯。
● 技術(shù)要點(diǎn)3 -Loss Function
每個(gè) ROIAlign 對(duì)應(yīng) K * m^2 維度的輸出。K 對(duì)應(yīng)類別個(gè)數(shù),即輸出 K 個(gè)mask,m對(duì)應(yīng) 池化分辨率(7*7)。Loss 函數(shù)定義:
Lmask(Cls_k) = Sigmoid (Cls_k),平均二值交叉熵 (average binary cross-entropy)Loss,通過逐像素的 Sigmoid 計(jì)算得到。
Why 有K個(gè)mask?通過對(duì)每個(gè) Class 對(duì)應(yīng)一個(gè) Mask 可以有效避免類間競(jìng)爭(zhēng)(其他 Class 不貢獻(xiàn) Loss )。
通過結(jié)果對(duì)比來看(Table2 b),也就是作者所說的 Decouple 解耦,要比多分類 的 Softmax 效果好很多。
三. 對(duì)比實(shí)驗(yàn)效果
Training:
1.當(dāng)IoU與Ground Truth的IoU大于0.5時(shí)才會(huì)被認(rèn)為有效的RoI,只把有效RoI計(jì)算進(jìn)去。
2.采用image-centric
training,圖像短邊resize到800,每個(gè)GPU的mini-batch設(shè)置為2,每個(gè)圖像生成N個(gè)RoI,對(duì)于C4 backbone的N=64,對(duì)于FPN作為backbone的,N=512。使用了8塊GPU,所以總的minibatch是16,迭代了160k次,初始lr=0.02,在迭代到120k次時(shí),將lr設(shè)定到 lr=0.002,另外學(xué)習(xí)率的weight_decay=0.0001,momentum= 0.9。如果是resnext,初始lr=0.01,每個(gè)GPU的mini-batch是1。
3.RPN的anchors有5種scale,3種ratios。為了方便剝離、如果沒有特別指出,則RPN網(wǎng)絡(luò)是單獨(dú)訓(xùn)練的且不與Mask R-CNN共享權(quán)重。RPN和Mask R-CNN使用一個(gè)backbone,所以他們的權(quán)重是共享的。
(Ablation Experiments 為了方便研究整個(gè)網(wǎng)絡(luò)中哪個(gè)部分其的作用到底有多大,需要把各部分剝離開)
Inference: 在測(cè)試時(shí),使用C4 backbone情況下proposal
number=300,使用FPN時(shí)proposal number=1000。然后在這些proposal上運(yùn)行bbox預(yù)測(cè),接著進(jìn)行非極大值抑制。mask分支只應(yīng)用在得分最高的100個(gè)proposal上。順序和train是不同的,但這樣做可以提高速度和精度。mask 分支對(duì)于每個(gè)roi可以預(yù)測(cè)k個(gè)類別,只要背景和前景兩種,所以只用k-th mask,k是根據(jù)分類分支得到的類型。然后把k-th mask resize成roi大小,同時(shí)使用閾值分割(threshold=0.5)二值化。
另外,給出了很多實(shí)驗(yàn)分割效果,下面是一張和 FCIS 的對(duì)比圖(FCIS 出現(xiàn)了Overlap 的問題):
四. Mask-RCNN 擴(kuò)展
Mask-RCNN 在姿態(tài)估計(jì)上的擴(kuò)展,效果不錯(cuò)。
總結(jié)
以上是生活随笔為你收集整理的Mask-RCNN技术解析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 汽车HUD(Head-up Displa
- 下一篇: YOLOvi(i=1,2,3,4)系列