胡文杰,雷兵強(qiáng)
(咸陽職業(yè)技術(shù)學(xué)院 陜西 咸陽 712000)
目前,基于深度神經(jīng)網(wǎng)絡(luò)的計算機(jī)視覺技術(shù)通過模擬生物視覺,使用經(jīng)過訓(xùn)練的神經(jīng)網(wǎng)絡(luò)模型來執(zhí)行多項任務(wù),例如圖像分類、圖像分割和目標(biāo)檢測等。計算機(jī)視覺的主要應(yīng)用領(lǐng)域是無人駕駛,幾乎所有的路徑規(guī)劃和無人化控制都需要借助計算機(jī)視覺技術(shù)來實現(xiàn),通過將基于神經(jīng)網(wǎng)絡(luò)的計算機(jī)視覺任務(wù)的結(jié)果輸入到路徑規(guī)劃、導(dǎo)航算法中,求得最優(yōu)和避障路徑。如果在無人機(jī)上加載一個有效的計算機(jī)視覺系統(tǒng)和決策系統(tǒng),那么無人機(jī)將擁有與人類相仿的眼睛和大腦,在多維復(fù)雜的環(huán)境中,可以實時有效地檢測到周圍的物體并進(jìn)行目標(biāo)檢測、物體分類、障礙物劃分、危險等級劃分等處理,從而在路徑規(guī)劃問題上及時做出最佳決策。
計算機(jī)視覺包含許多復(fù)雜的任務(wù),這些任務(wù)可以切分為語義分割、實例分割、圖像分類和目標(biāo)檢測等基本任務(wù)。它們的簡單定義如圖1所示。
圖1 計算機(jī)視覺任務(wù)
(1)語義分割需要預(yù)測所輸入圖像的每個像素屬于哪種類型的標(biāo)簽。
(2)實例分割還需要在語義分割的基礎(chǔ)上確定同一類型不同個體的具體個數(shù)。
(3)圖像分類需要預(yù)測圖像中物體的類別。
(4)目標(biāo)檢測需要在圖像分類的基礎(chǔ)上進(jìn)一步識別物體的位置。
目標(biāo)檢測是一項比較實用且極具挑戰(zhàn)性的計算機(jī)視覺任務(wù),可以看作是圖像分類和目標(biāo)定位的結(jié)合。給定一張圖片,目標(biāo)檢測系統(tǒng)需要識別圖片中指定對象的類別并給出其位置。由于圖片中物體的數(shù)量是不確定的,而且還要給出物體的精確位置,所以目標(biāo)檢測比分類任務(wù)更加復(fù)雜。隨著計算機(jī)視覺技術(shù)的不斷發(fā)展,目標(biāo)檢測已滲透到航天航空、智能交通、農(nóng)業(yè)、高空安防、物流、森林防火等各個領(lǐng)域。由于在復(fù)雜的場景中,存在檢測對象種類繁多、維度復(fù)雜等情況,常用的目標(biāo)檢測算法會出現(xiàn)精確度和完整度低等問題。近年來,隨著深度學(xué)習(xí)的不斷發(fā)展,各式各樣基于卷積神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測算法被陸續(xù)提出。卷積神經(jīng)網(wǎng)絡(luò)可以實現(xiàn)數(shù)據(jù)的自主訓(xùn)練學(xué)習(xí),更新參數(shù)得到一個比較準(zhǔn)確的模型?;诰矸e神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測算法可以分為兩大類:一類是基于Region Proposal 的R-CNN(Region-Conventional Neural Network)雙步目標(biāo)檢測算法,包括R-CNN、Fast R-CNN、FasterR-CNN 等;另一類是單步目標(biāo)檢測算法,包括YOLO(You Look Only Once)、SSD 等,其發(fā)展如圖2所示。
圖2 目標(biāo)檢測主流算法發(fā)展史
自2012年Alex net 贏得ImageNet 比賽以來,卷積神經(jīng)網(wǎng)絡(luò)(CNN)已成為圖像分類的基準(zhǔn)。CNN 方法在ImageNet 挑戰(zhàn)中的表現(xiàn)優(yōu)于人類。最近,CNN 在對圖像中物體的檢測、分割和識別方面取得了巨大成功。例如,基于CNN 的方法應(yīng)用于車輛檢測、醫(yī)學(xué)圖像檢測等計算機(jī)視覺任務(wù)中。雙步目標(biāo)檢測算法分兩步執(zhí)行,首先是利用選擇算法或卷積神經(jīng)網(wǎng)絡(luò)生成候選區(qū)(Region Proposal),然后將候選區(qū)送入網(wǎng)絡(luò)結(jié)構(gòu)中提取特征,最終生成檢測目標(biāo)的位置和類別。Faster Region-based CNN(Faster R-CNN)是一種基于CNN 的雙步目標(biāo)檢測算法,其結(jié)構(gòu)圖如圖3所示。
圖3 Faster R-CNN 算法結(jié)構(gòu)
單步目標(biāo)檢測算法不用生成候選區(qū),把圖像分為M×M個網(wǎng)格單元后,使用卷積神經(jīng)網(wǎng)絡(luò)直接預(yù)測不同對象的類別和位置。在雙步目標(biāo)檢測算法中,由于生成一些候選區(qū)花費了不少的時間,故其檢測速度比單步目標(biāo)檢測算法要慢,但準(zhǔn)確率卻相對較高。單目標(biāo)檢測算法是在圖片直接劃分的網(wǎng)格上進(jìn)行的,因此其檢測速度較快。早期的雙步目標(biāo)檢測算法在檢測精確度上不夠理想,經(jīng)過不斷的改進(jìn)和完善,這一問題慢慢得以解決,尤其是YOLOv5 算法在很大程度上提高了目標(biāo)檢測的精確度。
按照網(wǎng)絡(luò)深度和網(wǎng)絡(luò)寬度的不同,YOLOv5 可以分為YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x。本文使用YOLOv5s,其網(wǎng)絡(luò)結(jié)構(gòu)最為小巧,圖像推理速度最快(高達(dá)0.007 s)。采用COCO 數(shù)據(jù)集進(jìn)行測試,YOLOv5s 的推理速度可以達(dá)到140 FPS,其他版本的推理速度優(yōu)于谷歌于2018年推出的Efficient Net。YOLOv5 的網(wǎng)絡(luò)結(jié)構(gòu)包括Input、Backbone、Neck、Output,它們之間的關(guān)系如圖4所示。
圖4 YOLOv5s 網(wǎng)絡(luò)結(jié)構(gòu)
下面介紹YOLOv5s 的主要組成部分:
(1)輸入端。輸入端完成對輸入數(shù)據(jù)的預(yù)處理,主要涉及對圖片進(jìn)行統(tǒng)一大小、增強(qiáng)、翻轉(zhuǎn),色域變化等操作。YOLOv5 的輸入端采用Mosaic 數(shù)據(jù)增強(qiáng)的方法并且以隨機(jī)縮放、隨機(jī)裁剪、隨機(jī)排布的方式對原數(shù)據(jù)和增強(qiáng)數(shù)據(jù)進(jìn)行拼接,再將拼接結(jié)果傳入卷積神經(jīng)網(wǎng)絡(luò)模型進(jìn)行學(xué)習(xí),因此其對小目標(biāo)的檢測具有很好的檢測效果。
(2)Backbone(網(wǎng)絡(luò)主干)。Backbone 在不同圖像細(xì)粒度上聚合并形成基于圖像特征的卷積神經(jīng)網(wǎng)絡(luò),其主要包含F(xiàn)ocus、CSP 和SPP。Backbone 的第一層是Focus,從高分辨率圖像中周期性抽出像素點并將其重構(gòu)到低分辨率的圖像中,提高每個點感受野,并減少原始信息的丟失,該模塊的目的主要是減少計算量從而加快檢測速度。YOLOv5 默認(rèn)640×640×3 的輸入,先將其復(fù)制四份,通過切片操作將這四個圖片切分成四個320×320×3 的切片,然后連接這四個切邊,再通過64 核的卷積層進(jìn)行卷積操作,生成320×320×64 的輸出,最后再通過激活函數(shù)將結(jié)果輸入到下一個卷積層。YOLOv5s 的CSP 結(jié)構(gòu)用于將原輸入分成兩個分支,分別對兩個分支進(jìn)行卷積操作使得通道數(shù)減半,再對其中一個分支進(jìn)行Bottleneck*M操作,然后拼接兩個分支,使得BottlenneckCSP 的輸入與輸出大小相同,從而使網(wǎng)絡(luò)模型學(xué)習(xí)到更多的特征,提高目標(biāo)檢測的精確度。YOLOv5 中的CSP 有兩種結(jié)構(gòu)CSP1_X 和CSP2_X。SPP(Spatial Pyramid Pooling)模塊(即空間金字塔池化模塊)先采用4 種不同大小的卷積核進(jìn)行最大池化操作,再進(jìn)行張量拼接,從而使最終的輸入特征保持一致。
(3)YOLOv5s 的Neck 部分仍然采用FPN+PAN 進(jìn)行采樣,但是它在YOLOv4 的基礎(chǔ)上做了優(yōu)化改進(jìn),采用CSPnet 設(shè)計的CSP2 結(jié)構(gòu),以此加強(qiáng)網(wǎng)絡(luò)特征融合能力。Neck 主要用于增強(qiáng)模型對不同縮放尺度對象的檢測,使其能夠識別出不同大小的同一個物體。YOLOv5 采用CSP2結(jié)構(gòu)替代YOLOv4 中的部分CBL 模塊,其具體結(jié)構(gòu)如圖5所示。
圖5 YOLOv5s 的Neck 結(jié)構(gòu)
(4)Output YOLOv5 采用GIoU_Loss 作為損失函數(shù),GIoU_Loss 解決了無法區(qū)分Prediction Box 與Ground Truth Box 相交的問題,增加了相交尺度的衡量手段,緩解了單純IOU_Loss 時存在的一些問題。CIOU_Loss 在DIOU_Loss的基礎(chǔ)上增加了一個影響因子,將Prediction Box 和Ground Truth Box 的長寬比也考慮在內(nèi)。即CIOU_Loss 將GT 框的重疊面積、中心點距離和長寬比全部納入考慮范圍。
強(qiáng)化學(xué)習(xí)(Reinforcement Learning,RL)是指agent 在與環(huán)境的交互中,通過狀態(tài)值的改變不斷調(diào)整的action,從而獲取最大價值的無監(jiān)督學(xué)習(xí)。RL 已經(jīng)廣泛應(yīng)用于無人機(jī)和自主系統(tǒng)的決策確定(尤其是路徑規(guī)劃和導(dǎo)航任務(wù)),Agent 與環(huán)境的交互如圖6所示。
圖6 RL 中Agent 與環(huán)境交互結(jié)構(gòu)
深度強(qiáng)化學(xué)習(xí)是指將深度學(xué)習(xí)和強(qiáng)化學(xué)習(xí)相結(jié)合處理復(fù)雜多維度環(huán)境中遇到的問題。深度強(qiáng)化學(xué)習(xí)有機(jī)結(jié)合了深度學(xué)習(xí)的感知能力和強(qiáng)化學(xué)習(xí)的決策能力,并可根據(jù)輸入的圖像直接控制決策過程。它是一種更接近于人類思維的人工智能方法。此外,深度強(qiáng)化學(xué)習(xí)的最新技術(shù)已經(jīng)擴(kuò)展到解決自主系統(tǒng)路徑規(guī)劃的難題中。
實驗流程及優(yōu)化效果如下:
(1)搭建Anaconda 集成開發(fā)環(huán)境。Anaconda 是一個開源的包、環(huán)境管理器,可以用于在同一個機(jī)器上安裝不同版本的軟件包及其依賴,并能夠在不同的環(huán)境之間切換:
1)下載并安裝Anaconda 開源軟件;
2)為提高Anaconda 中所創(chuàng)建環(huán)境安裝指定軟件的速度,配置Anaconda 下載通道為清華鏡像路徑,命令如圖7所示。
圖7 配置Anaconda 下載通道命令
3)配置YOLOv5s 的工程環(huán)境進(jìn)行目標(biāo)檢測任務(wù)時,務(wù)必要注意各軟件包版本的兼容性。在本項目中,在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網(wǎng)絡(luò)模型訓(xùn)練數(shù)據(jù)并對訓(xùn)練結(jié)果(例如精確度、閾值等)進(jìn)行相關(guān)分析,最后優(yōu)化YOLOv5s 網(wǎng)絡(luò)模型:
1)將無人機(jī)拍攝的照片或視頻中截取的照片作為訓(xùn)練數(shù)據(jù),在數(shù)據(jù)被訓(xùn)練之前,首先進(jìn)行resize 的操作,將訓(xùn)練數(shù)據(jù)調(diào)整為720×720 大小的圖片;
2)配置YOLOv5s 配置文件conf.yaml 中的參數(shù),指定訓(xùn)練數(shù)據(jù)的文件路徑;
3)運行應(yīng)用程序train.py 訓(xùn)練數(shù)據(jù);
4)對運行結(jié)果進(jìn)行分析并優(yōu)化YOLOv5s 模型相關(guān)參數(shù)的設(shè)置。
(3)運用優(yōu)化后的YOLOv5s 模型和參數(shù)值對測試圖像進(jìn)行目標(biāo)檢測:
1)將無人機(jī)拍攝的照片或視頻中截取的照片作為訓(xùn)練數(shù)據(jù),在數(shù)據(jù)被訓(xùn)練之前,首先進(jìn)行resize 的操作,將訓(xùn)練數(shù)據(jù)調(diào)整為720×720 大小的圖片;
2)配置YOLOv5s 配置文件conf.yaml 中的參數(shù),指定訓(xùn)練數(shù)據(jù)的文件路徑;
3)運行應(yīng)用程序test.py 訓(xùn)練數(shù)據(jù)。
(4)將計算機(jī)視覺任務(wù)的處理結(jié)果輸入到深度強(qiáng)化學(xué)習(xí)決策算法中,選擇合適的策略算法,獲取預(yù)期價值。
鑒于傳統(tǒng)位置固定的攝像頭、照相機(jī)所拍攝的圖像和視頻采集設(shè)備采集的視頻角度單一、畫面不全的弊端,本項目將圖像、視頻采集設(shè)備安裝在無人機(jī)上,在無人機(jī)飛行的過程中實時動態(tài)采集數(shù)據(jù),這些設(shè)備的位置會隨環(huán)境和需要發(fā)生動態(tài)改變,能更為準(zhǔn)確地模擬和創(chuàng)建真實的環(huán)境模型。其次,將基于神經(jīng)網(wǎng)絡(luò)模型的計算機(jī)視覺任務(wù)的有效輸出結(jié)果作為強(qiáng)化學(xué)習(xí)中路徑規(guī)劃問題的狀態(tài)輸入,而不是直接使用采集到的原始圖片和視頻,從而提高了強(qiáng)化學(xué)習(xí)策略算法的執(zhí)行效率和精確度。