百度的Paddle这几年发展十分迅速,而且文档十分齐全,涉及到机器视觉的多个应用领域,感觉还是非常牛的,各种backbone,损失函数、数据增强手段以及NMS等,整体感觉复现的很全面,值得推荐学习。
本文主要是基于Paddle实现实例分割算法。
Github地址:https://github.com/PaddlePaddle/PaddleDetection
官方文档:
https://github.com/PaddlePaddle/PaddleDetection/blob/release/2.5/docs/tutorials/GETTING_STARTED_cn.md
1. 安装paddle库
首先需要先安装paddle库,两种安装方式:
1.1 在线安装参考如下网址,直接输入指令即可:
https://www.paddlepaddle.org.cn/install/quick?docurl=/documentation/docs/zh/install/pip/linux-pip.html
1.2 离线安装去如下网址下载对应的库:
https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html
下载对应python版本的库,需要根据自己的cuda版本,python版本选择对应的包,比如我这边是cuda11.2,python3.7
,下载的安装包就是:paddlepaddle_gpu-2.4.1.post112-cp37-cp37m-linux_x86_64.whl
pip install paddlepaddle_gpu-2.4.1.post112-cp37-cp37m-linux_x86_64.whl
进入python编译器,import paddle,如果不报错表示安装成功,输入 paddle.utils.run_check()如果出现PaddlePaddle is installed successfully!
2. 安装PaddleDetection
pip install -r requirements.txt
python setup.py install
3. 实例分割介绍
Paddle在PaddleDetection里面一共复现了三种实例分割算法,Mask R-CNN,Cascade Mask RCNN和SoloV2,综合效率和性能,SoloV2还是比较值得重点研究的。
3.1 模型训练
预训练模型下载:
https://paddledet.bj.bcebos.com/models/pretrained/ResNet50_cos_pretrained.pdparams
训练
python tools/train.py -c configs/solov2/solov2_r50_fpn_3x_coco.yml --eval -o use_gpu=true
图片输入尺寸、batch_size可以在solov2_reader.yml
中修改TrainReader
训练集修改主要是solov2_r50_fpn_3x_coco.yml
中更改,如果是coco数据集,则去修改config/coco_instance.yml
,里面可以配置训练集测试集路径,标签文件路径等
3.2 模型推理测试:
单张图片测试
python tools/infer.py -c configs/solov2/solov2_r50_fpn_3x_coco.yml --infer_img=demo/000000570688.jpg -o weights=./models/solov2_r50_fpn_3x_coco.pdparams
相比于Solov2论文给的代码,Paddle复现的solov2在精度上略有提升,按官方的说法,主要是更强的backbone,更鲁棒的预训练模型。
我尝试了batch_size设为1,使用res50和coco训练集进行训练,图片输入尺寸改成512(长边),训练时,显存消耗为2.9GB,感觉还是比较友好的。