mmClassification学习
课程
mim很好用,感觉需要更多地研究一下
流程
下载配置文件和模型
1 | mim download mmcls --config mobilenetblablabla --dest . |
使用API
1 | from mmcls.apis import init_model, inference_model |
修改配置文件
1 | num_classes = 10 |
开始训练
1 | mim train mmcls mobilenet-v2_fruit.py |
作业记录
作业很简单。top-1能到95以上。进阶作业比较同质化,又没啥原创性的想法改网络结构,懒得做了。一些注意事项记录如下。
解决ImportError: cannot import name 'blablabla' from 'mmcv'问题:重装mmcv-full
pip list | grep mmcv发现有mmcv和mmcv-full- 卸载
mmcv - 重装
mmcv-full:mim uninstall mmcv-full+mim install mmcv-full
更新pip包:pip install -U
mim命令行工具很好用,调config文件的时候用非常方便,且下载的config文件是完整而非基于__base__的。
1 | mim download mmcls --config mobilenet-v2_8xb32_in1k --dest . |
关于保存最好的一次,请见issue和我的回答。
关于evaluation其实有一些令人迷惑的地方,比如这里的metric='accuracy'和ClsHead里的topk=(1, 5)之间有什么关系?config文件中是这样写的:
1 | evaluation = dict(interval=1, metric='accuracy', save_best='accuracy_top-1') |
这里的interval和save_best是传给EvalHook的,而metric等其他参数则是传给CustomDataset(或其他数据集类)的。实际上还有别的metric,base_dataset.py代码文件中evaluate函数是这样写的
1 | # def evaluate(...): |
所以这个save_best传递的accuracy_top-1实际上是eval_result的一个key。





