用deeplab 訓練Pascal VOC2012數據集時需注意的一些問題

用deeplab 訓練Pascal VOC2012數據集時需注意的一些問題

1 segmentation_dataset.py中類別數目的設置

num_class=自己的標籤數目+2

比如我訓練的時候只需要person這一類標籤,那麼我的num_class就是3,這三類分別爲:person,background以及ignore_label

2 單通道mask中標籤像素值設置

生成的mask必須爲單通道(灰度圖),建議爲png格式。

注意,在製作mask時,對所有object的灰度像素值有要求。

對於所有object包括background在內,在mask中要將灰度值標註爲0~n,雖然產生的圖片很難看出區別,但是這對訓練是有效的。注意,不要把object的灰度值標註成10,20,100…(這樣代碼會直接將灰度值和class匹配,這在調整權重等操作會有麻煩~)

總的來說就是:“background”類中的像素值應爲0,第一個類的像素值應爲1,因爲第二個類的像素值應爲2,依此類推…不要將類保存爲其他值,如100或 224,必須要按照從1到N的順序保存標籤

3 權重不平衡問題

如果你的問題是二分類或者和我的數據集類似,存在object之間imablance,這需要在train_utils.py中修改權重.

這裏重點說我個人數據集,因爲是3分類問題,ignore_label權重設爲0,其中background佔了非常大的比例,person類所佔比例較小,故background和person權重分別設爲1和10,假如是4分類問題,並且object2比object1要稍微少一點,那麼最終的設置的權重比例爲ignore_label權重設爲0,background,object1,object2分別設爲1,10,15(比例越大權重越小)

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