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