GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

mil-tokyo

webdnn – ウェブブラウザでの最速DNN実行フレームワーク

投稿日:

ウェブブラウザでの最速DNN実行フレームワーク https://mil-tokyo.github.io/webdnn

WebDNN:Webブラウザ上での最速のDNN実行フレームワーク

WebDNNは、Webブラウザ上でディープニューラルネットワーク(DNN)事前トレーニングモデルを実行するためのオープンソースソフトウェアフレームワークです。

WebDNNは、Webブラウザ上の深い学習フレームワークに従ってトレーニングされたDNNモデルを実行できます。

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を使用したアプリケーション/デモ


  • [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)に関する会議の議事録。







-mil-tokyo
-, , , ,

執筆者: