ブログ

RealTime Motion Recognizing - リアルタイム動作認識

|

滑らか感のあるリアルタイム画像処理、画像認識処理は画像の全ピクセルに対する処理を1秒間に数十回行う必要があります。
少し画像関係のプログラミングをなさったことのある方であれば画像ピクセルをすべて処理する処理を普通に行うと大変処理時間がかかることをご存知かもしれません。

そのため画像処理を高速に行うにはCPUで処理をするのでなくGPUで超並列計算を行う必要があります。

CPUとGPUの処理の違いですが、CPUはピクセルを一つ一つ順次処理をしてゆきます。
対するGPUはたくさんの小さな計算機が一斉に串刺しにするように並列処理を行います。
これがグラフィックス処理に役立ちますし、最近では機械学習などの大量データを処理する処理にも利用されています。

このGPUのプログラミングを行う言語・ツールは様々ありますが、今回はDirectXのCompute Shaderを利用しています。
このCompute ShaderによりKINECTやその他のカメラの映像をUnityでリアルタイム処理し、映像の中の動きがあった部分をいくつでも認識できるものを開発しました。
動きの認識は背景差分という方式で、あらかじめ環境に存在したもの以外の物体が現れるとそこを領域として認識します。
基本的にこの処理は60FPS、1秒間に60回以上の処理を行えるようチューニングを行っています。

この処理はどのようなところで利用されるのでしょうか?
例えばエンターテイメント分野。
最近よくあるテクノロジー系のアトラクションでは人が通路を歩くと人の位置に映像エフェクトがついてきたりしますが、その基礎処理はこの背景差分映像処理となります。
その他医療やリハビリ分野でも動きを捉えるというのは重要な処理となります。

この処理を基礎に様々なコンテンツ、システムを開発することができます。

Intel RealSense SDK 2016 R2 がリリースされました

|

最近HololensやOculus(弊社にも届きました!)など素敵なデバイスが矢継ぎ早に現れて息つく暇もないですが、その裏でIntel RealSense も着々と進化をしています。

今日は Intel RealSense SDK 2016 R2 がリリースされたので早速試してみました。

ダウンロードはこちらから。

 

わかりやすいところで PersonTracking 機能がかなりエンハンスされているので試してみました。
GestureやExpressionsの認識機能が増えているようです。

Gestureは現状指差し動作をすると指差し方向がわかるようです。

 

Expressionsのほうは感情を認識することができます。
認識できる種類は下記の通りです。

 

なお以前からあったSkeletonTrackingですが、SDKとしては下記の関節認識の準備があるようです。
ただしすべてのポイントを取得することは現状できません。

でもこれを見ると小さなKINECTになりそうな気がしますよね!

Intel RealSense SDK + Intel RealSense Camera R200を使ったデモは以前公開しています。

 

以上、Intel RealSense SDK 2016 R2 スピードレポでした!

GIGABYTEのUltra Compact PC Kitを試してみました

|

先日発売されたGIGABYTEのUltra Compact PC Kit GB-BSi7HT-6500-BW をメーカーさんにお借りできたので検証してみました。
Corei7を搭載した小型PCはUSBケーブルをそんなには伸ばせないKINECTの近くに目立たず置けるインタラクティブコンテンツ向けや組み込み的な用途に使えるのではないかと期待!

これぼくもうっかりしてたのですがKitなんですね。
なのでストレージやメモリは入っていません。
別途下記の用意が必要です。

  • SSDまたは2.5インチHDD
  • メモリー(SO-DIMM DDR4 2133MHz)
  • OS

というわけでそのままパワーオンしても、待てど暮らせど何も起きないので気を付けましょうw
ネジを緩めてふたを開けHDDとメモリをセット。OSをクリーンインストールする。起動するまでなかなか大変です。
今回は2.5インチHDDと16GBメモリ、Windows10をセットアップしました。

GPUはCPUにインテグレーションされている Intel HD Graphics 520。一応ハイフォーマンスモードに。

Unityをセットアップし、「きゃらみらー」のパフォーマンスをチェック。

CPU/GPUともになんとか総じて30FPSか。。
GTUNEとかでプレイするときのぬるぬる感はないかな。
あっちはCPU60FPS GPU200FPSくらいで動くモンスターなので、これだけ小さなPCでまあまあ普通にコンテンツ展示用途に使えるのは良いかもという感じはしますね。

KINECTの映像にComputeShaderとOpenCVを組み合わせて画像処理するものをチェック。
こちらも総じて30FPS。まあまあ、、たまに引っかかる感じがするときもあります。

こちらのプログラムは今夜耐久テストにかけてみます。発熱とかチェック。

