胡文杰,雷兵強
(咸陽職業(yè)技術學院 陜西 咸陽 712000)
目前,基于深度神經網絡的計算機視覺技術通過模擬生物視覺,使用經過訓練的神經網絡模型來執(zhí)行多項任務,例如圖像分類、圖像分割和目標檢測等。計算機視覺的主要應用領域是無人駕駛,幾乎所有的路徑規(guī)劃和無人化控制都需要借助計算機視覺技術來實現,通過將基于神經網絡的計算機視覺任務的結果輸入到路徑規(guī)劃、導航算法中,求得最優(yōu)和避障路徑。如果在無人機上加載一個有效的計算機視覺系統和決策系統,那么無人機將擁有與人類相仿的眼睛和大腦,在多維復雜的環(huán)境中,可以實時有效地檢測到周圍的物體并進行目標檢測、物體分類、障礙物劃分、危險等級劃分等處理,從而在路徑規(guī)劃問題上及時做出最佳決策。
計算機視覺包含許多復雜的任務,這些任務可以切分為語義分割、實例分割、圖像分類和目標檢測等基本任務。它們的簡單定義如圖1所示。

圖1 計算機視覺任務
(1)語義分割需要預測所輸入圖像的每個像素屬于哪種類型的標簽。
(2)實例分割還需要在語義分割的基礎上確定同一類型不同個體的具體個數。
(3)圖像分類需要預測圖像中物體的類別。
(4)目標檢測需要在圖像分類的基礎上進一步識別物體的位置。
目標檢測是一項比較實用且極具挑戰(zhàn)性的計算機視覺任務,可以看作是圖像分類和目標定位的結合。給定一張圖片,目標檢測系統需要識別圖片中指定對象的類別并給出其位置。由于圖片中物體的數量是不確定的,而且還要給出物體的精確位置,所以目標檢測比分類任務更加復雜。隨著計算機視覺技術的不斷發(fā)展,目標檢測已滲透到航天航空、智能交通、農業(yè)、高空安防、物流、森林防火等各個領域。由于在復雜的場景中,存在檢測對象種類繁多、維度復雜等情況,常用的目標檢測算法會出現精確度和完整度低等問題。近年來,隨著深度學習的不斷發(fā)展,各式各樣基于卷積神經網絡的目標檢測算法被陸續(xù)提出。卷積神經網絡可以實現數據的自主訓練學習,更新參數得到一個比較準確的模型?;诰矸e神經網絡的目標檢測算法可以分為兩大類:一類是基于Region Proposal 的R-CNN(Region-Conventional Neural Network)雙步目標檢測算法,包括R-CNN、Fast R-CNN、FasterR-CNN 等;另一類是單步目標檢測算法,包括YOLO(You Look Only Once)、SSD 等,其發(fā)展如圖2所示。

圖2 目標檢測主流算法發(fā)展史
自2012年Alex net 贏得ImageNet 比賽以來,卷積神經網絡(CNN)已成為圖像分類的基準。CNN 方法在ImageNet 挑戰(zhàn)中的表現優(yōu)于人類。最近,CNN 在對圖像中物體的檢測、分割和識別方面取得了巨大成功。例如,基于CNN 的方法應用于車輛檢測、醫(yī)學圖像檢測等計算機視覺任務中。雙步目標檢測算法分兩步執(zhí)行,首先是利用選擇算法或卷積神經網絡生成候選區(qū)(Region Proposal),然后將候選區(qū)送入網絡結構中提取特征,最終生成檢測目標的位置和類別。Faster Region-based CNN(Faster R-CNN)是一種基于CNN 的雙步目標檢測算法,其結構圖如圖3所示。

