日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

    歡迎訪問 生活随笔!

    生活随笔

    當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

    编程问答

    Mask R-CNN论文理解

    發(fā)布時(shí)間:2023/12/2 编程问答 32 豆豆
    生活随笔 收集整理的這篇文章主要介紹了 Mask R-CNN论文理解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

    摘要:

    • Mask RCNN可以看做是一個(gè)通用實(shí)例分割架構(gòu)。
    • Mask RCNN以Faster RCNN原型,增加了一個(gè)分支用于分割任務(wù)。
    • Mask RCNN比Faster RCNN速度慢一些,達(dá)到了5fps。
    • 可用于人的姿態(tài)估計(jì)等其他任務(wù);

    ?

    1、Introduction

    • 實(shí)例分割不僅要正確的找到圖像中的objects,還要對(duì)其精確的分割。所以Instance Segmentation可以看做object dection和semantic segmentation的結(jié)合。
    • Mask RCNN是Faster RCNN的擴(kuò)展,對(duì)于Faster RCNN的每個(gè)Proposal Box都要使用FCN進(jìn)行語義分割,分割任務(wù)與定位、分類任務(wù)是同時(shí)進(jìn)行的。
    • 引入了RoI Align代替Faster RCNN中的RoI Pooling。因?yàn)镽oI Pooling并不是按照像素一一對(duì)齊的(pixel-to-pixel alignment),也許這對(duì)bbox的影響不是很大,但對(duì)于mask的精度卻有很大影響。使用RoI Align后mask的精度從10%顯著提高到50%,第3節(jié)將會(huì)仔細(xì)說明。
    • 引入語義分割分支,實(shí)現(xiàn)了mask和class預(yù)測(cè)的關(guān)系的解耦,mask分支只做語義分割,類型預(yù)測(cè)的任務(wù)交給另一個(gè)分支。這與原本的FCN網(wǎng)絡(luò)是不同的,原始的FCN在預(yù)測(cè)mask時(shí)還用同時(shí)預(yù)測(cè)mask所屬的種類。
    • 沒有使用什么花哨的方法,Mask RCNN就超過了當(dāng)時(shí)所有的state-of-the-art模型。
    • 使用8-GPU的服務(wù)器訓(xùn)練了兩天。

    ?

    2、Related Work

    相比于FCIS,FCIS使用全卷機(jī)網(wǎng)絡(luò),同時(shí)預(yù)測(cè)物體classes、boxes、masks,速度更快,但是對(duì)于重疊物體的分割效果不好。

    ?

    3、Mask R-CNN

    MaskRCNN網(wǎng)絡(luò)結(jié)構(gòu)泛化圖:

    從上面可以知道,mask rcnn主要的貢獻(xiàn)在于如下:
    1. 強(qiáng)化的基礎(chǔ)網(wǎng)絡(luò)
    通過 ResNeXt-101+FPN 用作特征提取網(wǎng)絡(luò),達(dá)到 state-of-the-art 的效果。
    2. ROIAlign解決Misalignment 的問題
    3. Loss Function

    ?

    細(xì)節(jié)描述

    1. resnet +FPN
    作者替換了在faster rcnn中使用的vgg網(wǎng)絡(luò),轉(zhuǎn)而使用特征表達(dá)能力更強(qiáng)的殘差網(wǎng)絡(luò)。

    另外為了挖掘多尺度信息,作者還使用了FPN網(wǎng)絡(luò)。

    stage1和stage2層次結(jié)構(gòu)圖:

    ?結(jié)合MaskRCNN網(wǎng)絡(luò)結(jié)構(gòu)圖,注重點(diǎn)出以下幾點(diǎn):

    1) 雖然事先將ResNet網(wǎng)絡(luò)分為5個(gè)stage,但是,并沒有利用其中的Stage1即P1的特征,官方的說法是因?yàn)镻1對(duì)應(yīng)的feature map比較大計(jì)算耗時(shí)所以棄用;相反,在Stage5即P5的基礎(chǔ)上進(jìn)行了下采樣得到P6,故,利用了[P2 P3 P4 P5 P6]五個(gè)不同尺度的特征圖輸入到RPN網(wǎng)絡(luò),分別生成RoI.

    2)[P2 P3 P4 P5 P6]五個(gè)不同尺度的特征圖由RPN網(wǎng)絡(luò)生成若干個(gè)anchor box,經(jīng)過NMS非最大值抑制操作后保留將近共2000個(gè)RoI(2000為可更改參數(shù)),由于步長(zhǎng)stride的不同,分開分別對(duì)[P2 P3 P4 P5]四個(gè)不同尺度的feature map對(duì)應(yīng)的stride進(jìn)行RoIAlign操作,將經(jīng)過此操作產(chǎn)生的RoI進(jìn)行Concat連接,隨即網(wǎng)絡(luò)分為三部分:全連接預(yù)測(cè)類別class、全連接預(yù)測(cè)矩形框box、全卷積預(yù)測(cè)像素分割mask

    2. ROIAlign

    對(duì)于roi pooling,經(jīng)歷了兩個(gè)量化的過程:
    第一個(gè):從roi proposal到feature map的映射過程。方法是[x/16],這里x是原始roi的坐標(biāo)值,而方框代表四舍五入。
    第二個(gè):從feature map劃分成7*7的bin,每個(gè)bin使用max pooling。

    這兩種情況都會(huì)導(dǎo)致證輸入和輸出之間像素級(jí)別上不能一一對(duì)應(yīng)(pixel-to-pixel alignment between network input and output)。

    為了解決ROI Pooling的上述缺點(diǎn),作者提出了ROI Align這一改進(jìn)的方法。ROI Align的思路很簡(jiǎn)單:取消量化操作,使用雙線性內(nèi)插的方法獲得坐標(biāo)為浮點(diǎn)數(shù)的像素點(diǎn)上的圖像數(shù)值,從而將整個(gè)特征聚集過程轉(zhuǎn)化為一個(gè)連續(xù)的操作。值得注意的是,在具體的算法操作上,ROI Align并不是簡(jiǎn)單地補(bǔ)充出候選區(qū)域邊界上的坐標(biāo)點(diǎn),然后將這些坐標(biāo)點(diǎn)進(jìn)行池化,而是重新設(shè)計(jì)了一套比較優(yōu)雅的流程:

    • 遍歷每一個(gè)候選區(qū)域,保持浮點(diǎn)數(shù)邊界不做量化。
    • 將候選區(qū)域分割成k x k個(gè)單元,每個(gè)單元的邊界也不做量化。
    • 在每個(gè)單元中計(jì)算固定四個(gè)坐標(biāo)位置,用雙線性內(nèi)插的方法計(jì)算出這四個(gè)位置的值,然后進(jìn)行最大池化操作。

    如上,roi映射到feature map后,不再進(jìn)行四舍五入。然后將候選區(qū)域分割成k x k個(gè)單元, 在每個(gè)單元中計(jì)算固定四個(gè)坐標(biāo)位置,用雙線性內(nèi)插的方法計(jì)算出這四個(gè)位置的值,然后進(jìn)行最大池化操作。

    3、損失函數(shù):分類誤差+檢測(cè)誤差+分割誤差,即L=Lcls+Lbox+Lmask

    ?? Lcls、Lbox:利用全連接預(yù)測(cè)出每個(gè)RoI的所屬類別及其矩形框坐標(biāo)值,可以參看FasterRCNN網(wǎng)絡(luò)中的介紹。

    ? ?Lmask:

    ?① mask分支采用FCN對(duì)每個(gè)RoI的分割輸出維數(shù)為K*m*m(其中:m表示RoI Align特征圖的大小),即K個(gè)類別的m*m的二值mask;保持m*m的空間布局,pixel-to-pixel操作需要保證RoI特征 映射到原圖的對(duì)齊性,這也是使用RoIAlign解決對(duì)齊問題原因,減少像素級(jí)別對(duì)齊的誤差。

    ? ? ? ??K*m*m二值mask結(jié)構(gòu)解釋:最終的FCN輸出一個(gè)K層的mask,每一層為一類,Log輸出,用0.5作為閾值進(jìn)行二值化,產(chǎn)生背景和前景的分割Mask

    這樣,Lmask?使得網(wǎng)絡(luò)能夠輸出每一類的 mask,且不會(huì)有不同類別 mask 間的競(jìng)爭(zhēng). 分類網(wǎng)絡(luò)分支預(yù)測(cè) object 類別標(biāo)簽,以選擇輸出 mask,對(duì)每一個(gè)ROI,如果檢測(cè)得到ROI屬于哪一個(gè)分 類,就只使用哪一個(gè)分支的相對(duì)熵誤差作為誤差值進(jìn)行計(jì)算。(舉例說明:分類有3類(貓,狗,人),檢測(cè)得到當(dāng)前ROI屬于“人”這一類,那么所使用的Lmask為“人”這一分支的mask,即,每個(gè)class類別對(duì)應(yīng)一個(gè)mask可以有效避免類間競(jìng)爭(zhēng)(其他class不貢獻(xiàn)Loss)

    ?② 對(duì)每一個(gè)像素應(yīng)用sigmoid,然后取RoI上所有像素的交叉熵的平均值作為L(zhǎng)mask。

    ?

    每個(gè) ROI 區(qū)域會(huì)生成一個(gè) m*m*numclass 的特征層,特征層中的每個(gè)值為二進(jìn)制掩碼,為 0 或者為 1。根據(jù)當(dāng)前 ROI 區(qū)域預(yù)測(cè)的分類,假設(shè)為 k,選擇對(duì)應(yīng)的第 k 個(gè) m*m 的特征層,對(duì)每個(gè)像素點(diǎn)應(yīng)用 sigmoid 函數(shù),然后計(jì)算平均二值交叉損失熵,如下圖所示:

    上圖中首先得到預(yù)測(cè)分類為 k 的 mask 特征,然后把原圖中 bounding box 包圍的 mask 區(qū)域映射成 m*m大小的 mask 區(qū)域特征,最后計(jì)算該 m*m 區(qū)域的平均二值交叉損失熵。

    ?

    ?訓(xùn)練和預(yù)測(cè)細(xì)節(jié):

    ?

    ?參考:

    https://blog.csdn.net/wangdongwei0/article/details/83110305

    https://blog.csdn.net/jiongnima/article/details/79094159

    https://blog.csdn.net/xiamentingtao/article/details/78598511

    http://blog.leanote.com/post/afanti.deng@gmail.com/b5f4f526490b

    https://www.cnblogs.com/wangyong/p/9305347.html

    https://cloud.tencent.com/developer/news/189753

    轉(zhuǎn)載于:https://www.cnblogs.com/CJT-blog/p/10443945.html

    總結(jié)

    以上是生活随笔為你收集整理的Mask R-CNN论文理解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。