滑動窗口的卷積實現的理解


我們學習神經網絡基本都是從分類器開始的。

二分類任務和多分類任務

我們在進行分類任務,也就是圖像識別的任務時,一張圖片中一般有且只有一個對象,並且這個對象占據了這個圖片的絕大部分空間。

對於二分類任務,我們只是輸出一個數:0或1,0表示該圖片中包含該對象,1表示該圖片中不包含該對象。

對於多分類任務時,我們首先通過一個one-hot編碼,將每個分類唯一地用一個多維向量來表示。在進行預測時,則是在神經網絡地最后通過一個softmax層來輸出一個向量,這個向量中包含了圖片屬於每個分類的概率值(此時這個向量中有多個非零值),並通過一定手段將向量中概率值最大的元素的位置設置為1表示該圖片中包含的是該分類,將其它位置設置為0表示不包含該分類。這樣就實現了一張圖片的多分類問題。

 

分類定位任務

但是在實際的問題中,如無人駕駛車輛的相機中拍到的圖片往往包含多個對象,同時圖像中的對象在圖像中只是占據很小的區域。這個時候我們不僅需要對該圖像的對象進行分類,還要確定出圖像中對象的位置,也就是所謂的定位。

首先從一張圖片中的單個對象的定位講起。

這是一張車的圖片,在神經網絡中,我們自然能夠通過學習來實現這輛車的分類任務。那么如何來實現圖像中的定位任務呢,我們假設我們通過某種算法得到了一個恰好包含車的方框,也就是上圖中的紅線所表示的方框,那么我們就可以說這個方框就是代表了這輛車在圖中的位置。如果我們能夠使用參數來精確表示這個方框在圖中的位置,那我們就可以說表達出了車在圖片中的位置,也就是實現了定位。

 那么使用哪些參數來表示這個方框呢?這個方框通過四個參數來表示,(x, y, w, h)。其中(x, y)表示方框,也就是車的中心位置;w, h分別表示方框的寬和高。注意,(x, y, w, h)都是針對圖像坐標而言的,並且是經過歸一化之后的參數。n+

對於多分類任務(二分類任務相似),我們在輸出softmax層輸出的表示分類預測結果的向量后面再添加四個維度值(x, y, w, h),就實現了分類任務和該對象在圖片中的定位任務。

考慮到輸入的圖片中可能任何分類對象都沒有,只包含背景信息。所以需要在輸出的向量前面再添加一個標志位pc,若圖像中檢測到對象,則將pc置為1,否則將pc置為0。

綜上所述,假設一個多分類任務的類別數木為n,那么分類定位任務的輸出向量共有(n+5)維。第一維是是否檢測到對象的標志位pc,2~5維是表示檢測到對象時,表示對象的位置的參數,6~(n+5)維是一個one-hot編碼來表示分類對象。

 

滑動窗口的分類定位任務

首先有兩個問題:

1.我們前面說過,我們用於分類任務的輸入圖像一般都是檢測對象基本占據整個圖像的圖片。

2.前面說的是,我們假設我們通過某種算法得到了恰好包含車的紅色方框。

如果我們將上述圖片中的紅色方框部分截取出來,我們就得到了下面的圖片

在這里我們主要研究的是算法,所以在這里我們不考慮圖片的失真問題。

1.那么我們就得到了車輛占據整個圖片的圖片,可以用作圖片的分類任務。

2.我們假設我們通過某種算法得到了恰好包含車的紅色方框,我們將上述圖片的邊界視為方框的話,我們就是得到了紅色方框。只不過我們這里使用的是截取的方式。

但是在計算機中,圖片是通過矩陣來表示的,而通過矩陣操作我們是可以實現對整個矩陣中任何部分的提取,也就是說我們能得到圖片的任何部分。那么我們就可以理解為我們可以使用任何方框在圖片中框出一部分(方框就是我們得到的圖片的邊框)。如果我們將我們框選出的圖片送給分類算法執行分類任務,我們就實現了該部分的分類,並同時記錄該方框相對於整個圖片的位置(x, y, w, h)我們就得到了這個分類對象的位置,這樣就實現了分類定位的任務。

那么基於窗口滑動的目標檢測算法就呼之欲出了

 

 

 

假設這是一張測試圖片,首先選定一個特定大小的窗口,將這個紅色小方塊(就是該方塊內表示該區域的矩陣值)輸入卷積神經網絡(也就是分類任務的算法),卷積網絡開始進行預測,即判斷紅色方框內有沒有汽車。

 

接下來會繼續處理第二個圖像,即紅色方框稍向右滑動之后的區域,並輸入給卷積網絡,因此輸入給卷積網絡的只有紅色方框內的區域,再次運行卷積網絡,然后處理第三個圖像,依次重復操作,直到這個窗口滑過圖像的每一個角落。

重復上述操作,不過這次我們選擇一個更大的窗口,截取更大的區域,並輸入給卷積神經網絡處理。

 

如果你這樣做,不論汽車在圖片的什么位置,總有一個窗口可以檢測到它。

這種算法叫作滑動窗口目標檢測,因為我們以某個步幅滑動這些方框窗口遍歷整張圖片,對這些方形區域進行分類,判斷里面有沒有汽車。

 

卷積實現的滑動窗口的目標檢測

 顯然,上述做法就相當於我們把每個紅色框內的矩陣輸入給卷積神經網洛(分類任務的算法),那么此時很多計算都是重復的。如果我們將整個圖片直接作為卷積神經網絡的輸入,那么我們就得到了滑動窗口的卷積實現。得到的是一個矩陣,矩陣的行等於使用紅色方框原來的設置滑動過原始圖片的行數,同時矩陣的列數等於使用紅色方框原來的設置滑動過原始圖片的列數。矩陣的第三維與原來執行分類任務得到的維數相同。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM