【AI理論】Mask R-CNN模型解析

      網(wǎng)友投稿 1663 2025-03-31

      Mask R-CNN模型解析


      Mask R-CNN是由華人學(xué)者何凱明教授主導(dǎo)的一個(gè)多任務(wù)深度學(xué)習(xí)模型,能夠在一個(gè)模型中完成圖片中實(shí)例的分類和定位,并繪制出像素級(jí)的遮罩(Mask)來完成分割任務(wù)。Mask R-CNN是一個(gè)較為復(fù)雜的模型,使用了若干不同的網(wǎng)絡(luò)模型,包括ResNet,F(xiàn)PN,RPN以及分類和回歸模型。下面,我們對(duì)Mask R-CNN進(jìn)行逐步的剖析。

      Mask R-CNN的三個(gè)主要網(wǎng)絡(luò)

      Mask R-CNN包括三個(gè)主要的子網(wǎng)絡(luò):

      【AI理論】Mask R-CNN模型解析

      backbone網(wǎng)絡(luò)

      RPN網(wǎng)絡(luò)

      head網(wǎng)絡(luò)

      整體結(jié)構(gòu)如下圖所示:

      下面,我們逐步分析這三個(gè)主要的網(wǎng)絡(luò)。

      backbone網(wǎng)絡(luò)

      Mask R-CNN的backbone網(wǎng)絡(luò),也稱為骨干網(wǎng),主要用于圖像的特征提取。在Mask R-CNN之前,F(xiàn)aster R-CNN使用一個(gè)共享的卷積神經(jīng)網(wǎng)絡(luò)作為骨干網(wǎng),Mask-RCNN的一個(gè)改進(jìn)點(diǎn)在于,使用ResNet+FPN作為backbone網(wǎng)絡(luò),對(duì)于輸入圖片,生成多種尺寸的特征圖,形成不同level的特征圖金字塔,進(jìn)一步強(qiáng)化了backbone網(wǎng)絡(luò)的特征提取能力。

      ResNet網(wǎng)絡(luò)

      當(dāng)時(shí)還在微軟研究院的何凱明教授和他的同事們通過對(duì)深層網(wǎng)絡(luò)的研究,提出了ResNet模型。既然簡單粗暴的疊加神經(jīng)層會(huì)導(dǎo)致精度下降,那么,通過加入一個(gè)殘差模塊,通過模型的訓(xùn)練,在適當(dāng)?shù)那闆r下讓深度網(wǎng)絡(luò)退化成一個(gè)淺層的網(wǎng)絡(luò),這樣就能避免過深的網(wǎng)絡(luò)帶來的退化問題。通過在正常的深層網(wǎng)絡(luò)中加入一個(gè)恒等映射,就可以實(shí)現(xiàn)殘差模塊,如圖下所示:

      ResNet提出后,網(wǎng)絡(luò)訓(xùn)練的深度從VGG時(shí)代的十幾層,一舉躍升至ResNet Xt的152層,ResNet也在VGG之后的2015年奪得ILSVRC圖像識(shí)別的冠軍,top5的錯(cuò)誤率降低到5.37%,首次在ILSVRC競賽中超過了人眼的識(shí)別精度5.1%。

      FPN

      Mask R-CNN的backbone網(wǎng)絡(luò)還包括了FPN(Feature Pyramid Network,圖像特征金字塔)。FPN是Facebook的AI實(shí)驗(yàn)室FAIR在2017年提出的。2017年,何凱明教授已經(jīng)從微軟離開,加入FAIR,也參與了FPN的研究和論文發(fā)表,從ResNet到FPN再到Mask R-CNN,都有何教授的參與或主導(dǎo),不得不令人佩服。直觀的理解,圖像在卷積神經(jīng)網(wǎng)路的處理過程中,其尺寸逐步減小,而深度逐步增加,隨著深度的增加,圖像的細(xì)節(jié)特征逐步退化,而呈現(xiàn)出更抽象的語義特征。常規(guī)的卷積神經(jīng)網(wǎng)絡(luò)往往采用最后一個(gè)卷積的結(jié)果對(duì)圖像進(jìn)行分類,對(duì)于圖片中一些較小的物體,則無法達(dá)到較好的效果。FPN的思想是,保留卷積過程中不同階段的輸出結(jié)果,同時(shí)進(jìn)行訓(xùn)練,這樣,既能在較為抽象的特征中識(shí)別較大物體,也能夠在細(xì)節(jié)較多的特征中對(duì)小物體進(jìn)行有效的識(shí)別,對(duì)不同層次的語義特征都能夠進(jìn)行有效的利用。

      ResNet在卷積處理的過程中,定義了不同的stage,每個(gè)stage輸出不同尺寸的特征圖,而這種結(jié)構(gòu)恰好可以用來生成FPN,與FPN結(jié)合的天衣無縫,這兩種模型的組合如下圖所示:

      通過ResNet與FPN,我們得到了P2到P6這5中規(guī)格的特征圖,用作后續(xù)兩個(gè)模型的輸入,下面是經(jīng)過backbone處理的P2到P6的一個(gè)示例結(jié)果:

      RPN網(wǎng)絡(luò)

      RPN網(wǎng)絡(luò)主要用于生成Proposal,即帶有前景、背景、包圍框信息的區(qū)域。通過backbone網(wǎng)絡(luò),我們已經(jīng)生成了不同尺寸的特征圖。在RPN中,我們先對(duì)特征圖上的每個(gè)像素都生成3個(gè)Anchor(像素區(qū)域的錨框),Anchor的長寬比為1:2, 1:1, 2:-1,即[0.5, 1, 2]。假設(shè)輸入圖片我們統(tǒng)一處理成1024x1024,則P2到P6特征圖的邊長分別為[256, 128, 64, 32, 16],特征圖單個(gè)像素對(duì)應(yīng)原圖區(qū)域的邊長則分別為[4, 8, 16, 32, 64],以P2為例,我們對(duì)每個(gè)像素生成的3個(gè)anchor尺寸為:

      需要注意的是,為了保證anchor面積不變,長寬的大小在變化時(shí),要乘以或者除以根號(hào)2(表中用2^0.5表示)。對(duì)于P2,我們要生成anchor數(shù)量為256x256x3,P3的數(shù)量為128x128x3,以此類推。生成的全部anchor數(shù)量為3x(256^2+128^2+64^2+32^2+16^2)=261888。

      Anchor的訓(xùn)練

      Anchor生成之后,我們需要對(duì)Anchor進(jìn)行處理,生成可以訓(xùn)練的數(shù)據(jù),包括兩個(gè)部分:

      Anchor是前景還是背景

      Anchor的包圍框修正信息

      我們通過IoU(Intersection over Union)來判斷一個(gè)Anchor是前景還是背景。我們對(duì)比一個(gè)Anchor和Ground Truth的包圍框,計(jì)算兩個(gè)框的交集與并集的商,即兩個(gè)框重合的比例有多大,IoU如下圖的示意:

      顯然IoU的范圍為[0, 1],當(dāng)Anchor與Ground Truth box完全不相交時(shí),IoU為0,當(dāng)兩者完全重合時(shí),IoU為1,IoU越大,表示Anchor框住的物體面積越大。我們把IoU大于0.7的Anchor標(biāo)記為前景(正樣本),小于0.3的Anchor標(biāo)記為背景(負(fù)樣本),而IoU在0.3和0.7之間的Anchor認(rèn)為是不明確的Anchor,我們?cè)谟?xùn)練時(shí)丟棄不用。

      通過IoU我們標(biāo)記出Anchor的正負(fù)樣本,針對(duì)正樣本,我們需要對(duì)其進(jìn)行包圍框的回歸。假設(shè)Ground Truth box的中心點(diǎn)和寬高分別為x, y, w, h,Anchor的中心點(diǎn)和寬高分別為x', y', w', h',然后,我們計(jì)算下面4個(gè)量:

      dx = (x-x') / w'

      dy = (y-y') / h'

      dw = log((w-w') / w')

      dh = log((h-h') / h')

      然后對(duì)這4個(gè)量進(jìn)行回歸訓(xùn)練,得到Anchor的修正信息。

      在訓(xùn)練階段,我們將輸入的特征圖進(jìn)行一個(gè)3x3的卷積,得到F,對(duì)F進(jìn)行一個(gè)(1x1,6)的卷積(代表卷積核大小為1x1,深度為6,即Anchor數(shù)量3乘以二分類數(shù)量2),再輸入到一個(gè)softmax層得到二分類;對(duì)于包圍框回歸,則是對(duì)F進(jìn)行一個(gè)(1x1, 12)的卷積,12即Anchor數(shù)量3乘以修正信息的個(gè)數(shù)4,再將卷積結(jié)果輸入到一個(gè)線性回歸層。這個(gè)過程如下圖所示:

      其中分類問題使用交叉熵?fù)p失函數(shù)訓(xùn)練,回歸問題使用SmoothL1損失函數(shù)進(jìn)行訓(xùn)練。這樣,通過對(duì)Anchor的訓(xùn)練,我們就得到了初步的Anchor分類和回歸模型。

      RoI

      RoI,即Region of Interest,字面的意思就是"感興趣區(qū)域",也就是我們認(rèn)為有可能是框住物體的區(qū)域(我們對(duì)這樣的區(qū)域是感興趣的)。Anchor經(jīng)過前面的訓(xùn)練,得到了前景背景分?jǐn)?shù),我們使用softmax做分類,因此,前景背景分?jǐn)?shù)即anchor為前景或背景的概率。我們篩選出前景分?jǐn)?shù)較高的Anchor,然后通過修正信息得到修正后的包圍框,再對(duì)修正的包圍框進(jìn)行NMS(Non-Max Supression,非極大值抑制)處理,去掉重復(fù)的修正狂,最終得到與Ground Truth box最匹配的若干個(gè)修正框,即RoI。

      得到RoI后,我們生成head網(wǎng)絡(luò)所需的數(shù)據(jù)。首先計(jì)算RoI與Ground Truth box的IoU并設(shè)置閾值0.5,IoU大于0.5的樣本標(biāo)記為正樣本,小于0.5的標(biāo)記為負(fù)樣本,對(duì)于正樣本,我們要給出head網(wǎng)絡(luò)訓(xùn)練所需的三個(gè)值:

      正樣本RoI所框住物體的分類id

      正樣本RoI與Ground Truth box的偏移量(RoI是Anchor訓(xùn)練得到的,與Ground Truth box還會(huì)存在偏移差)

      正樣本RoI的Mask信息

      RoI可能與多個(gè)Ground Truth的IoU大于0.5,我們?nèi)oU最大的Ground Truth,將其分類id和Mask信息賦給RoI;RoI邊框修正信息的計(jì)算方式與Anchor一致。這樣,RoI的正樣本中,就包含了某個(gè)具體物體的分類、Mask信息和邊框修正信息,我們將帶有這些信息的RoI稱為Proposal,將其輸入到RoI Align層后,再進(jìn)入head網(wǎng)絡(luò)進(jìn)行進(jìn)一步的訓(xùn)練。

      RoI Align

      RoI Align是Mask R-CNN針對(duì)Faster R-CNN的一個(gè)重要改進(jìn)。在Faster R-CNN模型中,需要將Proposal和特征圖池化為固定的尺寸,以便于后續(xù)head網(wǎng)絡(luò)的訓(xùn)練。Faster R-CNN中的backbone網(wǎng)絡(luò)使用的是VGG16,生成的特征圖stride為32,即尺寸為原圖的1/32,因此原圖的包圍框向特征圖映射時(shí),除以32,會(huì)出現(xiàn)浮點(diǎn)數(shù),F(xiàn)aster R-CNN中對(duì)浮點(diǎn)數(shù)直接進(jìn)行了取整的操作,這一步損失了一部分精度。在RoI Pooling層中,要對(duì)包圍框進(jìn)一步進(jìn)行池化操作,將大小固定為7x7,縮放后又會(huì)出現(xiàn)浮點(diǎn)數(shù),RoI Pooling層會(huì)對(duì)浮點(diǎn)數(shù)再進(jìn)行一次取整操作,因此又損失一部分精度。以下圖為例,原圖大小為800x800,物體大小為665x665,第一次映射后,邊長變?yōu)?55/32=20.78,取整后為20,原圖映射為20x20的特征圖。第二次映射后后,20x20的特征圖被固定為7x7尺寸,20/7=2.86,則源特征圖中的2個(gè)像素映射為1個(gè)像素,將7x7的特征圖進(jìn)行上采樣映射會(huì)源特征圖,發(fā)現(xiàn)對(duì)應(yīng)的面積僅為14x14,誤差非常大。這會(huì)導(dǎo)致head網(wǎng)絡(luò)中的回歸產(chǎn)生較大的偏差。

      Mask R-CNN的RoI Align層做法有所不同。作為對(duì)比,我們假設(shè)仍然使用VGG作為backbone網(wǎng)絡(luò),則原圖向特征圖映射時(shí),655x655的物體特征圖尺寸為20.78x20.78,這一步并不進(jìn)行取整操作,而是保留浮點(diǎn)數(shù)。經(jīng)過RoI Align池化為7x7的區(qū)域時(shí),首先將20.78x20.78的區(qū)域分為7x7網(wǎng)格,則每個(gè)網(wǎng)格單元大小為20.78/7=2.97,也即池化后單位像素在特征圖中對(duì)應(yīng)的長度。接下來設(shè)置一個(gè)采樣點(diǎn)的數(shù)量,一般為4,即把特征圖中2.97x2.97的區(qū)域平均劃分為2x2,共4個(gè)更小的區(qū)域,每個(gè)區(qū)域按照雙線性差值算法計(jì)算中心點(diǎn)的像素值作為該區(qū)域的值,將得到的2x2采樣區(qū)域的4個(gè)采樣點(diǎn)的值計(jì)算出來,再進(jìn)行一次池化,這樣,最終也能生成7x7的區(qū)域,但是并沒有丟失精度。RoI Align采樣點(diǎn)的計(jì)算過程如下圖所示:

      除了精度操作,由于Mask R-CNN使用ResNet+FPN作為backbone網(wǎng)絡(luò),輸出的特征圖尺寸有所不同,在原圖向特征圖進(jìn)行映射時(shí),需要先計(jì)算出特征圖在FPN中的level,按照公式level=[k0 + log2(sqrt(w*h) / 244)],其中k0是w,h=244,244時(shí)對(duì)應(yīng)的level,一般取4,得到FPN的level后,得到特征圖對(duì)于原圖的縮放比例,就可以進(jìn)行映射了。

      由于Mask R-CNN中在head網(wǎng)絡(luò)增加了mask分之,因此RoI Align除了將包圍框固定為7x7,還會(huì)將mask則固定為14x14,計(jì)算的方式與上述過程是一致的。

      Head網(wǎng)絡(luò)

      經(jīng)過RoI Align的池化操作,就得到了head網(wǎng)絡(luò)的訓(xùn)練數(shù)據(jù)。即:7x7的包圍框,14x14的mask信息以及分類信息。

      分類與回歸分支

      head的輸入數(shù)據(jù)首先經(jīng)過兩層卷積網(wǎng)絡(luò),然后輸入到兩個(gè)全連接層,在分別輸入到softmax和線性回歸激活層。其中softmax層使用交叉熵?fù)p失函數(shù)訓(xùn)練,線性回歸使用SmoothL1損失函數(shù)訓(xùn)練。這與RPN中Anchor的訓(xùn)練是一致的。

      Mask分支

      RoI Align池化固定的14x14 mask信息經(jīng)過幾層conv, BatchNorm, ReLU后,再進(jìn)行2x2的反卷積操作,得到28x28的圖像區(qū)域。然后經(jīng)過大小1x1、深度為分類個(gè)數(shù)的卷積操作,輸出每一個(gè)分類的28x28 mask信息,再經(jīng)過一個(gè)sigmoid激活函數(shù),這樣28x28的像素區(qū)域,每個(gè)區(qū)域的值為0或1,代表是否為物體的遮罩。mask分支采用二元交叉熵?fù)p失函數(shù)進(jìn)行訓(xùn)練,來預(yù)測(cè)每個(gè)像素位置為0還是1。

      至此,我們?yōu)g覽了整個(gè)Mask R-CNN模型的結(jié)構(gòu),Mask R-CNN模型的損失函數(shù)一共有5個(gè):

      Anchor二分類,交叉熵?fù)p失函數(shù)

      Anchor包圍框回歸,SmoothL1損失函數(shù)

      head網(wǎng)絡(luò)的分類,交叉熵?fù)p失函數(shù)

      head網(wǎng)絡(luò)的回歸分支,SmoothL1損失函數(shù)

      head網(wǎng)絡(luò)的mask分支,二元交叉熵?fù)p失函數(shù)

      人工智能 機(jī)器學(xué)習(xí)

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:excel2003去掉重復(fù)數(shù)據(jù)方法
      下一篇:如何設(shè)置excel打印時(shí)每頁都有表尾(excel打印表尾每頁怎么設(shè)置)
      相關(guān)文章
      亚洲熟妇少妇任你躁在线观看| www.亚洲一区| 国产亚洲美女精品久久| 亚洲一区二区三区精品视频| 久久久亚洲AV波多野结衣 | 亚洲AV无码一区二区三区性色| 77777午夜亚洲| 亚洲人成7777| 亚洲视频一区二区三区四区| 亚洲日韩中文字幕| 亚洲六月丁香六月婷婷蜜芽| 亚洲综合一区二区精品久久| 久久精品国产亚洲AV麻豆王友容| 国产亚洲欧洲Aⅴ综合一区| 精品国产人成亚洲区| 亚洲综合激情另类专区| 久久精品国产亚洲Aⅴ香蕉| 不卡一卡二卡三亚洲| 亚洲国产精品无码中文字| 亚洲春色在线视频| 亚洲高清日韩精品第一区| 亚洲人成电影在线观看网| 2017亚洲男人天堂一| 亚洲av日韩综合一区久热| 亚洲成av人片不卡无码久久| 亚洲日韩在线观看| 国产亚洲综合色就色| 亚洲黄色网址大全| 亚洲国产成a人v在线观看| 亚洲精品永久在线观看| 亚洲av高清在线观看一区二区| 久久久久无码专区亚洲av| 亚洲大尺度无码专区尤物| 亚洲视频免费在线看| 亚洲最大福利视频| 相泽南亚洲一区二区在线播放| 亚洲免费视频一区二区三区| 亚洲男人的天堂www| 亚洲天天做日日做天天欢毛片 | 亚洲欧洲日韩综合| 精品亚洲成在人线AV无码|