复现CenterNet

目录

  • 一、INSTALL.md安装
    • 0.用anaconda3创建一个干净的环境
    • 1. 安装pytorch
      • A.按照官方的安装代码,我是无法安装成功的
      • B.And disable cudnn batch normalization
    • 2.安装COCOAPI
    • 3.Clone CenterNet
    • 4.Install the requirements
    • 5.Compile deformable convolutional (from DCNv2)——DCNv2的编译
    • 6.[Optional] Compile NMS if your want to use multi-scale testing or test ExtremeNet.
  • 二、跑通demo.py
    • 1.下载pertained models——ctdet_coco_dla_2x.pth,放入路径$CenterNet_ROOT/models/.
    • 2.(待更新)
    • 报错:./make.sh:Permission denied
    • 报错:_dcn_v2.so: undefined symbol: __cudaRegisterFatB inaryEnd
    • 报错:'__main__' is not a package

论文题目:CenterNet:Objects as Points
论文地址:https://arxiv.org/pdf/1904.07850.pdf
发布时间:2019.4.16
代码:https://github.com/xingyizhou/CenterNet

一、INSTALL.md安装

参考:https://blog.csdn.net/weixin_38715903/article/details/98039181

0.用anaconda3创建一个干净的环境

conda create --name CenterNet python=3.6
'激活它'
conda activate CenterNet

1. 安装pytorch

我的cuda版本:9.0

A.按照官方的安装代码,我是无法安装成功的

1)‘pytorch-0.4.1-py36_py35_py27__9.0.176_7.1.2_2.tar.bz2’无法下载下来
2)没法一次性安装pytorch=0.4.1和torchvision

按照如下步骤:
1)卸载原来用anaconda3创建环境时自带的pytorch(可以先用1. import torch
2. print(torch.__version__)看看有没有已安装的高版本pytorch,再进行这一步),卸载步骤参考https://blog.csdn.net/mao_hui_fei/article/details/112078113,如果当初是用conda install 命令安装的pytorch,则用第一种方法,如果是用pip install命令安装的,则用第二种方法。或者两种方法都试一下。
1.1)使用conda卸载Pytorch
conda uninstall pytorch
conda uninstall libtorch
1.2)使用pip卸载Pytorch
pip uninstall torch
2)在https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/linux-64/中下载
pytorch-0.4.1-py36_py35_py27__9.0.176_7.1.2_2.tar.bz2
3)conda install pytorch=0.4.1 -c pytorch
4)conda install =torchvision

B.And disable cudnn batch normalization

python3.6
import torch
print(torch.backends.cudnn.version())

应输出:7102

# PYTORCH=/path/to/pytorch # usually ~/anaconda3/envs/CenterNet/lib/python3.6/site-packages/
for pytorch v0.4.0
sed -i "1194s/torch\.backends\.cudnn\.enabled/False/g" ${PYTORCH}/torch/nn/functional.py
for pytorch v0.4.1
sed -i "1254s/torch\.backends\.cudnn\.enabled/False/g" ${PYTORCH}/torch/nn/functional.py

2.安装COCOAPI

# COCOAPI=/path/to/clone/cocoapi
git clone https://github.com/cocodataset/cocoapi.git $COCOAPI
cd $COCOAPI/PythonAPI
make
python setup.py install --user

注意一点如果你的python默认不是python3.6的话手动更改一下Makefile里Python的版本
即把python setup.py install --user改为:python3.6 setup.py install --user

3.Clone CenterNet

# CenterNet_ROOT=/path/to/clone/CenterNet
git clone https://github.com/xingyizhou/CenterNet $CenterNet_ROOT

4.Install the requirements

pip install -r requirements.txt

也可以替换为:

python3.6 -m pip install -r requirements.txt

5.Compile deformable convolutional (from DCNv2)——DCNv2的编译

cd $CenterNet_ROOT/src/lib/models/networks/DCNv2
./make.sh

6.[Optional] Compile NMS if your want to use multi-scale testing or test ExtremeNet.

cd $CenterNet_ROOT/src/lib/external
make

二、跑通demo.py

1.下载pertained models——ctdet_coco_dla_2x.pth,放入路径$CenterNet_ROOT/models/.

官方下载链接https://github.com/xingyizhou/CenterNet/blob/master/readme/MODEL_ZOO.md

2.(待更新)

报错:./make.sh:Permission denied

解决方法:sudo chmod -R 777 make.sh
在这里插入图片描述

报错:_dcn_v2.so: undefined symbol: __cudaRegisterFatB inaryEnd

根据这篇的指导github,原因很可能是pytorch中的cuda版本与系统安装的CUDA版本号不一致导致的。先用以下命令查询该版本号:

python -c "import torch;print(torch.version.cuda)"

可以查看到pytorch的cuda版本号。这里我安装了pytorch 0.4.1,该语句输出对应的CUDA版本是9.0.176

nvcc --V

可以查看到当前环境的CUDA版本号,我用的是服务器自身安装的CUDA 11.0。
那么切换CUDA版本即可,服务器个人用户建立pytorch——软连接cuda切换方法如下:
参考来源:https://blog.csdn.net/weixin_44745159/article/details/118654728
第一步 创建软连接

sudo ln -s /usr/local/cuda-9.0 /home/yby/cuda
# 可以不sudo 格式为ln -s 源文件的位置 你想把生成的快捷方式放哪(其实直接cuda也行,因为默认我的用户目录下)

对,其实软连接就是相当于建立了一个快捷方式
可以用 ll 命令查看你的软连接,成功建立是天蓝色,如图:
复现CenterNet_第1张图片
第二步 配置bashrc
sudo gedit ~/.bashrc 进去,结尾修改为如图所示内容:
复现CenterNet_第2张图片
第三步 保存后退出刷新

  1. 保存——右上角save按钮
  2. 退出——Ctrl+Q
  3. source ~/.bashrc 刷新即可

至此,再执行nvcc --V得到的结果如图,成功修改。
在这里插入图片描述
还不行的话:重启pycharm,重新编译一下DCNv2(步骤见一.5)试试。

报错:‘main’ is not a package

https://blog.csdn.net/Good_Luck_Kevin2018/article/details/82253747
其实任何项目,绝大多数都会有一个根目录的,文件夹也是根据功能有组织的布局的,整体会形成一个文件树的形式,在相互之间引用包的时候,应该从根目录开始引入。链接文章写得很清楚。

你可能感兴趣的:(pytorch,深度学习,python)