1 什么是目標檢測
目標檢測(Object Detection)的任務是找出圖像中所有感興趣的目標(物體),確定它們的類別和位置,是計算機視覺領域的核心問題之一。由於各類物體有不同的外觀,形狀,姿態,加上成像時光照,遮擋等因素的干擾,目標檢測一直是計算機視覺領域最具有挑戰性的問題。
計算機視覺中關於圖像識別有四大類任務:
分類-Classification:解決“是什么?”的問題,即給定一張圖片或一段視頻判斷里面包含什么類別的目標。
定位-Location:解決“在哪里?”的問題,即定位出這個目標的的位置。
檢測-Detection:解決“是什么?在哪里?”的問題,即定位出這個目標的的位置並且知道目標物是什么。
分割-Segmentation:分為實例的分割(Instance-level)和場景分割(Scene-level),解決“每一個像素屬於哪個目標物或場景”的問題。
2 目標檢測要解決的核心問題
除了圖像分類之外,目標檢測要解決的核心問題是:
1.目標可能出現在圖像的任何位置。
2.目標有各種不同的大小。
3.目標可能有各種不同的形狀。
如果用矩形框來定義目標,則矩形有不同的寬高比。由於目標的寬高比不同,因此采用經典的滑動窗口+圖像縮放的方案解決通用目標檢測問題的成本太高。
3 目標檢測算法分類
基於深度學習的目標檢測算法主要分為兩類:
1.Two stage目標檢測算法
先進行區域生成(region proposal,RP)(一個有可能包含待檢物體的預選框),再通過卷積神經網絡進行樣本分類。
任務:特征提取—>生成RP—>分類/定位回歸。
常見的two stage目標檢測算法有:R-CNN、SPP-Net、Fast R-CNN、Faster R-CNN和R-FCN等。
2.One stage目標檢測算法
不用RP,直接在網絡中提取特征來預測物體分類和位置。
任務:特征提取—>分類/定位回歸。
常見的one stage目標檢測算法有:OverFeat、YOLOv1、YOLOv2、YOLOv3、SSD和RetinaNet等。