小白带你用手机使用Pytorch

本文介绍如何在Android设备上使用PyTorch,包括安装、模型加载、预处理、推断运行和结果处理。从PyTorch 1.3开始,支持iOS和Android的端到端工作流,提供了移动应用中整合ML的API。通过实例演示了一个简单的图像分类应用,指导开发者如何将TorchScript模型部署到Android应用中。

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

移动Pytorch

随着应用程序继续要求降低延迟,在边缘设备上运行ML变得越来越重要。它也是隐私保护技术的一个基本元素。

从PyTorch 1.3开始,PyTorch支持从Python到iOS和Android部署的端到端工作流。

  • 提供涵盖在移动应用程序中合并ML所需的常见预处理和集成任务的api
  • 支持QNNPACK量化内核库和ARM cpu
  • 构建级优化和选择性编译取决于用户应用程序所需的运算符(即,只为所需的运算符支付二进制大小)
  • 进一步提高移动CPU和GPU的性能和覆盖率

了解更多信息开始使用Android或iOS。

 

1.Android

HelloWorld是一个简单的图像分类应用程序.

如何使用PyTorch Android API。此应用程序在静态映像上运行TorchScript序列化的TorchVision pretrained resnet18模型,静态映像打包在应用程序中为android

1.1 安装

$pip install torchvision

要序列化模型,可以使用HelloWorld应用程序根文件夹中的python脚本:

import torch
import torchvision

model = torchvision.models.resnet18(pretrained=True)
model.eval()
example = torch.rand(1, 3, 224, 224)
traced_script_module = torch.jit.trace(model, example)
traced_script_module.save("app/src/main/assets/model.pt")

如果一切正常,我们应该在android应用程序的assets文件夹中生成model-model.pt。它将作为资产打包在android应用程序中,并可以在设备上使用。

 

1.2. 源代码下载

git clone https://github.com/pytorch/android-demo-app.git
cd HelloWorldApp

如果已经安装了Android SDK和Android NDK,则可以使用以下命令将此应用程序安装到连接的Android设备或模拟器:

./gradlew installDebug

我们建议您在Android Studio 3.5.1+中打开此项目。目前,PyTorch Android和demo应用程序使用的是3.5.0版本的Android gradle插件,只有Android Studio 3.5.1及更高版本支持该插件。使用Android Studio,您将能够安装Android NDK和Android SDK和androidstudio用户界面。

1.3. Gradle dependencies

 build.gradle: 包含pytorch_android

repositories {
    jcenter()
}

dependencies {
    implementation 'org.pytorch:pytorch_android:1.4.0'
    implementation 'org.pytorch:pytorch_android_torchvision:1.4.0'
}

1.4. Reading image from Android Asset

第一步,我们使用标准的android API读取image.jpgto android.graphics.Bitmap。

Bitmap bitmap = BitmapFactory.decodeStream(getAssets().open("image.jpg"));

1.5. Loading TorchScript Module

Module module = Module.load(assetFilePath(this, "model.pt"));

 

1.6. 准备输入

Tensor inputTensor = TensorImageUtils.bitmapToFloat32Tensor(bitmap,
    TensorImageUtils.TORCHVISION_NORM_MEAN_RGB, TensorImageUtils.TORCHVISION_NORM_STD_RGB);

TensorImageUtils#bitmaptofloat32传感器方法使用android.graphics.Bitmap作为源创建torchvision格式的张量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KENYCHEN奉孝

您的鼓励是我的进步源泉

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值