非接触ユーザインターフェースの研究 インテル RealSense3D カメラを用

平成 27 年度 卒業研究中間レポート
非接触ユーザインターフェースの研究
インテル RealSense3D カメラを用いた認証システム
近畿大学工学部 情報システム工学科
1210960071 松原侑幹
1
目次
1. 研究の背景と目的
2. 研究を行う上で学んだ知識
2.1. インテル® RealSense™ 3D カメラ
2.1.1. 高度なデプスカメラを搭載した 3D カメラ
2.1.2. 自然言語認識に対応した Dragon Assistant
2.2. 顔認識システム
2.2.1. 幾何学的方法
2.2.2. 統計的方法
2.2.3. 従来の 2 次元顔認識の問題点
2.2.4. 3 次元顔認識
2.2.5. 顔認識システムの活用
2.3. 音声認識
2.3.1. 統計的手法
2.3.2. 隠れマルコフモデル
2.3.3. 音声認識システムの現状
2.4. 開発言語
2.4.1. C#
2.4.2. .NET Framework
2.4.3. Visual Studio
2.4.4. JavaScript
3. 研究の進捗状況
4. 研究計画・役割分担
参考文献・引用一覧
2
1. 研究の背景と目的
現在,日常的にインターネットを利用している時代だが,子供から老人までが情報化社会で安
心できるサービスを享受するためには,確たる社会的基盤が必要である.それは,信頼できる堅
実なネットワークとその中で信用できる情報の流通,特に確実な個人識別と本人認証の技術と仕
組みが必要である.
個人識別とは,ある母集団の中で特定の主体をほかの主体と区別するもので,本人認証とは,
識別された一人の個人をあらかじめ認証情報として登録された情報と 1 対 1 で照合し,本人であ
ることを確認することであり,それぞれ区別性,正当性を意味している.
相手が誰であるかを正しく識別し間違いなく本人であることを認証することは,情報セキュリ
ティの出発点であると言える.そのためネット社会における安心で安全な環境は,「個人識別と
本人認証」と言う基本機能が十分その役割を果たすことが前提になっている.[1]
私たちの安全な社会生活を阻害するほとんどの不法行為は,どこかで個人識別と本人認証が十
分かつ安全に行われないことに起因して,なりすましや本人詐称などが行われてしまうことにあ
る.本研究では,この不法行為を排除するべく顔認証・音声認証によって,個人識別し本人認証
を行うシステムの構築を目指す.
本研究では,高度なデプスカメラと 2 つのマイクを搭載したインテル社の RealSense3D カメラ
を用いて,実用性のある非接触ユーザインターフェースの研究を行う.RealSense3D カメラは,
指先のジェスチャー認識に留まらず,顔認証や音声認証が可能であるため,認証によるセキュリ
ティシステムとしての活用が可能であると考えた.
2. 研究を行う上で学んだ知識
本章では,今後研究を行うに当たって,必要だと考えられる知識と習得したことを記述する.
2.1. インテル® RealSense™ 3D カメラ
近年コンピュータの操作方法は,キーボード入力とマウス操作に画面のタッチ操作が加わった
が,これらは全て平らな画面を操作するに留まっていた.
この現状を打開するのが RealSense である.RealSense は 2 次元の世界に奥行きを追加した 3 次
元(3D)の世界を実現している.RealSense により,コンピュータは画面の前にしがみ付いて操作
する必要が無くなり,デバイスがヒトの動きを認識して操作する.
図 1 インテル® RealSense™ 3D カメラ
2.1.1. 高度なデプスカメラを搭載した 3D カメラ
フル HD (1080p) に対応し,クラス最高の深度センサーを備えたこのカメラは,PC とタブレッ
トの 3D ビジョンに没入感の高い新たな体験をもたらす.顔認識,エモーション・トラッキング,
3D スキャン,背景抽出,10 本指対応のフィンガージェスチャー認識を使って,より直感的にデ
バイスを操作し,俊敏なコントロールを実現できる.[2]
3
2.1.2. 自然言語認識に対応した Dragon Assistant
Dragon Assistant は,インテル® RealSense™ テクノロジー向けに設計された対話方式のパーソ
ナル音声アシストである.Dragon Assistant は,気軽に自分の声で直感的に話かけるだけで,デバ
イスをコントロールする便利さと自由を楽むことができる.多くの一般的なデスクトップ・アプ
リケーションや Web サイトにシームレスに対応することが可能である.[2]
2.2. 顔認識システム
デジタル画像から人を自動的に識別するためのコンピュータ用アプリケーションである.ライ
ブ画像内の顔と思われる部分を抜き出し,顔面の画像データベースと比較することで識別を行う.
顔認識を行う方法は,大まかに 2 種類に分類できる.
2.2.1. 幾何学的方法
見た目の特徴を直接,幾何学的に比較する方法.目立つ特徴を抽出することで識別する.[3]
例えば,顔のパーツの相対位置(比率)や大きさ,目や鼻やほお骨やあごの形を特徴として利
用する,そのような特徴を使い,一致する特徴のある画像を検索して識別する.
2.2.2. 統計的方法
画像を統計的に数値化して,その数値をテンプレートと比較する方法.
多数の顔画像から標準化したデータを作り,個々の顔画像はその標準データとの差分だけに圧
縮し,顔認識に必要なデータだけを残す.対象画像はこれらの顔データと比較して識別する.[3]
2.2.3. 従来の 2 次元顔認識の問題点
 顔認識は完全ではなく,条件が整わないと認識率が低くなる.
 顔認識は真正面から顔を捉えるのを基本とし,そこから 20 度までは何とか認識できるが,
