目標檢測和邊界框
在圖像分類任務里,我們假設圖像里只有一個主體目標,並關注如何識別該目標的類別。然而,很多時候圖像里有多個我們感興趣的目標,我們不僅想知道它們的類別,還想得到它們在圖像中的具體位置。在計算機視覺里,我們將這類任務稱為目標檢測(object detection)或物體檢測。
目標檢測在多個領域中被廣泛使用。例如,在無人駕駛里,我們需要通過識別拍攝到的視頻圖像里的車輛、行人、道路和障礙的位置來規划行進線路。機器人也常通過該任務來檢測感興趣的目標。安防領域則需要檢測異常目標,如歹徒或者炸彈。
邊界框
在目標檢測里,我們通常使用邊界框(bounding box)來描述目標位置。邊界框是一個矩形框,可以由矩形左上角的x和y軸坐標與右下角的x和y軸坐標確定。我們根據坐標信息來定義圖中物體的邊界框。圖中的坐標原點在圖像的左上角,原點往右和往下分別為x軸和y軸的正方向。
- 在目標檢測里不僅需要找出圖像里面所有感興趣的目標,而且要知道它們的位置。位置一般由矩形邊界框來表示。
錨框
目標檢測算法通常會在輸入圖像中采樣大量的區域,然后判斷這些區域中是否包含我們感興趣的目標,並調整區域邊緣從而更准確地預測目標的真實邊界框(ground-truth bounding box)。不同的模型使用的區域采樣方法可能不同。這里我們介紹其中的一種方法:它以每個像素為中心生成多個大小和寬高比(aspect ratio)不同的邊界框。這些邊界框被稱為錨框(anchor box)。我們將在后面基於錨框實踐目標檢測。
生成多個錨框
交並比
標注訓練集的錨框
輸出預測邊界框
在模型預測階段,我們先為圖像生成多個錨框,並為這些錨框一一預測類別和偏移量。隨后,我們根據錨框及其預測偏移量得到預測邊界框。當錨框數量較多時,同一個目標上可能會輸出較多相似的預測邊界框。為了使結果更加簡潔,我們可以移除相似的預測邊界框。常用的方法叫作非極大值抑制(non-maximum suppression,NMS)。
我們來描述一下非極大值抑制的工作原理。對於一個預測邊界框B,模型會計算各個類別的預測概率。設其中最大的預測概率為p,該概率所對應的類別即B的預測類別。我們也將p稱為預測邊界框B的置信度。在同一圖像上,我們將預測類別非背景的預測邊界框按置信度從高到低排序,得到列表L。從L中選取置信度最高的預測邊界框B1作為基准,將所有與B1的交並比大於某閾值的非基准預測邊界框從L中移除。這里的閾值是預先設定的超參數。此時,L保留了置信度最高的預測邊界框並移除了與其相似的其他預測邊界框。 接下來,從L中選取置信度第二高的預測邊界框B2作為基准,將所有與B2的交並比大於某閾值的非基准預測邊界框從L中移除。重復這一過程,直到L中所有的預測邊界框都曾作為基准。此時LL中任意一對預測邊界框的交並比都小於閾值。最終,輸出列表L中的所有預測邊界框。
實踐中,我們可以在執行非極大值抑制前將置信度較低的預測邊界框移除,從而減小非極大值抑制的計算量。我們還可以篩選非極大值抑制的輸出,例如,只保留其中置信度較高的結果作為最終輸出。
- 以每個像素為中心,生成多個大小和寬高比不同的錨框。
- 交並比是兩個邊界框相交面積與相並面積之比。
- 在訓練集中,為每個錨框標注兩類標簽:一是錨框所含目標的類別;二是真實邊界框相對錨框的偏移量。
- 預測時,可以使用非極大值抑制來移除相似的預測邊界框,從而令結果簡潔。