@potato4d が @spring_raining にフロントエンドにおける Deep Learning の利用について聞いてみました。
ゲスト紹介
- @spring_raining
- UIT室 フロントエンドエンジニア
- 修士で Deep Learning の研究
- 未踏プロジェクトの一環 で DeepGlyph 開発中
クライアントにおける DNN の活用
- モバイルだと割とすでに普及期の印象
- Firebase ML Kit など、クラウドとハイブリッドなものもよくある
- Web でも段々実装が進んでいる
DNN Library for Web
- Tensorflow.js
- https://www.tensorflow.org/js
- 言わずとしれた有名ライブラリの JavaScript 版
- Tensorflow との相互運用性が魅力
- brain.js
- https://github.com/BrainJS/brain.js
- クライアントサイドでも学習が可能なライブラリ
- 他が学習済みデータモデルからの推論が中心であるため差別化できる点となる
- WebDNN
- https://github.com/mil-tokyo/webdnn
- 国産の DNN ライブラリ
- 対応フォーマットが多い点が魅力(@spring_raining の場合は PyTorch を使っていたため採用)
- ONNX.js
- https://github.com/microsoft/onnxjs
- Microsoft 産
- 新しい DNN 用の規格の ONNX に対応
- まだ実用的ではなさそう
- これからについて
- すでに DNN ライブラリは出揃った上で淘汰がなされてきたような状態
- Tensorflow vs 他の構図が崩せるかに期待
ライブラリの仕組み
- DNN は行列計算の処理が支配的となる
- 行列計算においては WebGL が有利であり、頻繁に使われる
- 座標計算などのため行列の計算を効率的に処理できる GPU に任せる
- wasm とかもある?
- ライブラリによっては WebGL が使えない場合の fallback に wasm がある場合も
- WebGL → WebGPU → wasm の順に出力するライブラリもある
Web における DNN 活用の実例
- 画像認識はやっぱり多い
- モバイルデバイスだとカメラなどを通した機能がやはり多い
- OCR や比較系の認識など……
- Web で探してみると、特性上カメラの利用が少ないためユニークなものもある
実運用での懸念点
- 例えば Web フォントをクライアントサイドで生成する場合……
- 学習モデルだけで 700MB
- より詳細な最適化が必要
- 生成速度はそれなり
- 秒間数文字ペースで生成可能
- 学習モデルだけで 700MB
今週のフロントエンドトピック
- https://github.com/features/package-registry
- https://note.mu/treby/n/n5d1afdd2137d
- https://ngjapan.connpass.com/event/131180/