1. 为什么使用mmdetection
mmdetection造了很好的轮子,对于检测分割之类的任务确实可以很大地提高code效率
2. 安装注意事项
一定要按照官方!!!的步骤一步一步来
比如mmcv一定要装mmcv-full
比如pytorch一定要和你的cuda版本匹配
3. mmdetection梳理
这里可以参考https://zhuanlan.zhihu.com/p/113775697
https://juejin.im/post/6844904133560893447
还有一个重要的文档,官方解说 https://mmdetection.readthedocs.io/en/latest/tutorials/new_modules.html
(1)在我看来,mmdetection将整个工程划分成两大模块,dataset和model,这些模块在/mmdetection/mmdet/下的文件夹:
dataset
model,又包括backbone,neck,head,roi_extractor,loss,optimizer
(2)当这些模块被构建的时候,都是经过builder.py这个文件一级一级创建的
可以看到,builder用到一个重要的类, Registry,这个类是mmcv的registry.py里定义的。
我认为这个类的作用就是建立一个类似dict的类,名字就是给定的名字,然后通过register_module函数建立一个字典,这个字典的key是你给定的字符串,值是一个类
所以有时候定义类的时候,要在类的前面加上装饰器,调用Registry.register_module()这个函数
类Registry还有一个重要函数 build_from_cfg()
就是这个函数把你在configs下定的这些要求加到类里
后记: 如何使用多GPU训练?并且制定gpu的id:
在服务器的命令口输入
CUDA_VISIBLE_DEVICES=1,2 dist_train.sh ${CONFIG_FILE} 4