在最近的技术开发和机器学习的世界中,它不再局限于微型云中,而是在移动设备中。众所周知,Tensorflow Lite和Pytorch Mobile是直接在手机和平板电脑上部署模型的两种最商业可用的工具。 Tensorflow Lite和Pytorch Mobile均开发用于手机上的操作,但它们的优点和缺点与众不同。在本文中,我们要知道什么是Tensorflow Lite,什么是Pytorch移动设备,它们两者之间的应用和差异。
本文作为数据科学博客马拉松的一部分发表。
我们可以在移动设备上执行AI,包括智能手机,平板电脑或任何其他设备在设备机器上学习。我们不需要依靠云的服务。这些是快速响应,敏感信息的安全性,并且应用程序可以在有或没有Internet连接的情况下运行,这对于不同的应用程序至关重要;实时识别图像识别,机器翻译和增强现实。
TensorFlow Lite是张量流式,通常在具有限制功能的设备上使用。它可以使用,并且与其他操作系统(例如Android和iPhone)兼容。它主要以提供延迟和高性能执行为中心。至于Tensorflow Lite,有一个模型优化器,可以帮助应用某些方法,例如对模型进行量化。这使模型更快,更小,用于移动部署,这在这种做法中必须提高效率。
以下是Tensorflow Lite的一些最重要的功能:
Pytorch Mobile是Pytorch的移动扩展。通常以其在研究和生产方面的灵活性而闻名。 Pytorch Mobile可以轻松从桌面环境中采用训练有素的型号,并在移动设备上部署,而无需进行太多修改。它通过支持动态计算图并使调试更容易地关注开发人员的易用性。
以下是Pytorch手机的一些重要功能:
当我们讨论它们的性能时,两个框架都针对移动设备进行了优化,但是Tensorflow Lite具有很高的执行速度和资源效率。
Pytorch Mobile通常受开发人员的灵活性和易于调试的功能而受到首选。这是由于动态计算图。这有助于我们在运行时修改模型,这非常适合原型制作。另一方面,TensorFlow Lite需要在部署前将模型转换为静态格式,这可以增加复杂性,但会为移动设备提供更优化的模型。
我们可以在两个主要的移动平台Android和iOS上同时使用Tensorflow Lite和Pytorch移动设备。
在选择哪个将支持哪种硬件时,Tflite更加灵活。由于委托系统,它不仅支持CPU和GPU,还支持数字信号处理器(DSP)和其他被认为比基本CPU更高的芯片。
虽然Pytorch Mobile还支持CPU和GPU,例如用于iOS和Vulkan的Android的金属,但除此之外,硬件加速的选项较少。这意味着,当我们需要更广泛的硬件兼容性时,Tflite可能会具有优势,尤其是对于具有专门处理器的设备而言。
Tensorflow Lite和Pytorch Mobile之间的主要区别在于,模型从训练阶段转变为移动设备上的部署。
如果我们想在移动设备上部署TensorFlow模型,则需要使用TFLITE转换器将其转换。可以优化此过程,例如量化,这将使移动目标的模型快速有效。
对于Pytorch Mobile,我们可以使用Torchscript保存模型。该过程非常简单,简单,但是它没有提供与TFLITE提供的高级优化选项的水平。
探索Tensorflow Lite和Pytorch Mobile的实际应用,展示了这些框架如何在不同行业跨越智能解决方案。
TFLITE是需要快速响应的不同应用程序的更好平台,例如实时图像分类或对象检测。如果我们正在使用具有专门硬件的设备,例如GPU或神经处理单元。 TFLITE的硬件加速度功能有助于模型运行速度更快,更有效。
Pytorch Mobile非常适合仍在不断发展的项目,例如研究或原型应用程序。它的灵活性使得可以轻松进行实验和迭代,从而使开发人员可以快速更改。当我们需要经常实验和部署具有最小修改的新模型时,Pytorch Mobile是理想的选择。
我们将使用预训练的模型(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')
该模型是使用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)
现在,我们导入数值操作(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) 打印(预测)
使用下面的猫图像:
输出:
[('N02123045','tabby',0.85),('N02124075','egyptian_cat',0.07),('N02123159','n02123159','tiger_cat',0.05)]
这意味着该模型是85%的信心,因为图像是虎斑猫。
现在,我们将实施Pytorch手机。我们将使用一个简单的预训练模型,例如Resnet18,将其转换为Torchscript,并运行推断
#步骤1:设置环境 导入火炬 导入torchvision.models作为型号 #加载预验证的RESNET18型号 Model = model.Resnet18(预读= true) #将模型设置为评估模式 model.eval()
在这里,我们定义一个示例_input,它是大小[1,3,224,224]的随机张量。这模拟了一个带有3个颜色通道(RGB)和224×224像素的1个图像。它用于追踪模型的操作。 TORCH.JIT.TRACE()是一种将Pytorch模型转换为Torchscript模块的方法。 Torchscript允许您在Python之外进行序列化并运行模型,例如在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紧密整合。它们结合在一起,使开发人员能够在开发人员的手持设备上实施具有高功能的实时人工智能应用程序。这些框架使用户能够在本地机器上运行复杂的模型,并这样做,因此他们正在通过指尖重写有关移动应用程序如何与世界互动的规则。
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中文网其他相关文章!