项目地址:https://github.com/xingyizhou/CenterNet/
本文介绍了如何从头开始跑通centernet代码
我的环境:cuda10 ubuntu16.04
因为使用cuda10(cuda>=10.0都可以这么操作),官方安装教程中使用pytorch=0.4.1会报错:get error when run demo _dcn_v2.so: undefined symbol: __cudaRegisterFatBinaryEnd
所以安装方式有些不同
0. 激活新环境[可选但是推荐]
conda create --name CenterNet python=3.6
conda activate CenterNet
1. 安装pytroch1.0
conda install pytorch=1.0 torchvision -c pytorch
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
3. 下载代码库
CenterNet_ROOT=/path/to/clone/CenterNet
git clone https://github.com/xingyizhou/CenterNet $CenterNet_ROOT
4.安装 requirements
pip install -r requirements.txt
5. 编译 deformable convolutional(from DCNv2).
git clone https://github.com/CharlesShang/DCNv2.git
cd DCNv2
sh make.sh
6. 如果你想使用多尺度测试或者测试ExtremeNet需编译NMS
cd $CenterNet_ROOT/src/lib/external
make
7. 下载预训练模型并存放到文件夹$CenterNet_ROOT/models/`
现在可以用程序测试下环境是否安装成功
1.确保已下载预训练模型
本次运行检测模型:ctdet_coco_dla_2x.pth
2.运行结果可视化代码
cd src
python demo.py ctdet --demo ../images/33823288584_1d21cf0a26_k.jpg --load_model ../models/ctdet_coco_dla_2x.pth
运行结果:
1.确保已下载预训练模型
2.下载测试数据集coco2017val
3.下载标注instances_val2017.json
4.测试精度
python test.py ctdet --exp_id coco_dla --keep_res --load_model ../models/ctdet_coco_dla_2x.pth
测试结果:
单尺度测试精度 map 37.4
多尺度测试精度 map 41.7
因为本人使用coco数据集,故在本文中只介绍coco数据集的准备方式,想了解其他数据格式的构建可见官方教程
1. 了解目标检测任务coco数据集格式:https://blog.csdn.net/weixin_38429450/article/details/112759862
2. 将数据集转化为coco格式
因不是本文重点,所以这里不介绍具体的转化方法,大家可以参考转化工具或者自己编写代码。
3.将数据集按照如下放置,当然小伙伴也可以按照自己喜欢的方式放置,修改下代码中的路径即可
${CenterNet_ROOT}
|-- data
`-- |-- coco
`-- |-- annotations
| |-- instances_train2017.json
| |-- instances_val2017.json
| |-- person_keypoints_train2017.json
| |-- person_keypoints_val2017.json
| |-- image_info_test-dev2017.json
|---|-- train2017
|---|-- val2017
`---|-- test2017
cd src
python main.py ctdet --exp_id coco_dla --batch_size 32 --master_batch 15 --lr 1.25e-4 --gpus 0,1