IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ AVITA株式会社の特許一覧

特開2024-54895情報処理装置、情報処理システム、制御プログラムおよび制御方法
<>
  • 特開-情報処理装置、情報処理システム、制御プログラムおよび制御方法 図1
  • 特開-情報処理装置、情報処理システム、制御プログラムおよび制御方法 図2
  • 特開-情報処理装置、情報処理システム、制御プログラムおよび制御方法 図3
  • 特開-情報処理装置、情報処理システム、制御プログラムおよび制御方法 図4
  • 特開-情報処理装置、情報処理システム、制御プログラムおよび制御方法 図5
  • 特開-情報処理装置、情報処理システム、制御プログラムおよび制御方法 図6
  • 特開-情報処理装置、情報処理システム、制御プログラムおよび制御方法 図7
  • 特開-情報処理装置、情報処理システム、制御プログラムおよび制御方法 図8
  • 特開-情報処理装置、情報処理システム、制御プログラムおよび制御方法 図9
  • 特開-情報処理装置、情報処理システム、制御プログラムおよび制御方法 図10
  • 特開-情報処理装置、情報処理システム、制御プログラムおよび制御方法 図11
  • 特開-情報処理装置、情報処理システム、制御プログラムおよび制御方法 図12
  • 特開-情報処理装置、情報処理システム、制御プログラムおよび制御方法 図13
  • 特開-情報処理装置、情報処理システム、制御プログラムおよび制御方法 図14
  • 特開-情報処理装置、情報処理システム、制御プログラムおよび制御方法 図15
  • 特開-情報処理装置、情報処理システム、制御プログラムおよび制御方法 図16
  • 特開-情報処理装置、情報処理システム、制御プログラムおよび制御方法 図17
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024054895
(43)【公開日】2024-04-18
(54)【発明の名称】情報処理装置、情報処理システム、制御プログラムおよび制御方法
(51)【国際特許分類】
   G06T 13/40 20110101AFI20240411BHJP
   G06T 19/00 20110101ALI20240411BHJP
   G06F 3/0481 20220101ALI20240411BHJP
