首页 > 科技周边 > 人工智能 > Tensorflow Lite与Pytorch手机

Tensorflow Lite与Pytorch手机

Joseph Gordon-Levitt
发布: 2025-03-14 11:24:12
原创
896 人浏览过

在最近的技术开发和机器学习的世界中,它不再局限于微型云中,而是在移动设备中。众所周知,Tensorflow Lite和Pytorch Mobile是直接在手机和平​​板电脑上部署模型的两种最商业可用的工具。 Tensorflow Lite和Pytorch Mobile均开发用于手机上的操作,但它们的优点和缺点与众不同。在本文中,我们要知道什么是Tensorflow Lite,什么是Pytorch移动设备,它们两者之间的应用和差异。

学习成果

  • 概述设备机器学习以及为什么它是有益的,而不是基于云的系统。
  • 了解用于移动应用程序部署的TensorFlow Lite和Pytorch Mobile。
  • 如何使用TensorFlow Lite和Pytorch移动设备转换训练有素的模型以进行部署。
  • 比较Tensorflow Lite和Pytorch Mobile的性能,易用性和平台兼容性。
  • 使用Tensorflow Lite和Pytorch Mobile实施现实世界中的示例。

本文作为数据科学博客马拉松的一部分发表

目录

  • 什么是设备机器学习?
  • 探索TensorFlow Lite
  • Pytorch移动实施
  • 性能比较:Tensorflow Lite vs Pytorch手机
  • 易用性和开发人员经验
  • 支持的平台和设备兼容性
  • 模型转换:从培训到部署
  • Tensorflow Lite和Pytorch手机的用例
  • Tensorflow Lite实现
  • Pytorch移动实施
  • 结论
  • 常见问题

什么是设备机器学习?

我们可以在移动设备上执行AI,包括智能手机,平板电脑或任何其他设备在设备机器上学习。我们不需要依靠云的服务。这些是快速响应,敏感信息的安全性,并且应用程序可以在有或没有Internet连接的情况下运行,这对于不同的应用程序至关重要;实时识别图像识别,机器翻译和增强现实。

探索TensorFlow Lite

TensorFlow Lite是张量流式,通常在具有限制功能的设备上使用。它可以使用,并且与其他操作系统(例如Android和iPhone)兼容。它主要以提供延迟和高性能执行为中心。至于Tensorflow Lite,有一个模型优化器,可以帮助应用某些方法,例如对模型进行量化。这使模型更快,更小,用于移动部署,这在这种做法中必须提高效率。

Tensorflow Lite的功能

以下是Tensorflow Lite的一些最重要的功能:

  • 小二进制尺寸 Tensorflow Lite二进制尺寸可能很小。它可以小至300kb。
  • 硬件加速度 TFLITE通过Android的NNAPI和iOS的Coreml等代表支持GPU和其他硬件加速器。
  • 模型量化 TFLITE提供了许多不同的量化方法,以优化性能并降低模型大小而不牺牲过多的准确性。

Pytorch移动实施

Pytorch Mobile是Pytorch的移动扩展。通常以其在研究和生产方面的灵活性而闻名。 Pytorch Mobile可以轻松从桌面环境中采用训练有素的型号,并在移动设备上部署,而无需进行太多修改。它通过支持动态计算图并使调试更容易地关注开发人员的易用性。

Pytorch手机的功能

以下是Pytorch手机的一些重要功能:

  • 预先构建的型号 Pytorch Mobile提供了大量的预训练模型,可以将其转换为在移动设备上运行。
  • 动态图它是Pytorch的动态计算图之一,可以在开发过程中灵活性。
  • 自定义操作员 Pytorch Mobile允许我们创建自定义操作员,这对于高级用例很有用。

性能比较:Tensorflow Lite vs Pytorch手机

当我们讨论它们的性能时,两个框架都针对移动设备进行了优化,但是Tensorflow Lite具有很高的执行速度和资源效率。

  • 执行速度由于其积极的优化,例如量化和基于委托的加速度,Tensorflow Lite通常更快。例如 - nnapi和gpu。
  • 二进制尺寸 Tensorflow Lite具有较小的占地面积,二进制尺寸低至300kb,用于最小的构建。 Pytorch移动二进制文件往往更大,并且需要更轻巧的部署进行微调。

易用性和开发人员经验

Pytorch Mobile通常受开发人员的灵活性和易于调试的功能而受到首选。这是由于动态计算图。这有助于我们在运行时修改模型,这非常适合原型制作。另一方面,TensorFlow Lite需要在部署前将模型转换为静态格式,这可以增加复杂性,但会为移动设备提供更优化的模型。

  • 模型转换 Pytorch Mobile允许我们直接导出Pytorch型号,而Tensorflow Lite则需要使用TFLITE转换器转换Tensorflow模型。
  • 调试 Pytorch的动态图使他们在运行时更容易调试模型,这非常适合快速发现问题。借助Tensorflow Lite的静态图,尽管TensorFlow提供了可以帮助我们的模型分析器之类的工具,但调试可能会有些困难。

