邊界框
邊界框是描述「物件在哪裡」最簡單的方式:完全包住物件的最小軸對齊矩形。「軸對齊」指它的邊與影像邊緣平行(不旋轉),這讓運算便宜、標註容易。它以精確度換取簡潔——一支斜放的鉛筆會得到一個鬆散、四角大量留白的框——但對大多數偵測任務而言,一個矩形已足以表達「物件在這裡」。
確定一個框恰好需要四個數字,但常見的編碼方式有好幾種,把它們搞混是經典的臭蟲來源。角點形式給出左上與右下像素:(x_min, y_min, x_max, y_max)。中心形式給出中心加上尺寸:(c_x, c_y, w, h)。COCO 風格的標註則用 (x_min, y_min, w, h)。它們描述的是同一個矩形,你只需一致地轉換即可。偵測器通常以中心形式做回歸,因為中心與尺寸彼此的變化比兩個角點更獨立。
網路幾乎從不直接預測原始像素座標,而是預測相對於某個參考框(錨框或提議框)的偏移量,並且把這些偏移量參數化與正規化,使訓練目標對神經網路而言處於舒適的數值尺度。經典的 R-CNN/Faster R-CNN 編碼為 t_x = (x − x_a)/w_a、t_y = (y − y_a)/h_a、t_w = log(w/w_a)、t_h = log(h/h_a),其中下標 a 表示參考框。中心偏移除以參考尺寸,使一次位移代表「框寬的某個比例」;尺寸取對數,使加倍與減半對稱,並讓寬度在反向取指數後保持為正。
在訓練時,回歸損失會比較「預測的偏移量」與「能把參考框映射到所匹配的真實框上的偏移量」。Smooth L1(Huber)損失是傳統選擇,因為它對偶發的大誤差較為穩健;現代偵測器則常直接最佳化以 IoU 為基礎的損失(GIoU、DIoU、CIoU),因為最終指標是重疊度,而非座標距離。
角點為 (x_min=40, y_min=60, x_max=140, y_max=210) 的框,其寬為 100、高為 150、中心為 (90, 135)。以中心形式表示則為 (90, 135, 100, 150)——同一個矩形,不同的四個數字。
偵測管線中最常見的臭蟲,就是不知不覺地把 (x1,y1,x2,y2) 與 (x,y,w,h) 混用。務必確認某個函式庫期待的是角點還是中心加尺寸,以及座標是絕對像素還是正規化到 [0,1]。