Github: https://github.com/mil-tokyo/webdnn
WebDNN:Webブラウザ上での最速のDNN実行フレームワーク
WebDNNは、Webブラウザ上でディープニューラルネットワーク(DNN)事前トレーニングモデルを実行するためのオープンソースソフトウェアフレームワークです。
WebDNNは、Webブラウザ上の深い学習フレームワークに従ってトレーニングされたDNNモデルを実行できます。
- TensorFlow ( v1.2.0 –
v1.4.0
) -
v2.1.3
(v2.1.3
– ) - PyTorch (
v0.3.0
) - チェーンャー (
v1.23.0
–v3.1.0
) - カフェ
WebDNNはなぜ必要なのですか?
ディープニューラルネットワーク(DNN)は、多くのアプリケーションで使用することに大きな注目を集めています。 しかし、多くの計算資源が必要であり、GPGPUなどの実行環境に基づくハードウェアアクセラレーションを設定するには膨大な処理が必要です。 したがって、エンドユーザにDNNアプリケーションを提供することは非常に困難です。
WebDNNは、 Webブラウザをインストール不要のDNN実行フレームワークとして使用することで、この問題を解決します。 このフレームワークは、訓練されたDNNモデルをモデルデータを圧縮し、実行を加速するように最適化し、WebAssemblyやWebGPUなどの新しいJavaScript APIを使用してゼロオーバーヘッド実行を実現します。 実証的評価では、200倍以上の加速を達成しました。
パフォーマンス
- Keras.jsとの処理時間の比較
- テスト環境:
- Mac Book Pro 2015年初頭
- macOS 10.12.4 Sierra
- Intel Core i5 2.7 GHz CPU
- 16 GBのメモリ
- Intel Iris Graphics 6100 GPU
- Safariテクノロジープレビュー30
- モデル:VGG16 [1] 、Inception-v3 [4] 、ResNet50 [2] 。
- 入力シェイプ:インセプションの場合は
(1, 224, 224, 3)
1,229,29,3(1, 224, 224, 3)
、他の場合は(1, 224, 224, 3)
1、224、224、3(1, 224, 224, 3)
。
1画像あたりの経過時間を縦軸に対数目盛で示す。
WebGPUバックエンドを持つWebDNNはKeras.jsよりも大幅に高速でした。 WebAssemblyバックエンドを持つWebDNNは、Keras.jsのGPUバックエンドと同等でした。 各DNNモデルとバックエンドで、WebDNNは速度に関してより良い結果を得ました。 最適化がグラフ・トランスバータに適用されると、速度の向上がより顕著になります。
30秒後に開始する
あなたのWebブラウザでResNet50の事前に訓練されたKerasモデル[3]を変換して実行しましょう。
まず、Kerasが提供するResNet50の事前訓練モデルを保存します。
from keras.applications import resnet50
model = resnet50.ResNet50(include_top=True, weights='imagenet')
model.save("resnet50.h5")
次に、CLIを使用してモデルを変換します。 この段階では、モデルが最適化されます。
python ./bin/convert_keras.py resnet50.h5 --input_shape '(1,224,224,3)' --out output
次に、生成されたファイル( Descriptor
と呼ばれる)は、次のようにJavaScriptによってロードされ、
let runner, image, probabilities;
async function init() {
// Initialize descriptor runner
runner = await WebDNN.load('./output');
image = runner.inputs[0];
probabilities = runner.outputs[0];
}
async function run() {
// Set the value into input variable.
image.set(await WebDNN.Image.getImageArray('./input_image.png'));
// Run
await runner.run();
// Show the result
console.log('Output', WebDNN.Math.argmax(probabilities));
}
WebDNNは、CaffemodelとChainerモデルもサポートしています。
詳細は、 ドキュメントを参照してください。
セットアップ
ドキュメントをご覧ください。
WebDNNを使用したアプリケーション/デモ
- http://make.girls.moe/#/ – MakeGirls.moe – AIでアニメキャラクターを作成!
- https://milhidaka.github.io/chainer-image-caption/ – 画像キャプションのデモを生成する
- https://github.com/milhidaka/webdnn-exercise – WebDNNの基本的な使い方の演習
- [1] Karen SimonyanとAndrew Zisserman。 大規模画像認識のための非常に深い畳み込みネットワーク。 学習表現に関する国際会議の議事録(ICLR)。
- [2] Kaiming He、Xiangyu Zhang、Shaoqing Ren、Jian Sun。 画像認識のための深い残差学習。 コンピュータビジョンとパターン認識(CVPR)に関する会議の議事録。 https://github.com/KaimingHe/deep-residual-networks
- [3] アプリケーション – Kerasドキュメント
- [4] Christian Szegedy、Vincent Vanhoucke、Sergey Ioffe、Jon Shlens、Zbigniew Wojna。 コンピュータビジョンのためのインセプションアーキテクチャの再考。 コンピュータビジョンとパターン認識(CVPR)に関する会議の議事録。