目标检测必看——RCNN是怎样融合了分类与回归,CNN与SVM
人和動(dòng)物的區(qū)別之一是人能使用工具,而在人開(kāi)始使用磨制石器時(shí)人類進(jìn)入新石器時(shí)代。在目標(biāo)檢測(cè)領(lǐng)域,也有一個(gè)劃時(shí)代的算法,在它之后目標(biāo)檢測(cè)開(kāi)始進(jìn)入深度學(xué)習(xí)的時(shí)代——它就是今天的主角:R-CNN。在RCNN之后,出現(xiàn)了更多優(yōu)秀的CNN算法:Fast-RCNN,Faster-RCNN,YOLO等。
作為時(shí)代的分水嶺,RCNN利用了CNN提取特征的強(qiáng)大之處,同時(shí)利用了傳統(tǒng)方法和機(jī)器學(xué)習(xí)的方法,最終達(dá)到了不錯(cuò)的效果。RCNN大致分為以下幾個(gè)步驟:
1.候選區(qū)域生成;
2.CNN特征提取;
3.SVM分類;
4.回歸器特征box位置;
候選區(qū)域生成
目標(biāo)檢測(cè)的核心就是分類classification+定位location,定位就是用矩形框選定目標(biāo)物體。候選區(qū)域生成其實(shí)就是一個(gè)粗定位:得到一些大概率是目標(biāo)的區(qū)域。具體的方法有滑窗,分割等。R-CNN使用的是Selective Search。在特征上,SS利用了紋理,顏色等信息;在多樣性上,SS嘗試了多種起始點(diǎn),多種相似度策略,多種色彩空間;在流程上,SS使用Hierarchical Grouping Algorithm,這是一種自下而上的思想,不斷地合并細(xì)小的區(qū)域,得到整幅圖像時(shí)停止。最終SS會(huì)得到約2000張候選區(qū)域。
與sliding windows相比,得到的regions數(shù)量少,且具有一定的語(yǔ)義。
CNN特征提取
以往的特征提取方法都是手動(dòng)設(shè)計(jì),如方向梯度直方圖(Histogram of Oriented Gradient, HOG),SIFT等,而CNN強(qiáng)大之處就在于可以提取到深層次的特征??梢灾苯邮褂肐LSVRC訓(xùn)練好的模型,然后再在PASCAL VOC上進(jìn)行遷移學(xué)習(xí)。這一階段是依靠監(jiān)督學(xué)習(xí)分類來(lái)學(xué)習(xí)特征。Alexnet精度是58.5%,VGG16精度是66%。VGG這個(gè)模型的特點(diǎn)是選擇比較小的卷積核、選擇較小的跨步,這個(gè)網(wǎng)絡(luò)的精度高,不過(guò)計(jì)算量是Alexnet的7倍。RCNN使用的是AlexNet的finetuning版本。Alexnet是CNN五大經(jīng)典模型(Lenet1986,Alexnet2012,Googlenet2014,VGG2014,DeepResidual learning2015)之一,也是最經(jīng)典的算法,贏得了當(dāng)年的ImageNet比賽冠軍,使CNN成為圖像分類中的核心算法模型。相關(guān)論文出自NIPS2012,作者是大神Alex Krizhevsky,屬于多倫多大學(xué)Hinton組。《ImageNet Classification with Deep Convolutional Neural Networks》
在遷移學(xué)習(xí)中有三點(diǎn)需要注意:1.預(yù)訓(xùn)練分類模型是1000類,VOC中是20類(加上背景是21類),所以需要調(diào)整全連接的大小;2.輸入是第一步中得到的候選區(qū)域,而因?yàn)槿B接的存在,需要將輸入歸一化到尺寸相同;3.VOC的類別標(biāo)簽是針對(duì)定位框的,只有當(dāng)候選區(qū)域的框位置與標(biāo)簽的定位重合到一定程度時(shí)才認(rèn)為是正樣本。
關(guān)于第二點(diǎn)的歸一化方法有幾種可選的方法,分別是直接各向異性縮放warp和crop。第二種又分先擴(kuò)充后裁剪和先裁剪后填充。經(jīng)過(guò)最后的試驗(yàn),作者發(fā)現(xiàn)采用各向異性縮放、padding=16的精度最高。
關(guān)于第三點(diǎn),如何量化重合度需要引入IoU的概念,其含義是兩個(gè)區(qū)域的交集和并集之比。大于0.5則認(rèn)為該region的label與GT一致。
SVM分類器
之前使用的CNN表面是在分類,但真正目的其實(shí)只是提取特征,提取特征之后,每個(gè)候選框可以得到一個(gè)4096維的特征向量,使用得到的CNN特征再輸入線性SVM中訓(xùn)練分類器。為什么要“畫(huà)蛇添足”般地使用SVM呢?因?yàn)镃NN容易過(guò)擬合,所以期望樣本數(shù)目多一些,所以在判斷正樣本的時(shí)候條件比較松,IoU>0.5就認(rèn)為是正樣本,而SVM本身是結(jié)構(gòu)風(fēng)險(xiǎn)最小,以SVM為分類器時(shí)改變了正負(fù)樣本的判定條件:候選框完全包含GoundTruth的定位框才是正樣本,當(dāng)IoU<0.3時(shí)是負(fù)樣本。
SVM支持向量機(jī)其實(shí)是可以支持多分類的,即SVMs分類器。但是論文不是對(duì)21個(gè)類(別漏了background類哦)使用一個(gè)SVM,而是使用了One-Versu-All的方法,對(duì)每個(gè)類別都使用個(gè)SVM(這里只需要20個(gè)SVM,想想為什么?)。方法很簡(jiǎn)單,對(duì)于每個(gè)類別來(lái)說(shuō),一個(gè)Region如果不是該類別,那就是背景。由于負(fù)樣本很多,使用hard negative mining方法。每個(gè)SVM判斷候選框是否屬于這一類。對(duì)于2000個(gè)候選框,屬于第i類的得分進(jìn)行降序排列,可以使用MNS去除重疊的候選框。
(非極大值抑制(NMS)先計(jì)算出每一個(gè)bounding box的面積,然后根據(jù)score進(jìn)行排序,把score最大的bounding box作為選定的框,計(jì)算其余bounding box與當(dāng)前最大score與box的IoU,去除IoU大于設(shè)定的閾值的bounding box。然后重復(fù)上面的過(guò)程,直至候選bounding box為空,然后再將score小于一定閾值的選定框刪除得到這一類的結(jié)果(然后繼續(xù)進(jìn)行下一個(gè)分類)。
回歸器
即便得到了概率相對(duì)較大的候選框,它的定位仍然可能不準(zhǔn)確,這里可以使用回歸器進(jìn)行位置的微調(diào)。輸入仍然是4096維的特征向量,輸出是x,y方向上的縮放和平移,這意味著可以改變候選框的大小和位置。當(dāng)IoU>0.6時(shí)認(rèn)為是正樣本。
黃色框口P表示建議框Region Proposal,綠色窗口G表示實(shí)際框Ground Truth,紅色窗口G^表示Region Proposal進(jìn)行回歸后的預(yù)測(cè)窗口,現(xiàn)在的目標(biāo)是找到P到G^的線性變換【當(dāng)Region Proposal與Ground Truth的IoU>0.6時(shí)可以認(rèn)為是線性變換】,使得G^與G越相近,這就相當(dāng)于一個(gè)簡(jiǎn)單的可以用最小二乘法解決的線性回歸問(wèn)題。
?
Reference:
1.下載鏈接http://islab.ulsan.ac.kr/files/announcement/513/rcnn_pami.pdf
2.http://xueshu.baidu.com/s?wd=paperuri:%286f32e0834ddb27b36d7c5cda472a768d%29&filter=sc_long_sign&tn=SE_xueshusource_2kduw22v&sc_vurl=http://arxiv.org/abs/1311.2524&ie=utf-8&sc_us=2810736414368325775
3.https://blog.csdn.net/shenxiaolu1984/article/details/51066975
4.實(shí)訓(xùn)周報(bào)https://blog.csdn.net/u012767526/article/details/51849102
5.問(wèn)題https://blog.csdn.net/wopawn/article/details/52133338
6.IOU http://shartoo.github.io/RCNN-series/
?
?
?
總結(jié)
以上是生活随笔為你收集整理的目标检测必看——RCNN是怎样融合了分类与回归,CNN与SVM的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Hibernate常见问题
- 下一篇: 动手学CV-目标检测入门教程4:模型结构