郭 磊,王邱龍,薛 偉,郭 濟(jì)
(1. 電子科技大學(xué)計算機(jī)科學(xué)與工程學(xué)院 成都 611731;2. 新疆大學(xué)信息科學(xué)與工程學(xué)院 烏魯木齊 830000;3. 西藏民族大學(xué)財經(jīng)學(xué)院 陜西 咸陽 712082)
隨著人工智能理論和深度學(xué)習(xí)技術(shù)的深入研究,作為計算機(jī)視覺領(lǐng)域核心問題之一的目標(biāo)檢測技術(shù)也取得了較大進(jìn)展,已被應(yīng)用于人臉檢測[1]、智慧醫(yī)療[2-3]、行人檢測[4]、活動識別[5]等。目標(biāo)檢測是利用圖像處理、深度學(xué)習(xí)等技術(shù),從圖像或視頻中定位感興趣的對象,通過目標(biāo)分類判斷輸入圖像中是否包含目標(biāo),用目標(biāo)定位找出目標(biāo)物體位置并框出目標(biāo),其任務(wù)是鎖定圖像中的目標(biāo),定位目標(biāo)位置、確定目標(biāo)類別。作為圖像及視頻理解的基石,目標(biāo)檢測是解決圖片分割、目標(biāo)跟蹤、圖像描述、事件檢測和場景理解等更高層次視覺任務(wù)的基礎(chǔ)。
小目標(biāo)檢測長期以來是目標(biāo)檢測中的重點(diǎn)和難點(diǎn)之一。由于小目標(biāo)具有圖像覆蓋面積較少、分辨率不足、位置缺乏準(zhǔn)確性、特征表達(dá)不充分的特點(diǎn),因而相對于常規(guī)目標(biāo)小目標(biāo)檢測更困難。目標(biāo)檢測中對小目標(biāo)的定義通常有兩種:1)國際光學(xué)工程學(xué)會對小目標(biāo)的定義,將256×256 像素的圖像中成像點(diǎn)小于80 個像素點(diǎn)(即目標(biāo)所占的像素點(diǎn)數(shù)與原圖總像素點(diǎn)數(shù)的比例小于0.12%)的目標(biāo)定義為小目標(biāo);2)根據(jù)具體的數(shù)據(jù)集對小目標(biāo)進(jìn)行定義,如在COCO 數(shù)據(jù)集[6]中,將尺寸小于32×32 像素的目標(biāo)定義為小目標(biāo);文獻(xiàn)[7] 在其交通標(biāo)志數(shù)據(jù)集中,將寬度占整個圖像比例小于20%的目標(biāo)定義為小目標(biāo)。一般而言,常規(guī)目標(biāo)特征表達(dá)充分,位置準(zhǔn)確明了,而小目標(biāo)的分辨率相對較低,特征表達(dá)會相對缺乏。
傳統(tǒng)的目標(biāo)檢測算法通常由人工提取目標(biāo)的特征,檢測精度低、效果不好。隨著深度學(xué)習(xí)的發(fā)展和硬件設(shè)備算力的提升,基于深度學(xué)習(xí)的卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network, CNN)[8]嶄露頭角,人們開始利用卷積神經(jīng)網(wǎng)絡(luò)自動提取圖像中的特征并將其應(yīng)用在目標(biāo)檢測中,極大地提升了目標(biāo)檢測效果。目前最通用的兩個方法是以R-CNN(region-based CNN)系列為代表的基于候選框的兩階段深度學(xué)習(xí)算法和以YOLO(you only look once)系列為代表的基于回歸的單階段深度學(xué)習(xí)目標(biāo)檢測算法。
R-CNN 模型[9]使用CNN 提取的特征替代傳統(tǒng)視覺特征,并采用大樣本的有監(jiān)督預(yù)訓(xùn)練與小樣本微調(diào)的方式解決模型的過擬合問題,使得模型的檢測性能有了較大的提升,但R-CNN 需對每個候選區(qū)域的CNN 特征進(jìn)行大量重復(fù)計算。SPP-Net 網(wǎng)絡(luò)[10]能產(chǎn)生固定大小的輸出,而與輸入圖像大小無關(guān);由于輸入尺寸的靈活性,使得SPP-Net 能夠提取多個尺度下的特征,且一張圖片中候選區(qū)域的CNN 特征只需要計算一次,在很大程度上能夠節(jié)省計算資源。在SPP-Net 的基礎(chǔ)上,文獻(xiàn)[11-12]先后提出Fast R-CNN 和Faster R-CNN 模型。從RCNN 模型發(fā)展到Fast R-CNN 模型,進(jìn)一步發(fā)展到Faster R-CNN 模型,檢測速度不斷提高,檢測精度也不斷增強(qiáng),但與單階段目標(biāo)檢測算法在檢測速度上相比,仍具有一定差距。
YOLO 系列算法和單點(diǎn)多盒檢測器(single shot multibox detector, SSD)是典型的單階段目標(biāo)檢測算法。文獻(xiàn)[13] 提出了第一個單階段目標(biāo)檢測算法YOLO,與YOLO 最后采用全連接層提取檢測結(jié)果不同,SSD[14]使用不同尺度的特征圖來做檢測,并直接使用卷積提取檢測結(jié)果。文獻(xiàn)[15-16] 在YOLOv1 的基礎(chǔ)上繼續(xù)改進(jìn),又提出了YOLOv2和YOLOv3 檢測算法,其中YOLOv2 進(jìn)行了多種嘗試,使用了批標(biāo)準(zhǔn)化(batch normalization, BN)技術(shù),引入了錨框機(jī)制;YOLOv3 采用darknet-53 作為骨干網(wǎng)絡(luò),并且使用了3 種不同大小的錨框,在邏輯分類器中使用sigmoid 函數(shù)把輸出約束在0~1 之間,使得YOLOv3 擁有更快的推理速度。文獻(xiàn)[17] 在傳統(tǒng)的YOLO 基礎(chǔ)上,加入了一些實(shí)用的技巧,提出了YOLOv4 算法,將BackBone 骨干網(wǎng)絡(luò)中的ReLU 激活函數(shù)改為Mish 激活函數(shù),與ReLU 相比,Mish 函數(shù)圖像更加平滑,實(shí)現(xiàn)了檢測速度和精度的最佳權(quán)衡。從YOLOv1 至今,YOLO 系列已經(jīng)發(fā)展到了YOLOv5,YOLOv5 融合了先前版本的優(yōu)點(diǎn),在檢測速度和精度上都更勝一籌,在某種程度上YOLOv5 已經(jīng)成為YOLO 系列算法中的SOTA(State Of The Art)。
YOLOv5 是一個高性能、通用的目標(biāo)檢測模型,能一次性完成目標(biāo)定位與目標(biāo)分類兩個任務(wù),因此選擇YOLOv5 作為目標(biāo)檢測的基本骨架是可行的。但是為了實(shí)現(xiàn)一些場景下對小目標(biāo)的獨(dú)特性檢測,就需要對YOLOv5 的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行相應(yīng)的調(diào)整和改進(jìn)。
本文在YOLOv5 網(wǎng)絡(luò)的基礎(chǔ)上進(jìn)行改進(jìn),改進(jìn)后的整體的網(wǎng)絡(luò)結(jié)構(gòu)如圖1 所示,通過新增尺寸為輸入圖像尺寸四分之一的特征圖來提升對小目標(biāo)特征的挖掘,采用多尺度反饋以引入全局上下文信息來提升對圖像中小目標(biāo)的識別能力。損失函數(shù)使用CIOU[18],從重疊面積、中心點(diǎn)距離、長寬比3 個方面更好地描述目標(biāo)框的回歸。在原始YOLOv5的基礎(chǔ)上使用Mosaic-8 數(shù)據(jù)增強(qiáng),修改目標(biāo)框回歸的公式,提高模型的收斂精度。下面分別從Mosaic-8 數(shù)據(jù)增強(qiáng)、特征提取器、損失函數(shù)和目標(biāo)框回歸4 個方面進(jìn)行詳細(xì)介紹。
圖1 整體網(wǎng)絡(luò)結(jié)構(gòu)
要獲得一個表現(xiàn)良好的神經(jīng)網(wǎng)絡(luò)模型,往往需要大量的數(shù)據(jù)作支撐,然而獲取新的數(shù)據(jù)這項工作往往需要花費(fèi)大量的時間與人工成本,因此數(shù)據(jù)增強(qiáng)應(yīng)運(yùn)而生。使用數(shù)據(jù)增強(qiáng)技術(shù),可以充分利用計算機(jī)來生成數(shù)據(jù),增加數(shù)據(jù)量,如采用縮放、平移、旋轉(zhuǎn)、色彩變換等方法增強(qiáng)數(shù)據(jù),數(shù)據(jù)增強(qiáng)的好處是能夠增加訓(xùn)練樣本的數(shù)量,同時添加合適的噪聲數(shù)據(jù),能夠提高模型的泛化力。
在YOLOv5 中除了使用最基本的數(shù)據(jù)增強(qiáng)方法外,還使用了Mosaic 數(shù)據(jù)增強(qiáng)方法,其主要思想就是將4 張圖片進(jìn)行隨機(jī)裁剪、縮放后,再隨機(jī)排列拼接形成一張圖片,實(shí)現(xiàn)豐富數(shù)據(jù)集的同時,增加了小樣本目標(biāo),提升網(wǎng)絡(luò)的訓(xùn)練速度。在進(jìn)行歸一化操作時會一次性計算4 張圖片的數(shù)據(jù),因此模型對內(nèi)存的需求降低。Mosaic 數(shù)據(jù)增強(qiáng)的流程如圖2 所示。本文受Mosaic 思想的啟發(fā),采用Mosaic 方法的增強(qiáng)版——Mosaic-8,即采用8 張圖片隨機(jī)裁剪、隨機(jī)排列、隨機(jī)縮放,然后組合成一張圖片,以此來增加樣本的數(shù)據(jù)量,同時合理引入一些隨機(jī)噪聲,增強(qiáng)網(wǎng)絡(luò)模型對圖像中小目標(biāo)樣本的區(qū)分力,提升模型的泛化力,其細(xì)節(jié)如圖3 所示。
圖2 Mosaic 數(shù)據(jù)增強(qiáng)流程
圖3 Mosaic-8 數(shù)據(jù)增強(qiáng)細(xì)節(jié)
在原始YOLOv5 骨干網(wǎng)絡(luò)中,使用3 種不同尺寸的特征圖來檢測不同大小的目標(biāo),如圖4 所示,該網(wǎng)絡(luò)將原始輸入圖像通過8 倍下采樣、16 倍下采樣、32 倍下采樣得到3 種不同尺寸大小的特征圖,將其輸入到特征融合網(wǎng)絡(luò)中。根據(jù)特征金字塔網(wǎng)絡(luò)(feature pyramid network, FPN)[19]的思想可以看出,經(jīng)過深層次卷積后的特征圖雖然擁有豐富的語義信息,但在多次卷積的過程中會丟失掉目標(biāo)的一些位置信息,不利于小目標(biāo)的檢測;而淺層卷積后得到的特征圖語義信息雖然不夠豐富,但目標(biāo)的位置信息卻比較精確。
圖4 原始YOLOv5 特征提取模型
在密集人群的條件下,大部分人臉檢測目標(biāo)占整幅圖像的比例較小。因此,本文在YOLOv5 骨干網(wǎng)絡(luò)的基礎(chǔ)上對原始輸入圖片增加一個4 倍下采樣的過程,如圖5 所示。原始圖片經(jīng)過4 倍下采樣后送入到特征融合網(wǎng)絡(luò)得到新尺寸的特征圖,該特征圖感受野較小,位置信息相對豐富,可以提升檢測小目標(biāo)的檢測效果。在卷積神經(jīng)網(wǎng)絡(luò)中,經(jīng)過不同的卷積層得到的特征圖包含不同的目標(biāo)特征信息。淺層卷積后得到的特征圖分辨率較高,目標(biāo)位置信息相對豐富,但語義信息不明顯;深層卷積后得到的特征圖分辨率低,語義信息豐富,但丟失了較多的目標(biāo)位置信息。因此,淺層特征圖能區(qū)分較為簡單的目標(biāo),深層特征圖能區(qū)分復(fù)雜的目標(biāo),將淺層特征圖與深層特征圖進(jìn)行信息融合更有利于目標(biāo)的區(qū)分。如圖6所示,將特征金字塔網(wǎng)絡(luò)與路徑聚合網(wǎng)絡(luò)(path aggregation network, PAN)[20]相結(jié)合,特征金字塔網(wǎng)絡(luò)自頂向下傳遞深層次語義特征,路徑聚合網(wǎng)絡(luò)自底向上傳遞目標(biāo)的位置信息,通過自頂向下和自底向上的特征信息融合有利于模型更好地學(xué)習(xí)特征,增強(qiáng)模型對小目標(biāo)的敏感度。
圖5 改進(jìn)后的特征提取模型
圖6 改進(jìn)后的特征融合網(wǎng)絡(luò)
原始YOLOv5 損失函數(shù)如式(1)所示,由定位損失、置信度損失和類別損失3 部分構(gòu)成。其中置信度損失和類別損失采用二元交叉熵?fù)p失函數(shù)進(jìn)行計算:
圖7 預(yù)測框P 與真實(shí)框GT
原始YOLOv5 中使用GIoU[21]來計算定位損失:與原始IoU 不同,GIoU 不僅關(guān)注真實(shí)框與預(yù)測框之間的重疊面積,還關(guān)注其他的非重疊區(qū)域,因此GIoU 相較于原始IoU 能更好的反應(yīng)兩者之間的重合度,但GIoU 始終只考慮真實(shí)框與預(yù)測框之間的重疊率這一個因素,不能很好地描述目標(biāo)框的回歸問題。如圖8 所示,當(dāng)預(yù)測框在真實(shí)框內(nèi)部時,且預(yù)測框的大小相同時,此時GIoU 會退化為IoU,無法區(qū)分各個預(yù)測框之間的位置關(guān)系。
圖8 GIoU 退化為IoU 示例
本文選擇CIoU 替代GIoU 作為目標(biāo)框回歸的損失函數(shù),其計算式為:
式中, α是一個平衡參數(shù),不參與梯度計算;v是用來衡量長寬比一致性的參數(shù)。CIoU 綜合考慮了真實(shí)框與預(yù)測框之間的重疊率、中心點(diǎn)距離、長寬比,使得目標(biāo)框回歸過程中更加穩(wěn)定,收斂的精度更高。
目標(biāo)框回歸的目的是要尋找某種映射關(guān)系,使得候選目標(biāo)框(region proposal)的映射無限接近于真實(shí)目標(biāo)框(ground truth)。對真實(shí)目標(biāo)框的預(yù)測是采用相對位置的方式回歸出目標(biāo)框相對于某個網(wǎng)格左上角的相對坐標(biāo)。先驗框與預(yù)測框的關(guān)系如圖9所示,其中,虛線框表示先驗框,實(shí)線框表示預(yù)測框。預(yù)測框通過先驗框平移縮放得到。將原始圖片根據(jù)特征圖尺寸劃分成S×S個網(wǎng)格單元,每個網(wǎng)格單元會預(yù)測3 個預(yù)測框,每個預(yù)測框包含4 個坐標(biāo)信息和1 個置信度信息。當(dāng)真實(shí)框中某個目標(biāo)中心坐標(biāo)落在某個網(wǎng)格中時,就由該網(wǎng)格預(yù)測這個目標(biāo)。
圖9 目標(biāo)框回歸原理圖
目標(biāo)框的坐標(biāo)預(yù)測計算公式為:
式中,tx、ty、tw、th為偏移; σ表示Sigmoid 激活函數(shù),用于將網(wǎng)絡(luò)預(yù)測值tx、ty、tw、th映射到[0,1]之間;cx、cy是單元網(wǎng)格中相對于圖片左上角的偏移量;pw、ph是先驗框?qū)捀?;bx、by和寬高bw、bh為預(yù)測目標(biāo)框的中心坐標(biāo);σ(to)是預(yù)測框的置信度,由預(yù)測框的概率和預(yù)測框與真實(shí)框的IoU 值相乘得到。對σ(to)設(shè)定閾值,過濾掉置信度較低的預(yù)測框,然后再對剩下的預(yù)測框用非極大值抑制算法(non-maximum suppression, NMS)[22]得到最終的預(yù)測框。
在最小的特征圖上,由于其感受野最大,故應(yīng)該用其來檢測大目標(biāo),所以大尺度的特征圖應(yīng)該應(yīng)用小尺寸的先驗框,小尺寸的特征圖應(yīng)該應(yīng)用大尺度的先驗框來進(jìn)行預(yù)測框的回歸。本文采用4 尺度檢測結(jié)構(gòu),4 個尺度的特征圖大小與先驗框尺寸的對應(yīng)關(guān)系如表1 所示。
表1 特征圖大小與先驗框尺寸對應(yīng)關(guān)系
將改進(jìn)后的算法應(yīng)用在密集人群的防護(hù)面具佩戴場景下,并與文獻(xiàn)[23] 提出的算法、AIZOO 算法(https://github.com/aky15/AIZOO_torch) 和原始YOLOv5 算法進(jìn)行對比實(shí)驗。防護(hù)面具主要包括醫(yī)療口罩、電焊面具、鋼化玻璃面罩等,本文主要以醫(yī)療口罩(以下簡稱口罩) 為研究對象進(jìn)行識別。由于密集人群條件下往往人物眾多,且容易出現(xiàn)人與人之間相互遮擋的現(xiàn)象,檢測難度大,且單個人員的口罩占整幅圖像的比例遠(yuǎn)遠(yuǎn)小于20%,因此可以將其作為小目標(biāo)對待。
本文數(shù)據(jù)集來源于WIDER FACE、MAPA(Masked Faces) 這兩個公開數(shù)據(jù)集和網(wǎng)絡(luò),從中手動篩選出密集人群場景下的佩戴口罩和未佩戴口罩的圖片,最終得到訓(xùn)練集4 000 張,測試集1 320張,共計5 320 張。
利用標(biāo)記軟件LabelImg 對數(shù)據(jù)集進(jìn)行YOLO格式的標(biāo)注,共有兩個標(biāo)記類別,分別是bad(未佩戴口罩) 和good(佩戴口罩)。標(biāo)注完成后,每一張圖片都對應(yīng)著一個與該圖片名稱相同的txt 文件,txt 文件中的每一行表示一個標(biāo)記實(shí)例,共5 列,從左到右分別表示標(biāo)簽類別、標(biāo)記框中心橫坐標(biāo)與圖片寬度的比值、標(biāo)記框中心縱坐標(biāo)與圖片高度的比值、標(biāo)記框?qū)挾扰c圖片寬度的比值、標(biāo)記框高度與圖片高度的比值。
實(shí)驗環(huán)境使用Ubuntu20.04 操作系統(tǒng),使用GeForce GTX 1080Ti 顯卡進(jìn)行運(yùn)算,顯存大小為11 GB,CPU 配置為Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz,CUDA 版本為11.4.0,Pytorch 版本為1.9.0,Python 語言環(huán)境為3.7.4。
本實(shí)驗總迭代次數(shù)為140 次,迭代批量大小設(shè)置為32,優(yōu)化器選擇SGD。模型訓(xùn)練時學(xué)習(xí)率使用Warmup[24]訓(xùn)練預(yù)熱,減緩模型在初始階段對小批量數(shù)據(jù)的過擬合現(xiàn)象,避免模型振蕩以便保證模型深層次的穩(wěn)定性。在Warmup 階段,偏置層的學(xué)習(xí)率由0.1 下降至0.01,其他的參數(shù)學(xué)習(xí)率由0 增加至0.01,Warmup 結(jié)束之后,采用余弦退火學(xué)習(xí)算法[25]對學(xué)習(xí)率進(jìn)行更新。
本文評估指標(biāo)采用平均精度(average precision,AP)、平均精度均值(mean AP, mAP)以及每秒檢測圖片的幀數(shù)(frames per second, FPS)這3 種在目標(biāo)檢測算法中較為常見的評價指標(biāo)來評估本文算法的性能。平均精度與精確率(precision) 和召回率(recall)有關(guān),精確率是指預(yù)測數(shù)據(jù)集中預(yù)測正確的正樣本個數(shù)除以被模型預(yù)測為正樣本的個數(shù);召回率是指預(yù)測數(shù)據(jù)集中預(yù)測正確的正樣本個數(shù)除以實(shí)際為正樣本的個數(shù)。上述衡量指標(biāo)的計算公式分別為:
式中,AP 值是指P-R 曲線面積,本文采用插值計算的方法來計算式(11)中的積分;mAP 的值是通過所有類別的AP 求均值得到;N表示檢測的類別總數(shù),本實(shí)驗中N=2,mAP 的值越大,表示算法檢測效果越好,識別精度越高;TP、FP 和FN 分別表示正確檢測框、誤檢框和漏檢框的數(shù)量。
在訓(xùn)練140 個迭代周期過程中,平均精度均值、精確率和召回率的變化曲線如圖10 所示??梢钥闯觯P驮谟?xùn)練的過程中,在Warmup 階段結(jié)束后的幾個迭代周期中,平均精度均值、精確率和召回率有些許下降,隨后隨著余弦退火算法對學(xué)習(xí)率的調(diào)整,模型逐漸達(dá)到收斂狀態(tài)。
圖10 模型在數(shù)據(jù)集上的訓(xùn)練過程
為進(jìn)一步驗證本文算法的有效性,將本文算法與文獻(xiàn)[23] 方法、AIZOO 方法、原始YOLOv5 算法在同一測試集上進(jìn)行測試,各項性能指標(biāo)比較結(jié)果如表2 所示。
表2 不同算法性能對比結(jié)果
從表2 中可以看出,相較于文獻(xiàn)[23] 方法、AIZOO 方法和原始YOLOv5 算法,本文算法在密集人群場景下對口罩這個小目標(biāo)的檢測表現(xiàn)效果更好,mAP 值可以達(dá)到94.88%,在原始YOLOv5 的基礎(chǔ)上,bad 和good 類別的AP 值分別提高了3.72%和5.38%,mAP 值提高了4.55%。本文算法在檢測速率上不及其他算法,F(xiàn)PS 為30.3,與原始YOLOv5相比,F(xiàn)PS 下降了11.3,檢測單張圖片的時間增加了9 ms,由于實(shí)時檢測一般要求檢測幀率大于25 幀/s,故本文算法仍能滿足實(shí)時性要求。本文算法與文獻(xiàn)[23] 方法、AIZOO 方法、原始YOLOv5算法進(jìn)行對比的檢測效果如圖12 所示。
從圖11 中可以看出,文獻(xiàn)[23] 方法在小目標(biāo)異常角度、人臉區(qū)域有遮擋的條件下表現(xiàn)較差;AIZOO 方法在檢測效果上整體表現(xiàn)稍好于文獻(xiàn)[23]方法,單幀檢測時間最少,F(xiàn)PS 最高;原始YOLOv5算法相較于前兩種方法表現(xiàn)相對較好,但在一些小目標(biāo)和存在遮擋條件下仍存在誤判或者漏檢的情況;與其他算法相比,本文算法在密集人群口罩佩戴檢測效果中表現(xiàn)突出,檢測精度有明顯上升,誤檢、漏檢現(xiàn)象明顯減少,對小目標(biāo)異常角度、人臉區(qū)域存在遮擋的魯棒性明顯提升。
圖11 檢測效果對比圖
本文在原有YOLOv5 算法的基礎(chǔ)上,分別從Mosaic 數(shù)據(jù)增強(qiáng)、特征提取器、損失函數(shù)和目標(biāo)框回歸4 個方面進(jìn)行改進(jìn),有效地增強(qiáng)了YOLOv5網(wǎng)絡(luò)模型對小目標(biāo)物體的檢測精度,改進(jìn)后的算法檢測速率相較于原始YOLOv5 算法有所降低,但仍能滿足實(shí)時性要求,可以直接應(yīng)用在醫(yī)學(xué)圖像、遙感圖像分析和紅外圖像中的小目標(biāo)檢測等實(shí)際場景中。