陳 偉,楊 毅,李小毛,劉 遠,張 鑫
(上海大學機電工程與自動化學院,上海200444)
無人水面艇(unmanned surface vehicle,USV)是一種新型的海上智能體,可以用來執行偵察、反潛、巡邏等軍事任務,以及搜救、導航、水文地理勘察等民用任務.無人水面艇視覺系統的作用是代替人眼,對海上的目標以及障礙物進行檢測、跟蹤和測量,并進行場景和行為的理解[1].基于視覺的海上船艇檢測是無人水面艇視覺系統最主要的任務之一,是實現無人水面艇對海上船艇進行識別和跟蹤的基礎,因此研究海上船艇的特征模型和目標檢測方法,對無人水面艇的發展具有重要意義.
在過去的十幾年里,目標檢測一直是計算機視覺領域的研究熱點,國內外許多學者在這方面進行了大量的研究,取得了一些令人矚目的成果.Viola等[2]使用Haar-like特征,提出了AdaBoost算法框架,在人臉檢測上取得了較好的成果;Dalal等[3]提出了將方向梯度直方圖(histogram of oriented gradient,HOG)作為特征,利用支持向量機(support vector machine,SVM)訓練分類器進行行人檢測,在MIT(Massachusetts Institute of Technology)行人數據集上的檢測效果不錯.除此之外,目標檢測的研究還聚焦在自然界中一般物體的檢測.基于自然界中的大部分物體都具有運動能力,會產生非剛體形變的特性,Felzenszwalb等[4]提出了混合多尺度可變形部件模型(mixture of multiscale deformable part model,MMDPM),該模型基于HOG特征進行改進,對于目標的多視角問題,采用了多組件策略;而對于目標本身的形變問題,則采用了基于圖結構(pictorial structure)的部件模型策略.然而,這些傳統的目標檢測算法有一個共同點,即均采用了“滑窗式”搜索策略.這種策略是通過將分類器在圖像的每一個窗口位置上滑動遍歷,來檢測目標在圖像中的位置,這里滑動窗口的數量和分類器的檢測尺度是線性相關的.在單一尺度下,對每張圖像分類器大概需要測試104~105個窗口;而在多尺度下,測試窗口的數量會以幾個數量級增長.此外,現今的檢測器還要求對目標的寬高比進行預測,那么測試窗口數量將會達到106~107個.顯然,這種“窮盡式”的檢測方法會生成很多冗余窗口,導致計算量大且非常耗時[5].因此,很多采用這種方法的目標檢測系統,都會選擇一些較簡單的分類器,這些簡單的分類器往往采用較弱的特征模型,通過得到較快的計算速度來彌補滑窗式搜索策略帶來的弊端.但是,采用弱特征模型雖然提升了分類器的計算速度,卻降低了檢測率和檢測精度.
針對上述問題,本工作提出了一種基于目標候選(object proposal)的檢測算法.目標候選是一類方法的統稱,最早的目標候選方法是由Alexe等[6]提出,并引出了目標性(objectness)的概念.目標性概念的提出是基于感知心理學和神經性學的發現[7].人類的視覺系統在識別目標前可以感知并定位到目標的位置,這個能力使得人類可以快速準確地識別目標,但是傳統的滑窗式目標檢測方法違背了這種人類視覺系統對圖像的理解機制,故非常耗時.為了使計算機視覺也具備人類視覺系統的這種能力,目標性算法的原理是:在分類器對圖像窗口進行檢測前,先對所有窗口進行目標性評分.評分越高的窗口包含目標的可能性就越大,舍棄那些評分較低的窗口,只把那些評分較高的窗口輸入到分類器中檢測目標,這樣評分較高的窗口就是檢測算法的目標候選.不同的目標候選方法產生的窗口數量也不同,目前較為先進的方法是通過產生1 000~2 000個窗口就能達到96%以上的目標召回率(recall rate),與106~107個滑動窗口相比,檢測速度可以達到幾個數量級的提升.
近幾年,國內外學者對目標候選算法的研究主要分為超像素合并(superpixel merging)、種子分割(seed segmentation)以及目標性評分(objectness scoring)這3類.Uijlings等[8]提出了基于超像素合并的selective search算法,該算法通過人工設計的特征和相似度函數合并超像素生成目標候選框,且不需要通過任何學習的方法獲取參數;Carreira等[9]提出了基于種子分割的CPMC(constrained parametric min-cuts)算法,該算法隨機初始化多個種子點,每個種子點生成一個前景/背景的分割,以此來獲取目標候選框;Zitnick等[10]提出了基于目標性評分的邊緣框(edge box)算法,該算法利用圖像的邊緣信息生成目標候選框,通過結構化森林邊緣檢測器生成邊緣圖,在邊緣圖上建立評分函數對窗口進行評分,最后選取評分較高的窗口作為最終的目標候選框.Edge box算法計算速度快,且生成的目標候選框定位精度高,可滿足USV視覺檢測系統的應用需求.
本工作基于邊緣框算法進行改進,獲取船艇的目標候選框.結合較強的HOG特征對船艇進行建模,利用機器學習的方法進行訓練,得到了一個復雜的具有5 796維特征向量的分類器,用于海上船艇的檢測.此外,本工作還基于USV在海天環境下的運行場景,結合海天線的特性,進一步提升算法的檢測性能.本算法的概況如圖1所示.

