使用CenterNet训练自己的数据集

最近在做目标检测的项目,使用YOLOv3,Mask R-CNN,Faster R-CNN训练了自己的数据,效果还可以,在保证精度的情况下,速度有点慢。于是就开始找别的方法,发现了2019年的文章CenterNet :Objects as Points,想尝试看看效果。于是就开始了艰难的配置,在这里记录一下。
我是在服务器上训练的,环境是cuda10 ,使用的代码是https://github.com/xingyizhou/CenterNet
1.按照https://github.com/xingyizhou/CenterNet/blob/master/readme/INSTALL.md步骤一步步安装。
使用CenterNet训练自己的数据集_第1张图片
在进行第一步时,出现了问题,Pytorch应该安装适合自己cuda版本的,因为没有在网上找到适合cuda10版本的0.4.1版本的Pytorch,于是就去官网按照以下命令下载了
conda install pytorch torchvision cudatoolkit=10.0 -c pytorch
在进行第五步时,首先:
问题:ImportError: torch.utils.ffi is deprecated. Please use cpp extensions instead.
原因:在PyTorch 1.1.0中,torch.utils.ffi被弃用了,需要用其他包来替代
解决方法:
把build.py和build_double.py中的
from torch.utils.ffi import create_extension 替换为 from torch.utils.cpp_extension import BuildExtension
ffi = create_extension(…) 替换为 ffi = BuildExtension(…)
参考:https://blog.csdn.net/c20081052/article/details/89407771
又遇到了新的问题:TypeError: dist must be a Distribution instance
参考https://www.gitmemory.com/issue/xingyizhou/CenterNet/7/486653333这篇文章问题得以解决。
按照上面,配置的工作完成了。
2.数据集
把数据集转换为COCO之后,按照以下路径存放
使用CenterNet训练自己的数据集_第2张图片
3.为了训练自己的数据集,需要修改代码。
src/lib/opts.py:
第338行的num_classes修改为自己的种类数
src/lib/datasets/dataset/coco.py:
第14行num_classes修改为自己的种类数
第40行self.class_name修改为自己的种类名
第26行的文件名根据自己的命名进行修改(测试时)
在这里插入图片描述
src/lib/utils/debugger.py:
第46行num_classes改为自己的种类数
第454行coco_class_name改为自己的种类名
3.开始训练
在experiments作者已经写好了几个sh,可以直接使用,我使用的是ctdet_coco_resdcn18.sh
使用CenterNet训练自己的数据集_第3张图片
4.测试
CUDA_VISIBLE_DEVICES=1 python test.py ctdet --load_model /home/XX/code/CenterNet-zhouxy/exp/ctdet/coco_resdcn18/model_best.pth --test
可计算出AP等

5.测试视频:
CUDA_VISIBLE_DEVICES=1 python demo.py ctdet --demo /home/XX/code/CenterNet-zhouxy/video/test.avi --load_model /home/XX/code/CenterNet-zhouxy/exp/ctdet/coco_resdcn18/model_120.pth
需要修改的地方:
增加.global_variable.py:
使用CenterNet训练自己的数据集_第4张图片
使用CenterNet训练自己的数据集_第5张图片

debugger.py中修改:
在这里插入图片描述
使用CenterNet训练自己的数据集_第6张图片
修改demo.py:
使用CenterNet训练自己的数据集_第7张图片
6.测试单张图片
CUDA_VISIBLE_DEVICES=2 python demo.py ctdet --demo /home/XX/code/CenterNet-zhouxy/data/in/004641.jpg
–load_model /home/XX/code/CenterNet-zhouxy/exp/ctdet/coco_resdcn18/model_120.pth

你可能感兴趣的:(使用CenterNet训练自己的数据集)