【深度学习】解决物体检测中的小目标问题
為了提高模型在小物體上的性能,我們建議使用以下技術:
提高圖像捕獲分辨率
提高模型的輸入分辨率
平鋪圖像
通過擴充生成更多數據
自動學習模型錨
過濾掉多余的類
為什么小目標問題很難?
小物體問題困擾著全世界的物體檢測模型,查看最新模型YOLOv3、EfficientDet和YOLOv4的COCO評估結果:
查看 AP_S、AP_M、AP_L 以獲取最先進的模型。
例如,在 EfficientDet 中,小物體的 AP 僅為 12%,而大物體的 AP 為 51%,這幾乎是五倍的差距!
那么為什么檢測小物體這么難呢?
這一切都取決于模型,目標檢測模型通過聚合卷積層中的像素來形成特征。
PP-YOLO中目標檢測的特征聚合
并且在網絡的末端,基于損失函數進行預測,該損失函數基于預測和地面真實情況之間的差異對像素進行匯總。
YOLO中的損失函數
如果地面真值框不大,則在進行訓練時信號會很小。此外,小物體最有可能存在數據標記錯誤,因此它們的標識可能會被省略,從經驗和理論上來說,小物體是難的。
提高圖像捕獲分辨率
非常小的物體在邊界框中可能只包含幾個像素——這意味著提高圖像的分辨率以增加檢測器可以從該小框中形成的特征的豐富度非常重要。因此,如果可能,我們建議盡可能捕獲高分辨率的圖像。
提高模型的輸入分辨率
一旦我們擁有更高分辨率的圖像,我們就可以擴大模型的輸入分辨率。警告:這將導致大型模型需要更長的訓練時間,并且在開始部署時推斷速度會更慢。我們可能需要運行實驗,來找出速度與性能之間的正確權衡。
在我們關于培訓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注意:只有在達到訓練數據的最大分辨率時,才能看到改進的結果。
平鋪圖像
檢測小圖像的另一種很好的策略是將圖像平鋪作為預處理步驟。平鋪可以有效地將檢測器放大到小物體上,但允許我們保持所需的小輸入分辨率,以便能夠進行快速推理。
平鋪圖像作為 Roboflow 中的預處理步驟
如果在訓練期間使用平鋪,請務必記住,我們還需要在推理時平鋪圖像。
通過擴充生成更多數據
數據擴充會從我們的基本數據集生成新圖像,這對于防止模型過度擬合訓練集非常有用。
一些特別有用的小物體檢測增強包括隨機裁剪、隨機旋轉和鑲嵌增強。
自動學習模型錨
錨定框是模型學習預測的原型邊界框,也就是說,錨框可以預先設置,有時對于我們的訓練數據來說不是最理想的。自定義調整這些參數以適合我們即將完成的任務是很好的,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,20過濾掉多余的類
類管理是提高數據集質量的一項重要技術,如果我們的一個類與另一個類明顯重疊,則應從數據集中過濾該類。也許,我們認為數據集中的小對象不值得檢測,因此我們可能想要將其取出。通過Roboflow Pro中的高級數據集進行狀況檢查,我們可以快速識別所有這些問題。
可以通過Roboflow 的本體管理工具來實現類遺漏和類重命名。
結論
正確檢測小物體確實是一個挑戰。在這篇文章中,我們討論了一些改進小物體檢測器的策略,即:
提高圖像捕獲分辨率
提高模型的輸入分辨率
平鋪圖像
通過擴充生成更多數據
自動學習模型錨
過濾掉多余的類
本站qq群851320808,加入微信群請掃碼:
總結
以上是生活随笔為你收集整理的【深度学习】解决物体检测中的小目标问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PP视频如何播放本地视频文件
- 下一篇: 【深度学习】揭秘2021抖音和快手APP