關(guān)玉明,王肖霞,楊風(fēng)暴,吉琳娜,丁春山
(1.中北大學(xué)信息與通信工程學(xué)院,山西 太原 030051;2.江蘇自動(dòng)化研究所,江蘇 連云港 222006)
隨著人工智能和深度學(xué)習(xí)的迅速進(jìn)步,目標(biāo)檢測在準(zhǔn)確率和速度方面取得了巨大的突破。無人機(jī)平臺高空作業(yè)在小目標(biāo)檢測與小目標(biāo)實(shí)例分割等方向有較多實(shí)際應(yīng)用。但在檢測過程中仍存在一些挑戰(zhàn),比如小目標(biāo)分辨率較低、細(xì)節(jié)難以察覺,導(dǎo)致測量精度較低和漏檢率較高。此外,由于目標(biāo)的特征信息較少、背景環(huán)境復(fù)雜,對目標(biāo)定位的精度要求較高,目標(biāo)檢測任務(wù)面臨著許多困難。因此,小目標(biāo)檢測[1]的研究成為當(dāng)今目標(biāo)檢測任務(wù)中最關(guān)鍵的問題之一。
目前,深度學(xué)習(xí)應(yīng)用廣泛,并且在小目標(biāo)檢測中是一種行之有效的方法,主要包括兩類且檢測算法各具特點(diǎn)。一類是以YOLO(You Only Look Once)系列為代表的一階段目標(biāo)識別方法,是一種端到端為例的目標(biāo)檢測算法,它根據(jù)卷積神經(jīng)網(wǎng)絡(luò)從圖像中提取特征,并生成已知圖像中目標(biāo)的位置和類別信息,對目標(biāo)檢測速度快,但對小目標(biāo)的檢測精度不高。文獻(xiàn)[2]中方法檢測速度表現(xiàn)較好,但模型較復(fù)雜且訓(xùn)練元素繁多;文獻(xiàn)[3]在不同的尺度上運(yùn)行,提出了一種新穎的目標(biāo)檢測與分類聯(lián)合訓(xùn)練的方法,大大提高了算法的檢測精度和速度。另一類是以RCNN(Region-based Convolutional Neural Network)系列為代表的兩階段目標(biāo)檢測策略。文獻(xiàn)[4]算法在檢測精度方面比第一種目標(biāo)檢測算法要好得多,但代價(jià)是它的檢測速度有所降低,增加了網(wǎng)絡(luò)檢測的運(yùn)行時(shí)間;文獻(xiàn)[5]引入了一個(gè)區(qū)域建議網(wǎng)絡(luò)(RPN),它與檢測網(wǎng)絡(luò)共享全圖像卷積特征,從而實(shí)現(xiàn)幾乎無成本的區(qū)域。相比第二類,第一類算法更適合實(shí)時(shí)性的小目標(biāo)檢測[6]。YOLOv5 算法在YOLOv4 算法的基礎(chǔ)上加以改進(jìn),根據(jù)不同通道的尺度進(jìn)行縮放,改變主干網(wǎng)絡(luò)和頸部網(wǎng)絡(luò)結(jié)構(gòu)用以加快算法的訓(xùn)練速度。YOLOv5 的骨干網(wǎng)絡(luò)由卷積堆疊而成,處于網(wǎng)絡(luò)淺層的特征圖感受較小,只能觀測到原始圖像的局部特征,而處于深層網(wǎng)絡(luò)的卷積層感受較大,但計(jì)算復(fù)雜。在實(shí)際的小目標(biāo)檢測應(yīng)用中,由于下采樣、卷積等操作的存在,深度神經(jīng)網(wǎng)絡(luò)架構(gòu)中的特征大小隨著層數(shù)的增加而逐漸減小,這導(dǎo)致了網(wǎng)絡(luò)傳播過程中目標(biāo)特征可能會(huì)丟失,大大降低了目標(biāo)特征的利用率。與使用神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的算法類似,YOLOv5 算法中也存在對于遠(yuǎn)距離小目標(biāo)檢測能力不足、小目標(biāo)漏檢率高[7]、檢測效率低等問題。
基于以上研究現(xiàn)狀,考慮到目標(biāo)檢測在一些特定場景需要具備一定的檢測精度,因此本文結(jié)合YOLOv5 網(wǎng)絡(luò)模型,重置錨框,優(yōu)化損失以及增強(qiáng)特征提取來改進(jìn)、優(yōu)化和重置模塊,提出了一種基于KOS-YOLOv5 的多尺度小目標(biāo)檢測方法,以提升小目標(biāo)檢測的準(zhǔn)確率。
本文以目標(biāo)檢測中廣為人知的高檢測率算法YOLOv5[8]為基礎(chǔ),在VisDrone-2019 數(shù)據(jù)集中選擇小尺寸目標(biāo)進(jìn)行目標(biāo)檢測。在YOLOV5 的基礎(chǔ)上,本文提出了一種新型的小目標(biāo)檢測算法,采用改進(jìn)的Kmeans++[9]聚類技術(shù),精準(zhǔn)地調(diào)整了其參數(shù),從而找到了一種更加有效的錨框,并利用SimOTA(Simplify Optimal Transport Assignment)優(yōu)化了損失函數(shù)[10],最后在網(wǎng)絡(luò)中添加SCP(Spatial Context Pyramid)[11]模塊,設(shè)計(jì)了一種全新的特征重用金字塔結(jié)構(gòu),將不同層次的特征融合在一起,增強(qiáng)特征提取,從而大大提高了目標(biāo)檢測的準(zhǔn)確率。
通過在VisDrone-2019 數(shù)據(jù)集上進(jìn)行各種場景和尺度的檢測[12]發(fā)現(xiàn),經(jīng)過優(yōu)化的網(wǎng)絡(luò)模型可以更好地識別出微小的目標(biāo),而且它們的內(nèi)存消耗也更少,同時(shí)還可以在復(fù)雜的環(huán)境中準(zhǔn)確地識別出多尺度的車輛目標(biāo),從而提升了系統(tǒng)的性能。由于圖像背景占了圖像大多區(qū)域[13],待檢測目標(biāo)一般較小,因此需要利用具有建模能力的網(wǎng)絡(luò)結(jié)構(gòu)作為骨干網(wǎng)絡(luò)。KOS-YOLOv5 算法為小目標(biāo)檢測提供了一定的研究基礎(chǔ),其總體網(wǎng)絡(luò)框架如圖1所示。
針對YOLOv5 網(wǎng)絡(luò)模型中錨框參數(shù)的問題,注意到原始錨框參數(shù)是通過在官方數(shù)據(jù)集上通過聚類得到的。然而,官方數(shù)據(jù)集包含多個(gè)不同類別的信息,因此如果直接使用這些原始錨框參數(shù)進(jìn)行網(wǎng)絡(luò)模型的訓(xùn)練,很有可能會(huì)對小目標(biāo)的檢測精度造成一定的影響。為了解決這個(gè)問題,本文采取一種新的方法來優(yōu)化錨框參數(shù),尤其是在車輛小目標(biāo)檢測中。對車輛小目標(biāo)數(shù)據(jù)集進(jìn)行聚類分析,并重新計(jì)算出適合于小目標(biāo)檢測的錨框參數(shù)。通過這一過程,能夠更準(zhǔn)確地匹配錨框和小目標(biāo)之間的關(guān)系,從而提高小目標(biāo)的檢測精度。這樣可以更好地適應(yīng)具體任務(wù)中小目標(biāo)的特點(diǎn),通過針對小目標(biāo)的聚類,可以更準(zhǔn)確地捕捉到小目標(biāo)的特征和尺寸分布,這種調(diào)整錨框參數(shù)的策略有助于優(yōu)化網(wǎng)絡(luò)模型的訓(xùn)練過程,進(jìn)而提高模型在車輛小目標(biāo)檢測方面的性能,提高小目標(biāo)檢測的準(zhǔn)確度和效果。傳統(tǒng)YOLOv5 算法中使用了已知的K-means 聚類分析算法,在最初階段從官方數(shù)據(jù)集中隨機(jī)選取K個(gè)樣本作為初始聚類中心C={C1,C2,…,CK},然而,這種初始聚類中心的選取方式常常會(huì)導(dǎo)致聚類結(jié)果不太理想,進(jìn)而最后影響了目標(biāo)檢測的準(zhǔn)確度。為了解決這個(gè)問題,K-means++算法對以往傳統(tǒng)的K-means 隨機(jī)初始化聚類中心的方法進(jìn)行了優(yōu)化,它首先從數(shù)據(jù)集中隨機(jī)選擇一個(gè)樣本點(diǎn)作為第一個(gè)聚類中心,然后根據(jù)計(jì)算每個(gè)樣本與已經(jīng)選取的聚類中心之間的最短距離D(x)來確定下一個(gè)聚類中心的選擇。這種方法能更好地從初始化聚類中心提高目標(biāo)檢測的精確度。該關(guān)系可以表述為:
選擇概率值最高的點(diǎn)作為下一個(gè)聚類中心。重復(fù)上述計(jì)算步驟,直到選出k個(gè)聚類中心。針對數(shù)據(jù)集中的每個(gè)樣本xi,計(jì)算其與k個(gè)聚類中心間的距離,并將其分配到距離最小的簇中心對應(yīng)的類別里面。通過不斷更新聚類中心的位置,直到聚類中心不再變化為止。
在本研究中,采用K-means++聚類算法對VisDrone-2019 數(shù)據(jù)集進(jìn)行重新聚類,以獲得適用于目標(biāo)檢測的錨框參數(shù)。接著,使用這些重新計(jì)算的參數(shù)訓(xùn)練網(wǎng)絡(luò)模型,并將其與直接使用原始錨框參數(shù)訓(xùn)練的模型進(jìn)行比較。實(shí)驗(yàn)結(jié)果顯示,相較于直接使用原始錨框,使用Kmeans 聚類方法訓(xùn)練的模型,其平均檢測精度從92.10%提高到92.36%。進(jìn)一步地,當(dāng)使用K-means++算法重新聚類時(shí),改進(jìn)后的網(wǎng)絡(luò)模型平均檢測精度進(jìn)一步提升至93.89%。通過觀察表1 中的數(shù)據(jù),可以很明顯地看出,對本文數(shù)據(jù)集進(jìn)行重新聚類可以顯著提高網(wǎng)絡(luò)模型的檢測精度,而K-means++算法進(jìn)行聚類更符合小目標(biāo)的檢測。因此,本文選擇使用K-means++算法作為網(wǎng)絡(luò)模型的聚類分析方法,以更好地優(yōu)化錨框參數(shù),提高目標(biāo)檢測性能。對于VisDrone-2019 數(shù)據(jù)集,經(jīng)過K-means++聚類分析得到的錨框參數(shù)對網(wǎng)絡(luò)模型的訓(xùn)練和測試都有著顯著的正面影響。
表1 基于不同錨框的檢測結(jié)果
目前常見的目標(biāo)檢測模型通常會(huì)利用預(yù)先定義的交并比(IoU)閾值對算法錨框進(jìn)行正負(fù)樣本的分配。然而,在某些情況下,圖中的目標(biāo)物體可能較小且分布較密集,這種情況下使用固定的閾值可能不太能適應(yīng)不同的檢測場景。因此,本文需要重新設(shè)計(jì)樣本匹配策略,以更好地適應(yīng)目標(biāo)檢測任務(wù)的需求。在這種情況下,通過重新評估錨框與真實(shí)目標(biāo)的匹配方式,可以更準(zhǔn)確地劃分正負(fù)樣本,進(jìn)而提高模型的性能和魯棒性。
對于具體的檢測場景,重新設(shè)計(jì)樣本匹配策略或?qū)嵤﹨?shù)的調(diào)整是必要的步驟,以便更好地適應(yīng)小目標(biāo)檢測的需求。目標(biāo)檢測的過程是:模型訓(xùn)練時(shí)先在圖像的各個(gè)位置生成一系列錨框,網(wǎng)絡(luò)結(jié)構(gòu)會(huì)按照一定的規(guī)則將錨框分成正負(fù)樣本。由于圖像中目標(biāo)的數(shù)量有限,這樣生成的錨框中背景占比較多,導(dǎo)致模型的訓(xùn)練樣本不均衡,周圍的重要樣本可能會(huì)被忽略。正負(fù)樣本分配(OTA)策略考慮了全局最優(yōu),具有更強(qiáng)的高質(zhì)量樣本搜索能力。為兼顧算法性能和訓(xùn)練時(shí)長,本文采用簡化的正負(fù)樣本分配策略,因此,在正負(fù)樣本標(biāo)簽分配策略中,本文采用SimOTA 采樣策略進(jìn)行動(dòng)態(tài)標(biāo)簽匹配,以提供更精準(zhǔn)的匹配結(jié)果。與傳統(tǒng)方法只依賴于靜態(tài)先驗(yàn)信息不同的是,SimOTA 利用當(dāng)前神經(jīng)網(wǎng)絡(luò)輸出的預(yù)測信息對目標(biāo)進(jìn)行動(dòng)態(tài)最優(yōu)匹配。
SimOTA 標(biāo)簽匹配實(shí)施流程為:
為增加匹配效率,首先,使用中心先驗(yàn)來確定候選的區(qū)域,通過初步篩選,選取一組定量的預(yù)測框作為候選框;然后,計(jì)算這些候選框與真實(shí)框之間的損失值和交并比(IoU),進(jìn)而生成一個(gè)代價(jià)矩陣。對于每個(gè)真實(shí)框,從代價(jià)矩陣中選擇具有最小成本的一部分候選框作為正樣本。通過SimOTA 算法的動(dòng)態(tài)標(biāo)簽匹配策略,本文能夠更準(zhǔn)確地將預(yù)測框與真實(shí)框進(jìn)行匹配,該策略利用了當(dāng)前網(wǎng)絡(luò)輸出的預(yù)測信息,使得匹配過程更加靈活和適應(yīng)性強(qiáng)。相比傳統(tǒng)方法,SimOTA 能夠提供更高質(zhì)量的匹配結(jié)果,從而提升目標(biāo)檢測的準(zhǔn)確性和性能。SimOTA 更靠近全局最優(yōu),跟OTA 比較,訓(xùn)練耗時(shí)減少了25%。SimOTA 中g(shù)t、gi和pj之間的成本計(jì)算公式如下:
式中:λ是平衡系數(shù);和分別是gt、gi和預(yù)測pj之間的分類損失和回歸損失。
在經(jīng)過標(biāo)簽匹配后,所提模型使用廣義交并比(GIoU)[14]損失函數(shù)計(jì)算真實(shí)框和對應(yīng)的正樣本預(yù)測框之間的位置損失。GIoU 損失的計(jì)算公式為:
式中:A代表目標(biāo)的真實(shí)框;B代表目標(biāo)的預(yù)測框;E代表包含A和B的最小矩形框。
在空間域中,圖像中的遠(yuǎn)程空間依賴性為模糊物體帶來了比自然場景更多的補(bǔ)充信息。采用空間上下文金字塔(SCP)來捕獲每個(gè)特征金字塔級別的全局空間上下文。該模塊研究從整個(gè)特征圖中聚合特征,并使用自適應(yīng)權(quán)重將它們組合到每個(gè)像素中。這種策略保證只有有用的全局信息被融合到局部區(qū)域,而不會(huì)減少對象之間的差異。至于實(shí)例域,認(rèn)為應(yīng)該針對每個(gè)實(shí)例和任務(wù)自適應(yīng)地改進(jìn)對象表示。
對目標(biāo)類別進(jìn)行分類需要一個(gè)整體視圖,而分割需要更多縮放的細(xì)節(jié)。對不同大小接受范圍的需求也因?qū)嵗悺R虼?,引入了分層提取器(HRoIE)為每個(gè)實(shí)例生成RoI 特征。從每一層裁剪實(shí)例特征圖后,該模塊從最高或最低尺度開始,以分層方式逐級融合特征。利用像素注意機(jī)制[15]來組合相鄰特征圖。這個(gè)模塊重量輕,同時(shí)具有靈活的可擴(kuò)展模型設(shè)計(jì)。
對不同級別的特征映射進(jìn)行聚合后,特征金字塔仍然包含空間局部信息,空間上下文金字塔(SCP)模塊通過研究每個(gè)級別內(nèi)的全局空間上下文來進(jìn)一步增強(qiáng)特征。
SCP 的結(jié)構(gòu)如圖2 所示,該模塊也是金字塔結(jié)構(gòu)[16],將它插入YOLOv5 金字塔結(jié)構(gòu)中,每層都包含一個(gè)上下文聚合塊(CABlock),該模塊的詳細(xì)設(shè)計(jì)如圖3 所示。
圖2 空間上下文金字塔模塊
圖3 上下文聚合塊
在每個(gè)塊中,每個(gè)像素的空間上下文通過以下方式聚合:
式中:Pi和Qi表示特征金字塔中第i層的輸入和輸出特征圖,每個(gè)特征圖包含Ni個(gè)像素;j、m∈{1,Ni},表示每個(gè)像素的指數(shù);wk和wv是用于投影特征圖的線性變換矩陣,使用1×1 卷積來完成特征圖。公式(5)通過用線性變換代替矩陣的乘法,簡化了廣泛使用的自注意力機(jī)制[17],很大程度上減少了參數(shù)和計(jì)算成本,并應(yīng)用ai來平衡每個(gè)像素聚合全局空間上下文的程度。
本實(shí)驗(yàn)用于模型訓(xùn)練的軟件平臺為AMD Ryzen 7 5800H with Radeon Graphics 和NVIDIA GeForce RTX 3050Ti Laptop GPU;模型測試推理平臺同上,軟件使用Windows 11 系統(tǒng),Python 3.8.16,PyTorch 2.0.0,Cuda 118深度學(xué)習(xí)框架。
小目標(biāo)的百分比相對較小,并且在傳統(tǒng)數(shù)據(jù)集上分布不均勻,分布不均衡會(huì)導(dǎo)致模型在訓(xùn)練過程中更偏向于研究大中型目標(biāo)。為了解決這個(gè)問題,使用VisDrone-2019 數(shù)據(jù)集,這是一個(gè)主要包含小物體的專業(yè)數(shù)據(jù)集。由圖4 可看出,該數(shù)據(jù)集中只有一類目標(biāo)car,但目標(biāo)在整幅圖中尺寸較小,寬高相較于整幅圖在(0.1,0.1)之間,且大多分布在圖中間。
圖4 數(shù)據(jù)集分布情況
網(wǎng)絡(luò)性能由三個(gè)性能指標(biāo)評估:P(精度)、R(召回率)[18]和mAP(平均精度),表達(dá)式分別如下:
式中:XTP是網(wǎng)絡(luò)模型正確檢測到的目標(biāo)數(shù)量;XFP是網(wǎng)絡(luò)模型錯(cuò)誤檢測到的目標(biāo)數(shù)量;XFN是網(wǎng)絡(luò)模型未檢測到的目標(biāo)數(shù)量;c是類別數(shù);mAP 為單個(gè)目標(biāo)類別的平均精度。AP 的表達(dá)式為:
為了進(jìn)一步評估模型的性能,進(jìn)行了消融實(shí)驗(yàn),將K-means++、SimOTA 和SCP 這三種改進(jìn)方法同時(shí)添加到網(wǎng)絡(luò)中,并與原始的YOLOv5 模型進(jìn)行比較。從表2 中可以看出,這三種改進(jìn)方法都在不同程度上提升了模型的性能。相對于YOLOv4 模型,YOLOv5 有略微的改進(jìn),P值提高了0.15%,R值提高了0.14%。添加SCP 和SimOTA 模塊相比YOLOv5 模型P提升了1.84%,R提高了2.21%。對YOLOv5 同時(shí)進(jìn)行三類方法的改進(jìn)時(shí),相比YOLOv5 模型,P提升了5.05%,R提升了2.37%,且運(yùn)算量降低了11.8 GFLOPs,如表3 所示。引入OTA 模塊后,模型損失函數(shù)值明顯降低,隨著網(wǎng)絡(luò)優(yōu)化的進(jìn)行,損失函數(shù)的降低表明模型在訓(xùn)練過程中逐漸提高了對目標(biāo)的檢測準(zhǔn)確性,這進(jìn)一步證明了這三種方法的有效性,并且強(qiáng)調(diào)了它們在改進(jìn)網(wǎng)絡(luò)性能方面的作用,同時(shí)驗(yàn)證了網(wǎng)絡(luò)檢測小目標(biāo)的魯棒性。
表2 消融實(shí)驗(yàn)結(jié)果
表3 本文方法與YOLOv5 模型的GFLOPs 對比情況
通過對比實(shí)驗(yàn)結(jié)果表可以得出結(jié)論:本文方法在精度(P)和損失函數(shù)(Loss)方面相較于原始的YOLOv5 模型和改進(jìn)的檢測算法都取得了顯著的提升。這些實(shí)驗(yàn)結(jié)果進(jìn)一步證明了本文所提方法的有效性。根據(jù)圖5顯示網(wǎng)絡(luò)的訓(xùn)練過程中的Loss 值隨著epoch 的變化情況,可以觀察到本文改進(jìn)的網(wǎng)絡(luò)相比其他網(wǎng)絡(luò)的Loss 值有更快的下降趨勢和更小的損失函數(shù)值,從而實(shí)現(xiàn)更有效的收斂。另外,在圖6 顯示的網(wǎng)絡(luò)訓(xùn)練過程中,可以看出本文改進(jìn)網(wǎng)絡(luò)相比其他網(wǎng)絡(luò)的mAP 上升趨勢更快一些且值更大,在后期的訓(xùn)練中,曲線也非常穩(wěn)定。圖7 為本文方法對VisDrone-2019 數(shù)據(jù)集的訓(xùn)練結(jié)果,可以看出本文設(shè)計(jì)的錨框比較貼近目標(biāo)且本文方法幾乎可以檢測到全部目標(biāo),準(zhǔn)確率都在0.6 以上。
圖5 本文方法與其他方法的損失值對比
圖6 本文方法與其他方法的平均檢測精度對比
圖7 本文方法訓(xùn)練結(jié)果示意圖
為了進(jìn)一步提高實(shí)驗(yàn)的可信度,本文對小目標(biāo)和復(fù)雜場景進(jìn)行了對比檢測,并使用YOLOv5 網(wǎng)絡(luò)和改進(jìn)后的算法進(jìn)行了比較,如圖8~圖11 所示。
圖8 YOLOv5 在簡單場景的檢測結(jié)果
圖9 本文方法在簡單場景的檢測結(jié)果
圖10 YOLOv5 在復(fù)雜場景的檢測結(jié)果
圖11 本文方法在復(fù)雜場景的檢測結(jié)果
從圖中可以看出,在小目標(biāo)場景中,本文算法的目標(biāo)檢測準(zhǔn)確度更高;同時(shí),在復(fù)雜場景中,YOLOv5 存在目標(biāo)漏檢的情況,而本文改進(jìn)的算法在目標(biāo)檢測率方面有了顯著提升,并幾乎能夠檢測到所有目標(biāo)。本文改進(jìn)的算法在多種場景下對小目標(biāo)的檢測更加準(zhǔn)確,這驗(yàn)證了改進(jìn)后的網(wǎng)絡(luò)模型在提取小目標(biāo)深層特征方面的能力,對于特征不清晰和復(fù)雜場景下的小尺度車輛目標(biāo)檢測具有良好的效果。
本文在YOLOv5 的基礎(chǔ)上提出了KOS-YOLOv5 算法,解決了由于分辨率低、特征不顯眼導(dǎo)致的小目標(biāo)檢測準(zhǔn)確度低的問題。首先通過K-means++聚類算法重新設(shè)計(jì)了錨框的大小,得到更適用于本文數(shù)據(jù)集的錨框尺寸;其次引入SimOTA 模塊優(yōu)化其算法損失函數(shù);最后加入SCP 模塊提高了目標(biāo)特征提取能力。改進(jìn)后的網(wǎng)絡(luò)在VisDrone-2019 數(shù)據(jù)集上進(jìn)行了測試,實(shí)驗(yàn)結(jié)果表明,KOS-YOLOv5 模型在P、R、mAP 方面較YOLOv5 模型有明顯提升,證明KOS-YOLOv5 算法在一定程度上提高了對小目標(biāo)的檢測效果。未來可驗(yàn)證本文算法的泛化能力。