ホームページ >ウェブフロントエンド >jsチュートリアル >FACE-API.jsを使用したWeb上の顔検出
Webブラウザーはますます強力になっており、WebサイトやWebアプリケーションの複雑さも増加しています。スーパーコンピューターが数十年前に行う必要があることは、1つのスマートフォンでできるようになりました。顔の検出はその1つです。
顔の検出と分析機能は、巧妙な機能を追加できるため、非常に便利です。顔(Google Mapsなど)の自動的にぼやけた顔(Microsoftチームなど)に焦点を当て、パスポートの検証、楽しいフィルター(InstagramやSnapchatなど)の追加、および多機能を自動的にぼやけしてズームして、Webカメラの画像をズームしてズームしてください。しかし、これらすべてを行う前に、最初に顔を見つける必要があります!
FACE-API.JSは、開発者が機械学習の背景なしにアプリケーションで顔検出を使用できるようにするライブラリです。
このチュートリアルのコードは、githubで見つけることができます。キーポイント
face-api.jsが生まれました。これは、直感的なAPIですべてをカプセル化します。 IMG、キャンバス、またはビデオDOM要素に合格すると、ライブラリは1つまたは一連の結果を返します。 FACE-API.JSは、以下に示すように、顔を検出し、顔のさまざまな機能を推定できます。
このコンテンツを実験以外で使用する前に、AIはバイアスの増幅に優れていることに注意してください。性別分類は、シスジェンダーの人々にとってうまく機能しますが、私の非バイナリの友人の性別を検出することはできません。ほとんどの場合、白人を認識しますが、多くの場合、色の人を検出できません。
このテクノロジーを使用する場合は非常に注意し、多様なテストチームを使用して徹底的なテストを行います。
npm:
からface-api.jsをインストールできます<code>npm install face-api.js </code>ただし、ビルドツールのセットアップをスキップするには、unpkg.orgを介してUMDパッケージを含めます:
その後、ライブラリのリポジトリから正しい前提型モデルをダウンロードする必要があります。顔から知りたいことを決定し、利用可能なモデルセクションを使用して、必要なモデルを決定します。一部の機能では、複数のモデルを使用できます。この場合、帯域幅/パフォーマンスと精度を選択する必要があります。利用可能なさまざまなモデルのファイルサイズを比較し、プロジェクトに最適だと思われるモデルを選択します。
<code>/* globals faceapi */ import 'https://unpkg.com/face-api.js@0.22.2/dist/face-api.min.js'; </code>
使用するために必要なモデルがわかりませんか?後でこのステップに戻ることができます。必要なモデルをロードせずにAPIを使用すると、エラーがスローされ、ライブラリが期待するモデルを示します。
face-api.js APIを使用できるようになりました。
例
次の例では、この関数を使用して、Unsplashからランダムイメージをロードします。ソース:
トリミングされた写真
<code>function loadRandomImage() { const image = new Image(); image.crossOrigin = true; return new Promise((resolve, reject) => { image.addEventListener('error', (error) => reject(error)); image.addEventListener('load', () => resolve(image)); image.src = 'https://source.unsplash.com/512x512/?face,friends'; }); } </code>このデモのコードは、付属のgithubリポジトリに見つけることができます。
最初に、モデルを選択してロードする必要があります。画像をトリミングするには、顔の境界ボックスを知る必要があるため、顔の検出で十分です。これは、SSD MobileNet V1モデル(6MB未満)と小さな顔検出器モデル(遅い200kb)の2つのモデルで行うことができます。ユーザーも手動でトリミングできるため、精度は無関係であると仮定します。また、訪問者がこの機能を遅いインターネット接続で使用していると仮定しましょう。帯域幅とパフォーマンスに焦点を当てているため、小さな小さなフェイス検出器モデルを選択します。 モデルをダウンロードした後、ロードできます: 画像をロードして、face-api.jsに渡すことができます。 FACEAPI.DETECTALLFACESはデフォルトでSSD MobileNet V1モデルを使用するため、新しいFACEAPI.TINYFACEDETECTOROPTIONS()を明示的に通過させる必要があります。 変数面には結果配列が含まれるようになりました。各結果にはボックスとスコア属性があります。スコアは、ニューラルネットワークが実際に顔にあるという自信の程度を示します。ボックス属性には、顔座標のオブジェクトが含まれています。最初の結果を選択できます(またはfaceapi.detectsingleface()を使用できます)が、ユーザーがグループ写真を提出する場合は、トリミングされた画像のすべての顔を確認する必要があります。これを行うには、カスタム境界ボックスを計算できます。
少し楽しいのはなぜですか?すべての目に口の絵文字(?)を置くフィルターを作ることができます。目の特徴ポイントを見つけるには、別のモデルが必要です。今回は、精度が懸念されるため、SSD MobileNet V1および68ポイントのフェイスフィーチャポイント検出モデルを使用します。 同様に、最初にモデルと画像をロードする必要があります。
機能ポイントを取得するには、withfacelandmarks()function callをDetectallfaces()に追加する必要があります。
今、写真に絵文字を描き始めることができます。両目でこれを行う必要があるため、feature.eyeleftとfeature.eyerightを配列に入れて、各目の同じコードを実行するためにそれらを繰り返すことができます。残っているのは、絵文字をキャンバスに引き寄せることです! フォントサイズと正確なテキスト位置を調整するためにいくつかのマジック番号を使用したことに注意してください。絵文字はユニコードであり、ウェブ上のタイポグラフィは奇妙であるため(少なくとも私にとっては)、数字がほぼ同じになるまで調整します。より強力な選択肢は、画像をオーバーレイとして使用することです。 face-api.jsは、顔の検出と認識を本当にアクセスできる素晴らしいライブラリです。機械学習やニューラルネットワークに精通する必要はありません。機能を有効にしているツールが大好きです。これは間違いなくその1つです。
FACE API.js Face API.jsをインストールするには、NPMまたはYARNを使用できます。インストールしたら、ライブラリをプロジェクトにインポートし、APIの使用を開始できます。このライブラリは、あなたを始めるための包括的な例とチュートリアルを提供します。 はい、フェイスAPI.jsは、リアルタイムの顔の検出と認識に使用できます。このライブラリは、ビデオストリームを処理し、顔をリアルタイムで検出または認識できるAPIを提供します。これにより、監視、ビデオ会議、インタラクティブなインストールなどのアプリケーションに適しています。
<code>npm install face-api.js
</code>
<code>/* globals faceapi */
import 'https://unpkg.com/face-api.js@0.22.2/dist/face-api.min.js';
</code>
<code>function loadRandomImage() {
const image = new Image();
image.crossOrigin = true;
return new Promise((resolve, reject) => {
image.addEventListener('error', (error) => reject(error));
image.addEventListener('load', () => resolve(image));
image.src = 'https://source.unsplash.com/512x512/?face,friends';
});
}
</code>
最後に、キャンバスを作成して結果を表示できます。
<code>await faceapi.nets.tinyFaceDetector.loadFromUri('/models');
</code>
emoji
このデモのコードは、付属のgithubリポジトリに見つけることができます。 <code>const image = await loadRandomImage();
const faces = await faceapi.detectAllFaces(image, new faceapi.TinyFaceDetectorOptions());
</code>
<code>npm install face-api.js
</code>
<code>/* globals faceapi */
import 'https://unpkg.com/face-api.js@0.22.2/dist/face-api.min.js';
</code>
要約
FAQ(FAQ)
Face API.jsとは何ですか?それはどのように機能しますか?
Face API.jsは、Tensorflow.jsを使用して、ブラウザで顔の検出、顔認識、フェイスフィーチャポイント検出を実行するJavaScriptライブラリです。機械学習モデルを使用して、画像またはライブビデオストリームの顔を検出および認識します。ライブラリは、開発者が画像内のすべての顔を検出し、特定の人の顔を識別し、目、鼻、口などの顔の特徴を特定するなどのタスクを実行できるようにするAPIを提供します。
私のプロジェクトにFace API.jsをインストールして使用する方法は?
フェイスAPI.jsは、リアルタイムの顔の検出と認識に使用できますか?
Face API.jsを使用するためのシステム要件は何ですか?
Face API.jsには、WebGLとWebAssemblyをサポートする最新のブラウザが必要です。また、顔の検出と認識は計算集約型のタスクであるため、比較的強力なCPUとGPUも必要です。ただし、正確な要件は、特定のユースケースと処理される顔の数に依存します。
顔API.jsの精度は、入力画像またはビデオの品質、照明条件、顔の姿勢など、いくつかの要因に依存します。ただし、ライブラリは大規模なデータセットで訓練された最新の機械学習モデルを使用するため、ほとんどの条件で高精度を達成できます。
はい、Face API.jsは、さまざまな照明条件や姿勢で顔を検出して認識できます。ただし、すべての機械学習モデルと同様に、そのパフォーマンスは極端な照明条件や異常な姿勢の影響を受ける可能性があります。
はい、Face API.jsはオープンソースであり、個人および商業プロジェクトに使用できます。ただし、商業プロジェクトでオープンソースライブラリを使用する前に、ライセンス条件を確認するのが最善です。
Face API.JSのパフォーマンスを改善する方法はいくつかあります。 1つの方法は、たとえば解像度を減らしたり、グレースケールに変換したりするなどして、入力画像またはビデオを最適化することです。別の方法は、顔の検出および認識アルゴリズムのパラメーターを微調整することです。
はい、Face API.jsは、同じ画像またはビデオで複数の顔を検出および認識できます。このライブラリは、検出されたフェイスアレイを返すAPIを提供し、それぞれに独自の境界ボックスと認識の結果があります。
はい、Face API.jsは、JavaScriptライブラリまたはフレームワークで使用できます。柔軟で既存のプロジェクトに統合しやすくなるように設計されています。
以上がFACE-API.jsを使用したWeb上の顔検出の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。