使用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步骤一步步安装。
在这里插入图片描述
在进行第一步时,出现了问题,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之后,按照以下路径存放
在这里插入图片描述
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
在这里插入图片描述
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:
在这里插入图片描述
在这里插入图片描述

debugger.py中修改:
在这里插入图片描述
在这里插入图片描述
修改demo.py:
在这里插入图片描述
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

  • 9
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 22
    评论
使用CenterNet训练自己的数据集,你需要进行以下步骤: 1. 删除之前训练过程中生成的缓存文件。如果你之前使用了coco数据集测试了模型,需要删除CenterNet-master/cache/coco_minival2014.pkl文件。这是因为在第一次运行时,代码会将coco数据集的instances转换为模型所需的格式,并在下一次使用时直接读取。如果你没有训练过coco数据集,可以忽略这一步。\[1\] 2. 修改参数。根据你要训练的模型选择对应的文件,比如models/CenterNet-52.py或models/CenterNet-104.py。在文件中找到第132行,将out_dim的值从80修改为你自己数据集的类别数目。\[2\] 3. 将数据集分成训练集和验证集。将图片文件夹重命名为trainval2014和minival2014,并放置在CenterNet-master/data/coco/images目录下。将对应的json文件命名为instances_trainval2014.json和instances_minival2014.json,并放置在CenterNet-master/data/coco/annotations目录下。\[3\] 完成以上步骤后,你就可以使用CenterNet训练自己的数据集了。 #### 引用[.reference_title] - *1* *2* *3* [CenterNet 训练自己的数据集](https://blog.csdn.net/surserrr/article/details/100153886)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值