圖1 本算法概況Fig.1 Overview of this algorithm
給定一張原始圖像(見圖2(a),關注“上海大學學報自然科學版”微信公眾號,使用菜單欄“小程序”掃描圖片觀看視頻).首先,利用一個結構化的邊緣檢測器[11],獲取圖像中每個像素點的邊緣響應;然后,將這些邊緣響應組合在一起得到原始圖像的邊緣圖.直接得到的邊緣圖相對比較緊密,通過執行一個簡單的非極大值抑制(non-maximal suppression,NMS)獲取邊緣響應的局部最大值,從而得到一張相對稀疏的邊緣圖(見圖2(b)).邊緣圖中每個像素p都有一個邊緣值mp和一個邊緣方向θp,其物理意義分別是邊緣的梯度幅值以及梯度變化最大的方向.
算法的基本思想是:與輪廓重疊多的邊界框(bounding box)完整包圍目標的可能性比較小(如圖2(c)中的綠色方框),而那些與輪廓重疊少的邊界框更可能完整地包圍目標(見圖2(d)中的綠色方框).從邊緣圖來看,對于那些被直的輪廓所連接的邊緣有比較高的相似度,而那些沒有被連接或者被高曲率的輪廓所連接的邊緣相似度就比較低.為了使相似度的計算效率更高,對邊緣進行分組,得到一系列的邊緣群組(edge group),然后只計算邊緣群組之間的相似度.算法獲取邊緣群組的方法是通過不斷地連結8連通的邊緣點,直到邊緣點兩兩之間的方向角度差值的總和大于一個閾值π/2.
給定邊緣群組的集合si∈S,計算每對相鄰邊緣群組之間的相似度.對于邊緣群組si和sj之間的相似度a(si,sj)的計算公式為

式中:θi和θj為2個邊緣群組的平均方向;θij為其平均位置xi和xj之間的角度;γ值是用來控制方向對相似度的敏感性的,本算法中取γ=2.在算法具體實施過程中,為了提高計算效率,當2個邊緣群組之間的距離大于2個像素時,其相似度被設置為0;此外,當2個邊緣群組的相似度小于0.05時,其相似度也被設置為0.