圖3 Faster R-CNN 算法結構
單步目標檢測算法不用生成候選區(qū),把圖像分為M×M個網格單元后,使用卷積神經網絡直接預測不同對象的類別和位置。在雙步目標檢測算法中,由于生成一些候選區(qū)花費了不少的時間,故其檢測速度比單步目標檢測算法要慢,但準確率卻相對較高。單目標檢測算法是在圖片直接劃分的網格上進行的,因此其檢測速度較快。早期的雙步目標檢測算法在檢測精確度上不夠理想,經過不斷的改進和完善,這一問題慢慢得以解決,尤其是YOLOv5 算法在很大程度上提高了目標檢測的精確度。
按照網絡深度和網絡寬度的不同,YOLOv5 可以分為YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x。本文使用YOLOv5s,其網絡結構最為小巧,圖像推理速度最快(高達0.007 s)。采用COCO 數據集進行測試,YOLOv5s 的推理速度可以達到140 FPS,其他版本的推理速度優(yōu)于谷歌于2018年推出的Efficient Net。YOLOv5 的網絡結構包括Input、Backbone、Neck、Output,它們之間的關系如圖4所示。

圖4 YOLOv5s 網絡結構
下面介紹YOLOv5s 的主要組成部分:
(1)輸入端。輸入端完成對輸入數據的預處理,主要涉及對圖片進行統一大小、增強、翻轉,色域變化等操作。YOLOv5 的輸入端采用Mosaic 數據增強的方法并且以隨機縮放、隨機裁剪、隨機排布的方式對原數據和增強數據進行拼接,再將拼接結果傳入卷積神經網絡模型進行學習,因此其對小目標的檢測具有很好的檢測效果。
(2)Backbone(網絡主干)。Backbone 在不同圖像細粒度上聚合并形成基于圖像特征的卷積神經網絡,其主要包含Focus、CSP 和SPP。Backbone 的第一層是Focus,從高分辨率圖像中周期性抽出像素點并將其重構到低分辨率的圖像中,提高每個點感受野,并減少原始信息的丟失,該模塊的目的主要是減少計算量從而加快檢測速度。YOLOv5 默認640×640×3 的輸入,先將其復制四份,通過切片操作將這四個圖片切分成四個320×320×3 的切片,然后連接這四個切邊,再通過64 核的卷積層進行卷積操作,生成320×320×64 的輸出,最后再通過激活函數將結果輸入到下一個卷積層。YOLOv5s 的CSP 結構用于將原輸入分成兩個分支,分別對兩個分支進行卷積操作使得通道數減半,再對其中一個分支進行Bottleneck*M操作,然后拼接兩個分支,使得BottlenneckCSP 的輸入與輸出大小相同,從而使網絡模型學習到更多的特征,提高目標檢測的精確度。YOLOv5 中的CSP 有兩種結構CSP1_X 和CSP2_X。SPP(Spatial Pyramid Pooling)模塊(即空間金字塔池化模塊)先采用4 種不同大小的卷積核進行最大池化操作,再進行張量拼接,從而使最終的輸入特征保持一致。
(3)YOLOv5s 的Neck 部分仍然采用FPN+PAN 進行采樣,但是它在YOLOv4 的基礎上做了優(yōu)化改進,采用CSPnet 設計的CSP2 結構,以此加強網絡特征融合能力。Neck 主要用于增強模型對不同縮放尺度對象的檢測,使其能夠識別出不同大小的同一個物體。YOLOv5 采用CSP2結構替代YOLOv4 中的部分CBL 模塊,其具體結構如圖5所示。

圖5 YOLOv5s 的Neck 結構
(4)Output YOLOv5 采用GIoU_Loss 作為損失函數,GIoU_Loss 解決了無法區(qū)分Prediction Box 與Ground Truth Box 相交的問題,增加了相交尺度的衡量手段,緩解了單純IOU_Loss 時存在的一些問題。CIOU_Loss 在DIOU_Loss的基礎上增加了一個影響因子,將Prediction Box 和Ground Truth Box 的長寬比也考慮在內。即CIOU_Loss 將GT 框的重疊面積、中心點距離和長寬比全部納入考慮范圍。
強化學習(Reinforcement Learning,RL)是指agent 在與環(huán)境的交互中,通過狀態(tài)值的改變不斷調整的action,從而獲取最大價值的無監(jiān)督學習。RL 已經廣泛應用于無人機和自主系統的決策確定(尤其是路徑規(guī)劃和導航任務),Agent 與環(huán)境的交互如圖6所示。

