


摘要:YOLO和SSD是實時目標檢測算法中最常用的兩種算法,具有較高的準確性,將二者應用于無人機路徑規劃的識別和定位,為無人機自動巡航提供行駛路線,可以幫助其安全、高效地完成任務。鑒于此,文章將分析YOLO與SSD算法在無人機自動巡航中的應用可行性,并提出相應的應用策略,為無人機實現更加安全、高效的路徑規劃和自動巡航提供技術支持,同時為自動化領域的研究提供學術參考幫助。
關鍵詞:Yolov3;SSD;無人機;自動化
doi:10.3969/J.ISSN.1672-7274.2024.01.028
中圖分類號:TP 3,V 279+.2? ? ? ? ? ? 文獻標志碼: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
傳統無人機目標檢測方法需要對圖像進行遍歷,以檢測潛在的目標。這個過程計算量較大,耗時較長,無法滿足實時性要求較高的場景,且對于小目標的檢測效果不佳,容易受到光照、角度、遮擋等因素的影響,所以需要采用速度快、準確度高、適應性強的YOLO和SSD算法來為無人機自動巡航提供路徑規劃的技術支持。故探究YOLO與SSD算法是否能實現更安全、更高效的無人機自動巡航,同時制定合理的路徑規劃算法就存在重要的研究價值。
1? ?YOLO與SSD算法的計算原理
YOLO算法是通過深度神經網絡一次性預測目標的類別和位置。YOLO算法的特點是速度快、結構簡單,適用于實時場景。在運用YOLO算法時,將圖像分為網格,每個網格負責預測一定數量的目標。對于每個網格,YOLO算法通過全卷積神經網絡預測目標的類別和位置信息。在預測過程中,YOLO算法會生成一系列邊界框,并分別預測其中的目標類別。最后,YOLOv3算法對預測的目標進行非極大值抑制(NMS)處理,保留最優的目標[1]。
SSD算法同樣也是通過深度神經網絡預測目標的類別和位置。與YOLO算法不同,SSD算法采用多尺度特征圖進行檢測,可以適應不同尺度的目標。SSD算法在深度神經網絡的頂部使用了多個特征圖,這些特征圖分別對應不同的尺度。在每個特征圖上,SSD算法都會預測一定數量的目標框。對于每個目標框,SSD算法預測其類別和位置信息。最后,SSD算法對預測的目標框進行非極大值抑制(NMS)處理,保留最優的目標。
2? ?YOLO與SSD算法在無人機自動巡航中的應用可行性
在無人機自動巡航領域,實時性和準確性是衡量目標檢測算法的重要指標。YOLO和SSD算法作為兩種經典的目標檢測算法,各自具有一定的優勢,也有一定的不足,具體見表1所示。
根據表1可見,YOLO和SSD算法在無人機自動巡航領域具有各自的優勢,根據不同應用場景選擇合適的算法,可以提高無人機自動巡航的性能。在實際應用中,可以根據實際情況結合兩種算法的優點,研發出更加完善的目標檢測系統,為無人機自動巡航提供更強大的支持[2]。
3? ?YOLO與SSD算法在無人機自動巡航中的應用策略
3.1 YOLO算法的應用和改進
YOLO已發布了四個版本,此處主要使用YOLOv3實現目標檢測。對于一個320×320的圖像,YOLOv3可以在短短的22毫秒內完成處理,不僅如此,在這22毫秒內,YOLOv3還能達到28.3mAP的分數。在Tianx環境下,YOLOv3的檢測精度達到了57.9AP50,相比于YOLOv3,RetinaNet的精度只有57.5AP50,但需要的時間卻長得多,達到了198毫秒,如圖1所示。
YOLOv3不僅在處理速度上有明顯優勢,而且在檢測精度上也毫不遜色。這得益于YOLOv3采用了多尺度預測和先驗框回歸等技術,有效提高了目標檢測的準確性和速度。
YOLOv3采用darknet-19作為特征提取網絡,該網絡是一種深度卷積神經網絡,具有19個卷積層。在此基礎上,YOLOv3通過上采樣和兩個全連接層進行預測,實現對目標的分類和定位。盡管darknet-19在許多任務中表現良好,但也存在諸多缺陷,在YOLOv3中,錨盒坐標偏移預測采用線性方法,導致預測結果不夠精確。考慮使用邏輯方法進行預測,如將錨盒坐標偏移量表示為邏輯回歸問題。通過引入熵損失函數,使得模型在預測過程中更關注物體真實位置,從而提高預測精度。針對錨盒坐標偏移預測,通過聚類分析方法來改進。首先對訓練數據進行聚類,得到不同物體的中心點和尺度信息。然后在預測過程中,根據聚類結果為每個物體分配對應的錨盒,從而提高預測準確性。
YOLOv3中使用焦點損失(Focal Loss)的主要目的是解決類別不平衡問題。然而,焦點損失在一定程度上會降低模型對易分類樣本的敏感度。為了解決這一問題,將焦點損失與分類損失函數(如交叉熵損失)相結合,使模型在訓練過程中既能關注困難樣本,又能保持對易分類樣本的敏感度。焦點損失函數中的參數α和β可以調整損失函數的權重。通過實驗分析,適當調整這兩個參數,使得模型在解決類別不平衡問題的同時,不會過于忽略易分類樣本。
針對YOLOv3的網絡結構,則通過引入更多殘差塊、跳躍連接等結構,以提高特征提取和傳遞能力,將殘差網絡(ResNet)引入到特征提取過程中。殘差網絡是一種深度神經網絡,通過引入跳躍連接(Skip Connection)來解決深度網絡訓練過程中的梯度消失問題。跳躍連接使得梯度可以直接從后面的層傳遞到前面的層,從而使網絡更容易學習到淺層特征。在次數方面,選擇將darknet-19與殘差網絡相結合,形成darknet-53,即具有53個卷積層的深度神經網絡。
如圖2所示,殘差塊是ResNet網絡中的一種創新設計,其主要作用是提高特征提取和傳遞能力。通過將輸入特征與輸出特征相加,殘差塊能夠有效地緩解梯度消失問題,使模型更容易學習到深層特征,引入更多的殘差塊,提高模型在處理復雜場景下的性能。跳躍連接是ShuffleNet中的一種設計,它能夠將淺層特征傳遞到深層,有助于提高模型性能。在YOLOv3中,增加跳躍連接,以便更好地利用低層次特征信息,這有助于提高模型在處理多尺度目標時的性能。深度可分離卷積是MobileNet中的一種高效卷積方法,其主要作用是減少計算量,提高模型推理速度。通過將傳統卷積分解為深度卷積和逐點卷積,深度可分離卷積能夠在降低計算復雜度的同時,保持模型性能。在YOLOv3中,替換部分卷積層為深度可分離卷積,以提高模型在目標檢測任務中的表現。
3.2 SSD算法的應用和改進
在無人機自動巡航任務中,實時性是衡量算法性能的重要指標。為了滿足實際應用需求,需要對SSD算法進行優化,提高其實時性能,此處采用減小卷積核尺寸、批歸一化、跳躍連接和調整網絡層數的組合方法。
減小卷積核尺寸可以降低計算復雜度,提高實時性能。在SSD算法中,可以將原始的卷積核尺寸(如3×3、5×5)更改為更小的尺寸(如1×1、2×2)。在設計中,函數“modify_conv_kernel_size”接收兩個參數,其中“model”是深度學習模型對象,“new_kernel_size”是新的卷積核尺寸,例如,(1,1)表示將所有卷積層的卷積核尺寸從原來的尺寸(如3×3)更改為(1×1),函數的主要作用是遍歷模型中的所有層(通過“model.children()”獲取),檢查每個層的類型,如果層是“torch.nn.Conv2d”(即卷積層),則修改該層的卷積核尺寸,將新的卷積核尺寸應用到卷積層的權重參數上,從而改變卷積層的計算結果,通過這種函數設計,可以方便地在現有模型上修改卷積核尺寸,從而實現對模型性能的調整[3]。
批歸一化技術可以加速網絡收斂,提高實時性能。在訓練過程中,通過對每個批次的數據進行歸一化,可以減少梯度消失問題,加快收斂速度。從而改善卷積神經網絡的性能,在設計中,函數“add_batch_norm”接收兩個參數,“model”是深度學習模型對象,“num_features”是輸入特征圖的通道數,在算法運行時,創建一個“torch.nn.BatchNorm2d”對象,表示批歸一化層。該層的輸入特征圖通道數為“num_features”,并使用批量歸一化方法對數據進行歸一化,將創建的批歸一化層添加到模型中,可以通過“model.add_module(‘batch_norm, bn_layer)”實現。其中,‘batch_norm是模塊的名稱,‘bn_layer是批歸一化層對象。通過如此設計,在現有模型中添加批歸一化層,即可實現對模型性能的優化。
跳躍連接可以減少參數量,提高實時性能。在SSD算法中,可以將部分特征圖直接與輸出特征圖相加,形成跳躍連接,讓SSD算法在運行中直接跳過某些層,使梯度能夠在這些層之間傳遞,從而加快訓練速度、提高模型泛化能力,在設計中,函數“add_skip_connection”接收三個參數,“model”是深度學習模型對象;“prev_layer”是前一層,通常是某個模塊的輸出;“next_layer”是后一層,通常是某個模塊的輸入[4]。在運行中,從前一層(prev_layer)獲取輸出特征圖,將前一層輸出特征圖與模型當前層的輸入特征圖進行拼接,得到新的輸入特征圖。使用后一層(next_layer)處理新的輸入特征圖,并返回處理結果。通過這種設計,即可在現有模型中添加跳躍連接,從而實現對模型性能的優化。
調整網絡層數是在保證檢測性能的前提下,適當減少網絡層數,可以提高實時性能。可以根據實際需求,移除部分層數較深的模塊。在設計中,函數“remove_layer”用于從給定的PyTorch模型中移除指定的層。首先使用“list(model.children())”獲取模型的所有層。然后,遍歷層的列表,檢查每個層的類名是否與給定的層名稱相同。如果找到匹配的層,使用“layers.pop(i)”從列表中刪除該層。接著,使用“torch.nn.Sequential(*layers)”將剩余的層重新組合成一個序列。最后,返回修改后的模型。如此設計的目的是將給定層從模型中移除,從而實現網絡結構的修改,以便在訓練不同結構的模型時根據需要移除卷積層或全連接層。
4? ?算法改進的實踐成效
針對YOLOv3算法,通過邏輯方法預測錨盒坐標偏移和聚類分析,將焦點損失與分類損失函數相結合,使模型在解決類別不平衡問題的同時,不會過于忽略易分類樣本。引入殘差塊、跳躍連接和深度可分離卷積等結構,可以提高特征提取和傳遞能力,使模型在處理復雜場景和多尺度目標時具有更好的性能。通過替換部分卷積層為深度可分離卷積,可以降低計算量,提高模型推理速度。經過實驗,在特征提取、傳遞能力、處理速度和預測精度方面的提升如表2所示。
針對SSD算法,通過實驗發現,降低計算復雜度,可提高模型在實時性任務中的處理速度。批歸一化也可加速網絡收斂,提高訓練速度,從而提高實時性能。同時,減少算法參數量,提高訓練速度,增強模型泛化能力,在保證檢測性能的前提下,適當減少網絡層數,可提高實時性能。
5? ?結束語
通過對YOLO與SSD算法的深入分析,探討了其在無人機自動巡航領域的應用可行性及策略。YOLO與SSD算法作為目前較為先進的的目標檢測算法,其在無人機自動巡航中的應用具有顯著的優勢。然而,YOLO與SSD算法在無人機自動巡航中的應用也存在一定的挑戰和局限性。例如,在復雜環境下,如遮擋、光照變化等情況,算法的性能可能會受到影響。因此,針對這些挑戰,可以通過不斷優化和改進算法,進一步提升無人機自動巡航的穩定性和可靠性。
參考文獻
[1] 楊飛帆,李軍.面向自動駕駛的YOLO目標檢測算法研究綜述[J].汽車工程師,2023(11):1-11.
[2] 張上,李夢思,陳永麟,等.基于改進YOLOv7的SAR圖像艦船目標檢測算法[J/OL].電光與控制,2023(11):1-12.
[3] 謝灶芳.基于顯著性引導SSD算法的SAR圖像目標檢測[J].地理空間信息,2023(08):5-8.
[4] 張立杰,周舒驊,李娜,等.基于改進SSD卷積神經網絡的蘋果定位與分級方法[J].農業機械學報,2023(06):223-232.
課題項目:浙江工貿職業技術學院2023年度學校訪工項目與調研項目,基于改進的Yolo與SSD算法的無人機目標探測與路徑規劃(FG202303)。
作者簡介:張恪萊(1997-),男,漢族,浙江溫州人,助教,碩士研究生,研究方向為及時定位與地圖構建。