UnityとOpenCVとDlibとARでユニティちゃんになってみた facetracking 2018
カメラだけでVtuberになれるかも!?
最終的にこんな感じになります
macのカメラだけでVtuberになれかも!?#Unity#Vtuber#ユニティちゃん
— Misaki (@MisakiSwi) 2018年2月25日
© UTJ/UCL pic.twitter.com/KSe4eXszhu
使用したアセット
OpenCV for Unity - Asset Store
Dlib FaceLandmark Detector - Asset Store
実装
ベースはDlibFaceLandmarkDetectorWithOpenCVExampleのサンプルを変えていきます。 DlibFaceLandmarkDetectorWithOpenCVExampleはDlibFaceLandmarkDetectorの中のDlibFaceLandmarkDetectorWithOpenCVExampleカスタムパッケージ?をインポートすればディレクトリができます。 DlibFaceLandmarkDetectorWithOpenCVExampleの中のARHeadExampleのARHeadExample sceneをコピーして開きます。名前は自由ですが、私はARHeadExampleUnityChanにしました。HierarchyのARObjectsの中がARで表示されるオブジェクトになります。その中にunitychan_dynamic prefabをドラックアンドドロップします。Hierarchyはこんな感じです。
スクリプトは全部チェックを外し、animatorのcontrollerはNoneにします。layerをUIに変えます。 transformを画像のように変更します。
この時点で実行するとフェイストラッキングはできます。ただ、顔のまぶたや口を動かすことはできないので、参考サイトを見てください。
動画を見てもらえばわかると思うのですがfpsがあまりでないので改善したいですね。
だいぶ雑に書いたのでわからなければ質問ください。
ライセンス © UTJ/UCL
参考サイトです
iPhoneXがなくてもアニ文字したいんだ! 【Unity×OpenCV×Dlib】 - Qiita
FaceRig無しでも中の人(二次元)になりたい!【Unity × OpenCV × Dlib × Live2D】 - Qiita
Macの内蔵カメラで、Tensorflowを使って物体検出 (SSD)してみた DeepLearning
*修正版です。
久しぶりの投稿です。なかなかブログが習慣にならない…
SSD()とは?
一般物体検出の一つで、物体の領域検出を行うアルゴリズムです。
実装
もともと、学習済みモデルがあるのはありがたいですね。
notebooksの中にこのプログラムを入れると動きます。
SSD minimal exampleのプログラムと
SSDによる物体検出を試してみた - TadaoYamaokaの日記のサンプルプログラムを使わせていただきます。
僕のmac book airだと大分ラグがひどいです。リアルタイムとはいきませんね...
ただ画像認識は高精度だと思います。
他にもYOLOなどのアルゴリズムがあるみたいなのでそちらも試してみたいです。
また、強化学習にも挑戦してみたいです。
参考サイト
RaspberryPiとOpenCVで顔認識してパフォーマンスも改善してみる - 学生エンジニア小話
TensorFlowで物体領域予測(Region Proposal)を試してみる | Workpiles
SSDによる物体検出を試してみた - TadaoYamaokaの日記
SSD: Single Shot MultiBox Detector (ECCV2016)
機械学習でロボット制御してみた(2) EV3 & TensorFlow
前回の
は2クラス識別で色を判定していましたが今回は多クラス識別で色判定を行おうと思います。そこで今回はtensorflow を使おうと思います!
本当便利でした。pythonのバージョンは3.5です。
方法
方法は前回とほとんど変わりません。
マインドストームでそれぞれの色、200個ずつデータを取ります。
↓
そのデータをmacに送る
↓
Pythonで学習プログラムを動かす
↓
学習結果をEV3のプログラムに反映させる
プログラム
分類系の問題では、評価関数で交差エントロピーを使うのが普通らしいのですが、正答率があまり上がらなかったので二乗誤差を使うと正答率が97%まで上がりました。
今回使ったファイルをgithubに上げました。是非試してみてください。
機械学習でロボット制御してみた
python,機械学習、初心者です。間違いなどあるかもしれませんがよろしくお願いします。
動機
部活でマインドストームのEV3を使ってロボット制御しています。そこで、色を検知して制御をしているのですが誤検知したり検知できなかったりするので、そこで今何かと話題の機械学習をすることにしました。
方法
色は線形分離で分けることができるので(多分)、単純パーセプトロンを使って区別をしようと思います。流石にマインドストームで学習するのは厳しいのでMacで学習をします。センサーはハイテクニック社のカラーセンサーを使います。
マインドストームでポジティブとネガティブのデータを100個取る
↓
そのデータをmacに送る
↓
Pythonで学習プログラムを動かす
↓
学習結果をEV3のプログラムに反映させる
というのが大まかなEV3で機械学習を使ったプログラムを実行する流れです。この方法なら、処理速度の心配もないと思います。
プログラム
こちらのサイトを参考にしました。
RGBで分類するので、3次元で考えます。2次元だと線で分類しますが3次元は面で分類するという考え方になります。
結果
Color | Result |
空中 | Black,Blue |
White | White |
Black | Black |
Green | Green |
Red | Red |
Yellow | Yellow |
Blue | Blue |
大体合ってますが空中でBlueが出るのは嫌なので、Negativeデータに空中のRGBを追加します。
Color | Result |
空中 | Black |
White | White |
Black | Black |
Green | Green |
Red | Red |
Yellow | Yellow |
Blue | Blue |
完璧です!
感想
すごい!が一番最初の感想です。ロボットを制御しているとWhiteとRedの間の部分の色とかも検知したい時があるので、機械学習をすればできそうな気がします。また、色だけではなく他の部分でも応用ができそうです。なので、今後は機械学習を使ったライントレースなどに挑戦したいと思います。
参考サイト
パーセプトロンの学習規則をPythonで実装 - Qiita
pythonでcsvを読む方法 - 標準ライブラリ, pandas, numpy - minus9d's diary
myThingsとunityでユニティちゃんが天気を教えてくれるものを作ってみました。
最近HoloLensなどで何かと話題なVR,AR,MRに興味を持ち、またunityとmyThingsを組み合わせたものをあまりみたことがなかったので作ってみようと思いました。
© Unity Technologies Japan/UCL
サーバーはazureを使っています。
こちらのサイトを参考にさせていただきました。
ユニティちゃんとMMD4Mecanim、MMD4Mecanim-LipSync-Pluginを使わせていただきました。
この作品はユニティちゃんライセンス条項の元に提供されています。