テクノロジー開発と機械学習の最近の世界では、マイクロクラウドではなくモバイルデバイスに限定されています。私たちが知っているように、Tensorflow LiteとPytorch Mobileは、モデルを携帯電話とタブレットに直接展開するための最も市販の2つのツールです。 Tensorflow LiteとPytorch Mobileはどちらも、モバイルで動作するように開発されていますが、長所と短所には際立っています。この記事では、Tensorflow Liteとは何か、Pytorch Mobileとは何か、そのアプリケーションと両方の違いを知る必要があります。
この記事は、データサイエンスブログソンの一部として公開されました。
スマートフォン、タブレット、またはデバイスの機械学習を使用したその他のデバイスなど、モバイルデバイスでAIを実行できます。雲のサービスに頼る必要はありません。これらは、高速応答、機密情報のセキュリティ、およびアプリケーションであり、多様なアプリケーションで非常に重要なインターネット接続の有無にかかわらず実行できます。リアルタイム、機械翻訳、拡張現実の画像認識。
Tensorflow Liteは、制限された機能を備えたデバイスでよく使用されるTensorflowバージョンです。それは機能し、AndroidやiPhoneなどの他のオペレーティングシステムと互換性があります。主に、遅延と高性能の実行を提供することに焦点を当てています。 Tensorflow Liteについては、モデルに量子化などの特定の方法を適用するのに役立つモデルオプティマイザーがあります。これにより、モバイル展開のモデルがより迅速かつ小さくなり、このプラクティスでは効率を向上させるために不可欠です。
以下は、Tensorflow Liteの最も重要な機能です。
Pytorch Mobileは、Pytorchのモバイルエクステンションです。一般に、研究と生産における柔軟性で知られています。 Pytorch Mobileを使用すると、デスクトップ環境から訓練されたモデルを簡単に取得し、それをモバイルデバイスに展開することができます。動的な計算グラフをサポートし、デバッグを容易にすることにより、開発者の使いやすさに重点を置いています。
以下は、Pytorch Mobileのいくつかの重要な機能です。
パフォーマンスについて議論すると、両方のフレームワークがモバイルデバイス用に最適化されていますが、Tensorflow Liteは実行速度とリソース効率が高くなります。
Pytorchモバイルは、デバッグの柔軟性と容易さのために、一般に開発者が好んでいます。動的な計算グラフが原因です。これにより、実行時にモデルを変更するのに役立ちます。これは、プロトタイプに最適です。一方、Tensorflow Liteでは、展開前にモデルを静的形式に変換する必要があります。これにより、複雑さが増す可能性がありますが、モバイルにより最適化されたモデルになります。
Tensorflow LiteとPytorch Mobileの両方を2つの主要なモバイルプラットフォーム、AndroidとiOSで使用できます。
どのハードウェアをサポートするかを選択することになると、Tfliteはより柔軟です。デリゲートシステムにより、CPUとGPUだけでなく、基本的なCPUよりも高いパフォーマーと見なされるデジタル信号プロセッサ(DSP)やその他のチップもサポートします。
Pytorch Mobileは、iOS用の金属やAndroid用VulkanなどのCPUやGPUもサポートしていますが、それ以上のハードウェアアクセラレーションのオプションは少ないです。これは、特に専門のプロセッサを持つデバイスの場合、より広いハードウェアの互換性が必要な場合、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モデルをロードする tfとしてtensorflowをインポートします #前処理された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ファイルに保存します fite open( 'mobilenet_v2.tflite'、 'wb')as f: f.write(tflite_model)
ここで、数値操作(numpy)と画像操作(pil.image)に必要なライブラリをインポートします。 Tfliteモデルは、tf.lite.interpreterandメモリを使用してロードされます。形状やデータ型など、入出力テンソルの詳細を取得します。これは、入力画像を前処理して出力を取得するときに役立ちます。
npとしてnumpyをインポートします PILインポート画像から #TFLITEモデルをロードし、テンソルを割り当てます interpreter = tf.lite.interpreter(model_path = 'mobilenet_v2.tflite') interpleter.allocate_tensors() #入力テンソルと出力テンソルを取得します input_details = interpreter.get_input_details() output_details = interpreter.get_output_details()
画像(cat.jpg)をロードし、必要な(224、224)ピクセルにサイズを変更し、MobileNetv2の前処理方法を使用してプリプロアクセスします。事前に処理された画像は、interpreter.set_tensor()を使用して入力テンソルを設定することによりTfliteモデルに供給され、interpreter.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) #入力テンソルを設定し、モデルを実行します interpreter.set_tensor(input_details [0] ['index']、input_data) interpreter.invoke() #出力を取得し、予測をデコードします output_data = interpreter.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'、 'tiger_cat'、0.05)]]]]]
これは、モデルが画像がタビー猫であると確信していることを意味します。
これで、Pytorch Mobileを実装します。 ResNet18などの単純な事前訓練モデルを使用し、Torchscriptに変換し、推論を実行します
#ステップ1:環境をセットアップします トーチをインポートします モデルとしてtorchvision.modelsをインポートします #前処理されたResNet18モデルをロードします model = models.resnet18(pretrained = true) #モデルを評価モードに設定します model.eval()
ここでは、サイズのランダムなテンソルであるexample_inputを定義します[1、3、224、224]。これにより、3つのカラーチャネル(RGB)と224×224ピクセルを備えた1つの画像のバッチをシミュレートします。モデルの操作を追跡するために使用されます。 torch.jit.trace()は、pytorchモデルをTorchscriptモジュールに変換する方法です。 Torchscriptを使用すると、Cやモバイルデバイスなど、Pythonの外でモデルをシリアル化および実行できます。変換されたTorchscriptモデルは「ResNet18_Scripted.pt」として保存され、後でロードして使用できるようにします。
#ステップ2:Torchscriptに変換します example_input = torch.randn(1、3、224、224)#トレースの例の例 traced_script_module = torch.jit.trace(model、emple_input) #TorchScriptモデルを保存します traced_script_module.save( "resnet18_scripted.pt")
torch.jit.load()を使用して、以前に保存したtorchscriptモデルをファイル「Resnet18_scripted.pt」からロードします。新しいランダムテンソルinput_dataを作成し、サイズ[1、3、224、224]の画像入力を再度シミュレートします。その後、モデルはloaded_model(input_data)を使用してこの入力で実行されます。これにより、各クラスの生のスコア(ロジット)が含まれる出力が返されます。予測されたクラスを取得するには、Torch.max(出力、1)を使用して、クラスのインデックスに最高のスコアを与えます。 Predicted.item()を使用して、予測クラスを印刷します。
#ステップ3:スクリプトモデルをロードして実行します loaded_model = torch.jit.load( "resnet18_scripted.pt") #入力データをシミュレートする(ランダム画像テンソル) input_data = torch.randn(1、3、224、224) #モデルを実行して、予測を取得します output = loaded_model(input_data) _、予測= torch.max(output、1) print(f'predicted class:{predicted.item()} ')
出力:
予測クラス:107
したがって、モデルは、入力データがクラスインデックス107に属すると予測しています。
Tensorflow Liteはモバイルデバイスにより重点を置いていますが、Pytorch Mobileはより一般的なCPU/GPU展開ソリューションを提供します。 Tensorflow Liteと比較して、Pytorch Mobileはより大きな携帯性を提供しながら、Tensorflow Liteよりも軽く、Googleと密接に統合されています。組み合わせて、開発者は、開発者のハンドヘルドデバイスに高い機能性を備えたリアルタイム人工知能アプリケーションを実装できるようにします。これらのフレームワークは、ローカルマシンで洗練されたモデルを実行する機能によりユーザーに力を与え、そうすることにより、指先を通じてモバイルアプリケーションが世界とどのように関与するかについてのルールを書き直しています。
A. Tensorflowライトは、モバイルデバイスで高性能が必要な場合に使用されますが、Pytorch Mobileが使用され、Pytorchの既存のエコシステムとの柔軟性と統合の容易さが必要です。
Q2。 Tensorflow LiteとPytorchモバイルは、AndroidとiOSの両方で動作できますか?A.はい、Tensorflow LiteとAndroidとiOSでのPytorchモバイルワークの両方。
Q3。 Pytorch Mobileの使用法を書いてください。A. Pytorch Mobileは、画像、フェイシャル、ビデオ分類、リアルタイムオブジェクトの検出、スピーチツーテキスト変換などのタスクを実行するアプリケーションに役立ちます。
Q4。 Tensorflow Lite Mobileの使用法を書いてください。A. Tensorflow Lite Mobileは、ロボット工学、IoTデバイス、拡張現実(AR)、バーチャルリアリティ(VR)、自然言語処理(NLP)などのアプリケーションに役立ちます。
この記事に示されているメディアは、Analytics Vidhyaが所有しておらず、著者の裁量で使用されています。
以上がTensorflow Lite vs Pytorch Mobileの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。