それ以上横向きになると問題が生じる.
 画面が暗い場合,サングラスをかけている場合,髪が伸びている場合,何かで顔の一部が
隠れている場合,解像度が低い場合などに認識率が極めて低くなる。
 表情が変わると認識できないことが多い.
しかしこれらの従来の 2 次元顔認識の問題点は,近年になり 3 次元顔認識の開発によって,改
善されつつある.さらに技術の進展で解像度も日に日に高くなっている.
2.2.4. 3 次元顔認識
 2 次元顔認識で問題となる照明の違い,表情の違い,化粧の有無,頭の向きの違いなどに
も対応可能である.
 頭の向きを既知の画像に合わせて変形させることで,従来の 2 次元のデータベースとの照
合の精度を向上させる.
 画像の明るさに左右されにくい.
 様々な角度のからの顔画像であっても認識できる.
2.2.5. 顔認識システムの活用
皮膚の見た目の詳細を顔認識に応用するという傾向がある.画像からしわやしみを特定して数
値化するものである.これを「Skin texture analysis」と呼び,顔認識に利用した場合には従来の
20%~25%認識率が向上したという報告もある.[3]
2.3. 音声認識
人間の声などをコンピュータに認識させることであり,話し言葉を文字列に変換したり,ある
いは音声の特徴をとらえて声を出している人を識別する機能.
4
2.3.1. 統計的手法
音声認識システムに最も多く用いられる手法で,大量の発話を記録したデータから音声の特徴
を蓄積し,認識対象となる入力音声から抽出された特徴と蓄積された特徴とを比較しながら,最
も近い言語系列を認識結果として出力する手法.[4]
2.3.2. 隠れマルコフモデル
隠れマルコフモデルは現在,ほとんど全ての音声認識システムに応用されている考え方であり,
統計データを元に確率的にデータを扱う.
例えば,『あ』という音にもばらつきがあり,典型的な『あ』からかなり崩れた『あ』までさ
まざまなバリエーションがある.たくさんの『あ』を集めて,平均的な『あ』からどれくらい離
れているのかを識別する考え方.
2.3.3. 音声認識システムの現状
現在,音声認識システムの日本語の認識率は 80%で,欧米系の言語では 90%の認識率である.
日本語が欧米系の言語に比べて認識率が低いことには,日本語には同音異義語が多いことが考え
られる.(例:『たいしょう』 対 称、対 照、対 象 等)
また音声認識を利用した技術として,「感性制御技術」と組み合わせることにより,声の状態
から感情やストレスを理解する技術などが開発されている.
例:口先だけで軽く言った「ごめんなさい」(バカにしている態度)
ゆっくり丁寧に発音された「ごめんなさい」(心からの謝辞)
以上のことから,莫大な音声データを自分で作ることは不可能なので,すでに標準化された音
声データを見つけなければ,卒業研究には活用できないと考えた.
2.4. 開発言語
RealSense の開発は, Visual Studio2013 で C#を用いて行う.
C#を勉強する前に学習した JavaScript についても記述する.
2.4.1. C#
C#は,マイクロソフトが開発したプログラム言語である.マイクロソフトが提唱する.NET 構
想の中核となるプログラム言語ということで注目を浴びている.技術的な面から見ると,C++の
一種の進化形であると同時に,Java の影響を大きく受けている言語と言える.
基本的に C#でプログラムを作成する場合には,コンパイラでソースコードをコンパイルして
から実行するが,コンパイラによって生成されるプログラムは,直接アセンブラに変換されるわ
けではない.C#のコンパイラは,.NET Framework と呼ばれる実行環境の上でプログラムが実行
できるように,ソースコードをコンパイルする..NET Framework とは,一種の実行環境であり,
クラス・ライブラリを持つ.[5]実際にプログラミングする場合には,.NET Framework のクラ
ス・ライブラリを活用しながらソースコードを記述することになる.そのため,C#という言語に
ついて知るのと同じぐらい,クラス・ライブラリについて知ることも重要である.
2.4.2. .NET Framework
.NET Framework は,マイクロソフトが開発したアプリケーション開発,実行環境である.
C#のプログラムをコンパイルし,実行するということは,一旦このフレームワーク上で動作す
る CIL(Common Language Infrastructure:共通言語基盤)と呼ばれる独自の中間言語に変換し,そ
の中間言語をインタープリターで変換しながら逐次実行していくという仕組みにほかならない.
つまり C#言語は,コンパイラ型の言語と,インタープリター型の言語という 2 つの側面を持っ
ている.この方法のメリットは,.NET 対応のアプリケーションソフトは.NET Framework が存在
する環境なら機種や OS の違いなどに拠らず同じように動作させるという点にある.従来のマイ
クロソフトの言語は,マイクロソフトの OS が必要でしたが,これにより C#は,OS の違いを超
えて,様々な領域で利用可能になった.[6]
5
図 2 .NET Framework におけるコードの流れ[6]
2.4.3. Visual Studio
Visual Studio は,マイクロソフトによる.NET 構想の開発ツールとして位置づけられるものであ
る. Microsoft Visual Studio はマイクロソフトのソフトウェア開発製品群およびそれらを管理す
る統合開発環境である.本研究では,Visual Studio2013 を使用する.
2.4.4. JavaScript
JavaScript は,Web ページにインタラクティブな機能を追加したり,Web ブラウザの機能を拡
張したりすることを目的として,開発されたプログラミング言語である.
プログラミング言語とは,コンピュータで処理を行うための命令(プログラム)を記述するた
めの人工的な言語である.
プログラミング言語で記述した状態のプログラムをソースコードというが,コンピュータが理
解できるのは機械語という専門の言語だけである.そのためプログラムを実行するためには,
ソースコードを機械語に変換する必要がある.
ソースコードを変換し,プログラムを実行する方法はコンパイラ方式とインタープリタ方式の
2 つに分けられる.
 コンパイラ方式
