1. 程式人生 > >基於深度學的目標檢測方法一之基本思想概念

基於深度學的目標檢測方法一之基本思想概念

 

目前在研究基於深度學的目標檢測方法,現在就目標檢測涉及的一些基本概念總結如下:

 

一、基於圖的影象分割(Graph  Based Image Segmentagion)
該方法是基於圖論中的最優樹的思想,利用貪心演算法對影象的區域進行聚類以達到對一副圖找出對應候選框的方法。合併的標準是考察兩個相連畫素的不相似性,然後以同一個區域內最不相似的值為標準 ,以不同區域內最相似的值為依據 ,若: 則把兩個區域合併。
具體步驟如下:
1.    以某個畫素相鄰的4個或者8個畫素點為基礎,然後計算其不相似度。

 

                                          


 
2.    將不相似度從小到大排列(v1, v2,v3………)
3.    選擇最小的不相似度v1, 和v1相連的點為(vi, vj),如果滿足:
Vi和vj不在同一個區域且 
則把兩個區域合併,合併後的區域閥值為: 
4.    如果不滿足則繼續尋找下一條邊。
就像上圖的A和B一樣,如果A,B之間的差異可以在容忍的範圍內(閥值),則可以合併作為一個新的區域,由於邊是從小到大排列的,因此每次合併進來的邊不相似性都是最大的,也就相當於可以直接作為閥值。
根據這種方式就相當於有一個點開始按最小樹生成的原理不斷擴大區域,最後就會形成一個一個的初始區域,這些區域就可以用來作為檢測是否是某個物體的初始框。

 

二、 選擇搜尋技術(selective  search)
該方式主要是對圖片生成的小區域(graph影象分割法產生的)根據相似度的大小進行合併。此時使用的相似度主要是顏色,紋理,尺寸,交疊情況綜合考慮得到的。具體演算法步驟為:
1.    根據影象分割得出一系列的細粒度區域R。
2.    根據各區域計算相鄰的相似度,並將其放入到集合S中。
3.    找出相似度較高的相鄰區域並將其合併為新的區域,同時將該區域新增到R中(主要是為了保證候選框的層次感,例如,茶杯和裡面的茶可以聚合作為一個物品)
4.    從S中移除所有和3相關的子集(聚合之後就不在需要了)。
5.    計算新區域的相似度並放入到S中。
6.    回到3繼續。
關於該方法主要有以下幾點要注意:
1.    雖然在最初的graph影象分割方法也需要合併,但是兩種方法合併時在計算相似度以及合併的方式均不相同(該方法主要針對相似區域),因此這是兩種不同的合併方式。
2.    之所以在R中新增區域主要是為了考慮其對應的層次性。

 

三、 SPP-Net(金字塔池化)
該網路採用不同的池化大小(金字塔)將不同尺寸的輸入轉化為相同尺寸的輸出,一般就是一層池化,採用動態尺寸,valid的填充方式保證池化後的輸出大小是一樣的。例如,一張圖片輸入的尺寸為 , 採用 步長為1的池化層,邊界補充為valid的方式,那麼最終生成的輸出大小為 ,即生成了(4,4)大小的區域。所以說該網路主要是對任意的輸入大小都將其變為指定大小的輸出。實際使用中對於一個 的變化,採用的尺寸大小和步長為: 下取整,  上取整。

 

四、 ROI Pooling
一種特殊的池化方式,也可以說是一層特殊的SPP Net,目的是根據任意大小的輸入特徵經過池化將其轉化為固定的輸出,其中間過程存在兩個量化,具體如下:一個8X8的輸入,轉化為2X2的輸出:
  
 
  

第一幅表示輸入的圖片大小,第二幅表示原圖的候選框在特徵圖上對應的位置(此時也是經過四捨五入後在特徵圖上對應的框因此存在量化帶來的誤差),第三幅圖片表示經過計算得到的需要每個池化塊的大小(因為不能整除所以有大有小,並且大小是經過四捨五入的,存在輕微的畫素差)。最後是輸出的特徵圖。
五、 ROI Align
其去掉了量化的步驟,採用均分和插值就產生了ROI Align的方式:

由於ROI Pooling把浮點型的候選框變成整數點的候選框,產生了一些誤差,為了避免這一誤差,ROI Align提取候選框時使用原來的大小,並且對於劃分區域也是取平均分塊後的中心點畫素值為標準,採用插值的方式得到對應的值,也不再經過捨去,減少了捨去帶來的誤差。

 

六、 區域計算
原圖選出的候選框需要對映到生成的特徵圖中,然後對區域內的物體進行識別,對應的對映關係如下:假設原圖特徵框的座標為 ,總共經歷的stride乘積為S,特徵圖中的座標為 ,其對應關係為: ,具體對應的各區域如下:

                                           

                                              
 

七、 Bounding-box  Regression(邊框迴歸)
對於選擇出來的候選框需要進行微調,以保證其逼近真實的物體框,例如:

                                             

 

其中紅框是預測出來的大小,藍框是真實的大小,所以從紅框變化到籃筐需要對其進行對應的線性變換(中心點平移和大小縮放)。假如:紅框的座標為 ,藍框的座標為 ,其中對應的變換為 。前兩個表示需要平移的變化,後兩個表示需要縮放的變化。其具體對應的變化方式如下:
                                     
                       
由上述變化過程可以看出,我們主要的目標是找到對應的 ,為了完成這個我們假設存在一組引數 滿足 其中(*包括 )。主要是由於當兩個框相差不大時,其對應的變化都可以看做是線性的,所以可以用一個線性假設來表示。根據上述假設我們的目標就是設定一個迴歸 ,其損失函式為:表示根據真實邊框計算的真正需要平移和縮放的量, 表示輸入的特徵。優化的目標就是: 
對於該方法原理上主要有幾點需要注意一下:
1.    迴歸時的座標除以寬度和高度主要是為了保證去除圖片大小的影響,因為卷積變      化後圖片的大小會發生變化,對於同一幅圖去掉寬窄的影響才更容易找到對應的函式關係。
2.    涉及指數縮放是為了保證縮放的值大於0
3.    對於線性變換主要是: ,所以:


          
時,整個極限是趨近於線性的,所以可以使用線性迴歸的方式來做。

 

八、 Region  proposal  NetWork(RPN產生邊框的網路)
考慮到使用傳統方式產生候選框會存在效能上的耗損,所以就有研究者提出將候選框放到神經網路中去實現,就產生了RPN網路。RPN採用滑動框的方式,採用三種大小,三種比例(1:1,1:2,2:1)共9種尺度的候選框對每一個點進行特徵提取,提取的特徵轉換成兩部分,一部分用來判斷當前的框是前景還是背景(根據IOU的大小,大於0.7是前景,小於0.3是背景)即2k個值,一部分用來判斷當前框的位置資訊,即4k個值。

                                             

 
根據這些資訊得出對應的損失函式,對邊框和判斷的結果進行初步的更新。再根據得出的結果挑選出感興趣的框(ROI)進行後面的識別和bounding box regression的操作。
在實現過程中我們採用3X3的卷積相當於視窗的滑動,採用1X1的卷積進行通道的合併即生成2k個大小。計算誤差的時候使用的是 來進行而不是使用四個角的值,因為這樣可以避免框的大小帶來的差距,因為選出的候選框肯定比真實的框要多的多,所以無法一一對應,採用這種變化相當於把問題轉化成相對誤差來計算。大致流程如下: