UI2CODE系列文章|如何提高“小目標”檢測準確率

背景

  在計算機視覺領域,存在一個“小目標”檢測任務,比如自動駕駛中的交通燈,或者醫學圖像中的早期腫塊。“小目標”的正確檢出能極大地提高用戶體驗,促進自動化行業的發展。UI2CODE是閒魚技術部推出的一個應用工具。通過對頁面ui元素的自動解析並自動生成相關代碼,UI2CODE能提高工程師的開發效率。ui元素的自動解析部分採用計算機視覺技術來識別ui元素的類別和位置,其作爲整體流程的第一步決定了後續代碼生成的準確性以及用戶使用的體感。頁面中存在的一些“小目標”ui元素,比如下圖a)頁面卡片中的價格組件和芝麻信用圖標等,b)頁面卡片中“三個點”表示的圖標。還有其他一些小目標比如文字、特殊的符號也會出現在頁面中,小目標漏檢或者誤檢都會導致後續代碼生成的錯誤。


挑戰

  根據coco數據集的定義,像素面積小於32x32的物體爲小目標物體,像素面積介於32x32與96x96之間的物體爲中目標物體,像素面積大於96x96的物體爲大目標物體。小目標檢測的挑戰包括:

1. 類別不均衡。頁面中小目標物體相對於其他中、大目標物體佔比較少。類別不均衡的問題會導致模型訓練過程中損失函數學到的信息更偏向佔比多的中、大目標物體。

2. 特徵丟失。基於深度學習的目標檢測算法爲了檢測更多複雜的特徵往往會加深或加寬網絡,同時爲了減少計算量以及增加位移不變特性,網絡中常常增加池化層。池化層下采樣過程不可避免地會丟失部分或者全部小目標特徵信息。

3. 定位精度。模型預測框在有相同偏差時,偏差給小目標iou(預測框和標準框面積的交併比)帶來的影響要比中、大目標iou帶來的影響要大的多,因爲小目標預測框只要偏移一點點,iou就降低很多。

小目標檢測存在的挑戰會導致模型檢測結果精確率和召回率下降,具體評價指標上體現爲mAP或mAR數值較低。

方案

流程

針對小目標檢測存在挑戰,採用如下方法來提高小目標的檢測效果:

1)訓練過程中對小目標進行數據擴充和增強

2)檢測模型經歷Faster RCNN到FPN到Cascade FPN的優化迭代

3)採用圖像處理技術修正預測框位置


數據擴充

  頁面中存在的類別不均衡問題會導致模型偏向於學習中、大目標特徵,因此訓練階段擴充小目標的數據能有效地提高模型對於小目標的注意力,進而提升小目標在訓練過程中對損失函數計算的貢獻。數據擴充的方法是在包含小目標的圖像中將所有小目標在任意隨機位置複製粘貼多次,並且確保小目標粘貼的位置和其他已經存在的目標位置不會出現重疊,並且距離圖像邊界至少5個像素。粘貼的過程中可以對小目標進行增強,比如在尺度5%範圍內進行縮放。下圖中a)是原始圖像,b)是對小目標"¥9.9"和"..."在任意不重疊位置複製黏貼了5次。


