2020 細(xì)說(shuō)YOLO

計(jì)算機(jī)視覺(jué)

object_detector_01.jpeg

單目標(biāo)

我們要做目標(biāo)檢測(cè),先看一下計(jì)算機(jī)視覺(jué)可以做那些圖像那些識(shí)別問(wèn)題。目標(biāo)檢測(cè)從 2012 年目標(biāo)檢測(cè)人提升了一倍,圖像目標(biāo)是什么,還需要對(duì)其進(jìn)行定位,單目標(biāo)任務(wù),同時(shí)輸出 1000

  • softmax 損失
  • L2 損失
    ||\hat{x} - x^{8}||^2 +

可以選擇一個(gè),然后分出兩個(gè) head 分別做分類(lèi)任務(wù)和回歸任務(wù),可以定位
<img src="images/object_detector_02.png">

多目標(biāo)(區(qū)域)

滑動(dòng)窗口(slide window)

這種方式進(jìn)行目標(biāo)檢測(cè)的缺點(diǎn)很明顯,運(yùn)算量大,所以耗時(shí)在當(dāng)前算力下無(wú)法投入到生產(chǎn),對(duì)于每張圖片都等同生成一個(gè)小型的數(shù)據(jù)集.

adaboost 就足夠快可以通過(guò)滑動(dòng)窗口來(lái)做人臉檢測(cè)

目標(biāo)檢測(cè)任務(wù)

  • 輸入圖像
  • 輸出一個(gè)目標(biāo)所屬類(lèi)別的概率以及表示出該目標(biāo)在圖像位置
    • xywh
    • cwh
    • xyxy

目標(biāo)檢測(cè)思路

  • 生成局部區(qū)域圖像
  • 對(duì)區(qū)域圖像進(jìn)行分類(lèi)任務(wù)


    yolov2_001.jpeg
問(wèn)題收集
  • 如何生成區(qū)域圖像
  • 如何表示一個(gè)預(yù)測(cè)結(jié)果
  • 如何表示多個(gè)預(yù)測(cè)結(jié)果

我們?nèi)绾螌⑦@生成局部區(qū)域圖像和對(duì)區(qū)域圖像進(jìn)行分類(lèi)兩個(gè)任務(wù)結(jié)合在一起,如何更精準(zhǔn)地生成區(qū)域圖像。其實(shí)圖像檢測(cè)一路走來(lái)大家對(duì)生成區(qū)域圖像花費(fèi)很多心思。

如何準(zhǔn)備數(shù)據(jù)集

  • 類(lèi)別信息
  • 位置信息

網(wǎng)絡(luò)結(jié)構(gòu)

  • 輸入圖像
  • 輸出向量表示預(yù)測(cè)結(jié)果
    [c,x,y,w,h]

    <img src="images/yolov1_001.jpeg">

定義目標(biāo)函數(shù)

訓(xùn)練

訓(xùn)練網(wǎng)絡(luò),多組輸出與位置強(qiáng)相關(guān), 按空間位置來(lái)映射

N = W^{\prime} \times H^{\prime}

用每一個(gè)對(duì)應(yīng)框進(jìn)行預(yù)測(cè),只需要

  • 一個(gè)目標(biāo)出現(xiàn)在多個(gè)框(中心點(diǎn))
  • 多個(gè)目標(biāo)出現(xiàn)在同一個(gè)框(不同尺度的框)
    \begin{bmatrix} [c,x,y,w,h] & [c,x,y,w,h] & \cdots &[c,x,y,w,h] \\ [c,x,y,w,h] & [c,x,y,w,h] & \cdots &[c,x,y,w,h] \\ \vdots & \vdots & \vdots & \vdots\\ [c,x,y,w,h] & [c,x,y,w,h] & \cdots &[c,x,y,w,h] \\ \end{bmatrix}
loss_total = 0
for img in images:
    for i in range(0,7):
        for j in range(0,7):
            loss_ij = (c_hat - c_true)**2 + 
            c_true (x_hat - x_true)**2 +  
            c_true (y_hat - y_true)**2 +  
            c_true (w_hat - w_true)**2 +  c_true(h_hat - h_true)**2
            loss_total + loss_ij
yolov1_007.png
yolov1_008.png
yolov1_009.png
yolov1_011.png

loss = (\hat{c} - c^{*})^2 + c^{*}(\hat{x} - x^{*}) + c^{*}(\hat{y} - y^{*}) + c^{*}(\hat{w} - w^{*}) + c^{*}(\hat{h} - h^{*})

  • c \in [0,1]
  • x,y,h,w \in [1,416]

    這樣問(wèn)題就是因?yàn)橹眯哦萳oss 值與邊界框位置信息的loss 存在不平衡問(wèn)題,因此需要引入一個(gè)權(quán)重來(lái)進(jìn)行調(diào)整。

loss = \lambda(\hat{c} - c^{*})^2 + c^{*}(\hat{x} - x^{*}) + c^{*}(\hat{y} - y^{*}) + c^{*}(\hat{w} - w^{*}) + c^{*}(\hat{h} - h^{*})

而且這里 w 和 h 與 x 和 y 也表示不同屬性還需要進(jìn)一步進(jìn)行處理

loss = \lambda(\hat{c} - c^{*})^2 + c^{*}(\hat{x} - x^{*}) + c^{*}(\hat{y} - y^{*}) + c^{*}( \sqrt{\hat{w}} - \sqrt{w^{*}} ) + c^{*}( \sqrt{\hat{h}} - \sqrt{h^{*}})

因?yàn)橹恍枰?jì)算有物體的放框

IOU和NMS

<img src="images/iou_001.jpg">
可能輸出預(yù)測(cè)框數(shù)量要大于實(shí)際目標(biāo)數(shù)量,可以通過(guò) IOU 可以去掉一些冗余的候選框,通過(guò)將兩個(gè)重合度比較高的候選框計(jì)算為一個(gè)候選框。我們實(shí)際上可以用 IOU 來(lái)判斷兩個(gè)框。

找到置信度最高框,然后利用 IOU 去掉與置信度最高框(抑制掉),還剩下沒(méi)有被抑制掉,然后在沒(méi)有被抑制掉的框找到置信度最高的框,然后計(jì)算 IOU 來(lái)去掉和這個(gè)框,NMS(非極大值抑制)

多分類(lèi)

loss = \lambda(\hat{c} - c^{*})^2 + c^{*}(\hat{x} - x^{*}) + c^{*}(\hat{y} - y^{*}) + c^{*}( \sqrt{\hat{w}} - \sqrt{w^{*}} ) + c^{*}( \sqrt{\hat{h}} - \sqrt{h^{*}}) + c^{*}\sum_i^cls (\hat{y_i} - y_i^{*})^2

到現(xiàn)在存在的問(wèn)題

  • 小目標(biāo)檢測(cè)
  • 多目標(biāo)
    <img src="images/yolov1_003.jpeg"/>

<img src="images/yolov1_002.jpeg"/>

<img src="images/yolov1_006.png">


yolov1_002.jpeg
yolov1_003.jpeg
yolov1_006.png
  • S 是 7,grid 數(shù)量
  • B 兩個(gè)框
  • \mathbb{1}_{i,j}^{obj}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容