caffe不支持relu6_模型迁移必备-如何将TensorFlow、Caffe模型转移到PaddlePaddle

a18fa1fcaeebd6cf3efd4191edfa3a6a.png
自从百度2018年推出飞桨(PaddlePaddle)的第一个0.14版本后,不少开发者感兴趣并参与贡献其中,但一直存在代码转移的问题。比如,你有一项工作使用TensorFlow完成,简答粗暴地切换到PaddlePaddle平台几乎相当于把之前的代码重写一遍,等于做一次没什么意义的二次开发。而笔者的工作中就遇到了这个问题,直到我发现了X2Paddle。

X2Paddle是一个用于支持将除Paddle以外的其他框架训练的模型转换至PaddlePaddle模型的工具,深度学习的应用分为训练和预测两部分。由于项目需求,需要将TensorFlow模型转到Paddle上跑,查阅资料中发现了这个工具。

ee83ab3965dc4e1b2ee1e7930caa4313.png

1/ 快速上手

首先安装和配置好X2Paddle。这个过程非常简单,我把它放在文末,你仍然可以在文末的系统兼容性板块找到配置方法。

注意,使用conda的小伙伴可能找不到conda,这时候你应该去.bashrc添加一下,使用类似的命令:
echo 'export PATH="XXXX:$PATH" >> ~/.bashrc
source ~/.bashrc

配置好以后,不说废话。TensorFlow用户可以这样转换模型

x2paddle --framework=tensorflow --model=你的TensorFlow模型.pb --save_dir=你转换后的PaddlePaddle模型目录

但是在转换语义分割模型时目前还不支持其他框架训练出来的模型,官方给的建议是直接用官方的模型跑:PaddlePaddle/PaddleSeg

同样的代码适用于Caffe

x2paddle --framework=caffe --prototxt=deploy.prototxt --weight=deploy.caffemodel --save_dir=pd_model

传统ONNX规范也是被支持的:

x2paddle --framework=onnx --model=onnx_model.onnx --save_dir=pd_model

转换后的模型包括model_with_codeinference_model两个目录,前者是转换后的Python源代码,后者就是可以直接用存储预测模型save_inference_model和加载预测模型load_inference_model两个接口处理的目标。

目前官方还在不断更新ops,如果发现一些比较新的还没支持,建议随时更新一下X2Paddle可能有帮助。

偶尔会遇到Unknown shape for input tensor[tensor name: "input"], Please define shape of input here的提示,手动给出即可,问题不大,不慌。

e4c88342b4a4453efe3c37b9b7efba9d.png

2/ 作为托底方案的API对照表

在探索的过程中,我发现一个API对应的表格。PaddlePaddle目前把常用的,绝大多数的TensorFlow API全部做了转换文档,可以用来对着改。

980fc80c97152c7e2270f6a818965338.png
埋伏他一手,这个表我用不到,他输定了

在这个表格里,如果两者的功能没有差异,则会标注功能一致,如果功能、参数有差异,后面就会跟着比较详细的注明。(如图)

PaddlePaddle/X2Paddle


3/ 兼容性和总结

我在X86的Ubuntu 18.04@Python 3.7.1上运行了X2Paddle转换我的TensorFlow分类模型,损失精度在可接受范围内。感觉非常方便,省了好多时间。主要是 调试的精力

但是X2Paddle尚未支持Torch?(我也想不用torch,但实习的组全套的torch)Torch有许多用户,甚至有媒体统计CVPR论文Torch数量是TF四倍。貌似这段时间大火的TensorFlow 2.0也还没有被支持,由于2.0比1.0易用性有较大提升。很多同学朋友一开始只学了2.0。而未来2.0是趋势(万一反压torch一头呢?)。

总结一句,希望这样的工具越来越多。目前的开源框架开发者主要关注的还是社区,社区的敏捷和贡献度直接决定了新手友好程度。而X2Paddle解决了最后1km的问题,即便开发者使用其他框架也可以被支持。同时Paddle2ONNX的给出也解决了从国产到国际的第二步,传统的界限将被打破,未来优势将越来越明显。

02ec284be376446214e924370033fcaa.png

引用

  1. PaddlePaddle/X2Paddle
  2. 工具组件 模型转换工具X2Paddle操作大全
  3. 如何理解百度飞桨paddleX的产品定位?
  4. 飞桨PaddlePaddle:模型转换工具X2Paddle操作大全
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值