劉栩辰
摘 要: 物體檢測(cè)是計(jì)算機(jī)視覺(jué)中的一個(gè)具有挑戰(zhàn)性的任務(wù),涉及到在圖像或視頻中定位和分類物體。其中一個(gè)最流行的基于深度學(xué)習(xí)的物體檢測(cè)方法是YOLO。YOLO已經(jīng)在各種物體檢測(cè)基準(zhǔn)測(cè)試中取得了最先進(jìn)的性能,并致力于通過(guò)神經(jīng)網(wǎng)絡(luò)在單次前向傳遞中檢測(cè)圖像中的對(duì)象的概念,使其成為可用的最快的對(duì)象檢測(cè)模型之一。介紹YOLO的發(fā)展、技術(shù)、架構(gòu)以及所利用的算法。
關(guān)鍵詞: YOLO 目標(biāo)檢測(cè) CNN NMS算法 ResNet 劃分錨框技術(shù)
中圖分類號(hào): TP391.41;TP183文獻(xiàn)標(biāo)識(shí)碼: A文章編號(hào): 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í)時(shí)物體檢測(cè)系統(tǒng)[1],由單個(gè)神經(jīng)網(wǎng)絡(luò)組成,該網(wǎng)絡(luò)獲取整個(gè)輸入圖像并預(yù)測(cè)圖像中每個(gè)對(duì)象的邊界框和類別概率。與傳統(tǒng)目標(biāo)檢測(cè)算法不同,YOLO將目標(biāo)檢測(cè)問(wèn)題視為一個(gè)回歸問(wèn)題,是直接在圖像上預(yù)測(cè)邊界框和類別概率,從而實(shí)現(xiàn)端到端的目標(biāo)檢測(cè)的功能。YOLO使用全卷積神經(jīng)網(wǎng)絡(luò),通過(guò)單元格網(wǎng)格劃分輸入圖像,并利用錨框技術(shù)優(yōu)化邊界框預(yù)測(cè)。YOLO通過(guò)結(jié)合定位和分類損失函數(shù)進(jìn)行訓(xùn)練,從而實(shí)現(xiàn)快速且準(zhǔn)確的物體檢測(cè),適用于需要實(shí)時(shí)處理的場(chǎng)景,如視頻分析和自動(dòng)駕駛。
1.1 YOLO的發(fā)展
YOLO系列算法自2016年推出以來(lái),經(jīng)歷了多次迭代和優(yōu)化,具體如下。
1.1.1 YOLO v2(2018)
(1)Darknet-19網(wǎng)絡(luò)架構(gòu):YOLO v2使用了一個(gè)名為Darknet-19的更深的網(wǎng)絡(luò)結(jié)構(gòu),來(lái)提高檢測(cè)精度。(2)引入了Anchor boxes:這是一種預(yù)定義的邊界框,用于預(yù)測(cè)物體的位置和大小,從而提高了檢測(cè)準(zhǔn)確率。(3)Batch normalization:批量歸一化技術(shù),使模型更易于訓(xùn)練和調(diào)整,同時(shí)減少了過(guò)擬合的風(fēng)險(xiǎn)。(4)Multiscale training:通過(guò)對(duì)不同尺度的圖像進(jìn)行訓(xùn)練,使模型能夠更好地適應(yīng)不同尺度的目標(biāo)物體[2]。
1.1.2 YOLO v3
(1)使用殘差塊代替卷積層,可以有效地增加網(wǎng)絡(luò)的深度和復(fù)雜度,并減少梯度消失問(wèn)題。(2)YOLO v3使用了三個(gè)不同的檢測(cè)尺度來(lái)處理不同尺度的目標(biāo)物體,從而提高了檢測(cè)的準(zhǔn)確率。(3)利用FPN結(jié)構(gòu)(Fea? ture Pyramid Network),可以有效地提取圖像的高級(jí)語(yǔ)義信息,從而提高檢測(cè)的準(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ù)量和計(jì)算量,并提高網(wǎng)絡(luò)的穩(wěn)定性和魯棒性。(2)加入Mosaic數(shù)據(jù)增強(qiáng),可以將多張圖像拼接成一張圖像進(jìn)行訓(xùn)練,可以增加數(shù)據(jù)的多樣性并提高模型的泛化能力。(3)采用SPP-block:SPP(Spatial Pyramid Pooling)塊可以對(duì)不同尺度的特征圖進(jìn)行池化操作,從而提高模型對(duì)不同尺度物體的檢測(cè)能力。(4)采用Path Aggrega? tion Network(PANet)結(jié)構(gòu),可以有效地將不同尺度的特征圖進(jìn)行融合,從而提高模型的檢測(cè)準(zhǔn)確率和穩(wěn)定性。YOLO v4在目標(biāo)檢測(cè)領(lǐng)域取得了很好的成果,其不僅綜合運(yùn)用了各種先進(jìn)的技術(shù)手段,還引入了PA? Net模塊,使網(wǎng)絡(luò)能夠跨多個(gè)尺度檢測(cè)目標(biāo),從而提高了目標(biāo)檢測(cè)的準(zhǔn)確性,并使模型更加穩(wěn)定和可靠。
1.1.4 YOLO v5
YOLO v5作為最新的版本之一,在v4的基礎(chǔ)上用了更加輕量級(jí)的網(wǎng)絡(luò)結(jié)構(gòu)。這使其在保持高性能的同時(shí),具有更高的推理速度。并采用了一系列的模型優(yōu)化技巧,包括網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)、模型壓縮和剪枝等,以提高模型的速度和精度。
YOLO算法的發(fā)展受益于硬件進(jìn)步和數(shù)據(jù)集豐富,但也存在局限性,如對(duì)小物體檢測(cè)的不足。為解決這些問(wèn)題,出現(xiàn)了Faster R-CNN、RetinaNet、CenterNet等改進(jìn)算法。同時(shí),評(píng)價(jià)指標(biāo)的完善也推動(dòng)了YOLO算法的持續(xù)創(chuàng)新。
除了技術(shù)創(chuàng)新外,YOLO系列算法的發(fā)展還受到了其他因素的影響,如硬件設(shè)備的進(jìn)步、數(shù)據(jù)集的豐富和算法評(píng)價(jià)指標(biāo)的不斷完善等[3]。硬件設(shè)備的進(jìn)步為YOLO系列算法的發(fā)展提供了更強(qiáng)的計(jì)算能力和數(shù)據(jù)處理能力,這得益于GPU性能的提高和更高效的網(wǎng)絡(luò)設(shè)計(jì)。此外,一些專門為深度學(xué)習(xí)任務(wù)設(shè)計(jì)的硬件加速器,如Nvidia的Tensor Core、Google的TPU等,也可以進(jìn)一步提高YOLO算法的計(jì)算效率和速度。
YOLO系列算法的發(fā)展得益于數(shù)據(jù)集的豐富和評(píng)價(jià)指標(biāo)的完善。隨著COCO、PASCAL VOC、ImageNet等數(shù)據(jù)集的公開(kāi),算法能夠?qū)W習(xí)更多樣化的物體和場(chǎng)景,提高其泛化能力。然而,YOLO在檢測(cè)小物體和密集物體方面存在局限,且在大場(chǎng)景下可能漏檢。為克服這些挑戰(zhàn),研究者提出了Faster R-CNN、RetinaNet、CenterNet等改進(jìn)算法,它們?cè)诒3指呔鹊耐瑫r(shí),更有效地處理小物體、密集物體和大場(chǎng)景檢測(cè)。未來(lái),YOLO算法需不斷優(yōu)化以適應(yīng)復(fù)雜場(chǎng)景。此外,評(píng)價(jià)指標(biāo)的改進(jìn),如從PASCAL VOC的平均精度(mAP)到COCO的mAP和召回率,促進(jìn)了算法的技術(shù)創(chuàng)新。
1.2 YOLO的演變趨勢(shì)
從YOLO到Y(jié)OLO v5,模型不斷進(jìn)行演變提升[4]。YOLO算法在目標(biāo)檢測(cè)領(lǐng)域,尤其是對(duì)小目標(biāo)的檢測(cè)上,通過(guò)不斷優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu)和損失函數(shù),取得了顯著進(jìn)步。其演變版本不僅提升了小目標(biāo)的檢測(cè)性能,還通過(guò)引入多任務(wù)學(xué)習(xí),增強(qiáng)了模型的多功能性,使其能夠同時(shí)完成檢測(cè)、分割、關(guān)鍵點(diǎn)檢測(cè)等任務(wù)。YOLO系列算法強(qiáng)調(diào)實(shí)時(shí)性和輕量性,因此在嵌入式設(shè)備和移動(dòng)端應(yīng)用中得到了廣泛應(yīng)用。
YOLO v5等最新版本進(jìn)一步推動(dòng)了自動(dòng)化和應(yīng)用拓展,通過(guò)自動(dòng)化工具簡(jiǎn)化了模型訓(xùn)練和推理過(guò)程,并在智能交通、工業(yè)檢測(cè)、無(wú)人機(jī)、自動(dòng)駕駛等多個(gè)領(lǐng)域得到應(yīng)用。這些進(jìn)展展示了YOLO算法在目標(biāo)檢測(cè)領(lǐng)域的持續(xù)創(chuàng)新和廣泛應(yīng)用前景。
2.1 注意力機(jī)制
YOLO算法通過(guò)將物體檢測(cè)視為回歸問(wèn)題,實(shí)現(xiàn)快速且準(zhǔn)確的檢測(cè)。它通過(guò)聯(lián)合訓(xùn)練分類和定位,提升了檢測(cè)精度。注意力機(jī)制在YOLO中主要通過(guò)Squeezeand-Excitation (SE) block實(shí)現(xiàn),這是一種增強(qiáng)CNN特征表示的輕量級(jí)方法。
SE block的操作分為兩步:
(1)Squeeze:通過(guò)全局平均池化,將每個(gè)通道的特征壓縮成一個(gè)單一數(shù)值;
(2)Excitation:使用兩個(gè)全連接層處理Squeeze得到的向量,學(xué)習(xí)每個(gè)通道的重要性權(quán)重,并通過(guò)sig? moid激活函數(shù)限制權(quán)重在0到1之間。最后,將權(quán)重與原始特征圖相乘,得到強(qiáng)化的特征圖[5]。
SE block的引入可以提升YOLO的檢測(cè)性能,它通過(guò)強(qiáng)化特征表示幫助網(wǎng)絡(luò)更有效地識(shí)別和分類物體。由于其輕量級(jí)特性,SE block易于集成并可根據(jù)需求調(diào)整優(yōu)化。
2.2 CNN
YOLO算法的主要結(jié)構(gòu)是基于卷積神經(jīng)網(wǎng)絡(luò)(Con? volutional Neural Network,CNN),通過(guò)對(duì)輸入圖像進(jìn)行卷積和池化操作,提取特征信息,并用這些特征信息來(lái)預(yù)測(cè)目標(biāo)的位置和類別。
CNN是一種深度學(xué)習(xí)模型,主要用于圖像、音頻和文本等數(shù)據(jù)的特征提取和分類。它由多層卷積和池化層構(gòu)成,能夠自動(dòng)從原始數(shù)據(jù)中學(xué)習(xí)特征。CNN的核心在于卷積操作,通過(guò)卷積核與輸入數(shù)據(jù)的點(diǎn)積提取局部特征,形成特征圖。池化操作則用于下采樣,減少特征圖尺寸,保留重要特征。YOLO算法利用預(yù)訓(xùn)練的CNN,如VGG、ResNet或Darknet,從圖像中提取特征。這些特征經(jīng)過(guò)多層卷積處理,提取更高級(jí)的特征,最終通過(guò)全連接層預(yù)測(cè)物體的邊界框和類別概率。
2.3 ResNet
YOLO算法采用殘差網(wǎng)絡(luò)(ResNet)作為骨干網(wǎng)絡(luò),以加快訓(xùn)練速度和提升檢測(cè)精度。ResNet是一種深度卷積神經(jīng)網(wǎng)絡(luò),它通過(guò)引入殘差塊(Residual Block)解決了傳統(tǒng)深度網(wǎng)絡(luò)中的梯度消失或爆炸問(wèn)題。殘差塊包含兩個(gè)卷積層和一個(gè)跳躍連接,后者允許輸入特征直接傳遞到輸出,從而維持梯度流。這種設(shè)計(jì)使ResNet能夠構(gòu)建更深的網(wǎng)絡(luò)結(jié)構(gòu),學(xué)習(xí)更復(fù)雜的特征表示,而不受深度限制。
2.4 NMS算法
在YOLO算法中,非極大值抑制(Non-Maximum Suppression, NMS)用于去除多余的邊界框,以避免對(duì)同一目標(biāo)的重復(fù)檢測(cè)[6]。NMS通過(guò)選擇最有可能包含目標(biāo)的邊界框,并抑制其他與之重疊但置信度較低的邊界框,從而提高檢測(cè)的準(zhǔn)確性和效率。NMS的優(yōu)點(diǎn)在于有效減少冗余檢測(cè),但需要調(diào)整閾值以適應(yīng)不同的應(yīng)用場(chǎng)景。此外,NMS可能不適用于密集場(chǎng)景,因?yàn)樗赡軙?huì)錯(cuò)誤地抑制掉一些小目標(biāo)的檢測(cè)。
2.5 劃分錨框技術(shù)
YOLO算法通過(guò)使用錨框(Anchor Box)來(lái)提升目標(biāo)檢測(cè)的精確度。錨框技術(shù)涉及為每個(gè)像素點(diǎn)分配多個(gè)具有預(yù)設(shè)大小和寬高比的邊界框,然后對(duì)這些框進(jìn)行分類和位置回歸,以識(shí)別和定位圖像中的目標(biāo)對(duì)象[7]。
錨框的實(shí)現(xiàn)基于輸入圖像生成的特征圖,即卷積神經(jīng)網(wǎng)絡(luò)處理后的高級(jí)特征圖像。在特征圖上,每個(gè)像素點(diǎn)周圍會(huì)生成一系列錨框,預(yù)測(cè)模型對(duì)這些錨框進(jìn)行分析,以確定是否包含目標(biāo)對(duì)象并精確預(yù)測(cè)其位置。
錨框的優(yōu)點(diǎn)包括:能夠適應(yīng)目標(biāo)對(duì)象在不同尺寸和形狀下的變化,提高檢測(cè)準(zhǔn)確性;減少計(jì)算量和內(nèi)存消耗,因?yàn)橹粚?duì)一組錨框而非整個(gè)圖像進(jìn)行處理。
然而,錨框方法也有一些局限性:需要預(yù)先定義錨框的尺寸和寬高比,可能需要針對(duì)不同場(chǎng)景進(jìn)行調(diào)整;如果錨框數(shù)量過(guò)多或尺寸設(shè)置不當(dāng),可能會(huì)導(dǎo)致效率降低。
YOLO算法作為單階段目標(biāo)檢測(cè)技術(shù),在檢測(cè)速度、類別多樣性和精度方面超越了傳統(tǒng)算法,如Detec? torNet、OverFeat、DeepMultiBox。其發(fā)展展示了技術(shù)創(chuàng)新的軌跡,融合了全卷積網(wǎng)絡(luò)、批量歸一化、殘差學(xué)習(xí)、FPN等先進(jìn)技術(shù),顯著提升了性能。YOLO的開(kāi)源特性為研究社區(qū)提供了豐富的資源,推動(dòng)了目標(biāo)檢測(cè)技術(shù)的進(jìn)步。隨著技術(shù)的迭代、硬件的發(fā)展、數(shù)據(jù)集的擴(kuò)展和評(píng)價(jià)標(biāo)準(zhǔn)的精細(xì)化,YOLO系列算法在計(jì)算機(jī)視覺(jué)領(lǐng)域展現(xiàn)出廣泛的應(yīng)用潛力和高實(shí)用價(jià)值。YOLO算法通過(guò)不斷的創(chuàng)新和實(shí)踐,已對(duì)計(jì)算機(jī)視覺(jué)領(lǐng)域做出了顯著貢獻(xiàn),在未來(lái)的研究中,YOLO算法還將繼續(xù)發(fā)揮重要作用,為目標(biāo)檢測(cè)任務(wù)帶來(lái)更多的創(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.