分類:通常圖像分類並沒有什么用處,只是得出一張圖片里面有什么。
定位+分類:知道圖片中有個什么,也把這個物體定位出來了,但是也沒啥用,因為日常生活中一張圖片中可能有多個物體。
物體檢測:做到這一步在實際中就有用處了。
IOU(交並比)
用於衡量定位的准確度, 一般IOU >= 0.5 可認為定位成功。
上圖中真實的由藍框標記,紅框為算法框出來的。
mAP(mean Average Precision 平均精度均值)
* 用於衡量模型在測試集檢測精度的優劣程度。
- 綜合考慮召回率和精度,mAP越高表示檢測結果越好。
mAP計算原理
- 召回率/查全率(recall):選的N個樣本中選對的k個正樣本,占總的M個正樣本的比例 k/M;
- 精度/查准率(precision):選的N個樣本中選對k個正樣本的比例 k/N;
選擇的樣本N越多,召回率越高,查准率越低;
置信度(閾值)越低,選中的樣本越多,精度越低,召回率越高。
mAP就是計算上圖中折線圖與坐標軸之間的面積。
Two-stage
R-CNN系列
R-CNN系列變化的主要特征是將越來越多的部分交給神經網絡做。
- R-CNN : Girshick R, Donahue J, Darrell T,et al. Rich Feature Hierarchies for Accurate Object Detection and Semantic Segmentation[C].2014.
- Fast R-CNN:Girshick R, Fast R-CNN[j].Computer Science, 2015
- Faster R-CNN : Ren S, He Km Girshick R,et al. Faster R-CNN:towards real-time object detection with region proposal networks[C], 2015:91-99
R-CNN
R-CNN的主要步驟
- 候選區域提取:使用Selective Search 從輸入圖片中提取2000個左右的候選區域
- 特征提取: 首先將所有的候選區域裁剪縮放為固定大小,再用AlexNet(5conv + 2FC)提取圖像的特征。
- 線性分類: 用特定類別的線性SVMs 對每個候選區域做分類。
* 邊界框回歸:用線性回歸修正邊界框的位置與大小,其中每個類別單獨訓練一個邊界框回歸器。
這里只有特征提取用到深度學習。
1.候選區域提取 步驟
- 層次化分組算法
1)用基於圖的圖像分割方法創建初始區域。
2)計算所有的相鄰區域的相似度。
3)每次合並相似度最高的兩個相鄰的圖像區域,並計算合並后的區域與其相鄰區域的相似度。重復改過程,直到所有的圖像合並
成一張完整的圖像。
(前面的三步是不是聚類的操作)
4)提取所有圖像區域的目標位置框,並按層級排序(覆蓋整個圖像的區域的層級為1)。 - 在不同圖像分割閾值、不同色彩空間、以及不同的相似度(綜合考慮顏色、紋理、大小、重疊度)下。調用層次化分組算法,對所有合並策略下得到的位置框按層級*RND排序,去掉冗余框。
- 取一定個數的候選區域作為后續卷積神經網絡的輸入。(R-CNN取2000個)。
NMS(非極大值抑制 Non-Maximum Suppression) 用於去掉冗余選框。
分類與回歸
2000個候選框得到4096個特征,然后每個類別有一個21個分類(包括一個背景分類器)得到20個類別,然后去掉冗余框,微調校准選框。
R-CNN缺點
重復計算:需要對兩千候選框做CNN,計算量很大,而且有很多的重復計算。
SVM模型:在標注數據足夠的時候不是最好的選擇。
多個步驟:候選區域提取,特征提取,分類,回歸都要單獨訓練,大量中間數據需要保存。
檢測速度慢:GPU處理一張圖片需要13秒,cpu上則需要53秒。
改進:能否避免候選框特征提取過程的重復的計算?
fast R-CNN
Fast R-CNN的主要步驟
- 候選區域的提取: 通過Selective Search 從原始圖片中提取2000個左右的區域候選框。(與R-CNN相比沒有變化)。
- 特征提取: 原始圖像輸入CNN網絡,得到特征圖。(與R-CNN相比,這里是將原始圖片進行了一次特征提取)。
- ROI-Pooling: 根據 映射關系,將 不同尺寸的候選框 在 特征圖上的對應區域 池化 為 維度相同的特征圖 (因為全連接層要求輸入的尺寸固定)。
- 全連接層:將維度相同的特征圖轉化為ROI特征向量(ROI feature vector)。
- 分類與回歸:經過全連接層,再使用softmax分類器進行識別,用回歸器修正邊界框的位置與大小,最后對每個區域做NMS.
ROI Pooling
Fast R-CNN改進之處
- 直接對整張圖片做卷積,不再對每個候選區域分別做卷積,從而減少大量的重復計算。
- 用ROI pooling對不同的候選框做尺寸的歸一化。
- 將邊界回歸器放進網絡一起訓練,每個類別對應一個回歸器。
- 用softMax代替SVM分類器。
Fast R-CNN缺點: - 候選區域的提取依舊使用Selective search,目標檢測時間大多都消耗在這上面。(region proposal 2-3 s,而特征分類只需要0.32s)。
faster R-CNN
尋找更加高效的候選區域生成方法? 如何將所有的東西都用神經網絡處理?
faster R-CNN主要的步驟:
1. 卷積層:輸入圖片經過多層卷積神經網絡(ZF,VGG),提取卷積特征圖,供給RPN網絡和Fast R-CNN使用,RPN網絡和Fast R-CNN 共享
特征提取網絡可減少計算時間。
2. RPN層:生成候選區域,並用softmax判斷候選框是前景還是背景,從中選取前景候選框並利用bounding box regression調整候選框的位置,得到候選區域。
3. ROIPooling層:同Fast R-CNN一樣,將尺寸不同的候選框,在特征圖上的對應的區域池化為維度相同的特征圖。
4.分類與回歸 :同fast R-CNN ,用softmax分類器判斷圖像的類別,同時用邊界框回歸修正邊界框的位置和大小。
關於anchor box
One-stage
對輸入的圖像直接處理
yolo
ssd