天天看點

深度學習中的目标檢測算法概述前提

前提

目标檢測問題是在分類任務是上逐漸發展起來的,首先介紹一下兩者之間的差别

  • 分類任務:

    一張圖檔往往隻有一個目标,通過網絡輸出目标的得分,得到圖像中的物體類别,常見的網絡有CNN, Resnet等

  • 檢測任務:

    一張圖檔包含多個目标,通過網絡輸出不同物體的種類和标注框(Bounding Box),常見的網絡有Fast-CNN,yolo,SSD等

Bounding Box(Bbox):一般有三種表示方法,1,(x0,y0,x1,y1),代表标注框的起點(x0,y0)和終點(x1,y1)2,(x0,y0,x1,y1,h) 代表标注框的起點(x0,y0)和中心點(x1,y1)以及高度 3, (x0,y0,w,h,alpha)代表标注框的起點,寬,高,以及旋轉的相位

深度學習中的目标檢測算法概述前提

由于檢測問題是從分類任務發展起來的,故按照分類任務的發展順序來看網絡的發展。

CNN

CNN是分類任務中常用的方法,通過網絡模型加一個全連接配接層實作物體的預測,最終輸出物體在不同類别中的得分,得分最高的類别的就是預測的物體的類别。

要想用CNN實作物體的檢測,必須事先随機生成大小,形狀不同的框,對圖像進行裁剪,放入網絡中,然後在最後的全連接配接層加上物體的Bbox(x0,y0,w,h)預測,通過預測的Bbox結果與真實Bbox坐标做差,計算loss,完成傳遞,訓練。(其實就是随機裁剪圖像後進行分類)

由于不确定标注框的大小,位置,這種随機生成标注框的方法無疑是十分浪費計算資源的。

R-CNN

相比CNN,R-CNN生成Bbox的方法比較進階,R就是Region proposal,找到存在物體最可能的區域,能高效的查找可能存在物體的Bbox,一般一次訓練會生成2000個左右的圖檔去分類。(也就是把原始圖檔高效分成2000張大小,形狀不同的圖檔,放到網絡中進行預測。)

這種方法比直接找高效了一些,但是一次前向傳遞相當于2000次,效率也不是很高。

深度學習中的目标檢測算法概述前提

Fast R-CNN

Fast R-CNN的改動是在圖像經過一次卷積之後,在Feature map上對圖像進行區域劃分(Region proposal)目的是減少計算量,例如一張416x416的圖像,卷積之後可能變成52x52,然後再進行後續網絡的預測。

Faster R-CNN

Faster R-CNN在Fast R-CNN基礎上改變區域劃分的規則,Faster R-CNN通過在網絡中的某一處提取Feature map,通過錨點(Anchor)劃分區域圖像,然後繼續訓練。

訓練過程也有所不同:

==》 區域中判斷存在 object

==》 該區域對object(positive) Bbox回歸

==》 輸出positive object的BBox

==》 對輸出的Bbox類别判斷

==》 對輸出的Bbox坐标回歸

YOLOV1

可以看到Faster R-CNN中有了對所劃分的區域中是否存在物體的判斷,YOLOV1對此進行了改進,整張圖檔作為網絡的輸入,然後再Feature map直接對Bbox進行回歸。

深度學習中的目标檢測算法概述前提
  • 更改網絡模型,24個卷積層,2個全連接配接層
  • 7x7個anchors
  • 每個anchor預測B個Bbox,(B=2)
  • 每個Bbox包含位置(x,y,w,h)及置信度(confidence),共5個輸出
  • 每個anchors同時預測物體類别(C個)
  • 結果輸出: 7x7x(Bx5 + C), e.g., VOC資料集(20分類): 7x7x(10+20)

YOLOV3/4/5

YOLO發展過程中,又創新了自己的網絡模型darknet53,例如yolov3在不同的層提取出不同大小的Feature map,選取合适的錨點步長,避免了一些小物體在Feature map上像素消失的問題,進而完成對小中大物體的預測,預測精度和速度都有較大的發展。

繼續閱讀