paddledetection使用solov2进行实例分割操作记录
一、配置paddledetection环境
这一部分参考官方配置文档:https://github.com/PaddlePaddle/PaddleDetection
主要参考安装说明这一节,安装成功后,上图的"30分钟上手PaddleDetection"中有介绍使用yolov3的教程,本次操作将参考其进行操作。
二、使用coco数据集进行solov2训练
1.下载coco数据集
在PaddleDetection/dataset/coco/文件夹下,有个download_coco.py脚本,运行后将会自动下载coco数据集,但是coco数据集较大,下载时慎重考虑!下载后将会在coco文件夹下出现coco数据集的相关数据。
2.solov2配置文件
PaddleDetection/configs/solov2
在该文件夹下,会有几个配置文件,根据自己的设备情况进行选择。本次实验选择solov2_r50_fpn_3x_coco.yml.
_BASE_: [
'../datasets/coco_instance.yml',
'../runtime.yml',
'_base_/solov2_r50_fpn.yml',
'_base_/optimizer_1x.yml',
'_base_/solov2_reader.yml',
]
weights: output/solov2_r50_fpn_3x_coco/model_final
epoch: 36
LearningRate:
base_lr: 0.01
schedulers:
- !PiecewiseDecay
gamma: 0.1
milestones: [24, 33]
- !LinearWarmup
start_factor: 0.
steps: 1000
TrainReader:
sample_transforms:
- Decode: {}
- Poly2Mask: {}
- RandomResize: {interp: 1,
target_size: [[640, 1333], [672, 1333], [704, 1333], [736, 1333], [768, 1333], [800, 1333]],
keep_ratio: True}
- RandomFlip: {}
- NormalizeImage: {is_scale: true, mean: [0.485,0.456,0.406], std: [0.229, 0.224,0.225]}
- Permute: {}
batch_transforms:
- PadBatch: {pad_to_stride: 32}
- Gt2Solov2Target: {num_grids: [40, 36, 24, 16, 12],
scale_ranges: [[1, 96], [48, 192], [96, 384], [192, 768], [384, 2048]],
coord_sigma: 0.2}
batch_size: 1
shuffle: true
drop_last: true
其中该配置文件还需要链接以下配置文件
_BASE_: [
'../datasets/coco_instance.yml',
'../runtime.yml',
'_base_/solov2_r50_fpn.yml',
'_base_/optimizer_1x.yml',
'_base_/solov2_reader.yml',
]
…/datasets/coco_instance.yml:表示训练数据和验证数据的路径
…/runtime.yml: 表示公共的运行参数,比如说是否使用GPU、每多少个epoch存储checkpoint等
base/solov2_r50_fpn.yml: 表示模型、和主干网络的情况
base/optimizer_1x.yml: 表示学习率和优化器的配置
base/solov2_reader.yml: 数据读取器配置,如batch size,并发加载子进程数等,同时包含读取后预处理操作,如resize、数据增强等等。
3.训练train指令
在PaddleDetection目录下,终端输入:
export CUDA_VISIBLE_DEVICES=0 #windows和Mac下不需要执行该命令
python tools/train.py -c configs/solov2/solov2_r50_fpn_3x_coco.yml
三、评估
在PaddleDetection目录下,终端输入:
export CUDA_VISIBLE_DEVICES=0 #windows和Mac下不需要执行该命令
python tools/eval.py -c configs/solov2/solov2_r50_fpn_3x_coco.yml -o weights=/home/cj/chaintwork/paddledetection/PaddleDetection/output/solov2_r50_fpn_3x_coco.pdparams
将后面的模型文件替换成自己训练好的模型,这里因为我的电脑训练时间太久,选择使用官方的模型进行评估。
模型下载路径:
https://github.com/PaddlePaddle/PaddleDetection/blob/release/2.4/configs/solov2/README.md
四、预测
输入指令
python tools/infer.py -c configs/solov2/solov2_r50_fpn_3x_coco.yml --infer_img=demo/hrnet_demo.jpg -o weights=/home/cj/chaintwork/paddledetection/PaddleDetection/output/solov2_r50_fpn_3x_coco.pdparams
在output中输出结果
五、模型导出
终端输入
python tools/export_model.py -c configs/solov2/solov2_r50_fpn_3x_coco.yml --output_dir=./inference_model -o weights=/home/cj/chaintwork/paddledetection/PaddleDetection/output/solov2_r50_fpn_3x_coco.pdparams
在PaddleDetection/inference_model/solov2_r50_fpn_3x_coco/下会出现如下文件
六、模型预测部署python
预测图像指令
python deploy/python/infer.py --model_dir=./inference_model/solov2_r50_fpn_3x_coco --image_file=demo/000000014439.jpg --device=GPU
预测文件夹指令
python deploy/python/infer.py --model_dir=./inference_model/solov2_r50_fpn_3x_coco --image_dir=demo --device=GPU
摄像头检测
python deploy/python/infer.py --model_dir=./inference_model/solov2_r50_fpn_3x_coco --device=GPU --camera_id=0
速度还是不错的。
参数含义如下:
七、C++部署
1.切换gcc版本
先进入PaddlePaddle C++ 预测库
根据自身情况进行选择。我是cuda11.2+gcc8.2。
1)查看目前gcc版本
gcc -v
2)如果版本不对
参考:ubuntu 下gcc版本查看及切换
未完待续!