深度學習中目標檢測
該部分內容出自書《21個專案玩轉深度學習:基於TensorFlow的實踐詳解》,有需要的同志可以關注我的公眾號,加入下發的群,在群公告中有附網盤,可以自取(僅供學習使用)。如果失效可以聯絡或者在公眾號留言!!!**
深度學習中目標檢測的原理
R-CNN 的全稱是 Region-CNN,它可以說是第一個成功地將深度學習應用到目標檢測上的演算法 。 後面將要學習的 Fast R-CNN、 Faster R-CNN 全部都是建立在 R-CNN 基礎上的 。
傳統的目標檢測方法大多以影象識別為基礎。 一般可以在圖片上使用窮
舉法選出所高物體可能出現的區域框,對這些區域框提取特徵並使用圄像識
別萬法分類, 得到所高分類成功的區域後 , 通過非極大值抑制( Non-maximum suppression )輸出結果 。
R**-CNN遵循傳統目標檢測的思路 , 同樣採用提取框 、 對每個框提取特徵 、 影象分類、 非極大值抑制四個步驟進行目標檢測。** 只不過在提取特徵這一步,將傳統的特徵(如 SIFT 、 HOG 特徵等)換成了深度卷積網路提取的特徵 。 R-CNN 的整體框架如圖 5-2 所示 。
對比:
對於原始影象 , 首先使用 SelectiveSearch 搜尋可能存在物體的區域 。
Selective Search 可以從影象中啟發式地搜尋出可能包含物體的區域。 相比窮舉而言, Selective Search 可以減少一部分計算量 。 下一步,將取出的可能含
高物體的區域送入 CNN 中提取特徵 。 CNN 通常是接受一個固定大小的影象,而取出的區域大小卻各高不同 。對此, R-CNN的做法是將區域縮放到統一大小 , 再使用 CNN提取特徵 。 提取出特徵後使用 SVM 進行分類,最後通過非極大值抑制輸出結果
R-CNN的訓練、可以分成下面四步:
1)在資料集上訓練 CNN 。 R-CNN 論文中使用的 CNN 網路是 AlexNet,資料集為 ImageNet 。
2)在目標檢測的資料集上,對訓練好的 CNN司做微調 。
3)用 Selective Search 搜尋候選區域,統一使用微調後的 CNN對這些區域提取特徵,並將提取到的特徵儲存起來。
4)使用儲存起來的特徵 ,訓練 SVM 分類器 。
儘管 R-CNN 的識別框架與傳統方法區別不是很大,但是得益於 CNN 優異的特徵提取能力, R-CNN 的效果還是比傳統方法好很多。 如在 VOC 2007資料集上,傳統方法最高的平均精確度 mAP ( mean Average Precision )為40%左右,而 R-CNN 的 mAP 達到了 58.5%!
R-CNN 的缺點是計算量太大 。 在一張圖片中,通過 Selective Search 得
到的有效區域往往在 1000 個以上,這意昧著要重複計算 1000 多次神經網路 ,非常耗時 。另外,在訓練、階段,還需要把所有特徵儲存起來 ,再通過 SVM進行訓練,這也是非常耗時且麻煩的。Fast R-CNN 和 FasterR-CNN 在一定程度上改進了 R-CNN 計算量大的缺點,不僅速度變快不少,識別準確率也得到了提高 。
具體的實現書中有詳細說明
下面放上一些檢測的程式碼
Faster –RCNN的檢測效果
歡迎關注和訂閱AI演算法與影象處理公眾號(AI_study)
不定期更新和分享高質量的文章和學習資料,讓我一起進步吧,fighting