paddlex模型裁剪
收藏
按照paddlex官方文档中的描述(https://paddlex.readthedocs.io/zh_CN/develop/slim/prune.html),在对训练好的模型进行模型裁剪时出错,其中的第一和第二步均可正常执行,在第三步进行模型裁剪训练时出错,需要paddlepaddle 1.8.5版本。paddlex的模型裁剪只支持1.8.5版本的paddlepaddle吗?还有没有其他的要求?如paddlex的版本等。此外,对于在paddlelite下部署,对paddlelite的版本有要求吗?官方文档中没有具体说明,其中的坑太多了!对于具体的工程化实施影响很大。希望有经验的大咖给出解答。非常感谢!!
0
收藏
不是的
我刚写了个项目:PaddleX 2.0动态图体验:安全帽检测模型开发与部署
https://aistudio.baidu.com/aistudio/projectdetail/2179777
这个项目用的也是develop分支,最后模型裁剪可以正常运行啊
不过这个是动态图项目,要在2.1.0环境完成安装
如果想要进行部署,而且是Paddle1.8.5的版本,建议用稳定的分支
文档里有说明,建议切换到release/1.3分支
对于PaddleX在PaddleLite的部署,也可以参考这两个项目
手把手教你部署移动端迁移学习模型(PaddleX、Paddle-Lite)
https://aistudio.baidu.com/aistudio/projectdetail/613622
YoloV3检测模型在树莓派上的部署(PaddleX、PaddleLite)
https://aistudio.baidu.com/aistudio/projectdetail/1227445
如果是有部署需求的话,重点就是稳定,求稳不要求新。
Paddle 1.8.4/1.8.5 + PaddleX 1.3 + PaddleLite 2.6.1 是我之前验证过比较不会有问题的组合
还有就是提供了部署示例的Paddle-Lite-Demo项目 https://gitee.com/paddlepaddle/Paddle-Lite-Demo
好像更新到v2.8了,这意味着对应的Paddle-Lite版本也要用v2.8,当然配合Paddle 1.8.5 应该是没问题,而且PaddleX有自己的部署方式,也不需要用到这个项目。
PaddleX稳定部署,还是按这个文档来吧
deploy · PaddlePaddle/PaddleX
https://gitee.com/paddlepaddle/PaddleX/tree/release/1.3/deploy
paddlex 1.3版本的剪裁和lite部署可以参考上面`深渊上的坑`给出的建议,对应的文档都在 https://paddlex.readthedocs.io/zh_CN/develop/。
当前paddlex已经全面升级动态图了,对应的文档位于 https://github.com/PaddlePaddle/PaddleX/tree/develop/dygraph#paddlex-使用文档,目前剪裁是支持的,但是paddlelite部署还在适配中。
我使用paddlex的android例子程序和paddlelite 2.9版本跑通了yolov3的目标检测程序,并换成我自己训练的模型做了测试,但在rak3399上耗时太久了,有时候需要几十秒。而paddlelite的目标检测例子程序使用的是百度训练、裁剪后的yolov3-mobilnetv3的模型文件,在相同的硬件上只需要200多ms,所以我想对模型进行裁剪,在ai studio环境下,paddlepaddle 2.1+paddlex 1.3不行,paddlepaddle 1.8.4+paddlex 1.3好像也不行。按照你的项目中的描述,在ai studio环境中安装paddlepaddle 2.1+paddlex 2.0.0-rc版本时停在了"Building wheels for collected packages: opencv-python"处,安装不成功。而1.8.5版本的paddlepaddle在ai studio环境中好像之可以安装cpu版本,倒是可以和paddlex 1.3一起成功运行yolov3_prune_train.py脚本,但实在是太慢了。
在ai studio环境paddlepaddle 2.1.0下使用pip install paddlex==2.0.0-rc3安装了paddlex 2.0.0-rc3,运行yolov3_train.py时出错:
Your running script needs PaddleX<2.0.0, please refer to https://github.com/PaddlePaddle/PaddleX/tree/release/2.0-rc/tutorials/train#%E7%89%88%E6%9C%AC%E5%8D%87%E7%BA%A7 to solve this issue.
稀奇古怪的问题
使用2.0.0-rc下的训练脚本可以训练,但params_analysis.py又运行出错,module 'paddlex' has no attribute 'slim'。头大
这些报错极有可能是你的python环境里import的还是静态图版本的paddlex。先确认下paddlex 1.3版本的有没有卸载掉:
pip show paddx 或者 启动python环境之后,import paddlex print(paddlex.__version__)
卸载静态图版本的paddlex:pip uninstall paddlex
再重新安装paddlex 2.0.0rc3
在ai studio环境中将paddlex 2.0.0-rc3安装于系统目录后使用https://aistudio.baidu.com/aistudio/projectdetail/2179777中提供的训练和裁剪脚本运行正常,我之前测试使用的是文档中提供的PaddleX/tutorials/slim/prune/object_detection目录下的脚本,看来Paddlex的1.3和2.0版本的API接口发生了变化,文档中并没有给出说明。但从结果看来,PaddleX 2.0版本的模型导出功能也发生了变化,生成的文件和1.3的也不相同。1.3版本导出模型可由paddlelite 2.9的opt导出为nb格式部署到paddlelite平台,2.0的推断模型导出结果和1.3的不同,怎样才能导出为paddlelite可用的nb格式模型文件?是否尚未提供支持?后续是否支持?谢谢
nb文件是不是还要看1.3?
2.0版本是会支持的lite部署,目前也在我们的研发安排中
期待,不然现在部署还得用之前的版本
之前的版本我试了,应该是paddlepaddle 1..8.5+paddlex 1.3才可以正常运行PaddleX/tutorials/slim/prune/object_detection目录下的脚本,但在ai studio环境下paddlepaddle 1.8.5只提供了gpu版本的安装。而paddlapaddle 1.8.5的gpu版本与2.0版本依赖的cuda和cudnn版本不同。部署起来很麻烦。希望尽快推出2.0版本的模型导出工具。文档也应该同步更新了,否则会误导很多人。
但在ai studio环境下paddlepaddle 1.8.5只提供了cpu版本的安装。