CenterNet模型复现(超详细)

本文主要内容:CenterNet在Ubuntu20.04上的复现教程
本文面向对象: 深度学习用户

由于博主本人的研究方向是目标检测,所以在这里写一篇关于基于中心点的目标检测的经典算法CenterNet的复现步骤,具体的实验设备如下(代码环境请看下面第二个表格):

设备型号
系统Ubuntu20.04
CPUIntel® Xeon® CPU E5-2630 v4 @ 2.20GHz
显卡Tesla P40
环境版本
python3.8
CUDA11.1
pytorch1.8.0

基于以上的设备和环境,经过以下的流程可以完整复现CenterNet模型。

一、前期准备:

首先是我们的前期准备,在模型复现前,我们需要准备好自己以下内容:

  • 硬件及驱动环境
  • 代码环境

由于博主本人的实验设备如上面表格所示,则本文将以上面的实验设备为基础进行示例,其他系统或设备大差不差,核心思想不变,个别细微区别(如命令、版本等)请自行替换。

硬件及驱动准备:

  1. 查看系统版本号:lsb_release -a
  2. 查看系统支持的驱动:ubuntu-drivers list
  3. 查看系统cpu的架构:uname -march
  4. 查看系统显卡型号:lspci | grep -i nvidia
  5. 查看显卡具体信息:nvidia-smi
    若没有显卡信息,则需要根据ubuntu-drivers list来安装显卡驱动。
    显卡驱动安装请参考:https://blog.csdn.net/str1ngthen/article/details/133792936?spm=1001.2014.3001.5502

代码环境准备:

我们需要复现CenterNet模型则首先需要有相应的代码运行环境:

  1. 下载g++编译器:apt install g++
  2. 安装ninja:sudo apt install ninja-build
  3. 安装CenterNet复现环境:
  • a. 创建并进入conda环境(conda安装请自行百度):
 conda create --name CenterNet python=3.8
 conda activate CenterNet
python -c "import torch;print(torch.__version__);print(torch.version.cuda);print(torch.backends.cudnn.version());print(torch.cuda.is_available()); print(torch.zeros(1).cuda())"

理想情况下输出的是:True,其他的不是的话就是安装失败了呗,别看这篇文章了,去找其他的文章看或者在我的基础上解决一下。

其他命令(可忽略):

  • 卸载原先的torch、torchaudio和torchvision:

    pip uninstall torch torchvision torchaudio -y
    

二、代码复现:

在完成了代码环境准备后,我们需要下载CenterNet代码并进行编译运行,其中,我们需要参考下方的官方文档:

官方文档:https://github.com/xingyizhou/CenterNet/blob/master/readme/INSTALL.md

  1. 在你理想的文件夹中克隆CenterNet网络:https://github.com/xingyizhou/CenterNet
  2. 在CenterNet文件夹同级目录下安装COCO数据集:
# COCOAPI=/path/to/clone/cocoapi
git clone https://github.com/cocodataset/cocoapi.git $COCOAPI
cd /path/to/clone/cocoapi/PythonAPI
make
python setup.py install --user
  1. 进入CenterNet文件夹中安装所需运行包:
cd /path/to/CenterNet
pip install -r requirements.txt

若在其中出现构建opencv-python错误的话请参考:https://blog.csdn.net/u012331046/article/details/131802939
4. 【重要】删除CenterNet/src/lib/models/networks下的原始DCNv2,下载新的DCNv2:https://github.com/lucasjinreal/DCNv2_latest
5. 【重要】将下载的新的DCNv2版本进行回退到以下版本以匹配我们的pytorch1.8.0和CUDA11.1:

git checkout fa9b2fd740ced2a22e0e7e913c3bf3934fd08098

请注意,请将新下载的DCNv2文件夹的名字(有可能有后缀)改为DCNv2。

  1. 进入DCNv2中编译:./make.sh
    若出现以下错误:
    make DCNv2时报错
    则打开DCNv2文件夹中的make.sh文件,修改为以下内容后再次执行./make.sh
    在这里插入图片描述
    出现以下内容则代表编译完成:
    在这里插入图片描述

至此,我们的CenterNet代码完全拷贝下来并且对DCNv2也进行了替换编译,接下来就可以继续按照官方文档进行复现。
7. 按照此文件中的Use CenterNet小节进行复现:https://github.com/xingyizhou/CenterNet/tree/master

总结

以上内容是CenterNet模型复现的一个简单实现,请读者注意,我的模型复现是完全基于以上设备和环境来进行的,也就是完全按照那两个表格的内容来进行的,如果你的设备不同(即第一个表格与我不同),比如显卡是3090、2060或其他不同,你同样可以按照第二个表格的内容进行尝试一下,因为代码环境与很多设备都是兼容的,祝你们成功。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值