标签:设计 不同的 细粒度 文件夹 误判 审核 多任务 路径 shuff
以典型的分类问题为例,来梳理模型的训练过程。训练的过程就是问题发现的过程,一次训练是为下一步迭代做好指引。
准备:
整理数据集
切分样本集
如: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 |
进而可得:
label | 召回 | 精度 |
---|---|---|
靴子 | 0.9446648569638756 | 0.947434554973822 |
单鞋 | 0.9147460281942269 | 0.8996478873239436 |
运动 | 0.7185576077396658 | 0.7614165890027959 |
休闲 | 0.6510500807754442 | 0.5840579710144927 |
... | ... | ... |
PS:运动-休闲容易混淆。
2.抽样看测试数据
从测试数据中每类抽1000张,把它们的模型结果放在不同的文件夹下。对于分析问题还是很有效的,为什么它会分错,要拿出来看看!
有些确实是人工标错了。
3.CAM
通过CAM可以查看网络究竟学到了什么(是不是学错了)。对于细粒度问题就不用分析CAM了,一般7x7的特征图本来就很小了,根本就看不出细节学到了什么,只能粗略看看部位定位是否准确。
也可以一定程度上帮助理解为什么网络会搞错,比如下面的单鞋被误判为了拖鞋。
标签:设计 不同的 细粒度 文件夹 误判 审核 多任务 路径 shuff
原文地址:https://www.cnblogs.com/houkai/p/10221709.html