狠狠撸

狠狠撸Share a Scribd company logo
HoloLensで目論む
Augmented
Human
2018/10/13 .NET Conf 2018 Tokyo
TIS株式会社 森真吾
自己紹介
? 森真吾
? TIS株式会社 戦略技術センター(R&D部門)所属
? 会社でHoloLensやってます
? Twitter→@morio36
? Microsoft MVP for Windows Development
? 複合現実感研究委員会(SIG-MR)委員
? HoloMagicians
贬辞濒辞尝别苍蝉ミートアップやってます!次回12/15!
はじめに
Augmented
Humanってなに?
Augmented Human(AH)とは
? 東大暦本教授が提唱している考え方
※森自身は特に暦本研と接点なし
“医工学の分野では電子義足や人工内耳などの技術開発 が進
展していますが、本研究室では人間とネットワークや情報技術
との一体化に着目しています。これをオーグメンテッド?ヒューマ
ン (Augmented-Human)と呼んでいます。”
暦本研究室HPより引用
https://lab.rekimoto.org/about/
HoloLensを使って、
人間の知覚、能力を
拡張した(い)話
奥颈苍诲辞飞蝉惭尝について
WindowsMLとは 必見!
WindowsMLとは 必見!
https://www.microsoft.com/ja-jp/events/decode/2018/online/archive.aspx
WindowsMLとは
? 学習済みモデルをクライアント側で実行するためのフレームワーク
?10月上旬、RS5が公開開始し、
パッケージが
Windows.AI.MachineLearning.Preview;
から
Windows.AI.MachineLearning;
になりました!(Previewが消えた)
?とはいえまだいろいろあるので???
https://docs.microsoft.com/en-us/windows/ai/
WindowsMLとは
? 使用できるONNXバージョンに制約がある模様
?実験①下記の1.0、1.2をそれぞれインポート
https://github.com/onnx/models/tree/master/emotion_ferplus
どちらもWrapperクラスの
生成に成功!
WindowsMLとは
? 実験②下記のモデルをインポート
https://gallery.azure.ai/Model/FER-Emotion-Recognition
mlgen failed: Missing
opset in the model.
発生。
WindowsMLとは
? ONNXモデルを見てみる。下記のブラウザ版を使用。
https://github.com/lutzroeder/netron
わからなかった???
ONNXのバージョン??
HoloLensで目論むAugmented Human@.NET Conf 2018 Tokyo
HoloLens+WindowsML関連情報の取得
? HoloLensでCustom Vision Serviceを使った
オフライン推論を試した話
/TakahiroMiyaura/hololenscustom-vision-service
?HoloLensでWindowsMLを試してみる(Unity利用編)
http://akihiro-document.azurewebsites.net/post/hololens_windowsmachinelearningunity/
?「モデルを取りこんだら簡単に使えるよ」ってほど簡単でもない。
CustomVisionからエクスポートしたモデルならまだ取り扱いは楽だけど???
HoloLens+WindowsML関連情報の取得
タグと確率が返ってくるだけ
なのでわかりやすい。
HoloLensで目論むAugmented Human@.NET Conf 2018 Tokyo
HoloLensで目論むAugmented Human@.NET Conf 2018 Tokyo
HoloLensのWindowsML事情
? HoloLensはRS5公開がまだ
※2018/10/13現在
最新版(Previewじゃないやつ)を使いたければ、
InsiderPreviewの適用が必要。
http://bluebirdofoz.hatenablog.com/entry/2018/07/25/084022
なにはともあれ、础贬してみた
动画
アプリケーションの機能
?カメラに写っている人物の表情を認識
?表情に合わせた絵、エフェクトを表示
「鈍感な僕でも人の感情を把握できる!!!
これぞ人間拡張だ!!!!」
イメージはこれ
Sight - a short film by Eran May-raz and Daniel Lazo
https://www.youtube.com/watch?v=OstCyV0nOGs
関連情報
?元論文
Training Deep Networks for Facial Expression
Recognition with Crowd-Sourced Label Distribution
https://github.com/Microsoft/FERPlus
?ONNXモデル(今回、下記のONNX Version1.2を使用)
https://github.com/onnx/models/tree/master/emotion_ferplus
?参考UWPアプリ
https://github.com/ChangweiZhang/Awesome-WindowsML-ONNX-
Models
アプリ実装について
開発環境
?Unity: 2017.4.8f1
?HoloToolkit:使ってません
?Visual Studio:15.8.6(※)
?HoloLens:10.0.17134.111(RS4)
※PCはRS5に上げたが、HoloLensがRS4のままのため、
ビルドのターゲットバージョンは17134(RS4)で実施
アプリ構成
①WebCamTextureで
写真撮影
②画像を元に推論実行
③推論結果を数値化
④結果を元に画像?
エフェクト表示
<Point>
通信不要
コーディング
? 前述したホロラボ社アキヒロさんのブログが非常に有用。
モデル活用部分はだいぶコピれる。
※RS4時点での実装のため、最新環境で実装する場合には注意。
? HoloLensでWindowsMLを試してみる(Unity利用編)
http://akihiro-document.azurewebsites.net/post/hololens_windowsmachinelearningunity/
コーディング
? メイン処理は画像取得と推論処理
? この2つの処理が個別スレッドで実行され続ける
? 推論完了し、画面描画する際にUnityAPIの描画処理をコール
バッファ領域
Unity側API
WebCamTextureで取得した
カメラ画像をひたすら格納する
UWP側API
バッファに格納された画像を
ひたすら推論する。
推論完了したらバッファクリア
描画呼び出し
格納 取得
消去
Wrapperクラス
? VisualStudioで自動生成。生成用に個別PJ作った。
bind周りの処理は
アキヒロさんblog
とちょっと違う
環境の都合上、
Wrapperクラスだけは
RS4のモデルで生成
ONNX利用のための事前処理、事後処理
64x64のグレースケール
戻り値をSoftMax関数通してね
ONNX利用のための事前処理、事後処理
?事前処理で、RGB画像をモノクロ変換
http://www.noshimemo.com/entry/image-processing
?リサイズしなくても使えたからそのまま使った???
ONNX利用のための事前処理、事後処理
?事後処理で、確率算出する処理(SoftMax関数)を実装。
SoftMax関数=数値の並びを確率に変換するための関数
(機械学習界隈ではよく知られた関数のようです)
3.968127
0.02596408
-2.957808
3.576429
1.515554
-1.03024
-3.516108
-1.154131
0.556904
0.01080739
0.000546871
0.376416
0.04793373
0.003758521
0.0003129091
0.003320565
百分率に変換
neutralが
55.69%で最大
ONNX利用のための事前処理、事後処理
?Softmax関数はコピった。
https://github.com/ChangweiZhang/Awesome-WindowsML-ONNX-Models
MathF.Expだけ
UnityのAPIに変更
画面の描画まわり
?取得した推論結果を元にswitch文書いただけ。
UWPのTaskからUnityAPI叩いてるので、
UnityEngine.WSA.Application.InvokeOnAppThread内に実装。
?左上の猫の絵はいらすとや
?パーティクルはこちら(Free)
ビルド!!
?HoloLensのバージョンと「ターゲットバージョン」を合わせる
?Unity側も注意
HoloLensで目論むAugmented Human@.NET Conf 2018 Tokyo
改善案
?INPUTのリサイズすればもっと高速かつ精度上がるかも
(改善というか、必須ですね。。)
?「知りたいときに知りたいことを提示する」のがARの本質
文脈を把握してON/OFFできたらいいな。
改善案
?例えばJINS MEMEでやってみたアイトラッキングとか、
OpenCVで顔検知した時だけ流すとか。
改善案
?FaceAPIと合わせて、個人特定と表情認識して
さらにDB登録しておくとか。
?一日集計して「こんなんだったで。もうちょい笑わせよう」とか。
?ストレスチェックに使ったり?
今のHoloLensのサイズ、バッテリーでは無理。
だが、デバイスは必ず進化する!!
Augmented Humanの時代がやってくる!!
で
最初にやりたかったこと
?Tiny-YOLOで物体認識したかった。
単純にHoloにデプロイ
したところ、一瞬動い
てすぐ停止???。
モデルにもまだ
いろいろありそう。
本当に重要なこと
?ローカルで動作する
?任意のモデルを利用できる
モデルを簡単に利用できるような、
もう一枚間に入るものがあれば
ビジネスになりうるのでは?
その他、やってみたこと
de:code 2018で話したやつ
HoloLensで目論むAugmented Human@.NET Conf 2018 Tokyo
HoloLensで目論むAugmented Human@.NET Conf 2018 Tokyo
まとめ
まとめ
?WindowsMLの機能を用いて、HoloLens単体で
機械学習モデルを動かした
?実装はまだそれなりに大変???
だけど我々MVPはこういう新しいのどんどん使って
耕していきます。期待してね!
?PCはRS5、HoloLensはRS4の過渡期
?レイテンシや通信発生を気にしなくてよいのなら
AzureのAPIを使うのが楽
Let’s
Augment!!

More Related Content

HoloLensで目論むAugmented Human@.NET Conf 2018 Tokyo

Editor's Notes

  • #6: この画像を置き換えるには、画像を選んで削除します。次に、[図の挿入] アイコンを使って独自の画像に置き換えます。
  • #45: 「表情を认识できる」自体にはそこまでの価値は???
  • #52: この画像を置き換えるには、画像を選んで削除します。次に、[図の挿入] アイコンを使って独自の画像に置き換えます。