数日前、私は 3 年間開発に携わってきた友人の Xiao Li と話をし、彼の会社が機械学習に関連する研究を行うプロジェクト。最近、彼はトレーニングされた機械学習モデルをデプロイするタスクを受け取りました。 Xiao Li 氏はこれを心配しています。彼は機械学習の開発に半年近く携わっています。主にデータ収集、データクリーニング、環境構築、モデルトレーニング、モデル評価に従事しています。しかし、モデルのデプロイメントを行うのはこれが初めてです。 。
そこで、私は自分の経験に基づいて、機械学習モデルの導入に関するポピュラーサイエンスを実施しました。図 1 に示すように、従来のプログラミングでは、ルールとデータをプログラムに渡して、必要な答えを取得します。機械学習では、答えとデータを通じてルールをトレーニングします。このルールが機械学習のモデルです。
#図 1 従来のプログラミングと機械学習の違い
そして機械学習のモデル展開このルール (モデル) を、機械学習を適用する必要があるエンドポイントにデプロイすることです。図2に示すように、機械学習によって学習されたモデルは、関数、API、またはSDKとして理解でき、対応する端末にデプロイされます(図の灰色の部分)。導入後の端末はモデルで与えられた機能を持つことになりますが、このとき新たなデータを入力することでルール(モデル)に従って予測結果が得られます。
#図 2 機械学習モデルのデプロイメントの原則#TensorFlow 機械学習デプロイメント フレームワーク
Xiao Li は、私の紹介を聞いて理解したと言い、彼らのプロジェクトの展開について非常に興味深く話し、私の意見を求めたいと言いました。図 3 に示すように、画像認識モデルを IOS、Android、Raspberry Pi、Web ブラウザー、およびサーバー側に展開したいと考えています。
#図 3 モデル展開シナリオ
展開アプリケーション シナリオから見ると、軽量でクロスクロスです。プラットフォームの機能。同じ機械学習モデルを複数の異なるプラットフォームにデプロイする必要があり、各プラットフォームには異なるストレージとコンピューティング機能があります。同時に、モデル操作の可用性、パフォーマンス、セキュリティ、拡張性を考慮する必要があり、比較的安定した大規模なプラットフォームを使用する必要があります。そこで、私は TensorFlow の機械学習導入フレームワークを彼に勧めました。図 4 に示すように、TensorFlow のデプロイメント フレームワークは、さまざまなプラットフォームのコンポーネント サポートを提供します。このうち、Android、IOS、Raspberry Piは、モバイル端末に特化したモデル展開フレームワークであるTensorFlow Liteに対応しています。ブラウザ側では TensorFlow.js を使用でき、サーバー側では TensorFlow Serving を使用できます。
#図 4 TensorFlow 機械学習モデルの導入フレームワーク
TensorFlow Lite の実際の動作
小李 さんは、より具体的なデプロイメント プロセスを知りたがっていました。私はたまたま TensorFlow のデプロイメント フレームワークを使用するプロジェクトを持っていたので、彼にプロセスをデモンストレーションしました。このプロジェクトは、「犬猫認識」モデルを Android スマートフォンに導入するもので、IOS、Android、Raspberry Pi、ブラウザはすべてクライアントであるため、それらのコンピューティング リソースをサーバーのコンピューティング リソースと比較することはできません。特にモバイル アプリケーションは軽量、低遅延、高効率、プライバシー保護、省電力などの特徴があるため、TensorFlow はそのデプロイを特別に設計し、TensorFlow Lite を使用してデプロイします。TensorFlow Lite を使用してモデルをデプロイするには、次の 3 つの手順が必要です:
最初のステップでモデルのトレーニングが完了しました。2 番目のステップでは、生成されたモデルを TensorFlow Lite が認識して使用できるパターン形式に変換します。前述したように、モデルをモバイル端末で使用する場合には、さまざまな問題を考慮する必要があるため、モバイル端末用に特別なファイル形式を生成する必要があります。 3 番目のステップは、変換された TensorFlow Lite ファイルをモバイル インタプリタにロードして実行することです。
ここではモデルのデプロイメントに焦点を当てているため、モデルのトレーニングの最初のステップは一時的にスキップされます。これは、モデルがすでにトレーニングされていることを意味します。モデル変換の 2 番目のステップについては、図 5 を参照してください。TensorFlow モデルは、Converter を通じてサフィックス「.tflite」が付いたモデル ファイルに変換され、その後、さまざまなプラットフォームに公開され、各プラットフォームのインタープリターを通じて処理されます。説明してロードします。
#図 5 TensorFlow Lite モデル変換アーキテクチャ
モデルの保存と変換TensorFlow Lite のアーキテクチャは上で紹介しましたが、ここではモデルを TensorFlow モデルとして保存し、変換する必要があります。図 6 に示すように、TensorFlow の Saved_model.save メソッドを呼び出して、モデル (トレーニング済みモデル) を指定されたディレクトリに保存します。
#図 6 TensorFlow モデルの保存モデルを保存したら、次は、図 7 に示すように、TensorFlow Lite の TFLiteConverter パッケージの from_saved_model メソッドを呼び出してコンバーター (モデル コンバーター) のインスタンスを生成し、コンバーターの Convert メソッドを呼び出してモデルを変換し、変換されたモデルを保存します。ファイルを指定したディレクトリにコピーします。
図 7 tflite モデル形式への変換
アプリケーション モデルの読み込み
理由この例は Android システム上でのモデルのデプロイメントを対象としているため、TensorFlow Lite の依存関係を Android に導入する必要があります。図 8 に示すように、TensorFlow Lite の依存関係を導入し、aaptOptions で noCompress を「tflite」に設定します。これは、「tflite」を持つファイルは圧縮されないことを意味します。圧縮が設定されている場合、Android システムは tflite ファイルを認識しない可能性があります。
#図 8 プロジェクトの TensorFlow Lite に導入された依存関係
依存関係を設定した後、変換します。図 9 に示すように、適切な tflite ファイルをアセット ファイルに追加します。このファイルは、機械学習モデルを実行するために後でロードされます。
図 9 tflite ファイルの追加
tflite ファイルを追加した後、Classifier 分類器を作成します、「猫と犬」の写真を分類するために使用されます。図 10 に示すように、インタプリタは Classifer の init で初期化され、loadModuleFlie メソッドが呼び出されて tflite ファイルがロードされ、分類ラベル (labelList) が指定されています (ここでのラベルは「cat Dog」です)。
図 10 インタプリタの初期化
分類器を作成した後、猫と犬の分類モデルを使用して画像を識別します。つまり、Classifier クラスでは、図 10 に示すように、convertBitmapToByteBuffer メソッドの入力パラメーターはビットマップです。これは、入力した猫と犬の画像です。このメソッドで変換されます。赤色の部分に特に注意してください。 for ループ内で緑と青のチャンネルを変換し、変換結果を byteBuffer に入れて返します。 recoginzeImage メソッドは、convertBitmapToByteBuffer を呼び出し、インタプリタの run メソッドを使用して画像認識作業を実行します。つまり、機械学習モデルを使用して猫と犬の画像を識別します。
図 11 画像の認識
上記のグラフィック変換プロセスは抽象的すぎるため、詳細を説明します。図 12 に示します。入力した画像は画像の左上隅にある 395*500 の画像で、imageView 内の画像をビットマップ形式に変換します。モデル入力には 224*224 形式が必要なため、変換が必要です。次に、ピクセルが 224*224 ByteBuffer 配列に入れられて保存され、最後に RGB (赤、緑、青) ピクセルがモデルの入力パラメーターとして正規化 (255 で除算) されます。
#図 12 入力画像の変換プロセス
この時点で、機械学習モデルが完成 完成しました。もちろん、入力ファイルとレイアウトは必須です。図 13 に示すように、予測する必要がある画像 (猫と犬の画像) を描画可能フォルダーの下に保存します。次に、レイアウトの下に activity_image_classifier.xml ファイルを作成して、ImageView を構築して保存します。
#図 13 入力画像ファイルとレイアウト ファイル最後に、画像を表示して応答する ImageClassifierActivity を作成します。画像を識別するイベントに。図 14 に示すように、initViews メソッドで各画像の onclick イベントをバインドし、onclick メソッドで recoginzie Image メソッドを呼び出して画像を識別します。
#図 14 onclick での画像認識の実行
効果を見てみましょう。図 15 に示すように、対応する画像をクリックすると、予測結果を示す「犬」のプロンプトが表示されます。
#図 15 デモ効果
プロセス全体のレビューは複雑ではないので、モデルをデプロイします。 TensorFlow lite を使用する場合 次の手順に要約されます。
機械学習モデルを保存します。
https://www.php.cn/link/1f5f6ad95cc908a20bb7e30ee28a5958 Google 開発者の専門家も対応しますデプロイメントに関するオンラインの説明と Q&A が非常に充実しているため、TensorFlow デプロイメント機能を予備的に理解したい学生は、
https: //www.php.cn/link /e046ede63264b10130007afca077877f Xiao Li は、私の機械学習モデルのデプロイメントの説明を聞いて、TensorFlow デプロイメントのプロセスを理解した後、実際のデプロイメントを試してみたいとさらに意欲的になりました。 TensorFlow を使用したデプロイメントプロセスは論理的に明確で、方法はシンプルで実装が簡単で、3 ~ 5 年の経験を持つ開発者にとっては簡単に開始できると思います。さらに、TensorFlow は、機械学習の基礎がまったくない初心者に適した「TensorFlow 入門実践コース」を公式に提供しています: https://www.php.cn/link/bf2fe6582ed9ead9161a3d6f6b1d6858 Cui Hao は、51CTO コミュニティ編集者、シニア アーキテクトであり、20 年の建築経験があります。彼はかつて HP で技術専門家を務め、複数の機械学習プロジェクトに参加し、機械学習や NLP などに関する 20 以上の人気技術記事を執筆および翻訳してきました。 『分散アーキテクチャの原則と実践』の著者。 End
著者紹介
以上が機械学習モデルをデプロイする方法がわかりませんか? 15 枚の写真で、TensorFlow デプロイメント フレームワークを理解できます。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。