paddledetection使用solov2进行实例分割操作记录

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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

其中该配置文件还需要链接以下配置文件

_BASE_: [
  '../datasets/coco_instance.yml',
  '../runtime.yml',
  '_base_/solov2_r50_fpn.yml',
  '_base_/optimizer_1x.yml',
  '_base_/solov2_reader.yml',
]

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

…/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

 
 
  • 1
  • 2

在这里插入图片描述

三、评估

在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

 
 
  • 1
  • 2

将后面的模型文件替换成自己训练好的模型,这里因为我的电脑训练时间太久,选择使用官方的模型进行评估。
模型下载路径:

https://github.com/PaddlePaddle/PaddleDetection/blob/release/2.4/configs/solov2/README.md

 
 
  • 1

在这里插入图片描述

四、预测

输入指令

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

 
 
  • 1

在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

 
 
  • 1

在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

 
 
  • 1

预测文件夹指令

python deploy/python/infer.py --model_dir=./inference_model/solov2_r50_fpn_3x_coco --image_dir=demo --device=GPU

 
 
  • 1

摄像头检测

python deploy/python/infer.py --model_dir=./inference_model/solov2_r50_fpn_3x_coco --device=GPU --camera_id=0

 
 
  • 1

速度还是不错的。
参数含义如下:
在这里插入图片描述

七、C++部署

1.切换gcc版本
先进入PaddlePaddle C++ 预测库
根据自身情况进行选择。我是cuda11.2+gcc8.2。
1)查看目前gcc版本

gcc -v

 
 
  • 1

在这里插入图片描述
2)如果版本不对
参考:ubuntu 下gcc版本查看及切换
未完待续!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值