999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種改進CenterNet的輕量化目標檢測算法

2022-12-01 13:08:10李悅言程培濤杜淑幸
西安電子科技大學學報 2022年5期
關鍵詞:檢測

李悅言,程培濤,杜淑幸

(西安電子科技大學 機電工程學院,陜西 西安 710071)

近年來,基于深度學習的目標檢測取得了突破性的進展,成為目標檢測研究的主流方向[1]。基于深度學習的目標檢測算法可以分為基于候選區域的算法和基于回歸的算法[2]。基于候選區域的算法因為有區域建議網絡指導錨框的生成,所以檢測精度較高,代表算法有基于區域的卷積神經網絡算法(R-CNN)[3]、基于區域的快速卷積神經網絡算法(Fast R-CNN)[4]、基于區域的全卷積神經網絡算法(R-FCN)[5]和基于區域建議網絡的實時目標檢測算法(Faster R-CNN)[6]等。基于回歸的算法因為既沒有區域建議網絡,也沒有預設的錨框,所以檢測精度比基于候選區域的算法低,但檢測速度相對占優。另外,基于候選區域的目標檢測算法在一定程度上依賴于預先設定的錨框,這些錨框可以涵蓋大部分目標,但對于形變較大或者形狀不規則的目標檢測誤差較大;而基于回歸的算法不依賴于預先設定的錨框,通過對預測框進行分類和回歸得到最終的邊界框,能夠準確檢測不規則的目標,代表算法有YOLO[7]、單步多框目標檢測算法(SSD)[8]、全卷積一階段目標檢測算法(FCOS)[9]、基于角點對的目標檢測算法(CornerNet)[10]和基于關鍵點三元組的目標檢測算法(CenterNet)[11]等。

在機器人、自動駕駛和移動端等實際應用領域中,目標檢測任務需要在資源有限的平臺上即時執行,對目標檢測算法的參數量和檢測速度有較高的要求。針對這些問題,FORREST等[12]提出了SqueezeNet。該算法用1×1卷積核替換3×3卷積核,將參數量減少為原來的1/9,并將下采樣操作置后,以獲取更大的特征圖,保留更多信息,提高了分類的準確率。ANDREW等[13]提出了MobileNet。該算法使用3×3的深度可分離卷積代替3×3的標準卷積,大幅降低了網絡的參數量和計算量,實現了移動端的目標檢測。HEI等[10]提出了基于角點對的CornerNet算法,通過選取目標的左上角點和右下角點來確定邊界框,最后利用非極大值抑制對邊界框進行篩選。該算法在MS-COCO test-dev數據集上檢測精度達到了約37.8%,但其參數量大,對于密集目標檢測效果不理想,而且檢測速度較慢。針對這一問題,HEI等[14]又提出了一種輕量級算法ConrerNet_Squeeze,降低了CornerNet的參數量,實現了實時目標檢測,但檢測精度有所降低。為了解決CornerNet對密集目標檢測結果不理想的問題,DUAN等[11]提出了CenterNet,解決了CornerNet產生無效錨框的問題,改進了角點池化層并加入了中心池化層分支,在MS-COCO test-dev數據集上檢測精度達到了約41.6%。但該算法依然存在參數量大、檢測速度慢的問題。針對這一問題,筆者提出了一種基于改進CenterNet的輕量化目標檢測算法CenterNet-encoder,大幅降低了算法的參數量,提高了算法的檢測速度,算法的主要創新點如下:

(1) 對沙漏網絡進行了優化設計。受CornerNet-Lite的啟發,在沙漏網絡中引入使用3×3深度可分離卷積的fire模塊,降低了算法參數量,提高了算法的檢測速度。另外,通過去除沙漏網絡中的最大池化層來抑制空洞卷積產生的棋盤效應。

(2) 在head和backbone之間加入由一個卷積核為3×3的空洞卷積、BN層以及激活函數組成的編碼層,在增大感受野的同時,降低參數量。

(3) 使用4×4反卷積替換上采樣,減少內存占用并提升算法精度。

為了評估CenterNet-encoder的性能,筆者選擇MS-COCO train2014作為訓練集,test-dev作為測試集進行了實驗驗證。實驗結果表明,相比于其他算法,筆者提出的算法在大幅減少參數量的基礎上提高了算法的推理速度和檢測精度。

1 CenterNet算法原理

1.1 算法框架

CenterNet是一種基于回歸的目標檢測算法,其架構如圖1所示。該算法選用沙漏網絡作為backbone,將沙漏網絡輸出的特征圖分別輸入級聯角點池化層和中心點池化層,得到一對角點和中心點來表示目標。與CornerNet不同的是,CenterNet為中心點嵌入特征熱圖并且預測其偏移,根據得分選取前k個中心點,并設定一個中心區域,如果中心區域中沒有中心點存在,則認為該邊界框是不可取的;通過柔性非極大值抑制算法去除篩選過的邊界框。

