ブラウザ上で機械学習モデルを実行できる AI 推論ライブラリ。WebAssembly を使用して、ONNX モデルを JavaScript から直接実行できます。
ランタイムファイルを配置して、ブラウザで最初の推論を動かすまでの手順です。
ailia JS のライブラリ本体は ailia-js リポジトリで公開されています。サンプルリポジトリ ailia-models-js をクローンしてサブモジュールを初期化すると、ライブラリ (ailia.js / ailia_s.wasm / ailia_simd_s.wasm など) が取得されます。
git clone https://github.com/ailia-ai/ailia-models-js.git
cd ailia-models-js
git submodule init
git submodule update
実行環境に応じて SIMD 版と非 SIMD 版の WebAssembly バイナリが自動的に選択されます。
ライブラリ サンプルリポジトリwasm は file:// では読み込めないため、ローカルサーバーを起動してブラウザからアクセスします。顔検出 (BlazeFace) や物体検出 (YOLOX) などのサンプルをブラウザ上で実行できます。
python3 -m http.server 8080
# → http://localhost:8080 にアクセス
ビルド不要で試したい場合は、公開中のサンプルサイトからブラウザだけで動作を確認できます。
サンプルサイト Get Started チュートリアル (EN)ailia JS は WebAssembly 上で ailia の推論エンジンを動作させるため、インストール不要でブラウザネイティブに AI 推論を実行できます。
エッジ AI をブラウザへ。サーバーにデータを送らずクライアント内で推論が完結します。
ONNX モデルを読み込み、前処理・後処理コールバックを渡して推論を実行する最小サンプル。
import {Ailia} from './ailia.js';
// モジュールを初期化 (SIMD 対応を自動判定)
await Ailia.initialize();
// インスタンスを生成してモデルと重みを読み込み
const ailia = new Ailia();
ailia.loadModelAndWeights(modelFileContents, weightsFileContents);
// 前処理・後処理コールバックを定義
const preprocess = (inputBuffers) => {
inputBuffers.byIndex[0].buffer.Float32.set(inputData);
};
const postprocess = (outputBuffers) => {
return Array.from(outputBuffers.byIndex[0].buffer.Float32);
};
// 入力形状を指定して推論を実行
const result = ailia.run(preprocess, postprocess, [[1, 1, width, height]]);
// 終了時にデストラクタを呼び出し
ailia.destroy();
ailia JS についてのよくある質問。
ライブラリ本体は ailia-js リポジトリからダウンロードできます。サンプルは ailia-models-js をクローンし、git submodule init と git submodule update を実行するとライブラリごと取得できます。
対応しています。SIMD 版 (ailia_simd_s.wasm) と非 SIMD 版 (ailia_s.wasm) の 2 種類のバイナリが同梱されており、実行環境に応じて最適な方が自動的に選択されます。SIMD を有効にすると、BlazeFace の推論時間が 21ms から 8ms に短縮されます (M2 Mac / Chrome での計測)。
Windows / macOS / Android のブラウザは SIMD に対応しています。iOS も 16.4 (Safari 16.4) 以降で WebAssembly SIMD に対応しました。それ以前の iOS では非 SIMD 版が自動的に使用されます。
ONNX フォーマットのモデルに対応しています。モデル定義ファイル (.onnx.prototxt) と重みファイル (.onnx) を loadModelAndWeights() で読み込みます。ailia-models-js には BlazeFace / BlazeHand / YOLOX などのサンプルモデルが含まれており、ailia-models で公開されているモデルも利用できます。
いいえ。推論はすべてブラウザ内 (WebAssembly) で実行されるため、入力データがサーバーに送信されることはありません。ビデオチャットの背景切り抜きやマイクのノイズ除去など、プライバシーが重要な用途に適しています。
はい。ailia JS は ES6 モジュールとして提供されていますが、旧式の JavaScript からも利用できます。
評価ライセンスは開発・評価用途に利用できます。商用配布には製品ライセンスを申請してください。詳細は ailia ライセンス規約 を参照してください。
ailia Tech Blog の解説記事です。