R-CNN存在的一些問(wèn)題:
一骆莹、訓(xùn)練分成多個(gè)階段:1、先從一張圖片上提取2000個(gè)候選區(qū)域靶草,采用log損失對(duì)用于提取候選區(qū)域的CNN網(wǎng)絡(luò)進(jìn)行微調(diào)蹄胰。2、訓(xùn)練N(類別數(shù)目)個(gè)SVM奕翔,對(duì)提取的特征進(jìn)行分類裕寨。3、邊界框回歸進(jìn)行目標(biāo)定位派继。
二宾袜、訓(xùn)練大量消耗存儲(chǔ)空間和時(shí)間成本,由于CNN提取的特征需要先存儲(chǔ)到硬盤(pán)驾窟,在拿去給SVM進(jìn)行分類庆猫,所以需要耗費(fèi)大量存儲(chǔ)空間。
三纫普、目標(biāo)檢測(cè)速度慢阅悍。一張圖片在VGG16上進(jìn)行目標(biāo)檢測(cè)需要47s。
Fast R-CNN進(jìn)行的改進(jìn):
一昨稼、沒(méi)有使用seletive search操作节视,而是先將一整張圖片進(jìn)行卷積,這樣可以共享卷積運(yùn)算
二假栓、使用RoI池化層(RoI pooling layer)寻行,下圖展示VGG16網(wǎng)絡(luò)的結(jié)構(gòu),進(jìn)入全連接層的維度大小為7x7x512匾荆。我們知道卷積并沒(méi)有對(duì)圖片大小做限制拌蜘,任意一張圖片都可以進(jìn)行卷積運(yùn)算杆烁,但是全連接層對(duì)輸入的維度有限制。那么如何將任意大小的圖片經(jīng)過(guò)卷積后都能得到7x7的大小简卧。作者參考了SSPnets提出的空間金字塔池化(spatial pyramid pooling layer)兔魂。對(duì)于任意一張HxW大小的圖片,可以將他分割成7x7大小小方格举娩,每個(gè)小方格h=H/7,w=W/7析校。最后對(duì)小方格中進(jìn)行最大池化(max pooling)這樣就得到了7x7的大小,可以進(jìn)行之后的全連接層铜涉。
那么還有一個(gè)問(wèn)題智玻,這個(gè)RoI池化層放下哪里?作者說(shuō)是將最后一個(gè)池化層換做RoI池化層芙代,那么也就是下圖紅色方框前面的POOL吊奢。總結(jié)下纹烹,如果用VGG16訓(xùn)練页滚,任意一張圖片經(jīng)過(guò)先前卷積得到HxWx512的維度,再經(jīng)過(guò)RoI池化層得到7x7x512的大小滔韵,然后送去之后的全連接層逻谦。
三陪蜻、使用多任務(wù)損失:之前的R-CNN將任務(wù)分為3個(gè)階段邦马,造成了空間和時(shí)間的極大浪費(fèi)。Fast R-CNN將分類和定位相加合成一個(gè)損失值宴卖。K個(gè)目標(biāo)類別加上背景一共K+1個(gè)類別滋将,經(jīng)過(guò)SoftMax函數(shù),分類使用log損失症昏。定位利用的是邊界框回歸随闽,與R-CNN中的定位類似。當(dāng)類別為背景時(shí)肝谭,u為0掘宪,不必計(jì)算定位損失。