原
置頂2023年08月31日 22:38:05
南有喬木ntu
閱讀數 73169
目標檢測演算法 更多
分類專欄:
目標檢測
最近一直看檢測有關的*****, 從rcnn, fast rcnn, faster rcnn, yolo, r-fcn, ssd,到今年cvpr最新的yolo9000。這些*****中損失函式都包含了邊框回歸,除了rcnn詳細介紹了,其他的*****都是一筆帶過,或者直接引用rcnn就把損失函式寫出來了。前三條網上解釋比較多,後面的兩條我看了很多*****,才得出這些結論。
這裡引用王斌師兄的理解,如下圖所示:
對於上圖,綠色的框表示ground truth, 紅色的框為selective search提取的region proposal。那麼即便紅色的框被分類器識別為飛機,但是由於紅色的框定位不准(iou<0.5), 那麼這張圖相當於沒有正確的檢測出飛機。 如果我們能對紅色的框進行微調, 使得經過微調後的視窗跟ground truth 更接近, 這樣豈不是定位會更準確。 確實,bounding-box regression 就是用來微調這個視窗的。
繼續借用師兄的理解:對於視窗一般使用四維向量(x
邊框回歸的目的既是:給定(p
x,py
,pw,
ph)(px,py,pw,ph)
那麼經過何種變換才能從圖 2 中的視窗 p 變為視窗g^
g^呢? 比較簡單的思路就是: 平移+尺度放縮
先做平移(δ
x,δy
)(δx,δy)
觀察(1)-(4)我們發現, 邊框回歸學習就是dx
(p),
dy(p
),dw
(p),
dh(p
)dx(p),dy(p),dw(p),dh(p)
這四個變換。下一步就是設計演算法那得到這四個對映。
線性回歸就是給定輸入的特徵向量 x, 學習一組引數 w, 使得經過線性回歸後的值跟真實值 y(ground truth)非常接近. 即y≈
wxy≈wx
。 那麼 bounding-box 中我們的輸入以及輸出分別是什麼呢?re
gion
prop
osal
→p=(
px,p
y,pw
,ph)
regionproposal→p=(px,py,pw,ph)
)需要進行的平移變換和尺度縮放 dx
(p),
dy(p
),dw
(p),
dh(p
)dx(p),dy(p),dw(p),dh(p)
那麼目標函式可以表示為 d∗
(p)=
wt∗φ
5(p)
d∗(p)=w∗tφ5(p)
差距最小, 得到損失函式為:lo
ss=∑
in(t
i∗−w
^t∗ϕ
5(pi
))2loss=∑in(t∗i−w^∗tϕ5(pi))2
函式優化目標為:w∗
=arg
minw
∗∑in
(ti∗
−w^t
∗ϕ5(
pi))
2+λ|
|w^∗
||2w∗=argminw∗∑in(t∗i−w^∗tϕ5(pi))2+λ||w^∗||2
利用梯度下降法或者最小二乘法就可以得到 w∗
w∗。這邊我重點解釋一下為什麼設計的tx
,tytx,ty
會有log形式!!!
首先cnn具有尺度不變性, 以圖3為例:
上圖的兩個人具有不同的尺度,因為他都是人,我們得到的特徵相同。假設我們得到的特徵為ϕ1
,ϕ2ϕ1,ϕ2
。也就是說同乙個x對應多個y,這明顯不滿足函式的定義。邊框回歸學習的是回歸函式,然而你的目標卻不滿足函式定義,當然學習不到什麼。
我們想要得到乙個放縮的尺度,也就是說這裡限制尺度必須大於0。我們學習的tw
,thtw,th
怎麼保證滿足大於0呢?直觀的想法就是exp函式,如公式(3), (4)所示,那麼反過來推導就是log函式的**了。
當輸入的 proposal 與 ground truth 相差較小時(rcnn 設定的是 iou>0.6), 可以認為這種變換是一種線性變換, 那麼我們就可以用線性回歸來建模對視窗進行微調, 否則會導致訓練的回歸模型不 work(當 proposal跟 gt 離得較遠,就是複雜的非線性問題了,此時用線性回歸建模顯然不合理)。這裡我來解釋:
log函式明顯不滿足線性函式,但是為什麼當proposal 和ground truth相差較小的時候,就可以認為是一種線性變換呢?大家還記得這個公式不?參看高數1。li
mx=0
log(
1+x)
=xlimx=0log(1+x)=x
現在回過來看公式(8):tw
=log(g
w/pw
)=lo
g(gw
+pw−
pwpw
邏輯回歸 判定邊界
了解判定邊界的概念,可以幫助我們理解邏輯回歸的假設函式到底在計算什麼。從左圖可以看到 對於樣本類別的判斷完全取決於sigmoid函式的輸出 該輸出又與函式自變數z具有直接關係,也就是說 又因為那麼上式其實就是 也就是說,對於給定的樣本x,對於它的類別判斷最終可由下式確定 決策邊界,也稱為決策面,是用...
掩碼到邊界框的轉換
本篇是對airbus ship detection challenge的kernels中 from masks to bounding boxes 的乙個總結。在將掩碼轉換乘影象的格式之後,匯入skimage.measure,對掩碼區域進行標籤 1,2,3.原理是對連通域進行分類標籤 然後對標籤的區...
YOLO理解及邊界框計算
1.設定類別數,設定劃分為多少個網格,每個網格 出來幾個邊框。原文是20個類別,並將劃分為7 7網格,每個網格 出2個邊框。2.將縮放到448 448,然後輸入到cnn網路 卷積 池化 兩個全連線 然後輸出的就是7 7 30的tensor 20個物件分類的概率 2個bounding box的位置 2...