首頁 >科技週邊 >人工智慧 >Tensorflow Lite與Pytorch手機

Tensorflow Lite與Pytorch手機

Joseph Gordon-Levitt
Joseph Gordon-Levitt原創
2025-03-14 11:24:12908瀏覽

在最近的技術開發和機器學習的世界中,它不再局限於微型雲中,而是在移動設備中。眾所周知,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