


摘要:YOLO和SSD是實(shí)時(shí)目標(biāo)檢測算法中最常用的兩種算法,具有較高的準(zhǔn)確性,將二者應(yīng)用于無人機(jī)路徑規(guī)劃的識(shí)別和定位,為無人機(jī)自動(dòng)巡航提供行駛路線,可以幫助其安全、高效地完成任務(wù)。鑒于此,文章將分析YOLO與SSD算法在無人機(jī)自動(dòng)巡航中的應(yīng)用可行性,并提出相應(yīng)的應(yīng)用策略,為無人機(jī)實(shí)現(xiàn)更加安全、高效的路徑規(guī)劃和自動(dòng)巡航提供技術(shù)支持,同時(shí)為自動(dòng)化領(lǐng)域的研究提供學(xué)術(shù)參考幫助。
關(guān)鍵詞:Yolov3;SSD;無人機(jī);自動(dòng)化
doi:10.3969/J.ISSN.1672-7274.2024.01.028
中圖分類號:TP 3,V 279+.2? ? ? ? ? ? 文獻(xiàn)標(biāo)志碼:A? ? ? ? ? ? 文章編碼:1672-7274(2024)01-00-04
Analysis of the Feasibility and Application Strategy of UAV Automatic Cruise Based on Yolo and SSD Algorithms
ZHANG Kelai
(Zhejiang Polytechnic of Industry and Trade, Wenzhou 325000, China)
Abstract: Yolo and SSD are two of the most commonly used real-time object detection algorithms, both of which have high accuracy. Applying these two algorithms to unmanned aerial vehicle (UAV) path planning, recognition, and localization can provide driving routes for automatic cruise control, helping UAVs complete tasks safely and efficiently. Therefore, this article will analyze the feasibility of applying Yolo and SSD algorithms in UAV automatic cruise control, and propose corresponding application strategies. This provides technical support for UAVs to achieve safer and more efficient path planning and automatic cruise control, and also offers academic reference for research in the automation field.
Key words: Yolov3; SSD; UAV; automation
傳統(tǒng)無人機(jī)目標(biāo)檢測方法需要對圖像進(jìn)行遍歷,以檢測潛在的目標(biāo)。這個(gè)過程計(jì)算量較大,耗時(shí)較長,無法滿足實(shí)時(shí)性要求較高的場景,且對于小目標(biāo)的檢測效果不佳,容易受到光照、角度、遮擋等因素的影響,所以需要采用速度快、準(zhǔn)確度高、適應(yīng)性強(qiáng)的YOLO和SSD算法來為無人機(jī)自動(dòng)巡航提供路徑規(guī)劃的技術(shù)支持。故探究YOLO與SSD算法是否能實(shí)現(xiàn)更安全、更高效的無人機(jī)自動(dòng)巡航,同時(shí)制定合理的路徑規(guī)劃算法就存在重要的研究價(jià)值。
1? ?YOLO與SSD算法的計(jì)算原理
YOLO算法是通過深度神經(jīng)網(wǎng)絡(luò)一次性預(yù)測目標(biāo)的類別和位置。YOLO算法的特點(diǎn)是速度快、結(jié)構(gòu)簡單,適用于實(shí)時(shí)場景。在運(yùn)用YOLO算法時(shí),將圖像分為網(wǎng)格,每個(gè)網(wǎng)格負(fù)責(zé)預(yù)測一定數(shù)量的目標(biāo)。對于每個(gè)網(wǎng)格,YOLO算法通過全卷積神經(jīng)網(wǎng)絡(luò)預(yù)測目標(biāo)的類別和位置信息。在預(yù)測過程中,YOLO算法會(huì)生成一系列邊界框,并分別預(yù)測其中的目標(biāo)類別。最后,YOLOv3算法對預(yù)測的目標(biāo)進(jìn)行非極大值抑制(NMS)處理,保留最優(yōu)的目標(biāo)[1]。
SSD算法同樣也是通過深度神經(jīng)網(wǎng)絡(luò)預(yù)測目標(biāo)的類別和位置。與YOLO算法不同,SSD算法采用多尺度特征圖進(jìn)行檢測,可以適應(yīng)不同尺度的目標(biāo)。SSD算法在深度神經(jīng)網(wǎng)絡(luò)的頂部使用了多個(gè)特征圖,這些特征圖分別對應(yīng)不同的尺度。在每個(gè)特征圖上,SSD算法都會(huì)預(yù)測一定數(shù)量的目標(biāo)框。對于每個(gè)目標(biāo)框,SSD算法預(yù)測其類別和位置信息。最后,SSD算法對預(yù)測的目標(biāo)框進(jìn)行非極大值抑制(NMS)處理,保留最優(yōu)的目標(biāo)。
2? ?YOLO與SSD算法在無人機(jī)自動(dòng)巡航中的應(yīng)用可行性
在無人機(jī)自動(dòng)巡航領(lǐng)域,實(shí)時(shí)性和準(zhǔn)確性是衡量目標(biāo)檢測算法的重要指標(biāo)。YOLO和SSD算法作為兩種經(jīng)典的目標(biāo)檢測算法,各自具有一定的優(yōu)勢,也有一定的不足,具體見表1所示。
根據(jù)表1可見,YOLO和SSD算法在無人機(jī)自動(dòng)巡航領(lǐng)域具有各自的優(yōu)勢,根據(jù)不同應(yīng)用場景選擇合適的算法,可以提高無人機(jī)自動(dòng)巡航的性能。在實(shí)際應(yīng)用中,可以根據(jù)實(shí)際情況結(jié)合兩種算法的優(yōu)點(diǎn),研發(fā)出更加完善的目標(biāo)檢測系統(tǒng),為無人機(jī)自動(dòng)巡航提供更強(qiáng)大的支持[2]。
3? ?YOLO與SSD算法在無人機(jī)自動(dòng)巡航中的應(yīng)用策略
3.1 YOLO算法的應(yīng)用和改進(jìn)
YOLO已發(fā)布了四個(gè)版本,此處主要使用YOLOv3實(shí)現(xiàn)目標(biāo)檢測。對于一個(gè)320×320的圖像,YOLOv3可以在短短的22毫秒內(nèi)完成處理,不僅如此,在這22毫秒內(nèi),YOLOv3還能達(dá)到28.3mAP的分?jǐn)?shù)。在Tianx環(huán)境下,YOLOv3的檢測精度達(dá)到了57.9AP50,相比于YOLOv3,RetinaNet的精度只有57.5AP50,但需要的時(shí)間卻長得多,達(dá)到了198毫秒,如圖1所示。
YOLOv3不僅在處理速度上有明顯優(yōu)勢,而且在檢測精度上也毫不遜色。這得益于YOLOv3采用了多尺度預(yù)測和先驗(yàn)框回歸等技術(shù),有效提高了目標(biāo)檢測的準(zhǔn)確性和速度。
YOLOv3采用darknet-19作為特征提取網(wǎng)絡(luò),該網(wǎng)絡(luò)是一種深度卷積神經(jīng)網(wǎng)絡(luò),具有19個(gè)卷積層。在此基礎(chǔ)上,YOLOv3通過上采樣和兩個(gè)全連接層進(jìn)行預(yù)測,實(shí)現(xiàn)對目標(biāo)的分類和定位。盡管darknet-19在許多任務(wù)中表現(xiàn)良好,但也存在諸多缺陷,在YOLOv3中,錨盒坐標(biāo)偏移預(yù)測采用線性方法,導(dǎo)致預(yù)測結(jié)果不夠精確。考慮使用邏輯方法進(jìn)行預(yù)測,如將錨盒坐標(biāo)偏移量表示為邏輯回歸問題。通過引入熵?fù)p失函數(shù),使得模型在預(yù)測過程中更關(guān)注物體真實(shí)位置,從而提高預(yù)測精度。針對錨盒坐標(biāo)偏移預(yù)測,通過聚類分析方法來改進(jìn)。首先對訓(xùn)練數(shù)據(jù)進(jìn)行聚類,得到不同物體的中心點(diǎn)和尺度信息。然后在預(yù)測過程中,根據(jù)聚類結(jié)果為每個(gè)物體分配對應(yīng)的錨盒,從而提高預(yù)測準(zhǔn)確性。
YOLOv3中使用焦點(diǎn)損失(Focal Loss)的主要目的是解決類別不平衡問題。然而,焦點(diǎn)損失在一定程度上會(huì)降低模型對易分類樣本的敏感度。為了解決這一問題,將焦點(diǎn)損失與分類損失函數(shù)(如交叉熵?fù)p失)相結(jié)合,使模型在訓(xùn)練過程中既能關(guān)注困難樣本,又能保持對易分類樣本的敏感度。焦點(diǎn)損失函數(shù)中的參數(shù)α和β可以調(diào)整損失函數(shù)的權(quán)重。通過實(shí)驗(yàn)分析,適當(dāng)調(diào)整這兩個(gè)參數(shù),使得模型在解決類別不平衡問題的同時(shí),不會(huì)過于忽略易分類樣本。
針對YOLOv3的網(wǎng)絡(luò)結(jié)構(gòu),則通過引入更多殘差塊、跳躍連接等結(jié)構(gòu),以提高特征提取和傳遞能力,將殘差網(wǎng)絡(luò)(ResNet)引入到特征提取過程中。殘差網(wǎng)絡(luò)是一種深度神經(jīng)網(wǎng)絡(luò),通過引入跳躍連接(Skip Connection)來解決深度網(wǎng)絡(luò)訓(xùn)練過程中的梯度消失問題。跳躍連接使得梯度可以直接從后面的層傳遞到前面的層,從而使網(wǎng)絡(luò)更容易學(xué)習(xí)到淺層特征。在次數(shù)方面,選擇將darknet-19與殘差網(wǎng)絡(luò)相結(jié)合,形成darknet-53,即具有53個(gè)卷積層的深度神經(jīng)網(wǎng)絡(luò)。
如圖2所示,殘差塊是ResNet網(wǎng)絡(luò)中的一種創(chuàng)新設(shè)計(jì),其主要作用是提高特征提取和傳遞能力。通過將輸入特征與輸出特征相加,殘差塊能夠有效地緩解梯度消失問題,使模型更容易學(xué)習(xí)到深層特征,引入更多的殘差塊,提高模型在處理復(fù)雜場景下的性能。跳躍連接是ShuffleNet中的一種設(shè)計(jì),它能夠?qū)\層特征傳遞到深層,有助于提高模型性能。在YOLOv3中,增加跳躍連接,以便更好地利用低層次特征信息,這有助于提高模型在處理多尺度目標(biāo)時(shí)的性能。深度可分離卷積是MobileNet中的一種高效卷積方法,其主要作用是減少計(jì)算量,提高模型推理速度。通過將傳統(tǒng)卷積分解為深度卷積和逐點(diǎn)卷積,深度可分離卷積能夠在降低計(jì)算復(fù)雜度的同時(shí),保持模型性能。在YOLOv3中,替換部分卷積層為深度可分離卷積,以提高模型在目標(biāo)檢測任務(wù)中的表現(xiàn)。
3.2 SSD算法的應(yīng)用和改進(jìn)
在無人機(jī)自動(dòng)巡航任務(wù)中,實(shí)時(shí)性是衡量算法性能的重要指標(biāo)。為了滿足實(shí)際應(yīng)用需求,需要對SSD算法進(jìn)行優(yōu)化,提高其實(shí)時(shí)性能,此處采用減小卷積核尺寸、批歸一化、跳躍連接和調(diào)整網(wǎng)絡(luò)層數(shù)的組合方法。
減小卷積核尺寸可以降低計(jì)算復(fù)雜度,提高實(shí)時(shí)性能。在SSD算法中,可以將原始的卷積核尺寸(如3×3、5×5)更改為更小的尺寸(如1×1、2×2)。在設(shè)計(jì)中,函數(shù)“modify_conv_kernel_size”接收兩個(gè)參數(shù),其中“model”是深度學(xué)習(xí)模型對象,“new_kernel_size”是新的卷積核尺寸,例如,(1,1)表示將所有卷積層的卷積核尺寸從原來的尺寸(如3×3)更改為(1×1),函數(shù)的主要作用是遍歷模型中的所有層(通過“model.children()”獲取),檢查每個(gè)層的類型,如果層是“torch.nn.Conv2d”(即卷積層),則修改該層的卷積核尺寸,將新的卷積核尺寸應(yīng)用到卷積層的權(quán)重參數(shù)上,從而改變卷積層的計(jì)算結(jié)果,通過這種函數(shù)設(shè)計(jì),可以方便地在現(xiàn)有模型上修改卷積核尺寸,從而實(shí)現(xiàn)對模型性能的調(diào)整[3]。
批歸一化技術(shù)可以加速網(wǎng)絡(luò)收斂,提高實(shí)時(shí)性能。在訓(xùn)練過程中,通過對每個(gè)批次的數(shù)據(jù)進(jìn)行歸一化,可以減少梯度消失問題,加快收斂速度。從而改善卷積神經(jīng)網(wǎng)絡(luò)的性能,在設(shè)計(jì)中,函數(shù)“add_batch_norm”接收兩個(gè)參數(shù),“model”是深度學(xué)習(xí)模型對象,“num_features”是輸入特征圖的通道數(shù),在算法運(yùn)行時(shí),創(chuàng)建一個(gè)“torch.nn.BatchNorm2d”對象,表示批歸一化層。該層的輸入特征圖通道數(shù)為“num_features”,并使用批量歸一化方法對數(shù)據(jù)進(jìn)行歸一化,將創(chuàng)建的批歸一化層添加到模型中,可以通過“model.add_module(‘batch_norm, bn_layer)”實(shí)現(xiàn)。其中,‘batch_norm是模塊的名稱,‘bn_layer是批歸一化層對象。通過如此設(shè)計(jì),在現(xiàn)有模型中添加批歸一化層,即可實(shí)現(xiàn)對模型性能的優(yōu)化。
跳躍連接可以減少參數(shù)量,提高實(shí)時(shí)性能。在SSD算法中,可以將部分特征圖直接與輸出特征圖相加,形成跳躍連接,讓SSD算法在運(yùn)行中直接跳過某些層,使梯度能夠在這些層之間傳遞,從而加快訓(xùn)練速度、提高模型泛化能力,在設(shè)計(jì)中,函數(shù)“add_skip_connection”接收三個(gè)參數(shù),“model”是深度學(xué)習(xí)模型對象;“prev_layer”是前一層,通常是某個(gè)模塊的輸出;“next_layer”是后一層,通常是某個(gè)模塊的輸入[4]。在運(yùn)行中,從前一層(prev_layer)獲取輸出特征圖,將前一層輸出特征圖與模型當(dāng)前層的輸入特征圖進(jìn)行拼接,得到新的輸入特征圖。使用后一層(next_layer)處理新的輸入特征圖,并返回處理結(jié)果。通過這種設(shè)計(jì),即可在現(xiàn)有模型中添加跳躍連接,從而實(shí)現(xiàn)對模型性能的優(yōu)化。
調(diào)整網(wǎng)絡(luò)層數(shù)是在保證檢測性能的前提下,適當(dāng)減少網(wǎng)絡(luò)層數(shù),可以提高實(shí)時(shí)性能。可以根據(jù)實(shí)際需求,移除部分層數(shù)較深的模塊。在設(shè)計(jì)中,函數(shù)“remove_layer”用于從給定的PyTorch模型中移除指定的層。首先使用“l(fā)ist(model.children())”獲取模型的所有層。然后,遍歷層的列表,檢查每個(gè)層的類名是否與給定的層名稱相同。如果找到匹配的層,使用“l(fā)ayers.pop(i)”從列表中刪除該層。接著,使用“torch.nn.Sequential(*layers)”將剩余的層重新組合成一個(gè)序列。最后,返回修改后的模型。如此設(shè)計(jì)的目的是將給定層從模型中移除,從而實(shí)現(xiàn)網(wǎng)絡(luò)結(jié)構(gòu)的修改,以便在訓(xùn)練不同結(jié)構(gòu)的模型時(shí)根據(jù)需要移除卷積層或全連接層。
4? ?算法改進(jìn)的實(shí)踐成效
針對YOLOv3算法,通過邏輯方法預(yù)測錨盒坐標(biāo)偏移和聚類分析,將焦點(diǎn)損失與分類損失函數(shù)相結(jié)合,使模型在解決類別不平衡問題的同時(shí),不會(huì)過于忽略易分類樣本。引入殘差塊、跳躍連接和深度可分離卷積等結(jié)構(gòu),可以提高特征提取和傳遞能力,使模型在處理復(fù)雜場景和多尺度目標(biāo)時(shí)具有更好的性能。通過替換部分卷積層為深度可分離卷積,可以降低計(jì)算量,提高模型推理速度。經(jīng)過實(shí)驗(yàn),在特征提取、傳遞能力、處理速度和預(yù)測精度方面的提升如表2所示。
針對SSD算法,通過實(shí)驗(yàn)發(fā)現(xiàn),降低計(jì)算復(fù)雜度,可提高模型在實(shí)時(shí)性任務(wù)中的處理速度。批歸一化也可加速網(wǎng)絡(luò)收斂,提高訓(xùn)練速度,從而提高實(shí)時(shí)性能。同時(shí),減少算法參數(shù)量,提高訓(xùn)練速度,增強(qiáng)模型泛化能力,在保證檢測性能的前提下,適當(dāng)減少網(wǎng)絡(luò)層數(shù),可提高實(shí)時(shí)性能。
5? ?結(jié)束語
通過對YOLO與SSD算法的深入分析,探討了其在無人機(jī)自動(dòng)巡航領(lǐng)域的應(yīng)用可行性及策略。YOLO與SSD算法作為目前較為先進(jìn)的的目標(biāo)檢測算法,其在無人機(jī)自動(dòng)巡航中的應(yīng)用具有顯著的優(yōu)勢。然而,YOLO與SSD算法在無人機(jī)自動(dòng)巡航中的應(yīng)用也存在一定的挑戰(zhàn)和局限性。例如,在復(fù)雜環(huán)境下,如遮擋、光照變化等情況,算法的性能可能會(huì)受到影響。因此,針對這些挑戰(zhàn),可以通過不斷優(yōu)化和改進(jìn)算法,進(jìn)一步提升無人機(jī)自動(dòng)巡航的穩(wěn)定性和可靠性。
參考文獻(xiàn)
[1] 楊飛帆,李軍.面向自動(dòng)駕駛的YOLO目標(biāo)檢測算法研究綜述[J].汽車工程師,2023(11):1-11.
[2] 張上,李夢思,陳永麟,等.基于改進(jìn)YOLOv7的SAR圖像艦船目標(biāo)檢測算法[J/OL].電光與控制,2023(11):1-12.
[3] 謝灶芳.基于顯著性引導(dǎo)SSD算法的SAR圖像目標(biāo)檢測[J].地理空間信息,2023(08):5-8.
[4] 張立杰,周舒驊,李娜,等.基于改進(jìn)SSD卷積神經(jīng)網(wǎng)絡(luò)的蘋果定位與分級方法[J].農(nóng)業(yè)機(jī)械學(xué)報(bào),2023(06):223-232.
課題項(xiàng)目:浙江工貿(mào)職業(yè)技術(shù)學(xué)院2023年度學(xué)校訪工項(xiàng)目與調(diào)研項(xiàng)目,基于改進(jìn)的Yolo與SSD算法的無人機(jī)目標(biāo)探測與路徑規(guī)劃(FG202303)。
作者簡介:張恪萊(1997-),男,漢族,浙江溫州人,助教,碩士研究生,研究方向?yàn)榧皶r(shí)定位與地圖構(gòu)建。