圖1 CenterNet算法架構圖

1.2 級聯角點池化和中心點池化

CenterNet對CornerNet算法的角點池化層進行了改進,提出了由左上角點池化層和右下角點池化層組成的級聯角點池化層。圖2(a)為左上角點池化層的結構圖,為了找到目標的左上角點,左上角點池化層在上池化層前加入一個左池化層;同理,為了找到目標的右下角點,在右下角點池化層中的下池化層前加入右池化層。疊加兩個角點池化層得到的左上角點特征熱圖和右下角點特征熱圖,即可得到檢測目標的角點熱圖。為了找到物體的幾何中心,CenterNet算法提出了另一個分支——中心池化層分支,中心池化有助于更好地檢測中心點,其結構如圖2(b)所示。要確定特征圖中的一個像素是否為中心點,CenterNet只需要串聯左池化層和右池化層以在水平方向取得最大值,串聯上池化層和下池化層以在垂直方向取得最大值。

(a) 左上角點池化層

2 基于改進CenterNet的輕量化算法

CenterNet雖然在檢測效果上取得了不錯的成績,但其參數量達到了210×106,檢測速度較慢,處理一張圖片平均需要166 ms,無法滿足輕量化目標檢測的需求。針對這一問題,筆者提出了一種輕量化目標檢測算法CenterNet-encoder,其網絡架構如圖3所示。該算法使用一個104層的沙漏網絡作為backbone,并將沙漏網絡中的殘差模塊替換為CornerNet-Lite中的fire模塊,以降低算法的參數量,提高檢測速度。在沙漏網絡中使用4×4的反卷積代替上采樣操作,并去除了最大池化層來減少空洞卷積帶來的棋盤效應,為了解決輸入圖像在經過沙漏網絡時會造成部分信息丟失的問題,在backbone和head之間加入了編碼層,在不損失分辨率的前提下增大感受野。

圖3 CenterNet-encoder網絡架構圖

算法的工作原理如下:首先對輸入圖像進行預處理,將圖像下采樣兩次后輸入沙漏網絡,提取圖像的特征熱圖;CenterNet-encoder然后將特征熱圖輸入編碼層,在不損失分辨率的前提下增大其感受野;接下來利用角點預測分支通過級聯角點池化層預測目標的左上角點和右下角點,利用中心點預測分支通過中心點池化層預測目標的中心點,通過中心點是否在中心區域內對邊界框進行篩選;最后,使用柔性非極大值抑制算法去除冗余的邊界框,得到最終的檢測結果。

2.1 Fire模塊

為了在降低算法參數量的同時保證其效果不會大幅降低,引入了CornerNet-Lite中的fire模塊。與CenterNet中的殘差模塊相比,fire模塊將殘差模塊中的3×3標準卷積替換為1×1標準卷積,卷積核尺寸從3×3降低到1×1,大幅降低了算法的參數量,另外,fire模塊還使用深度可分離卷積來進一步降低算法的參數量,提高算法的處理速度,其結構如圖4所示。首先是一個1×1標準卷積和批量歸一化層,接著進入兩個分支,分別是帶有批量歸一化層的1×1標準卷積分支和3×3深度可分離卷積分支,將上述兩個分支級聯起來,經過一個批量歸一化層,最后引入跳躍連接和Relu激活函數進行連接。

圖4 Fire模塊結構

2.2 編碼層

筆者提出的算法在輸入圖像進入沙漏網絡之前對其進行預處理,經過兩次下采樣,將圖像分辨率從511×511下降至64×64。因此輸入圖像在經過沙漏網絡后會丟失部分特征信息,導致特征圖細節不足,影響角點預測分支和中心點預測分支對角點和中心點的預測。為了解決這一問題,在backbone和head之間加入了編碼層,結構如圖5所示。編碼層由一個卷積核為3×3、擴張率為2的空洞卷積、批量歸一化層和Relu激活函數組成,通過對編碼層中空洞卷積的擴張率進行調節,使3×3的卷積核得到恰當的感受野,既能讓輸出囊括更多尺度的信息,減少局部信息的丟失,又能抑制棋盤效應。筆者參考文獻[15],將擴張率設置為2。

圖5 編碼層結構

2.3 損失函數

(1)

其中,α、β和γ分別表示Lpull、Lpush和Loff的權重。參考CenterNet,將超參數設置為α=β=0.1,γ=1,使用Focalloss來計算角點和中心點的熱圖損失,設置pull損失和push損失訓練網絡對角點進行匹配和分離。

