(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022155115
(43)【公開日】2022-10-13
(54)【発明の名称】骨格推定装置、端末、サーバ及びプログラム
(51)【国際特許分類】
G06N 3/04 20060101AFI20221005BHJP
G06T 7/00 20170101ALI20221005BHJP
【FI】
G06N3/04 154
G06T7/00 350C
G06T7/00 660B
【審査請求】未請求
【請求項の数】14
【出願形態】OL
(21)【出願番号】P 2021058455
(22)【出願日】2021-03-30
(71)【出願人】
【識別番号】000208891
【氏名又は名称】KDDI株式会社
(74)【代理人】
【識別番号】100092772
【弁理士】
【氏名又は名称】阪本 清孝
(74)【代理人】
【識別番号】100119688
【弁理士】
【氏名又は名称】田邉 壽二
(72)【発明者】
【氏名】徐 建鋒
(72)【発明者】
【氏名】小森田 賢史
【テーマコード(参考)】
5L096
【Fターム(参考)】
5L096DA02
5L096HA02
5L096HA11
(57)【要約】
【課題】骨格推定の精度と処理速度も確保し、ネットワーク上で処理を適切に分担する。
【解決手段】通信ネットワークを介して相互に通信可能とされる端末5及びサーバ6を含む、入力映像の各フレームについて深層学習ネットワークによる骨格推定を行う骨格推定装置10であって、各フレームを第1、2種フレームのいずれかとして区別し、第1種フレームについては、第1種フレームのみを第1深層学習ネットワークに入力して骨格推定結果を得て、第2種フレームについては、第2種フレームのみを軽量化された第2深層学習ネットワークに入力して骨格推定の中間結果を得て、中間結果と第2種フレームよりも過去の少なくとも1フレームについての骨格推定結果との2つを遷移ネットワークに入力して遷移骨格推定結果を得て、中間結果及び遷移骨格推定結果を用いて第2種フレームの骨格推定結果を得る。端末5及びサーバ6で処理を分担する。
【選択図】
図2
【特許請求の範囲】
【請求項1】
通信ネットワークを介して相互に通信可能とされる端末及びサーバを含む、入力映像の各フレームについて深層学習ネットワークによる骨格推定を行う骨格推定装置であって、
各フレームを第1種フレームまたは第2種フレームのいずれかとして区別し、
第1種フレームについては、当該第1種フレームのみを静止画として第1深層学習ネットワークに入力して骨格推定結果を得る第1処理を適用し、
第2種フレームについては、当該第2種フレームのみを静止画として第2深層学習ネットワークに入力して骨格推定の中間結果を得て、当該中間結果と当該第2種フレームよりも過去の少なくとも1つのフレームについての骨格推定結果との2つを少なくとも1つの遷移ネットワークに入力して少なくとも1つの遷移骨格推定結果を得て、当該中間結果及び遷移骨格推定結果を用いて当該第2種フレームの骨格推定結果を得る第2処理を適用し、
前記第2処理においては、前記第2深層学習ネットワークによる処理と、前記少なくとも1つの遷移ネットワークによる処理と、がそれぞれ前記端末又は前記サーバにおいて分担して実行され、
前記第2深層学習ネットワークは、前記第1深層学習ネットワークよりも軽量化されたものであることを特徴とする骨格推定装置。
【請求項2】
前記第1処理は、前記サーバにおいて実行されることを特徴とする請求項1に記載の骨格推定装置。
【請求項3】
前記第2処理においては、前記少なくとも1つの遷移骨格推定結果と、前記中間結果と、を統合することにより前記第2種フレームの骨格推定結果を得ることを特徴とする請求項1または2に記載の骨格推定装置。
【請求項4】
前記第2処理について分担して実行される際に、
前記第2深層学習ネットワークと、前記少なくとも1つの遷移ネットワークと、を前記端末または前記サーバにおいて実行する際のコストを最適化するように、前記端末または前記サーバにおける処理の分担を決定することを特徴とする請求項1ないし3のいずれかに記載の骨格推定装置。
【請求項5】
前記第2処理においては、前記第2深層学習ネットワークによる処理と、前記少なくとも1つの遷移ネットワークによる処理と、を前記端末または前記サーバで実行する際のコストを、
サーバ及び端末のそれぞれにおける、各処理の完了時間によって評価することを特徴とする請求項4に記載の骨格推定装置。
【請求項6】
前記第2処理において、前記サーバ及び端末のそれぞれにおける各処理の完了時間は、サーバ及び端末の使用可能リソースに依存する値として管理されることを特徴とする請求項5に記載の骨格推定装置。
【請求項7】
前記第2処理においては、前記第2深層学習ネットワークによる処理と、前記少なくとも1つの遷移ネットワークによる処理と、を前記端末または前記サーバで実行する際のコストを、
サーバに関して、各処理の完了時間とサーバ及び端末間での通信遅延とによって評価することを特徴とする請求項5に記載の骨格推定装置。
【請求項8】
前記第2処理においては、前記第2深層学習ネットワークによる処理と、前記少なくとも1つの遷移ネットワークによる処理と、を前記端末または前記サーバで実行する際のコストを、
サーバ及び端末での共通のコストとして、
前記第2深層学習ネットワークによる処理のコストを、当該処理で得られる骨格推定の中間結果の品質を推定することによって評価し、
前記少なくとも1つの遷移ネットワークの各々による処理のコストを、当該処理で得られる遷移骨格推定結果の品質を推定することによって評価することを特徴とする請求項4ないし7のいずれかに記載の骨格推定装置。
【請求項9】
前記第2処理においては、
前記中間結果の品質を、当該第2種フレームの近傍過去に位置する第2種フレームに対して既に得られている中間結果より推定し、
前記遷移骨格推定結果の品質を、当該遷移ネットワークへの2つの入力のうちの片方である前記過去のフレームについて既に得られている骨格推定結果より推定することを特徴とする請求項8に記載の骨格推定装置。
【請求項10】
前記第2処理においては、前記第2深層学習ネットワークによる処理と、前記少なくとも1つの遷移ネットワークによる処理と、を前記端末または前記サーバで実行する際のコストを、
サーバ及び端末での共通のコストとして、
各処理のコストを、各処理における入力フレームまたは入力骨格推定結果の時刻と、当該第2種フレームの時刻との差として評価することを特徴とする請求項4ないし9のいずれかに記載の骨格推定装置。
【請求項11】
前記第2処理においては、前記第2深層学習ネットワークによる処理と、前記少なくとも1つの遷移ネットワークによる処理と、を前記端末または前記サーバで実行する際のコストの値が最小となる処理を、端末及び/又はサーバにおいて逐次的に選択することを、当該選択された処理によって消費されることによって端末及び/又はサーバの使用可能リソースが尽きたと判定されるまで繰り返すことにより、前記端末または前記サーバにおける処理の分担を決定することを特徴とする請求項4ないし10のいずれかに記載の骨格推定装置。
【請求項12】
通信ネットワークを介して相互に通信可能とされる端末及びサーバを含む、入力映像の各フレームについて深層学習ネットワークによる骨格推定を行う骨格推定装置における端末であって、
各フレームを第1種フレームまたは第2種フレームのいずれかとして区別し、
第1種フレームについては、当該第1種フレームのみを静止画として第1深層学習ネットワークに入力して骨格推定結果を得る第1処理を適用し、
第2種フレームについては、当該第2種フレームのみを静止画として第2深層学習ネットワークに入力して骨格推定の中間結果を得て、当該中間結果と当該第2種フレームよりも過去の少なくとも1つのフレームについての骨格推定結果との2つを少なくとも1つの遷移ネットワークに入力して少なくとも1つの遷移骨格推定結果を得て、当該中間結果及び遷移骨格推定結果を用いて当該第2種フレームの骨格推定結果を得る第2処理を適用し、
前記第2処理においては、前記第2深層学習ネットワークによる処理と、前記少なくとも1つの遷移ネットワークによる処理と、がそれぞれ前記端末又は前記サーバにおいて分担して実行され、
前記第2深層学習ネットワークは、前記第1深層学習ネットワークよりも軽量化されたものであることを特徴とする骨格推定装置における端末。
【請求項13】
通信ネットワークを介して相互に通信可能とされる端末及びサーバを含む、入力映像の各フレームについて深層学習ネットワークによる骨格推定を行う骨格推定装置におけるサーバであって、
各フレームを第1種フレームまたは第2種フレームのいずれかとして区別し、
第1種フレームについては、当該第1種フレームのみを静止画として第1深層学習ネットワークに入力して骨格推定結果を得る第1処理を適用し、
第2種フレームについては、当該第2種フレームのみを静止画として第2深層学習ネットワークに入力して骨格推定の中間結果を得て、当該中間結果と当該第2種フレームよりも過去の少なくとも1つのフレームについての骨格推定結果との2つを少なくとも1つの遷移ネットワークに入力して少なくとも1つの遷移骨格推定結果を得て、当該中間結果及び遷移骨格推定結果を用いて当該第2種フレームの骨格推定結果を得る第2処理を適用し、
前記第2処理においては、前記第2深層学習ネットワークによる処理と、前記少なくとも1つの遷移ネットワークによる処理と、がそれぞれ前記端末又は前記サーバにおいて分担して実行され、
前記第2深層学習ネットワークは、前記第1深層学習ネットワークよりも軽量化されたものであることを特徴とする骨格推定装置におけるサーバ。
【請求項14】
コンピュータを請求項12に記載の端末または請求項13に記載のサーバとして機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、映像に対して骨格推定を行う骨格推定装置、端末、サーバ及びプログラムに関する。
【背景技術】
【0002】
非特許文献1に開示されるOpenPoseを始め、近年、沢山の骨格抽出技術が開発されており、この技術により静止画に映った人物の全身骨格を抽出できる。一般的に、骨格抽出技術は非特許文献1のようなボトムアップ方式と非特許文献2のようなトップダウン方式に分類することができる。例えば、非特許文献2のHRNet(高解像度ネット)では、画像から検出した人物のバウンディングボックス(Bounding box)毎に全身の骨格を抽出する。ただし、ボトムアップ方式及びトップダウン方式のいずれも、各関節のヒートマップ(Heatmap)から関節位置及び推定信頼度を式(1A),(1B)で推定する。
【0003】
【0004】
式(1A),(1B)において、H(x,y)はヒートマップ(所定の関節種別ごとに定義されるヒートマップのうち、ある任意の1つの関節に関するヒートマップ)であり、x,yは当該ヒートマップに対応する静止画の座標であり、W,Hは当該ヒートマップ及び対応する静止画における横、縦のサイズである。各関節のヒートマップH(x,y)はすなわち、骨格抽出の対象となる静止画の各画素位置(x,y)において、当該位置(x,y)が当該種類の関節に該当する信頼度をマップとして与えたものである。ヒートマップH(x,y)を参照して式(1A)により、信頼度値が最大となる位置Pを当該関節の位置として推定し、式(1B)により、当該最大値となる位置Pの関節の信頼度fを推定することができる。
【0005】
一方、映像を入力すると、前記静止画の骨格抽出技術を用いて各フレームから独立に人物の骨格を抽出できる。ただし、人物の動きにより画像がボケることや人物の一部が隠れることなど課題があるため、骨格抽出精度が落ちる可能性がある。
【0006】
そこで、最近、映像の時間軸情報を利用して骨格抽出の精度向上を狙う技術が開発された。例えば、非特許文献3では、3D Convolution(3次元畳み込み)を用いて時間軸情報を利用する。非特許文献4では、CNN(畳み込みニューラルネットワーク)で各フレームから抽出した特徴マップをLSTM(長・短期記憶)に入力し、LSTMの出力を別のCNNに入力し、各関節のヒートマップを推定する。非特許文献5では、オプティカルフローを利用して前後のフレームのヒートマップを当フレームに遷移させて当フレームの姿勢推定の精度を向上させる。非特許文献6では、別フレームのヒートマップと当フレームのヒートマップの差分を専用サブネットワークに入力し、別フレームのヒートマップを当フレームに遷移させる。
【先行技術文献】
【非特許文献】
【0007】
【非特許文献1】Z. Cao, G. Hidalgo Martinez, T. Simon, S.Wei, and Y. A. Sheikh. Openpose: Realtime multi-person 2d pose estimation using part affinity fields. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2019.
【非特許文献2】Ke Sun, Bin Xiao, Dong Liu, and JingdongWang. Deep high-resolution representation learning for human pose estimation. In CVPR, 2019.
【非特許文献3】Zhou, Lu, Yingying Chen, Jinqiao Wang, and Hanqing Lu. "Progressive Bi-C3D Pose Grammar for Human Pose Estimation." In AAAI, pp. 13033-13040. 2020.
【非特許文献4】Luo, Yue, Jimmy Ren, Zhouxia Wang, Wenxiu Sun, Jinshan Pan, Jianbo Liu, Jiahao Pang, and Liang Lin. "LSTM pose machines." In Proceedings of the IEEE conference on computer vision and pattern recognition, pp. 5207-5215. 2018.
【非特許文献5】Pfister, Tomas, James Charles, and Andrew Zisserman. "Flowing convnets for human pose estimation in videos." In Proceedings of the IEEE International Conference on Computer Vision, pp. 1913-1921. 2015.
【非特許文献6】Gedas Bertasius, Christoph Feichtenhofer, Du Tran, Jianbo Shi, and Lorenzo Torresani. Learning temporal pose estimation from sparsely-labeled videos. In Advances in Neural Information Processing Systems 32, pages 3027-3038, 2019.
【非特許文献7】Papandreou, George, Tyler Zhu, Liang-Chieh Chen, Spyros Gidaris, Jonathan Tompson, and Kevin Murphy. "Personlab: Person pose estimation and instance segmentation with a bottom-up, part-based, geometric embedding model." In Proceedings of the European Conference on Computer Vision (ECCV), pp. 269-286. 2018.
【非特許文献8】Lugaresi, Camillo, Jiuqiang Tang, Hadon Nash, Chris McClanahan, Esha Uboweja, Michael Hays, Fan Zhang et al. "Mediapipe: A framework for building perception pipelines." arXiv preprint arXiv:1906.08172 (2019).
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかし、従来技術は、時間軸の情報を使うために、元々重いネットワークを更に複雑にさせて、計算量が増えてしまう。一方、実応用では、リアルタイム処理が必要である場合、または、計算リソースが限られる組込みシステムの場合、時間軸の情報を用いて計算量を削減することが重要である。
【0009】
なお、時間軸の情報を用いずに静止画のみを入力として骨格抽出・姿勢推定を行う従来技術としては、前掲の非特許文献2が高精度化を求めるアプローチであったのに対し、高速化を求めるアプローチも開発されている。例えば、Google社のPoseNet(非特許文献7)やMediaPipe(非特許文献8)のPose APIは端末上でリアルタイム処理が可能であるが、前述の通り、時間軸の情報を利用しない点から認識精度に改良の余地を残すものであった。
【0010】
以上のように、各種の従来技術では、映像を入力とすることで時間軸の情報を利用して、または静止画のみを入力とすることで時間軸の情報を利用せずに、骨格抽出・姿勢推定を行っていたが、いずれも単一の装置(クラウド上のサーバまたはユーザが利用する端末)で処理することを前提としていた。すなわち、従来技術においては、サーバまたは端末のいずれか単独のみで処理することを前提とすることで、処理速度と認識精度との両方を確保するのではなく、いずれか片方のみを重視するアプローチが取られていた。
【0011】
上記従来技術の課題に鑑み、本発明は、時間軸の情報を利用して認識精度を確保し、且つ処理速度も確保するようにすると共に、ネットワーク上で処理を適切に分担することのできる、骨格推定装置、端末、サーバ及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0012】
上記目的を達成するため、本発明は、通信ネットワークを介して相互に通信可能とされる端末及びサーバを含む、入力映像の各フレームについて深層学習ネットワークによる骨格推定を行う骨格推定装置であって、各フレームを第1種フレームまたは第2種フレームのいずれかとして区別し、第1種フレームについては、当該第1種フレームのみを静止画として第1深層学習ネットワークに入力して骨格推定結果を得る第1処理を適用し、第2種フレームについては、当該第2種フレームのみを静止画として第2深層学習ネットワークに入力して骨格推定の中間結果を得て、当該中間結果と当該第2種フレームよりも過去の少なくとも1つのフレームについての骨格推定結果との2つを少なくとも1つの遷移ネットワークに入力して少なくとも1つの遷移骨格推定結果を得て、当該中間結果及び遷移骨格推定結果を用いて当該第2種フレームの骨格推定結果を得る第2処理を適用し、前記第2処理においては、前記第2深層学習ネットワークによる処理と、前記少なくとも1つの遷移ネットワークによる処理と、がそれぞれ前記端末又は前記サーバにおいて分担して実行され、前記第2深層学習ネットワークは、前記第1深層学習ネットワークよりも軽量化されたものであることを特徴とする。また、前記骨格推定装置における端末又はサーバであることを特徴とする。また、コンピュータを前記端末又はサーバとして機能させるプログラムであることを特徴とする。
【発明の効果】
【0013】
本発明によれば、時間軸の情報を利用して骨格推定の認識精度を確保し、且つ処理速度も確保するようにすると共に、ネットワーク上で処理を端末とサーバとで適切に分担することが可能となる。
【図面の簡単な説明】
【0014】
【
図1】一実施形態に係る骨格推定装置の構成図である。
【
図2】一実施形態に係る骨格推定装置の機能ブロック図である。
【
図3】一実施形態に係る骨格推定部によるIフレーム及びPフレームで区別した処理の概要を示す図である。
【
図4】一実施形態に係る骨格推定装置の動作のフローチャートである。
【
図5】一実施形態に係る計画部による決定の動作のフローチャートである。
【
図6】例としてn=5の場合に、候補となる深層学習ネットワークの全てを列挙したものである。
【
図7】
図6の候補ネットワークについて構築されるグラフの例を示す図である。
【
図8】一実施形態に係る骨格推定部の詳細として、深層学習ネットワークで骨格推定部を実現する場合のネットワーク構造例を示す図である。
【
図9】一実施形態に係る骨格推定部で利用されるHRNet(高解像度ネット)のネットワーク構造を示す図である。
【
図10】一実施形態に係る骨格推定部で利用される遷移ネットワークのネットワーク構造を示す図である。
【
図11】一実施形態に係る骨格推定部での共通の手順(n)を行うネットワーク構造を示す図である。
【
図12】一実施形態に係る骨格推定部でのパラメータ等の設定例を示す図である。
【
図13】一般的なコンピュータにおけるハードウェア構成を示す図である。
【発明を実施するための形態】
【0015】
図1は、一実施形態に係る骨格推定装置10の構成図であり、骨格推定装置10はネットワークNWを通じて相互に通信可能とされる端末5及びサーバ6を備えることでネットワークNW上のシステムとして構成される。
【0016】
図2は、一実施形態に係る骨格推定装置10(
図1にも示す通り、端末5及びサーバ6によりシステムとしての骨格推定装置10が実現される)の機能ブロック図であり、図示するように骨格推定装置10はフレーム配分部1、骨格推定部2及び計画部3を備え、骨格推定部2はIフレーム骨格推定部21及びPフレーム骨格推定部22を備え、計画部3はリソース算出部31及び決定部32を備える。
【0017】
骨格推定装置10は、その全体的な動作として、各時刻t=1,2,…のフレームF(t)で構成される入力映像を読み込み、この映像の時間軸情報を考慮したうえでの各フレームF(t)の骨格推定結果FH(t)をヒートマップの形式で出力することができる。(なお、この
図2や後述する各図においては、当該出力される骨格推定結果FH(t)に対応する挿絵として、ヒートマップにおいて信頼度が最大の位置を関節位置とした骨格の模試例を示している。)各部の処理内容の概要は次の通りである。
【0018】
フレーム配分部1では、入力映像の各フレームF(t)についてIフレームまたはPフレームの2種類のいずれに該当するかの区別を付与して骨格推定部2へと出力する。骨格推定部2ではIフレームに該当するフレームF(t)についてはIフレーム骨格推定部21により骨格推定を行い、また、Pフレームに該当するフレームF(t)についてはPフレーム骨格推定部22により骨格推定を行うことにより、各フレームF(t)におけるヒートマップとしての骨格推定結果FH(t)を出力する。
【0019】
図3は、一実施形態に係る骨格推定部22によるIフレーム及びPフレームで区別した処理の概要を示す図である。
図3ではフレーム配分部1によってフレームF(t)がIフレームとして決定され、これに続くk枚の連続フレームF(t+1),F(t+2),…,F(t+k)がPフレームとして決定された場合の骨格推定部22による処理の一例を模式的に示している。
【0020】
図3に示すように、Iフレームとして決定されたフレームF(t)については、この1枚のフレームF(t)のみを入力として、Iフレーム骨格推定部21が静止画に対する骨格推定の手法により骨格推定結果FH(t)を得ることができる。また、Pフレームとして決定された各フレームF(t+n)(n=1,2,…,k)については、当該フレームF(t+n)と、これよりも過去の1つ以上のフレーム(例えばF(t+n-1),F(t+n-2),…)と、を入力としてPフレーム骨格推定部22が時間軸情報を考慮した手法により骨格推定結果FH(t+n)を得ることができる。この際、当該フレームF(t+n)よりも過去の1つ以上のフレーム(例えばF(t+n-1),F(t+n-2),…)については、既に推定済みである骨格推定結果(例えばFH(t+n-1),FH(t+n-2),…)を入力として、Pフレーム骨格推定部22では骨格推定結果FH(t+n)を得ることができる。
【0021】
図3の例では以下の手順(0),(1),(2),…(k)によって骨格推定結果を得ることができる。なお、Iフレーム骨格推定部21の処理は以下の手順(0)であり、Pフレーム骨格推定部22の処理は以下の手順(1),(2),…(k)である。
<手順(0)> IフレームF(t)について、当該フレームF(t)のみを入力として骨格推定結果FH(t)を得る。
<手順(1)> PフレームF(t+1)について、当該フレームF(t+1)と、1つ前の時刻で既に推定済みであるIフレームの骨格推定結果FH(t)と、の2データを入力として骨格推定結果FH(t+1)を得る。
<手順(2)> PフレームF(t+2)について、当該フレームF(t+2)と、1つ前及び2つ前の2時刻でそれぞれ既に推定済みであるPフレーム及びIフレームの骨格推定結果FH(t+1)及びF(t)と、の3データを入力として骨格推定結果FH(t+2)を得る。
…
<手順(k)> PフレームF(t+k)について、当該フレームF(t+k)と、1つ前及びk個前の2時刻でそれぞれ既に推定済みであるPフレーム及びIフレームの骨格推定結果FH(t+k-1)及びFH(t)と、の3データを入力として骨格推定結果FH(t+k)を得る。
【0022】
なお、手順(1),(2),…(k)では、当該骨格推定対象となるPフレームよりも過去のIフレームで、最も時間的に近い過去のIフレームとしてフレームF(t)を利用している。
【0023】
なお、上記の手順(2)~(k)は共通であって、n=2,3,…,kとして以下の共通の手順(n)として記述できるものである。
<手順(n)> PフレームF(t+n)について、当該フレームF(t+n)と、1つ前及びn個前の2時刻でそれぞれ既に推定済みであるPフレーム及びIフレームの骨格推定結果FH(t+n-1)及びFH(t)と、の3データを入力として骨格推定結果FH(t+n)を得る。
【0024】
なお、より一般には、n≧1としてこの手順(n)は次のようにしてもよい。(n=1の場合は、当該PフレームF(t+1)と、1つ過去のIフレームF(t)の推定結果FH(t)とが入力となって、手順(1)に一致する。)
<手順(n)…一般の場合>
<手順(n)> PフレームF(t+n)について、当該推定対象であるフレームF(t+n)と、1つ前からn個前までのn時刻でそれぞれ既に推定済みである(n-1)枚のPフレーム及び1枚のIフレームの合計n回分の骨格推定結果FH(t+n-1)、FH(t+n-2)、…、FH(t+1)、FH(t)のうち全部または一部(n個~1個の推定済みデータ)と、を入力として、骨格推定結果FH(t+n)を得る。(なお、骨格推定結果FH(t+n)を得るために対象フレームF(t+n)に加えてこれらn個の推定済みデータのうちいずれを利用するか等については、後述する計画部3においてリソース等を考慮して決定される。)
【0025】
図3の例では、以下のようにして映像を対象として認識精度を維持しつつ計算量を抑制して骨格推定結果を得ることができる。すなわち、IフレームF(t)については、静止画として扱って高精度に骨格推定を得るようにし、これに続く各PフレームF(t+1),F(t+2),…,F(t+k)については、計算量を抑制して(当該1枚の静止画について得られる中間出力において精度を下げて)静止画に対する骨格推定の手法を適用しながらも、併せて過去時刻において既に高精度に推定された結果も利用することで、これら処理全体によって精度を確保することで、映像に対して計算量を抑制しながらも精度を確保して骨格推定結果を得ることができる。この詳細については以下でさらに説明する。
【0026】
また、
図3の例では、入力映像の各フレームF(t)をその時刻tの順番で処理して骨格推定結果FH(t)を得るようにすることから、入力映像としてその場でリアルタイムに撮影している映像を読み込んでリアルタイムに骨格推定結果を得るようにすることも可能となる。(一方で、リアルタイムではなく既に撮影され保存されている映像を読み込んで骨格推定結果を得ることも可能である。)
【0027】
本実施形態では以上のように、時間軸の情報を考慮して高精度に処理を行い、且つ、骨格推定部2においてIフレームとPフレームとで区別した処理を行うことにより高速に処理を行うことが可能である。
【0028】
一方で、本実施形態においてはさらに、骨格推定部2における骨格推定のための複数の処理を、計画部3において適応的に求められる計画に従って、端末5及びサーバ6に当該複数の処理の各々を振り分けて実行することにより、リソース最適化を実現してシステムとしての骨格推定装置10の性能を最大化することが可能となる。
【0029】
なお、計画部3は、端末5又はサーバ6の少なくともいずれかに設けるようにすればよく、設けられていない側が存在する場合は、計画部3で設定した計画を当該設けられてない側に送信して共有すればよい。例えばサーバ6のみに計画部3が備わる構成の場合、この計画部3で設定した計画を端末5へと送信して、端末5及びサーバ6において当該計画に従った処理を分担して行い、システムとしての骨格推定装置10全体の処理を実現するようにすればよい。
【0030】
図4は、一実施形態に係る骨格推定装置10の動作のフローチャートであり、リアルタイムの各時刻t=1,2,…のフレームF(t)を順次読み込んで骨格推定結果FH(t)を出力する際の動作を示すものである。以下、
図4の各ステップを説明しながら、計画部3による端末5及びサーバ6への処理の振り分け等について説明する。
【0031】
ステップS1では、最新時刻tのフレームF(t)を骨格推定の処理を行う対象として読み込んでからステップS2へと進む。
【0032】
なお、このフレームF(t)は、例えば端末5においてリアルタイムに撮影を行って取得しているものであってよく、計画部3による処理割り振りにおいて、このフレームF(t)をサーバ6側での処理に利用するものとして決定された際には、フレームF(t)が端末5からサーバ6へと送信されることとなる。
【0033】
ステップS2では、当該フレームF(t)がIフレーム又はPフレームのいずれであるかをフレーム配分部1が以下のようにして決定し、Iフレームに該当する場合はステップS3へと進み、Pフレームに該当する場合にはステップS5へと進む。
【0034】
フレーム配分部1では、入力映像の各時刻t(t=1,2,…)のフレームF(t)について、次の骨格推定部2における処理の仕方を区別するためにIフレームまたはPフレームの区別を付与する。この区別は、
図3で例示したように、Iフレームを所定の一定間隔ごとに時間軸上で間欠的に設け、Iフレームの間に存在する連続フレームを全てPフレームとするようにしてよい。
図3の例では、k+1枚の連続時刻フレームごとの周期単位で、1枚のIフレームと、これに続くk枚のPフレームとを設定する例となっている。例えば、kの値を所定の正整数として設定しておき、フレーム時刻の整数がk+1で割り切れる場合はIフレームとし、割り切れない場合はPフレームとする等により、
図3の設定が可能である。
【0035】
なお、本実施形態では既存の映像符号化手法との類推から便宜上、フレーム配分部1で区別する2種類のフレームをIフレーム(映像符号化の場合、イントラ予測(フレーム内予測)により当該フレームのみを用いて符号化するフレーム)及びPフレーム(映像符号化の場合、フレーム間予測により当該フレーム以外も用いて符号化するフレーム)と称しているが、本実施形態は入力映像に対する映像符号化の態様とは独立に実施可能である。従って例えば単純に、Iフレームを第1種フレーム、Pフレームを第2種フレーム等と称してもよいが、以下でも便宜上の名称としてIフレーム及びPフレームを用いるものとする。
【0036】
フレーム配分部1によるI,Pフレーム区別の追加的な実施形態として、入力映像に対して既存のシーン検出技術を適用し、シーンが切り替わった直後と判定されたフレーム(新しいシーンの最初の時刻のフレーム)に関しては強制的にIフレームであるものとして設定するようにしてもよい。当該強制的に設定されたIフレーム以降については以上と同様に、連続kフレームをPフレームとし、k+1フレームの周期でIフレームを1枚ずつ間欠的に配置してよい。
【0037】
ステップS3では、Iフレームとして決定された当該フレームF(t)について、当該フレームF(t)のみを静止画として入力してIフレーム骨格推定部21において処理することにより、骨格推定結果FH(t)を得てからステップS4へと進む。
【0038】
ここで、計画部3による固定的な計画として、Iフレーム骨格推定部21の処理を行うのはサーバ6であるものとして予め設定しておく。すなわち、Iフレームに該当するフレームF(t)に関しては、サーバ6のみがIフレーム骨格推定部21の処理を行うことにより、端末5側で処理を行うことなく、推定結果FH(t)を得る。サーバ6において実現されるIフレーム骨格推定部21の処理の詳細に関しては後述する。
【0039】
ステップS4では、当該フレームF(t)に関して(ステップS3またはステップS5で)得られた骨格推定結果FH(t)を端末5において出力(例えば、端末5を利用するユーザに対して画像等の形で見えるようにして出力)し、且つ、当該結果FH(t)を後の未来の時刻(次の時刻t+1以降)における骨格推定装置10での処理において参照可能なように共有(端末5及びサーバ6で共有することで、
図2に示されるように骨格推定部2及び計画部3で参照可能とする)してから、ステップS1へと戻る。(当該戻ったステップS1では次の最新時刻t+1について同様に処理が行われることにより、リアルタイムでの映像に対する骨格推定処理が継続される。)
【0040】
ステップS5では、Pフレームとして決定された当該フレームF(t)について、当該フレームF(t)と、これよりも過去の少なくとも1つのフレームについて既に推定済みである、少なくとも1つの結果FH(t-i)(i>0)と、を入力として、Pフレーム骨格推定部22が処理を行うことで骨格推定結果FH(t)を得てからステップS4へと進む。
【0041】
ここで、Pフレーム骨格推定部22は複数の深層学習ネットワークの組み合わせとして構成されるが、リソース算出部31によるリソース算出結果を考慮して、決定部32が複数の深層学習ネットワークのうちいずれの処理を端末5で実行し、いずれの処理をサーバ6で実行するかの役割分担を決定し、端末5及びサーバ6では当該役割分担に従ってPフレーム骨格推定部22の部分的な処理をそれぞれ実行する。
【0042】
以上、
図4の各ステップS1~S5について説明した。以下ではステップS5の詳細に関してさらに説明する。
【0043】
Pフレーム骨格推定部22では、前述した「一般の手順(n)」を実行する。この前述の説明と文字変数を一致させて説明を明確にする便宜上、ステップS5で骨格推定対象として扱っている現時刻のPフレームをF(t+n)とする。(すなわち、現時刻はtではなく、t+nであるものとする。)前述の通り、この一般の手順(n)では、入力として少なくとも当該PフレームF(t+n)に加えてさらに、これよりも過去のn-1個(IフレームF(t)が初めて現れるまでの連続した過去としてn-1個)における(n-1)枚のPフレーム及び1枚のIフレームの合計n回分の骨格推定結果FH(t+n-1)、FH(t+n-2)、…、FH(t+1)、FH(t)と、のn個データのうち全部または一部(n=1の場合、Iフレームの推定結果FH(t)のみ)を入力とする。
【0044】
ここで、当該PフレームF(t+n)のデータに加えて、n個の過去時刻での推定済みデータのいずれを入力として用いるかによって、Pフレーム骨格推定部22の深層学習ネットワークの規模が変わることとなる。より多数の入力を用いることで、深層学習ネットワークの規模がより大規模となって計算量が増える代わりに、より高精度な骨格推定結果FH(t+n)が得られることが期待される。すなわち、規模と推定精度にトレードオフの関係がある。当該トレードオフ関係のもと、計画部3ではn個のデータのいずれを入力として用いるかを決定することにより、当該規模もリソースに応じて最適なものを決定する。既に説明した通り、当該規模が決定された深層学習ネットワーク内における処理の端末5及びサーバ6での分担に関しても、計画部3が決定する。
【0045】
図5は、一実施形態に係る計画部3による当該決定の動作のフローチャートである。ステップS11では、計画部3が当該推定対象のPフレームF(t+n)を推定するための深層学習ネットワークの候補を列挙してから、ステップS12へと進む。
【0046】
ここで、前述したn個の過去データのいずれを入力として用いるかの設定により、当該候補となる深層学習ネットワークの各々が定まることとなる。
図6は、例としてn=5(現時刻t+n=t+5)の場合に、当該候補となる深層学習ネットワークの全てを列挙したものであり、図示される第2候補N2~第6候補N6のいずれ(全て又は一部)を用いるかによって、候補となる深層学習ネットワークの各々が定まる。ここで、第1候補N1は軽量CNNとして構成されるネットワークLT5であって当該現時刻t+5のPフレームF(t+5)のみを入力とするものであり、第2候補N2~第6候補N6は全て同一の遷移ネットワークとして構成されるネットワークTR50~TR54であって、候補としてn=5個の過去推定済みのデータの各々(及びMH(t+5))を入力とするものである。(なお、これら軽量CNNと遷移ネットワークのネットワーク構成の詳細に関しては、Iフレーム推定部21のネットワーク構成(大規模CNN)の説明と共に後述する。
図6の例等では、候補ネットワークとして、入出力の関係にのみ注目する。)
【0047】
図6にも示される通り、第1候補N1~第6候補N6の要素ネットワークは以下のような処理を行うものである。このうち、第2候補N2~第6候補N6はn=5個の過去データのいずれを利用するかに応じた候補として用意されるものであり、この
図6の例では、「2
5-1=31」通りの選び方の候補が存在することとなる。(なお、過去データが1つも選ばれない場合も含めて「2
5=32」通りの候補でもよい。)
【0048】
(第1候補N1)…当該PフレームF(t+5)を入力として軽量CNNの処理を行うことで中間出力MH(t+5)を得る。
(第k候補Nk)(k=2,…,6)…上記の中間出力MH(t+5)と、過去フレームF(t+k-2)について既に得られている推定結果FH(t+k-2)と、の2つを入力として遷移ネットワークの処理を行うことで、中間出力としての遷移ヒートマップTH(t+k-2,t+5)を得る。(なお、この遷移ヒートマップTH(t+k-2,t+5)は、後述する通り、当該時刻t+5のヒートマップを過去時刻t+k-2も考慮して推定したものに相当する。)
【0049】
なお、以上の第1候補N1~第6候補N6の要素ネットワークの全部または一部を選択(この際、現時刻t+5のPフレームF(t+5)のみを入力とする第1候補N1は必ず選択)し、結果として得られる1個以上6個以下のそれぞれの中間結果を、
図6の右側に示すように加算処理A5(重みづけ和)で統合することで、当該PフレームF(t+5)についての骨格推定結果FH(t+5)が得られることとなる。(当該統合処理は端末5において行えばよい。)ここで前述の通り、多数の結果を利用するほど、時間軸の情報をより多く活用することによって推定精度が向上することが期待される代わりに、計算量等が増えるというトレードオフの関係がある。
【0050】
また、第k候補Nk(k=2,…,6)の要素ネットワーク(遷移ネットワーク)の処理を行う際は、詳細を後述するように、2つの入力の差分がネットワークに入力される。(
図6では当該差分を取る処理は、図面の煩雑化を防止する便宜上、明示的に描くのを省略している。)
【0051】
ステップS11ではまた、このように候補として列挙されたネットワーク要素の各々について、リソース算出部31が当該ネットワーク要素の処理を行うためのコストの値costを以下の式(1)で計算しておく。(なお、当該コストの値costは以下に説明するように、処理時間や推定品質などの、互いに次元の異なる値を加算して算出するが、加算の際の係数の設定により共通次元の値として求めることができる。)
cost=time+γ*accuracy …(1)
【0052】
ここで、timeは予め実験等により求めておく各候補ネットワークNkの処理時間(端末5とサーバ6で区別して求めておく)であり、端末5及びサーバ6の各々でリアルタイムに変動するリソース状況(CPUやGPU等のリソースの使用状況)に応じた値として、各候補ネットワークNkの処理完了に要する時間をテーブル形式等で予め求めておく。すなわち、リソース状況を表す値をR(大きいほどリソースが豊富で負荷の少ない状態とする)として、以下のような処理時間timeを端末5及びサーバ6に関してテーブル形式等で記憶しておく。
time=time(Nk, R)
なお、リソース状況Rに依存しないものとして、以下の処理時間timeを端末5及びサーバ6に関してテーブル形式等で記憶しておくようにしてもよい。
time=time(Nk)
【0053】
また、γは事前に設定した重み(γ>0)であり、accuracy=accuracy(Nk)は予測した各候補Nkの骨格抽出認識精度に基づくコスト(推定される認識精度が高いほど低く算出されるコスト)である。このaccuracyは各候補の入力の品質と当フレームとの時間差により以下の式(2)で予測する。
accuracy=time_diff+α*input …(2)
【0054】
ここで、time_diffは、もう一方の入力フレームと当該推定対象PフレームF(t+k)の時間差(絶対値)であり、当該時間差が大きいほど式(1)のコストを高めるように作用する。αは事前に設定した重み(α<0)であり、inputは要素ネットワークに対する入力の品質であり、負の値を有する重みαの適用により、この品質が高いほど式(1)のコストが下がり、当該候補の選択される可能性を高めるように作用する。(後述するように、骨格抽出精度は本来であれば抽出後の出力から評価するものであるが、実際に計算しないと出力は得られないため、本実施形態では出力の品質の推定値として、既に計算済みとなっている入力の品質を用いる。)なお、時間差time_diffは、
図6の例で当該推定対象PフレームF(t+5)のみを入力とする第1候補N1についてはゼロとすればよく、
図6の例においては以下のように求めることができる。
time_diff(N1)=0, time_diff(N6)=1, time_diff(N5)=2, time_diff(N4)=3,
time_diff(N5)=4, time_diff(N2)=5
【0055】
当該品質としてのinputの値は、
図6の例の第k候補Nk(k=2,…,6)の入力である遷移ヒートマップの場合は、当該遷移ヒートマップ(関節ごとに用意されている)の関節ごとの最大値の平均値とすればよい。(ヒートマップの最大値は関節推定精度に対応すると考えられるため、このようにしてよい。)例えば
図6の例では以下のようにすればよい。
input(N2)=FH(t)の最大値、input(N3)=FH(t+1)の最大値、
input(N4)=FH(t+2)の最大値、input(N5)=FH(t+3)の最大値、
input(N6)=FH(t+4)の最大値
【0056】
一方、第1候補N1(軽量CNN)の場合の入力は当該推定対象となるPフレームF(t+5)自身であって推定結果FH(t+5)が得られておらず、その品質は不明であるため、直前のフレームF(t+4)について既にヒートマップとして得られている推定結果(最終的な統合ヒートマップFH(t+4)ではなく、軽量CNNの出力MH(t+4)でよい)の品質の値(関節ごとの最大値の平均値)を、inputの推測値として用いるようにすればよい。すなわち、以下のようにすればよい。
input(N1)=MH(t+4)の最大値
【0057】
なお、これら品質値inputの設定は以下のような考察に基づく。
【0058】
<第k候補Nk(k=2,…,6)の遷移ネットワークの場合>
入力が遷移前のヒートマップである。入力の品質はこのヒートマップが正しいかどうかということである。つまりヒートマップの信頼度であり、ヒートマップの最大値と同じである。(直感的に、遷移前のヒートマップが低品質であれば、遷移しても品質は低いものと考えられる。)
【0059】
<第1候補N1の軽量CNNの場合>
入力が当フレームの画像F(t+5)である。入力の品質は、骨格抽出に不都合な、当フレームの画像でボケがあるかどうか、または、隠れがあるかどうか等に左右される。ここで残念ながら軽量CNNを経由せずに、品質の測定が困難である。そのため、直前のフレームF(t+4)において、軽量 CNNから出力したヒートマップMH(t+4)の品質を利用して当フレームの品質を推測する。つまり、直前のヒートマップが正しいと、当フレームのヒートマップも正しいと推測する。
【0060】
ステップS11ではさらに、リソース算出部31が現時刻t+n(
図6の例ではn=5)におけるサーバ6及び端末5の計算リソースの値Rを把握しておくことで、上記time(=time(Nk,R))の算出を可能とする。(なお、リソース値Rに依存しないtime=time(Nk)の場合も、当該リソース値Rを以降の処理で管理する必要があるため、リソース値Rを算出しておく。)この際、計算時間に加えて、通信遅延も考慮する。通信遅延は動的に変化するため、サーバ6と端末5との間の通信速度をリアルタイムに測定し、サーバ6のtimeの値に加算する。(端末5は結果表示を行う側であるため、通信遅延の値をtimeの値には加算しない。)一方、端末5及びサーバ6の各々でのリソースはOSから情報(CPU,GPU速度及びCPU,GPU使用率や、メモリ容量及びメモリ使用率など)を動的に収集し、それぞれリソース値RS
[初期値]及びRT
[初期値]として取得されたものとする。
【0061】
以上により、サーバ6及び端末5でのtimeの値は以下の式(a),(b)のように算出できる。(以下はリソース依存の値として算出したが、リソース非依存であってもよい。また、(a)では通信遅延を加算しているが、通信遅延が無視できる状況などでは、加算しない(通信遅延をゼロとみなす)ようにしてもよい。)
サーバ6のtime=S_time(Nk, RS[初期値])=time(Nk,RS[初期値])+「通信遅延」 …(a)
端末5のtime= T_time(Nk, RT[初期値])=time(Nk,RT[初期値]) …(b)
【0062】
前述のように、リソース依存の値の場合は、サーバ6及び端末5のリソース(例えばCPU使用率等の少なくとも1つのリソース項目)状況に対して各候補ネットワークNkの処理完了の所要時間をテーブル形式で求めておき、このテーブルを参照して、当該時点でのサーバ6及び端末5の実際のリソース下での処理完了時間を取得することができる。
【0063】
なお、後述する
図7の例で示すように、リソースに関しては、各候補ネットワークNkで処理を行う旨を決定した場合には、当該処理の分だけリソースが減るものとして取得可能なように、各候補ネットワークNkの必要リソースの情報も、サーバ6及び端末5において予め実験等により求めておく。また、これ以上のリソース提供が不可能となる、サーバ6及び端末5のリソース限界の情報も、予め実験等により求めておく。
【0064】
以上、事前情報の取得としてのステップS11を終えた後のステップS12~S14は、
図5に示される通りの繰り返し処理であって、決定部32が逐次的に、ステップS11で用意されたネットワーク要素の候補の中から、ステップS11で推定又は計測等されたリソースの許容する範囲内で、サーバ6及び端末5で行う処理の役割分担を交互に逐次的に決定していく処理となる。前述の通り、ステップS11で初期値として把握した当該時点でのサーバ6及び端末5のリソースの値(余裕があるほど大きな値とする)がそれぞれRS
[初期値]及びRT
[初期値]である。説明のため、当該リソースが利用可能かを管理するサーバ6及び端末5の変数(残っているリソースを表す変数)をそれぞれ、RS
[利用可能]及びRT
[利用可能]とする。ステップS11では初期値リソースを把握した後、管理変数に以下のように初期値を設定してから、ステップS12へと進む。
RS
[利用可能]= RS
[初期値]
RT
[利用可能]= RT
[初期値]
【0065】
ステップS12では、ネットワーク候補のうち未選択のものの中から、サーバ6に処理を割り当てる1つの要素を決定してからステップS13へと進む。ステップS13では、ネットワーク候補のうち未選択のものの中から、端末5に処理を割り当てる1つの要素を決定してからステップS14へと進む。これらのステップS12,S13では、前述の式(a),(b)によるサーバ6及び端末5のtimeの値を、現状でのリソース残量RS[利用可能]及びRT[利用可能]の元で以下のように計算して、前述の式(1)で与えられるcostを当該計算したtimeによって以下のように評価し、このcost=cost(Nk)の値が最小となるような候補Nk(未選択のもの)をそれぞれ選択する。
(サーバ6に関して) cost= S_time(Nk, RS[利用可能])+γ*accuracy
(端末5に関して) cost= T_time(Nk, RT[利用可能]) +γ*accuracy
【0066】
これらのステップS12,S13において決定された要素によってサーバ6及び端末5で消費されるリソースをそれぞれRS[消費]及びRT[消費]とすると、ステップS12,S13ではさらに、利用可能なリソース値を以下のように更新する。この消費リソースの値も、候補となる各処理Nkごとに予め実験などで算出しておけばよい。
RS[利用可能]= RS[利用可能]-RS[消費]
RT[利用可能]= RT[利用可能]-RT[消費]
【0067】
ステップS14では、サーバ6及び端末5に利用可能な計算リソースが残っているか否かを判定し、肯定判定の場合(リソースが残っている場合)にはステップS12へと戻ってさらに割り当てを継続するようにし、否定判定の場合(リソースが残っていない場合)にはステップS15へと進む。すなわち、ステップS14では、更新され管理されているサーバ6及び端末5での利用可能な残存リソースの値RS[利用可能]及びRT[利用可能]が、さらなる処理を追加で行うことを許容できる所定範囲内にあるかを判定し、許容できればステップS12へと戻る。(例えば、CPU使用率のみに基づいてリソース値を管理するものとし、CPU使用率が90%未満であるリソース値の範囲においては追加処理を許容するといった判定が可能である。)なお、端末5又はサーバ6の片方でリソースが許容範囲外となった場合には、リソースが許容範囲内である端末5又はサーバ6のもう一方のみに関して、リソースが許容範囲外となるまで、ステップS12又はS13を継続するようにしてもよい。
【0068】
ステップS15では、以上の繰り返しのステップS12~S14の中で割り当てられたサーバ6及び端末5での処理分担の内容を、決定部3が出力して、
図5のフローを終了する。なお、この
図5のフロー全体は、
図4のステップS5における役割分担決定の一例となっているため、
図5のフローが終了すると
図4のステップS5において、当該決定された役割分担に従って、サーバ6及び端末5によってPフレーム骨格推定部22の処理が行われることで、骨格推定結果が得られることとなる。
【0069】
なお、例えば
図6の例であれば、第1候補N1の処理を実行することが第2候補N2~第6候補N6の処理を行うために必須である(2入力のうちの1つとしてのMH(t+5)を用意するために必須である)ため、
図5のステップS12~S14の繰り返しの初回において、ステップS12又はS13のいずれかで必ず、サーバ6又は端末5が第1候補N1の処理を実行するものとして決定するという制約を課してもよい。サーバ6又は端末5のいずれが第1候補N1の処理を実行するかは、固定的に設定しておいてもよいし、サーバ6又は端末5のうち、第1候補N1の処理のコストが低い側として決定してもよい。
【0070】
以下、
図5のステップS12~S14における決定部32の処理の詳細に関して、
図6の候補例の場合を例として説明する。決定部32では、候補となる要素ネットワークの各々をノードとすることで、グラフを構築し、当該グラフ上から最適なパスを探索することにより、役割分担を決定することができる。
【0071】
図7は、
図6の候補ネットワークについて構築されるグラフの例を示す図であり、第1候補N1~第6候補N6がそのまま、6個のノードN1~N6として割り当てられることでグラフが構築される。
図7にて、N0をダミー(形式上のみ)となるスタートのノードとして用意し、N1~N6のノードは前記の通りの各候補であり、エッジは前記算出したコストである。例えば、N0とN1間のエッジはN1(=第1候補)のコストである。まず、N0とNk(k=1~6)間に最もコストが少ないエッジ(N2であったとする)を選択する。そして、前述の通り以下のようにサーバ6に残ったリソースを算出し、選択されたエッジN2を以降での選択対象から除外する。ここで、RS
[消費]は当該選択されたエッジN2の処理をサーバ6が実行するのに要するリソースであり、事前評価されている値を用いる。
RS
[利用可能]= RS
[利用可能]-RS
[消費]
【0072】
次に、端末5の候補を選択する。N2とNk間に最もコストが少ないエッジを選択する。(この際、既に選択した候補N2を除外することでk=1,3~6とする)。同様に、端末5に残ったリソースを以下のように算出し、選択されたエッジN4を以降での選択対象から除外する。ここで、RT[消費]は当該選択されたエッジN4の処理を端末5が実行するのに要するリソースであり、事前評価されている値を用いる。
RT[利用可能]= RT[利用可能]-RT[消費]
【0073】
上記のように、サーバ5と端末6で選択作業を繰り返し、サーバ5のリソースと端末6のリソースが完了するまで、或いは、ネットワーク候補が完了する(全て選択される)まで実施する。なお、当該繰り返し実施は、
図5にステップS12~S14の繰り返し処理として表現される通りであり、具体的には以上の
図7の例のように、グラフ上の経路探索として実現することができる。
【0074】
こうして、
図7の例では、経路「N0→N2(サーバ)→N4(端末)→N1(サーバ)→N5(端末)」が決定されることで、
図6に示される候補全体のうち2つの要素ネットワークN2,N1をサーバ6において実施して2つの中間結果を得て、2つの要素ネットワークN4,N5を端末5において実施して2つの中間結果を得て、これら4つの中間結果を端末5において統合処理A5により統合することで、推定結果FH(t+5)が得られることとなる。
【0075】
なお、
図5及び
図7の例では、決定部32で交互に役割分担を決定する際に、サーバ6に次いで端末5の役割分担を決定することを繰り返すものとしたが、これは逆であってもよい。すなわち、
図5のステップS12とS13とは、入れ替えることで逆の順番となるようにしてもよい。あるいは、交互ではなくサーバ6及び端末5で個別に決定してもよい。例えば、最初にサーバ6の役割分担を全て決定した後に、端末5の役割分担を全て決定するようにしてもよいし、その逆でもよい。
【0076】
以上、本発明の一実施形態によれば、時間軸の情報を利用して高精度化を実現しており、且つ、後述するように計算量の抑制も実現される深層学習ネットワークによる映像骨格抽出において、(通信)ネットワークNWを利用したサーバ6と端末5のハイブリッド処理で一部のフレームは端末5のリソースが一時的に尽きることによってサーバ6のみで処理し、一部のフレームはサーバ6のリソースが一時的に尽きることにより端末5で処理し、一部のフレームはサーバ6及び端末5のリソースが利用可能な状態にあることによりサーバ6と端末5の両方で処理することで、最適な計算リソース配分を実現することができる。この際、計算リソースにより、推論用ネットワークの規模等を動的に決めることができる。また、計算リソースにより、ネットワークで推論する場所を動的に決め、サーバ6及び端末5に役割分担を行わせることができる。
【0077】
以下、後述するとしていた、それぞれが深層学習ネットワークで構成されるIフレーム骨格推定部21及びPフレーム骨格推定部22の、深層学習ネットワークとしての構成の詳細等に関して説明する。なお、当該深層学習ネットワークを端末5及びサーバ6において役割分担させる処理については既に説明している通りであるため、以下ではこの役割分担については触れず、Iフレーム骨格推定部21及びPフレーム骨格推定部22の構成の詳細等のみについて説明する。
【0078】
なお、Pフレーム骨格推定部22は、前述の「一般の手順(n)」の全体が候補として用意されるものとなるが、この前提で深層学習ネットワークの説明を行うとネットワーク構成が複雑化してしまう(
図6のネットワーク構成となる)ため、以下では基本的に、図示されているものについては説明の便宜上、前述の一般ではない「手順(n)」(n入力の全体ではなく、3入力のみを利用する場合の一例であって手順(2)等が該当するもの)に限定してPフレーム骨格推定部22を実現する場合の構成について、説明するものとする。(一般の場合の構成も、
図6のネットワーク構成としてそのまま得ることができる。なお、図示する以外は、一般の場合に該当する説明もある。)
【0079】
図8は、一実施形態に係る骨格推定部21の詳細として、深層学習ネットワークで骨格推定部21を実現する場合のネットワーク構造例を示す図である。
図8では、
図3で説明した手順(0),(1),(2),…(k)のうち手順(0),(1),(2)を実行する部分のみをそれぞれ
図8の上段、中段、下段の部分に示している。
【0080】
図8では、個別の深層学習ネットワークとして、1つの大規模CNN(Large CNN)ネットワークLG0と、2つの軽量CNN(Light CNN)ネットワークLT1及びLT2と、3つの遷移(Transfer)ネットワークTR10,TR20,TR21と、が示されている。これらのうち、2つの軽量CNNネットワークLT1及びLT2は同一(同一ネットワーク構造及び学習パラメータ)とすることができ、また、3つの遷移ネットワークTR10,TR20,TR21も同一(同一ネットワーク構造及び学習パラメータ)とすることができるが、図示される通り入出力で扱うデータが異なるため、互いに区別した参照符号を付与してある。また、以下でも説明するように、大規模ネットワークLG0と、軽量ネットワークLT1,LT2とは、互いに共通構造(後述する
図9に例示される共通構造)のネットワークであるがその規模(後述する
図12に例示されるようなチャネル幅や解像度による規模)が異なる関係にある(学習パラメータも異なる)ものを利用することができ、軽量ネットワークLT1,LT2は大規模ネットワークLG0の規模を小さくして簡素化(軽量化)したネットワークを用いることができる。
【0081】
以下、
図8のネットワーク構造を有する骨格推定部2が実行する手順(0),(1),(2)についてそれぞれ説明する。
【0082】
<手順(0)> Iフレームである入力フレームF(t)を大規模CNNネットワークLG0で処理することにより、骨格推定結果としてのヒートマップFH(t)を得る。
【0083】
一実施形態では、大規模CNNネットワークLG0(及び後述する手順(1),(2)における軽量CNNネットワークLT1,LT2)として、
図9にそのネットワーク構造を示す前掲の非特許文献2のHRNet(高解像度ネット)を用いることができる。
【0084】
図9では説明欄EXに示すように、左向きの水平方向矢印が畳み込み処理を行うことを、左下向きの矢印がダウンサンプリングを行うことを、左上向きの矢印がアップサンプリングを行うことを、それぞれ示している。また、矢印の矢先部分(出力部分)が複数重複している場合は、対応するデータ(複数のテンソル)の加算を行う。また、矢印の間に記載されているm11等は、当該矢印で示される処理により得られる中間データとしての特徴マップ(テンソル)を表している。
【0085】
HRNetの手法では、
図9に上段部分に示される特徴マップ群m11~m19において高解像度で処理を行い、中段部分に示される特徴マップ群m23~m29において中解像度で処理を行い、下段部分に示される特徴マップ群m37~m39において低解像度で処理を行い、これらピラミッド状の3つの解像度段階で並行して処理を行うことで静止画入力に対して高精度に骨格推定結果を得ることができる。なお、2つ以上の任意の段階数で構成されるこのようなピラミッド状の構造によりHRNetを構成してよく、
図9ではその一例として3段階の場合を示している。
【0086】
HRNet内での処理は以上説明した通りであるが、畳み込み処理、ダウンサンプリング処理、アップサンプリング処理をそれぞれ関数conv(),down(),up()として表記することで部分的に例を示すと以下の通りである。
m11=conv(F(t))
m13=conv(m12)
m23=down(m12)
m19=conv(m18)+up(m28)+up(m38)
FH(t)=conv(m19)
【0087】
<手順(1)> Pフレームである入力フレームF(t+1)と、IフレームF(t)について既に得られている骨格推定結果FH(t)と、の2データを入力として、当該入力フレームF(t+1)の骨格推定結果FH(t+1)を得る。
図8中にも示される通り、この手順(1)は以下の手順(11),(12),(13)として実現することができる。
【0088】
<手順(11)> 入力データの1つであるフレームF(t+1)を軽量CNNネットワークLT1で処理して中間データとしてのヒートマップMH(t+1)を得て、このヒートマップMH(t+1)を差分器D10及び加算器A1へと出力する。
【0089】
<手順(12)> 入力データの1つであるヒートマップFH(t)と、手順(11)で得たヒートマップMH(t+1)と、の差分「FH(t)-MH(t+1)」を差分器D10で求め、この差分「FH(t)-MH(t+1)」を遷移ネットワークTR10で処理して遷移ヒートマップTH(t,t+1)を得て、この遷移ヒートマップTH(t,t+1)を加算器A1へと出力する。
【0090】
<手順(13)> 手順11で得た中間データのヒートマップMH(t+1)と、手順12で得た遷移ヒートマップTH(t,t+1)(同じく、中間データとしてのヒートマップに相当する)と、を加算器A1で加算して、当該入力フレームF(t+1)の骨格推定結果FH(t+1)を得る。
【0091】
図10は、上記の手順(12)で利用する遷移ネットワークTR10(及び前述したこれと同一であって後述する手順(2)で利用される遷移ネットワークTR20,TR21)のネットワーク構造を示す図であり、本実施形態では前掲の非特許文献6のサブネットワークを遷移ネットワークTR10,TR20,TR21として利用する場合を例として、
図10に示している。
【0092】
遷移ネットワークTR10,TR20,TR21ではヒートマップの差分(それぞれFH(t)-MH(t+1), FH(t)-MH(t+2), FH(t+1)-MH(t+2))を入力として、遷移ヒートマップTH(t,t+1),TH(t,t+2),TH(t+1,t+2)をそれぞれ出力する。ここで、遷移ヒートマップTH(a,b)とは、フレームF(b)のヒートマップを、当該フレームF(b)の情報のみではなくフレームF(a)の情報も(当該時刻bよりも過去時刻a(a<b)において既に得られているヒートマップFH(a)の情報を介して)利用することにより、2フレームF(a),F(b)の時間軸情報を利用して推定したものとなる。(なお、当該「遷移ヒートマップ」は既存手法の非特許文献6において「ワープトヒートマップ」(warped heatmap)として説明されるものに該当する。)
【0093】
図10に示されるように、遷移ネットワークTR10,TR20,TR21では以下の処理を行う。差分入力に対して前処理SRとして複数の残差ネット(Stack of ResNet)で処理を行い、出力を5つの拡張2次元畳み込み処理部2D-Conv(d)(拡張(dilation)パラメータd=3,6,12,18,24)へと入力し、中間出力としてのオフセットOFd(d=3,6,12,18,24)をそれぞれ得て、この中間データOFdをさらにオフセットを有するフィルタを用いる5つのdeformable(変形)畳み込み処理部Def-Conv(d)(オフセット量を指定する拡張(dilation)パラメータd=3,6,12,18,24)で処理して得られる5つの出力を加算して、最終的な出力である遷移ヒートマップを得ることができる。
【0094】
<手順(2)> Pフレームである入力フレームF(t+2)と、IフレームF(t)及びPフレームF(t+1)について既に得られている骨格推定結果FH(t)及びFH(t+1)と、の3データを入力として、当該入力フレームF(t+2)の骨格推定結果FH(t+2)を得る。
【0095】
図8中にも示される通り、前述の手順(1)と概ね対応して概ね同様のものとして、この手順(2)は以下の手順(21),(22a),(22b),(23)として実現することができる。(なお、手順(21)は手順(11)に、手順(22a),(22b)は手順(12)に、手順(23)は手順(13)に、概ね対応している。)
【0096】
<手順(21)> 入力データの1つであるフレームF(t+2)を軽量CNNネットワークLT2で処理して中間データとしてのヒートマップMH(t+2)を得て、このヒートマップMH(t+2)を差分器D20、差分器D21及び加算器A2へと出力する。
【0097】
<手順(22a)> 入力データの1つであるヒートマップFH(t)と、手順(21)で得たヒートマップMH(t+2)と、の差分「FH(t)-MH(t+2)」を差分器D20で求め、この差分「FH(t)-MH(t+2)」を遷移ネットワークTR20で処理して遷移ヒートマップTH(t,t+2)を得て、この遷移ヒートマップTH(t,t+2)を加算器A2へと出力する。
【0098】
<手順(22b)> 入力データの1つであるヒートマップFH(t+1)と、手順(21)で得たヒートマップMH(t+2)と、の差分「FH(t+1)-MH(t+2)」を差分器D21で求め、この差分「FH(t+1)-MH(t+2)」を遷移ネットワークTR21で処理して遷移ヒートマップTH(t+1,t+2)を得て、この遷移ヒートマップTH(t+1,t+2)を加算器A2へと出力する。
【0099】
<手順(23)> 手順21で得た中間データのヒートマップMH(t+2)と、手順22a,22bで得た遷移ヒートマップTH(t,t+2)及びTH(t+1,t+2)(同じく、中間データとしてのヒートマップに相当する)と、を加算器A2で加算して、当該入力フレームF(t+2)の骨格推定結果FH(t+2)を得る。
【0100】
なお、
図8では手順(2)までのみを示しているが、既に
図3を参照して説明したように、手順(2)以降の手順(2),(3),…(k)は全て、手順(2)と共通のものとして実施可能である。すなわち、これらはいずれも、n=2,3,…,kとして前述した共通の手順(n)として記述できるものであり、
図11に示すネットワーク構造によって可能である。(この手順(n)は、処理内容自体は手順(2)と同様で入力データがF(t+2),FH(t),FH(t+1)に代えてそれぞれF(t+n),FH(t),FH(t+n-1)となった点のみが相違する(n=2では手順(2)と一致する)ものであるため、重複する説明は省略する。)
【0101】
ここで、以上のように手順(0)においてIフレーム骨格推定部21による処理を行い、手順(1),(2)等においてPフレーム骨格推定部22による処理を行うことで計算量を抑制しつつ精度を確保できる効果の数値例として、Iフレーム骨格推定部21で用いる大規模CNNネットワークLG0と、Pフレーム骨格推定部22で用いる共通の軽量CNNネットワークLT1,LT2等と遷移ネットワークTR10,TR20,TR21等とのパラメータ等設定例(学習パラメータではなく、ネットワーク規模の設定パラメータ例)を紹介する。
【0102】
図12にこのパラメータ等の設定例の1つを示す。この設定では、共通のHRNetを異なる規模で設定しており、
図9のピラミッド構造として
図9のような3段階ではなく4段階の構造を採用した際の、最終出力段の4解像度段階のテンソル(特徴マップ)のチャネル幅を図示される通りに設定している。すなわち、
図9では3解像度段階のテンソルm19,m29,m39であるが、
図7の例では4段階目のテンソルm49に相当するものがさらに存在しており、これら4テンソルm19,m29,m39,m49のチャネル幅が図示される通り大規模CNNでは48,96,192,384であるのに対し、軽量CNNではこれより小さい32,64,128,256へと削減して設定する。チャネル幅はこのように最終出力段のみではなく、途中の部分の各テンソル(特徴マップ)でも同様に、軽量CNNの方を大規模CNNよりも削減して設定する。なお、HRNetに入力する画像の解像度も、当該チャネル幅の設定に応じて、大規模CNNの384x288に対して軽量CNNでは低解像度化した256x192とする。(従って、
図8や
図11の説明では省略したが、軽量CNNであるLT1,LT2,LTn等へ画像を入力する際は、前処理としてこのように低解像度化して解像度をネットワークに合わせるようにする処理も行われる。また、軽量CNNの出力も大規模CNNの出力と比べて低解像度化されているため、Iフレームにおける高解像度の出力と合わせて利用する際は、低解像度側に合わせる処理を行う。例えば
図8の差分器D10では、「高解像度から低解像度化したFH(t)」と「低解像度のMH(t+1)」の差分を求める。)
【0103】
この設定により、大規模CNNネットワークの計算量(約32.9GFOPs)に対して軽量CNNネットワークの計算量(約7.10GFOPs)へと2割程度に抑制することができる。この設定例により、k=15として1枚のIフレームとこれに続く15枚のPフレームを16枚ごとの周期的な処理単位として本実施形態を適用した場合、1フレーム当たりの計算量は以下の通りとなる。
(32.9+15*7.1+2.1+2.1*2*14)/16=12.5GFOPs/フレーム
【0104】
上記の計算量は、従来手法で全てのフレームをIフレーム(1枚のみの静止画入力)として扱って大規模CNNネットワークで高精度に処理した場合の1フレーム当たりの計算量「32.9GFOPs/フレーム」の4割程度であり、本実施形態によって計算量を抑制することが可能である。手順(1),(2),(n)に関して既に説明したように、この際、Pフレームについては高精度なIフレームの推定結果FH(t)等を利用して遷移ネットワークによる遷移ヒートマップを1つまたは2つ求め、軽量CNNネットワークで求めた中間データとしてのヒートマップと加算器によって統合して最終的なヒートマップを得るので、Pフレームについても計算量を抑制しつつ、時間軸情報を利用して推定精度を確保することができる。
【0105】
以上、本発明の実施形態の骨格推定部2によれば、IフレームF(t)については静止画の手法で高精度に骨格推定し、これよりも後の時刻のPフレームF(t+n)(n>0)については軽量CNNで推定した中間結果MH(t+n)を、最も近い過去で既に推定済みのIフレームの骨格推定結果FH(t)から得られる遷移ヒートマップTH(t,t+n)に対して以下の式(1)のように統合することで、あるいは、n≧2の場合はIフレームの骨格推定結果FH(t)及び直前のPフレームの推定結果FH(t+n-1)からそれぞれ得られる遷移ヒートマップTH(t,t+n), TH(t+n-1,t+n)に対して以下の式(2)のように統合することで、PフレームF(t+n)についても計算量を抑制しながら高精度に骨格推定結果FH(t+n)を得ることができる。
FH(t+n)={MH(t+n)+TH(t,t+n)}/2 …(1)
FH(t+n)={MH(t+n)+TH(t,t+n)+TH(t+n-1,t+n)}/3 …(2)
【0106】
以下、種々の補足例、追加例、代替例などについて説明する。
【0107】
(1) 本発明の実施形態によれば、その応用例として、アバタを介した遠隔コミュニケーションにおける要素処理として、アバタ(対応するユーザの動きや表情をリアルタイムで反映するためのアバタ)の姿勢推定のためのユーザの骨格推定を、計算量を抑制して高精度に行うことが可能となる。これにより、アバタを介して遠隔コミュニケーションをより自然に行うことにより、1箇所の実地にユーザ同士が集まって対面での実コミュニケーションを行わずに済ませることも可能となり、ユーザ移動に必要となるエネルギー資源を節約することで二酸化炭素排出量を抑制できることから、国連が主導する持続可能な開発目標(SDGs)の目標13「気候変動とその影響に立ち向かうため、緊急対策を取る」に貢献することが可能となる。
【0108】
(2) 骨格推定装置10において推定する対象となる骨格関節の種別や骨格モデル等は任意のものを利用してよく、入力フレームF(t)において撮影されている人物(骨格が定義できれば人物に限らず動物やロボット等でもよい)の各種類の骨格についてのヒートマップをテンソル量などの形式で骨格推定結果FH(t)として得ることが可能となる。
【0109】
(3) 手順(1),(2)等に関して前述の式(1),(2)で示したように、Pフレーム骨格推定部22では最後の処理として加算器A1,A2等で加算して統合することによりPフレームについての骨格推定結果を得る。この加算による統合は式(1),(2)で示されるように均一重みづけ平均を用いてもよいし、必ずしも均一ではない重みづけ平均を用いるようにしてもよい。この必ずしも均一ではない重みづけ平均の重みは、骨格関節の種別ごとに異なる重み(事前学習で求めておく重み)を用いてもよい。
【0110】
(4) 別の実施例として、当Pフレーム(例えば、
図3の時刻t+kのフレームF(t+k))の姿勢を推定する時に、最も近い過去にあるIフレーム(例えば、
図3の時刻tのフレームF(t))から直前のPフレーム(例えば、
図3(不図示)の時刻t+k-1)までの全てまたは一部のフレーム(一部のフレームの場合、その中にIフレームが含まれても含まれなくてもよい)を参照して統合するようにしてもよい。例えば、全てを統合する場合は以下の式(3)で表現でき、当該統合するための新たな遷移ヒートマップTH(t+k-1,t+k),TH(t+k-2,t+k),…TH(t+2,t+k)等も
図10と同様の遷移ネットワークにより出力するようにすればよい。
FH(t+k)={MH(t+k)+TH(t+k-1,t+k)+TH(t+k-2,t+k)+…
…+TH(t+2,t+k)+TH(t+1,t+k)+TH(t,t+k)}/(k+1) …(3)
【0111】
上記の式(3)では最も近い過去のIフレームF(t)の結果FH(t)を遷移ヒートマップTH(t,t+k)の形で利用しているが、これを用いずに例えば以下の式(4)あるいは式(5)のように、過去のPフレームの結果のみを利用するようにしてもよい。
FH(t+k)={MH(t+k)+TH(t+k-1,t+k)+TH(t+k-2,t+k)+
…+TH(t+2,t+k)+TH(t+1,t+k) }/k …(4)
FH(t+k)={MH(t+k)+TH(t+k-1,t+k)}/2 …(5)
【0112】
すなわち、姿勢推定対象となる当PフレームF(t+k)を推定する際には、当PフレームF(t+k)を軽量CNNで静止画として処理した中間結果MH(t+k)と、当Pフレームよりも過去の少なくとも1つの所定フレーム(Iフレームが含まれてもよいし含まれなくてもよい)についての推定済み結果FH(t+k-L)(L>0)を用いた少なくとも1つの遷移ヒートマップTH(t+k-L,t+k)と、を統合すればよい。
【0113】
(5) 上記(4)に関してさらに、前記参照フレームの数を事前に固定または動的に調整するようにしてもよい。動的に調整する際には、その時点の利用できる計算リソースや必要な認識精度を考慮するようにしてもよい。
【0114】
なお、以上の(4)及び(5)に関して、推定対象のPフレームがF(t+5)で最も近い過去のIフレームがフレームF(t)である場合を例として、全ての候補を列挙したのが前述の
図6の構成となる。
【0115】
(6) 骨格推定装置10を構成する深層学習ネットワークのパラメータの学習や、上記(3)で説明した骨格関節種別ごとの重みの学習に関しては、学習データを用いて種々の態様で学習することができる。すなわち、
図8等のネットワーク構造に示される大規模CNNネットワーク、軽量CNNネットワーク、遷移ネットワークの3種類のネットワークのパラメータ及び骨格関節種別ごとの重みに関して、エンドツーエンド(End-to-end)で学習してよい。
【0116】
また、データセットが小さい時、または学習を効率的に行わせたい時には、まず、大規模CNNネットワークと軽量CNNネットワークを独立に学習させて、大規模CNNネットワーク及び軽量CNNネットワークのパラメータ(重み)を固定しながら、遷移ネットワークと関節毎の重みを学習させるようにしてもよい。また、別の実施例として、
図8等の3つの遷移ネットワークTR10,TR20,TR21等のパラメータは別々に学習するようにしてもよい。
【0117】
(7) 大規模CNNネットワークと軽量CNNネットワークとは、
図9のような共通構造ネットワークで例えば
図12のように後者の方を軽量化したものとして設定したが、計算量削減が可能なように後者の方が軽量化されていれば、必ずしも互いに共通構造を有するネットワークではなく、異なる構造を有する深層学習ネットワーク(静止画から姿勢推定を行うという共通処理を行うが、構造が互いに異なるネットワーク)を用いるようにしてもよい。この際、大規模の前者及び/又は軽量の後者に関して、CNN以外の種類のネットワークを用いてもよい。
【0118】
(8)
図13は、一般的なコンピュータ装置70におけるハードウェア構成の例を示す図である。骨格推定装置10を構成する端末5及びサーバ6の各々は、このような構成を有する1台以上のコンピュータ装置70として実現可能である。なお、2台以上のコンピュータ装置70で端末5及びサーバ6の各々を実現する場合、ネットワーク経由で処理に必要な情報の送受を行うようにしてよい。コンピュータ装置70は、所定命令を実行するCPU(中央演算装置)71、CPU71の実行命令の一部又は全部をCPU71に代わって又はCPU71と連携して実行する専用プロセッサとしてのGPU(グラフィックス演算装置)72、CPU71(及びGPU72)にワークエリアを提供する主記憶装置としてのRAM73、補助記憶装置としてのROM74、通信インタフェース75、ディスプレイ76、マウス、キーボード、タッチパネル等によりユーザ入力を受け付ける入力インタフェース77、カメラ78と、これらの間でデータを授受するためのバスBSと、を備える。
【0119】
骨格推定装置10の各機能部は、各部の機能に対応する所定のプログラムをROM74から読み込んで実行するCPU71及び/又はGPU72によって実現することができる。なお、CPU71及びGPU72は共に、演算装置(プロセッサ)の一種である。ここで、表示関連の処理が行われる場合にはさらに、ディスプレイ76が連動して動作し、データ送受信に関する通信関連の処理が行われる場合にはさらに通信インタフェース75が連動して動作する。骨格推定装置10による処理結果等はディスプレイ76で表示して出力してよい。骨格推定装置10への入力として用いる映像の全部又は一部をカメラ78で撮影して得るようにしてもよい。
【符号の説明】
【0120】
10…骨格推定装置、1…フレーム配分部、2…骨格推定部、21…Iフレーム骨格推定部、22…Pフレーム骨格推定部、3…計画部、31…リソース算出部、32…決定部