ブラウザで TensorFlow を使用するにはどうすればいいですか?

ブラウザで TensorFlow を使用するにはどうすればいいですか?

[[341102]]

[51CTO.com クイック翻訳] TensorFlow を使用すると、少量のトレーニング データで単純なニューラル ネットワークをトレーニングできますが、膨大なトレーニング データ セットを持つディープ ニューラル ネットワークでは、加速のために CUDA 対応の NVIDIA GPU、Google TPU、または FPGA を使用する必要があります。最近まで、代替策としては CPU クラスターで数週間かけてトレーニングする必要がありました。

TensorFlow 2.0 で導入されたイノベーションの 1 つは、JavaScript 実装である TensorFlow.js です。これによってトレーニングや推論が高速化されるとは思っていませんでしたが、実際に高速化され、WebGL API を介してすべての GPU (CUDA 対応のものだけでなく) がサポートされます。

TensorFlow.js の紹介

TensorFlow.js は、JavaScript で機械学習モデルを開発およびトレーニングし、ブラウザーまたは Node.js にデプロイするためのライブラリです。既存のモデルを使用したり、Python TensorFlow モデルを変換したり、転移学習を使用して独自のデータで既存のモデルを再トレーニングしたり、モデルをゼロから開発したりすることができます。

TensorFlow.js バックエンド

TensorFlow.js は実行のために複数のバックエンドをサポートしていますが、一度にアクティブになるバックエンドは 1 つだけです。 TensorFlow.js Node.js 環境は、バックエンドとして Python/C TensorFlow インストールの使用をサポートしており、これにより、CUDA などのマシンで利用可能なハードウェア アクセラレーション テクノロジを使用できます。 Node.js 用の JavaScript ベースのバックエンドもありますが、機能は制限されています。

ブラウザでは、TensorFlow.js にはさまざまな機能を備えた複数のバックエンドがあります。 WebGL バックエンドは、ストレージ用の WebGL テクスチャと実行用の WebGL シェーダーを使用して GPU サポートを提供し、通常の CPU バックエンドよりも最大 100 倍高速です。 WebGL は CUDA を必要としないため、利用可能な GPU を最大限に活用できます。

ブラウザベースの WebAssembly (WASM) TensorFlow.js バックエンドは、XNNPACK ライブラリを使用して、ニューラル ネットワーク オペレーターの CPU 実装を最適化します。 WASM バックエンドは、通常、JavaScript CPU バックエンドよりもはるかに高速です (10 倍から 30 倍高速) が、非常に小さなモデルを除いて、通常、WebGL バックエンドよりも低速です。結果は異なる可能性がありますので、ご自身のモデルに合わせて、ご自身のハードウェアで WASM バックエンドと WebGL バックエンドの両方をテストしてください。

TensorFlow.js モデルとレイヤー

TensorFlow.js は、ニューラル ネットワーク モデルを構築するための 2 つの API をサポートしています。 1 つは Layers API で、これは実質的に TensorFlow 2 の Keras API と同じです。もう 1 つは、実際にテンソルを直接操作する Core API です。

Keras と同様に、TensorFlow.js Layers API には、モデルを作成するための 2 つの方法 (シーケンシャルと関数) があります。シーケンシャル API はレイヤーの線形スタックであり、レイヤー リスト (以下を参照) または model.add() メソッドを介して実装されます。

  1. 定数モデル = tf.sequential({
  2.  
  3. レイヤー:
  4.  
  5. tf.layers.dense({inputShape: [784], 単位: 32, アクティベーション: 'relu' }),
  6.  
  7. tf.layers.dense({単位: 10, アクティベーション: 'softmax' }),
  8.  
  9. ]
  10.  
  11. });

機能 API は tf.model() API を使用して任意の有向非巡回グラフ (DAG) ネットワークを作成します。

  1. //レイヤーを接続し任意グラフを作成します
  2.  
  3. // apply() メソッドを介して。
  4.  
  5. 定数入力 = tf.input({形状: [784]});
  6.  
  7. const dense1 = tf.layers.dense({units: 32, activation: 'relu' }).apply(input);
  8.  
  9. const dense2 = tf.layers.dense({units: 10, activation: 'softmax' }).apply(dense1);
  10.  
  11. const model = tf.model({入力: input, 出力: dense2});

Core API では、同じ目的を達成するために異なるコードを使用できますが、レイヤー間には単純で直感的な接続はありません。次のモデルは基本的なテンソル演算のように見えますが、前の 2 つの式と同じネットワークを作成します。以下の model() 関数では relu() と softmax() が使用されていることに注意してください。どちらもニューラル ネットワーク操作です。

  1. // 2 つの密なレイヤー重みバイアス
  2.  
  3. 定数w1 = tf.variable(tf.randomNormal([784, 32]));
  4.  
  5. b1 = tf.variable(tf.randomNormal([32]));
  6.  
  7. 定数w2 = tf.variable(tf.randomNormal([32, 10]));
  8.  
  9. 定数b2 = tf.variable(tf.randomNormal([10]));
  10.  
  11. 関数モデル(x) {
  12.  
  13. x.matMul(w1) .add (b1).relu().matMul(w2) .add (b2).softmax()を返します
  14.  
  15. }

事前に構築された TensorFlow.js モデル

リポジトリには、NPM (Node.js で使用) および unpkg (ブラウザーで使用) でホストされた、ビルド済みの TensorFlow.js モデルが 12 個以上文書化されています。これらのモデルは、提供されたまま使用することも、転移学習に使用することもできます。少しの努力で、他のモデルの構成要素として使用することもできます。

これらのモデルの中には、手のジェスチャーなど、デバイスのカメラをリアルタイムで使用するものもあります。

図 1. 手のポーズは手のひらを検出し、手の骨格の指を追跡できます。

次のリストでは、インデックスを簡単に作成できるように、事前にパッケージ化された TensorFlow.js モデルのほとんどを紹介します。

  • 画像分類
  • 物体検出
  • 体のセグメンテーション
  • 姿勢推定
  • テキストの毒性検出
  • ユニバーサルセンテンスエンコーダー
  • 音声コマンド認識
  • KNN分類器
  • シンプルな顔検出
  • セマンティックセグメンテーション
  • 顔のランドマーク検出
  • 手のジェスチャー検出
  • 自然言語による質問応答
  • ml5.js の紹介

ml5.js は、主にニューヨーク大学で開発された、オープンソースでユーザーフレンドリーな高レベルの TensorFlow.js インターフェースです。 ml5.js は、人間のポーズの検出、テキストの生成、別のスタイルでの画像のスタイル設定、音楽の作曲、ピッチの検出、一般的な英語の単語の関係などを行うための事前トレーニング済みモデルにブラウザで即座にアクセスできるようにします。 TensorFlow.js は主にデータ サイエンティストや開発者を対象としていますが、ml5.js は一般の人々が機械学習をより幅広く理解できるように設計されています。

ml5.js のほとんどの例は TensorFlow.js モデルに依存しています。これらは Web ページとしてパッケージ化されており、そのまま実行することも、たとえば別の画像を使用するために編集することもできます。

図 2. PoseNet は、ブラウザ内の画像またはビデオ ソースからリアルタイムの姿勢推定を実行できます。

Python TensorFlow モデルを JavaScript に変換する

TensorFlow.js リポジトリの一部には、保存された TensorFlow および Keras モデル用のコンバーターが含まれています。 SavedModel (TensorFlow のデフォルト形式)、HDF5 (Keras のデフォルト形式)、TensorFlow Hub の 3 つの形式をサポートしています。このコンバーターは、標準リポジトリから保存されたモデル、自分でトレーニングしたモデル、他の場所で見つけたモデルで使用できます。

変換には実際には 2 つのステップがあります。最初のステップは、既存のモデルを model.json およびバイナリ重みファイルに変換することです。 2 番目のステップは、API を使用してモデルを TensorFlow.js にロードすることです。変換された TensorFlow および TensorFlow Hub モデルの場合は tf.loadGraphModel を使用し、変換された Keras モデルの場合は tf.loadLayersModel を使用します。

