傳統辨識方法

滑動視窗偵測

假設你有一個是/否分類器,對一張固定大小的裁切圖能回答「這是不是一張臉?」偵測問的是更難的問題:整張照片裡的臉在哪裡、有多大?滑動視窗(sliding window)範式把偵測轉化為許多次分類呼叫:你取一個固定大小的視窗,在影像的每個位置滑動,並在每個位置對裁切出的區塊執行分類器。為了找出不同大小的物件,你在多個尺度上重複整個掃描——通常是把影像一步步縮小成影像金字塔——如此單一固定大小的視窗就能同時抓到近處與遠處的物件。

精確地說,偵測器在金字塔的每一層走訪一格一格的位置(常常每隔幾個像素,稱為步幅 stride),從每個視窗擷取特徵、給分,並保留分數超過門檻的視窗。由於真正的物件通常會觸發數個彼此重疊的視窗,會有一個稱為非極大值抑制(non-maximum suppression, NMS)的清理步驟,在每一群中保留分數最高的框,捨棄其鄰近框。這是深度學習之前主導的偵測作法,而工程上的挑戰在於速度:一張百萬像素的影像配上數個尺度與較小步幅,會產生數十萬到數百萬個視窗,因此每個視窗的分類器必須極度便宜,或被積極地提前中止。

這種成本壓力形塑了最著名的傳統偵測器。Viola–Jones 人臉偵測器使用提升式級聯(boosted cascade),使絕大多數背景視窗只經過幾個便宜測試就被拒絕。HOG 加線性 SVM(Dalal 與 Triggs)讓每個視窗的分數變成單一次內積。可變形部件模型則以可移動的部件擴充滑動視窗。現代深度偵測器與其說拋棄這個想法,不如說把它折進卷積之中:一個全卷積網路實際上在一次共享的前向傳遞中,對每個空間位置都評估一次分類器(滑動視窗變成了感受野),而以錨框為基礎的偵測器(如 Faster R-CNN、SSD、YOLO)或以查詢為基礎的偵測器(如 DETR),則以學習得來、效率高得多的機制,取代了明確的金字塔與步幅迴圈。

為何重要:滑動視窗把準確度與速度的取捨明白攤開。更細的步幅與更多尺度能找到更多物件,但要付出更多視窗的代價;正是這種張力,在歷史上促成了級聯、後來的候選區域(region proposal)以及單階段卷積偵測器的發明。

又稱
sliding-window paradigmexhaustive window search