深度学习(三十六)——R-FCN, FPN, RetinaNet, CornerNet
R-FCN
R-FCN是何愷明/孫劍小組的Jifeng Dai于2016年提出的。
論文:
《R-FCN: Object Detection via Region-based Fully Convolutional Networks》
代碼:
https://github.com/PureDiors/pytorch_RFCN
faster R-CNN對(duì)卷積層做了共享(RPN和Fast R-CNN),但是經(jīng)過(guò)RoI pooling后,卻沒(méi)有共享,如果一副圖片有500個(gè)region proposal,那么就得分別進(jìn)行500次卷積,這樣就太浪費(fèi)時(shí)間了,于是作者猜想,能不能把RoI后面的幾層建立共享卷積,只對(duì)一個(gè)feature map進(jìn)行一次卷積?
上圖是R-FCN的網(wǎng)絡(luò)結(jié)構(gòu)圖。和上一節(jié)的Faster R-CNN相比,我們可以看出如下區(qū)別:
1.Faster R-CNN是特征提取之后,先做ROI pooling,然后再經(jīng)過(guò)若干層網(wǎng)絡(luò),最后分類+bbox。
2.R-FCN是特征提取之后,先經(jīng)過(guò)若干層網(wǎng)絡(luò),然后再做ROI pooling,最后分類+bbox。
FC layer在近來(lái)的CV實(shí)踐中,越來(lái)越不受歡迎,因此R-FCN在最后的分類+bbox階段,也做了一些針對(duì)性的改進(jìn)(如上圖所示):
1.直接將roi pooling生成的feature map連接到最后的分類和回歸層效果很差。這主要是因?yàn)?#xff1a;基CNN本身是對(duì)圖像分類設(shè)計(jì)的,具有圖像移動(dòng)不敏感性;而對(duì)象檢測(cè)領(lǐng)域卻是圖像移動(dòng)敏感的,所以二者之間產(chǎn)生了矛盾。
2.因此R-FCN專門設(shè)計(jì)了一個(gè)position-sensitive score maps。在feature map上通過(guò)卷積運(yùn)算生成一個(gè)等大但通道數(shù)為k2(C+1)k^{2}(C+1)k2(C+1)的feature map X。
3.對(duì)這個(gè)feature map進(jìn)行特殊的ROI pooling。
標(biāo)準(zhǔn)的ROI pooling:將ROI在空間上分成kxk部分,對(duì)每個(gè)部分進(jìn)行pooling操作。
R-FCN的ROI pooling:將ROI在通道上分成kxk部分,對(duì)每個(gè)部分進(jìn)行pooling操作,得到一個(gè)尺寸為kxkx(C+1)的tensor。上圖中各種顏色部分之間的對(duì)應(yīng)關(guān)系,展示了該ROI pooling操作的實(shí)現(xiàn)方式。
從中可以看出,feature map X不僅在空間維度上對(duì)位置敏感,在通道維度上也對(duì)位置敏感。因此也被稱作position-sensitive score maps。
4.對(duì)上一步結(jié)果的每個(gè)C+1部分進(jìn)行分類,這樣可以得到kxk個(gè)分類結(jié)果。對(duì)所有的分類結(jié)果進(jìn)行vote,得到最終結(jié)果。
從上面兩圖可以看出,vote的規(guī)則就是簡(jiǎn)單多數(shù),因此k需要是奇數(shù)才行。
5.bbox也是類似的操作,只需將上面的C+1換成4(bbox位置的坐標(biāo))即可。
參考:
http://blog.csdn.net/zijin0802034/article/details/53411041
R-FCN: Object Detection via Region-based Fully Convolutional Networks
https://blog.csdn.net/App_12062011/article/details/79737363
R-FCN
https://mp.weixin.qq.com/s/HPzQST8cq5lBhU3wnz7-cg
R-FCN每秒30幀實(shí)時(shí)檢測(cè)3000類物體,馬里蘭大學(xué)Larry Davis組最新目標(biāo)檢測(cè)工作
https://mp.weixin.qq.com/s/AddHG_I00uaDov0le4vdvA
R-FCN和FPN
FPN
FPN(Feature Pyramid Network)是Tsung-Yi Lin(Ross Girshick和何愷明小組成員)的作品(2016.12)。
論文:
《Feature Pyramid Networks for Object Detection》
-
圖(a)為手工設(shè)計(jì)特征描述子(Sift,HoG,Harr,Gabor)時(shí)代的常見(jiàn)模型,即對(duì)不同尺寸的圖片提取特征,以滿足不同尺度目標(biāo)的檢測(cè)要求,提高模型性能;
-
圖(b)則是深度卷積網(wǎng)的基本結(jié)構(gòu),通過(guò)不斷的卷積抽取特征同時(shí)逐漸增加感受野,最后進(jìn)行預(yù)測(cè);
-
圖(c)則是融合深度網(wǎng)絡(luò)的特征金字塔模型,眾所周知深度網(wǎng)在經(jīng)過(guò)每一次卷積后均會(huì)獲得不同尺度的feature map,其天然就具有金字塔結(jié)構(gòu)。但是由于網(wǎng)絡(luò)的不斷加深其圖像分別率將不斷下降,感受野將不斷擴(kuò)大,同時(shí)表征的特征也更叫抽象,其語(yǔ)義信息將更加豐富。SSD則采用圖c結(jié)構(gòu),即不同層預(yù)測(cè)不同物體,讓top層預(yù)測(cè)分辨率較高,尺寸較大的目標(biāo),bottom則預(yù)測(cè)尺寸較小的目標(biāo)。然而對(duì)于小目標(biāo)的檢測(cè)雖然其分辨率提高了但是其語(yǔ)義化程度不夠,因此其檢測(cè)效果依舊不好。
-
圖(d)則是FPN的網(wǎng)絡(luò)結(jié)構(gòu),該網(wǎng)絡(luò)結(jié)構(gòu)大體上分為三個(gè)部分,即buttom-up自底向上的特征抽取,自頂向下的upsampling,以及側(cè)邊融合通道(lateral coonnection)。通過(guò)這三個(gè)結(jié)構(gòu)網(wǎng)絡(luò)的每一層均會(huì)具有較強(qiáng)的語(yǔ)義信息,且能很好的滿足速度和內(nèi)存的要求。
上圖是加了FPN之后的ResNet,其中的虛線框表示的是通道融合的方法。U-Net采用了concat模式融合下采樣和上采樣通道,而這里則是沿用了ResNet的融合方法:Tensor Add。
上圖是Faster R-CNN+FPN。原始的Faster R-CNN的RoI pooling是從同一個(gè)feature map中獲得ROI,而這里是根據(jù)目標(biāo)尺度大小,從不同尺度的feature map中獲得ROI。
參考:
https://mp.weixin.qq.com/s/mY_QHvKmJ0IH_Rpp2ic1ig
目標(biāo)檢測(cè)FPN
https://mp.weixin.qq.com/s/TelGG-uVQyxwQjiDGE1pqA
特征金字塔網(wǎng)絡(luò)FPN
https://zhuanlan.zhihu.com/p/58603276
FPN-目標(biāo)檢測(cè)
RetinaNet
RetinaNet也是Tsung-Yi Lin的作品(2017.8)。
論文:
《Focal Loss for Dense Object Detection》
我們已經(jīng)指出“類別不平衡”是導(dǎo)致One-stage模型精度不高的原因。那么如何解決這個(gè)問(wèn)題呢?
答案是:Focal Loss。
上圖是RetinaNet的網(wǎng)絡(luò)結(jié)構(gòu)圖,可以看出它是一個(gè)One-stage模型。基本相當(dāng)于:ResNet+FPN+Focal loss。
參考:
https://blog.csdn.net/jningwei/article/details/80038594
論文閱讀: RetinaNet
https://zhuanlan.zhihu.com/p/68786098
再談RetinaNet
CornerNet
傳統(tǒng)的目標(biāo)檢測(cè)網(wǎng)絡(luò),無(wú)論是One-stage還是Two-stage,都有基于Anchor的。Anchor的作用主要在于:顯式枚舉出不同的scale和aspect ratio的基準(zhǔn)bbox。
但就本質(zhì)而言,**框?qū)τ谖矬w來(lái)說(shuō)不是一個(gè)最好的表示。**框的頂點(diǎn)可能甚至都不在物體上,離物體本身已經(jīng)很遠(yuǎn)了。
因此,自2018年以來(lái),逐漸有一些不基于anchor的目標(biāo)檢測(cè)方法出現(xiàn),形成了一股Anchor-Free的熱潮。下面將首先介紹一下,該類方法的開(kāi)山之作——CornerNet。
CornerNet并非第一個(gè)提出Anchor-Free思想的模型,但卻是第一個(gè)精度和性能達(dá)到與anchor base方法同等水平的Anchor-Free模型。
CornerNet是Princeton University的Hei Law的作品。(2018.8)
論文:
《CornerNet: Detecting Objects as Paired Keypoints》
CornerNet認(rèn)為Two-stage目標(biāo)檢測(cè)最明顯的缺點(diǎn)是在Region Proposal階段需要提取anchor boxes。這樣做導(dǎo)致兩個(gè)問(wèn)題:
-
提取的anchor boxes數(shù)量較多,比如DSSD使用40k,RetinaNet使用100k,anchor boxes眾多造成正負(fù)樣本不均衡。
-
Anchor boxes需要調(diào)整很多超參數(shù),比如anchor boxes數(shù)量、尺寸、比率,影響模型的訓(xùn)練和推斷速率。
上圖是CornerNet的網(wǎng)絡(luò)結(jié)構(gòu)。可以看出它主要由兩部分組成:
Hourglass Network
這是CornerNet的骨干部分。
Bottom-right corners & Top-left Corners Prediction Module
CornerNet堆疊兩個(gè)Hourglass Network生成Top-left和Bottom-right corners,每一個(gè)corners都包括corners Pooling,以及對(duì)應(yīng)的Heatmaps, Embeddings vector和offsets。
上圖是Heatmaps, Embeddings vector的示意圖。
-
heatmaps包含C channels(C是目標(biāo)的類別,沒(méi)有background channel),每個(gè)channel是二進(jìn)制掩膜,表示相應(yīng)類別的頂點(diǎn)位置。
-
embedding vector使相同目標(biāo)的兩個(gè)頂點(diǎn)(左上角和右下角)距離最短。或者也可以反過(guò)來(lái)說(shuō),兩個(gè)頂點(diǎn)的embedding vector越相近,則它們?cè)接锌赡芘鋵?duì)。
-
offsets用于調(diào)整生成更加緊密的邊界定位框。
corner pooling
corner pooling是CornerNet新提出的一種操作。其步驟如下圖所示:
依top-left corner pooling為例,對(duì)每個(gè)channel,分別提取特征圖的水平和垂直方向的最大值,然后求和。具體的計(jì)算如下圖所示:
論文認(rèn)為corner pooling之所以有效,是因?yàn)?#xff1a;
-
目標(biāo)定位框的中心難以確定,和邊界框的4條邊相關(guān),但是每個(gè)頂點(diǎn)只與邊界框的兩條邊相關(guān),所以corner更容易提取。
-
頂點(diǎn)更有效提供離散的邊界空間,使用O(w×h)O(w\times h)O(w×h)頂點(diǎn)可以表示O(w2×h2)O(w^2\times h^2)O(w2×h2)個(gè)anchor boxes。
參考
https://mp.weixin.qq.com/s/e74-zFcMZzn67KaFXb_fdQ
CornerNet目標(biāo)檢測(cè)開(kāi)啟預(yù)測(cè)“邊界框”到預(yù)測(cè)“點(diǎn)對(duì)”的新思路
https://zhuanlan.zhihu.com/p/41865617
CornerNet:目標(biāo)檢測(cè)算法新思路
https://mp.weixin.qq.com/s/e6B22xpue_xZwrXmIlZodw
ECCV-2018最佼佼者CornerNet的目標(biāo)檢測(cè)算法
https://mp.weixin.qq.com/s/9ldLaYKGkgq-MnJZw7CrDQ
CornerNet為什么有別于其他目標(biāo)檢測(cè)領(lǐng)域的主流算法?
https://mp.weixin.qq.com/s/ZhfnZ4IwOnTQlqeB6Ilr3A
CornerNet: Detecting Objects as Paired Keypoints解讀
https://zhuanlan.zhihu.com/p/63134919
普林斯頓大學(xué)提出:CornerNet-Lite,基于關(guān)鍵點(diǎn)的目標(biāo)檢測(cè)算法,已開(kāi)源!
https://mp.weixin.qq.com/s/8hN1RdYVJQWOqPpejjfXeQ
CornerNet
總結(jié)
以上是生活随笔為你收集整理的深度学习(三十六)——R-FCN, FPN, RetinaNet, CornerNet的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 深度学习(三十五)——Style Tra
- 下一篇: 深度学习(三十七)——CenterNet