與CenterNet中使用SmoothL1loss對邊界框進行回歸不同,使用MSEloss對候選框角點和中心點的偏移量進行回歸,以加快損失函數的收斂。中心點的偏移損失公式如下:

(2)

(3)

3 實驗結果及其分析

為了驗證筆者提出算法的有效性,將該算法與YOLOv3[16]、CornerNet_Squeeze、CornerNet和CenterNet算法進行了對比實驗。實驗是在Ubuntu18.04.5操作系統下進行的,硬件配置為AMD5900X CPU,32 GB內存,兩張GeForce RTX 3090顯卡,運行庫版本為Cuda11.2,軟件環境為Pytorch1.8.0。

3.1 實驗設置

實驗采用的數據集是MS-COCO數據集[17]。該數據集包含80類、150萬個目標實例,包含了大量的小目標,而且類別分布不均衡,是一個非常具有挑戰性的數據集。使用trainval35k[18]數據集進行訓練,它包含8 000個訓練圖像和3 500個驗證圖像。選擇平均精確率(Average Precision,AP)來評價檢測算法的性能,平均精確率主要包含10個不同的交并比閾值,從0.50到0.95,步長設置為0.05。使用MS-COCO test-dev數據集作為最終測試集,設置的置信度閾值為0.5。

訓練模型時,batch size設置為32,總迭代次數為8.4×105,前7.2×105次迭代學習率設置為2.5×10-4,后1.2×105次迭代學習率設置為2.5×10-5,輸入圖像的分辨率為511×511。在進入沙漏網絡之前進行圖像預處理,將分辨率降低為64×64后輸入到沙漏網絡中。

筆者的backbone是堆疊沙漏網絡[19],包括52層沙漏網絡和104層沙漏網絡,前者只有1個沙漏模塊,而后者有兩個沙漏模塊,從熱圖中選擇前70個中心點、70個左上角點和70個右下角點去檢測邊界框,并使用柔性非極大值抑制[20]來消除冗余的邊界框,最終根據它們的置信度得分[21]選擇前100個邊界框作為最終的檢測結果。

3.2 實驗結果與分析

將筆者的CenterNet-encoder算法與YOLOv3和CornerNet_Squeeze這兩種輕量化目標檢測算法進行了對比實驗,實驗結果如表1所示。從表1可以看出,CenterNet-encoder與YOLOv3相比,雖然檢測速度相差不大,但參數量相比YOLOv3下降了約24%,檢測精度提升了約18.5%;與CornerNet_Squeeze相比,雖然檢測速度變慢,參數量有所增加,但平均檢測精度比CornerNet_Squeeze高約6.1%。

表1 文中法與YOLOv3、CornerNet_Squeeze參數量、速度和精度比較

由于文中提出的CenterNet-encoder算法是在CenterNet算法的基礎上進行的改進,所以將CenterNet-encoder算法與其他基于角點對的算法進行了對比實驗,實驗結果如表2所示。從表2中可以看出,筆者提出的CenterNet-encoder算法無論是參數量、速度還是精度都要優于backbone為Hourglass-52的CornerNet算法。與CenterNet算法以及backbone為Hourglass-104的CornerNet算法相比,雖然CenterNet-encoder算法的檢測精度略有下降,但其參數量大幅下降,檢測速度也大幅提升。

表2 文中算法與基于角點對的算法參數量、速度和精度比較

另外,為了驗證MSEloss的有效性,通過實驗對比了SmoothL1loss和MSEloss對算法平均檢測精度的影響[22],實驗結果如表3所示。從表3中可以看出,使用SmoothL1loss計算角點和中心點的偏移時,最終得到的AP、AP50和AP75值分別為39.4%、58.4%和43.0%,對小目標、中目標和大目標的檢測精度分別為19.5%、42.6%和55.4%;而使用MSEloss時,AP、AP50和AP75分別提升了約1.1%、1.1%和1.3%,對于小目標、中目標和大目標的檢測精度分別提升了約1.2%、1.9%和0.9%。

表3 不同偏移損失有效性的對比

圖6和圖7給出了不同算法檢測結果的主觀質量對比圖。由圖6可以看出,YOLOv3算法和CornerNet_Squeeze算法漏檢了手提包、花盆等目標,而且CornerNet_Squeeze算法的檢測結果中冗余邊界框較多,CornerNet算法和CenterNet算法雖然沒有漏檢手提包和花盆等目標,但其檢測結果中存在較多的冗余邊界框,而文中算法不但準確地檢測出了更多目標,而且冗余邊界框比其他算法都少。由圖7可以看出,YOLOv3算法和CornerNet_Squeeze算法只能檢測出兩個人,漏檢了照相機、牙刷等目標,CornerNet算法雖然檢測出了瓶子,但對于人的檢測邊界框不精確;CenterNet算法漏檢了一個牙刷、相機和瓶子,對于人的檢測也不精確;而筆者提出的算法不僅很好地檢測出兩個人,而且也準確地檢測出了更多的目標。