「コンパイラ」というプログラムを使って,あらかじめソースコード全体を機械語に変換(コ
ンパイル)してからプログラムを実行する.プログラムの開発に手間がかかるが,完成したプロ
グラムは高速で実行できる.
 インタープリタ方式
「インタープリタ」というプログラムを使って,ソースコードを 1 行ずつ変換しながらプログ
ラムを実行する.プログラムの開発は比較的容易だが,完成したプログラムはあまり高速では実
行できない.
従来 JavaScript はインタープリタ方式で実行されてきた.しかし,近年では Web ブラウザなど
に JavaScript 用のコンパイラが搭載されるようになり,プログラム実行の高速化が図られている.
6
また,HTML 文章の中に JavaScript のプログラムを直接記述すると,手軽に動作確認や修正を
行うことができる.しかし,この方法では同じファイル中に HTML と JavaScript が混在するため,
プログラムの行数が増えると内容が分かりにくくなる.
さらに,複数の HTML 文章で同じ JavaScript のプログラムを利用している場合は,プログラム
の一部を修正する度にすべての HTML 文章を編集する必要が生じてしまう.これでは,大規模
なプログラムを開発する場合などには効率が悪くなる.
このような問題を解決するためには,JavaScript の部分を別ファイル(外部ファイル)として
作成しておき,それを HTML ファイルに読み込む方法が便利である.作成する外部ファイルに
は JavaScript のプログラムのみを記述して,.js という拡張子で保存する.HTML ファイルから外
部ファイルの JavaScript プログラムを読み込むという手法は,大規模なプログラムを開発する場
合に効率のよい方法である.
3. 研究の進捗状況
本研究を行う上でまず始めに,RealSense SDK をダウンロードする.
ここで注意すべきことは,初期ダウンロードの段階で音声認識用に日本語用の辞書にチェック
を入れておくことである.この設定をしておくことで,後の研究がスムーズに進むからである.
図 3 RealSense SDK
次に,F200 Depth Camera Manager をインストールする.これをインストールしないと,デプス
画を取得できない.
上記の 2 つをインストールし,Capture Viewer を起動する.Capture Viewer は RGB,Depth,IR
の解像度,フレームレートを選択して表示するアプリである.起動すると認識しているカメラが
表示されて,カメラ画像,デプス画像,赤外線画像を取得することが可能となる.
7
図 4 Capture Viewer
SDK の構成としては,I/O やマルチモーダルな NUI 認識アルゴリズムのレイヤが最下層にあり,
その上に C#による SDK のインターフェースレイヤがある.ユーザは,この SDK のレイヤを直接
触るか,別の言語へのバインディングを通じて利用する形である.[7]
図 5 SDK の構成 [7]
次に参考文献[8]のサンプルプログラムから,顔の輪郭や目,口,鼻の中心や両端といった顔の
特徴的な部位の位置(特徴点,ランドマーク)78 点の二次元座標を取得する.
実行結果のカメラ画像では,顔のそれぞれの特徴位置を示す場所に,予め割り当てられた番号
が表示される.以下の画像が実行結果である.顔の特徴点に赤く数字が割り当てられている.
8
図 6 78 点の特徴点 図 7 78 点の特徴点(メガネあり)
複数の人物がカメラに映っても,人数分の特徴点を割り当てることが可能である.また,眼鏡
をかけた状態でも正確に特徴点を割り当てる.
特徴点の動きから,眉や口の形や状態の変化を計測することで,カメラに写った人の顔の表情
を検出することが可能である.
今後,本研究はこの特徴点を取得するプログラムを基盤とし,取得した特徴点の座標をもとに
表情の検出や個人識別の判定を目指していく.
4. 研究計画・役割分担
8 月に大阪で行われる近畿大学オープンキャンパスで高校生に非接触ユーザインターフェース
を体験してもらうことを目的とした『笑顔度ランキング』を作成する.これは,カメラで笑顔を
撮影し,その撮影した笑顔が RealSense で評価すると何%の笑顔であるかを表示して,撮影した
人たちの笑顔の評価(%)が高い順にランキングされていくシステムを目指す.
本研究は,松原侑幹と西健太の 2 名で行っている.『笑顔度ランキング』を二人で制作・実演
した後は,松原は顔認証による個人識別や表情の検出,西はジェスチャー認識やデプスカメラを
利用した実用性のあるシステムの構築を目指す.
4 月 JavaScript を学習
5 月 卒業研究のテーマを決定,研究に必要な知識・技術を学習
6 月 研究の環境を構築
7 月 顔認証のプログラムを学習
8 月 大阪オープンキャンパスで実演する『笑顔度ランキング』を制作
9 月 音声認証のプログラムを学習
10 月~12 月 顔認証と音声認証を利用してセキュリティシステムを制作
1 月 システムのテスト
2 月 卒業論文を作成
3 月 卒業研究の発表
9
参考文献・引用一覧
[1]ネット社会と本人認証 ―原理から応用まで―
<著者> 板倉征男,外川政夫
[2] インテル® RealSense™テクノロジー
http://www.intel.co.jp/content/www/jp/ja/architecture-and-technology/realsense-overview.html
[3] 顔認識システム-Wikipedia
https://ja.wikipedia.org/wiki/%E9%A1%94%E8%AA%8D%E8%AD
%98%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0
[4] 音声認識-Wikipedia
https://ja.wikipedia.org/wiki/%E9%9F%B3%E5%A3%B0%E8%AA%8D%E8%AD%98
[5] @IT:連載 C#入門
http://www.atmarkit.co.jp/fdotnet/csharp_abc/index/
[6] 一週間で身につく C#言語の基本
http://csharp.sevendays-study.com/day0.html
[7] 凹み Tips
http://tips.hecomi.com/entry/2015/02/25/030422
[8] Intel RealSense SDK センサープログラミング
<著者> 中村薫,前本知志,斎藤裕佑,谷口直嗣,初音玲
10