作者丨CVHub 來源丨派派星?
導讀
本文將從小目標的定義、意義和挑戰等方面入手,全面介紹小目標檢測的各種解決方案。?
導讀
小目標檢測是計算機視覺領域中的一個極具挑戰性的問題。隨著深度學習和計算機視覺領域的不斷發展,越來越多的應用場景需要對小目標進行準確的檢測和識別。本文將從小目標的定義、意義和挑戰等方面入手,全面介紹小目標檢測的各種解決方案。
定義
小目標檢測廣義是指在圖像中檢測和識別尺寸較小、面積較小的目標物體。通常來說,小目標的定義取決于具體的應用場景,但一般可以認為小目標是指尺寸小于 像素的物體,如下圖 COCO 數據集的定義。當然,對于不同的任務和應用,小目標的尺寸和面積要求可能會有所不同。
在 COCO 數據集中,針對三種不同大小(small,medium,large)的圖片提出了測量標準,其包含大約 41% 的小目標(area<32×32), 34% 的中等目標(32×3296×96)。其中,小目標的 AP 是很難提升的!
意義
小目標檢測的意義在于它可以提高技術的應用范圍,同時可以幫助大家更好地理解圖像中的細節信息。此外,小目標檢測其實在我們日常生活中的許多領域均有廣泛的應用,例如交通監控、醫學影像分析、無人機航拍等。舉個例子:
在交通監控領域,小目標檢測可用于識別交通信號燈、車牌等。
在醫學影像分析領域,小目標檢測可用于識別微小的腫瘤細胞等。
在自動駕駛領域,小目標檢測可用于識別微小的障礙物,以彌補激光雷達難以探測的窘況。
挑戰
做過檢測任務的同學應該很清楚這一點,那便是小目標檢測其實一直是一個極具挑戰性的問題。下面隨便舉幾個小例子給大家感受下:
小目標通常在圖像中占據很小的區域,深度學習算法其實很難提取到有效的信息,更別提傳統的特征提取方法。舉個例子,對于一個室內會議場景,假設我們的攝像頭裝在左上角的上方區域,如果此時你訓練完一個檢測模型應用上去,會觀察到在遠離鏡頭的對角線區域其檢測效果相對其它區域來說一般會差很多的,特別容易造成漏檢和誤檢。
小目標并不具備常規尺寸目標的紋理、顏色等豐富的細節特征,這使得小目標的檢測更加困難,而且容易被模型誤認為是“噪聲點”。
小目標其實有時候不好定義,以最簡單的行人和車輛為例,不妨看下面這張圖片:
大致劃分了下,其中綠色框范圍的目標其實是很容易標注的,主要是紅色方框范圍內的目標。大部分目標像素占比很小,標也不是,不標也不是,當然你可以采用ignore標簽不計算損失或者干脆直接將這塊區域mask掉,但現實就是很多情況下這種“小目標”其實很大概率會被漏打標,太多的話很容易造成訓練曲線“抖動”。
解決方案
今天,讓我們重點來聊聊如何解決小目標檢測的難題。大家應具備批判性思維,根據實際情況針對性的采取合適的方式。
需要注意的是,雙階段目標檢測算法由于存在RoI Pooling之類的操作, 因此小目標的特征會被放大,其特征輪廓也更為清晰,因此檢出率通常也會更高。但本文還是主要圍繞發展比較成熟的單階段目標檢測算法展開。
增大輸入圖像分辨率
圖像分辨率,當之無愧是最大的罪魁禍首,想象一下,一張圖像如果分辨率太小,假設我們就下采樣32倍,理論上小于這個像素的目標信息基本就會完全丟失。因此,當處理小目標檢測時,由于目標物體尺寸過小,通常需要將輸入圖像的分辨率提高,以便更好地捕捉目標的細節。通過提升輸入圖像分辨率,可以提高小目標檢測的準確性和召回率,從而更好地識別和跟蹤目標物體。
增大模型輸入尺寸
圖像縮放是另一種常用的解決方案,同樣可以提高小目標檢測的精度。常見的做法便是直接開啟“多尺度訓練”,設置比較大的尺寸范圍。不過,增大模型輸入尺寸可能會導致模型計算量的增加和速度的降低。因此,大家在使用時需要權衡精度和效率之間的平衡。通常需要根據實際需求和可用資源進行調整,以找到最佳的模型輸入尺寸。
同樣地,在推理時也可以視情況開啟測試時增強Test Time Augmentation, TTA,特別是打比賽的時候。
特征融合
多尺度特征融合
由于小目標的尺寸較小,其特征信息往往分布在圖像的多個尺度中,因此需要在多個尺度的特征圖中進行融合,以提高模型對小目標的感知能力。常見的多尺度特征融合方法包括?Feature Pyramid Networks, FPN?和?Path Aggregation Network, PAN?等。
Extended Feature Pyramid Network for Small Object Detection
長跳躍連接
長跳躍連接是指將不同層級的特征圖進行融合的一種方法,可以幫助模型更好地捕捉不同層級的特征信息。眾所周知,淺層特征圖的細節信息豐富但語義信息較弱,深層特征圖則與之相反。因此,在小目標檢測中,可以將低層級的特征圖和高層級的特征圖進行融合,以增強對小目標的定位能力。
注意力機制
注意力機制是一種能夠將模型的注意力集中到重要區域的技術,可以通過對特征圖進行加權處理,將更多的注意力集中到小目標所在的區域,從而提高對小目標的檢測能力。常見的注意力機制包括SENet、SKNet等。
數據增強
數據增強是在保持數據本身不變的前提下,通過對數據進行隨機變換來增加數據樣本的數量和多樣性,從而提高模型的泛化能力和魯棒性。對于小目標檢測任務,數據增強可以通過以下幾種方式來解決:
尺度變換
對于小目標而言,其尺寸往往較小,因此可以通過對原始圖像進行縮放或放大的操作來增加數據樣本的尺度變化。例如,可以將原始圖像縮小一定比例,從而得到多個尺寸較小的圖像樣本。
隨機裁剪
對于包含小目標的圖像,在不改變目標位置的情況下,可以通過隨機裁剪的方式得到多個不同的圖像樣本,以增加數據的多樣性。此外,可以使用非矩形的裁剪方式,例如多邊形裁剪,來更好地適應小目標的不規則形狀。
高級組合
這一塊大家伙最熟悉的可能是 YOLO 中的 Mosaic 增強,其由多張原始圖像拼接而成,這樣每張圖像會有更大概率包含小目標。此外,我們還可以通過諸如 Copy-Paste 的辦法將各類小目標充分的“復制-黏貼”,從而增加小目標的“曝光度”,提升他們被檢測的概率。
大圖切分
Tiling
Tiling是一種對大圖進行切分的有效預處理操作,上圖為在Roboflow平臺上的演示。通過tile可以有效地讓目標檢測網絡更好的聚焦在小物體上,同時允許我們保持所需的小輸入分辨率,以便能夠運行快速推斷。不過需要注意的是,在推理時也理應保持輸入的一致性。
SAHI
Tiling 算是比較老舊的技術,目前筆者強烈推薦的還是Slicing Aided Hyper Inference, SAHI,即切片輔助超級推理,是一個專用于小目標檢測的推理框架,理論上可以集成到任意的目標檢測器上,無需進行任何微調。該方法目前已被多個成熟的目標檢測框架和模型集成進去,如YOLOv5、Detectron2和MMDetection等。
損失函數
加權求和
這個非常好理解,就是我們可以自行定義小目標檢測的尺寸,由于我們有 GT,因此在計算 Loss 的時候可以人為地對小目標施加更大的權重,讓網絡更加關注這部分。
Stitcher
Stitcher是早幾年出的產物,其出自《Stitcher: Feedback-driven Data Provider for Object Detection》一文。作者通過統計分析觀察到,小目標之所以檢測性能很差是因為在訓練時對損失的貢獻很小(要么漏檢要么漏標)。因此,文章中提出了一種基于訓練時動態反饋的機制,即根據計算出來的損失,自動決定是否要進行圖像拼接的操作。
其它
下面簡單整理一些有代表性的小目標檢測文章。
2023
TinyDet: Accurate Small Object Detection in Lightweight Generic Detectors
YOLO-Drone: Airborne real-time detection of dense small targets from high-altitude perspective
2022
Towards Large-Scale Small Object Detection: Survey and Benchmarks
2020
Small-Object Detection in Remote Sensing Images with End-to-End Edge-Enhanced GAN and Object Detector Network
2019
Augmentation for small object detection
編輯:黃飛
評論
查看更多