【FI】
G06T13/40
G06T19/00 A
G06F3/0481
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2022161329
(22)【出願日】2022-10-06
(71)【出願人】
【識別番号】521413866
【氏名又は名称】AVITA株式会社
(74)【代理人】
【識別番号】100090181
【弁理士】
【氏名又は名称】山田 義人
(74)【代理人】
【識別番号】100168217
【弁理士】
【氏名又は名称】大村 和史
(72)【発明者】
【氏名】三上 崇志
(72)【発明者】
【氏名】石黒 浩
(72)【発明者】
【氏名】西口 昇吾
(72)【発明者】
【氏名】小栗 賢章
【テーマコード(参考)】
5B050
5E555
【Fターム(参考)】
5B050BA09
5B050BA12
5B050CA07
5B050DA04
5B050EA05
5B050EA07
5B050EA12
5B050EA13
5B050EA27
5B050FA05
5B050FA10
5E555AA04
5E555AA11
5E555AA27
5E555AA46
5E555AA61
5E555AA64
5E555BA02
5E555BA03
5E555BA05
5E555BA76
5E555BB02
5E555BB03
5E555BB05
5E555BC04
5E555BD07
5E555BE10
5E555CA24
5E555CA42
5E555CA47
5E555CB02
5E555CB64
5E555CB66
5E555CB67
5E555DA01
5E555DA21
5E555DB32
5E555DC85
5E555EA05
5E555EA07
5E555EA11
5E555EA19
5E555EA22
5E555EA23
5E555FA00
(57)【要約】      (修正有)
【課題】手動モードから自動モードに円滑に切り替えることができる情報処理装置、情報処理システム、制御プログラム及び制御方法を提供する。
【解決手段】利用者側端末が、ネットワークを介して、操作者側端末およびサーバに通信可能に接続される情報処理システムにおいて、操作者側端末(16)は、利用者と対話する操作者によって使用され、手動モードでは、カメラ(68)で撮影された撮影画像に基づいて操作者に対応するアバターの画像を生成し、アバターの画像を利用者側端末に表示する。操作者側端末は、撮影画像に基づいて、操作者の所定のジェスチャを検出すると、手動モードから自動モードに切り替えて、アバターの画像を自動で生成する。
【選択図】図3
【特許請求の範囲】
【請求項1】
利用者に応対する操作者が使用する情報処理装置であって、
前記操作者を撮影するカメラ、
手動モードにおいて、前記カメラの撮影画像に基づいて前記操作者の動きを反映した当該操作者のアバターの画像を生成するアバター画像生成手段、
前記アバター画像生成手段によって生成された前記アバターの画像を、前記利用者が使用する利用者側端末に送信する送信手段、および
前記撮影画像に基づいて前記操作者の所定の第1ジェスチャを検出した場合に、前記アバター画像生成手段に前記アバターの画像を自動で生成させる自動モードに切り替えるモード切替手段を備える、情報処理装置。
【請求項2】
前記モード切替手段は、前記自動モードにおいて、前記撮影画像に基づいて前記操作者の所定の第2ジェスチャを検出した場合に、前記アバター画像生成手段で前記撮影画像に基づいて前記操作者の動きを反映した前記アバターの画像を生成する前記手動モードに切り替える、請求項1記載の情報処理装置。
【請求項3】
前記撮影画像に基づいて現実空間のワールド座標系における前記操作者の姿勢の複数の第1特徴点を検出する第1検出手段、
前記撮影画像に基づいて第1のローカル座標系における前記操作者の左手および右手の各々の複数の第2特徴点を検出する第2検出手段、
前記撮影画像に基づいて第2のローカル座標系における少なくとも前記操作者の左目または右目の虹彩の複数の第3特徴点および当該虹彩の横幅を検出する第3検出手段、
前記第2検出手段によって検出された複数の第2特徴点に基づいて、前記撮影画像における前記操作者の左手および右手の各々の手のひらの長さである第1長さを算出する第1算出手段、
前記第3検出手段によって検出された前記操作者の左目または右目の虹彩の横幅に対する前記第1算出手段によって算出された前記操作者の左手および右手の各々の手のひらの第1長さの比率である第1比率と、人間の虹彩の標準の横幅である標準幅に対する人間の手のひらの標準の長さである標準長さの比率である第2比率とに基づいて、前記操作者の左目または右目の位置に対する前記操作者の左手および右手の各々の奥行き方向の位置を算出する第2算出手段、
前記第1検出手段によって検出された複数の第1特徴点と、前記第2算出手段によって算出された前記操作者の左手および右手の奥行き方向の位置とに基づいて、前記アバターを配置する仮想空間のワールド座標系における前記アバターの左手および右手の各々の3次元位置を算出する第3算出手段、
前記第2検出手段によって検出された複数の第2特徴点に基づいて、前記仮想空間のワールド座標系における前記アバターの左手および右手の各々の回転を算出する第4算出手段、および
少なくとも前記第3算出手段によって算出された前記アバターの左手および右手の各々の3次元位置と、前記第4算出手段によって算出された前記アバターの左手および右手の各々の回転に基づいて、前記アバターの左腕および右腕の各々の関節角度を算出する第5算出手段をさらに備え、
前記手動モードにおいて、前記アバター画像生成手段は、少なくとも前記第5算出手段によって算出された前記アバターの左腕および右腕の各々の関節角度を用いて前記アバターの画像を生成する、請求項2記載の情報処理装置。
【請求項4】
前記手動モードにおいて、前記第2検出手段によって検出された前記操作者の左手および右手の各々の前記複数の第2特徴点に基づいて前記所定の第1ジェスチャが有るかどうかを判断する第1判断手段をさらに備える、請求項3記載の情報処理装置。
【請求項5】
前記自動モードにおいて、前記第2検出手段によって検出された前記操作者の左手および右手の各々の前記複数の第2特徴点に基づいて前記所定の第2ジェスチャが有るかどうかを判断する第2判断手段をさらに備える、請求項3または4記載の情報処理装置。
【請求項6】
前記第3検出手段は、前記操作者の顔の複数の第4特徴点をさらに検出し、
前記手動モードにおいて、前記アバター画像生成手段は、前記複数の第4特徴点に基づいて決定される表情の前記アバターの画像を生成する、請求項3記載の情報処理装置。
【請求項7】
操作者に応対される利用者が使用する情報処理装置であって、
前記操作者を撮影した撮影画像を取得する取得手段、
手動モードにおいて、前記取得手段によって取得された撮影画像に基づいて前記操作者の動きを反映した当該操作者のアバターの画像を生成するアバター画像生成手段、
前記アバター画像生成手段によって生成された前記アバターの画像を、前記利用者が使用する利用者側端末に送信する送信手段、および
前記撮影画像に基づいて前記操作者の所定のジェスチャを検出した場合に、前記アバター画像生成手段に前記アバターの画像を自動で生成させる自動モードに切り替えるモード切替手段を備える、情報処理装置。
【請求項8】
情報処理システムであって、
利用者に応対する操作者が使用する情報処理装置は、
前記操作者を撮影するカメラ、
手動モードにおいて、前記カメラの撮影画像に基づいて前記操作者の動きを反映した当該操作者のアバターの画像を生成するアバター画像生成手段、
前記アバター画像生成手段によって生成された前記アバターの画像を、前記利用者が使用する利用者側端末に送信する送信手段、および
前記撮影画像に基づいて前記操作者の所定のジェスチャを検出した場合に、前記アバター画像生成手段に前記アバターの画像を自動で生成させる自動モードに切り替えるモード切替手段を備え、
前記利用者側端末は、
前記送信手段によって送信された前記アバターの画像を受信する受信手段、および
前記受信手段によって受信された前記アバターの画像を表示する表示手段を備える、情報処理システム。
【請求項9】
利用者に応対する操作者が使用し、前記操作者を撮影するカメラを備える情報処理装置で実行される制御プログラムであって、
前記情報処理装置のプロセッサに、
手動モードにおいて、前記カメラの撮影画像に基づいて前記操作者の動きを反映した当該操作者のアバターの画像を生成するアバター画像生成ステップ、
前記アバター画像生成ステップにおいて生成した前記アバターの画像を、前記利用者が使用する利用者側端末に送信する送信ステップ、および
前記撮影画像に基づいて前記操作者の所定のジェスチャを検出した場合に、前記アバター画像生成ステップに前記アバターの画像を自動で生成させる自動モードに切り替えるモード切替ステップを実行させる、制御プログラム。
【請求項10】
利用者に応対する操作者が使用し、前記操作者を撮影するカメラを備える情報処理装置の制御方法であって、
(a)手動モードにおいて、前記カメラの撮影画像に基づいて前記操作者の動きを反映した当該操作者のアバターの画像を生成するステップ、
(b)前記ステップ(a)において生成した前記アバターの画像を、前記利用者が使用する利用者側端末に送信するステップ、および
(c)前記撮影画像に基づいて前記操作者の所定のジェスチャを検出した場合に、前記ステップ(a)に前記アバターの画像を自動で生成させる自動モードに切り替えるステップを含む、制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、情報処理装置、情報処理システム、制御プログラムおよび制御方法に関し、特にたとえば、操作者の動作に従ってまたは自動でアバターを動作させる、情報処理装置、情報処理システム、制御プログラムおよび制御方法に関する。
【背景技術】
【0002】
この種の従来の情報処理装置の一例が特許文献1に開示されている。特許文献1に開示されるコミュニケーションシステムでは、ユーザが応対端末の前で立ち止まると、チャットボットモードで応対処理が行われる。チャットボットモードが設定された状態では、ユーザの問い合わせ内容に応対する応対パターンが機械学習やルールベースを用いた抽出/分類パターン記憶部から選択される。応対パターンには、応答音声データと共に、アバターの表情(瞬きを含む)および仕草(手や腕の動き、顔の向きを含む)を制御するための座標データが含まれている。この応対パターンに応じて変化するアバターの画像が生成され、応対パターンに含まれる応答音声データに同期して、応答音声が発生される期間にアバターの口唇部を動かすリップシンク処理が行われる。
【0003】
チャットボットモードによる応対では解決されない問い合わせを行う場合、ユーザはオペレータを呼び出す。これに応じて、応対端末の応対モードがチャットボットモードからテレイグジステンスモードに切り替えられ、オペレータ端末に接続要求を送信する。テレイグジスタンスモードが設定された状態で、オペレータ端末は、オペレータの表情およびジェスチャを座標データに変換し、応答音声データと共に応対端末へ送信する。応対端末は、オペレータ端末から送られた座標データに基づいてアバターを生成することで、オペレータの表情およびジェスチャがアバターの表情および仕草に反映されたキャラクタ応対情報を生成し、ユーザに向けて表示する。この場合、オペレータの応答音声データに同期して、応答音声が発生される期間にアバターの口唇部を動かすリップシンク処理が行われる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2021-56940号
【発明の概要】
【発明が解決しようとする課題】
【0005】
上記の特許文献1のコミュニケーションシステムでは、チャットボットモードからテレイグジステンスモードに切り替えられるが、テレイグジステンスモードからチャットボットモードに切り替えられることは想定されていない。オペレータは応対中に一時的に他の作業を行いたい場合もあり、改善の余地がある。また、オペレータはユーザに応対しているため、テレイグジステンスモードからチャットボットモードに切り替える場合に、キーボード入力、ボタン操作または音声入力を行うのは、困難な状況であり、また、ユーザに違和感または不快感を与える可能性がある。
【0006】
それゆえに、この発明の主たる目的は、新規な、情報処理装置、情報処理システム、制御プログラムおよび制御方法を提供することである。
【0007】
また、この発明の他の目的は、操作者の動きを反映した手動モードからアバターを自動で動作させる自動モードに円滑に切り替えることができる、情報処理装置、情報処理システム、制御プログラムおよび制御方法を提供することである。
【課題を解決するための手段】
【0008】
第1の発明は、利用者に応対する操作者が使用する情報処理装置であって、操作者を撮影するカメラ、手動モードにおいて、カメラの撮影画像に基づいて操作者の動きを反映した当該操作者のアバターの画像を生成するアバター画像生成手段、アバター画像生成手段によって生成されたアバターの画像を、利用者が使用する利用者側端末に送信する送信手段、および撮影画像に基づいて操作者の所定の第1ジェスチャを検出した場合に、アバター画像生成手段にアバターの画像を自動で生成させる自動モードに切り替えるモード切替手段を備える、情報処理装置である。
【0009】
第2の発明は、第1の発明に従属し、モード切替手段は、自動モードにおいて、撮影画像に基づいて操作者の所定の第2ジェスチャを検出した場合に、アバター画像生成手段で撮影画像に基づいて操作者の動きを反映したアバターの画像を生成する手動モードに切り替える。
【0010】
第3の発明は、第2の発明に従属し、撮影画像に基づいて現実空間のワールド座標系における操作者の姿勢の複数の第1特徴点を検出する第1検出手段、撮影画像に基づいて第1のローカル座標系における操作者の左手および右手の各々の複数の第2特徴点を検出する第2検出手段、撮影画像に基づいて第2のローカル座標系における少なくとも操作者の左目または右目の虹彩の複数の第3特徴点および当該虹彩の横幅を検出する第3検出手段、第2検出手段によって検出された複数の第2特徴点に基づいて、撮影画像における操作者の左手および右手の各々の手のひらの長さである第1長さを算出する第1算出手段、第3検出手段によって検出された操作者の左目または右目の虹彩の横幅に対する第1算出手段によって算出された操作者の左手および右手の各々の手のひらの第1長さの比率である第1比率と、人間の虹彩の標準の横幅である標準幅に対する人間の手のひらの標準の長さである標準長さの比率である第2比率とに基づいて、操作者の左目または右目の位置に対する操作者の左手および右手の各々の奥行き方向の位置を算出する第2算出手段、第1検出手段によって検出された複数の第1特徴点と、第2算出手段によって算出された操作者の左手および右手の奥行き方向の位置とに基づいて、アバターを配置する仮想空間のワールド座標系におけるアバターの左手および右手の各々の3次元位置を算出する第3算出手段、第2検出手段によって検出された複数の第2特徴点に基づいて、仮想空間のワールド座標系におけるアバターの左手および右手の各々の回転を算出する第4算出手段、および少なくとも第3算出手段によって算出されたアバターの左手および右手の各々の3次元位置と、第4算出手段によって算出されたアバターの左手および右手の各々の回転に基づいて、アバターの左腕および右腕の各々の関節角度を算出する第5算出手段をさらに備え、手動モードにおいて、アバター画像生成手段は、少なくとも第5算出手段によって算出されたアバターの左腕および右腕の各々の関節角度を用いてアバターの画像を生成する、請求項2記載の情報処理装置である。
【0011】
第4の発明は、第3の発明に従属し、手動モードにおいて、第2検出手段によって検出された操作者の左手および右手の各々の複数の第2特徴点に基づいて所定の第1ジェスチャが有るかどうかを判断する第1判断手段をさらに備える。
【0012】
第5の発明は、第3または第4の発明に従属し、自動モードにおいて、第2検出手段によって検出された操作者の左手および右手の各々の複数の第2特徴点に基づいて所定の第2ジェスチャが有るかどうかを判断する第2判断手段をさらに備える。
【0013】
第6の発明は、第3の発明に従属し、第3検出手段は、操作者の顔の複数の第4特徴点をさらに検出し、手動モードにおいて、アバター画像生成手段は、複数の第4特徴点に基づいて決定される表情のアバターの画像を生成する。
【0014】
第7の発明は、操作者に応対される利用者が使用する情報処理装置であって、操作者を撮影した撮影画像を取得する取得手段、手動モードにおいて、取得手段によって取得された撮影画像に基づいて操作者の動きを反映した当該操作者のアバターの画像を生成するアバター画像生成手段、アバター画像生成手段によって生成されたアバターの画像を、利用者が使用する利用者側端末に送信する送信手段、および撮影画像に基づいて操作者の所定のジェスチャを検出した場合に、アバター画像生成手段にアバターの画像を自動で生成させる自動モードに切り替えるモード切替手段を備える、情報処理装置である。
【0015】
第8の発明は、情報処理システムであって、利用者に応対する操作者が使用する情報処理装置は、操作者を撮影するカメラ、手動モードにおいて、カメラの撮影画像に基づいて操作者の動きを反映した当該操作者のアバターの画像を生成するアバター画像生成手段、アバター画像生成手段によって生成されたアバターの画像を、利用者が使用する利用者側端末に送信する送信手段、および撮影画像に基づいて操作者の所定のジェスチャを検出した場合に、アバター画像生成手段にアバターの画像を自動で生成させる自動モードに切り替えるモード切替手段を備え、利用者側端末は、送信手段によって送信されたアバターの画像を受信する受信手段、および受信手段によって受信されたアバターの画像を表示する表示手段を備える、情報処理システムである。
【0016】
第9の発明は、利用者に応対する操作者が使用し、操作者を撮影するカメラを備える情報処理装置で実行される制御プログラムであって、情報処理装置のプロセッサに、手動モードにおいて、カメラの撮影画像に基づいて操作者の動きを反映した当該操作者のアバターの画像を生成するアバター画像生成ステップ、アバター画像生成ステップにおいて生成したアバターの画像を、利用者が使用する利用者側端末に送信する送信ステップ、および撮影画像に基づいて操作者の所定のジェスチャを検出した場合に、アバター画像生成ステップにアバターの画像を自動で生成させる自動モードに切り替えるモード切替ステップを実行させる、制御プログラムである。
【0017】
第10の発明は、利用者に応対する操作者が使用し、操作者を撮影するカメラを備える情報処理装置の制御方法であって、(a)手動モードにおいて、カメラの撮影画像に基づいて操作者の動きを反映した当該操作者のアバターの画像を生成するステップ、(b)ステップ(a)において生成したアバターの画像を、利用者が使用する利用者側端末に送信するステップ、および(c)撮影画像に基づいて操作者の所定のジェスチャを検出した場合に、ステップ(a)にアバターの画像を自動で生成させる自動モードに切り替えるステップを含む、制御方法である。
【発明の効果】
【0018】
この発明によれば、操作者の動きを反映した手動モードからアバターを自動で動作させる自動モードに円滑に切り替えることができる。
【0019】
この発明の上述の目的、その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【図面の簡単な説明】
【0020】
図1図1はこの発明の一実施例の情報処理システムを示す図である。
図2図2図1に示す利用者側端末の電気的な構成を示すブロック図である。
図3図3図1に示す操作者側端末の電気的な構成を示すブロック図である。
図4図4は利用者側端末の表示装置に表示されるアバター画面の一例を示す図である。
図5図5は操作者側端末で撮影された撮影画像の一例を示す図である。
図6図6は撮影画像から推測される姿勢についてのランドマークの一例を示す図である。
図7図7は撮影画像から推測される手についてのランドマークの一例を示す図である。
図8図8(A)は撮影画像から推測される顔についてのランドマークの一例を示す図であり、図8(B)は撮影画像から推測される虹彩についてのランドマークの一例を示す図である。
図9図9は操作者側端末に設けられたカメラの位置に対する操作者の目の位置および手の位置についての位置関係を現実空間の上方から見た場合の一例を説明するための図である。
図10図10は操作者側端末で撮影された撮影画像の他の例を示す図である。
図11図11図2に示す利用者側端末のRAMのメモリマップの一例を示す図である。
図12図12図3に示す操作者側端末のRAMのメモリマップの一例を示す図である。
図13図13図12に示すデータ記憶領域の具体的な内容の一例を示す図である。
図14図14図2に示す利用者側端末のCPUの制御処理の一例を示すフロー図である。
図15図15図3に示す操作者側端末のCPUの制御処理の一例を示すフロー図である。
図16図16図3に示す操作者側端末のCPUの手動モードのアバター画像生成処理の一例の一部を示すフロー図である。
図17図17図3に示す操作者側端末のCPUの手動モードのアバター画像生成処理の一例の他の一部の一部であって、図16に後続するフロー図である。
【発明を実施するための形態】
【0021】
図1を参照して、この実施例の情報処理システム10は利用者側端末12を含み、利用者側端末12は、ネットワーク14を介して、操作者側端末16およびサーバ18に通信可能に接続される。
【0022】
一例として、利用者側端末12は、サーバ18によって提供される所定のサービスを利用する利用者によって使用され、操作者側端末16は、利用者に応対する操作者によって使用される。
【0023】
利用者側端末12は、情報処理装置であり、一例として、スマートフォンであり、ブラウザ機能を備えている。ただし、利用者側端末12としては、タブレットPC、ノート型PCまたはデスクトップ型PCなどの汎用の端末を用いることもできる。
【0024】
ネットワーク14は、インターネットを含むIP網(または、IPネットワーク)と、このIP網にアクセスするためのアクセス網(または、アクセスネットワーク)とから構成される。アクセス網としては、公衆電話網、携帯電話網、有線LAN、無線LAN、CATV(Cable Television)等を用いることができる。
【0025】
操作者側端末16は、利用者側端末12とは異なる他の情報処理装置であり、一例として、ノート型PCまたはデスクトップ型PCであるが、スマートフォンまたはタブレットPCなどの汎用の端末を用いることもできる。
【0026】
サーバ18は、利用者側端末12および操作者側端末16とは異なるその他の情報処理装置であり、汎用のサーバを用いることができる。したがって、サーバ18は、CPUおよび記憶部(HDD、ROMおよびRAMを含む)を備えるとともに、通信インタフェースおよび入出力インタフェースなどのコンポーネントを備える。この実施例では、サーバ18は、所定のサービスを提供するサイトを運営したり、利用者側端末12と操作者側端末16をマッチングしたりするために設けられる。
【0027】
図2図1に示した利用者側端末12の電気的な構成を示すブロック図である。図2に示すように、利用者側端末12はCPU20を含み、CPU20は、内部バスを介して、RAM22、通信インタフェース(以下、「通信I/F」という)24および入出力インタフェース(以下、「入出力I/F」という)26に接続される。
【0028】
CPU20は、利用者側端末12の全体的な制御を司る。ただし、CPU20に代えて、CPU機能、GPU(Graphics Processing Unit)機能等の複数の機能を含むSoC(System-on-a-chip)を設けてもよい。
【0029】
RAM22は、主記憶装置であり、CPU20のワーク領域またはバッファ領域として使用される。図示は省略するが、利用者側端末12には、補助記憶装置として、HDDおよびROMが設けられる。ただし、HDDに代えて、または、HDDに加えて、SSD等の不揮発性メモリが使用されてもよい。
【0030】
通信I/F24は、CPU20の制御の下、ネットワーク14を介して、操作者側端末16およびサーバ18などの外部のコンピュータとの間で、制御信号およびデータの送受信を行うために有線インタフェースを有する。ただし、通信I/F24としては、無線LANまたはBluetooth(登録商標)等の無線インタフェースを使用することもできる。
【0031】
入出力I/F26には、入力装置28、表示装置30、マイク32およびスピーカ34が接続されている。入力装置28は、タッチパネルおよびハードウェアのボタンである。タッチパネルは、汎用のタッチパネルであり、静電容量方式、電磁誘導方式、抵抗膜方式、赤外線方式など、任意の方式のものを用いることができる。後述する操作者側端末16についても同様である。
【0032】
ただし、利用者側端末12として、ノート型PCまたはデスクトップ型PCが用いられる場合には、入力装置28として、キーボードおよびコンピュータマウスが使用される。
【0033】
また、表示装置30は、LCDまたは有機ELディスプレイである。上記のタッチパネルは、表示装置30の表示面上に設けられてもよいし、タッチパネルが表示装置30と一体的に形成されたタッチディスプレイが設けられてもよい。このことは、後述する操作者側端末16についても同様である。
【0034】
入出力I/F26は、マイク32で検出された利用者の音声をデジタルの音声データに変換してCPU20に出力するとともに、CPU20によって出力される音声データをアナログの音声信号に変換してスピーカ34から出力させる。ただし、CPU20から出力される音声データは、操作者側端末16から受信した音声データである。また、入出力I/F26は、入力装置28から入力された操作データ(または、操作情報)をCPU20に出力すると共に、CPU20の指示に従って生成された画像データを表示装置30に出力して、画像データに対応する画面または画像を表示装置30に表示させる。ただし、外部のコンピュータ(たとえば、操作者側端末16またはサーバ18)から受信した画像データがCPU20によって出力される場合もある。
【0035】
なお、図2に示す利用者側端末12の電気的な構成は一例であり、限定される必要はない。他の例では、利用者側端末12はカメラを備えていてもよい。
【0036】
また、利用者側端末12がスマートフォンである場合には、携帯電話通信網、または、携帯電話網および公衆電話網を介して、通話するための通話回路を備えるが、この実施例では、そのような通話は行わないため、図示は省略してある。このことは、後述する操作者側端末16がスマートフォンである場合についても同じである。
【0037】
図3図1に示した操作者側端末16の電気的な構成を示すブロック図である。図3に示すように、操作者側端末16はCPU50を含み、CPU50は、内部バスを介して、RAM52、通信I/F54および入出力I/F56に接続される。
【0038】
CPU50は、操作者側端末16の全体的な制御を司る。ただし、CPU50に代えて、CPU機能、GPU機能等の複数の機能を含むSoCを設けてもよい。
【0039】
RAM52は、主記憶装置であり、CPU50のワーク領域またはバッファ領域として使用される。図示は省略するが、操作者側端末16には、補助記憶装置として、HDDおよびROMが設けられる。ただし、HDDに代えて、または、HDDに加えて、SSD等の不揮発性メモリが使用されてもよい。
【0040】
通信I/F54は、CPU50の制御の下、ネットワーク14を介して、利用者側端末12およびサーバ18などの外部のコンピュータとの間で、制御信号およびデータの送受信を行うために有線インタフェースを有する。ただし、通信I/F54としては、無線LANまたはBluetooth(登録商標)等の無線インタフェースを使用することもできる。
【0041】
入出力I/F56には、入力装置58および表示装置60、マイク62およびスピーカ64が接続されている。入力装置58としては、キーボードおよびコンピュータマウスが用いられる。ただし、操作者側端末16として、スマートフォンまたはタブレットPCが用いられる場合には、入力装置58として、タッチパネルおよびハードウェアのボタンが設けられる。また、表示装置60は、LCDまたは有機ELディスプレイである。
【0042】
入出力I/F56は、マイク62で検出された操作者の音声をデジタルの音声データに変換してCPU50に出力するとともに、CPU50によって出力される音声データをアナログの音声信号に変換してスピーカ64から出力させる。ただし、この実施例では、CPU50から出力される音声データは、利用者側端末12から受信した音声データである。また、入出力I/F56は、入力装置58から入力された操作データ(または、操作情報)をCPU50に出力すると共に、CPU50の指示に従って生成された画像データを表示装置60に出力して、画像データに対応する画像を表示装置60に表示させる。
【0043】
また、操作者側端末16は、センサインタフェース(以下、「センサI/F」という)66およびカメラ68を備えている。CPU50は、バスおよびセンサI/F66を介してカメラ68に接続される。カメラ68は、CCDまたはCMOSのような撮像素子を用いたウェブカメラである。この実施例のカメラ68は深度を検出する機能を備えていない。また、操作者側端末16自体も、深度(または、距離)を検出(計測)する機能を備えていない。
【0044】
なお、図3に示す操作者側端末16の電気的な構成は一例であり、限定される必要はない。
【0045】
このような情報処理システム10では、利用者は、自身の利用者側端末12を使用して、サーバ18が提供する所定のサービスのウェブ画面を見ている場合に、操作者(オペレータ)と対話し、所定のサービスに関する問い合わせを行うことができる。
【0046】
一例として、所定のサービスは、オンラインショッピングであるが、操作者が利用者の問い合わせに対して対応(応答)することができる、任意のオンラインサービスである。
【0047】
図4は、利用者と操作者が対話する場合に、利用者側端末12の表示装置30に表示されるアバター画面100の一例を示す。アバター画面100は、所定のサービスのウェブ画面に重ねてまたはウェブ画面の一部に含んで表示されてもよいし、所定のサービスのウェブ画面に代えて表示されてもよい。ただし、ウェブ画面の一部に含んで表示される場合には、アバターの画像102のみが表示されてもよい。
【0048】
アバター画面100は操作者の分身であるアバターの画像102を含み、アバターの画像102は人間の女性を模したキャラクタの画像である。図4に示す例では、アバター画面100に表示されるアバターの画像102は、キャラクタの上半身の画像である。一例として、背景は所定の色で塗りつぶされている。
【0049】
また、アバターの画像102は、動物またはロボットを模したキャラクタ、アニメキャラクタ、ゲームキャラクタなどの画像にすることもできる。また、アバターの画像102は、キャラクタの全身についての画像でもよい。ただし、この実施例では、操作者の動作に合わせてアバターを動作させる場合があるため、人間と同様の骨格を有している必要がある。
【0050】
アバターの画像102は、所定の条件を満たす場合に表示装置30に表示される。所定の条件は、利用者が操作者の呼び出しを指示したこと、利用者の操作が第1所定時間(この実施例では、30秒)以上無いこと、当該ウェブ画面において同じ位置または似たような場所(近くの位置)を指示していること、所定のサービスにおいて複数回(たとえば、3回)同じウェブ画面に戻ってくることである。ただし、利用者が操作者の呼び出しを指示する場合を除いて、所定の条件を満たす場合には、利用者側端末12が自動的に操作者を呼び出す。
【0051】
なお、利用者または利用者側端末12が操作者を呼び出すと、そのことがサーバ18に通知され、サーバ18が操作者(操作者側端末16)をマッチングし、利用者側端末12と操作者側端末16が通信可能に接続される。
【0052】
操作者が利用者に応対し、操作者と利用者が対話中である場合には、利用者側端末12は、マイク32を通して利用者の音声を検出すると、検出した音声に対応する音声データを操作者側端末16に送信する。操作者側端末16では、受信した音声データをスピーカ64に出力する。したがって、操作者は、利用者の音声を聞くことができる。
【0053】
一方、操作者側端末16は、マイク62を通して操作者の音声を検出すると、検出した音声に対応する音声データを利用者側端末12に送信する。利用者側端末12では、受信した音声データをスピーカ34に出力する。したがって、利用者は、操作者の音声を聞くことができる。
【0054】
後述するように、操作者は男性であるため、操作者の音声を女性の声に変換して出力することもできる。また、アバターが、動物またはロボットを模したキャラクタ、アニメキャラクタ、ゲームキャラクタなどの人間以外のキャラクタである場合には、そのキャラクタの声に変換して出力することもできる。
【0055】
また、この実施例では、操作者側端末16は、操作者の動作によってアバターの動作が制御されるモード(以下、「手動モード」という)および操作者の動作によらないで自動でアバターの動作が制御されるモード(以下、「自動モード」という)の2つの動作モードを有している。
【0056】
なお、この実施例では、説明の便宜上、「自動モード」に対するモードとして、操作者の動作によってアバターの動作が制御されるモードを「手動モード」と呼んでいるが、手動モードにおいては、撮影画像に基づいてアバターの画像102が生成されるため、操作者が何らかの操作を行うことはない。
【0057】
手動モードでは、操作者の動作に合わせてアバターが動作される。つまり、操作者の動作がアバターの動作に反映される。したがって、操作者が利用者に応対し、操作者と利用者が対話している場合には、操作者の動作に合わせてアバターが動作される。また、操作者が発話する場合には、操作者の動作に合わせてアバターが動作されるとともに、操作者の音声が出力される。この場合、アバターの画像102はリップシンクされる。つまり、アバターの画像102は、操作者が発話する音声の出力に合せて、口唇部を動かされる。したがって、アバターが実際にしゃべっているように表現される。
【0058】
この実施例では、アバターの動作には、アバターの画像102の頭部、首および手を動かすだけでなく、アバターの画像102の顔の表情、瞼および口唇部を変化させることが含まれる。
【0059】
ただし、アバターの画像102の顔の表情については、所定の表情(たとえば、微笑み)に固定し、変化させないようにしてもよい。
【0060】
また、手動モードでは、利用者側端末12は、操作者を撮影した撮影画像に基づいて生成されたアバターの画像102の画像データを用いて、アバター画面100を表示(または、更新)する。アバターの画像102の画像データの生成方法については後述する。
【0061】
図4に示すアバターの画像102では、アバターは、顔を正面に向け、右手を下ろし、左肩の前に左手を挙げている。このアバターの画像102では、アバターの左手の手のひらは前(アバターの顔が向く方向)に向けられている。また、このアバターの画像102では、アバターの顔の表情は、喜びの表情すなわち笑顔である。
【0062】
図5は、利用者と操作者が対話する場合に、操作者側端末16のカメラ68で撮影された撮影画像150の一例を示す。図5に示す例では、撮影画像150は、被写体、すなわち、人間の男性である操作者の画像152を含む。図5に示す撮影画像150では、簡単のため、背景の画像は省略してある。
【0063】
図5に示すように、撮影画像150では、操作者は、顔を正面に向け、右手を下ろし、左肩の前に左手を挙げている。この撮影画像150では、操作者の左手の手のひらは前(操作者の顔が向く方向)に向けられている。また、この撮影画像150では、操作者の顔の表情は、喜びの表情すなわち笑顔である。
【0064】
図4および図5を比較して分かるように、撮影画像150における操作者の動作および顔の表情がアバターの画像102の動作および顔の表情に反映される。また、図4および図5では分かり難いが、操作者の瞼および口唇部の変化(動き)も、アバターの画像102の瞼および口唇部の変化(動き)に反映される。
【0065】
ここで、撮影画像150に基づいてアバターの画像102の画像データを生成する方法について説明する。
【0066】
この実施例では、ゲームエンジンを用いてアバターの画像102が生成(または、描画)される。ゲームエンジンとしては、ユニティ・テクノロジーズ・ジャパン株式会社が開発および提供するUnity(登録商標)が使用される。Unityは、キャラクタを描画、つまり、キャラクタの画像を生成する機能を有している。
【0067】
図4に示したように、この実施例のアバターは、人間の女性のキャラクタであって、アバターの画像102を描画するために、ゲームエンジンでは、アバターに、アバターの関節角度、アバターの手の指の関節角度およびアバターの表情パラメータが適用される。ただし、アバターの関節角度は、Hips(アバターの尻のボーン)、LeftUpperLeg(左太もものボーン)、RightUpperLeg(右太もものボーン)、LeftLowerleg(左ひざのボーン)、RightlowerLeg(右ひざのボーン)、LeftFoot(左足首のボーン)、RightFoot(右足首のボーン)、Spine(背骨の第一ボーン)、Chest(胸のボーン)、Neck(首のボーン)、Head(頭のボーン)、LeftShoulder(左肩のボーン)、RightShoulder(右肩のボーン)、LeftUpperArm(左上腕のボーン)、RightUpperArm(右上腕のボーン)、LeftLowerArm(左ひじのボーン)、RightLowerArm(右ひじのボーン)、LeftHand(左手首のボーン)、RightHand(右手首のボーン)、LeftToes(左つま先のボーン)およびRightToes(右つま先のボーン)についての角度と向きである。また、アバターの表情パラメータとは、アバターの顔の表情を表現するためのパラメータである。
【0068】
なお、アバターの画像102は、キャラクタの上半身の画像であり、足は動いていないように見えるが、仮想空間においては、アバターの腰が回転しても、アバターの足が直立に固定されるように関節角度が適用される。ただし、アバターの画像102は、仮想空間において、仮想カメラでアバターの上半身を撮影した画像である。
【0069】
アバターに適用される、アバターの関節角度、アバターの手の指の関節角度およびアバターの表情パラメータを算出するために必要な情報がカメラ68の撮影画像から取得される。以下、必要な情報を取得する方法について説明するが、「腕」、「肩」、「肘」、「手」、「手首」、「目」および「瞼」のように、左右に同じ部位がある場合には、それぞれの部位について必要な情報が取得される。ただし、撮影画像に含まれていない部位またはその一部については必要な情報が取得されない場合もある。
【0070】
この実施例では、必要な情報を取得するために、カメラ68で撮影された撮影画像が画像処理ライブラリの機械学習ソリューションに入力される。画像処理ライブラリとしては、MediaPipeを使用することができる。撮影画像の大きさは、360画素×640画素に設定されている。
【0071】
また、画像処理ライブラリにおける機械学習ソリューションの一例として、MediaPipe Horisticが使用される。MediaPipe Horisticでは、MediaPipe Poseと、MediaPipe Handsと、MediaPipe Face Meshが同時に(並列で)動いて、撮影画像に含まれる人間の姿勢、手および顔の各々についてのランドマークが同時に推測および追跡される。
【0072】
ここで、MediaPipe Pose、MediaPipe Hands、および、MediaPipe Face Meshのそれぞれについて説明するが、これらの機械学習ソリューションは既に周知であるため、簡単に説明することにする。
【0073】
なお、MediaPipe Horisticは、https://google.github.io/mediapipe/solutions/holistic.htmlに開示されている。また、MediaPipe Pose、MediaPipe Hands、および、MediaPipe Face Meshは、それぞれ、https://google.github.io/mediapipe/solutions/pose.html、 https://google.github.io/mediapipe/solutions/hands.htmlおよびhttps://google.github.io/mediapipe/solutions/face_mesh.htmlに開示されている。
【0074】
MediaPipe Poseでは、撮影画像から人物を含む領域(人物または姿勢の関心領域(ROI))が検出され、人物を含む領域すなわち人物の画像がクロップされる。人物の画像がクロップされると、クロップされた人物の画像から人物または姿勢についての所定数(33個)の特徴点(ランドマーク)の3次元位置が推測(または、検出)される。このような処理が毎フレーム実行され、姿勢についてのランドマークが追跡される。
【0075】
また、この実施例のMediaPipe Poseでは、POSE_WORLD_LANDMARKSの情報が使用される。POSE_WORLD_LANDMARKSの情報は、POSE_LANDMARKSの情報(33個のランドマークの3次元位置)を現実世界すなわち現実空間のワールド座標系の3次元位置に変換して出力した情報である。現実空間のワールド座標系では、人物の腰の間の中央に原点が設定され、メートル単位で3次元位置が表される。原点は、後述する、23が付されたランドマークの3次元位置と、24が付されたランドマークの3次元位置の中間の位置である(図6参照)。
【0076】
ただし、カメラ68の撮影方向がワールド座標系のz軸の方向であり、水平方向がx軸の方向であり、垂直方向がy軸の方向である。
【0077】
なお、人物を含む領域の検出は、次フレーム以降では、人物または姿勢のランドマークをトラッキングできなくなった場合にのみ実行される。
【0078】
図6はMediaPipe Poseで推測(または、検出)および追跡される姿勢についての33個のランドマークを示す図である。33個のランドマークには、0から32までの数字(インデックス)が付されている。0を付したランドマークはnose(鼻)の位置を示し、1が付されたランドマークはleft_eye_inner(左目の目頭)の位置を示し、2が付されたランドマークはleft_eye(左目(瞳))の位置を示し、3が付されたランドマークはleft_eye_outer(左目の目尻)の位置を示す。
【0079】
また、4が付されたランドマークはright_eye_inner(右目の目頭)の位置を示し、5が付されたランドマークはright_eye(右目(瞳))の位置を示し、6が付されたランドマークはright_eye_outer(右目の目尻)の位置を示す。
【0080】
さらに、7が付されたランドマークはleft_ear(左耳)の位置を示し、8が付されたランドマークはright_ear(右耳)の位置を示し、9が付されたランドマークはmouth_left(左側の口角)の位置を示し、10が付されたランドマークはmouth_right(右側の口角)の位置を示す。
【0081】
また、11が付されたランドマークはleft_shoulder(左肩)の位置を示し、12が付されたランドマークはright_shoulder(右肩)の位置を示し、13が付されたランドマークはleft_elbow(左肘)の位置を示し、14が付されたランドマークはright_elbow(右肘)の位置を示し、15が付されたランドマークはleft_wrist(左手首)の位置を示し、16が付されたランドマークはright_wrist(右手首)の位置を示す。
【0082】
さらに、17が付されたランドマークはleft_pinky(左手の小指)の位置を示し、18が付されたランドマークはright_pinky(右手の小指)の位置を示し、19が付されたランドマークはleft_index(左手の示指)の位置を示し、20が付されたランドマークはright_index(右手の示指)の位置を示し、21が付されたランドマークはleft_thumb(左手の親指)の位置を示し、22が付されたランドマークはright_thumb(右手の親指)の位置を示す。
【0083】
また、23が付されたランドマークはleft_hip(左腰)の位置を示し、24が付されたランドマークはright_hip(右腰)の位置を示し、25が付されたランドマークはleft_knee(左膝)の位置を示し、26が付されたランドマークはright_knee(右膝)の位置を示し、27が付されたランドマークはleft_ankle(左足首)の位置を示し、28が付されたランドマークはright_ankle(右足首)の位置を示す。
【0084】
さらに、29が付されたランドマークはleft_heel(左の踵)の位置を示し、30が付されたランドマークはright_heel(右の踵)の位置を示し、31が付されたランドマークはleft_foot_index(左足の示指)の位置を示し、32が付されたランドマークはright_foot_index(右足の示指)の位置を示す。
【0085】
MediaPipe Handsでは、撮影画像から人物の1または複数の手(この実施例では、左手または/および右手)を含む領域が推測(または検出)され、1または複数の手を含む領域すなわち手の画像がクロップされる。1または複数の手の画像がクロップされると、クロップされた1または複数の手の画像のそれぞれから所定数(21個)の特徴点(ランドマーク)の3次元位置が推測(または、検出)される。このような処理が毎フレーム実行され、1または複数の手についてのランドマークが追跡される。なお、撮影画像から人物の左手または/および右手を検出できない場合には、検出できない左手または/および右手のランドマークの3次元位置は推測されない。
【0086】
この実施例のMediaPipe Handsでは、MULTI_HANDS_LANDMARKSの情報が使用される。MULTI_HANDS_LANDMARKSでは、撮影画像の左上の頂点を原点(0,0)に設定し、右下の頂点を(1,1)に設定するように正規化したローカル座標系でランドマークの座標が計算される。ただし、ローカル座標系では、撮影画像を正面から見た場合の右向きがx軸のプラス方向であり、下向きがy軸のプラス方向である。また、z軸方向(奥行き方向または深さ)については、手首の位置(後述する、0が付されたランドマークの位置)を基準として表され、値が小さいほどカメラ(この実施例では、カメラ68)の位置に近づく。
【0087】
なお、手を含む領域の検出は、次フレーム以降では、手のランドマークをトラッキングできなくなった場合にのみ再度実行される。
【0088】
図7はMediaPipe Handsで推測(検出)および追跡される手(ここでは、左手)についての21個のランドマークを示す図である。ただし、分かり易くするために、図7では左手の手のひらの画像も示してある。なお、図示は省略するが、右手の手の甲の画像を検出した場合にも、図7に示すような21個のランドマークが推測される。
【0089】
図7に示すように、21個のランドマークには、0から20までの数字が付されている。0が付されたランドマークはWRIST(手首)の位置を示し、1が付されたランドマークはTHUMB_CMC(母指球)の位置を示し、2が付されたランドマークはTHUMB_MCP(母指(または、第1指)の第2関節)の位置を示し、3が付されたランドマークはTHUMB_IP(母指の第1関節)の位置を示し、4が付されたランドマークはTHUMB_TIP(母指の指頭)の位置を示す。
【0090】
また、5が付されたランドマークはINDEX_FINGER_MCP(示指(または、第2指)の第3関節)の位置を示し、6が付されたランドマークはINDEX_FINGER_PIP(示指の第2関節)の位置を示し、7が付されたランドマークはINDEX_FINGER_DIP(示指の第1関節)の位置を示し、8が付されたランドマークはINDEX_FINGER_TIP(示指の指頭)の位置を示す。
【0091】
さらに、9が付されたランドマークはMIDDLE_FINGER_MCP(中指(または、第3指)の第3関節)の位置を示し、10が付されたランドマークはMIDDLE_FINGER_PIP(中指の第2関節)の位置を示し、11が付されたランドマークはMIDDLE_FINGER_DIP(中指の第1関節)の位置を示し、12が付されたランドマークはMIDDLE_FINGER_TIP(中指の指頭)の位置を示す。
【0092】
さらにまた、13が付されたランドマークはRING_FINGER_MCP(環指(または、第4指)の第3関節)の位置を示し、14が付されたランドマークはRING_FINGER_PIP(環指の第2関節)の位置を示し、15が付されたランドマークはRING_FINGER_DIP(環指の第1関節)の位置を示し、16が付されたランドマークはRING_FINGER_TIP(環指の指頭)の位置を示す。
【0093】
そして、17が付されたランドマークはPINKY_FINGER_MCP(小指(または、第5指)の第3関節)の位置を示し、18が付されたランドマークはPINKY_FINGER_PIP(小指の第2関節)の位置を示し、19が付されたランドマークはPINKY_FINGER_DIP(小指の第1関節)の位置を示し、20が付されたランドマークはPINKY_FINGER_TIP(小指の指頭)の位置を示す。
【0094】
MediaPipe Face Meshでは、撮影画像から人物の顔を含む領域が検出され、顔を含む領域すなわち顔の画像がクロップされる。顔の画像がクロップされると、クロップされた顔の画像から所定数(468個)の特徴点(ランドマーク)の3次元座位置が検出される。また、この実施例では、refine_landmarksオプションを使用することが選択されており、上記の顔のランドマークに加えて、虹彩についての所定数(10個)のランドマークの3次元位置も検出される。このような処理が毎フレーム実行され、顔および虹彩についてのランドマークが追跡される。
【0095】
なお、虹彩のランドマークを検出するための機械学習ソリューションはMediaPipe Irisであり、refine_landmarksオプションを使用することで、MediaPipe Face Meshの出力に、MediaPipe Irisの出力が複合される。MediaPipe Irisもまた、既に周知であるため、説明は省略する。このMediaPipe Irisについては、https://google.github.io/mediapipe/solutions/iris.htmlに開示されている。
【0096】
また、この実施例のMediaPipe Face Meshでは、MULTI_FACE_LANDMARKSの情報が使用される。MULTI_FACE_LANDMARKSでは、撮影画像の左上の頂点を原点(0,0)に設定し、右下の頂点を(1,1)に設定するように正規化したローカル座標系でランドマークの座標が計算される。ただし、ローカル座標系では、撮影画像を正面から見た場合の右向きがx軸のプラス方向であり、下向きがy軸のプラス方向である。また、z軸方向(奥行き方向または深さ)については、上唇の上端の中央の点(MediaPipe Face Meshで出力される0が付されたランドマークの位置)を基準として表され、値が小さいほどカメラ(この実施例では、カメラ68)の位置に近づく。
【0097】
なお、顔を含む領域の検出は、次フレーム以降では、顔のランドマークをトラッキングできなくなった場合にのみ再度実行される。
【0098】
図8(A)はMediaPipe Face Meshで推測(または、検出)および追跡される顔についての468個のランドマークのうちの一部を示す図である。ただし、分かり易く示すために、図8(A)ではクロップされた操作者の顔の画像も示してある。
【0099】
図8(A)に示すように、MediaPipe Face Meshで検出される468個のランドマークは顔の主な部分についての複数のランドマークを含む。たとえば、主な部分は、眉毛、目、鼻、唇、顎、頬、耳および顔の輪郭である。図8(A)では省略するが、顔の複数のランドマークには0-467の番号が付されている。顔についての複数のランドマークおよびランドマークに付された番号の詳細については、https://github.com/google/mediapipe/blob/a908d668c730da128dfa8d9f6bd25d519d006692/mediapipe/modules/face_geometry/data/canonical_face_model_uv_visualization.pngに記載されている。
【0100】
図8(B)はMediaPipe Face Meshでrefine_landmarksオプションを使用することが選択された場合に、顔のランドマークに加えて推測(または、検出)および追跡される、両目の虹彩についての10個のランドマークを示す図である。ただし、分かり易くするために、図8(B)では左目および右目の画像も示してある。
【0101】
図8(B)に示すように、10個のランドマークには、468から477までの数字が付されている。468が付されたランドマークは右目の虹彩の中心の位置を示し、469が付されたランドマークは右目の虹彩の左端の位置を示し、470が付されたランドマークは右目の虹彩の上端の位置を示し、471が付されたランドマークは右目の虹彩の右端の位置を示し、472が付されたランドマークは右目の虹彩の下端の位置を示す。
【0102】
また、468が付されたランドマークは右目の虹彩の中心の位置を示し、469が付されたランドマークは右目の虹彩の左端の位置を示し、470が付されたランドマークは右目の虹彩の上端の位置を示し、471が付されたランドマークは右目の虹彩の右端の位置を示し、472が付されたランドマークは右目の虹彩の下端の位置を示す。
【0103】
また、refine_landmarksオプションを使用することが選択された場合には、MediaPipe Face Meshは、顔および虹彩のランドマークの3次元位置のみならず、虹彩の横幅も出力する。ただし、虹彩の横幅は、撮影画像の縦横の長さ(画素数)を正規化した場合の数値で表される。また、虹彩の横幅は、469が付されたランドマークの3次元位置と471が付されたランドマークの3次元位置の距離または474が付されたランドマークの3次元位置と476が付されたランドマークの3次元位置の距離を算出することで求めることもできる。
【0104】
上述したアバターの手の指の関節角度は、MediaPipe Handsの出力すなわち手についての21個のランドマークに基づいて算出することができる。
【0105】
また、上述したアバターの表情パラメータは、MediaPipe Face Meshの出力すなわち顔についての468個のランドマークに基づいて算出することができる。
【0106】
さらに、上述したアバターの腕の関節角度については、MediaPipe Poseの出力すなわち姿勢についての33個のランドマークに基づいて算出することもできるが、この実施例では、撮影画像150には、操作者の全身が含まれることがなく、多くても上半身が含まれる程度であり、出力されるランドマークの3次元位置についての奥行き方向の情報についての信頼度が低い。
【0107】
この実施例では、UnityにはFinalIK VRIKが適用されており、このFinalIK VRIKによって上述したアバターの関節角度が算出される。FinalIK VRIKはUnityにインストールされるアセットである。
【0108】
FinalIK VRIKには、入力情報、具体的には、Unity内(つまり、アバターを配置する仮想空間)のワールド座標系における、アバターの頭の回転、アバターの左手および右手(この実施例では、左手首および右手首)の各々の3次元位置と回転、アバターの左肘および右肘の各々の3次元位置と回転およびアバターの腰の回転が入力される。
【0109】
ただし、アバターの頭と腰の3次元位置は仮想空間において固定されている。アバターの頭の3次元位置は、MediaPipe Poseの出力のうち、0が付されたランドマークの現実空間における3次元位置であるが、0が付されたランドマークは鼻の位置であるため、Unityにおける仮想空間の3次元位置に変換する場合に、計算により首の少し上の位置に合わせている。
【0110】
アバターの頭の回転は、MediaPipe Face Meshから出力される顔の468点のランドマークから算出される。アバターの左手首および右手首の各々の3次元位置は、MediaPipe Poseから出力される鼻先(0が付されたランドマーク)の位置を基準とした左手首および右手首(15および16が付されたランドマーク)の各々の2次元位置(xy座標)と、右目の位置に対する左手首および右手首の各々の奥行方向の位置(z座標)から算出される。アバターの左手首および右手首の各々の回転は、MediaPipe Handsから出力される手の21個のランドマークのうち、0、5および9が付されたランドマークの3次元位置から算出される。
【0111】
ただし、MediaPipeの出力からFinalIK VRIKの入力情報を算出する場合には、MediaPipeにおける座標系からUnityにおけるワールド座標系に変換(座標変換)することも含まれまる。以下、同様である。
【0112】
なお、撮影画像150に操作者の左手または/および右手の画像が含まれていない場合には、予め定義(用意)された待機アニメーションまたは待機モーションが再生される。ただし、待機アニメーションまたは待機モーションは、一般的な3次元コンピュータグラフィックスの仮想のゲームなどで用いられる関節角アニメーションを意味する。
【0113】
アバターの左肘および右肘の各々の3次元位置と回転は、MediaPipe Poseから出力される左肘および右肘(13および14が付されたランドマーク)の各々の3次元位置と、左肩および右肩(11および12が付されたランドマーク)の3次元位置から算出される。ただし、図5に示すように、撮影画像150に操作者の左肘または/および右肘の画像が含まれていない場合であっても、FinalIK VRIKでは、アバターが自然な姿勢または動きとなるように、アバターの左肘または/および右肘の3次元位置と回転が決定される。アバターの腰の回転は、MediaPipe Poseから出力される左肩および右肩(11および12が付されたランドマーク)の3次元位置から算出される。
【0114】
また、MediaPipe Handsの出力からアバターの左手および右手の各々の指の関節角度が算出される。さらに、MediaPipe Face Meshの出力からアバターの表情パラメータの入力情報が生成される。詳細な説明は省略するが、表情パラメータは、アバターが無表情の場合を基準として、口の動き(口の位置、形状および開き具合)、目の動き(瞼の開き具合、目尻の上げ下げ具合)、眉の動き(眉の位置、形状)についてのパラメータである。
【0115】
上述したFinalIK VRIKでは、アバターの左腕および右腕の各々の関節角度を算出するためには、少なくとも、アバターが配置される現実空間のワールド座標系におけるアバターの左手首および右手首の各々の3次元位置および回転を入力する必要がある。しかしながら、上述したように、MediaPipe Poseでは、奥行き方向の情報についての信頼度が低いため、左腕および右腕の各々の関節角度を正しく算出することができない。
【0116】
このため、この実施例では、別の方法で、左手首および右手首の各々の奥行き方向の位置を求めるようにしてある。ただし、左手首および右手首の各々の奥行方向の位置は、操作者の右目(左目でもよい)の位置に対する奥行き方向の位置である。以下、具体的に説明する。
【0117】
標準的な人間の虹彩の横幅(以下、「標準幅」という)を12mmに決定し、同じく標準的な人間の手のひら(中指の付け根から手首まで)の長さ(以下、「標準長さ」という)を80mmに決定する。ただし、標準幅と標準長さについては、複数の人間について計測した結果から決定してある。
【0118】
撮影画像から人間(この実施例では、操作者)の右目の虹彩の横幅(以下、「虹彩の検出値」という)を検出するとともに、その撮影画像から人間の左手および右手の各々の手のひらの長さ(以下、「手のひらの検出値」という)を検出する。上述したように、虹彩の横幅は、MediaPipe Face Meshでrefine_landmarksオプションを使用することが選択された場合に、MediaPipe Face Meshの出力に含まれる。また、左手おうび右手の各々の手のひらの長さは、左手および右手の各々について、MediaPipe Handsの出力に含まれる0が付されたランドマークの3次元位置(3次元座標)と9が付されたランドマークの3次元位置(3次元座標)の3次元の距離を算出することで求められる。したがって、左手および右手の各々の手のひらの向きに関係なく、左手および右手の各々の手のひらの長さを求めることができる。ただし、虹彩の横幅および手のひらの長さは、撮影画像の縦横の画素数を0-1の座標に正規化した場合の数値で表される。
【0119】
虹彩の検出値に対する左手および右手の各々の手のひらの検出値の比率(以下、「検出比率」)が標準幅に対する標準長さの比率(以下、「標準比率」)と同じである場合には、奥行き方向において、人間の右目の位置と人間の左手および右手の各々の位置は同じ位置である。また、検出比率が標準比率よりも大きい場合には、奥行き方向において、人間の右目の位置よりも人間の左手および右手の各々の位置は前(手前)である(カメラ68に近い)。逆に、検出比率が標準比率よりも小さい場合には、奥行き方向において、人間の右目の位置よりも操作者の左手および右手の各々の位置は後(奥)である(カメラ68から遠い)。
【0120】
ただし、標準比率は、(標準長さ)/(標準幅)=80/12である。また、検出比率は、(手のひらの検出値)/(虹彩の検出値)である。検出比率は、左手および右手の各々について算出される。
【0121】
図9はカメラ位置に対する人間の右目の位置および左手(左手首)の位置を現実空間の上方から見た場合の図の一例を示す。この実施例では、図9に示すように、カメラ68の位置Cに対する、人間の右目の位置Aの水平距離と、人間の手(ここでは、左手)の位置Bの水平距離が同じである場合、位置Aに対する位置Bの距離dは0である。図9では、人間の左手について説明するが、右手についても同じである。
【0122】
右目の位置Aに対して左手の位置Bが最も前である場合の位置Aに対する位置Bの距離dは、右目の位置Aを基準とした場合に、標準的な人間の腕の長さに基づいて決定された距離d1であり、この場合に撮影画像から算出される検出比率が最大値(この実施例では、800/12)に設定される。
【0123】
また、右目の位置Aに対して左手の位置Bが最も後である場合の位置Aに対する位置Bの距離dは、右目の位置Aを基準とした場合に、後方に所定の距離d2であり、この場合に撮影画像から算出される検出比率が最小値(この実施例では、72/12)に設定される。ただし、この実施例では、後方に所定の距離d2は、人間が左手を耳の少し後ろの位置に置いた場合の距離に設定される。なお、図9では分かり易く示すために、虹彩の基準幅に合わせて、標準比率、最大値および最小値を示してある。
【0124】
したがって、検出比率が標準比率よりも大きい場合には、最大値から標準比率を減算した値に対する、検出比率から標準比率を減算した値の割合を算出し、算出した割合を距離d1に乗算することで、右目の位置Aに対する左手の位置Bの手前方向の距離dが算出される。つまり、右目の位置Aに対する前方向の左手の位置Bが算出される。また、仮想空間におけるアバターの腕の長さが標準的な人間の腕の長さと異なる場合には、アバターの腕の長さに基づいて距離d1を設定してもよいし、算出した距離dを腕の長さの比率で換算してもよい。ただし、腕の長さは、UpperArm(上腕)の関節からHand(手首)の関節までの長さである。
【0125】
また、検出比率が標準比率よりも小さい場合には、標準比率から検出比率を減算した値に対する、標準比率から最小値を減算した値の割合を算出し、算出した割合を距離d2に乗算することで、右目の位置Aに対する左手の位置の後ろ方向の距離dが算出される。つまり、右目の位置Aに対する後ろ方向の左手の位置Bが算出される。
【0126】
ただし、検出比率が、最大値と最小値で決定される範囲を超える場合には、その範囲内の数値に修正される。この実施例では、検出比率が最大値を超える場合には、検出比率は最大値に修正される。また、検出比率が最小値よりも小さい場合には、検出比率は最小値に修正される。
【0127】
手動モードでは、アバターの画像102の画像データは、撮影画像に基づいて毎フレーム生成され、利用者側端末12に送信される。利用者側端末12では、表示装置30にアバターの画像102を含むアバター画面100が表示(または、更新)される。したがって、操作者の動作に応じてアバターが動作されるとともに、操作者の表情がアバターの表情に反映される。また、上述したように、操作者が発話する場合は、操作者の音声データも利用者側端末12に送信され、アバターの画像102はリップシンクされる。
【0128】
一方、自動モードでは、操作者の動作に関係無く、アバターの画像102が生成される。上述したように、この実施例では、アバターの画像102の生成にはUnityを使用するため、自動モードにおいては、アバターの動きに応じて予め記憶された、アバターの関節角度、アバターの手の指の関節角度およびアバターの顔の表情パラメータの時系列に従うデータ(以下、「自動動作データ」という)を、フレーム毎にアバターに当てはめるようにしてある。
【0129】
つまり、操作者側端末16には、自動モードにおける様々なアバターの動きの各々に応じて自動動作データが記憶されており、所定の方法で決定されたアバターの動きに応じて、アバターに当てはめる自動動作データが決定される。
【0130】
この実施例では、操作者が発話する場合には、操作者のしゃべる内容に応じてアバターの動きが決定される。操作者のしゃべる内容に応じてアバターの動きを決定する方法としては、特開2020-6482に開示された方法を適用することができる。ただし、この特開2020-6482では、アンドロイド(登録商標)のジェスチャ(すなわち、腕の動き)を決定するため、同じ手法でアバターの動きを決定するように適宜変更される。
【0131】
利用者が発話する場合には、利用者の音声が途切れたタイミング、または、利用者が操作者に同意を求めている内容を発話したタイミングで、アバターに頷き動作を行わせることが決定される。利用者の音声が途切れたことは、利用者の音声の音量が予め設定される所定のレベル以下である状態が第2所定時間(たとえば、数msec)継続した場合に判断される。また、利用者が操作者に同意を求めている内容を発話したことは、利用者の音声を認識し、利用者が予め設定される所定の同意を求める内容を発話しているかどうかで判断される。同意を求める内容は、「~ですよね」および「よろしいですか」などである。
【0132】
また、利用者が発話する場合には、利用者の音声が第3所定時間(たとえば、30秒)以上継続する場合には、アバターの視線を正面から逸らせるように、頭部の向きを左斜め上方または右斜め上方に向ける動作を行わせることが決定される。
【0133】
操作者と利用者の両方が発話していない状況が第4所定時間(たとえば、5~10秒)以上継続する場合には、アバターに無意識動作を行わせることが決定される。無意識動作は、手でおでこを触ったり、首を傾げたりするような動作である。
【0134】
なお、いずれの場合であっても、アバターの表情パラメータは、所定の表情(たとえば、微笑み)を表現するように設定されている。ただし、アバターの表情パラメータについては自動動作データに含めずに、操作者または利用者の音声に基づいて判断した感情に応じて表情パラメータを選択し、選択した表情パラメータをアバターに当てはめるようにしてもよい。
【0135】
自動モードでは、アバターの画像102の画像データは、自動で毎フレーム生成され、利用者側端末12に送信される。自動モードにおいても、利用者側端末12では、表示装置30にアバターの画像102を含むアバター画面100が表示(または、更新)される。したがって、操作者の動作によらないでアバターが動作されるとともに、所定の表情が反映される。また、上述したように、操作者が発話する場合は、操作者の音声データも利用者側端末12に送信され、アバターの画像102はリップシンクされる。
【0136】
また、対話中では、操作者が所定のジェスチャを行うことで、操作者側端末16ではアバターの動作モードが手動モードまたは自動モードに設定される。この実施例では、操作者は、手で所定のジェスチャを行う。一例として、操作者は、左手または右手の第3指と第4指をそれぞれ第2関節で折り曲げ、第1指、第2指および第5指を延ばした形状にする。
【0137】
図10は手で所定のジェスチャを行う操作者を撮影した撮影画像150の一例を示す。図10の撮影画像150では、操作者は、左肩の前で手のひらを正面に向けた状態で所定の形状にしている。
【0138】
図10に示す撮影画像150は一例であり、操作者の手の向きは別の向きでもよいし、右手を所定の形状にしてもよい。ただし、当然のことではあるが、所定のジェスチャを行っている手をカメラ68で撮影できない場合には、すなわち、撮影画像150に操作者の手の画像が含まれていない場合には、所定のジェスチャを検出することはできない。
【0139】
この実施例では、操作者のジェスチャ(この実施例では、手の形状)は、MediaPipe Handsから出力される21個の特徴点に基づいて検出される。具体的には、21個の特徴点から指の関節角度が算出され、算出された指の関節角度から操作者の手の形状が検出(または、認識)される。そして、検出された左手または右手の形状が所定の形状であるかどうかが判断される。
【0140】
上述したように、動作モードが手動モードである場合には、MediaPipe Horisticに含まれるMediaPipe Handsを動作させるので、その出力を用いて操作者の手の形状が検出される。一方、動作モードが自動モードである場合には、MediaPipe Horisticを動作させないため、操作者の手の形状を検出する場合に、MediaPipe Handsを動作させる。
【0141】
この実施例では、利用者と操作者が対話を開始したとき、動作モードは手動モードに設定される。ただし、開始時の動作モードは、自動モードに設定されるようにすることもできる。
【0142】
動作モードが手動モードある場合に、所定のジェスチャが検出されると、動作モードが自動モードに切り替えられる。つまり、動作モードが自動モードに設定される。一方、動作モードが自動モードである場合に、所定のジェスチャが検出されると、動作モードが手動モードに切り替えられる。つまり、動作モードが手動モードに設定される。
【0143】
このように、操作者は所定のジェスチャを行うことで、動作モードを手動モードまたは自動モードに切り替える(または、設定する)ことができる。つまり、動作モードを、手動モードと自動モードの間でシームレスに切り替えることができる。
【0144】
上述したように、自動モードでは、アバターの画像102は自動で描画(または、生成)および表示されるため、操作者は、利用者と対話しながら、他の作業を行うことができる。
【0145】
また、この実施例では、動作モードを手動モードから自動モードに切り替える場合と自動モードから手動モードに切り替える場合とで、操作者は同じ所定のジェスチャを行い、この同じ所定のジェスチャを検出するようにしてあるが、限定される必要はない。他の例では、動作モードを手動モードから自動モードに切り替える場合と自動モードから手動モードに切り替える場合とで、操作者は異なる所定のジェスチャを行い、異なる所定のジェスチャをそれぞれ検出するようにしてもよい。
【0146】
この場合、異なる所定のジェスチャは、上記の所定のジェスチャと、この所定のジェスチャとは別の所定の形状である。別の所定の形状としては、第3指、第4指および第5指を第2関節から折り、第1指および第2指を延ばした形状、第4指と第5指を第2関節から折り、第1指、第2指および第3指を延ばした形状、第3指だけを第2関節から折り、他の4本の指を延ばした形状、グーまたはチョキの形状などが該当する。
【0147】
なお、この実施例では、手を所定の形状にすることで所定のジェスチャを行うが、他の例では、手を所定の方向に動かすようにしてもよい。たとえば、左手または右手を、体の前で、左から右に、または、右から左に所定の長さ(たとえば、50cm)以上移動させたり、上から下に、または、下から上に所定の長さ(たとえば、30cm)以上移動させたり、体の前で、左手と右手をクロスさせたり、体の前で、左手または右手を、円を描くように移動させたりすることなどが該当する。腕の動きは、MediaPipe Poseの出力に基づいて検出することができる。ただし、腕の動きは、複数のフレーム分(たとえば、1秒)の撮影画像に基づいて検出される。
【0148】
図11は、利用者側端末12に内蔵されるRAM22のメモリマップ300の一例を示す。図11に示すように、RAM22は、プログラム記憶領域302およびデータ記憶領域304を含む。プログラム記憶領域302には、この実施例の利用者側端末12の制御プログラムが記憶されている。
【0149】
制御プログラムは、メイン処理プログラム302a、操作検出プログラム302b、通信プログラム302c、画像生成プログラム302d、画像出力プログラム302e、音検出プログラム302fおよび音出力プログラム302gなどを含む。
【0150】
メイン処理プログラム302aは、この実施例の利用者側端末12の制御プログラムのメインルーチンの処理(全体的な処理)を実行するためのプログラムである。
【0151】
操作検出プログラム302bは、利用者の操作に従って入力装置28から入力される操作データ304aを検出し、データ記憶領域304に記憶するためのプログラムである。
【0152】
通信プログラム302cは、外部の機器、この実施例では、所定のサービスを提供するサイトを運営するためのサーバ(この実施例では、サーバ18)および操作者側端末16と有線または無線で通信(データの送信および受信)するためのプログラムである。
【0153】
画像生成プログラム302dは、表示装置30に表示するための各種の画面の全部または一部に対応する画像データを、画像生成データ304dを用いて生成するためのプログラムである。
【0154】
画像出力プログラム302eは、画像生成プログラム302dに従って生成した画像データを表示装置30に出力するためのプログラムである。
【0155】
音検出プログラム302fは、マイク32から入力される操作者の音声を検出するためのプログラムである。
【0156】
音出力プログラム302gは、受信した操作者の音声データを出力するためのプログラムである。
【0157】
図示は省略するが、プログラム記憶領域302には、利用者側端末12のオペレーティングシステムなどのミドルウェア、ブラウザ機能を実行するためのプログラム、本願の制御プログラム以外の他のアプリケーション・プログラムも記憶される。
【0158】
また、データ記憶領域304には、操作データ304a、送信データ304b、受信データ304cおよび画像生成データ304dなどが記憶される。
【0159】
操作データ304aは、操作検出プログラム302bに従って検出された操作データである。
【0160】
送信データ304bは、操作者側端末16に送信するデータであり、主として、利用者の音声についての音声データ、操作者側端末16への対話終了の通知データである。
【0161】
受信データ304cは、操作者側端末16から送信され、受信したデータであり、主として、操作者の音声についての音声データ、アバターの画像102の画像データ、操作者側端末16からの対話終了の通知データである。
【0162】
画像生成データ304dは、利用者側端末12の表示装置30に表示される各種の画面(アバター画面100など)を生成するためのデータである。
【0163】
図示は省略するが、データ記憶領域304には、制御処理を実行するために必要な他のデータが記憶されたり、タイマ(カウンタ)およびフラグが設けられたりする。
【0164】
図12は、操作者側端末16に内蔵されるRAM52のメモリマップ500の一例を示す。図12に示すように、RAM52は、プログラム記憶領域502およびデータ記憶領域504を含む。プログラム記憶領域502には、この実施例の操作者側端末16の制御プログラムが記憶されている。
【0165】
制御プログラムは、メイン処理プログラム502a、操作検出プログラム502b、通信プログラム502c、アバター画像生成プログラム502d、撮影プログラム502e、姿勢認識プログラム502f、手認識プログラム502g、顔認識プログラム502h、深度推定プログラム502i、深度修正プログラム502j、ジェスチャ判断プログラム502k、動作モード切替プログラム502m、音検出プログラム502nおよび音出力プログラム502pなどが記憶される。
【0166】
メイン処理プログラム502aは、この実施例の操作者側の制御プログラムのメインルーチンの処理(全体的な処理)を実行するためのプログラムである。
【0167】
操作検出プログラム502bは、操作者の操作に従って入力装置58から入力される操作データ504aを検出し、データ記憶領域504に記憶するためのプログラムである。
【0168】
通信プログラム502cは、外部の機器、この実施例では、利用者側端末12およびサーバ18と有線または無線で通信するためのプログラムである。
【0169】
アバター画像生成プログラム502dは、アバター画像生成データ504dを用いて、アバターの画像102を含むアバター画面100の画像データを生成するためのプログラムである。この実施例では、アバター画像生成プログラム502dは、FinalIK VRIKが適用されたUnityである。
【0170】
撮影プログラム502eは、カメラ68に撮影処理を実行させ、センサI/F66を介してカメラ68から入力される撮影画像データ504fを記憶するためのプログラムである。
【0171】
姿勢認識プログラム502fは、MediaPipe Poseであり、現在のフレームの撮影画像150から人間についての33個のランドマークの3次元位置を検出(推測)および追跡するためのプログラムである。ただし、姿勢についてのランドマークの3次元位置は、現実空間におけるワールド座標系における3次元位置である。
【0172】
手認識プログラム502gは、MediaPipe Handsであり、現在のフレームの撮影画像150から左手および右手のそれぞれについて、21個のランドマークの3次元位置を検出(推測)および追跡するためのプログラムである。ただし、手についてのランドマークの3次元位置は、撮影画像の左上の頂点を原点とした場合のローカル座標系における3次元位置であり、奥行き方向の位置は手首の位置を基準に決定される。
【0173】
顔認識プログラム502hは、MediaPipe Face Meshであり、現在のフレームの撮影画像150から顔についての468個のランドマークの3次元位置を検出(推測)および追跡するためのプログラムである。この実施例では、refine_landmarksオプションを使用することが選択されており、MediaPipe Face Meshでは、上記の顔のランドマークに加えて、虹彩についての所定数(10個)のランドマークの3次元位置および虹彩の横幅も検出される。
【0174】
ただし、上述したように、この実施例では、MediaPipe Poseと、MediaPipe Handsと、MediaPipe Face Meshを同時に並行して動作させるMediaPipe Horisticが使用される。
【0175】
深度推定プログラム502iは、撮影画像150から検出された操作者の虹彩の横幅に対する、撮影画像150から検出された操作者の手のひらの長さについての検出比率と標準比率を用いて、操作者の目の位置Aに対する奥行き方向の手首の位置Bを推定するためのプログラムである。
【0176】
深度修正プログラム502jは、深度推定プログラム502iで推定された操作者の目の位置Aに対する奥行き方向の手首の位置Bが最大値および最小値で決まる範囲を超える場合に、その範囲内に修正するためのプログラムである。
【0177】
ジェスチャ判断プログラム502kは、手認識プログラム502gに従って認識された操作者の手の形状(21個のランドマークから決定される手の形状)が所定の形状を示すかどうかを判断するためのプログラムである。
【0178】
動作モード切替プログラム502mは、ジェスチャ判断プログラム502kに従って操作者の手の形状が所定の形状を示すことが判断されたことに応じて、動作モードを、手動モードから自動モードに切り替えたり、自動モードから手動モードに切り替えたりするためのプログラムである。
【0179】
音検出プログラム502nは、マイク62から入力される操作者の音声を検出するためのプログラムである。
【0180】
音出力プログラムは502p、受信した利用者の音声データを出力するためのプログラムである。
【0181】
図示は省略するが、プログラム記憶領域502には、操作者側端末16のオペレーティングシステムおよびミドルウェアとは別に、ブラウザ機能を実行するためのプログラム、画像生成プログラム、画像出力プログラム、本願の制御プログラム以外の他のアプリケーション・プログラムも記憶される。
【0182】
図13図12に示したRAM52のデータ記憶領域504の具体的な内容を示す図である。図13に示すように、データ記憶領域504には、操作データ504a、送信データ504b、受信データ504c、アバター画像生成データ504d、切替ジェスチャデータ504e、撮影画像データ504f、姿勢特徴点データ504g、手特徴点データ504h、顔特徴点データ504i、入力情報データ504j、指関節データ504k、表情パラメータデータ504m、腕関節データ504n、自動動作データ504pおよび動作モードデータ504qなどが記憶される。
【0183】
操作データ504aは、操作検出プログラム502bに従って検出された操作データである。
【0184】
送信データ504bは、利用者側端末12に送信するデータであり、主として、操作者の音声についての音声データ、アバターの画像102の画像データ、利用者側端末12への対話終了の通知データである。
【0185】
受信データ504cは、利用者側端末12から送信され、受信したデータであり、主として、利用者の音声についての音声データ、対話終了の通知データである。
【0186】
アバター画像生成データ504dは、アバターの画像102の画像データを生成するためのデータであって、アバターについてのボーン、ポリゴンおよびテクスチャについてのデータである。ただし、複数のアバターを用意し、いずれかのアバターを選択可能にする場合には、複数のアバターの各々についてアバター画像生成データ504dが記憶される。
【0187】
切替ジェスチャデータ504eは、所定のジェスチャすなわち所定の形状についてのデータであり、予め登録される。
【0188】
撮影画像データ504fは、カメラ68で撮影された撮影画像のデータである。この実施例では、撮影画像は、操作者の上半身の画像を含む。
【0189】
姿勢特徴点データ504gは、MediaPipe Poseで検出および追跡される姿勢についての33個のランドマークの現実空間のワールド座標系における3次元位置(3次元座標)についてのデータである。
【0190】
手特徴点データ504hは、MediaPipe Handsで検出および追跡される左手または/および右手の各々についての21個のランドマークのローカル座標系における3次元位置(3次元座標)についてのデータである。
【0191】
顔特徴点データ504iは、MediaPipe Face Meshで検出および追跡される顔についての468個のランドマークのローカル座標系における3次元位置(3次元座標)についてのデータである。また、顔特徴点データ504iは、虹彩についての10個のランドマークのローカル座標系における3次元位置(3次元座標)および虹彩の横幅についてのデータを含む。
【0192】
入力情報データ504jは、FinalIK VRIKに入力する入力情報についてのデータである。具体的には、入力情報は、Unity内のワールド座標系における、アバターの頭の回転、アバターの手首(左手首または/および右手首)の3次元位置、アバターの手首(左手首または/および右手首)の回転、アバターの肘の3次元位置と回転およびアバターの腰の回転である。
【0193】
指関節データ504kは、アバターの左手または/および右手に指の関節角度についてのデータである。
【0194】
表情パラメータデータ504mは、アバターの顔の表情についての表情パラメータのデータである。
【0195】
腕関節データ504nは、アバターの左腕および右腕の関節角度についてのデータである。
【0196】
自動動作データ504pは、自動モードにおける様々なアバターの動きの各々に応じた、アバターの関節角度、アバターの手の指の関節角度およびアバターの顔の表情パラメータの時系列に従うデータである。
【0197】
動作モードデータ504qは、動作モードを識別するためのデータであり、具体的には、手動モードまたは自動モードの別を示すデータである。
【0198】
図示は省略するが、データ記憶領域504には、制御処理を実行するために必要な他のデータが記憶されたり、タイマ(カウンタ)およびフラグが設けられたりする。
【0199】
図14は、利用者側端末12のCPU20の制御処理を示すフロー図である。図示は省略するが、CPU20は、制御処理と並行して、操作データおよび音声データを検出する処理を実行するとともに、操作者側端末16からの各種のデータを受信する処理を実行する。
【0200】
図14に示すように、利用者側端末12のCPU20は、制御処理を開始すると、ステップS1で、操作者側端末16から音声データを受信したかどうかを判断する。
【0201】
ステップS1で“YES”であれば、つまり、操作者側端末16から音声データを受信すれば、ステップS3で、受信した音声データをスピーカ34に出力し、ステップS5で、音声データの出力に合わせて発話するアバターの画像データを表示装置30に出力して、ステップS13に進む。この実施例では、ステップS5では、アバターの画像102を含むアバター画面100の画像データが表示装置30に出力される。また、ステップS5では、アバターの画像102は、スピーカ34から出力される音声にリップシンクされる。したがって、アバターの画像102が喋っているように表現される。
【0202】
また、ステップS1で“NO”であれば、つまり、操作者側端末16から音声データを受信していなければ、ステップS7で、音声データを検出したかどうかを判断する。ここでは、CPU20は、マイク32で検出された音声の音声データが入力されたかどうかを判断する。
【0203】
ステップS7で“NO”であれば、つまり、音声データを検出していなければ、ステップS11に進む。一方、ステップS7で“YES”であれば、つまり、音声データを検出すれば、ステップS9で、検出した音声データを操作者側端末16に送信する。したがって、操作者は利用者の音声を聞くことができる。
【0204】
次のステップS11では、アバターの画像データを表示装置30に出力する。この実施例では、ステップS11では、アバターの画像102を含むアバター画面100の画像データが表示装置30に出力される。
【0205】
そして、ステップS13では、対話の終了かどうかを判断する。ここでは、CPU20は、利用者から対話の終了の指示があるかどうか、および、操作者側端末16から対話の終了の通知を受信したかどうかを判断する。
【0206】
ステップS13で“NO”であれば、つまり、対話の終了でなければ、ステップS1に戻る。一方、ステップS13で“YES”であれば、つまり、対話の終了であれば、制御処理を終了する。ただし、利用者の指示に従って対話を終了する場合には、対話を終了することが操作者側端末16に通知される。
【0207】
図15は、操作者側端末16のCPU50の制御処理を示すフロー図である。図示は省略するが、CPU50は、制御処理と並行して、撮影処理、操作データおよび音声データを検出する処理、および、利用者側端末12からの各種のデータを受信する処理を実行する。また、CPU50の制御処理について説明するが、同じ処理内容については簡単に説明することにする。なお、制御処理の開始時には、動作モードは手動モードに設定されている。
【0208】
図15に示すように、操作者側端末16のCPU50は、制御処理を開始すると、ステップS31で、動作モードデータ504qを参照して、動作モードが手動モードであるかどうかを判断する。
【0209】
ステップS31で“YES”であれば、つまり、動作モードが手動モードであれば、後述する遠隔モードのアバター画像生成処理(図16および図17参照)を実行して、ステップS37に進む。
【0210】
一方、ステップS31で“NO”であれば、つまり、動作モードが自動モードであれば、ステップS35で、自動モードのアバター画像生成処理を実行して、ステップS37に進む。上述したように、ステップS35では、CPU50は、所定の方法でアバターの動きを決定し、決定したアバターの動きに応じた自動動作データ504pを選択して、選択した自動動作データ504pをアバターに適用してアバターの画像102の画像データを生成する。
【0211】
ステップS37では、アバターの画像102の画像データを利用者側端末12に送信する。次のステップS39では、音声データを受信したかどうかを判断する。ステップS39で“YES”であれば、つまり、音声データを受信していれば、ステップS41で、受信した音声データをスピーカ64に出力して、ステップS47に進む。
【0212】
一方、ステップS39で“NO”であれば、つまり、音声データを受信していなければ、ステップS43で、音声データを検出したかどうかを判断する。ステップS43で“NO”であれば、つまり、音声データを検出していなければ、ステップS47に進む。一方、ステップS43で“YES”であれば、つまり、音声データを検出していれば、ステップS45で、音声データを利用者側端末12に送信して、ステップS47に進む。
【0213】
ステップS47では、ジェスチャを検出する。この実施例では、MediaPipe Handsを動作させ、検出した左手または右手の形状が、切替ジェスチャデータ504eが示す所定の形状であるかどうかを判断する。ただし、自動モードでは、ステップS33でMediaPipe Handsが動作しているため、CPU50は、ステップS47では、MediaPipe Handsを動作させずに、ステップS33の処理結果からジェスチャを検出する。
【0214】
次のステップS49で、動作モードの切り替えかどうかを判断する。ステップS49では、CPU50は、ステップS47で検出したジェスチャすなわち手の形状が所定の形状と同じであるかどうかを判断する。
【0215】
ステップS49で“YES”であれば、つまり、動作モードの切り替えであれば、ステップS51で、動作モードを切り替えて、ステップS31に戻る。ステップS51では、CPU50は、動作モードデータ504qを参照して、現在の動作モードが手動モードであれば、自動モードに切り替え、現在の動作モードが自動モードであれば、手動モードに切り替える。
【0216】
一方、ステップS49で“NO”であれば、つまり、動作モードの切り替えでなければ、ステップS53で、対話の終了かどうかを判断する。ここでは、CPU50は、操作者から対話の終了の指示があるかどうか、および、利用者側端末12から対話の終了の通知を受信したかどうかを判断する。
【0217】
ステップS53で“NO”であれば、つまり、対話の終了でなければ、ステップS31に戻る。一方、ステップS53で“YES”であれば、つまり、対話の終了であれば、制御処理を終了する。ただし、操作者の指示に従って対話を終了する場合には、対話を終了することが利用者側端末12に通知される。
【0218】
図16および図17は、図15に示したステップS33の手動モードのアバター画像生成処理の一例を示すフロー図である。図16に示すように、CPU50は、手動モードのアバター画像生成処理を開始すると、ステップS101で、撮影画像150に対してMediaPipe Horisticを適用する。つまり、撮影画像150に対して、MediaPipe Pose、MediaPipe HandsおよびMediaPipe Face Meshが同時に並行して動作される。
【0219】
次のステップS103では、MediaPipe Poseの出力から現実空間のワールド座標系における左手首および右手首の各々の2次元座座標(2次元位置)と、左肘および右肘の各々の3次元位置と、左肩および右肩の各々の3次元位置を取得する。続くステップS105では、MediaPipe Handsの出力からローカル座標系における左手および右手の各々の特徴点の3次元位置を取得する。続いて、ステップS107は、MediaPipe Face Meshの出力からローカル座標系における顔の特徴点の3次元位置および右目の虹彩の横幅を取得する。
【0220】
さらに、ステップS109で、右目の位置に対する奥行方向における左手首および右手首の各々の位置を推定(算出)する。ここでは、上述したように、虹彩の横幅の検出値に対する手のひらの長さの検出値の検出比率と、標準比率とに基づいて、目の位置Aに対する奥行方向における手首の位置Bが算出される。ただし、上述したように、手のひらの長さの検出値は、MediaPipe Handsの出力のうち、0が付されたランドマークの3次元位置と9が付されたランドマークの3次元位置の距離を算出することで求められる。また、検出比率は、左手および右手の各々について算出され、左手首および右手首の各々の位置Bが算出される。
【0221】
次のステップS111では、ステップS109で算出した手首の位置が所定の範囲を超えているかどうかを判断する。ここでは、CPU50は、検出比率が目の位置に対する奥行方向における手首の位置の比率の最大値と最小値で決定される範囲を超えているかどうかを判断する。
【0222】
ステップS111で“YES”であれば、つまり、手首の位置が所定の範囲を超えている場合には、ステップS113で、所定の範囲に収まるように手首の位置を修正して、図17に示すステップS115に進む。ステップS111で“NO”であれば、つまり、手首の位置が所定の範囲を超えていない場合には、ステップS115に進む。
【0223】
なお、ステップS111-ステップS113の処理については、左手首および右手首の各々について実行される。
【0224】
図17に示すように、ステップS115では、アバターを配置する仮想空間のワールド座標系での頭の回転を算出する。上述たように、アバターの頭の回転は、MediaPipe Face Meshから出力される顔の468点のランドマークから算出される。
【0225】
続くステップS117では、アバターを配置する仮想空間のワールド座標系での左手首および右手首の各々の3次元位置および回転を算出する。アバターの左手首および右手首の各々の3次元位置は、MediaPipe Poseから出力される鼻先(0が付されたランドマーク)の位置を基準とした左手首および右手首(15および16が付されたランドマーク)の2次元位置と、ステップS109で算出またはステップS113で修正された目の位置に対する左手首および右手首の各々の奥行方向の位置から算出される。また、アバターの左手首および右手首の回転は、MediaPipe Handsから出力される左手首および右手首の各々の21個のランドマークの3次元位置から算出される。
【0226】
続いて、ステップS119は、アバターを配置する仮想空間のワールド座標系での左肘および右肘の各々の位置および回転を算出する。アバターの左肘および右肘の各々の3次元位置と回転は、MediaPipe Poseから出力される左肘および右肘(13および14が付されたランドマーク)の3次元位置と、左肩および右肩(11および12が付されたランドマーク)の3次元位置から算出される。
【0227】
次のステップS121では、アバターを配置する仮想空間のワールド座標系での腰の回転を算出する。アバターの腰の回転は、MediaPipe Poseから出力される左肩および右肩(11および12が付されたランドマーク)の3次元位置から算出される。
【0228】
続くステップS123では、MediaPipe Handsの出力からアバターの左手および右手の各々の指の関節角度を算出する。ただし、撮影画像に操作者の左手または/および右手の画像が含まれていない場合には、アバターの左手または/および右手の各々の指の関節角度は算出されない。
【0229】
続いて、ステップS125では、MediaPipe Face Meshの出力からアバターの顔の表情パラメータの入力情報を算出する。さらに、ステップS127で、アバターの関節角度を算出する。
【0230】
そして、ステップS129で、アバターの画像102の画像データを生成して、手動モードのアバター画像生成処理を終了して、図15に示した制御処理にリターンする。ステップS129では、CPU50は、ステップS123で算出したアバターの手の指の関節角度、ステップS125で算出したアバターの顔の表情パラメータの入力情報、およびステップS127で算出したアバターの関節角度をアバターに適用し、現フレームにおけるアバターの画像102の画像データを生成する。
【0231】
この実施例によれば、操作者の所定のジェスチャに応じて、アバターの画像を自動で生成する自動モードと、アバターの画像を操作者の動作に基づいて生成する手動モードを切り替えるので、キーボード入力、ボタン操作または音声入力を行う必要が無く、動作モードを円滑に切り替えることができる。
【0232】
また、この実施例によれば、対話中に操作者は所定のジェスチャを行うだけなので、ユーザに違和感または不快感を与えることはほとんどない。
【0233】
また、この実施例では、操作者の所定のジェスチャに応じて、アバターの画像を自動で生成する自動モードと、アバターの画像を操作者の動作に基づいて生成する手動モードを切り替えるので、自動モードを設定した場合には、操作者は手を自由に使うことができる。このため、操作者は利用者と対話しながら他の作業を行うことができる。
【0234】
さらに、この実施例によれば、撮影画像に基づいて検出される操作者の虹彩の横幅に対する手のひらの長さに基づいて、操作者の目の位置に対する奥行方向の手首の位置を算出するので、深度を検出するセンサ等を設けずに、操作者の腕の動きに応じてアバターの腕の動きを制御することができる。
【0235】
なお、この実施例では、MediaPipeのような画像処理ライブラリのソリューションであるMediaPipe Horisticを用いるようにしたが、これに限定される必要はない。
【0236】
全身(姿勢)の特徴点(ランドマーク)を検出するソリューションとしては、ThreeDPoseTrackerを用いることもできる。また、手の特徴点を検出するソリューションとしては、Motion Gestures SDKを用いることもできる。さらに、顔の特徴点を検出するソリューションとしては、ACM(Active Contour Model)、ASM(Active Shape Model)、AAM(Active Appearance Model)、SDM(Supervised Descent Method)を用いることもできる。さらにまた、虹彩の特徴点を検出するソリューションとしては、DlibとOpenCVを用いることもできる(参照:https://qiita.com/sassa4771/items/fbfb0012744350cf4d93)。Dlibを用いて顔ランドマークが検出され、OpenCVを用いて虹彩の区画が切り出される。
【0237】
なお、この実施例では、動作モードが自動モードに設定されている場合には、操作者の動作に関係無く、アバターの画像の全部を自動生成するようにしたが、アバターの画像の一部を自動生成するようにしてもよい。たとえば、自動モードにおいては、アバターの手腕の動きを自動生成し、顔の表情および動きは、操作者の顔の表情および動きに従って制御されてもよい。かかる場合であっても、操作者は、利用者と対話しながら手だけ他の作業を行うことができる。
【0238】
また、アバターの画像を自動生成する場合(自動モード)に加え、一部の画像を自動生成する場合(半自動モード)を設けることで、実施例で示した所定の形状が検出された場合には、自動モードに切り替え、他のジェスチャ(たとえば、他の所定の形状)が検出された場合には、半自動モードに切り替えるようにすることもできる。この場合、半自動モードにおいて、他の所定の形状が検出されると、手動モードに切り替えられる。
【0239】
また、この実施例では、操作者側端末でアバターの画像データを生成するようにしたが、利用者側端末でアバターの画像データを生成するようにしてもよい。かかる場合には、操作者側端末は撮影画像のデータを利用者側端末に送信し、利用者側端末は、撮影画像のデータを取得して、図15図17に示した制御処理および手動モードのアバター画像生成処理も実行する。
【0240】
さらに、上述の各実施例では、利用者と操作者が対話する場合について説明したが、これに限定される必要はない。ウェブ会議またはビデオ通話を行う場合にも適用でき、ウェブ会議またはビデオ通話においてアバターの画像を表示する場合に、対応する人間の撮影画像に基づいてアバターが動作される。
【0241】
さらにまた、上述の各実施例では、起動条件を満たす場合に、アバターの画像を表示するようにしたが、所定のサービスのウェブ画面が表示されるときに、アバターの画像を表示するようにしてもよい。
【0242】
なお、上述の各実施例で示したフロー図の各ステップは同じ結果が得られる場合には、処理する順番を変更することが可能である。
【0243】
また、上述の各実施例で挙げた各種の画面、角度などの具体的数値はいずれも単なる例示であり、必要に応じて適宜変更可能である。
【符号の説明】
【0244】
10 …情報処理システム
12 …利用者側端末
14 …ネットワーク
16 …操作者側端末
18 …サーバ
20、50 …CPU
22、52 …RAM
24、54 …通信I/F
26、56 …入出力I/F
28、58 …入力装置
30、60 …表示装置
32、62 …マイク
34、64 …スピーカ
66 …センサI/F
68 …カメラ
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17