阿里天池服裝標籤識別比賽新人賽練習經驗心得 Tianchi FashionAI Attributes Recognition of Apparel

服裝標籤項目總結與心得

先放項目代碼倉庫:https://github.com/JosephPai/FashionAI-Attributes
強烈歡迎Star/Follow
關於代碼或者數據集如果有任何問題,歡迎大家本博客或者github issues留言一起交流學習

任務描述

全標籤

從屬性標籤知識體系中拿出了8種重要的屬性維度對服裝進行標籤識別。

這些屬性維度是:頸線設計、領子設計、脖頸設計、翻領設計、袖長、衣長、裙長、褲長。

具體示意,見下圖:

design

針對八個不同的屬性維度,分別訓練了各自的分類器。


經驗總結

從零開始接觸這個任務到現在,一些不成熟探索的經驗

1.Pre-trained model

最開始接觸這個任務的時候,用了一個ResNet101網絡直接訓練,一方面訓練極慢,另一方面效果很差。
雖說訓練集有兩萬多張圖片好像看起來不是很少,但是對於CNN提取基礎的features來說還不夠,
更不用說和ImageNet weights相比。
導致模型完全overfit了訓練集,訓練集Acc達到95%+,測試集Acc約爲67%。
使用Pre-trained weights後,訓練過程收斂很快,效果也提升了很多。

準確率提升約’7-10%’

2. Data augmentation

數據增強對於提升模型的泛化能力有很強的作用。

但是在選擇augment類型時候,要針對特定任務有取捨,選錯了方法則適得其反。

比如屬性標籤任務中,可以大致分爲設計長度兩大類(每一大類各包括四個屬性維度)。

通過一些實驗結果得出,比較適用於長度的增強方法:

  • 顏色通道偏移 channel_shift
  • 隨機旋轉 rotation
  • 水平翻轉 horizontal_flip

這應該是比較通用的幾個增強方法了,適用於絕大部分分類任務

針對設計任務,在上面的基礎上,還可以增加

  • 錯切,x座標(或y)保持不變,而對應的y(或x)按比例發生平移 shear
  • 水平/垂直隨機放縮 zoom

可以想象,如果把垂直放縮方法應用到長度任務上,很可能會對模型造成負面影響

一些框架工具自帶的增強類型有限,可以用imgaug的python庫

準確率提升約’3-5%’

3. Backbone網絡的選擇

對於沒有特殊需求的圖片分類任務,個人覺得,
應該從AlexNet、VGG一路到ResNet再一路到NASNet進行排序,
根據自己的硬件條件選擇可以使用的最強的網絡

本次任務暫時選用DenseNet121作爲統一的Backbone

4. 利用人的先驗知識挖掘數據中的信息

例如長度任務,我們的知識告訴我們,這些長度是一個遞增的關係。

我們可以基於此設計一個weighted loss function。

weight權重是基於類間距離的,預測結果和正確結果差別越大,懲罰應該越大。

準確率提升約’1-1.5%’

值得一提的是,這次的數據集中,標籤中含有m(maybe)。

如果單純根據y標籤,進行one-hot編碼,則損失了m信息。

利用m標籤信息,編碼爲soft label(例如y 0.7, m 0.3)。使用此編碼方式時需要注意數據中可能存在多個m。

準確率提升約’1.5-2.5%’

5. Padding

一開始忘了對圖片進行padding操作,讀入之後直接resize了,好在數據集的圖片都比較友好

經丹陽哥提醒,進行了padding操作

準確率提升約’0.3%’(當數據集不夠規範時候,是否進行padding操作對結果影響要大很多)

6. Image Size

圖像的大小(分辨率)對於模型效果有很大影響,尤其在設計的維度

更大的圖像包含更多的信息

例如在collar design任務中,將Image size從320提升至448,準確率提升約’3%’

7. Attention

好的模型應該是自適應attention的。

在神經網絡學習過程中,應該能夠自動關注到對分類結果有影響的區域。

當然外力的attention驅動還是可以使模型更專注的關注到該區域。

只不過,當Image size越大,網絡越強,attention帶來的提升會相對越小。

基於heat map的attention使準確率提升約’1-2%’

熱度圖heat map的獲得一般參考Grad-CAM。

可視化熱度圖,對於理解模型原理,判斷模型是否真正有效,
以及attribute localization and manipulation有很強的指導意義。

8. 多任務聯合訓練

TODO

9. 調參

個人感受是,在模型基本固定的情況下,learning rate是最重要的參數。

一般先用Adam(1e-4)快速收斂

然後再用SGD(3e-5, 1e-5, 3e-6)等手動微調


訓練結果

屬性 Accuracy Precision
collar design 87.3% 86.8%
lapel design 90.1% 89.6%
neck design 88.6% 88.7%
neckline design 88.4% 89.2%
pant length 84.5% 83.4%
skirt length 81.3% 81.7%
sleeve length 80.8% 79.4%
coat length 78.2% 78.3%
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章