关于pytorch1.10导入android stdio的一些坑

这两天准备把pytorch的分类模型导入到android stdio进行部署。发现以下问题,主要是pytorch 1.9 和1.10的问题。

最初参考的是 https://wanghao.blog.csdn.net/article/details/122860445?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-122860445-blog-104751029.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-122860445-blog-104751029.pc_relevant_default&utm_relevant_index=2#t0

这篇文章。

首先官网有一些简单的示例:https://github.com/pytorch/android-demo-app。
按照官网的提示,其实也可以直接就跑起来。几乎不用改什么东西。
但是由于我自己的模型是torch1.10版本的,所以下个换成1.10的依赖
implementation ‘org.pytorch:pytorch_android:1.10.0’
implementation ‘org.pytorch:pytorch_android_torchvision:1.10.0’

还要注意的是如果转换模型用的是lite优化了:
optimized_traced_model = optimize_for_mobile(traced_script_module)
optimized_traced_model._save_for_lite_interpreter(“app/src/main/assets/model.pt”)
那就得用org.pytorch:pytorch_android_lite:1.10.0’。没有优化就用org.pytorch:pytorch_android:1.10.0。

烦人的事出现了,如果用优化的,那么会出现类重复,尝试改成 compileOnly org.pytorch:pytorch_android_lite:1.10.0。会报错litemodulelist找不到,但是这个明明就在里面,无法解决,奇怪的是用torch 1.9版本就什么事都没有。

所以只能用未优化的1.10,注意两点,因为1.10的jar包中没有litemodulelist这个类,所以注意把载入方式改成module.load。第二就是sdk版本太低会造成xxx.so找不到,升级一下到30以上就可以。

遗憾的是,未优化的模型测出来好像不是很准,不知道为什么。优化的模型就可以测出来这是个车。用的都是1000的imagenet数据集预训练模型
在这里插入图片描述

最后,如果用最新的torch1.12就会报错,版本太高了。所以最好是用1.9的,可以优化。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值