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