paddle2.0版本的PaddleSeg模型转换为onnx格式

paddleSeg简介

paddleseg release2.0版本提供了50+的高质量预训练模型,支持15+主流分割网络,提供了业界的SOTA模型OCRNet,很好的提升了产品易用性。

PaddleSeg是基于飞桨PaddlePaddle开发的端到端图像分割开发套件,涵盖了高精度和轻量级等不同方向的大量高质量分割模型。通过模块化的设计,提供了配置化驱动和API调用两种应用方式,帮助开发者更便捷地完成从训练到部署的全流程图像分割应用。

特性

  • 高精度模型:基于百度自研的半监督标签知识蒸馏方案(SSLD)训练得到高精度骨干网络,结合前沿的分割技术,提供了50+的高质量预训练模型,效果优于其他开源实现。

  • 模块化设计:支持15+主流 分割网络 ,结合模块化设计的 数据增强策略 、骨干网络、损失函数 等不同组件,开发者可以基于实际应用场景出发,组装多样化的训练配置,满足不同性能和精度的要求。

  • 高性能:支持多进程异步I/O、多卡并行训练、评估等加速策略,结合飞桨核心框架的显存优化功能,可大幅度减少分割模型的训练开销,让开发者更低成本、更高效地完成图像分割训练。

支持的数据集

  • Cityscapes
  • Pascal VOC
  • ADE20K
  • Pascal Context
  • COCO stuff

In [ ]:

# 安装PaddleSeg
! pip install paddleseg
# 下载PaddleSeg代码
! git clone https://github.com/PaddlePaddle/PaddleSeg

In [ ]:

#如果用户网络不佳,可以选择使用Gitee进行代码下载
! git clone https://gitee.com/paddlepaddle/PaddleSeg.git

In [ ]:

# 训练
! python PaddleSeg/train.py --config PaddleSeg/configs/quick_start/bisenet_optic_disc_512x512_1k.yml --do_eval \
       --use_vdl --save_interval 200 --save_dir output

使用VIsualDL进行可视化

VisualDL 是一个面向深度学习任务设计的可视化工具。VisualDL 利用了丰富的图表来展示数据,用户可以更直观、清晰地查看数据的特征与变化趋势,有助于分析数据、及时发现错误,进而改进神经网络模型的设计。

目前,VisualDL 支持 scalar, image, audio, graph, histogram, pr curve, high dimensional 七个组件,项目正处于高速迭代中,敬请期待新组件的加入。

标量数据可视化

==

模型网络结构可视化

因为运行到这里时还没有生成onnx模型文件,所以onnx模型网络结构可视化可以在转换完onnx模型文件后进行

模型验证

当保存完模型后,我们可以通过PaddleSeg提供的脚本对模型进行评估

In [ ]:

# 模型验证
! python PaddleSeg/val.py \
       --config PaddleSeg/configs/quick_start/bisenet_optic_disc_512x512_1k.yml \
       --model_path output/iter_1000/model.pdparams

模型预测

当保存完模型后,可以通过PaddleSeg提供的脚本对模型进行预测,同时对结果进行可视化,查看分割效果。

--model_path output/iter_1000/model.pdparams 表示选择模型路径 --image_path data/optic_disc_seg/JPEGImages/H0003.jpg 表示选择预测的图片,如果次时候image_path中有多张图片,也可实现全部预测 --save_dir output/result 表示预测保存的结果地址

In [ ]:

! python PaddleSeg/predict.py --config PaddleSeg/configs/quick_start/bisenet_optic_disc_512x512_1k.yml \
       --model_path output/iter_1000/model.pdparams \
       --image_path data/optic_disc_seg/JPEGImages/N0093.jpg \
       --save_dir output/result

显示结果 在output文件夹中分别有两个文件夹,一个是预测的叠加图,一个是伪彩色图片

模型导出

为了方便用户进行工业级的部署,PaddleSeg提供了一键动转静的功能,即将训练出来的动态图模型文件转化成静态图形式。

In [ ]:

# 模型导出
! python PaddleSeg/export.py \
       --config PaddleSeg/configs/quick_start/bisenet_optic_disc_512x512_1k.yml \
       --model_path output/iter_1000/model.pdparams
  • 结果文件
output
  ├── deploy.yaml            # 部署相关的配置文件
  ├── model.pdiparams        # 静态图模型参数
  ├── model.pdiparams.info   # 参数额外信息,一般无需关注
  └── model.pdmodel          # 静态图模型文件

paddle2onnx并不是所有模型都支持转换,目前支持的PaddleSeg模型:

搭建paddle2onnx的使用环境

paddle2onnx、ONNX简介

ONNX (Open Neural Network Exchange)是针对机器学习所设计的开源文件格式,用于存储训练好的模型。它使得不同的人工智能框架可以采用相同格式存储模型并交互。通过ONNX格式,Paddle模型可以使用OpenVINO、ONNX Runtime、MNN等框架进行推理。

paddle2onnx支持将PaddlePaddle模型格式转化到ONNX模型格式。

In [ ]:

# 环境依赖
# Paddle2ONNX项目更新频繁,推荐使用源码进行安装
# 安装之后请点击上方的重启按钮,重启notebook
!git clone https://github.com/paddlepaddle/paddle2onnx --depth 1
!cd ~/paddle2onnx && python setup.py install
!pip install onnx

In [1]:

# 使用paddle2onnx将paddle模型格式转化到ONNX模型格式。
! paddle2onnx --model_dir ./output/ \
    --model_filename model.pdmodel \
    --params_filename model.pdiparams \
    --save_file segonnx/model.onnx \
    --opset_version 11

模型网络结构可视化

ONNX模型的验证

ONNX官方工具包提供了API可验证模型的正确性,主要包括两个方面,一是算子是否符合对应版本的协议,二是网络结构是否完整。

In [3]:

# check by ONNX
import onnx

# onnx_file = save_path +  '.onnx'
# onnx_file ='onnx-model/detectionmodel.onnx'
save_path = 'segonnx/'
onnx_file = save_path +  'model.onnx'
onnx_model = onnx.load(onnx_file)
onnx.checker.check_model(onnx_model)
print('The model is checked!')
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值