監督學習—從好的label開始

在大家的算法工作中,會訓練各種各樣的模型。導致大家模型實際應用效果不夠好的原因有很多,一些常見的原因主要是模型結構不合理 、損失函數不合理 、超參數設置不合理,但除了這些原因,我想最核心的一個原因是數據的質量本身。

相信每一個自動駕駛行業的開發者對此都是會深有體會的,Lyft 團隊在CVPR的presentation上就發出了「High quality labeled data is the key」的感慨。這也是本篇文章想要着重強調的主題。

 

下面通過一個實驗來讓大家直觀感受一下「標註質量對模型訓練性能的影響」

實驗主題:不同質量標註對模型性能影響的對比實驗

實驗框架:

圖中左側是訓練的過程,右側是測試的過程

訓練的部分邏輯:

首先是將KITTI數據集的圖片搭配原生Original label可以得到一個Original KITTI dataset,相應地再將圖片搭配Graviti label可以得到一個Graviti KITTI dataset;然後分別使用這兩個數據集各自訓練一個2D目標檢測的模型,這裏使用的是經典的faster-rcnn模型,得到的模型分別叫做Original model和Graviti model。

測試部分的邏輯:

使用了兩個標註比較精準的第三方數據集;Waymo和Cityscape---來對兩個模型分別進行測試。

數據處理:

先介紹一下本實驗使用到的訓練集和測試集:

(1)Waymo 數據集是由Waymo公司的自動駕駛汽車採集的多傳感器自動駕駛數據集 它的相機數據是連續採集的,其中一百個場景提供了2D框標註。

(2)KITTI 數據集,是由卡爾斯魯厄理工學院和豐田工業大學芝加哥分校聯合發佈的一個用於自動駕駛場景的視覺算法測評數據集。它包括「2D框標註和3D點雲數據」以及其他的子數據集,在實驗中主要使用KITTI的2D框標註數據。

(3)CItyscape 數據集是由Citydcape團隊發佈的一個致力於城市街景的語義理解的數據集 ,它覆蓋了德國50個城市的街景信息 ,數據集中提供了五千張精標的「語義分割和實例分割綜合標註」。

下面我們來看一下具體的結果

(1)這是Waymo的測試集的2D框標註可視化結果,我們可以看到它的標註框是非常貼合目標的。

(2)這是訓練集 KITTI object2D 的一個訓練sample ,那麼和前一張圖相同,紅色的框是KITTI數據集原生的label,藍色的框是Graviti的標註,可以看到所有的藍框都要比紅框的標註更爲準確.

(3)下圖是Cityscape 的一個sample,在實驗中我們需要將實例的像素信息轉換成2D框信息 ,如圖中白框所示

 

實驗結果:

這是兩個模型在Waymo數據集上的測試結果 ,圖中有三種顏色的框。其中紅色是 GroundTruth的預測結果 ,藍色是Graviti model 的預測結果,綠色是 Original model的預測結果:

從圖中我們可以直觀的看出,標註這兩輛白車的藍框比綠框更接近紅色的Groundtruth

這是兩個模型cityscape上的測試結果,同樣紅色框是Groudtruth,藍色框是Graviti model的預測結果,綠色的是Original model 的預測結果,以圖中右側第二輛車爲例,就是這輛銀白色的SUV 。大家可以看到車頭處的藍框比紅框更偏內,綠框比紅框更爲偏外。

前邊是可視化的測試結果,下面藉助PR曲線從定量分析的角度來看一下實驗的結果 :

 

簡單介紹一下 PR曲線的含義 :

PR曲線的縱座標是準確率precision,橫座標就是召回率recall。這兩個指標結合可以較爲全面的評價一個模型的預測質量。

準確率指的是「預測的2D框中有多少是正確的有效的2D框」當然對於「正確」的定義是一個柔性的概念,比如說 :「我可以認爲只要預測框和Groundtruth的IoU大於0.5 ,那他就是一個正確的預測。」召回率指的是「所有Groundtruth對應的目標——有所少被正確的預測到了」。如果大家不清楚這個圖表的細節 ,那麼可以先這樣認爲 :越偏右上的曲線對應的模型的質量越好。

