趙泊林,張曉龍
(1.武漢科技大學計算機科學與技術(shù)學院,湖北 武漢 430065;2.武漢科技大學大數(shù)據(jù)科學與研究院,湖北 武漢 430065)
目標檢測是計算機數(shù)字圖像處理和計算機視覺領(lǐng)域最熱門的研究方向之一.其目的是在輸入的圖片或者視頻中定位出所有出現(xiàn)的目標,并確定每個目標所屬的類別.在智能化交通系統(tǒng)、智能監(jiān)控系統(tǒng)、軍事目標檢測等方面具有廣泛的應(yīng)用價值.
傳統(tǒng)的目標檢測方法基于滑動窗口的區(qū)域選擇策略[1],使用大小不同的窗口,在圖像中以一定步長進行滑動,選擇窗口中的區(qū)域作為感興趣區(qū)域,然后對感興趣區(qū)域使用針對目標特別設(shè)計的提取器提取圖像中相關(guān)區(qū)域的特征,最后使用專門為目標類別預訓練過的分類器對感興趣區(qū)域進行分類和檢測.但該方法沒有針對性,時間復雜度高,窗口冗余,且人工設(shè)計的特征對于多樣性的變化沒有較強的魯棒性.
基于此類方法,A.Krizhevsky等[2]提出了感興趣區(qū)域region proposal策略,常用的region proposal策略有選擇性搜索[3]和邊界框回歸[4].其原理是利用圖像中的邊緣、紋理以及顏色等特征信息預先找出目標在圖中可能會出現(xiàn)的位置,再對所提取到的區(qū)域進行分類.使用該策略能降低算法的時間復雜度,同時在選取較少窗口的情況下仍能獲得較高的召回率.但是由于這些策略依賴于大量的感興趣區(qū)域,所以在計算上需要花費巨大的代價.為解決這個問題,R.Girshick等[5]將region proposal策略與卷積神經(jīng)網(wǎng)絡(luò)相結(jié)合,提出了R-CNN檢測算法.該算法優(yōu)化了檢測窗口冗余的現(xiàn)象,提高了目標檢測性能,但是這種基于深度學習的目標檢測策略是通過遍歷整張圖像以尋找與目標特征相似的區(qū)域,在區(qū)域選擇上缺少推理策略.A.Vezhnevets等[6]提出了主動目標檢測策略,該策略在視覺任務(wù)中以順序決策的形式,利用時間序列收集先前時刻信息,并通過此信息決策滑動窗口的位置,有效地減少冗余的窗口和檢測的時間.J.C.Caicedo等[7]在此基礎(chǔ)上提出基于主動目標的檢測策略,該策略使用深度強化學習[8]中Deep Q-Network[9]算法訓練智能體(agent),利用學習到的經(jīng)驗,改變檢測區(qū)域位置和大小來選擇目標.M.Bellver等[10]提出了一種基于深度強化學習的分層目標檢測策略,該策略的主要原理是根據(jù)智能體收集到的信息,不斷地將注意力集中在包含更多信息的感興趣區(qū)域里,然后從這些感興趣區(qū)域里選擇最有可能包含目標的區(qū)域.相比與文獻[7]的方法,該方法檢測速度有了較大的提升,但是卻降低了檢測精度.其主要原因是在文獻[10]方法中,使用了R.Girshick等[11]提出的RoIPooling層,該層的作用是根據(jù)感興趣區(qū)域的位置坐標,在特征圖中將相應(yīng)區(qū)域池化為固定尺寸,以便進行后續(xù)的目標檢測.RoIPooling層的優(yōu)點是在訓練時實現(xiàn)端到端的操作,提高目標檢測的速度.但是RoIPooling層將感興趣區(qū)域池化為固定尺寸的時候采用了最近鄰插值法,造成了圖像的像素偏差,從而降低了最后的檢測精度.
針對上述問題,本文參考了MASK-RCNN[12]中的方法提出了感興趣區(qū)域聚集層的改進策略.該方法使用雙三次插值法代替了最近鄰插值法,大大減少了圖像像素的偏差.相比較RoIPooling層,感興趣區(qū)域聚集層在不降低檢測速度的同時提高了目標檢測的精度.
使用牛津大學的VGG-16[13]網(wǎng)絡(luò)模型對圖像進行特征提取,獲得特征圖與感興趣區(qū)域,然后進入RoIPooling層.
RoIPooling層的作用是從每個感興趣區(qū)域中提取小的特征圖.首先將一個為浮點數(shù)坐標的感興趣區(qū)域采用最近鄰插值法強制取整為特征圖的離散粒度;然后將該取整后的感興趣區(qū)域平均分割成7×7個矩陣單元,在分割時對每一個矩陣單元進行強制取整;最后將每個矩陣單元覆蓋通過最大池化進行特征值聚合.強制取整是通過計算[X/32]在連續(xù)坐標X上進行的,其中32是特征圖的縮放步長,通常的操作是把坐標值四舍五入.同樣,強制取整也在劃分為矩陣單元(7×7)時進行的.RoIPooling層的優(yōu)點是在訓練時可以實現(xiàn)端到端的操作,提高目標檢測的速度.由于使用模型回歸方法得到的感興趣區(qū)域的坐標通常是浮點數(shù),這些取整會導致感興趣區(qū)域和提取的特征之間產(chǎn)生偏差.
圖1 RoIPooling層
RoIPooling層具體操作如圖1所示.圖1中輸入一張圖片大小為960像素×960像素,圖片上有一個700像素×700像素的感興趣區(qū)域(如圖中的黑色方框).經(jīng)過VGG-16網(wǎng)絡(luò)提取圖片特征后,特征圖縮放步長為32.因此,圖片和感興趣區(qū)域的大小都縮小為原來的1/32.圖片邊長為960像素縮小1/32后邊長正好為整數(shù)30像素.但是感興趣區(qū)域邊長為700像素縮小為1/32后的邊長為 21.87像素.于是RoIPooling層采用最近鄰插值法直接將它強制取整為21像素.接下來需要把感興趣區(qū)域內(nèi)的特征進行池化并且平均分割成7×7個矩形區(qū)域.因為感興趣區(qū)域的邊長為21.87像素,平均分成7×7個矩形區(qū)域后每個邊長為3.12像素.于是RoIPooling層再次使用最近鄰插法把它強制取整到3像素.經(jīng)過兩次取整的操作,感興趣區(qū)域的大小較縮放前已經(jīng)出現(xiàn)了較明顯的偏差.這個偏差會影響目標檢測的精度.
為了解決RoIPooling層感興趣區(qū)域精度偏差的問題,本文提出使用感興趣區(qū)域聚集層改進.該方法去掉了RoIPooling層中強制取整的操作,使抽取的特征與輸入完全對齊.具體步驟如下:
圖2 雙三次插值法
首先避免對感興趣區(qū)域的邊界或矩陣單元進行任何取整操作;然后使用雙三次插值法計算每個感興趣區(qū)域中矩陣單元中四個規(guī)則采樣位置的輸入特征的精確值;最后使用最大池化聚合結(jié)果.雙三次插值法見圖2.
本文采用點數(shù)為4時的固定位置.首先將每個矩陣單元平均分成4個小方塊,使用線性插值法求出每個小方塊中4個點的坐標,如圖2中的黑點,然后在根據(jù)每個矩陣單元中共計4×4個點的坐標,再使用雙三次插值法求出中點即縮放后的像素點,最后進行最大池化操作,得出固定尺寸的感興趣區(qū)域.本文的雙三次插值方法的基函數(shù)選取的是BiCubic函數(shù),公式為
(1)
其中a取值為-0.5.矩陣單元中的中點即像素點(x,y),使用線性插值法取周圍4個小方塊中的4個坐標一共16個坐標作為鄰域點(xi,yj),i,j的取值為0,1,2,3.然后代入公式(1)中,求出權(quán)重W(x),將權(quán)重求出后代入雙三次插值法公式,最后求出縮放后的像素點(x,y).雙三次插值法公式為
(2)
其中:(x,y)是縮放后的像素點坐標;xi,yj是像素點周圍用線性插值法得到的16個鄰域點;W(x-xi)和W(y-yj)是由公式(1)得到的權(quán)重,將16個鄰域點代入公式(2),可以得到最后縮放的像素點(x,y).
1.2.1 馬爾可夫決策
在每個時間步驟中,智能體每一個動作都會產(chǎn)生一個獎勵.根據(jù)獎勵決定圖像需要在哪個區(qū)域進行移動,以便后續(xù)找到需要檢測的目標.將問題轉(zhuǎn)化為馬爾可夫決策,該過程提供了一個框架,在結(jié)果部分不確定時對決策進行建模.
在建立目標檢測模型前,首先定義參數(shù)化馬爾可夫決策過程,包括狀態(tài)、動作、獎勵3個過程.
狀態(tài):狀態(tài)由候選區(qū)域和記憶向量組成.一個記憶向量記錄了為搜尋某個物體最近完成的4個動作,并將其用one-hot編碼,因為有6種動作,因此記憶向量一共有24維.
動作:有兩類可能的動作.第一類表示當前觀察區(qū)域發(fā)生變化的移動動作,如圖3所示.第一類動作又包含5種智能體可能會發(fā)出的動作;第二類動作表示找到對象并結(jié)束搜索的終端動作.
圖3 智能體的6種動作
獎勵:本文使用由Caicedo和Lazebnik提出的獎勵函數(shù)[7].動作的獎勵函數(shù)公式為
Rm(s,s′)=sign(IoU(b′,g)-IoU(b,g)).
(3)
IoU全稱Intersection over Union即重疊率,公式為
(4)
最后結(jié)束動作的獎勵函數(shù)公式為
(5)
給定一個狀態(tài)s,對那些向b′區(qū)域移動的行動給予獎勵,該區(qū)域與目標值g的重疊部分大于上一步考慮的b′區(qū)域.否則,這些行為將受到懲罰.對于觸發(fā)動作,如果實際區(qū)域b與目標區(qū)域的重疊部分大于某個閾值τ,則獎勵為正,否則為負.因此本文設(shè)置τ=0.5,閾值大于0.5即為檢測成功,獎勵系數(shù)η為3.
1.2.2 Deep Q-Network(DQN)算法
DQN是在Q-learning[8]的基礎(chǔ)上改進而來.比傳統(tǒng)的Q-learning有3點改進:設(shè)置經(jīng)驗回放,打破數(shù)據(jù)間的關(guān)聯(lián);利用卷積神經(jīng)網(wǎng)絡(luò)逼近值函數(shù)[14];設(shè)置目標網(wǎng)絡(luò)來單獨處理時間差分算法的TD偏差,進一步打破關(guān)聯(lián)性.
本文中的智能體獎勵取決于所選的動作a狀態(tài)s,由函數(shù)Q(s,a)控制,該函數(shù)通過Q學習進行估計.基于Q(s,a),智能體將選擇與最高獎勵相關(guān)聯(lián)的操作.Q-Learning使用Bellman方程為
Q(s,a)=r+γmaxaQ(s′,a′)
(6)
迭代更新動作選擇策略,其中:s和a為當前狀態(tài)相應(yīng)地行動;r為即時獎勵;maxaQ(s′,a′)為未來獎勵;γ為折扣因子.
用一個經(jīng)過強化學習訓練的深度Q網(wǎng)絡(luò)來代替Q函數(shù),并使用貪婪策略[15]訓練,該策略從ε=1開始,然后按0.1的步驟減少,直到ε=0.1.起初采用隨機的動作,之后在每個epoch中,智能體更依賴于學到的策略來行動,為了幫助智能體學習,每次強制當前檢測區(qū)域與圖片目標區(qū)域的比值大于0.5,通過這種方法,可以加速訓練.智能體總是在做探索,所以不會陷入局部的最低限度.
在DQN中為了解決數(shù)據(jù)間的相關(guān)性,設(shè)置了經(jīng)驗回放池,在學習過程中,智能體將數(shù)據(jù)存儲到一個數(shù)據(jù)庫中,再利用均勻隨機采樣的方法從數(shù)據(jù)庫中抽取數(shù)據(jù),設(shè)置的數(shù)據(jù)庫大小為1 000,每次抽取的數(shù)據(jù)量為100.此外根據(jù)馬爾可夫策略,平衡當前與未來的獎勵,折扣因子γ設(shè)置為0.9,模型見圖4.
圖4 模型結(jié)構(gòu)
本文在感興趣區(qū)域聚集層后面加入了一個判斷策略,如果該圖像中有需要檢測的物體時,會先判斷需要檢測目標區(qū)域是否和圖像重合,若重合直接輸出該圖片,則表示檢測完成,不再需要通過檢測模型進行檢測.使用學習率為1×10-6的Adam優(yōu)化器訓練DQN網(wǎng)絡(luò),該網(wǎng)絡(luò)的輸入是區(qū)域向量和記憶向量,輸出6個可能的動作值,該動作值的具體操作為左上、右上、左下、右下、中心、結(jié)束.DQN網(wǎng)絡(luò)由3個完全連接層組成,每層由1 024個神經(jīng)元組成.前兩個全連接層的后面使用relu激活函數(shù),最后一層的全連接層使用linear激活函數(shù),三層全連接層都使用dropout方法進行訓練.
本文使用正態(tài)分布對DQN的權(quán)重初始化,并對每個模型進行了30個epoch的訓練,基于keras2.1.6框架,CUDNN V7.0,CUDA V9.0,單塊Tesla V100-SXM2GPU的環(huán)境用于訓練模型.本文使用了Pascal VOC2012[16]數(shù)據(jù)集,數(shù)據(jù)集中包含了2007—2012年的數(shù)據(jù),本文對飛機、鳥、牛、公交車、貓、自行車等6個類進行訓練和測試.每個類訓練圖片為11 540 張,測試圖片為4 952張.
實驗結(jié)果見圖5,紅色框表示目標區(qū)域,藍色框為智能體最后的動作區(qū)域.智能體不斷與環(huán)境進行交互獲取經(jīng)驗從而逐漸確定目標所在的位置.圖5(a)的飛機和圖5(b)的鳥,因為需要檢測的目標比較小,智能體需要更多的步數(shù)經(jīng)驗才能檢測到目標.圖5(c)中的牛,由于需要檢測的目標較大,智能體僅需要3步的經(jīng)驗就可以檢測出牛目標所在的位置.
(a)飛機
(b)鳥
2.3.1 重疊率
重疊率(Intersection over Union)英文縮寫IoU值,指的是檢測模型最后預測出來的框與原來圖片中標記的框的重合程度.計算方法即檢測結(jié)果Detection Result與目標真實值Ground Truth 的交集比上它們的并集.在目標檢測中,若IoU>0.5為對一個物體檢測成功.
2.3.2 精準率和召回率
本文對比的是傳統(tǒng)的強化學習模型[7].精準率指的是在識別出來的圖片中TP所占的比率.TP:正確識別的正樣本,同時IoU>0.5,TP+FP:檢測模型輸出的圖片總數(shù).召回率指的是測試集中所有正樣本樣例中,被正確識別為正樣本的比例.TP+FN:測試集中需要檢測圖片的總數(shù).本文的閾值設(shè)置為0.1~1.5之間,步長為0.1,置信度選取為最后智能體動作IoU大于0.5的6個動作值.基于Pascal VOC2012數(shù)據(jù)集精準率-召回率曲線如圖6所示.精準率(P)和召回率(R)公式為:
(6)
(7)
圖6中虛線為本文的模型,實線為傳統(tǒng)的強化學習模型.由圖6可以看出,虛線模型和實線模型在統(tǒng)一召回率下,虛線模型的精準率更高,隨著召回率的增加,虛線模型比實線模型的精準率整體都高,且達到峰值后下降速率減緩,下降的越緩說明模型越穩(wěn)定,虛線模型和實線模型相比與坐標軸圍成的面積更大,圍成的面積越大模型的檢測效果越好,所以虛線模型效果更好.其中圖6(a)—(c)和(f)中虛線模型圍成的面積最大,其主要原因是感興趣區(qū)域聚集層將感興趣區(qū)域池化為固定尺寸時采用了雙三次插值法,保留了感興趣區(qū)域中坐標為浮點數(shù)時像素點上的數(shù)值,對小目標的處理比起RoIPooling層精度更高,因此提升較為明顯.
(a)飛機
(b)鳥
(c)牛
(d)公交車
(e)貓
(f)自行車
2.3.3 步數(shù)與目標數(shù)
圖7 步數(shù)與目標數(shù)的關(guān)系
一個優(yōu)秀的智能體會在盡可能少的步數(shù)中檢測出目標區(qū)域,本文只統(tǒng)計IoU大于0.5的目標區(qū)域,智能體的步數(shù)為10,當0步就是直接輸出原始圖與目標區(qū)域重合的圖片,此時屬于分類問題.步數(shù)與目標數(shù)的關(guān)系如圖7.
左側(cè)柱形是本文模型,右側(cè)陰影柱形是傳統(tǒng)強化學習模型[7].由圖7可以看出左側(cè)柱形模型在前4步就可以檢測出絕大部分目標區(qū)域,在同樣的步數(shù)下比傳統(tǒng)模型檢測的目標數(shù)更多,檢測效率更高.而右側(cè)陰影柱形模型需要更多的步數(shù)才能檢測出目標區(qū)域,檢測目標數(shù)少,檢測效率較低.
2.3.4 平均精度與Mean Average Precision(MAP)
表1 基于Pascal VOC2007測試集中AP的測試結(jié)果
本文方法與傳統(tǒng)常見的目標檢測方法Regionlets[17]、DQN[7]、RCNN[5],進行了比較.由表1可以看出:本文使用感興趣區(qū)域聚集層的強化學習方法要整體上要優(yōu)于DQN,其中飛機、鳥、牛,這些類中含有小目標較多的圖片提升明顯,分別提升了15.7%,20.2%,19.7%.但是相對于測試集中小目標數(shù)量較少的圖片提升率就不是很高,例如:公交車、貓、自行車的提升率只有10.8%和9.9%,11.5%.與RCNN方法相比,飛機、鳥、公交車、貓、牛、自行車等類分別提升了7%,8.6%,4.7%,5.1%,1.6%,3.7%.整體上有一定優(yōu)勢.
基于Pascal VOC2007測試集中MAP的測試結(jié)果見表2.它是衡量一個檢測器好壞的重要指標.本文方法最后的MAP達到了66.1%,相比較與傳統(tǒng)的DQN方法,提升效果十分明顯,提升了16.8%,比RCNN的方法提升了6.9%,也有一定優(yōu)勢.
表2 基于Pascal VOC2007測試集中MAP的測試結(jié)果
本文針對深度強化學習在目標檢測領(lǐng)域進行了研究,提出了一種基于感興趣區(qū)域聚集層的改進策略,改進傳統(tǒng)深度強化學習中使用RoIPooling層將感興趣區(qū)域池化為固定尺寸時造成的像素偏差導致檢測精度下降的問題.感興趣區(qū)域聚集層策略的核心思想是使用雙三次插值法代替最近鄰插法,保持了感興趣區(qū)域中坐標為浮點數(shù)時像素點上的數(shù)值.實驗結(jié)果表明,在Pascal VOC2012訓練集和Pascal VOC2007測試集上,本文的方法可以在不同種類的目標對象、不同大小的目標、不同閾值的IoU的實驗條件下提高目標檢測的精度,尤其是對圖像中含有較多小目標時提升更為明顯.智能體可以在執(zhí)行較少的動作下,取得更多符合條件的感興趣區(qū)域,提高了智能體的檢測效率.并且在精準率召回率曲線上優(yōu)于傳統(tǒng)的深度強化學習方法,在平均精度上本文的方法比已有的方法具更好的檢測性能.