支持的平台和设备兼容性

我们可以在两个主要的移动平台Android和iOS上同时使用Tensorflow Lite和Pytorch移动设备。

Tensorflow Lite

在选择哪个将支持哪种硬件时,Tflite更加灵活。由于委托系统,它不仅支持CPU和GPU,还支持数字信号处理器(DSP)和其他被认为比基本CPU更高的芯片。

Pytorch手机

虽然Pytorch Mobile还支持CPU和GPU,例如用于iOS和Vulkan的Android的金属,但除此之外,硬件加速的选项较少。这意味着,当我们需要更广泛的硬件兼容性时,Tflite可能会具有优势,尤其是对于具有专门处理器的设备而言。

模型转换:从培训到部署

Tensorflow Lite和Pytorch Mobile之间的主要区别在于,模型从训练阶段转变为移动设备上的部署。

Tensorflow Lite

如果我们想在移动设备上部署TensorFlow模型,则需要使用TFLITE转换器将其转换。可以优化此过程,例如量化,这将使移动目标的模型快速有效。

Pytorch手机

对于Pytorch Mobile,我们可以使用Torchscript保存模型。该过程非常简单,简单,但是它没有提供与TFLITE提供的高级优化选项的水平。

Tensorflow Lite和Pytorch手机的用例

探索Tensorflow Lite和Pytorch Mobile的实际应用,展示了这些框架如何在不同行业跨越智能解决方案。

Tensorflow Lite

TFLITE是需要快速响应的不同应用程序的更好平台,例如实时图像分类或对象检测。如果我们正在使用具有专门硬件的设备,例如GPU或神经处理单元。 TFLITE的硬件加速度功能有助于模型运行速度更快,更有效。

Pytorch手机

Pytorch Mobile非常适合仍在不断发展的项目,例如研究或原型应用程序。它的灵活性使得可以轻松进行实验和迭代,从而使开发人员可以快速更改。当我们需要经常实验和部署具有最小修改的新模型时,Pytorch Mobile是理想的选择。

Tensorflow Lite实现

我们将使用预训练的模型(MobilenetV2),并将其转换为Tensorflow Lite。

加载和保存模型

我们要做的第一件事是导入TensorFlow并加载预先训练的MobilenETV2模型。正如该模型中所示,它已准备好在Imagenet数据集上进行预训练。 Model.export('Mobilenet_model')以Tensorflow的SavedModel的格式写入模型。这是将其转换为与移动设备一起使用的Tensorflow Lite模型(TFLITE)所需的格式。

 #步骤1:设置环境并加载预先训练的MobilenEtv2模型
导入TensorFlow作为TF

#加载预定的MobilenetV2模型
型号= tf.keras.applications.mobilenetv2(weights ='imagenet',input_shape =(224,224,3))

#将模型保存为tflite转换的SavedModel
Model.export('Mobilenet_model')
登录后复制

将模型转换为Tensorflow Lite

该模型是使用TfliteConverter从保存的模型(Mobilenet_model目录)加载的。转换器将模型转换为更轻巧的.tflite格式。最后,将TFLITE模型保存为Mobilenet_v2.tflite,以便以后在移动或边缘应用中使用。

 #步骤2:将模型转换为Tensorflow Lite
converter = tf.lite.tfliteconverter.from_saved_model('mobilenet_model')
tflite_model = converter.convert()

#将转换的模型保存到TFLITE文件
用open('mobilenet_v2.tflite','wb')作为f:
    F.Write(TFLITE_MODEL)
登录后复制

加载推理的Tflite模型

现在,我们导入数值操作(NUMPY)和图像操作(pil.image)的必要库。使用tf.lite.Interpreter和内存分配了TFLITE模型以用于输入/输出张量。我们检索有关输入/输出张量的详细信息,例如形状和数据类型,当我们预处理输入图像并检索输出时,这将很有用。

导入numpy作为NP
从PIL导入图像

#加载Tflite型号并分配张量
interneter = tf.lite.interpreter(model_path ='mobilenet_v2.tflite')
interner.allocate_tensors()

#获取输入和输出张量
input_details = interner.get_input_details()
output_details = interner.get_output_details()
登录后复制

预处理输入,运行推理和解码输出

我们加载图像(cat.jpg),将其调整到所需的(224,224)像素,并使用MobilenetV2的预处理方法进行预处理。预处理图像通过使用internterpreter.set_tensor()设置输入张量来馈入TFLITE模型,然后我们使用Inverter.invoke()运行推理。推断后,我们检索模型的预测,并使用decode_predictions()将它们解码为可读的类名称和概率。最后,我们打印预测。

 #加载和预处理输入图像
image = image.open('cat.jpg')。resize((224,224))#替换为图像路径
input_data = np.expand_dims(np.Array(image),axis = 0)
input_data = tf.keras.applications.mobilenet_v2.preprocess_input(input_data)

