劉栩辰
摘 要: 物體檢測是計算機(jī)視覺中的一個具有挑戰(zhàn)性的任務(wù),涉及到在圖像或視頻中定位和分類物體。其中一個最流行的基于深度學(xué)習(xí)的物體檢測方法是YOLO。YOLO已經(jīng)在各種物體檢測基準(zhǔn)測試中取得了最先進(jìn)的性能,并致力于通過神經(jīng)網(wǎng)絡(luò)在單次前向傳遞中檢測圖像中的對象的概念,使其成為可用的最快的對象檢測模型之一。介紹YOLO的發(fā)展、技術(shù)、架構(gòu)以及所利用的算法。
關(guān)鍵詞: YOLO 目標(biāo)檢測 CNN NMS算法 ResNet 劃分錨框技術(shù)
中圖分類號: TP391.41;TP183文獻(xiàn)標(biāo)識碼: A文章編號: 1679-3567(2024)06-0001-03
Target Object Detection
—Introduction to the YOLO Algorithm
LIU Xuchen
China Three Gorges University, Yichang, Hubei Province, 443002 China
Abstract: Object detection is a challenging task in computer vision that involves locating and classifying objects in images or videos. One of the most popular object detection methods based on deep learning is YOLO.YOLO has achieved state-of-the-art performance in the various benchmark tests of object detection, and it is working on the concept of detecting objects in an image in a single forward pass through a neural network, making it one of the available and fastest object detection models. The development, technology and architecture of YOLO and algorithms used in it will be introduced.
Key Words: YOLO; Object detection; CNN; NMS algorithm; ResNet; Delimiting anchor box technology
YOLO(You Only Look Once)是一種實(shí)時物體檢測系統(tǒng)[1],由單個神經(jīng)網(wǎng)絡(luò)組成,該網(wǎng)絡(luò)獲取整個輸入圖像并預(yù)測圖像中每個對象的邊界框和類別概率。與傳統(tǒng)目標(biāo)檢測算法不同,YOLO將目標(biāo)檢測問題視為一個回歸問題,是直接在圖像上預(yù)測邊界框和類別概率,從而實(shí)現(xiàn)端到端的目標(biāo)檢測的功能。YOLO使用全卷積神經(jīng)網(wǎng)絡(luò),通過單元格網(wǎng)格劃分輸入圖像,并利用錨框技術(shù)優(yōu)化邊界框預(yù)測。YOLO通過結(jié)合定位和分類損失函數(shù)進(jìn)行訓(xùn)練,從而實(shí)現(xiàn)快速且準(zhǔn)確的物體檢測,適用于需要實(shí)時處理的場景,如視頻分析和自動駕駛。
1.1 YOLO的發(fā)展
YOLO系列算法自2016年推出以來,經(jīng)歷了多次迭代和優(yōu)化,具體如下。
1.1.1 YOLO v2(2018)
(1)Darknet-19網(wǎng)絡(luò)架構(gòu):YOLO v2使用了一個名為Darknet-19的更深的網(wǎng)絡(luò)結(jié)構(gòu),來提高檢測精度。(2)引入了Anchor boxes:這是一種預(yù)定義的邊界框,用于預(yù)測物體的位置和大小,從而提高了檢測準(zhǔn)確率。(3)Batch normalization:批量歸一化技術(shù),使模型更易于訓(xùn)練和調(diào)整,同時減少了過擬合的風(fēng)險。(4)Multiscale training:通過對不同尺度的圖像進(jìn)行訓(xùn)練,使模型能夠更好地適應(yīng)不同尺度的目標(biāo)物體[2]。
1.1.2 YOLO v3
(1)使用殘差塊代替卷積層,可以有效地增加網(wǎng)絡(luò)的深度和復(fù)雜度,并減少梯度消失問題。(2)YOLO v3使用了三個不同的檢測尺度來處理不同尺度的目標(biāo)物體,從而提高了檢測的準(zhǔn)確率。(3)利用FPN結(jié)構(gòu)(Fea? ture Pyramid Network),可以有效地提取圖像的高級語義信息,從而提高檢測的準(zhǔn)確率和穩(wěn)定性。
1.1.3 YOLO v4
YOLO v4在YOLO v3的基礎(chǔ)上進(jìn)行了多項(xiàng)改進(jìn)。(1)使用了CSPDarknet架構(gòu),能夠減少網(wǎng)絡(luò)中的參數(shù)數(shù)量和計算量,并提高網(wǎng)絡(luò)的穩(wěn)定性和魯棒性。(2)加入Mosaic數(shù)據(jù)增強(qiáng),可以將多張圖像拼接成一張圖像進(jìn)行訓(xùn)練,可以增加數(shù)據(jù)的多樣性并提高模型的泛化能力。(3)采用SPP-block:SPP(Spatial Pyramid Pooling)塊可以對不同尺度的特征圖進(jìn)行池化操作,從而提高模型對不同尺度物體的檢測能力。(4)采用Path Aggrega? tion Network(PANet)結(jié)構(gòu),可以有效地將不同尺度的特征圖進(jìn)行融合,從而提高模型的檢測準(zhǔn)確率和穩(wěn)定性。YOLO v4在目標(biāo)檢測領(lǐng)域取得了很好的成果,其不僅綜合運(yùn)用了各種先進(jìn)的技術(shù)手段,還引入了PA? Net模塊,使網(wǎng)絡(luò)能夠跨多個尺度檢測目標(biāo),從而提高了目標(biāo)檢測的準(zhǔn)確性,并使模型更加穩(wěn)定和可靠。
1.1.4 YOLO v5
YOLO v5作為最新的版本之一,在v4的基礎(chǔ)上用了更加輕量級的網(wǎng)絡(luò)結(jié)構(gòu)。這使其在保持高性能的同時,具有更高的推理速度。并采用了一系列的模型優(yōu)化技巧,包括網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計、模型壓縮和剪枝等,以提高模型的速度和精度。
YOLO算法的發(fā)展受益于硬件進(jìn)步和數(shù)據(jù)集豐富,但也存在局限性,如對小物體檢測的不足。為解決這些問題,出現(xiàn)了Faster R-CNN、RetinaNet、CenterNet等改進(jìn)算法。同時,評價指標(biāo)的完善也推動了YOLO算法的持續(xù)創(chuàng)新。
除了技術(shù)創(chuàng)新外,YOLO系列算法的發(fā)展還受到了其他因素的影響,如硬件設(shè)備的進(jìn)步、數(shù)據(jù)集的豐富和算法評價指標(biāo)的不斷完善等[3]。硬件設(shè)備的進(jìn)步為YOLO系列算法的發(fā)展提供了更強(qiáng)的計算能力和數(shù)據(jù)處理能力,這得益于GPU性能的提高和更高效的網(wǎng)絡(luò)設(shè)計。此外,一些專門為深度學(xué)習(xí)任務(wù)設(shè)計的硬件加速器,如Nvidia的Tensor Core、Google的TPU等,也可以進(jìn)一步提高YOLO算法的計算效率和速度。
YOLO系列算法的發(fā)展得益于數(shù)據(jù)集的豐富和評價指標(biāo)的完善。隨著COCO、PASCAL VOC、ImageNet等數(shù)據(jù)集的公開,算法能夠?qū)W習(xí)更多樣化的物體和場景,提高其泛化能力。然而,YOLO在檢測小物體和密集物體方面存在局限,且在大場景下可能漏檢。為克服這些挑戰(zhàn),研究者提出了Faster R-CNN、RetinaNet、CenterNet等改進(jìn)算法,它們在保持高精度的同時,更有效地處理小物體、密集物體和大場景檢測。未來,YOLO算法需不斷優(yōu)化以適應(yīng)復(fù)雜場景。此外,評價指標(biāo)的改進(jìn),如從PASCAL VOC的平均精度(mAP)到COCO的mAP和召回率,促進(jìn)了算法的技術(shù)創(chuàng)新。
1.2 YOLO的演變趨勢
從YOLO到Y(jié)OLO v5,模型不斷進(jìn)行演變提升[4]。YOLO算法在目標(biāo)檢測領(lǐng)域,尤其是對小目標(biāo)的檢測上,通過不斷優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu)和損失函數(shù),取得了顯著進(jìn)步。其演變版本不僅提升了小目標(biāo)的檢測性能,還通過引入多任務(wù)學(xué)習(xí),增強(qiáng)了模型的多功能性,使其能夠同時完成檢測、分割、關(guān)鍵點(diǎn)檢測等任務(wù)。YOLO系列算法強(qiáng)調(diào)實(shí)時性和輕量性,因此在嵌入式設(shè)備和移動端應(yīng)用中得到了廣泛應(yīng)用。
YOLO v5等最新版本進(jìn)一步推動了自動化和應(yīng)用拓展,通過自動化工具簡化了模型訓(xùn)練和推理過程,并在智能交通、工業(yè)檢測、無人機(jī)、自動駕駛等多個領(lǐng)域得到應(yīng)用。這些進(jìn)展展示了YOLO算法在目標(biāo)檢測領(lǐng)域的持續(xù)創(chuàng)新和廣泛應(yīng)用前景。
2.1 注意力機(jī)制
YOLO算法通過將物體檢測視為回歸問題,實(shí)現(xiàn)快速且準(zhǔn)確的檢測。它通過聯(lián)合訓(xùn)練分類和定位,提升了檢測精度。注意力機(jī)制在YOLO中主要通過Squeezeand-Excitation (SE) block實(shí)現(xiàn),這是一種增強(qiáng)CNN特征表示的輕量級方法。
SE block的操作分為兩步:
(1)Squeeze:通過全局平均池化,將每個通道的特征壓縮成一個單一數(shù)值;
(2)Excitation:使用兩個全連接層處理Squeeze得到的向量,學(xué)習(xí)每個通道的重要性權(quán)重,并通過sig? moid激活函數(shù)限制權(quán)重在0到1之間。最后,將權(quán)重與原始特征圖相乘,得到強(qiáng)化的特征圖[5]。
SE block的引入可以提升YOLO的檢測性能,它通過強(qiáng)化特征表示幫助網(wǎng)絡(luò)更有效地識別和分類物體。由于其輕量級特性,SE block易于集成并可根據(jù)需求調(diào)整優(yōu)化。
2.2 CNN
YOLO算法的主要結(jié)構(gòu)是基于卷積神經(jīng)網(wǎng)絡(luò)(Con? volutional Neural Network,CNN),通過對輸入圖像進(jìn)行卷積和池化操作,提取特征信息,并用這些特征信息來預(yù)測目標(biāo)的位置和類別。
CNN是一種深度學(xué)習(xí)模型,主要用于圖像、音頻和文本等數(shù)據(jù)的特征提取和分類。它由多層卷積和池化層構(gòu)成,能夠自動從原始數(shù)據(jù)中學(xué)習(xí)特征。CNN的核心在于卷積操作,通過卷積核與輸入數(shù)據(jù)的點(diǎn)積提取局部特征,形成特征圖。池化操作則用于下采樣,減少特征圖尺寸,保留重要特征。YOLO算法利用預(yù)訓(xùn)練的CNN,如VGG、ResNet或Darknet,從圖像中提取特征。這些特征經(jīng)過多層卷積處理,提取更高級的特征,最終通過全連接層預(yù)測物體的邊界框和類別概率。
2.3 ResNet
YOLO算法采用殘差網(wǎng)絡(luò)(ResNet)作為骨干網(wǎng)絡(luò),以加快訓(xùn)練速度和提升檢測精度。ResNet是一種深度卷積神經(jīng)網(wǎng)絡(luò),它通過引入殘差塊(Residual Block)解決了傳統(tǒng)深度網(wǎng)絡(luò)中的梯度消失或爆炸問題。殘差塊包含兩個卷積層和一個跳躍連接,后者允許輸入特征直接傳遞到輸出,從而維持梯度流。這種設(shè)計使ResNet能夠構(gòu)建更深的網(wǎng)絡(luò)結(jié)構(gòu),學(xué)習(xí)更復(fù)雜的特征表示,而不受深度限制。
2.4 NMS算法
在YOLO算法中,非極大值抑制(Non-Maximum Suppression, NMS)用于去除多余的邊界框,以避免對同一目標(biāo)的重復(fù)檢測[6]。NMS通過選擇最有可能包含目標(biāo)的邊界框,并抑制其他與之重疊但置信度較低的邊界框,從而提高檢測的準(zhǔn)確性和效率。NMS的優(yōu)點(diǎn)在于有效減少冗余檢測,但需要調(diào)整閾值以適應(yīng)不同的應(yīng)用場景。此外,NMS可能不適用于密集場景,因?yàn)樗赡軙e誤地抑制掉一些小目標(biāo)的檢測。
2.5 劃分錨框技術(shù)
YOLO算法通過使用錨框(Anchor Box)來提升目標(biāo)檢測的精確度。錨框技術(shù)涉及為每個像素點(diǎn)分配多個具有預(yù)設(shè)大小和寬高比的邊界框,然后對這些框進(jìn)行分類和位置回歸,以識別和定位圖像中的目標(biāo)對象[7]。
錨框的實(shí)現(xiàn)基于輸入圖像生成的特征圖,即卷積神經(jīng)網(wǎng)絡(luò)處理后的高級特征圖像。在特征圖上,每個像素點(diǎn)周圍會生成一系列錨框,預(yù)測模型對這些錨框進(jìn)行分析,以確定是否包含目標(biāo)對象并精確預(yù)測其位置。
錨框的優(yōu)點(diǎn)包括:能夠適應(yīng)目標(biāo)對象在不同尺寸和形狀下的變化,提高檢測準(zhǔn)確性;減少計算量和內(nèi)存消耗,因?yàn)橹粚σ唤M錨框而非整個圖像進(jìn)行處理。
然而,錨框方法也有一些局限性:需要預(yù)先定義錨框的尺寸和寬高比,可能需要針對不同場景進(jìn)行調(diào)整;如果錨框數(shù)量過多或尺寸設(shè)置不當(dāng),可能會導(dǎo)致效率降低。
YOLO算法作為單階段目標(biāo)檢測技術(shù),在檢測速度、類別多樣性和精度方面超越了傳統(tǒng)算法,如Detec? torNet、OverFeat、DeepMultiBox。其發(fā)展展示了技術(shù)創(chuàng)新的軌跡,融合了全卷積網(wǎng)絡(luò)、批量歸一化、殘差學(xué)習(xí)、FPN等先進(jìn)技術(shù),顯著提升了性能。YOLO的開源特性為研究社區(qū)提供了豐富的資源,推動了目標(biāo)檢測技術(shù)的進(jìn)步。隨著技術(shù)的迭代、硬件的發(fā)展、數(shù)據(jù)集的擴(kuò)展和評價標(biāo)準(zhǔn)的精細(xì)化,YOLO系列算法在計算機(jī)視覺領(lǐng)域展現(xiàn)出廣泛的應(yīng)用潛力和高實(shí)用價值。YOLO算法通過不斷的創(chuàng)新和實(shí)踐,已對計算機(jī)視覺領(lǐng)域做出了顯著貢獻(xiàn),在未來的研究中,YOLO算法還將繼續(xù)發(fā)揮重要作用,為目標(biāo)檢測任務(wù)帶來更多的創(chuàng)新和進(jìn)步。
參考文獻(xiàn)
[1] STEIN T,PEELEN M V.Object detection in natural scenes: Independent effects of spatial and categorybased attention[J].Attention,Perception,& Psychophys? ics,2017,79(3):738-752.
[2] JIANG P Y, ERGU D J, LIU F Y,et al.A Review of Yolo algorithm developments[J]. Procedia computer science,2022,199:1066-1073.
[3] ZHENG C.Stack-YOLO:A Friendly-Hardware RealTime Object Detection Algorithm[J]. IEEE Access, 2023,11:62522-62534.
[4] THUAN D.Evolution of Yolo algorithm and Yolov5: The State-of-the-Art object detention algorithm[D]. Finland:Oulun Ammattikorkeakoulu,2021.
[5] LEE Y H,KIM Y.Comparison of CNN and YOLO for Object Detection[J]. Journal of the semiconductor & display technology,2020,19(1):85-92.
[6] JEON D H,KIM T S,KIM J S.A Method for Reducing False Negative Rate in Non-Maximum Suppression of YOLO Using Bounding Box Density[J].Journal of Mul? timedia Information System, 2023,10(4):293-300.
[7] ORESKI G.YOLO* C:Adding context improves YOLO performance[J].Neurocomputing,2023,555:126655.