圖2 邊緣框算法示意圖Fig.2 Diagram of edge box algorithm
給定邊緣群組的集合S,且計算得到其兩兩之間的相似度后,通過建立一個評分函數對候選邊界框b評分.首先,計算邊緣群組si中所有像素p的邊緣值總和,記為mi;然后,選取邊緣群組si中任意一個像素的位置,記為xi.
對于每一個邊緣群組si,計算一個連續值wb(si)∈[0,1],用來衡量si是否完全包含在邊界框b中.如果si完全包含在邊界框b,則令wb(si)=1;如果si完全處于邊界框b外,令wb(si)=0.定義Sb為與邊界框b邊界相重疊的邊緣群組si的集合,對于所有的si∈Sb,令wb(si)=0;同理,如果b,則令wb(si)=0,這是因為在這種情況下,該邊緣群組si的所有像素不是完全處于邊界框b外,而是與邊界框b相重疊.對于所有剩下的邊緣群組siSb的計算公式為

式中:T為開始于t1∈Sb,結束于t|T|=si的有序路徑;a(tj,tj+1)為邊緣群組之間的相似度.如果不存在這樣的路徑,則令wb(si)=1.因此,式(2)的物理意義就是一條尋找相似度最高的路徑.在具體實施算法過程中,因為成對的邊緣群組相似度大部分都為0,所以該公式的計算效率很高.利用計算所得的wb(si),對邊界框b進行評分:

式中,bw,bh分別為邊界框的寬度和高度.式(3)的物理意義是根據邊界框包圍邊緣的情況,對該邊界框包含目標的可能性進行評分.由于更大的邊界框會包含更多的邊緣,故用一個κ值來抵消這個偏差,本算法取κ=1.5.
最后,我們發現那些處于邊界框內部的邊緣的重要性比那些處于邊界框附近邊緣的低.因此,對評分公式(3)進行改進,將邊界框內部的邊緣值從評分hb中減掉,改進后的評分公式為

式中,bin的寬度和高度分別為bw/2和bh/2.實驗表明,使用評分公式獲得的目標候選框比使用評分公式hb獲得的目標候選框有更高的定位精度.
為了尋找到定位精度更高的目標候選框,需要設計搜索策略.衡量一個邊界框定位精度的標準是IoU(intersection over union),它是將候選邊界框和真值框(ground truth box)的交集除以它們之間的并集計算得到的值.IoU的值越高,候選邊界框的定位精度就越高,也就越接近真值框.在理想的情況下IoU=1,此時候選邊界框和真值框重合.根據國際上普遍使用的PASCAL準則,當IoU大于0.5時認定該候選邊界框定位并檢測到了目標.但是,通過分析USV視覺檢測系統的應用場景可知,當目標候選框和真值框的IoU大于0.5時,目標檢測算法提取目標候選框的HOG特征向量輸入到分類器中,仍然被分類器判定為負樣本的情況,這時目標就被漏檢了.因此,為了盡量避免漏檢情況的發生,本算法將提高IoU閾值.在算法具體實施過程中,本算法取IoU閾值δ=0.8,大于國際上的PASCAL準則(δ=0.5).
在搜索候選邊界框時,首先以不同的位置、尺度、寬高比在邊緣圖上滑動窗口,步長大小由參數α決定,指定相鄰邊界框的IoU等于α.由于本算法取IoU閾值為δ=0.8,故根據實驗表明,α=δ-0.05=0.75是一個比較理想的取值.
最后,將剩下的候選邊界框根據評分大小進行排序,選取前1 000個評分較大的候選邊界框作為最終目標候選框.本算法對這1 000個目標候選框提取HOG特征向量,輸入到分類器中檢測船艇在圖像中的位置.
由于USV主要的工作場景是在海面上,因此USV視覺檢測系統所采集的圖像最基本的特征是圖像包含海天線.如圖3(a)所示,海天線將圖像劃分為3個區域:天空區域、海面區域和海天線區域[12].船艇在海上航行只會處于海面區域和海天線區域,而不會處于天空區域.基于這樣一個特性,本工作進一步改進目標候選框生成算法,對1 000個評分較大的目標候選框再次進行篩選.剔除完全處于海天線區域上方的目標候選框(見圖3(a)中的紅色方框),而保留處于海天線下方以及與海天線相交的目標候選框(見圖3(a)中的綠色方框).這樣,就可以直觀地感覺到,通過海天線預判能剔除將近一半的目標候選框.同理,只在剩下的目標候選框中提取HOG特征向量,輸入到分類器對船艇目標進行檢測.最終,基于海天線改進的船艇檢測算法在檢測速度以及檢測性能上都得到了進一步的提升.
此外,本工作采用了一種簡單的基于邊緣圖的海天線檢測算法,來獲取用于篩選目標候選框的海天線.由于在生成目標候選框時已經計算得到邊緣圖,故通過在邊緣圖上執行一個簡單的Hough變化[13-14],就能得到海天線在圖像中的位置信息(見圖3(b)中藍色線條).

