mmClassification实战
笔记
训练注意事项
对Evaluation部分
1 | evaluation = dict( |
启用标签平滑:
1 | # 在head中修改loss |
load_from
用于加载模型,resume_from
用于重启训练,两者不同。
想要启用Wandb,可以用
1 | log_config = dict( |
但是不知道为什么不能在wandb上看数据集和eval的结果。
评估注意事项
首先需要产生result.pkl
1 | mim test mmcls config.py \ |
然后可以观察结果,在指定目录下会生成一些成功和失败案例,默认为20个
1 | python tools/analysis_tools/analyze_results.py config.py result.pkl \ |
计算acc precision recall等指标,具体可以看这里,或者在base_dataset.py
及其他数据集定义文件里找
1 | python tools/analysis_tools/eval_metric.py config.py result.pkl \ |
如果要计算混淆矩阵,可以看这里
1 | import mmcv |
注意,不需要
--out-items class_scores
也能行
观察CAM激活图
1 | python tools/visualizations/vis_cam.py pic.jpg config.py \ |
不知道观察哪一层可以用--preview-model
来看,关于某类则可指明--target-categ
。
实验
4小鼠实验动物Classification
这是一个自制的数据集,裁切自MOT,来源于真实的4只C57小鼠社交实验,不仅四至小鼠长得一模一样,有时候挤在一起形变和干扰非常多,难度可以说是相当变态了。
mouse1 | mouse2 | mouse3 | mouse4 |
---|---|---|---|
使用hornet-tiny
和densenet121
,相对来说前者看上去更稳定一些(也可能与优化器、数据增强等其他因素有关)。DenseNet是SIPEC给出的解决方案,但是波动非常大,最高可以到54%,低的时候只有45%左右。
最终在测试集的精度可以达到59%左右,感觉已经算是意外之喜了……
混淆矩阵
EigenGardCAM
小鼠的尾部确实做了一点标记。