官方CenterNet——目标检测代码复现
官方CenterNet——目标检测代码复现,只是让代码跑起来,不包含其他参数修改
一、源码下载
注意:所有的模型等相关代码都在src的文件夹下的models中,根目录下的models文件夹是空的。

二、前言
下载好了代码以后,建议先看readme 
环境等配置看INSTALL.md(不看就只能直接运行demo.py,然后报错什么解决什么。😅我就是直接跑出了很多bug才有了这篇博客)
以下内容是从直接运行,到出现的bug一个一个的解决过程。
如果想更快复现,建议参看:
CenterNet复现全过程(包含自定义数据集的训练)-CSDN博客
解决PyTorch环境下No module named ‘_ext‘报错办法_no module named 'ext-CSDN博客
三、对图片/视频目标检测
3.1 下载权重文件到根目录下的models文件夹下


3.2 运行demo.py

demo.py文件路径:src/demo.py
注意路径,最好全部用绝对路径:

3.3 下载最新DCNv2
直接运行会报错:ModuleNotFoundError: No module named 'models.networks.DCNv2._ext'
需要删除掉DCNv2这个文件夹:
然后去以下地址下载最新的DCNv2,将下载好的文件重命名为DCVv2然后放到原来的路径:src/lib/models/networks/DCNv2
lucasjinreal/DCNv2_latest: DCNv2 supports decent pytorch such as torch 1.5+ (now 1.8+)
再次运行,报错:ModuleNotFoundError: No module named '_ext'

3.4 pytorch1.0以上版本要禁用cudnn的批量正则化
手动修改手动修改 torch/nn/functional.py 文件内容,如果你是anaconda环境(文件地址:~/anaconda3/envs/PyTorch/lib/site-packages/torch/nn/functional.py)
找到torch.batch_norm中的torch.backends.cudnn.enabled替换为False(大概在1697行)


3.5 编译nms
报错:
解决:

然后重新编译:


3.6 编译 DCNv2
进入新下载的DCNV2目录下,编译


3.7 手动下载权重文件并更改加载权重文件路径
修改完上述bug后,再次运行demo.py文件,它通过在指定的网址下载权重文件,可能会下载不成功,所以需要我们手动下载。

首先进入这个网址下载: "http://dl.yf.io/dla/models\imagenet\dla34-ba72cf86.pth"
![]()
下载到 models/dla34-ba72cf86.pth

然后修改这段函数,添加指定的加载路径:

改为:

四、成功运行
再次运行demo.py文件

五、不使用命令行运行
如果不想每次运行都使用命令行重新输入,可以在demo.py中修改:

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)