ウェブブラウザ

roboflow.jsによるエッジでのリアルタイム予測

ほとんどのビジネスアプリケーションには、 ホステッドAPI が適しています。しかし、多くの消費者向けアプリケーションや一部のエンタープライズ用途では、サーバーホスト型モデルは実用的ではありません(例えば、ユーザーが帯域幅に制約がある場合や、リモートAPIを使用するよりも低遅延が必要な場合など)。

inferencejs は、 Tensorflow.js の上に構築されたカスタムレイヤーで、Roboflowでトレーニングされたモデルを使ってJavaScriptによるリアルタイム推論を可能にします。

詳細は inferencejs リファレンス こちら

学習リソース

対応モデル

inferencejs は現在、以下のモデルアーキテクチャをサポートしています:

インストール

プロジェクトに inference を追加するには、npmでインストールするか、スクリプトタグをページの <head> タグが付与されていない画像のみが含まれます。

npm install inferencejs
<script src="https://cdn.jsdelivr.net/npm/inferencejs"></script>

初期化 inferencejs

認証

あなたの publishable_key はRoboflowのワークスペース設定から取得できます。

まず InferenceEngine をインポートし、新しい推論エンジンオブジェクトを作成します。

inferencejs はWebWorkerを利用しているため、複数のモデルをメインUIスレッドをブロックせずに利用できます。各モデルは InferenceEngine 必要なスレッド管理を抽象化したWebWorkerマネージャー経由でロードされます。

import { InferenceEngine } from "inferencejs";
const inferEngine = new InferenceEngine();

これでRoboflowからあなたの publishable_key とモデルメタデータ(モデル名とバージョン)、信頼度しきい値や重なりしきい値などの設定パラメータを使ってモデルをロードできます。

const workerId = await inferEngine.startWorker("[model name]", "[version]", "[publishable key]");

inferencejs これで選択したモデルを実行するワーカーが起動します。返されたワーカーIDは InferenceEngine で推論に使うワーカーIDと一致します。モデルで推論するには、 infer メソッドを InferenceEngine.

で呼び出します。画像を読み込んでワーカーで推論してみましょう。

const image = document.getElementById("image"); // idが`image`の画像要素を取得
const predictions = await inferEngine.infer(workerId, image); // 画像で推論

これは様々な画像フォーマット(HTMLImageElement, HTMLVideoElement, ImageBitmap、または TFJS Tensor).

)を受け付けます。これは予測の配列(この場合はクラス RFObjectDetectionPrediction )

設定

の動作をカスタマイズ・設定したい場合は、 inferencejs が予測をフィルタリングする方法を、ワーカー作成時にパラメータとして渡せます。

const configuration = {scoreThreshold: 0.5, iouThreshold: 0.5, maxNumBoxes: 20};
const workerId = await inferEngine.startWorker("[model name]", "[version]", "[publishable key]", configuration);

または推論時に設定オプションを渡すこともできます。

const configuration = {
    scoreThreshold: 0.5, 
    iouThreshold: 0.5, 
    maxNumBoxes: 20
};
const predictions = await inferEngine.infer(workerId, image, configuration);

Last updated

Was this helpful?