次にRealSenseを検証。
R200のDepthを解析するプログラムを動かしてみました。こちらはVC++フルネイティブのプログラムです。

こちらは20FPS付近で動作します。30FPSに届かずか~。
とはいえこのプログラムはバックグラウンドで毎フレームごとのファイル出力や独自のボーン認識ロジックが動いているので処理量は大きいものです。

ちょっと触ってみましたが絶対的にはすごいパフォーマンスというわけではないですが、サイズが小さいというところに価値が見いだせるような気がしています。

というわけでシャッキリしませんが試用レポでした!

 

鑑(アキラ)でフィットネス

|

朝山です。本日「品テクFAN & FUN meetup (TMCNコミュ総会Vol.16)」に鑑(アキラ)を展示させてもらうことになりました。直前なんですが、鑑についてご紹介。

鑑は医療機器なんですが、フィットネスでの利用も検討されています。それでトレーナーの方とお話しながら、私自身も体の関節可動域を計測してみるのですが、結構面白いのです。

たとえば下の画像。どちらが良いバンザイだと思いますか? (笑)

 

 

 

 

写真だけでは分かりにくいですね。トレーナーの方は気が付くかもしれません。ですが、下の鑑(アキラ)で計測した関節を表示するとどのように見えるでしょうか。 

これなら分かりますでしょうか。 

 

 

 

 

もっと分かりやすく、関節の角度を表示してみます。 

左はトレーナーの佐藤さんです。佐藤さんは肩の関節の可動域が大きいです。右は弊社の未来福祉の責任者の東です。肩の関節の可動域が佐藤さんよりは狭くなっていることが分かります。同じようにバンザイできていても、肩の関節の角度は違うのです。 

肩の可動域が足りないのにどうしてバンザイできるのか。それは肩甲骨で手を持ち上げているからなのです。だから肩の関節の可動域が小さくなっていてもなかなか気が付きにくいのだと思います。肩の関節の可動域が足りなくなると、インピンジメント症候群や四十肩のような問題につながる可能性があります。ですから、日ごろから関節の若さを保つようにストレッチなどをしたほうがいいんです。 

企業のデスクワーカー向けに鑑をつかって計測して、トレーナーによって運動の指導をするという企画を計画していまして、ひとまずはシステムフレンドで試してみようかと思っています。関心がありましたら、皆さまのオフィスにも鑑を持っていきますので声をかけてください。

Multi Sensors Coraborated Scanning - 複数センサー協調センシング

|

KINECT V2は1台のPCに1台しか繋ぐことができませんが、複数のPC、複数KINECTが協調して一つの空間をセンシングするシステムを開発しました。

システム構成はこのようになっています。

設置環境はこのようになります。

オブジェクトとして置いているのは「スマクロくん」です。
かわいいですね。

この環境でシステムを起動すると、KINECTのカメラから見えるカラー映像、深度映像を元にから空間内でKINECTが設置されている位置や向きを自動計算します。
計算後のUnity内のカメラ位置・向きは正確にKINECTが設置されている位置・向きと一致します。

さらにこのシステムは複数のPCとUDP接続することでサブPC群が1台のメインPCへ自分が担当するKINECTの位置を常に通知します。
それぞれのPCは正確にリアル環境のKINECT設置位置とキャリブレーションが取れているので情報を総合することでKINECT1台ではセンシングすることができなかった死角まで正確にセンシングすることができます。

また理論上サブPCは無限に増やすことができます。

このシステムで複数のPCと複数のセンサーを設置する場合でも大まかに設置を行い、あとはシステム側が自動キャリブレーションを行ってリアル環境を仮想空間内に再現することができるようになります。

Hololens Development - ホロレンズ開発

|

一部の開発者向けにデリバリーの始まったMicrosoft HoloLens.
現実世界と仮想空間をシームレスに繋げ相互作用させるこのHoloLensで3Dキャラを床の上でダンスさせてみました。

このような映像を透過グラス型コンピュータであるHololensを装着することで見ることができます。

Hololensは開発用SDKとデバッグを実施できるエミュレーターが用意されていますので誰でも開発を始めることができます。
基本的開発フローは下記のようになります。

  1. Unityでアプリケーションを開発
  2. UWP(Universal Windows Platform)プロジェクトへ書き出す
  3. Visual Studioでビルドし、Hololensのデバイス(またはエミュレータ)へデプロイする 

Holosens開発者サイト
https://www.microsoft.com/microsoft-hololens/en-us/developers

Windows Holographic ドキュメント
https://developer.microsoft.com/en-us/windows/holographic/documentation

ページ

RSS - ブログ を購読