2019/05/23 に公開 2232 views

このエピソードについて

@potato4d が @spring_raining にフロントエンドにおける Deep Learning の利用について聞いてみました。

ゲスト紹介

クライアントにおける DNN の活用

  • モバイルだと割とすでに普及期の印象
    • Firebase ML Kit など、クラウドとハイブリッドなものもよくある
  • Web でも段々実装が進んでいる

DNN Library for Web

  • Tensorflow.js
  • brain.js
    • https://github.com/BrainJS/brain.js
    • クライアントサイドでも学習が可能なライブラリ
      • 他が学習済みデータモデルからの推論が中心であるため差別化できる点となる
  • WebDNN
    • https://github.com/mil-tokyo/webdnn
    • 国産の DNN ライブラリ
    • 対応フォーマットが多い点が魅力(@spring_raining の場合は PyTorch を使っていたため採用)
  • ONNX.js
  • これからについて
    • すでに DNN ライブラリは出揃った上で淘汰がなされてきたような状態
    • Tensorflow vs 他の構図が崩せるかに期待

ライブラリの仕組み

  • DNN は行列計算の処理が支配的となる
    • 行列計算においては WebGL が有利であり、頻繁に使われる
    • 座標計算などのため行列の計算を効率的に処理できる GPU に任せる
  • wasm とかもある?
    • ライブラリによっては WebGL が使えない場合の fallback に wasm がある場合も
    • WebGL → WebGPU → wasm の順に出力するライブラリもある

Web における DNN 活用の実例

  • 画像認識はやっぱり多い
    • モバイルデバイスだとカメラなどを通した機能がやはり多い
    • OCR や比較系の認識など……
  • Web で探してみると、特性上カメラの利用が少ないためユニークなものもある

実運用での懸念点

  • 例えば Web フォントをクライアントサイドで生成する場合……
    • 学習モデルだけで 700MB
      • より詳細な最適化が必要
    • 生成速度はそれなり
      • 秒間数文字ペースで生成可能

今週のフロントエンドトピック

Refs

  • BGM&SE
    • 魔王魂/騒音のない世界/OtoLogic