[AI開發]目標檢測之素材標注


算力和數據是影響深度學習應用效果的兩個關鍵因素,在算力滿足條件的情況下,為了到達更好的效果,我們需要將海量、高質量的素材數據喂給神經網絡,訓練出高精度的網絡模型。吳恩達在深度學習公開課中提到,在算力滿足要求的前提下,模型效果會隨着素材數量的增多而變好,理論上沒有上限。實踐證明,在普通基於深度學習的應用開發過程中,素材的數量和質量對最終模型效果的影響出乎意料的大。注意這里提到的“素材質量”,光有“素材數量”還不夠,我們還要保證素材標注的質量。本文以目標檢測應用為例,來說明如何保證圖像素材標注過程中的質量。

 

常見目標檢測算法

常見目標檢測算法有SSD、Yolo以及Faster-RCNN等(實際上這是我用過的幾種),之間的區別可以上網搜到,我之前的博客也有提到過,各有優劣。三種算法模型訓練需要的素材格式基本相同:

  • 二維圖像文件;
  • 對應二維圖像中人工標注出的感興趣目標信息,包括目標坐標/大小、目標類型,一般用(left,top,width,height,class)來表示;

模型訓練的過程就是將上述素材數據喂給神經網絡,反復優化,最后得到效果相對比較好的模型,然后模型就可以上線做推理了。各種目標檢測算法模型最終推理輸出來的結果也基本一樣,對於給定的二維輸入圖像,輸出該圖像中檢測到的目標信息,包括目標坐標/大小、目標類型以及該目標的可信度,一般用一個list表示,list中每個元素格式為(left,top,width,height,class,score)。Score代表模型認為該目標的可信度,可以通過該值過濾部分檢測結果。

 

圖像素材標注

通過這個PPT我們知道,深度學習模型訓練的過程就是不斷地調整參數,使用預先標注的具體素材數據不停地去擬合通用場景,最后能夠准確預測非素材集中的輸入。模型訓練需要大量素材標注作為基礎,就目標檢測而言,素材標注的過程就是人工用工具在圖像中標出感興趣的目標,並生成標簽數據。

圖像素材標注工具有很多,很多人在用的是labelimg,主要用於目標檢測素材標注:

如上圖,對於每張圖片,人工標出圖片中感興趣的目標,比如圖像中的人、汽車、卡車等等。保存后,每張圖片對應生成一個txt文件,該txt文件中記錄人工標注的結果:

如上圖,該圖片一共標出9個目標,2個Person、3個Car,4個Truck,每個目標對應一行,第一列表示類型ID(從0開始)。模型訓練時,將圖片和標注數據同時喂進神經網絡,不斷調整參數,到達效果最優。

 

素材標注質量如何影響模型的准確性?

圖像素材標注時,需要人工標出目標的大小/位置,用一個矩形方框表示,並給出目標類型,模型訓練時會根據標注的素材來調整參數。人工標注有時會出一些問題,比如目標矩形框位置不對(框子太大、太小、位置偏了),或者目標類型標錯,本來是一個人,人工給它標成了汽車。這些標注時的問題都會影響最終模型訓練的效果,仔細想一下,你不斷告訴神經網絡人是車、而車是人,最后神經網絡都分不清了。正常情況下,人工標注的方框大小、位置應該合適,矩形方框剛好將目標包圍住,如果框子太大、或者太小、甚至位置偏移了,都會影響神經網絡對矩形方框中真實內容的判斷。

如果僅僅追求素材的數量而不顧素材標注的質量,即使數量再多,也沒有效果,實踐證明,模型效果反而越來越差。

 

圖像素材標注重點

目標檢測用到的素材,在標注過程中需要注意以下幾點:

1. 標注方框大小合適

所謂大小合適,即矩形方框應該剛好將目標包圍住,之間的間隙不能太大,也不能太小。太大太小的話,最后模型在推理時,也會出現目標框得不准的情況,或者在視頻圖像檢測中,出現前后幀目標抖動嚴重,不能鎖定。同時在標注的時候,一定要保證矩形方框包含了目標的輪廓信息,因為輪廓信息對於模型訓練來講很重要,它可以區分不同類型的目標。下圖標注的矩形方框太小:

2. 標注方框位置合適

原因跟上一條類似,下圖雖然矩形方框大小合適,但是明顯位置偏太遠了:

3. 需要豐富多視角的素材

這個其實跟素材的准備有關,我們不能只標幾種視角的素材圖片。在道路監控應用場景中,素材應該涵蓋各種攝像機視角,正前方、正后方、左側前方、右側前方、左側后方、右側后方以及俯視視角等等。每種視角的素材都應該被標注,這樣訓練出來的模型才有更大的通用性。

4. 目標被遮擋也要標注

不能只標注圖像中完整的目標,被遮擋的目標,只要人眼能看清是啥的都應該被標注,並且矩形框只需要包含看得見的部分即可。這樣做的原因跟上一條類似,提高模型的通用性,實際應用場景中,很多目標被遮擋,模型仍然需要將其檢測出來,所以我們需要標注類似的素材。下圖道路擁堵,一些車身被遮擋,但是明顯可以分辨出是什么目標:

5. 小目標也不能漏掉

雖然不同的算法對小目標的檢測效果不同,比如Yolo對小目標檢測效果比較好,但是前提是我們需要准備小目標的素材標注。一張圖片素材中,近處的大目標需要標注,遠處人眼看得清的小目標同樣需要標注。原理跟上一條類似:只要人眼能分清是啥的小目標,都應該標出來。下圖遠處的小目標可以認出是小汽車:

6. 人眼分不清是啥的不要標

很多時候,由於素材圖片本身的原因、或者目標被遮擋大部分、或者遠處目標實在太遠,人眼無法分辨是什么,雖然知道是一個目標,但是不知道它到底是汽車Car還是客車Bus甚至是人,這種時候不要標注。否則會給神經網絡帶來誤導。下圖被遮擋部分太多,可以忽略不用標注:

 

如何保證素材標注的質量

上面說了這么多,其實要保證素材標注質量的有效方式有兩條:

1. 不要光追求速度

給做素材標注的團隊強調,雖然有數量上的指標,但是指標不能定得太高,如果定得太高,大家都為了完成數量任務,自然會忽略了質量。最后標注質量肯定上不去,類型出錯、方框位置忽大忽小,必然需要大量返工。

2. 專人做素材審核

專門找一小撮人做素材審核,主要負責素材標注后的驗證,看看類型是否出錯,方框的位置、大小是否錯得離譜等等。千萬不要小看這項工作,它的作用跟code review一樣,容易被忽視,其實它提高效率不是一星半點。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM