概要
導入 機械学習モデルを作成する際に好んで使用するツールは何ですか?データ サイエンティストはこの永遠の問いに対してさまざまな答えを持っています。 RStudio を好む人もいれば、Jupyter Notebook を好む人もいます。私は間違いなく後者です。 そのため、初めて TensorFlow.js (旧称 deeplearn.js) に出会ったとき、私の心は爆発しそうになりました。ブラウザで機械学習モデルを構築しますか? JavaScript を使用していますか?信じられないほど素晴らしいですね! 43 億人以上、つまり世界人口の約 55% が Web ブラウザを使用しています。 ——Wikipedia(2019年3月) Google の TensorFlow.js は、機械学習をブラウザに導入することで機械学習を民主化するだけでなく、JavaScript を頻繁に使用する開発者にとって機械学習への最適な入り口でもあります。
当社の Web ブラウザは、最もアクセスしやすいプラットフォームの 1 つです。そのため、機械学習モデルをトレーニングできるだけでなく、ブラウザ自体で「学習」または「転移学習」できるアプリケーションを構築することが理にかなっています。 この記事では、まず TensorFlow.js とそのさまざまなコンポーネントを使用することの重要性を理解します。次に、TensorFlow.js を使用してブラウザ内で独自の機械学習モデルを構築する手順について詳しく説明します。次に、コンピューターのウェブカメラを使用して体の姿勢を検出するアプリケーションを構築します。 TensorFlow を初めて使用する場合は、次の記事を読んで詳細を確認してください。
目次 TensorFlow.js を使用する理由は何ですか? 1.1 ウェブカメラを使ったブラウザでの画像分類 1.2 TensorFlow.js の機能 2. ブラウザでの機械学習の理解 2.1 コア API: テンソルの操作 2.2 レイヤーAPI: Kerasのようなモデルの構築 3. Googleの事前学習済みモデル「PoseNet」を使用する 1. TensorFlow.js を使用する理由 私はこの質問にユニークな方法で答えます。 TensorFlow.js の理論的な側面を詳しく調べたり、それがなぜ素晴らしいツールなのかを説明したりするつもりはありません。 代わりに、TensorFlow.js を使用しない場合に何が失われるのかを簡単に説明します。それでは、Web カメラを使用して画像を分類するアプリケーションを 5 分で構築してみましょう。そうです。すぐにコードを見てみましょう。 一番良い点は、これを実行するために何かをインストールする必要がないことです。必要なのはテキスト エディターと Web ブラウザーだけです。次のアニメーションは、これから構築するアプリケーションを示しています。 TensorFlow.js と Python を使用してブラウザで機械学習モデルを構築する すごいですね!ブラウザで数分で完了しました。それでは、Web ブラウザーで独自の画像分類モデルを構築するための手順とコードを見てみましょう。 1.1 ウェブカメラを使用してブラウザで画像分類モデルを構築する 任意のテキスト エディターを開き、index.html ファイルを作成します。このファイルに次のコードを保存します。
次に、別のファイル index.js を作成し、そこに次のコードを記述します。
両方のファイルを保存し、Google Chrome や Mozilla Firefox などのブラウザで index.html ファイルを開きます。それでおしまい!これで、Web カメラを使用してブラウザ自体でリアルタイムに画像を分類できるアプリケーションが作成されました。私のコンピューターでは次のようになります: ビデオリンク:
この例で注目すべき重要な点:
コンピュータに何もインストールする必要はありません。この例は、Linux、Windows、MacOS など、あらゆる最新システムで動作するはずです。これが、JavaScript を使用して Web 上でモデルを構築する力です。 それでは、TensorFlow.js が提供する強力な機能と、それらを活用してブラウザに機械学習モデルをデプロイする方法を見てみましょう。 1.2 TensorFlow.js の機能 TensorFlow.js は、JavaScript で ML モデルを開発およびトレーニングし、ブラウザーまたは Node.js にデプロイするためのライブラリです。 TensorFlow.js は、使用できる多くの機能を提供します。 これは、インターネット上で使用されるほぼすべての Web サイト、ブラウザー、またはアプリケーションのロジックの背後にあるプログラミング言語である JavaScript の TensorFlow の拡張機能です。 JavaScript は Python と同様に汎用性が高いため、機械学習モデルの開発に使用すると多くの利点があります。 ML モデルが Web 言語で記述されている場合は、デプロイが容易になります。
現在の形式では、TensorFlow.js は次の主要な機能を提供します。
この記事では、最初の 2 つの機能に焦点を当てます。このシリーズのパート 2 (近日公開予定) では、Python でモデルを転送学習してデプロイする方法について説明します。 2. ブラウザでの機械学習 TensorFlow.js は、モデルをトレーニングするための 2 つの方法を提供します (TensorFlow と非常に似ています)。
いくつかの例を挙げて、これら 2 つのアプローチを理解してみましょう。結局のところ、概念を学ぶ最良の方法は、それを実践することです。 まず、HTML ファイルを設定します。 コンピューター上に新しい index.html ファイルを作成し、次のコードを記述します。
基本的な HTML ページを作成し、クラウド URL から Tensorflow.js を読み込みます (行 7)。 TensorFlow.js (deeplearn.js) のインストール手順: TensorFlow.js はブラウザ用に設計されているため、TensorFlow.js をインストールして使用する最も簡単な方法は、まったくインストールしないことです。 HTML 内の URL から簡単に読み込むことができます。 地元で働きたい場合はどうすればいいですか?実際、Python や R で通常行うのと同じように、Jupyter Notebook でも TensorFlow.js を使用できます。誰にとっても解決策はあります! このネイティブ メソッドは少し長く、時間がかかるため、この記事では使用しません。実際にその方法を知りたい場合は、まず Jupyter 用の ijavascript カーネルをインストールしてください。以下は私の Jupyter Notebook のスクリーンショットです。 現在、TensorFlow.js を使用するには、ライブラリの公式 URL を使用して直接ロードすることが推奨されています。必要なのは、HTML ファイルに次の行を追加することだけです。
終わり!本当にそれだけです。 2.1 コア API: テンソルの操作 Core API は TensorFlowCore と非常によく似ており、低レベルのテンソル演算と線形代数を使用してモデルを定義できます。 これは、カスタム モデルを構築する場合や、ニューラル ネットワークをゼロから構築する場合に非常に便利です。ブラウザでテンソルを使用する例を見てみましょう。 まず、index.html ファイルの <script> </script> タグの間に次のコードを追加します。
<script> タグは基本的に JavaScript を表します。これらのタグの間に書き込んだものはすべて JavaScript コードとして実行されます。 index.html は現在次のようになっています:
上記のコードでは、2 つのテンソル a と b に対して基本的な加算と乗算の演算を実行し、結果をブラウザーに出力します。次に、ターミナルに移動してプロジェクト フォルダーを開き、次のコマンドで Python サーバーを起動します。
次に、ブラウザで次のアドレスを開きます。
「Tensorflow.js Core API」というページが表示されたら、Ctrl + Shift + I を押してコンソールを開きます。これは Chrome と Firefox の両方で動作するはずです。上記の操作の出力はコンソールに表示されます。 Core API についてさらに詳しく知りたい場合は、CoreAPI の公式ドキュメントを読むことをお勧めします。 CoreAPI ドキュメント:
2.2 レイヤーAPI: Kerasのようなモデルの構築 Layers API は Python の Keras と非常によく似ています。 Keras と同様に、シーケンシャル メソッドと関数メソッドの両方を使用してモデルを作成できます。 例を使ってシーケンスメソッドを詳しく見てみましょう。次のデータ ポイントで回帰モデルをトレーニングします。 ここで、X と Y は線形関係にあります。つまり、各 Y は X + i (i は 0、1、2、3...n+1) に対応します。このデータセットで基本的な回帰モデルをトレーニングしてみましょう。 index.html ファイルの <script></script> タグの間に次のコードを記述できます。
賢明な読者は、上記の構文が Python で Sequential モデルを構築するための Keras 構文と非常によく似ていることに気付いたでしょう。ブラウザ コンソールに戻ると予測が表示されます。 単純回帰モデルでは 7.556 が予測され、これは期待値 8 に非常に近い値です。これは基本的な例ですが、ブラウザ内で直接機械学習モデルを構築することがいかに簡単で便利であるかがはっきりとわかります。 TensorFlow.js を使用すると、ブラウザ内で機械学習およびディープラーニング モデルを構築できます。また、モデルのトレーニング中にシステムで利用可能な場合は、GPU のパワーを自動的に活用します。 TensorFlow.js を使用していくつかの標準データセットでトレーニングされたディープラーニング モデルの例を次に示します。 これらの例は、tfjs-examples リポジトリで参照できます。 tfjs-examples リポジトリ:
3. Googleの事前学習済みモデル「PoseNet」を使用する TensorFlow.js は、オブジェクト検出、音声認識、画像セグメンテーションなどの多くの便利なタスク向けに、Google から事前トレーニング済みのモデルを多数提供します。事前トレーニング済みモデルの利点は、大きな依存関係やインストールなしで使用でき、すぐに使用できることです。 Google は今後数か月以内にさらに多くのモデルを発売すると広く予想されています。利用可能な事前トレーニング済みモデルについては、次のリンクで確認できます。 関連リンク:
この記事ではPoseNetを使用します。 PoseNet は、主要な体の関節の位置を推定することで、画像やビデオ内の人物のポーズを推定できる視覚モデルです。 PoseNetはどのように機能しますか? それは魅力的な概念です。ポーズ推定は、画像やビデオ内の人物を検出するために使用されるコンピューター ビジョン技術です。これにより、たとえば、画像内で人の肘がどこに現れるかを判断するのに役立ちます。 明確にしておくと、ポーズ推定は画像に写っている人物を識別することではありません。このアルゴリズムは、主要な体の関節の位置を単純に推定します。 検出されたキーポイントは、「パーツ」および「ID」インデックスに設定され、信頼スコアは 0.0 ~ 1.0 の範囲になります (1.0 が最高)。 PoseNet によって提供される出力のタイプの例を次に示します。 信じられないですよね? ! PoseNet を使用するには、ml5.js ライブラリを使用します。 ml5.js は、TensorFlow.js と p5.js をベースにしたライブラリです。 p5.js は、ブラウザでウェブカメラに簡単にアクセスできるようにする別のライブラリです。 ml5.js は、幅広いアーティスト、クリエイティブ コーダー、学生が機械学習を利用できるようにすることを目的としています。このライブラリは TensorFlow.js に基づいており、シンプルな構文を通じてブラウザ内で機械学習アルゴリズムとモデルにアクセスできるようにします。 たとえば、ml5.js を使用すると、次のように 5 行のコードで MobileNet を使用した画像分類モデルを作成できます。 Ml5.js はシンプルであるため、ブラウザーでの迅速なプロトタイピングに非常に適しているため、私たちのプロジェクトではこれを使用しています。 PoseNetに戻りましょう。新しいファイル index.html を作成し、次のコードを追加します。
これにより、基本的な HTML Web ページが作成され、必要なファイルが読み込まれます。
ここで、PoseNet を使用するための JavaScript コードを記述します。 index.html と同じフォルダーに新しいファイル posenet.js を作成します。これを機能させるために必要な手順は次のとおりです。
ステップ1から始めましょう。 ステップ1: PoseNetモデルを読み込み、ウェブカメラからビデオをキャプチャする PoseNet をロードするには ml5.js を使用します。一方、p5.js を使用すると、わずか数行のコードで Web カメラからビデオをキャプチャできます。
上記のコード ブロックで最も重要な点は次のとおりです。
ステップ2: 体の関節の重要なポイントを検出する 次のステップはポーズを検出することです。前の手順で、poseNet.on() を呼び出して、検出された各ポーズを pose 変数に保存したことに気付いたかもしれません。この機能はバックグラウンドで継続的に実行されます。新しいポーズが見つかるたびに、体の関節の位置が次の形式で示されます。
この部分は自動的に生成されるため、コードを記述する必要はありません。 ステップ3: 検出された人間の関節を表示する 検出された体の関節とその x 位置と y 位置がわかっています。ここで、検出された体の関節を表示するために、ビデオの上にそれらを描画する必要があります。 PoseNet は、検出された体の関節のリスト、各関節の信頼スコア、およびその x 位置と y 位置を提供することがわかりました。 キーポイントを描画するために、20% のしきい値 (keypoint.score > 0.2) の信頼スコアを使用します。これを行うためのコードは次のとおりです。
ステップ4: 推定される体の骨格を描く PoseNet は、キーポイントや体の関節に加えて、推定された体の骨格も検出できます。 pose 変数を使用してスケルトンを描画できます。
ここでは、検出されたスケルトンを反復処理し、キーポイントを接続する線を作成します。コードはまだかなりシンプルです。 さて、最後のステップは、Web カメラからキャプチャしたビデオ フィードを使用して、drawSkeleton() 関数と drawKeypoints() 関数を繰り返し呼び出すことです。これは、setup() の直後に呼び出され、繰り返し実行される p5.js の draw() 関数を使用して実行できます。
次に、ターミナル ウィンドウに移動し、プロジェクト フォルダーに移動して、Python サーバーを起動します。
次にブラウザで次のアドレスを開きます。
見て! PoseNet は体のポーズを正常に検出するはずです (すべての手順を正しく実行した場合)。私のモデルは次のようになります: 終了ノート 私が TensorFlow.js を気に入っている理由がわかるでしょう。非常に効率的で、モデルを構築するときに複雑なインストール手順を心配する必要もありません。 TensorFlow.js は、機械学習をブラウザに導入することで、機械学習をより利用しやすくする上で大きな可能性を秘めています。同時に、データのプライバシーとインタラクティブ性の利点もあります。この組み合わせにより、特に機械学習アプリケーションを展開する場合、データ サイエンティストのツールボックスの中で非常に強力なツールになります。 次の記事では、ブラウザで転移学習を適用し、TensorFlow.js を使用して機械学習またはディープラーニング モデルをデプロイする方法について説明します。 PoseNet を使用した私たちのプロジェクトは、さらに一歩進んで、別の分類器をトレーニングすることでポーズ認識アプリケーションを構築することができます。ぜひ試してみてください! |
<<: マイクロソフトはOpenAIに10億ドルを投資:公にはAGIのため、密かにGoogleと競合、クラウドコンピューティングを投資と交換したと非難
>>: EU諸国の4分の1がAIによるサイバーセキュリティ管理を望んでいる
「データを持っている者は人工知能を持っている。」現在、人工知能は私たちの生活の中で当たり前のものに...
人工知能の分野で大きな影響力を持つ企業は、金融市場においても並外れた成長と強さを見せています。 AI...
C言語を学んだ友人やIT関係の人ならアルゴリズムには詳しいと思います。したがって、分野が異なれば、ア...
人工知能が賢くなるにつれて、人類を絶滅させるだろうという主張が次々と現れています。実際、多くの有力者...
新しいコンセプトが実行可能なビジネスツールになると、多くの企業がそのテクノロジーを積極的に採用して市...
旅行に出かけることは、祖国の美しい川や山を鑑賞し、「詩と遠い場所」を追求することです。 AIの助けに...
NeurIPSに受理された論文のうち、著者の29%は中国の大学で学士号を取得していますが、そのうち...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
[[197940]]要点:将来のシステム障害を監視し、事前にメンテナンスをスケジュールするための予測...
[[408943]] 7月1日のニュースによると、最近、ヨーロッパの大学の中国の科学者は、シート状の...
[[216696]]一般的に言えば、未来そのものを予測することは難しいため、技術動向を明確に予測す...
序文と個人的な理解とても良い作品を見つけたので、皆さんと共有したいと思います!占有+世界モデルに関し...
人工知能技術は私たちの日常の仕事、勉強、生活に溶け込み、静かに社会生活を変えています。人工知能技術は...