模型優化

  深度學習的方法因爲其強大的自動學習目標特徵能力而成爲目標檢測領域的主流方法。一般的目標檢測模型分成兩個派系:以R-CNN家族爲代表的兩階段網絡和以YOLO、SSD爲代表的一階段網絡。一階段網絡直接對預測的目標進行分類和迴歸,因此計算速度比較快,兩階段網絡在對預測的目標進行分類和迴歸前需要先生成候選的目標區域,這樣訓練更容易收斂,檢測結果更準確。
  不管是採用一階段網絡還是二階段網絡,模型一般都會包含有下采樣的卷積層和池化層來提取圖像的特徵,下采樣的存在會導致小目標部分或者全部特徵丟失。下圖顯示的是我們最先開始嘗試的Faster RCNN網絡結構,主要分成2個部分:1)RPN(Region Proposal Network)部分。該網絡用於生成候選目標框,其中前半部分是特徵提取模塊,使用一組基礎的conv+relu+pooling層來提取並得到特徵1到特徵n,後半部分是先用特徵n經過卷積操作生成特徵頭0,然後用特徵頭0去判斷anchor是屬於前景還是背景,並且通過迴歸去修正前景框的位置。2)fast rcnn部分。前景的候選框在特徵n上經過roi池化操作映射到固定大小並送入後續全連接層,後續進一步計算這些候選框的具體類別,並且再次迴歸修正候選框的位置。

  Faster RCNN使用的圖像特徵是經過多次下采樣後特徵n上的特徵,容易造成小目標的漏檢。在Faster RCNN的基礎上採用了FPN(Feature Pyramid Network)網絡。如下圖所示,FPN在RPN部分會將不同層的特徵1到特徵n進行融合(圖中沒有畫出),然後利用每一層的特徵來進行分類和迴歸,後續部分也用每一層的特徵進行特徵roi池化操作以及分類和迴歸。相比於Faster RCNN只用高層的特徵n,FPN充分利用了淺層的細節信息和高層的語義信息,更能準確地檢測出小目標。

  FPN利用多個層特徵提高小目標檢測效果,但並沒有考慮預測框偏差導致的小目標iou定位精度問題。Faster RCNN或者FPN網絡在RPN階段根據設定的iou閾值來選取候選框,如果iou閾值過高,會導致候選框質量很高,但數量會很少,會出現模型過擬合現象;如果iou閾值較低,候選框的數量就會增加,但質量也會下降。因此選取好的iou,對於檢測結果很重要。下圖所示的Cascade FPN結構在FPN的基礎上,從左至右增加了多個檢測模塊,通過iou閾值從小到大不斷提高,在保證候選框數量的同時,也能使得候選框質量不下降。


位置修正

  深度學習模型迴歸位置框時不可避免會產生偏差,尤其是對於小目標,位置框的偏差更加明顯。UI2CODE要求位置能精確到1個像素級別,因此需要進行位置修正。簡單背景下,採用前景投影的方法能獲得精確的位置邊界。具體做法爲:

1)對圖像進行高斯平滑減少噪聲影響。

2)採用局部自適應二值化將前景提取出來。

3)目標初始位置框對應的二值化區域進行水平和垂直方向投影,找到左右上下最近的投影值不爲0且標準差也不爲0的位置,即爲修正後的位置。
  下圖a)爲Cascade FPN檢測出來的前景位置框,可以看到大部分位置框位置存在偏差,尤其是小目標“...”偏差比較大。b)圖爲位置修正後的位置框,大部分都修正到目標位置。當然對於一些複雜背景情況下的位置修正,採用前景投影的方法得到的結果會不準確,需要在前處理階段進行復雜背景剔除。

效果

  上文分析了小目標檢測存在的挑戰,以及採用數據擴充、模型優化的策略來提高小目標的檢測效果。當然作爲通用檢測模型,還需要同時關注整體的檢測效果。
  當模型預測框和真實框之間iou大於設定的置信度閾值(比如0.5)時,認爲預測框就是物體檢測框,指標mAP和mAR是評判模型精確度和召回率的指標。模型使用的特徵提取網絡都是resnet101,表1顯示的是設定置信度閾值從0.5到0.95不同值時小目標的結果指標,可以看出FPN和Cascade FPN都要優於Faster RCNN, FPN的mAP要高於Cascade FPN的mAP,FPN的mAR要低於Cascade FPN的mAR。表2顯示的是設定置信度閾值等於0.5時所有目標的結果指標,可以看出Cascade FPN要優於FPN以及Faster RCNN。


展望

  小目標檢測方法與其他複雜背景分析、佈局分析等組成了UI2CODE頁面ui元素自動解析的基礎,另外上述方法也提供給淘寶D2C智能和自動化測試使用。未來進一步可以結合生成網絡模型將小目標放大進行檢測或者在位置修正時結合物體的類別信息從而得到更高精度的位置修正。

閒魚團隊是Flutter+Dart FaaS前後端一體化新技術的行業領軍者,就是現在!客戶端/服務端java/架構/前端/質量工程師面向社會招聘,base杭州阿里巴巴西溪園區,一起做有創想空間的社區產品、做深度頂級的開源項目,一起拓展技術邊界成就極致!

*投餵簡歷給小閒魚→[email protected]

開源項目、峯會直擊、關鍵洞察、深度解讀

請認準閒魚技術

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章