目標檢測YOLO的學習筆記

2021-10-02 00:10:45 字數 2002 閱讀 2912

近幾年來,目標檢測演算法取得了很大的突破。比較流行的演算法可以分為兩類,一類是基於region proposal的r-cnn系演算法(r-cnn,fast r-cnn, faster r-cnn),它們是two-stage的,需要先使用啟發式方法(selective search)或者cnn網路(rpn)產生region proposal,然後再在region proposal上做分類與回歸。

而另一類是yolo,ssd這類one-stage演算法,其僅僅使用乙個cnn網路直接**不同目標的類別與位置。第一類方法是準確度高一些,但是速度慢,但是第二類演算法是速度快,但是準確性要低一些。這可以在圖2中看到。

yolo演算法的核心是採用滑動視窗進行目標檢測,它將檢測問題轉化為了影象分類問題。其基本原理就是採用不同大小和比例(寬高比)的視窗在整張上以一定的步長進行滑動,然後對這些視窗對應的區域做影象分類,這樣就可以實現對整張的檢測了。

全連線層是在整個卷積神經網路中起到「分類器」的作用。如果說卷積層、池化層和啟用函式層等操作是將原始資料對映到隱層特徵空間的話,全連線層則起到將學到的「分布式特徵表示」對映到樣本標記空間的作用。在實際使用中,全連線層可由卷積操作實現:對前層是全連線的全連線層可以轉化為卷積核為1x1的卷積;而前層是卷積層的全連線層可以轉化為卷積核為hxw的全域性卷積,h和w分別為前層卷積結果的高和寬。

全連線的核心操作就是矩陣向量乘積 y=wx

本質就是由乙個特徵空間線性變換到另乙個特徵空間。

比如你的輸入的feature map是2x2,那麼就需要把這個feature map 拉成4x1的列向量,如果你的feature map 的channels是3,也就是你的輸入是3x2x2,也就是相當於有了12個畫素點,你就需要把feature map 拉成12x1的列向量,這時候,再乘乙個權重,這個權重要把12個畫素點都包含進去,所以這個權重的矩陣形式應該是1x12,所以經過乙個全連線層後的輸出就是1x12x12x1=1x1,這時候需要看你的需要多少個1x1的神經元了,如果是3個的話,那麼輸出就是3x(1x12x12x1)=3x(1x1).這個3在權重矩陣中代表3行。

卷積層就相當於乙個卷積核,對於傳送過來的feature map進行區域性視窗滑動,無論你輸入的feature map多大(不能小於卷積核的大小),都不會對卷積造成影響。

輸入影象是32323,3是它的深度(即r、g、b),卷積層是乙個553的filter(感受野),這裡注意:感受野的深度必須和輸入影象的深度相同。通過乙個filter與輸入影象的卷積可以得到乙個28281的特徵圖,上圖是用了兩個filter得到了兩個特徵圖

區別

全連線層的權重矩陣是固定的,即每一次feature map的輸入過來必須都得是一定的大小(即與權重矩陣正好可以相乘的大小),所以網路最開始的輸入影象尺寸必須固定,才能保證傳送到全連線層的feature map的大小跟全連線層的權重矩陣匹配。

卷積層就不需要固定大小了,因為它只是對區域性區域進行視窗滑動,所以用卷積層取代全連線層成為了可能。

overfeat演算法

2023年yann lecun在紐約大學的團隊提出了著名的overfeat演算法,其利用滑動視窗和規則塊生成候選框,再利用多尺度滑動視窗增加檢測結果,解決影象目標形狀複雜、尺寸不一問題,最後利用卷積神經網路和回歸模型分類、定位目標。該演算法首次將分類、定位以及檢測三個計算機視覺任務放在一起解決,獲得同年ilsvrc 2013任務3(分類+定位)的冠軍,但其很快就被同期的r-cnn演算法取代。

yolo的cnn網路將輸入的分割成 s x s 網格,然後每個單元格負責去檢測那些中心點落在該格仔內的目標,邊界框的大小與位置可以用4個值來表徵: (x,y,w,h) ,其中 (x,y) 是邊界框的中心座標,而 w 和 h 是邊界框的寬與高。還有一點要注意,中心座標的**值 (x,y)是相對於每個單元格左上角座標點的偏移值,並且單位是相對於單元格大小的。而邊界框的 w 和 h **值是相對於整個的寬與高的比例,這樣理論上4個元素的大小應該在 [0,1] 範圍。這樣,每個邊界框的**值實際上包含5個元素: (x,y,w,h,c),其中前4個表徵邊界框的大小與位置,而最後乙個值是置信度。

目標檢測 YOLO演算法

r cnn系列目標檢測方法 r cnn,fast r cnn,faster r cnn 看做目標檢測,都是需要 看兩眼 的。即,第一眼做 region proposals 獲得所有候選目標框,第二眼對所有候選框做 box classifier候選框分類 才能完成目標檢測 事實上 第一眼 是挺費時間的...

目標檢測YOLO實現

注 本文參考 git clone cd darknet make 編譯沒有問題的話輸出資訊如下 mkdir p obj gcc i usr local cuda include wall wfatal errors ofast.gcc i usr local cuda include wall wf...

深度學習目標檢測 YOLO專題

資源搜尋 yolo v1,v2,v3的記錄 學習筆記 yolo系列 v1 v2與v3 you only look once yolov1,看過好多篇,這篇感覺講的最通俗易懂 yolo官方主頁 本人總結 在開始進入具體演算法實現之前,我們還是先簡單隨便聊一聊。目標檢測應該說是計算機視覺領域中比較好玩而...