點擊上方「AI算法與圖像處理」,選擇加"星標"或「置頂」python
重磅乾貨,第一時間送達web
做者:Jacob Solawetz算法
編譯:ronghuaiyang,來源:AI公園
微信
在計算機視覺中,檢測小目標是最有挑戰的問題之一。本文給出了一些有效的策略。網絡
爲了提升你的模型在小目標上的性能,咱們推薦如下技術:app
-
提升圖像採集的分辨率 -
增長模型的輸入分辨率 -
tile你的圖像 -
經過加強生成更多數據 -
自動學習模型anchors -
過濾掉無關的類別
爲何小目標檢測很困難?
小目標問題困擾着世界各地的目標檢測模型。不相信嗎?查一下最近的模型在COCO上的評估結果,YOLOv3,EfficientDet和YOLOv4:編輯器
以Efficient爲例,小目標的AP只有12%,大目標的AP爲51%。這幾乎是五倍的差別!那麼,爲何檢測小物體如此困難呢?函數
這一切都歸結於模型。目標檢測模型經過在卷積層中對像素進行聚合來造成特徵。性能
在網絡的末端,基於損失函數進行預測,損失函數根據預測值和ground truth之間的差別對全部像素進行加和。學習
若是ground truth框不大,則在進行訓練時信號會很小。此外,小物體最有可能有數據標記錯誤,他們的識別可能被忽略。
從經驗和理論上講,小物體是很難的。
提高圖像採集的分辨率
分辨率,分辨率,分辨率……都是分辨率的鍋。
很是小的物體的邊界框中可能只包含幾個像素,這意味着增長圖像的分辨率能夠增長探測器能夠從那個小盒子中造成的豐富特徵,這是很是重要的。
所以,咱們建議儘量提升採集圖像的分辨率。
提升模型的輸入分辨率
一旦你有了更高分辨率的圖像,你就能夠放大模型的輸入分辨率。警告:這將致使大型模型須要更長的時間來訓練,而且當你開始部署時,也會更慢地進行推斷。你可能須要實驗來找出速度與性能之間的正確權衡。
在訓練YOLOv4中,你能夠經過改變配置文件中的圖像大小來輕鬆縮放輸入分辨率。
[net]
batch=64
subdivisions=36
width={YOUR RESOLUTION WIDTH HERE}
height={YOUR RESOLUTION HEIGHT HERE}
channels=3
momentum=0.949
decay=0.0005
angle=0
saturation = 1.5
exposure = 1.5
hue = .1
learning_rate=0.001
burn_in=1000
max_batches=6000
policy=steps
steps=4800.0,5400.0
scales=.1,.1
你也能夠在訓練YOLOv5中經過改變訓練命令中的圖像尺寸參數來輕鬆縮放你的輸入分辨率:
!python train.py --img {YOUR RESOLUTON SIZE HERE} --batch 16 --epochs 10 --data '../data.yaml' --cfg ./models/custom_yolov5s.yaml --weights '' --name yolov5s_results --cache
對圖像進行Tiling
檢測小物體的另外一個重要策略是將圖像切割後造成batch,這個操做叫作tile,做爲預處理步驟。tile能夠有效地將檢測器聚焦在小物體上,但容許你保持所需的小輸入分辨率,以便可以運行快速推斷。
若是你在訓練中使用tile,重要的是要記住,你也須要在推理時tile你的圖像。
經過加強產生更多數據
數據加強從基本數據集生成新的圖像。這對於防止模型過擬合訓練集很是有用。
一些特別有用的小物體檢測加強包括隨機裁剪、隨機旋轉和馬賽克加強。
自動學習模型Anchors
Anchors是你的模型學會預測的與之相關的原型邊界框。也就是說,anchors能夠預先設置,有時對你的訓練數據不是最優的。最好根據你手頭的任務自定義調優它們。幸運的是,YOLOv5模型會根據你的自定義數據自動爲你完成這項工做。你所要作的就是開始訓練。
Analyzing anchors... anchors/target = 4.66, Best Possible Recall (BPR) = 0.9675. Attempting to generate improved anchors, please wait... WARNING: Extremely small objects found. 35 of 1664 labels are < 3 pixels in width or height. Running kmeans for 9 anchors on 1664 points... thr=0.25: 0.9477 best possible recall, 4.95 anchors past thr n=9, img_size=416, metric_all=0.317/0.665-mean/best, past_thr=0.465-mean: 18,24, 65,37, 35,68, 46,135, 152,54, 99,109, 66,218, 220,128, 169,228 Evolving anchors with Genetic Algorithm: fitness = 0.6825: 100%|██████████| 1000/1000 [00:00<00:00, 1081.71it/s] thr=0.25: 0.9627 best possible recall, 5.32 anchors past thr n=9, img_size=416, metric_all=0.338/0.688-mean/best, past_thr=0.476-mean: 13,20, 41,32, 26,55, 46,72, 122,57, 86,102, 58,152, 161,120, 165,204
過濾掉無關的類別
類別管理是提升數據集質量的一項重要技術。若是你有一個類與另外一個類明顯重疊,你應該從數據集中過濾掉這個類。也許,你認爲數據集中的小物體不值得檢測,因此你可能但願將其拿掉。
總結
正確地檢測小物體確實是一項挑戰。在這篇文章中,咱們討論了一些策略來改善你的小物體探測器,即:
-
提升圖像採集的分辨率 -
增長模型的輸入分辨率 -
tile你的圖像 -
經過加強生成更多數據 -
自動學習模型anchors -
過濾掉無關的類別
英文原文:https://towardsdatascience.com/tackling-the-small-object-problem-in-object-detection-6e1c9976ee69
下載1:動手學深度學習
在「AI算法與圖像處理」公衆號後臺回覆:動手學深度學習,即可下載547頁《動手學深度學習》電子書和源碼。該書是面向中文讀者的能運行、可討論的深度學習教科書,它將文字、公式、圖像、代碼和運行結果結合在一塊兒。本書將全面介紹深度學習從模型構造到模型訓練,以及它們在計算機視覺和天然語言處理中的應用。
我的微信(若是沒有備註不拉羣!) 請註明: 地區+學校/企業+研究方向+暱稱
本文分享自微信公衆號 - AI算法與圖像處理(AI_study)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。