読者です 読者をやめる 読者になる 読者になる

kon×hatena

コンピュータビジョン・パターン認識の研究をしています。聴覚障害のこと、専門のことその他もろもろを投稿していきます。

Kinectを用いた手話→日本語辞典のすすめ(案)

はじめに

こないだ,某企画に参加した時,「聴覚障害者と健聴者をつなぐ技術を考えてみよう!」というのをやりました.
そこで,提案したのは「パターン認識を用いた手話辞典」というもの.
その概要と技術について書きます.基本的にメモ代わりです.かなり適当です.
誰かつくってください.
なお,手話表現にあたり,「非手指動作」(NMS:Non-Manual Signals)も重要になりますが,
ここでは単語の意味の確認に的を絞ることにし,対象に含めません.

概要

『手和(しゅわ)辞典アプリ』
日本語から手話を検索する「手話辞典」は存在よくあるんですが,
その一方で,手話から日本語を検索するような辞典は存在しません.

※似たものは存在しますが.
SLinto.com

現時点で,手話を記述するための文字は普及しておらず,紙の辞書を用いた手話単語の検索は難しいため,
動き,手形状,位置など複数の情報を用いて検索できるアプリケーションを考えます.

使用の流れ

  1. 手話で話している人を撮影し,発話シーン内の好きな部分を手動でトリミング.
  2. トリミングされたシーンを「検索対象手話」とし,辞典に入力.
  3. パターンマッチングを用い,類似度の高い手話単語を「いくつか」ユーザに表示.

キモは,「発話シーン内の好きな部分を手動でトリミング」というところ.
通常,発話シーン内から単語を自動で切り出すのは難しいのですが,ここはユーザにやってもらいます.
※ここで選択する単語は一つだけ.

また,現時点で完全な画像からの手話認識は不可能です.
しかし,今回は辞典なので,ユーザに候補を幾つか呈示することにします.
一般的な手話認識は,出力結果が一つだけである必要がありますが,
ここでは,出力結果が複数あっても構いません.検索結果に調べたい単語が出ていれば,OKとします.

技術


ここでは,今回のコアとなる,手話認識のための技術を紹介します.
今回の識別対象は,「手形状」「動き」「位置」とします.

手領域の位置検出

Kinectを代表とした距離センサを使用します.
今回はKinectを用いることを想定します.

KinectSDKから骨格情報を取ることができるので,そこから右手,左手の位置を取得し,手領域を抽出します.
http://www.i.ci.ritsumei.ac.jp/publication/2013/20130315__mori_cvim186.pdf

手形状の識別

ここでは,上で抽出した手領域から特徴を抽出し,識別器を使って識別を行います.
手話呈示中の手形状は,1単語で変化することはあまり無かったような気がします.
*1
そこで,回転不変性を持つSIFT(あるいはSURF)を用います.
Keypoint detector

つぎに,発話シーンは連続的な画像から形成されているため,カーネル直交相互部分空間法を用いて手形状の識別を行います.
部分空間は複数の特徴ベクトルから作成することができ,複数視点の画像を用いることで強力な識別性能を発揮します.

※手形状は複数存在するため,これらのパターンを予め学習用データに登録しておいたほうが良さそうです.
全部でいくつ存在するのかは不明ですが,HamNoSysを参考に定めます.

手位置の検出

顔検出器を用い,相対的な手の相対位置を検出します.
この検出結果を用い,顔の大きさを2×2セルとし,全体にセルを張ることにします.
手領域がこのセルのどの位置にあるかを面積計算によって決定し,手の位置とします.

f:id:konkonbook:20150225160029p:plain
Sign Language Recognition using Sub-Units より)

動きの識別

あまり手の動きを細かく取ってもきりがないので,上下左右×両手の8つに注目し,シンプルに動きを取ります.
これを特徴量とし,各フレーム間から抽出して得たベクトルを用いて,カーネル直交相互部分空間法による識別を行います.
f:id:konkonbook:20150225160346p:plain
Sign Language Recognition using Sub-Units より)

手話単語の決定

手形状の識別結果,手位置の検出結果,動きの識別結果を重ねあわせ,呈示された手話単語の候補を決定します.
今回は辞書として用いるので,ある程度高い類似度を得られた手話単語をユーザに呈示します.
ユーザは呈示結果をもとに,目的となる手話単語を探すことになります.

おわりに

忘備録的なカンジでまとめました.
細かいユーザインタフェースの工夫で何とかできそうな気はします.どうでしょうか.

*1:正確な情報ではないので,誤りがあれば教えてください