#设置输入张量并运行模型
intermeter.set_tensor(input_details [0] ['index'],input_data)
inverter.invoke()

#获取输出并解码预测
output_data = interner.get_tensor(output_details [0] ['index'])
预测= tf.keras.applications.mobilenet_v2.decode_predictions(output_data)
打印(预测)
登录后复制

使用下面的猫图像:

Tensorflow Lite与Pytorch手机

输出:

[('N02123045','tabby',0.85),('N02124075','egyptian_cat',0.07),('N02123159','n02123159','tiger_cat',0.05)]

这意味着该模型是85%的信心,因为图像是虎斑猫。

Pytorch移动实施

现在,我们将实施Pytorch手机。我们将使用一个简单的预训练模型,例如Resnet18,将其转换为Torchscript,并运行推断

设置环境并加载RESNET18型号

#步骤1:设置环境
导入火炬
导入torchvision.models作为型号

#加载预验证的RESNET18型号
Model = model.Resnet18(预读= true)

#将模型设置为评估模式
model.eval()
登录后复制

将模型转换为Torchscript

在这里,我们定义一个示例_input,它是大小[1,3,224,224]的随机张量。这模拟了一个带有3个颜色通道(RGB)和224×224像素的1个图像。它用于追踪模型的操作。 TORCH.JIT.TRACE()是一种将Pytorch模型转换为Torchscript模块的方法。 Torchscript允许您在Py​​thon之外进行序列化并运行模型,例如在C或移动设备中。转换后的Torchscript模型被保存为“ resnet18_scripted.pt”,允许将其加载和以后使用。

 #步骤2:转换为Torchscript
example_input = torch.randn(1,3,224,224)#跟踪示例输入
traced_script_module = torch.jit.trace(型号,example_input)

#保存火有关模型
traced_script_module.save(“ resnet18_scripted.pt”)
登录后复制

加载脚本模型并进行预测

我们使用torch.jit.load()从文件“ resnet18_scripted.pt”中加载先前保存的火有关模型。我们创建一个新的随机张量输入_DATA,再次模拟具有大小[1、3、224、224]的图像输入。然后使用Loaded_model(input_data)在此输入上运行该模型。这将返回输出,其中包含每个类的原始分数(logits)。为了获得预测的类,我们使用Torch.max(输出,1),该类别给出了分数最高的类索引。我们使用Predicted.item()打印预测类。

 #步骤3:加载并运行脚本模型
loaded_model = torch.jit.load(“ resnet18_scripted.pt”)

#仿真输入数据(随机图像张量)
input_data = torch.randn(1,3,224,224)

#运行模型并获得预测
输出= loaded_model(input_data)
_,预测= torch.max(输出,1)
打印(f'predisted类:{predicted.item()}')
登录后复制

输出:

预测班:107

因此,该模型预测输入数据属于类索引107。

结论

Tensorflow Lite更加专注于移动设备,而Pytorch Mobile则提供了更通用的CPU/GPU控制解决方案,两者都针对AI在移动设备和边缘设备上的不同应用进行了优化。与Tensorflow Lite相比,Pytorch Mobile提供了更大的便携性,同时也比Tensorflow Lite更轻,并与Google紧密整合。它们结合在一起,使开发人员能够在开发人员的手持设备上实施具有高功能的实时人工智能应用程序。这些框架使用户能够在本地机器上运行复杂的模型,并这样做,因此他们正在通过指尖重写有关移动应用程序如何与世界互动的规则。

关键要点

  • Tensorflow Lite和Pytorch移动设备使开发人员有效地在边缘设备上部署AI模型。
  • 这两个框架都支持跨平台兼容性,从而增强了移动AI应用程序的覆盖范围。
  • Tensorflow Lite以性能优化而闻名,而Pytorch Mobile的灵活性则擅长。
  • 易于集成和开发人员友好的工具使这两个框架适用于广泛的AI用例。
  • 现实世界的应用程序涵盖了医疗保健,零售和娱乐等行业,展示了它们的多功能性。

常见问题

Q1。 Tensorflow Lite和Pytorch手机有什么区别?

A.使用Tensorflow Lite,在我们需要在移动设备上高性能的地方使用Pytorch Mobile,在我们需要灵活性并易于与Pytorch现有的生态系统集成时。

Q2。 Tensorflow Lite和Pytorch移动可以在Android和iOS上工作吗?

答:是的,Tensorflow Lite和Pytorch移动都在Android和iOS上工作。

Q3。写一些Pytorch手机的用法。

答:Pytorch Mobile对于执行诸如图像,面部和视频分类,实时对象检测,语音到文本转换等任务的应用程序很有用。

Q4。写一些Tensorflow Lite手机的用法。

A. Tensorflow Lite移动移动可用于机器人技术,IoT设备,增强现实(AR),虚拟现实(VR),自然语言处理(NLP)等应用程序有用。

本文所示的媒体不由Analytics Vidhya拥有,并由作者酌情使用。

以上是Tensorflow Lite与Pytorch手机的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板