圖3 基于海天線改進算法示意圖Fig.3 Diagram of improving algorithm based on sea-sky line
HOG特征是由Dalal等[3]提出,最早被用于行人的檢測,取得了較好的效果.如今,在計算機視覺和圖像處理領域中,HOG特征已經成為目標檢測最常用的特征描述子之一,其主要原理是:在一副圖像中,局部目標的外表和形狀能夠被梯度或邊緣的方向密度分布較好地描述.因此,HOG特征的本質是利用了梯度的統計信息,而梯度主要存在于邊緣的地方,這一點和本工作基于邊緣提取的目標候選框相契合.由于從邊緣圖中提取的目標候選框保留了圖像中較多的邊緣信息,因此本工作采用HOG特征作為船艇的特征描述子是合理的,實驗結果也驗證了這一觀點.
本工作根據船艇的外形特點,對船艇進行特征建模,將特征模型的寬高比設計為3:1,特征窗口的大小設計為192×64(pixel).HOG特征的細胞單元格(cell)尺寸設計為8×8(pixel).每個細胞單元格的直方圖通道數目(bin)設置為9個.
由于局部光照的變化以及前景/背景對比度的變化會使梯度強度發生較大的變化,因此需要對梯度強度做歸一化處理.HOG特征在一個塊(block)中進行梯度強度的歸一化處理,這里根據海面上的光照變化的情況,設計塊的大小為2×2(cell),即16×16(pixel);塊移動的步長設計為8×8(pixel).通過這樣對船艇進行建模,船艇的HOG特征描述子的特征維數為

本工作采用線性核的支持向量機訓練分類器,其訓練步驟如圖4所示.初始的正樣本是由船艇的所有真值框組成,總數為2 000個.然后,選擇與真值框重疊面積占20%~50%的目標候選框作為最初的負樣本.為了避免選取近似的重復的負樣本,將重疊面積超過70%的2個負樣本,選擇其中一個丟棄.最終,從所有負樣本中隨機選取10 000個作為SVM訓練的負樣本.直觀地來看,這樣的負樣本篩選方法對分類器來說是比較困難的,因為這些負樣本有一部分和正樣本很接近,這也意味著更接近決策邊界.但是,通過選擇這樣的負樣本進行訓練,得到的分類器就具有更好的初始分類能力.事實上,通過實驗也驗證了這一觀點.
在得到初始分類器后,為了提升分類器的性能,本工作還設計了一個再訓練的過程.將初始分類器在負樣本原圖(不包含船艇目標)上進行船艇目標的檢測,這樣檢測到的所有矩形框很明顯都不是目標,屬于誤報(false positives).這些誤報的矩形框對于分類器來說,就是一個難例(hard example).把這些難例保存為圖像,加入到初始的負樣本集合中,重新進行分類器的訓練.這樣,通過再訓練得到的分類器就具有更好的分類能力,也就是具有更好的檢測船艇目標的能力.再訓練的過程是可以迭代進行的,直到分類器的性能沒有明顯提升為止.這樣的訓練方法稱為自舉法(bootstrap).本工作通過進行初始負樣本選擇策略,經過2次迭代訓練后,分類器的性能就達到了峰值.