(a) 原圖

(a) 原圖

綜上所述,筆者提出的CenterNet-encoder算法對于密集目標的處理以及復雜環境的處理[23]優于YOLOv3、CornerNet和CornerNet_Squeeze,在檢測速度上優于CenterNet和CornerNet。

4 結束語

筆者提出了一種基于CenterNet的輕量化目標檢測算法CenterNet-encoder。該算法將沙漏網絡中的殘差模塊替換為fire模塊,并在fire模塊中引入深度可分離卷積,降低了算法的參數量;為了在不損失分辨率的前提下擴大感受野,在backbone和head之間設計了新的編碼層,編碼層使用3×3的空洞卷積,并用4×4的反卷積代替上采樣操作;最后,使用MSEloss對邊界框進行回歸,加快算法的收斂速度,并進一步提升了算法的檢測精度。實驗結果表明,雖然文中算法與原算法相比,檢測精度稍有降低,但文中算法的參數量僅為47×106,相比CenterNet的210×106下降了約77.6%,檢測一張圖片平均耗時57 ms,相比CenterNet,檢測速度提升約59%。然而,該算法的檢測精度特別是對小目標的檢測效果還有進一步提升的空間,未來將朝著這一方向進行改進,并且進一步提升算法的檢測速度,力爭實現實時目標檢測。

猜你喜歡
檢測
QC 檢測
“不等式”檢測題
“一元一次不等式”檢測題
“一元一次不等式組”檢測題
“幾何圖形”檢測題
“角”檢測題
“有理數的乘除法”檢測題
“有理數”檢測題
“角”檢測題
“幾何圖形”檢測題
主站蜘蛛池模板: 99热这里只有精品久久免费 | 国产在线视频二区| 免费观看三级毛片| 99精品伊人久久久大香线蕉| 免费啪啪网址| 久久久成年黄色视频| 男女男免费视频网站国产| 日本三级精品| 午夜限制老子影院888| 午夜老司机永久免费看片| 丁香婷婷激情网| 国产鲁鲁视频在线观看| 国产剧情无码视频在线观看| 亚洲综合在线网| 日本精品影院| 久久国产香蕉| 亚洲中文字幕日产无码2021| 久久中文字幕2021精品| 在线国产综合一区二区三区 | 亚洲精品爱草草视频在线| 国产精品专区第一页在线观看| 亚洲成人福利网站| 深爱婷婷激情网| 久综合日韩| 国产丝袜啪啪| 天堂岛国av无码免费无禁网站| 亚洲一区二区三区国产精品| 制服丝袜 91视频| 91福利一区二区三区| 一级高清毛片免费a级高清毛片| 色综合久久综合网| 黄色不卡视频| 国产精品jizz在线观看软件| 极品私人尤物在线精品首页| 亚洲Av综合日韩精品久久久| 国产精欧美一区二区三区| 国产无吗一区二区三区在线欢| 久久一级电影| 国产青榴视频在线观看网站| 国产福利一区二区在线观看| 亚洲中文字幕在线观看| 国产白浆一区二区三区视频在线| 国产精品3p视频| 久热中文字幕在线| 无码人中文字幕| 日韩高清中文字幕| 在线视频精品一区| 狠狠亚洲五月天| 99久久国产综合精品2020| 欧美特黄一级大黄录像| 伊在人亚洲香蕉精品播放 | 四虎影视8848永久精品| 996免费视频国产在线播放| 99精品视频九九精品| 1024你懂的国产精品| 亚洲愉拍一区二区精品| 99精品视频播放| 真实国产精品vr专区| 欧亚日韩Av| 丝袜美女被出水视频一区| 亚国产欧美在线人成| 在线免费观看a视频| 九九视频免费在线观看| 久久精品国产一区二区小说| 国产性猛交XXXX免费看| 国产在线精品香蕉麻豆| 亚洲视频二| 中文字幕有乳无码| 99在线视频免费| 草逼视频国产| 看av免费毛片手机播放| 露脸国产精品自产在线播| 国产成人你懂的在线观看| 欧美日韩在线成人| 直接黄91麻豆网站| 91精品啪在线观看国产91九色| 国产后式a一视频| 无码在线激情片| 一本大道在线一本久道| 99九九成人免费视频精品| 狼友av永久网站免费观看| 国产一区二区三区在线观看视频|