解決物體檢測(cè)中的小目標(biāo)問(wèn)題
點(diǎn)擊上方“小白學(xué)視覺(jué)”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時(shí)間送達(dá)

為了提高模型在小物體上的性能,我們建議使用以下技術(shù):
提高圖像捕獲分辨率
提高模型的輸入分辨率
平鋪圖像
通過(guò)擴(kuò)充生成更多數(shù)據(jù)
自動(dòng)學(xué)習(xí)模型錨
過(guò)濾掉多余的類(lèi)

例如,在 EfficientDet 中,小物體的 AP 僅為 12%,而大物體的 AP 為 51%,這幾乎是五倍的差距!
那么為什么檢測(cè)小物體這么難呢?
這一切都取決于模型,目標(biāo)檢測(cè)模型通過(guò)聚合卷積層中的像素來(lái)形成特征。

PP-YOLO中目標(biāo)檢測(cè)的特征聚合
并且在網(wǎng)絡(luò)的末端,基于損失函數(shù)進(jìn)行預(yù)測(cè),該損失函數(shù)基于預(yù)測(cè)和地面真實(shí)情況之間的差異對(duì)像素進(jìn)行匯總。

YOLO中的損失函數(shù)
如果地面真值框不大,則在進(jìn)行訓(xùn)練時(shí)信號(hào)會(huì)很小。此外,小物體最有可能存在數(shù)據(jù)標(biāo)記錯(cuò)誤,因此它們的標(biāo)識(shí)可能會(huì)被省略,從經(jīng)驗(yàn)和理論上來(lái)說(shuō),小物體是難的。
非常小的物體在邊界框中可能只包含幾個(gè)像素——這意味著提高圖像的分辨率以增加檢測(cè)器可以從該小框中形成的特征的豐富度非常重要。因此,如果可能,我們建議盡可能捕獲高分辨率的圖像。
在我們關(guān)于培訓(xùn)YOLOv4的教程中,我們可以通過(guò)更改配置文件中的圖像大小來(lái)輕松調(diào)整輸入分辨率。
[net]batch=64subdivisions=36width={YOUR RESOLUTION WIDTH HERE}height={YOUR RESOLUTION HEIGHT HERE}channels=3momentum=0.949decay=0.0005angle=0saturation = 1.5exposure = 1.5hue = .1learning_rate=0.001burn_in=1000max_batches=6000policy=stepssteps=4800.0,5400.0scales=.1,.1
在我們的教程中,小伙伴們還可以通過(guò)更改“訓(xùn)練”命令中的“圖像大小”參數(shù),輕松調(diào)整輸入分辨率,該教程介紹了如何訓(xùn)練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注意:只有在達(dá)到訓(xùn)練數(shù)據(jù)的最大分辨率時(shí),才能看到改進(jìn)的結(jié)果。
檢測(cè)小圖像的另一種很好的策略是將圖像平鋪?zhàn)鳛轭A(yù)處理步驟。平鋪可以有效地將檢測(cè)器放大到小物體上,但允許我們保持所需的小輸入分辨率,以便能夠進(jìn)行快速推理。
平鋪圖像作為 Roboflow 中的預(yù)處理步驟
如果在訓(xùn)練期間使用平鋪,請(qǐng)務(wù)必記住,我們還需要在推理時(shí)平鋪圖像。
數(shù)據(jù)擴(kuò)充會(huì)從我們的基本數(shù)據(jù)集生成新圖像,這對(duì)于防止模型過(guò)度擬合訓(xùn)練集非常有用。
一些特別有用的小物體檢測(cè)增強(qiáng)包括隨機(jī)裁剪、隨機(jī)旋轉(zhuǎn)和鑲嵌增強(qiáng)。
錨定框是模型學(xué)習(xí)預(yù)測(cè)的原型邊界框,也就是說(shuō),錨框可以預(yù)先設(shè)置,有時(shí)對(duì)于我們的訓(xùn)練數(shù)據(jù)來(lái)說(shuō)不是最理想的。自定義調(diào)整這些參數(shù)以適合我們即將完成的任務(wù)是很好的,YOLOv5 模型架構(gòu)會(huì)根據(jù)我們的自定義數(shù)據(jù)自動(dòng)為我們執(zhí)行此操作,我們所要做的就是開(kāi)始訓(xùn)練。
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類(lèi)管理是提高數(shù)據(jù)集質(zhì)量的一項(xiàng)重要技術(shù),如果我們的一個(gè)類(lèi)與另一個(gè)類(lèi)明顯重疊,則應(yīng)從數(shù)據(jù)集中過(guò)濾該類(lèi)。也許,我們認(rèn)為數(shù)據(jù)集中的小對(duì)象不值得檢測(cè),因此我們可能想要將其取出。通過(guò)Roboflow Pro中的高級(jí)數(shù)據(jù)集進(jìn)行狀況檢查,我們可以快速識(shí)別所有這些問(wèn)題。
可以通過(guò)Roboflow 的本體管理工具來(lái)實(shí)現(xiàn)類(lèi)遺漏和類(lèi)重命名。
正確檢測(cè)小物體確實(shí)是一個(gè)挑戰(zhàn)。在這篇文章中,我們討論了一些改進(jìn)小物體檢測(cè)器的策略,即:
提高圖像捕獲分辨率
提高模型的輸入分辨率
平鋪圖像
通過(guò)擴(kuò)充生成更多數(shù)據(jù)
自動(dòng)學(xué)習(xí)模型錨
過(guò)濾掉多余的類(lèi)
好消息,小白學(xué)視覺(jué)團(tuán)隊(duì)的知識(shí)星球開(kāi)通啦,為了感謝大家的支持與厚愛(ài),團(tuán)隊(duì)決定將價(jià)值149元的知識(shí)星球現(xiàn)時(shí)免費(fèi)加入。各位小伙伴們要抓住機(jī)會(huì)哦!

交流群
歡迎加入公眾號(hào)讀者群一起和同行交流,目前有SLAM、三維視覺(jué)、傳感器、自動(dòng)駕駛、計(jì)算攝影、檢測(cè)、分割、識(shí)別、醫(yī)學(xué)影像、GAN、算法競(jìng)賽等微信群(以后會(huì)逐漸細(xì)分),請(qǐng)掃描下面微信號(hào)加群,備注:”昵稱(chēng)+學(xué)校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺(jué)SLAM“。請(qǐng)按照格式備注,否則不予通過(guò)。添加成功后會(huì)根據(jù)研究方向邀請(qǐng)進(jìn)入相關(guān)微信群。請(qǐng)勿在群內(nèi)發(fā)送廣告,否則會(huì)請(qǐng)出群,謝謝理解~