圖4 分類器訓練步驟Fig.4 Training procedure of classifier
實驗用到的視頻序列是由USV視覺系統的機載攝像頭采集所得,視頻記錄了船艇目標在不同環境下的運動情況.攝像頭采集所得的圖像分辨率為1920×1080(pixel),將其降采樣為640×480(pixel)進行處理.本工作使用的實驗平臺為VS2013+OpenCV2.4.9,系統環境為Windows10,CPU頻率為3.1 GHz,內存為4 GB.
本實驗將提出的目標候選檢測算法和傳統的滑窗式檢測算法在相同條件下進行了比較,驗證算法的有效性和優越性.對于滑窗式檢測算法,本工作采用相同的HOG特征模型,用相同的機器學習方法(如SVM)對其進行分類器的訓練.在保證實驗條件相同后,使用2種不同的船艇檢測算法,在相同的視頻圖像中對船艇目標進行檢測.此外,為了研究在不同尺度及光照條件下2種算法的檢測性能,實驗使用了多種在不同環境下拍攝的視頻圖像,結果如圖5所示.
在圖5中,藍色方框表示目標船艇的真值框,綠色方框表示算法檢測到的目標框.左列圖像是本算法的檢測結果,右列圖像是傳統滑窗式算法的檢測結果.分析實驗結果,對比圖5(c),(d)可以發現,本算法檢測的目標框與真值框具有更大的重疊面積,表明本算法具有更高的檢測精度,這是因為本算法是基于圖像邊緣信息提取的目標候選框,所以更加貼近船艇的邊緣.此外,從圖中還可以發現傳統滑窗式算法檢測到的一些目標框并不包含船艇,這些目標框屬于誤報(見圖5(b),(f),(h)).相對地,在相同的條件下本算法生成的目標框誤報較少.最后,在不同的尺度和光照條件下對比圖5(a),(c),(e),(g)可以發現,本算法對尺度變化和光照變化都具有較強的魯棒性.
然后,本工作在1 435張包含船艇的圖像上分別用2種算法對船艇目標進行檢測.檢測規定,如果目標檢測框和真值框之間的IoU值大于0.7,就視該目標框檢測到了目標,并認為這是一個正確的檢測.表1列出了2種算法在一些檢測指標上的對比.分析表1數據可以發現,本算法的檢測率更高,誤報更少,這樣的檢測率和誤報也滿足USV視覺檢測系統的應用場景.

圖5 不同尺度及光照條件下2種算法的檢測結果Fig.5 Detection results of two algorithms under different scales and illumination conditions

表1 2種算法檢測性能對比Table 1 Comparing the detection performance of two algorithms
最后,通過實驗驗證了本算法在檢測速度上的優勢.因為算法的檢測時間與被檢測圖像的分辨率有關,所以圖像的分辨率越大,所包含的像素點就越多,算法的檢測時間也就越長.基于這點考慮,本工作分別在幾種常用的圖像分辨率上進行對比實驗,結果如表2所示.分析表2數據可以發現,在所有圖像分辨率下進行船艇檢測,本算法檢測船艇所需的時間更少.在圖像分辨率為640×480(pixel)時,本算法檢測速度是滑窗式算法的2.3倍;在圖像分辨率為1 280×720(pixel)時,本算法檢測速度是滑窗式算法的3.3倍;在圖像分辨率為1 920×1 080(pixel)時,本算法檢測速度是滑窗式算法的9.0倍.可見,圖像分辨率越大,本算法的速度優勢越明顯.由于現在對圖像的清晰度要求越來越高,生產的攝像頭分辨率也越來越大,很多攝像頭都至少達到了1 080 P,甚至2 K級別,因此本算法更具有實際意義.

