算力和數據是影響深度學習應用效果的兩個關鍵因素,在算力知足條件的狀況下,爲了到達更好的效果,咱們須要將海量、高質量的素材數據餵給神經網絡,訓練出高精度的網絡模型。吳恩達在深度學習公開課中提到,在算力知足要求的前提下,模型效果會隨着素材數量的增多而變好,理論上沒有上限。實踐證實,在普通基於深度學習的應用開發過程當中,素材的數量和質量對最終模型效果的影響出乎意料的大。注意這裏提到的「素材質量」,光有「素材數量」還不夠,咱們還要保證素材標註的質量。本文以目標檢測應用爲例,來講明如何保證圖像素材標註過程當中的質量。html
常見目標檢測算法算法
常見目標檢測算法有SSD、Yolo以及Faster-RCNN等(實際上這是我用過的幾種),之間的區別能夠上網搜到,我以前的博客也有提到過,各有優劣。三種算法模型訓練須要的素材格式基本相同:網絡
模型訓練的過程就是將上述素材數據餵給神經網絡,反覆優化,最後獲得效果相對比較好的模型,而後模型就能夠上線作推理了。各類目標檢測算法模型最終推理輸出來的結果也基本同樣,對於給定的二維輸入圖像,輸出該圖像中檢測到的目標信息,包括目標座標/大小、目標類型以及該目標的可信度,通常用一個list表示,list中每一個元素格式爲(left,top,width,height,class,score)。Score表明模型認爲該目標的可信度,能夠經過該值過濾部分檢測結果。工具
圖像素材標註學習
經過這個PPT咱們知道,深度學習模型訓練的過程就是不斷地調整參數,使用預先標註的具體素材數據不停地去擬合通用場景,最後可以準確預測非素材集中的輸入。模型訓練須要大量素材標註做爲基礎,就目標檢測而言,素材標註的過程就是人工用工具在圖像中標出感興趣的目標,並生成標籤數據。優化
圖像素材標註工具備不少,不少人在用的是labelimg,主要用於目標檢測素材標註:spa
如上圖,對於每張圖片,人工標出圖片中感興趣的目標,好比圖像中的人、汽車、卡車等等。保存後,每張圖片對應生成一個txt文件,該txt文件中記錄人工標註的結果:code
如上圖,該圖片一共標出9個目標,2個Person、3個Car,4個Truck,每一個目標對應一行,第一列表示類型ID(從0開始)。模型訓練時,將圖片和標註數據同時喂進神經網絡,不斷調整參數,到達效果最優。視頻
素材標註質量如何影響模型的準確性?htm
圖像素材標註時,須要人工標出目標的大小/位置,用一個矩形方框表示,並給出目標類型,模型訓練時會根據標註的素材來調整參數。人工標註有時會出一些問題,好比目標矩形框位置不對(框子太大、過小、位置偏了),或者目標類型標錯,原本是一我的,人工給它標成了汽車。這些標註時的問題都會影響最終模型訓練的效果,仔細想一下,你不斷告訴神經網絡人是車、而車是人,最後神經網絡都分不清了。正常狀況下,人工標註的方框大小、位置應該合適,矩形方框恰好將目標包圍住,若是框子太大、或者過小、甚至位置偏移了,都會影響神經網絡對矩形方框中真實內容的判斷。
若是僅僅追求素材的數量而不顧素材標註的質量,即便數量再多,也沒有效果,實踐證實,模型效果反而愈來愈差。
圖像素材標註重點
目標檢測用到的素材,在標註過程當中須要注意如下幾點:
1. 標註方框大小合適
所謂大小合適,即矩形方框應該恰好將目標包圍住,之間的間隙不能太大,也不能過小。太大過小的話,最後模型在推理時,也會出現目標框得不許的狀況,或者在視頻圖像檢測中,出現先後幀目標抖動嚴重,不能鎖定。同時在標註的時候,必定要保證矩形方框包含了目標的輪廓信息,由於輪廓信息對於模型訓練來說很重要,它能夠區分不一樣類型的目標。下圖標註的矩形方框過小:
2. 標註方框位置合適
緣由跟上一條相似,下圖雖然矩形方框大小合適,可是明顯位置偏太遠了:
3. 須要豐富多視角的素材
這個其實跟素材的準備有關,咱們不能只標幾種視角的素材圖片。在道路監控應用場景中,素材應該涵蓋各類攝像機視角,正前方、正後方、左側前方、右側前方、左側後方、右側後方以及俯視視角等等。每種視角的素材都應該被標註,這樣訓練出來的模型纔有更大的通用性。
4. 目標被遮擋也要標註
不能只標註圖像中完整的目標,被遮擋的目標,只要人眼能看清是啥的都應該被標註,而且矩形框只須要包含看得見的部分便可。這樣作的緣由跟上一條相似,提升模型的通用性,實際應用場景中,不少目標被遮擋,模型仍然須要將其檢測出來,因此咱們須要標註相似的素材。下圖道路擁堵,一些車身被遮擋,可是明顯能夠分辨出是什麼目標:
5. 小目標也不能漏掉
雖然不一樣的算法對小目標的檢測效果不一樣,好比Yolo對小目標檢測效果比較好,可是前提是咱們須要準備小目標的素材標註。一張圖片素材中,近處的大目標須要標註,遠處人眼看得清的小目標一樣須要標註。原理跟上一條相似:只要人眼能分清是啥的小目標,都應該標出來。下圖遠處的小目標能夠認出是小汽車:
6. 人眼分不清是啥的不要標
不少時候,因爲素材圖片自己的緣由、或者目標被遮擋大部分、或者遠處目標實在太遠,人眼沒法分辨是什麼,雖然知道是一個目標,可是不知道它究竟是汽車Car仍是客車Bus甚至是人,這種時候不要標註。不然會給神經網絡帶來誤導。下圖被遮擋部分太多,能夠忽略不用標註:
如何保證素材標註的質量
上面說了這麼多,其實要保證素材標註質量的有效方式有兩條:
1. 不要光追求速度
給作素材標註的團隊強調,雖然有數量上的指標,可是指標不能定得過高,若是定得過高,你們都爲了完成數量任務,天然會忽略了質量。最後標註質量確定上不去,類型出錯、方框位置忽大忽小,必然須要大量返工。
2. 專人作素材審覈
專門找一小撮人作素材審覈,主要負責素材標註後的驗證,看看類型是否出錯,方框的位置、大小是否錯得離譜等等。千萬不要小看這項工做,它的做用跟code review同樣,容易被忽視,其實它提升效率不是一星半點。