超最简单的安卓端深度学习模型部署教程——pytorch2onnx2pdinfer2android

本文提供了一种将PyTorch模型转换为ONNX,再通过PaddlePaddle部署到Android的简单教程。步骤包括创建并转换PyTorch模型,使用onnx2pdinference工具,然后在Android Studio中修改工程文件并运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

0. 背景

1. 随便写一个pytroch模型并转为onnx模型

1.1 随便写一个pytorch图像分类模型

1.2 转为onnx模型,并检查输入(没有进行训练)

2. onnx2pdinference

3. pdinference2android

4. 打开paddle的安卓部署工程文件

5. 连接手机或模拟器

 6. 修改安卓工程文件,并运行

 7. 参考链接


0. 背景

百度官方给我们提供了很好的安卓端部署demo,但现阶段很多模型都是pytorch实现的,想要自己复现可能需要花些时间,因此我们可以从pytorch转到onnx再到paddle实现安卓端的部署。

简单起见,我们采用最简单的图像分类模型做演示。

1. 随便写一个pytroch模型转为onnx模型

1.1 随便写一个pytorch图像分类模型

import numpy as np
import torch
import torch.nn as nn
import onnxruntime

class simple_model(nn.Module):
    def __init__(self, in_dim, n_class):
        super(simple_model, self).__init__()
        self.conv = nn.Sequential(
            nn.Conv2d(in_dim, 16, 3, stride=1, padding=0),
            nn.ReLU(True),
            nn.MaxPool2d(2, 2),
            nn.Conv2d(16, 32, 3, stride=1, padding=0),
            nn.ReLU(True),
            nn.MaxPool2d(2, 2),
            nn.Conv2d(32, 64, 3, stride=1, padding=0),
            nn.MaxPool2d(2, 2)
        )

        self.fc = nn.Sequential(
            nn.Linear(43264, n_class),
            # nn.Dropout()
        )

    def forward(self, x):
        out = self.conv(x)
        out = out.view(out.size(0), -1)
        out = self.fc(out)
        return out

1.2 转为onnx模型,并检查输入(没有进行训练)

这一步生成onnx模型,并对比其预测结果与pytoch模型的预测结果

if __name__ == '__main__':
    x = torch.randn(1, 3, 224, 224, requires_grad=True)
    model = simple_model(3, 2)
    out = model(x)
    # Export the model
    torch.onnx.export(model,
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值