表2 在不同圖像分辨率下2種算法檢測時間對比Table 2 Comparing the detection time of two algorithms in different image resolutions ms
本工作通過加入海天線預判進一步改進算法,通過實驗對比2個版本算法的檢測性能,驗證改進算法的有效性.需要注意的是,本工作在4.1節的實驗結果均是未加入海天線預判所得的算法結果.與4.1節的實驗方案類似,本實驗也在1 435張包含船艇的圖像上分別用2個版本的算法對船艇目標進行檢測.仍然規定目標框和真值框之間的IoU值大于0.7時,是一個正確的檢測.表3列出了2個版本算法在一些檢測指標上的對比.分析表3的數據可以發現,2個版本的算法在檢測率上是相同的,這是因為加入海天線預判并不會剔除包含船艇的目標候選框.另外,加入海天線預判的算法誤報更少,因為加入海天線預判剔除了算法在天空區域的誤報.

表3 2個版本算法檢測性能對比Table 3 Comparing the detection performance of two versions of the algorithms
本工作還通過實驗驗證了加入海天線預判的算法具有更快的檢測速度.與4.1節的實驗方案類似,本實驗還是在幾種常用的圖像分辨率上進行檢測速度的對比,結果如表4所示.分析表4數據可以發現,在所有圖像分辨率下進行船艇檢測,加入海天線預判的算法所需時間更少.在圖像分辨率為640×480(pixel)時,加入海天線預判的算法檢測速度提升到原來的1.5倍;在圖像分辨率為1 280×720(pixel)時,加入海天線預判的算法檢測速度提升到原來的1.6倍;在圖像分辨率為1 920×1 080(pixel)時,加入海天線預判的算法檢測速度提升到原來的1.7倍.由于未加入海天線預判算法的檢測速度已經相當快,因此檢測速度的提升倍數并不是很明顯(相較于滑窗式檢測算法提升的倍數).但是,對USV視覺檢測系統來說,檢測速度的提升終究是有意義的,因為檢測速度越快,USV獲取的船艇位置信息就越及時,對USV后續任務的執行都有積極的作用.

表4 在不同圖像分辨率下2個版本算法檢測時間對比Fig.4 Comparing the detection time of two versions of the algorithms in different image resolutions ms
最后,本工作在多目標、惡劣海況以及復雜背景條件下對算法性能進行實驗驗證,該實驗結果如圖6所示.在圖6中,藍色方框表示目標船艇的真值框,綠色方框表示算法檢測到的目標框,其中(a)為在多目標條件下算法的檢測結果;(b)為在惡劣海況條件(4級海況)下算法的檢測結果;(c),(d)為在復雜背景下算法的檢測結果.從結果中可以發現,算法在多目標以及惡劣海況條件下仍具有較好的檢測性能,但是在復雜背景下算法的檢測性能并不好,時常會出現誤報,因為算法將背景中的建筑物檢測為船艇目標.根據大量的實驗表明,本算法在復雜背景下的檢測率并不高,但是由于USV在海上運行時處于復雜背景的情況較少,故并不影響算法的實用性.

圖6 在不同條件下的算法性能Fig.6 Algorithm performances under different conditions
本工作提出了一種基于目標候選的USV海上船艇檢測算法.該算法基于邊緣框算法進行改進,提取圖像的邊緣信息,并建立目標性評分函數來獲取目標候選框.在此基礎上,本工作使用HOG特征作為特征描述子,對船艇目標進行特征建模,采用自舉法迭代訓練分類器,提升分類器性能.此外,本工作基于USV在海天環境下的運行場景,加入海天線的預判進一步改進算法,提升了對船艇的檢測性能.實驗結果表明,本算法能夠快速、準確地檢測船艇目標,并達到了較高的檢測率,誤報較少,對尺度以及光照條件的變化也具有較強的魯棒性.當然,本算法也存在缺陷,如對正面船艇的檢測率不高,這是因為HOG特征模型對視角變化的魯棒性較差;此外,在復雜背景下本算法存在較多誤報,檢測率也有待提高.
本工作未來的研究主要集中在2個方向:①進一步提升算法的檢測率,考慮采用更復雜的特征模型,如用詞袋(bag of word,BOW)模型代替HOG特征模型對船艇進行建模;②進一步提升算法的檢測速度,使算法檢測速度能更加接近實時,這對USV視覺檢測系統具有重大的意義.