按照readme文件夹中的INSTALL.md操作:
conda create --name CenterNet python=3.6#创建一个名为CenterNet的python3.6虚拟环境
source activate CenterNet #激活该虚拟环境(source deactivate CenterNet可以退出虚拟环境)
conda install pytorch=0.4.1 torchvision -c pytorch #conda安装pytorch为0.4.1版本的以及其相关环境
但这里有两个包(mkl和pytorch0.4.1)比较大,会出现网络错误,因此这里用pip从官网下载0.4.1的torch:
pip install http://download.pytorch.org/whl/cu90/torch-0.4.1-cp36-cp36m-linux_x86_64.whl
接着禁用cudnn的批量正则化,原因大致是由批量正则化之前很大的中间特征引起的:
PYTORCH=~/anaconda3/envs/CenterNet/lib/python3.6/site-packages/ #如果在服务器上,则改变一下前面的路径,如/home/name/local/anaconda3/envs/CenterNet/lib/python3.6/site-packages/
sed -i "1254s/torch\.backends\.cudnn\.enabled/False/g" ${PYTORCH}/torch/nn/functional.py #对于pytpoch v0.4.1
git clone https://github.com/xingyizhou/CenterNet
cd CenterNet
pip install -r requirements.txt #安装所依赖的包
我是在CenterNet文件夹下安装的COCOAPI:
git clone https://github.com/cocodataset/cocoapi.git $COCOAPI
cd cocoapi/PythonAPI
make
python setup.py install --user
cd CenterNet/src/lib/models/networks/DCNv2 #先进入该文件夹
在编译之前,需要对DCNv2文件夹下的make.sh脚本修改,即在该文件最前部添加(参考自此处):
export CUDA_PATH=/usr/local/cuda-8.0/
export CXXFLAGS="-std=c++11"
export CFLAGS="-std=c99"
export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export CPATH=/usr/local/cuda-8.0/include${CPATH:+:${CPATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
注意,这里包含cuda的路径都需要修改成自己机器所对应的。
接着运行make.sh编译:
./make.sh
编译NMS以便多尺度测试或测试ExtremeNet:
cd CenterNet/src/lib/external
make
这里使用的是COCO数据集的格式,数据集需要按如下格式放置:
CenterNet/data/
└── coco
├── annotations
├── instances_val2017.json
└── instances_train2017.json
├── train2017
└── val2017
其中,annotations中的json文件是对train2017和val2017中图片的标注。
度盘,提取码v9h2。
下载models中的ctdet_coco_dla_2x.pth并放入CenterNet下的models下即可。
由于这里没有运用姿态检测,因此需要修改几个参数(参考自此处):
vim CenterNet/src/lib/models/networks/pose_dla_dcn.py
vim CenterNet/src/lib/opts.py
将第323行改成
opt.flip_idx = False
不这样做的话,在训练时会去Google Drive上下载姿态检测相关的预训练模型,导致网络超时。
针对不同的数据集格式,有不同的参数格式,具体参考GETTING_STARTED.md
对于COCO数据集:
python main.py ctdet --exp_id coco_dla --batch_size 32 --master_batch 15 --lr 1.25e-4 --gpus 0,1
batch_size可适当调成16,否则会显存不足,gpu卡也调成一张…