以典型的分類問題爲例,來梳理模型的訓練過程。訓練的過程就是問題發現的過程,一次訓練是爲下一步迭代作好指引。算法
準備:網絡
整理數據集框架
切分樣本集
如:90%用於訓練,10%留着測試,比例本身定。訓練集合,對於弱勢類要重採樣,最後的圖片列表要shuffle;測試集合就不用重採樣了。
訓練中要保證樣本均衡,學習到弱勢類的特徵,測試過程要反應真實的數據集分佈。
第一列是圖片路徑,後面幾列是標籤(多任務)。
學習
按須要的格式生成tfrecord
按照train.list和validation.list生成須要的格式。生成和解析tfrecord的代碼要根據具體狀況編寫。測試
1.混淆矩陣必不可少
混淆矩陣能夠發現哪些類是難區分的。基於混淆矩陣能夠獲得各種的準召,進而能夠獲得哪些類比較差。
如:列爲真值,行爲檢測的值。優化
gt/pl | 靴子 | 單鞋 | 運動 | 休閒 | 棉鞋 | 雪地靴 | 帆布 | 拖鞋 | 涼鞋 | 雨鞋 |
---|---|---|---|---|---|---|---|---|---|---|
靴子 | 4524 | 45 | 39 | 79 | 12 | 59 | 5 | 6 | 0 | 20 |
單鞋 | 51 | 4088 | 15 | 44 | 115 | 9 | 18 | 80 | 43 | 6 |
運動 | 38 | 6 | 817 | 247 | 0 | 2 | 18 | 8 | 1 | 0 |
休閒 | 53 | 47 | 171 | 806 | 17 | 8 | 118 | 15 | 1 | 2 |
棉鞋 | 12 | 110 | 5 | 15 | 424 | 55 | 2 | 32 | 1 | 1 |
雪地靴 | 53 | 6 | 5 | 10 | 73 | 628 | 0 | 13 | 2 | 1 |
帆布鞋 | 5 | 28 | 16 | 158 | 1 | 1 | 515 | 17 | 3 | 4 |
拖鞋 | 6 | 139 | 1 | 12 | 33 | 3 | 18 | 2316 | 60 | 6 |
涼鞋 | 7 | 69 | 3 | 6 | 0 | 0 | 2 | 55 | 633 | 1 |
雨鞋 | 26 | 6 | 1 | 3 | 0 | 1 | 2 | 5 | 1 | 499 |
進而可得:spa
label | 召回 | 精度 |
---|---|---|
靴子 | 0.9446648569638756 | 0.947434554973822 |
單鞋 | 0.9147460281942269 | 0.8996478873239436 |
運動 | 0.7185576077396658 | 0.7614165890027959 |
休閒 | 0.6510500807754442 | 0.5840579710144927 |
... | ... | ... |
PS:運動-休閒容易混淆。設計
2.抽樣看測試數據
從測試數據中每類抽1000張,把它們的模型結果放在不一樣的文件夾下。對於分析問題仍是頗有效的,爲何它會分錯,要拿出來看看!
有些確實是人工標錯了。
3d
3.CAM
經過CAM能夠查看網絡究竟學到了什麼(是否是學錯了)。對於細粒度問題就不用分析CAM了,通常7x7的特徵圖原本就很小了,根本就看不出細節學到了什麼,只能粗略看看部位定位是否準確。
也能夠必定程度上幫助理解爲何網絡會搞錯,好比下面的單鞋被誤判爲了拖鞋。
blog