圖6 RL 中Agent 與環(huán)境交互結構
深度強化學習是指將深度學習和強化學習相結合處理復雜多維度環(huán)境中遇到的問題。深度強化學習有機結合了深度學習的感知能力和強化學習的決策能力,并可根據輸入的圖像直接控制決策過程。它是一種更接近于人類思維的人工智能方法。此外,深度強化學習的最新技術已經擴展到解決自主系統路徑規(guī)劃的難題中。
實驗流程及優(yōu)化效果如下:
(1)搭建Anaconda 集成開發(fā)環(huán)境。Anaconda 是一個開源的包、環(huán)境管理器,可以用于在同一個機器上安裝不同版本的軟件包及其依賴,并能夠在不同的環(huán)境之間切換:
1)下載并安裝Anaconda 開源軟件;
2)為提高Anaconda 中所創(chuàng)建環(huán)境安裝指定軟件的速度,配置Anaconda 下載通道為清華鏡像路徑,命令如圖7所示。

圖7 配置Anaconda 下載通道命令
3)配置YOLOv5s 的工程環(huán)境進行目標檢測任務時,務必要注意各軟件包版本的兼容性。在本項目中,在requirement.txt 文件中指定了對于各個軟件版本的要求,具體要求為:
matplotlib>=3.2.2
numpy>=1.18.5
opencv-python>=4.1.2
Pillow
PyYAML>=5.3.1
scipy>=1.4.1
torch>=1.7.0
torchvision>=0.8.1
tqdm>=4.41.0
tensorboard>=2.4.1
seaborn>=0.11.0
pandas
thop
pycocotools>=2.0
(2)使用YOLOv5s網絡模型訓練數據并對訓練結果(例如精確度、閾值等)進行相關分析,最后優(yōu)化YOLOv5s 網絡模型:
1)將無人機拍攝的照片或視頻中截取的照片作為訓練數據,在數據被訓練之前,首先進行resize 的操作,將訓練數據調整為720×720 大小的圖片;
2)配置YOLOv5s 配置文件conf.yaml 中的參數,指定訓練數據的文件路徑;
3)運行應用程序train.py 訓練數據;
4)對運行結果進行分析并優(yōu)化YOLOv5s 模型相關參數的設置。
(3)運用優(yōu)化后的YOLOv5s 模型和參數值對測試圖像進行目標檢測:
1)將無人機拍攝的照片或視頻中截取的照片作為訓練數據,在數據被訓練之前,首先進行resize 的操作,將訓練數據調整為720×720 大小的圖片;
2)配置YOLOv5s 配置文件conf.yaml 中的參數,指定訓練數據的文件路徑;
3)運行應用程序test.py 訓練數據。
(4)將計算機視覺任務的處理結果輸入到深度強化學習決策算法中,選擇合適的策略算法,獲取預期價值。
鑒于傳統位置固定的攝像頭、照相機所拍攝的圖像和視頻采集設備采集的視頻角度單一、畫面不全的弊端,本項目將圖像、視頻采集設備安裝在無人機上,在無人機飛行的過程中實時動態(tài)采集數據,這些設備的位置會隨環(huán)境和需要發(fā)生動態(tài)改變,能更為準確地模擬和創(chuàng)建真實的環(huán)境模型。其次,將基于神經網絡模型的計算機視覺任務的有效輸出結果作為強化學習中路徑規(guī)劃問題的狀態(tài)輸入,而不是直接使用采集到的原始圖片和視頻,從而提高了強化學習策略算法的執(zhí)行效率和精確度。