在這個圖表中:紅線曲線是Graviti model在不同數據集上的PR曲線, 綠色曲線是Original model 在不同數據集上的PR曲線。

如果橫着看這四副圖表 :上邊兩幅是我們的IoU判真閾值——設置爲 0.5 時的PR曲線結果,下邊兩幅是IoU判真閾值設置爲 0.75 時的PR曲線結果。

以左上圖爲例:紅色曲線比綠色綠色更偏右上 ——這也意味着 :Graviti model的測試性能要比Original model的測試性能要好。

如果我們豎着看的話,左邊是Cityscape數據集上的測試結果 ,右邊是Waymo數據集上的測試結果。

以Cityscape數據集爲例:當IoU閾值從 0.5 調整到 0.75 之後,也就是當要求提高之後,兩條曲線都往左下角偏移了。

這個很好理解類似於——老師的判卷難度提高了,那自然所有考生的分數都會有一定程度的降低, 但是我們可以觀察到,紅色曲線和綠色曲線之間的的gap拉大了,這說明:當我提高我的IoU閾值時,Graviti model的得分下降程度要遠小於 Original model 的下降程度 。

從Waymo這兩張圖, 也是可以得到類似的結論。

 

綜上無論是從可視化的效果還是PR曲線,我們可以得到比較一致的實驗結論,結論有兩點,如下:

第一點 :標註質量會直接影響模型質量

好的標註會訓練出更好的效果!

第二點:標註越精準,預測的結果越接近真值

當IoU判真閾值設置的更高時,模型依然可以得到更好的表現!

再簡單總結一下這個實驗中遇到的問題:

1.不同的數據集之間的格式的統一的問題

在衆多著名的公開數據集當中,它們的標註格式幾乎沒有完全相同的兩個。

 

實驗中用到的數據集格式也是非常的多樣,比如

Waymo的2D框標註呢首先它是TFrecord格式,2D框顯示的是xywh的信息;

KITTI數據集的2D框標註是txt格式 ,2D框顯示的是XYXY的信息;

Cityscape的2D框標註需要先手動從語義分割轉到2D框的標註。

 

當然這也是一個行業發展的初期一個正常現象 ,就像兩千年左右曾經市面上出現的各種各樣的手機充電接口一樣的,我們Graviti 致力於能夠找到一種general的數據標註格式 ,以求能夠把大家從繁忙的複雜的數據處理中解放出來,而能夠更多focus在我們算法工作過程中。

2.篩選sample

數據集格式統一之後我們還需要篩選具體要用到哪些sample,比如說我們前面提到的Waymo數據集,它是連續採集的數據,但是我們沒有必要把所有連續的圖像都選做測試集。

所以在這個實驗中只是間隔的抽取了一部分圖像作爲我們的測試集,比如圖中3幅較爲接近的場景,我們只抽取其中一幅作爲測試集,所以篩選sample這一步也會花費大量時間 。

 

3.類別統一問題

在這個實驗中用到了Waymo,KITTI ,Cityscape 三個公開數據集和Graviti KITTI 標註集。

下面的表中列出了 4個數據集之間的label的分類細節,從這個圖中我們可以看到 :不論是label的種類,還是label的數量,還有label的劃分標準都不盡相同。比如Waymo的VEHICLE類別會包括KITTI的van和tram類別, Cityscape中的bus這一類也並並不完全等同於KITTI的van這一類。

 

(4)國外的數據集下載

相信大家都深有感觸的一點是,很多國外的數據集下載,是需要特殊的工具才能下載, 而且網速非常感人,針對算法工程師對公開數據集使用上的一些痛點,我們也即將在8月下旬上線公開數據集的功能。會提供公開數據集索引,國內站點的下載,並且我們也會提供數據集的標註和標註的可視化,便於大家快速理解數據集標註的可視化,