1.环境的搭建

1.1.创建虚拟环境

conda create --name CenterNet python=3.6

1.2激活虚拟环境

conda activate CenterNet

1.3安装pytorch1.2.0

pip install torch=1.2.0 torchvision=0.4.0 -f https://download.pytorch.org/whl/torch_stable.html

1.4安装COOCAPI

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

1.5.clone CenterNet的项目到本地

git clone https://github.com/xingyizhou/CenterNet $CenterNet_ROOT

1.6 安装所依赖的包

pip install -r requirements.txt

1.7.编译deformable convolutional (from DCNv2 支持pytroch 1.2.0)

cd $CenterNet_ROOT/src/lib/models/networks
rm -rf DCNv2
git clone https://github.com/CharlesShang/DCNv2
cd DCNv2
python setup.py build develop

1.8.[可选的,仅在使用extremenet或多尺度测试时需要]如果需要使用多尺度测试或测试extremenet,执行这步,编译NMS

cd $CenterNet_ROOT/src/lib/external
#python setup.py install
python setup.py build_ext --inplace

1.9. 测试一下是否配置成功:

python demo.py ctdet --demo /home/CenterNet/images/ --load_model /home/CenterNet/models/ctdet_coco_dla_2x.pth

2.准备自己的数据集并开始训练

2.1.将数据的标注转化为COCO格式

当我们生成train.json,test.json和val.json文件之后,来到CenterNet这个工程里,在data文件夹下新建一个文件夹,名字就是自己数据集的名称,文件结构如下:

-Data(在CenterNet项目下创建data文件夹)
--myData(在data文件夹下创建,名字就是自己数据集的名称)
---images(myData下存放train.json,test.json和val.json文件)
---annotations(myData下存放所有图片)

2.2.在src/lib/datasets/dataset里面模仿"coco.py"新建一个“自己数据集名. py”,文件内容复制一下”coco.py“中的内容,修改一丢丢内容就可以了

将coco修改成自己的类别,num_classes=80改成自己的类别数(不包括背景类),default_resolution(这个参数有两种(300,300)或者(512,512)
在这里插入图片描述接下来的mean和std改成自己图片数据集的均值和方差(这个脚本我以前写过)
在这里插入图片描述
修改数据和图片路径,data_dir 输入的是之前建立的数据集文件夹的名字,img_dir 输入的是 images 图片文件夹
在这里插入图片描述修改json文件路径如下
在这里插入图片描述类别名字和类别id改成自己,需要注意的点:类别id一定要从1开始,要不然会报错。
在这里插入图片描述

2.3.将数据集加入src/lib/datasets/dataset_factory里面 在dataset_facto字典里加入自己的数据集名字 (格式为2.2中’自己数据集名. py’中’自己数据集名‘:自定义的数据集这个类的名字,因为要从2.2中’自己数据集名. py’中里找到你的数据类,名字必须对应上):

在这里插入图片描述

2.4. 修改/src/lib/opts.py 将自己的数据集设为’default’数据集,加入到help里面。

self.parser.add_argument('--dataset', default='mydata',  
                                 help='coco | kitti | coco_hp | pascal | myData')

2.5.修改ctdet任务使用的’default’数据集为自己的数据集,如下(修改分辨率,类别数,均值,方差,自己的数据集名字):

 'ctdet': {'default_resolution': [512, 512], 'num_classes': 80,
           'mean': [0.408, 0.447, 0.470], 'std': [0.289, 0.274, 0.278],
           'dataset': 'coco'},

2.6.修改src/lib/utils/debugger.py文件(修改为自己数据的类别和名字,数据集名字一定保持一致

在这里插入图片描述
再加上自己数据的类别,不包括背景类:
在这里插入图片描述

2.6.开始训练

python main.py ctdet --exp_id coco_dla --batch_size 32 --master_batch 1 --lr 1.25e-4 --gpus 0,1

参考以下博主的博客:
1.(绝对详细)CenterNet训练自己的数据(pytorch0.4.1)链接
2.【centernet】编译centernet支持pytorch1.2.0链接

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