転移学習の使用

TensorFlow.js は、TensorFlow とほぼ同じ方法で転移学習をサポートします。ドキュメントには、独自の画像に合わせて MobileNet をカスタマイズする例や、独自のサウンド クラスに合わせて音声コマンド認識モデルをカスタマイズする例がいくつか記載されています。基本的に、これらの各コードラボで行ったことは、トレーニング済みのモデルの上に小さなカスタム分類子を追加してトレーニングすることでした。

一般的に、TensorFlow.js は基本的に TensorFlow でできることをすべて実行できます。ただし、TensorFlow.js が対象とする環境 (ゲーム用の一般的な GPU) では、TensorFlow ディープラーニング トレーニングでよく使用される大規模な Nvidia サーバー GPU よりも GPU メモリが少ないことが一般的であるため、ブラウザーで実行するにはモデルのサイズを縮小する必要がある場合があります。変換ユーティリティはこの部分を自動的に実行できますが、トレーニングのためにレイヤーを手動で削除し、バッチ サイズを縮小する必要があります。

原題: ブラウザで TensorFlow を使用する方法、著者: Martin Heller

[51CTOによる翻訳。パートナーサイトに転載する場合は、元の翻訳者と出典を51CTO.comとして明記してください]

<<:  人工ニューラルネットワーク分類器に基づくドメイン適応(DA)技術

>>:  第4世代ロボットが発売。Lingdong TechnologyのAMR分野における粘り強さと革新

ブログ    
ブログ    

推薦する

アマゾン、AIが女性の求職者に低い評価を与えたため研究チームを解散に追い込まれる

[[246043]]アマゾンの機械学習チームは2014年以来、優秀な人材の求職活動をよりスマートにす...

人工知能は間違いに気づくのでしょうか?

1956年8月、10人の科学者がアメリカのダートマス大学に集まり、機械を使って知覚、推論、意思決定...

...

...

...

世界初のグラフェン半導体がネイチャー誌に掲載され、中国チームがムーアの法則の寿命を10年延長しました!

シリコンはすべての電子機器の終焉をもたらすのか?この記録はグラフェンによって破られました!天津大学と...

サム・アルトマンが2023年の年末総括を発表、17の大格言がネット全体に響き渡る!

2023年も終わりに近づいています。過去1年を振り返ると、ChatGPTの登場が世界的なAIブーム...

「階層化された自律性、垂直的なコラボレーション」アーキテクチャは、ワイヤレス自動運転ネットワークの基礎です。

【グローバルネットワークインテリジェント総合レポート】2020年、5Gネットワ​​ーク構築が本格化...

米国エネルギー省、AIによる科学的発見の自動化を支援するために1,600万ドルを投資

技術の複雑さが年々増すにつれ、科学的な革新と発見への扉がより多くの分野に開かれています。現在の問題は...

年次指数レポートではAIが「産業化」しているが、より優れた指標とテストが必要とされている

海外メディアVentureBeatによると、中国は人工知能の研究論文の総数で米国を上回り、資金提供を...

Python で KNN アルゴリズムを使用して欠損データを処理する

欠損データの処理は簡単な作業ではありません。 方法は、単純な平均補完や観察結果の完全な削除から、MI...

元従業員が内部事情を暴露: 10年経っても、なぜGoogleはナレッジグラフを解明できないのか?

[[258183]]この記事はWeChatの公開アカウント「AI Front」(ID: ai-fr...

将来スマートフォンは消滅するのでしょうか? Huaweiがそれに代わるスマートフォンを発売します!

スマートフォンの登場と普及は人々の生活に大きな楽しさと便利さをもたらしました。携帯電話がもっとスマー...

AIが科学研究を「行う」ことを学習し、ネイチャー誌に発表。知湖ネットユーザー:水を見るのは耐えられない

人工知能は複雑な囲碁のゲームでは簡単に人間に勝つことができますが、科学的な発見に役立つのでしょうか?...

2024年のAI: ビジネスリーダーの対応とチャットボットの改善

Language I/O のプロダクト担当副社長である Chris Jacob が、進化する AI ...