図3は、一実施形態に係る骨格推定装置10の機能ブロック図であり、骨格推定装置10は、分析部1、分類部2及び推論部3を備える。図4は一実施形態に係る分析部1の機能ブロック図であり、分析部1はさらにシーンチェンジ判定部11及びモーション速度算出部12を備える。前掲の図1は推論装置300であるものとして示したが、併記されるようにこの推論装置300の構成は一実施形態に係る推論部3の機能ブロック図でもある。すなわち、一実施形態では推論部3は図1の推論装置300と同一であって、Iフレーム用推論部301及びPフレーム用推論部302を備える。
図3等の中にも示されるように、骨格推定装置10の各部の動作概要は次の通りである。分析部1では入力映像の各フレームF(t)(t=1,2,…)を分析し、シーンチェンジ判定部11において各フレームF(t)におけるシーンチェンジの有無を判定し、モーション速度算出部12は各フレームにおける動きDtを推定する。分類部2では、分析部1によるこれら分析結果を受け、各フレームF(t)がIフレームまたはPフレームのいずれに該当するかの分類を行い、当該分類結果を推論部3へと出力する。推論部3では、図1を参照して推論装置300に関して概略的に説明した通り、Iフレームと判定されたフレームF(t)についてはIフレーム用推論部301において推論処理を行い、Pフレームと判定されたフレームF(t)についてはPフレーム用推論部302において推論処理を行うことにより、各フレームF(t)の骨格推定結果FH(t)を得る。
図5は、一実施形態に係る骨格推定装置10の動作のフローチャートである。以下、図5の各ステップを説明しながら、骨格推定装置10の各機能部の処理内容の詳細について説明する。なお、図5のステップS1~S6のうち、ステップS1,S2が分析部1の処理であり、ステップS3,S4,S5が分類部2の処理であり、ステップS6が推論部3の処理である。
ステップS1では、入力映像の全フレームF(t)(t=1,2,…,N)について、シーンチェンジ判定部11がシーンチェンジに該当するフレームであるか(すなわち、各フレームF(t)がシーンチェンジ直後のフレームであるか、換言すれば、当該フレームの1つ前のフレームF(t-1)と当該フレームF(t)との間でシーンチェンジがあったか)を判定してからステップS2へと進む。
ステップS2では、入力映像の全フレームF(t)(t=1,2,…,N)について、モーション速度算出部12がモーション速度Dtを算出してから、ステップS3へと進む。ここで、フレームF(t)のモーション速度Dtについては、例えば後退差分、前進差分あるいは中間差分などによるフレームF(t)における移動量として算出してよい。すなわち、モーション速度Dtは、当該フレームの1つ前のフレームF(t-1)と当該フレームF(t)との間(及び/又は当該フレーム列F(t)とその1つ後のフレームF(t+1)との間)における映像上の速度(骨格推定の対象となる人物等の動きが反映されている速度)の大きさとして、非負の値Dt≧0であるものとして算出することができる。
以上のステップS1のシーンチェンジ判定部11におけるシーンチェンジ判定とモーション速度算出部12におけるモーション速度Dtの算出にはそれぞれ、任意の既存手法を用いてよいが、一実施形態として以下の非特許文献7の手法を用いる場合について後述する。なお、この非特許文献7の手法では、シーンチェンジ判定部11及びモーション速度算出部12では入力映像を復号することなく、符号化ビットストリームの状態で高速に処理を行うことができる。
[非特許文献7]新倉康巨, 谷口行信, 阿久津明人, 佐藤隆, & 外村佳伸. (1997, September). MPEG 符号化映像データからのシーンチェンジ検出方法の検討. In 映像情報メディア学会技術報告 21.54 (pp. 7-12). 一般社団法人 映像情報メディア学会.
ステップS3~S5においては分類部2が、以上のステップS1,S2の分析部1(シーンチェンジ判定部11及びモーション速度算出部12)の結果を用いることにより、入力映像の各フレームF(t)(t=1,2,…,N)についてIフレームまたはPフレームのいずれに該当するかの分類結果を得る。この分類結果では、Iフレームが映像上において間欠的に設定されることとなるが、本実施形態では予め、当該間欠的に設定されるIフレーム間の最小間隔minL(例えば、5フレーム)と最大間隔maxL(例えば、100フレーム)とを事前に設定しておき、各処理における閾値として利用する。なお、当該minLの変数表記を与えた最小間隔は以降、最小閾値や下限閾値と称することもあり、当該maxLの変数表記を与えた最大間隔は以降、最大閾値や上限閾値と称することもある。
ステップS3では、分類部2が、以下の各処理(1)~(3)を行ってから、ステップS4へと進む。
(1) シーンチェンジ判定部11によってシーンチェンジ(直後)に該当すると判定されたフレーム列{Sk}:={S0, S1, …, SK}を初期値(最終的にIフレームとして決定する集合の候補となる初期値)として定める。
なお、このフレーム列{Sk}は、入力映像のフレームF(t)(t=1,2,…,N)における順番の通りに並んでいるものであるものとし、以降の処理において更新されることで要素が削除されたり追加されたりする場合であっても、この当初の入力映像における順序を保つように更新されるものとする。例えば入力映像が100枚のフレームF(t)(t=1,2,…,100)で等間隔に10枚おきにシーンチェンジであるものと判定されたのであれば、K=9であって{Sk}:={S0, S1, …, S9}={F(1),F(11),…,F(91)}となる。
(2) 上記初期値のフレーム列{Sk}:={S0, S1, …, SK}の要素のうち、以下の式(1)が真となるような要素Sk+1を削除することで、フレーム列{Sk}を更新する。なお、この式(1)のように減算等を行う場合は、フレームSk等の表記で当該フレームSkの番号(映像上で時間進行の順に何番目のフレームに該当するか)を意味するものとし、以下でも同様とする。
上記式(1)のminLは前述の通り、予め設定しておく、最終的に決定される2つのIフレーム間の最小間隔としての閾値であり、Iフレームが必要以上に近接することで骨格推定の計算量を不用意に増加させることを防止する役割を担うものである。
こうして、式(1)で更新されたフレーム列{Sk}は、全ての間隔(フレームSkと次のフレームSk+1との間隔(映像上の隣接時刻フレーム間の何回分であるかの間隔))が閾値minL以上のものとして得られることとなる。
(3) 更新されたフレーム列{Sk}の各要素Skについて、以下の式(2)により、Skフレームからのモーション速度Dkの和として、フレームSk,Sk+1間(すなわち、順番のインデクスkで識別されるフレーム列{Sk}内の隣接要素間のそれぞれ)に位置する各フレームF(t)(Sk≦F(t)(=t)<Sk+1、すなわち、フレームSkからフレームSk+1の直前のフレーム(= Sk+1-1)までの各フレームF(t))で定義される累積変化量SDk(t)を算出する。モーション速度Dkが人物などの動き量として推定されていることから、その累積値(積分値)としての累積変化量SDk(t)は、人物等のSkフレームからの変化量(推定対象となる骨格状態の変化量)を推定したものに相当する。
ステップS4では、上記ステップS3でフレーム列{Sk}内の各隣接要素Sk,Sk+1間の各フレームF(t)において算出した累積変化量SDk(t)に基づき、分類部2が各隣接要素Sk,Sk+1内に新たな要素(すなわち、Iフレーム)を追加するか否かを判断し、追加する判断となった場合には追加を行うことによりフレーム列{Sk}を更新してからステップS5へと進む。(なお、区切り箇所としてのIフレームを追加してフレーム列{Sk}が更新された場合は、当該追加して隣接要素Sk,Sk+1がさらに細分化された箇所(1区間Sk,Sk+1内に区切りIkが1つ増えて2区間(Sk,Ik及びIk,Sk+1)へ分割された箇所)に関して、式(2)の累積変化量SDk(t)も再度、算出して同様に更新する。この更新の例は後述する図7にも示されている。)
ステップS4の詳細については図6を参照して後述するが、概略的には、次のような第1方針及び第2方針に従うことにより、Iフレームの追加が必要となる場合に最適な追加を行うことが可能となる。すなわち、第1方針として、各隣接要素Sk,Sk+1間(すなわち、暫定的に決定されている2つの隣接IフレームであるSk,Sk+1間)が長すぎると判定される場合には、ある程度の長さに到達した箇所において新たなIフレームを追加することで、Iフレーム同士の間隔を一定範囲内に抑制する。また、第2方針として、この一定範囲内において、算出している累積変化量SDk(t)が閾値に到達した場合は、時間的にはそれほど長く経過していなくとも、推定対象となる骨格状態の変化量が大きくなり過ぎないように、新たなIフレームを追加する。
ステップS5では、ステップS4の更新の結果得られているフレーム列{Sk}を分類部2における最終的な分類結果として推論部3へと出力してから、ステップS6へと進む。すなわち、入力映像の各フレームF(t)(t=1,2,…,N)のうち、ステップS4の更新結果のフレーム列{Sk}に含まれるものはIフレームとして決定し、含まれないものはPフレームとして決定することで、最終的な分類結果を得る。
ステップS6では、上記ステップS5で分類部2により得た分類結果に従い、推論部3が、Iフレームに該当するフレームF(t)についてはIフレーム用推論部301で骨格推定処理を行い、Pフレームに該当するフレームF(t)についてはPフレーム用推論部302で骨格推定処理を行うことにより、入力映像の各フレームF(t)(t=1,2,…,N)の骨格推定結果FH(t)を出力して、当該図5のフローは終了する。
図6は、一実施形態に係る図5のステップS4の詳細を示すフローチャートである。このフローの全体概要は次の通りである。すなわち、更新対象となっているフレーム列{Sk}:={S0, S1, …, SK}について、隣接要素Sk,Sk+1間にあるフレーム列(説明のため、これを2つのIフレームSk,Sk+1で囲まれるフレーム列I-I(k)とする)を前方からk=0,1,2,…,K-1のように順次、更新対象として調査していく。ここで、フレーム列I-I(k)は以下の文字列式(3)のように構成されるもの(両端の2つのIフレームSk,Sk+1間にPフレームが連続してm個(m≧1)並んでいるもの)となる。なお、この個数mは一般にはフレーム列I-I(k)毎に定まるその長さの値m=m(k)となるが、mとして簡略表記する。
最初のIフレームSk→1番目のPフレームF(n)→2番目のPフレームF(n+1)→…
…→m-1番目のPフレームF(n+m-2)→m番目のPフレームF(n+m-1)→最後のIフレームSk+1 …(3)
図6では、ステップS41に到達するごとに、新たな調査対象のフレーム列I-I(k)がk=0,1,2,…,K-1として順次、設定される。ステップS41にて調査対象となったフレーム列I-I(k)については、上記の文字列式(3)に示されるように、両端の2つのIフレームSk,Sk+1間にPフレームが連続してm個(m≧1)並んでいる状態であるため、このm個のPフレームF(t)(t=n,n+1,…,n+m-2,n+m-1)について先頭側(時間が過去の側)から順次、新たにIフレーム(Ik)に変更することで更新すべきかの判断が行われる。m個のPフレームF(t)について当該順次の判断を行うのがステップS42以降であり、ステップS45に到達した場合は、当該到達したPフレームF(t)を新たなIフレーム(Ik)に変更するものとして決定することにより、フレーム列{Sk}が更新され、対応して累積変化量SDk(t)も更新して算出される。一方で、ステップS42以降でステップS45に到達することなくステップS46,S47をたどることとなった場合は、当該調査対象とされたフレーム列I-I(k)内においてPフレームF(t)を新たなIフレーム(Ik)に変更すると決定するものは存在しないという結果であり、次のフレーム列I-I(k+1)の調査に移ることとなる。
以上が図6の更新処理の全体概要であり、以下、図6の各ステップを説明する。なお、説明のための変数表記等については上記全体概要で説明したものをそのまま用いる。
図6のフローを開始するとステップS40では初期処理対象としてk=0とすることで、初回の調査対象(PフレームのうちPフレームからIフレームへと変更することで更新すべきものが存在するかの調査対象)となるフレーム列I-I(k)=I-I(0)を設定してから、ステップS41へと進む。ステップS41では、フレーム列{Sk}で当該調査対象となっている隣接要素Sk,Sk+1間での各PフレームF(t)(t=n,n+1,…,n+m-2,n+m-1)(すなわち、フレーム列I-I(k)内の各PフレームF(t))に対する、分類部2のステップS3の処理結果(図6に示されるステップS4全体の前ステップであるステップS3の処理結果、すなわち、隣接要素Sk,Sk+1間の各フレームF(t)の累積変化量SDk(t))を読み込んでから、ステップS42へと進む。なお、ステップS41で読み込む累積変化量SDk(t)は、ステップS40からステップS41へと至った初回(k=0)では上記の通りステップS3で得た累積変化量SDk(t)となるが、以降、図6のフローの進行においてステップS45に至った場合はその都度、当該ステップS45において分類部2が列{Sk}の更新と同時に累積変化量SDk(t)も更新することとなり、ステップS41では当該更新された列{Sk}に対応する累積変化量SDk(t)を読み込むこととなる。
ステップS42では、フレーム列I-I(k)内で最初に現れるPフレームであるフレームF(n)を、処理対象(Iフレームとすべきかの調査対象)としてのフレームF(t)として設定(すなわち、Pフレームの順番を管理する変数tを初期値nに設定)してから、ステップS43へと進む。
ステップS43では、処理対象であるPフレームのフレームF(t)について、新たにIフレームに変更する対象として決定すべきか否かを判定してから、ステップS44へと進む。このステップS43の判定は、前述した第1方針及び第2方針に即したものとして、以下の(A)または(B)のいずれかに該当する場合に、新たにIフレームへと変更するものとして判定すればよい。
(A) 「当該処理対象フレームF(t)とフレームSk(フレーム列I-I(k)の先頭Iフレーム)との時間差が判定用の最大閾値maxLよりも短い。」
且つ
「当該処理対象フレームF(t)の累積変化量SDk(t)が判定用の閾値THを超える。」
(B) 「当該処理対象フレームF(t)とフレームSk(フレーム列I-I(k)の先頭Iフレーム)との時間差が判定用の最大閾値maxLに一致する。」
ステップS44では、ステップS43での判定結果が肯定であったか否かにより場合分けを行い、肯定の場合(当該処理対象フレームF(t)は新たにIフレームとして追加すべきものであると判定された場合)はステップS45へと進み、当該現フレームF(t)を新たなIフレーム(Ik)とすることにより、Iフレーム判定されたフレーム列{Sk}を更新したうえで(すなわち、更新前のフレーム列{Sk}に当該現フレームF(t)を新たなIフレーム(Ik)として追加したうえで)、且つ、当該更新したフレーム列{Sk}に対応するものとして累積変化量SDk(t)も更新して算出したうえで、ステップS41に戻る。(当該戻ったステップS41では、当該新たにIフレーム(Ik)として追加されたフレームF(t)を先頭のIフレームとして有するようなフレーム列I-I(k+1)を次のフレーム処理対象のフレーム列とし、且つ、これに対応する更新された累積変化量SDk+1(t)を読み込むようにすることで、以上の処理が繰り返される。)
一方で、ステップS44では、ステップS43での判定結果が否定であった場合にはステップS46へと進む。ステップS46では、処理対象としている現フレームF(t)が、当該注目している隣接要素Sk,Sk+1間(すなわち、フレーム列I-I(k)内)における末尾のフレームに到達したものか否かの判定(すなわち、現フレームF(t)が文字列式(3)で示される最後のm番目のPフレームF(n+m-1)に該当するか否かの判定)を行い、肯定判定(末尾のフレームに該当する判定)の場合はステップS47へと進み、否定判定(末尾のフレームの手前である判定)の場合にはステップS48へと進む。
ステップS48では、当該調査しているフレーム列I-I(k)内において、調査対象のフレームF(t)をこの次のフレームF(t+1)へと更新して設定してからステップS43へと戻り、当該次のフレームF(t+1)について以上の調査処理を継続する。
ステップS47では、現在の調査対象である隣接要素Sk,Sk+1間(すなわち、現在の調査対象であるフレーム列I-I(k))が、現在のフレーム列{Sk}(なお前述の通り、当該フレーム列{Sk}はステップS45に至る都度、新たなIフレームが追加されることで累積変化量SDk(t)と共に更新される)の末尾に該当するか否かの判定を行い、肯定の場合はフレーム列{Sk}について先頭から末尾まで全て調査が終わっている状態であるため、ステップS50へと進んで更新結果を出力してから図6のフローを終了する。(すなわち、この場合は図5のステップS4が完了してステップS5へと進むこととなる。)
なお、ステップS50へと進んで更新結果を出力する際には、当該進んだ時点でのフレーム列{Sk}をそのまま結果として出力してもよいし、当該進んだ時点でのフレーム列{Sk}に対してさらに、図5のステップS3における分類部2の(2)の処理と同一の処理(式(1)に該当するような要素Sk+1を削除する処理)を施し、最小間隔minLより小さい間隔で構成される要素をフレーム列{Sk}から排除したものを結果として出力するようにしてもよい。
一方で、ステップS47の判定が否定の場合は、ステップS49へと進み、調査しているフレーム列I-I(k)をこの次のフレーム列I-I(k+1)に更新して設定してから(すなわち、調査対象を隣接要素Sk,Sk+1間から次の隣接要素Sk+1,Sk+2間へと切り替えてから)、ステップS41へと戻り、次の調査対象となるフレーム列I-I(k+1)について以上と同様の処理を継続する。
以上、図6の各ステップを説明した。図7は、図6のフローによる更新処理の例として、ある1つのフレーム列I-I(k)を更新した結果、当該フレーム列I-I(k)の内部に新たな2つのIフレームIk,Ik+1を追加するものとして決定されることにより、3つの隣接するフレーム列I-I(k),I-I(k+1),I-I(k+2)へと分割された例である。図7では上段側に更新前、下段側に更新後の状態が示されている。図7の例ではすなわち、フレーム列I-I(k),I-I(k+1)の境界箇所に新たな1つのIフレームIkが追加され、フレーム列I-I(k+1),I-I(k+2)の境界箇所に新たな1つのIフレームIk+1が追加されている。当該追加された箇所がIk及びIk+1の2箇所であることから、当初のフレーム列I-I(k)が結果的に3分割されて更新され、対応する形で累積変化量SDk(t)も更新して算出されることで、図7の下段側に示されるように、当該追加された箇所Ik及びIk+1において累積変化量SDk(t)も再度、初期値のゼロから始まるものとなる。
図7の例では、上段側に示す当初のフレーム列I-I(k)(SkからSk+1まで)の累積変化量SDk(t)の値増加の挙動が、途中のフレームIkにおいて閾値THに到達し、途中のフレームIk+1において閾値THの2倍2THに到達する挙動であり、且つ、フレームSk,Ik間の時間及びフレームIk,Ik+1間の時間差がいずれも判定最大閾値maxLよりも小さいことから、下段側に示すような更新結果となっている。(すなわち、図7の上段側の挙動を示すフレーム列I-I(k)の調査結果として、図6のステップS45への到達が2回あったことから、図7の下段側のような更新結果となっている。)
以上、本発明の実施形態の骨格推定装置10によれば、映像骨格抽出・姿勢推定において、入力映像による突然な変化としてシーンチェンジを特定し、徐々な変化としてモーション速度を推定した上で、累積変化量という概念を導入し、累積変化量とシーンチェンジによって(1)適応的にIフレームを選定し、且つ、(2)適応的にPフレーム数を決定することで、映像上に最適なI,Pフレーム分類を行い、この分類に従って推論部30においてI,Pフレームを区別した骨格推定を行うことで、映像に最適な形で、推定精度の確保と計算量低減とのバランスを取った骨格推定結果を得ることができる。
以下、種々の補足例、追加例、代替例などに関して説明する。
(1) 本発明の実施形態によれば、その応用例として、アバタを介した遠隔コミュニケーションにおける要素処理として、アバタ(対応するユーザの動きや表情をリアルタイムで反映するためのアバタ)の姿勢推定のためのユーザの骨格推定を、計算量を抑制して高精度に行うことが可能となる。これにより、アバタを介して遠隔コミュニケーションをより自然に行うことにより、1箇所の実地にユーザ同士が集まって対面での実コミュニケーションを行わずに済ませることも可能となり、ユーザ移動に必要となるエネルギー資源を節約することで二酸化炭素排出量を抑制できることから、国連が主導する持続可能な開発目標(SDGs)の目標13「気候変動とその影響に立ち向かうため、緊急対策を取る」に貢献することが可能となる。
(2) 以下、推論部3の処理の詳細について説明する。
図8は、一実施形態に係る推論部3によるIフレーム及びPフレームで区別した処理の概要を示す図である。(図8に示される概要は前掲の図2で説明したのとの同様であるが、以下の説明で用いる変数表記の説明等のために再度、説明する。)図8では分類部2によってフレームF(t)がIフレームとして決定され、これに続くk枚の連続フレームF(t+1),F(t+2),…,F(t+k)がPフレームとして決定された場合の推論部3による処理を模式的に示している。
図8に示すように、Iフレームとして決定されたフレームF(t)については、この1枚のフレームF(t)のみを入力として、Iフレーム用推論部301が静止画に対する骨格推定の手法により骨格推定結果FH(t)を得ることができる。また、Pフレームとして決定された各フレームF(t+n)(n=1,2,…,k)については、当該フレームF(t+n)と、これよりも過去の1つ以上のフレーム(例えばF(t+n-1),F(t+n-2),…)と、を入力としてPフレーム用推論部302が時間軸情報を考慮した手法により骨格推定結果FH(t)を得ることができる。この際、当該フレームF(t+n)よりも過去の1つ以上のフレーム(例えばF(t+n-1),F(t+n-2),…)については、既に推定済みである骨格推定結果(例えばFH(t+n-1),FH(t+n-2),…)を入力として用い、Pフレーム用推論部302では骨格推定結果FH(t+n)を得ることができる。
図8の例では以下の手順(0),(1),(2),…(k)によって骨格推定結果を得ることができる。なお、Iフレーム用推論部301の処理は以下の手順(0)であり、Pフレーム用推論部302の処理は以下の手順(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+1)を得る。
…
<手順(k)> PフレームF(t+k)について、当該フレームF(t+k)と、1つ前及びk個前の2時刻でそれぞれ既に推定済みであるPフレーム及びIフレームの骨格推定結果FH(t+k-1)及びFH(t)と、の3データを入力として骨格推定結果FH(t+n)を得る。
なお、手順(1),(2),…(k)では、当該骨格推定対象となるPフレームよりも過去のIフレームで、最も時間的に近い過去のIフレームとしてフレームF(t)を利用している。
なお、上記の手順(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)を得る。
図8の例では、以下のようにして映像を対象として認識精度を維持しつつ計算量を抑制して骨格推定結果を得ることができる。すなわち、IフレームF(t)については、静止画として扱って高精度に骨格推定を得るようにし、これに続く各PフレームF(t+1),F(t+2),…,F(t+k)については、計算量を抑制して(当該1枚の静止画について得られる中間出力において精度を下げて)静止画に対する骨格推定の手法を適用しながらも、併せて過去時刻において既に高精度に推定された結果も利用することで、これら処理全体によって精度を確保することで、映像に対して計算量を抑制しながらも精度を確保して骨格推定結果を得ることができる。この詳細については以下でさらに説明する。
また、図8の例では、入力映像の各フレームF(t)をその時刻tの順番で処理して骨格推定結果FH(t)を得るようにすることから、入力映像としてその場でリアルタイムに撮影している映像を読み込んでリアルタイムに骨格推定結果を得るようにすることも可能となる。(一方で、リアルタイムではなく既に撮影され保存されている映像を読み込んで骨格推定結果を得ることも可能である。)
以下、推論部3の各部の処理の詳細についてさらに説明する。
前提として、分類部2は前述の通り、入力映像の各時刻t(t=1,2,…)のフレームF(t)について、推論部3における処理の仕方を区別するためにIフレームまたはPフレームの区別を付与している。この区別は、図8等で例示したように、Iフレームを所定の一定間隔ごとに時間軸上で間欠的に設け、Iフレームの間に存在する連続フレームを全てPフレームとするようにしてよい。図8の例では、k+1枚の連続時刻フレームごとの周期単位で、1枚のIフレームと、これに続くk枚のPフレームとを設定する例となっている。
このkの値(及びk枚の連続Pフレームの手前にあるIフレームの位置)は、分類部2においてI,Pフレームの最適配置を探索した結果として定まることになるものであり、入力映像の実際の様子に応じて時間軸上で様々に変動するkの値が得られることが想定されるものである。
なお、本実施形態では既存の映像符号化手法との類推から便宜上、分類部2で区別する2種類のフレームをIフレーム(映像符号化の場合、イントラ予測(フレーム内予測)により当該フレームのみを用いて符号化するフレーム)及びPフレーム(映像符号化の場合、フレーム間予測により当該フレーム以外も用いて符号化するフレーム)と称しているが、本実施形態は入力映像に対する映像符号化の態様とは独立に実施可能である。従って例えば単純に、Iフレームを第1種フレーム、Pフレームを第2種フレーム等と称してもよいが、以下でも便宜上の名称としてIフレーム及びPフレームを用いるものとする。
図9は、一実施形態に係る推論部3の詳細として、深層学習ネットワークで推論部3を実現する場合のネットワーク構造例を示す図である。図9では、図8で説明した手順(0),(1),(2),…(k)のうち手順(0),(1),(2)を実行する部分のみをそれぞれ上段、中段、下段の部分に示している。
図9では、個別の深層学習ネットワークとして、1つの大規模CNN(Large CNN)ネットワークLG0と、2つの軽量CNN(Light CNN)ネットワークLT1及びLT2と、3つの遷移(Transfer)ネットワークTR1,TR20,TR21と、が示されている。これらのうち、2つの軽量CNNネットワークLT1及びLT2は同一(同一ネットワーク構造及び学習パラメータ)とすることができ、また、3つの遷移ネットワークTR1,TR20,TR21も同一(同一ネットワーク構造及び学習パラメータ)とすることができるが、図示される通り入出力で扱うデータが異なるため、互いに区別した参照符号を付与してある。また、以下でも説明するように、大規模ネットワークLG0と、軽量ネットワークLT1,LT2とは、互いに共通構造(後述する図10に例示される共通構造)のネットワークであるがその規模(後述する図13に例示されるようなチャネル幅や解像度による規模)が異なる関係にある(学習パラメータも異なる)ものを利用することができ、軽量ネットワークLT1,LT2は大規模ネットワークLG0の規模を小さくして簡素化(軽量化)したネットワークを用いることができる。
以下、図9のネットワーク構造を有する推論部3が実行する手順(0),(1),(2)についてそれぞれ説明する。
<手順(0)> Iフレームである入力フレームF(t)を大規模CNNネットワークLG0で処理することにより、骨格推定結果としてのヒートマップFH(t)を得る。
一実施形態では、大規模CNNネットワークLG0(及び後述する手順(1),(2)における軽量CNNネットワークLT1,LT2)として、図10にそのネットワーク構造を示す前掲の非特許文献2のHRNet(高解像度ネット)を用いることができる。
図10では説明欄EXに示すように、左向きの水平方向矢印が畳み込み処理を行うことを、左下向きの矢印がダウンサンプリングを行うことを、左上向きの矢印がアップサンプリングを行うことを、それぞれ示している。また、矢印の矢先部分(出力部分)が複数重複している場合は、対応するデータ(複数のテンソル)の加算を行う。また、矢印の間に記載されているm11等は、当該矢印で示される処理により得られる中間データとしての特徴マップ(テンソル)を表している。
HRNetの手法では、図10の上段部分に示される特徴マップ群m11~m19において高解像度で処理を行い、中段部分に示される特徴マップ群m23~m29において中解像度で処理を行い、下段部分に示される特徴マップ群m37~m39において低解像度で処理を行い、これらピラミッド状の3つの解像度段階で並行して処理を行うことで静止画入力に対して高精度に骨格推定結果を得ることができる。なお、2つ以上の任意の段階数で構成されるこのようなピラミッド状の構造によりHRNetを構成してよく、図10ではその一例として3段階の場合を示している。
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)
<手順(1)> Pフレームである入力フレームF(t+1)と、IフレームF(t)について既に得られている骨格推定結果FH(t)と、の2データを入力として、当該入力フレームF(t+1)の骨格推定結果FH(t+1)を得る。図9中にも示される通り、この手順(1)は以下の手順(11),(12),(13)として実現することができる。
<手順(11)> 入力データの1つであるフレームF(t+1)を軽量CNNネットワークLT1で処理して中間データとしてのヒートマップMH(t+1)を得て、このヒートマップMH(t+1)を差分器D10及び加算器A1へと出力する。
<手順(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へと出力する。
<手順(13)> 手順11で得た中間データのヒートマップMH(t+1)と、手順12で得た遷移ヒートマップTH(t,t+1)(同じく、中間データとしてのヒートマップに相当する)と、を加算器A1で加算して、当該入力フレームF(t+1)の骨格推定結果FH(t+1)を得る。
図11は、上記の手順(12)で利用する遷移ネットワークTR10(及び前述したこれと同一であって後述する手順(2)で利用される遷移ネットワークTR20,TR21)のネットワーク構造を示す図であり、本実施形態では前掲の非特許文献6のサブネットワークを遷移ネットワークTR10,TR20,TR21として利用する場合を例として、図11に示している。
遷移ネットワーク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)として説明されるものに該当する。)
図11に示されるように、遷移ネットワーク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つの出力を加算して、最終的な出力である遷移ヒートマップを得ることができる。
<手順(2)> Pフレームである入力フレームF(t+2)と、IフレームF(t)及びPフレームF(t+1)について既に得られている骨格推定結果FH(t)及びFH(t+1)と、の3データを入力として、当該入力フレームF(t+2)の骨格推定結果FH(t+2)を得る。
図9中にも示される通り、前述の手順(1)と概ね対応して概ね同様のものとして、この手順(2)は以下の手順(21),(22a),(22b),(23)として実現することができる。(なお、手順(21)は手順(11)に、手順(22a),(22b)は手順(12)に、手順(23)は手順(13)に、概ね対応している。)
<手順(21)> 入力データの1つであるフレームF(t+2)を軽量CNNネットワークLT2で処理して中間データとしてのヒートマップMH(t+2)を得て、このヒートマップMH(t+2)を差分器D20、差分器D21及び加算器A2へと出力する。
<手順(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へと出力する。
<手順(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へと出力する。
<手順(23)> 手順21で得た中間データのヒートマップMH(t+2)と、手順22a,22bで得た遷移ヒートマップTH(t,t+2)及びTH(t+1,t+2)(同じく、中間データとしてのヒートマップに相当する)と、を加算器A2で加算して、当該入力フレームF(t+2)の骨格推定結果FH(t+2)を得る。
なお、図9では手順(2)までのみを示しているが、既に図8を参照して説明したように、手順(2)以降の手順(2),(3),…(k)は全て、手順(2)と共通のものとして実施可能である。すなわち、これらはいずれも、n=2,3,…,kとして前述した共通の手順(n)として記述できるものであり、図12に示すネットワーク構造によって可能である。(この手順(n)は、処理内容自体は手順(2)と同様で入力データがF(t+2),FH(t),FH(t+1)に代えてそれぞれF(t+n),FH(t),FH(t+n-1)となった点のみが相違する(n=2では手順(2)と一致する)ものであるため、重複する説明は省略する。)
ここで、以上のように手順(0)においてIフレーム用推論部301による処理を行い、手順(1),(2)等においてPフレーム用推論部302による処理を行うことで計算量を抑制しつつ精度を確保できる効果の数値例として、Iフレーム用推論部301で用いる大規模CNNネットワークLG0と、Pフレーム用推論部302で用いる共通の軽量CNNネットワークLT1,LT2等と遷移ネットワークTR10,TR20,TR21等とのパラメータ等設定例(学習パラメータではなく、ネットワーク規模の設定パラメータ例)を紹介する。
図13にこのパラメータ等の設定例の1つを示す。この設定では、共通のHRNetを異なる規模で設定しており、図10のピラミッド構造として図10のような3段階ではなく4段階の構造を採用した際の、最終出力段の4解像度段階のテンソル(特徴マップ)のチャネル幅を図示される通りに設定している。すなわち、図10では3解像度段階のテンソルm19,m29,m39であるが、図13の例では4段階目のテンソルm49に相当するものがさらに存在しており、これら4テンソルm19,m29,m39,m49のチャネル幅が図示される通り大規模CNNでは48,96,192,384であるのに対し、軽量CNNではこれより小さい32,64,128,256へと削減して設定する。チャネル幅はこのように最終出力段のみではなく、途中の部分の各テンソル(特徴マップ)でも同様に、軽量CNNの方を大規模CNNよりも削減して設定する。なお、HRNetに入力する画像の解像度も、当該チャネル幅の設定に応じて、大規模CNNの384x288に対して軽量CNNでは低解像度化した256x192とする。(従って、図9や図12の説明では省略したが、軽量CNNであるLT1,LT2,LTn等へ画像を入力する際は、前処理としてこのように低解像度化して解像度をネットワークに合わせるようにする処理も行われる。また、軽量CNNの出力も大規模CNNの出力と比べて低解像度化されているため、Iフレームにおける高解像度の出力と合わせて利用する際は、低解像度側に合わせる処理を行う。例えば図9の差分器D10では、「高解像度から低解像度化したFH(t)」と「低解像度のMH(t+1)」の差分を求める。)
この設定により、大規模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/フレーム
上記の計算量は、従来手法で全てのフレームをIフレーム(1枚のみの静止画入力)として扱って大規模CNNネットワークで高精度に処理した場合の1フレーム当たりの計算量「32.9GFOPs/フレーム」の4割程度であり、本実施形態によって計算量を抑制することが可能である。手順(1),(2),(n)に関して既に説明したように、この際、Pフレームについては高精度なIフレームの推定結果FH(t)等を利用して遷移ネットワークによる遷移ヒートマップを1つまたは2つ求め、軽量CNNネットワークで求めた中間データとしてのヒートマップと加算器によって統合して最終的なヒートマップを得るので、Pフレームについても計算量を抑制しつつ、時間軸情報を利用して推定精度を確保することができる。
以上の実施形態の推論部3によれば、IフレームF(t)については静止画の手法で高精度に骨格推定し、これよりも後の時刻のPフレームF(t+n)(n>0)については軽量CNNで推定した中間結果MH(t+n)を、最も近い過去で既に推定済みのIフレームの骨格推定結果FH(t)から得られる遷移ヒートマップTH(t,t+n)に対して以下の式(A1)のように統合することで、あるいは、n≧2の場合はIフレームの骨格推定結果FH(t)及び直前のPフレームの推定結果FH(t+n-1)からそれぞれ得られる遷移ヒートマップTH(t,t+n), TH(t+n-1,t+n)に対して以下の式(A2)のように統合することで、PフレームF(t+n)についても計算量を抑制しながら高精度に骨格推定結果FH(t+n)を得ることができる。
FH(t+n)={MH(t+n)+TH(t,t+n)}/2 …(A1)
FH(t+n)={MH(t+n)+TH(t,t+n)+TH(t+n-1,t+n)}/3 …(A2)
また、推論部3の処理の変形例、追加例、代替例として以下の(3)~(7)も可能である。
(3) 手順(1),(2)等に関して前述の式(A1),(A2)で示したように、Pフレーム用推論部302では最後の処理として加算器A1,A2等で加算して統合することによりPフレームについての骨格推定結果を得る。この加算による統合は式(1A),(2A)で示されるように均一重みづけ平均を用いてもよいし、必ずしも均一ではない重みづけ平均を用いるようにしてもよい。この必ずしも均一ではない重みづけ平均の重みは、骨格関節の種別ごとに異なる重み(事前学習で求めておく重み)を用いてもよい。
(4) 別の実施例として、当Pフレーム(例えば、図8の時刻t+kのフレームF(t+k))の姿勢を推定する時に、最も近い過去にあるIフレーム(例えば、図8の時刻tのフレームF(t))から直前のPフレーム(例えば、図8(不図示)の時刻t+k-1)までの全てまたは一部のフレーム(一部のフレームの場合、その中にIフレームが含まれても含まれなくてもよい)を参照して統合するようにしてもよい。例えば、全てを統合する場合は以下の式(A3)で表現でき、当該統合するための新たな遷移ヒートマップTH(t+k-1,t+k),TH(t+k-2,t+k),…,TH(t+1,t+k),TH(t,t+k)等も図11と同様の遷移ネットワークにより出力するようにすればよい。
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) …(A3)
上記の式(A3)では最も近い過去のIフレームF(t)の結果FH(t)を遷移ヒートマップTH(t,t+k)の形で利用しているが、これを用いずに例えば以下の式(A4)あるいは式(A5)のように、過去の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 …(A4)
FH(t+k)={MH(t+k)+TH(t+k-1,t+k)}/2 …(A5)
すなわち、姿勢推定対象となる当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)と、を統合すればよい。
(5) 骨格推定装置10を構成する深層学習ネットワークのパラメータの学習や、上記(3)で説明した骨格関節種別ごとの重みの学習に関しては、学習データを用いて種々の態様で学習することができる。すなわち、図9等のネットワーク構造に示される大規模CNNネットワーク、軽量CNNネットワーク、遷移ネットワークの3種類のネットワークのパラメータ及び骨格関節種別ごとの重みに関して、エンドツーエンド(End-to-end)で学習してよい。
また、データセットが小さい時、または学習を効率的に行わせたい時には、まず、大規模CNNネットワークと軽量CNNネットワークを独立に学習させて、大規模CNNネットワーク及び軽量CNNネットワークのパラメータ(重み)を固定しながら、遷移ネットワークと関節毎の重みを学習させるようにしてもよい。また、別の実施例として、図11等の3つの遷移ネットワークTR10,TR20,TR21等のパラメータは別々に学習するようにしてもよい。
(6) 大規模CNNネットワークと軽量CNNネットワークとは、図10のような共通構造ネットワークで例えば図13のように後者の方を軽量化したものとして設定したが、計算量削減が可能なように後者の方が軽量化されていれば、必ずしも互いに共通構造を有するネットワークではなく、異なる構造を有する深層学習ネットワーク(静止画から姿勢推定を行うという共通処理を行うが、構造が互いに異なるネットワーク)を用いるようにしてもよい。この際、大規模の前者及び/又は軽量の後者に関して、CNN以外の種類のネットワークを用いてもよい。
(7) 骨格推定装置10において推定する対象となる骨格関節の種別や骨格モデル等は任意のものを利用してよく、入力フレームF(t)において撮影されている人物(骨格が定義できれば人物に限らず動物やロボット等でもよい)の各種類の骨格についてのヒートマップをテンソル量などの形式で骨格推定結果FH(t)として得ることが可能となる。
(8) 図4のステップS1のシーンチェンジ判定部11におけるシーンチェンジ判定とステップS2のモーション速度算出部12におけるモーション速度Dtの算出について、後述するとしていた非特許文献7の手法を説明する。図14は、非特許文献7の手法を説明するためのフローチャート(同文献内の図2の手法の説明図)である。
図14のフローが開始されると、ステップS10では入力映像F(t)(t=1,2,…,N)のビットストリーム(復号されていない符号化データ)を参照して、区間I-I[k](k=1,2,…)を順次、特定してから、ステップS11へと進む。ここで、映像F(t)のビットストリーム(MPEGデータ等)には各フレームF(t)がIピクチャまたはPビクチャのいずれに該当するかの情報が含まれるので、間欠的に配置されるIピクチャの位置を特定することで、k番目(k=1,2,…)の両端をIピクチャとし、その間が全て連続するPピクチャで構成される区間を、区間I-I[k]として特定する。
ステップS11以降では、ステップS10で特定した区間I-I[k](k=1,2,…)について順番にシーンチェンジの特定処理が行われる。ステップS10から初めてステップS11へ至った際は、区間I-I[k](k=1,2,…)のうち最初の区間I-I[1](k=1)が処理対象となる。その後、ステップS17を経てステップS11に戻ってくる都度、処理済みである区間I-I[k]の次の処理対象の区間I-I[k+1]について同様に処理が繰り返されることで、映像F(t)全体に対するシーンチェンジ特定部11によるシーンチェンジの特定(及びモーション速度算出部12によるモーション速度Dtの算出)が完了するというのが、図14のフローの全体構造である。
ステップS11では、I法(Iピクチャシーンチェンジ検出法)を適用することで、当該区間I-I[k]内でのシーンチェンジ検出を試み、検出されればステップS12及びS13の両方のステップへ並行して進み、検出されていなければステップS16へと進む。I法では非特許文献7に記載される通り、以下のようにしてシーンチェンジ検出判定を行うことができる。
「Iピクチャ中に含まれるマクロブロックのDCT係数からDC成分を用いて縮小画像を復元し,比較を行う.時間上で隣接するIピクチャから得られる縮小画像の成分DC',DCを考えた時,1DC'-DC1≧Th,となるマクロブロック数をDIとし,DI≧Th,となるIピクチャ同士の間には画像内容の変化があり,シーンチェンジが存在する可能性があると判定する.」
I法では上記手法により、区間I-I[k]の両端にあるIピクチャ同士の間でのシーンチェンジ有無を判定し、変化量DIを算出することができる。
ステップS12では、P法(Pピクチャシーンチェンジ検出法)を適用することで、当該区間I-I[k]内でのPピクチャ列上においてシーンチェンジ検出を試み、検出されればステップS15へ進み、検出されていなければステップS14へと進む。P法では非特許文献7に記載される通り、以下のようにしてシーンチェンジ検出判定を行うことができる。
「フィールド単位の動き補償処理を含むフレーム間フィールド予測符号化方式を採用しているMPEG2映像データであれば,動き補償の際に予測誤差の少ない最適なフィールドを選択するので,参照フィールド別にマクロブロックに含まれる動きベクトルを計
数し,フィールド間の類似度を評価」し、
この動きベクトルを評価関数に代入することで、
「フレーム間及びフィールド間の類似度の変化量DFrame,DFieldを算出する.」
さらに、
「算出された変化量を,DFrame,≧Th3,DField≧Th4のように閾値Th3, Th4と比較することで、フレーム間,ないし,フィールド間のシーンチェンジを検出できる.」
P法では以上のようにして変化量DFrame,DFieldの算出とシーンチェンジ検出とを行うことができる。
ステップS14では、PI法(P-Iピクチャシーンチェンジ検出法)を適用することで、当該区間I-I[k]内でのPピクチャ及びIピクチャの間においてシーンチェンジ検出を試み、検出されればステップS15へ進み、検出されていなければステップS17へと進む。PI法では非特許文献7に記載される通り、符号化ビットストリームである区間I-I[k]を参照して、「Iピクチャ同士の比較の際にマスキングして,Iピクチャ同士の変化量DLを算出」し、「閾値DL≧Th5という条件によって」Pピクチャ及びIピクチャの間においてシーンチェンジ検出を行うことができる。
ステップS13では、D法(ディゾルブ変化検出法)を適用することで、当該区間I-I[k]内でのディゾルブ変化の検出を試み、検出されればステップS15へ進み、検出されていなければステップS17へと進む。PI法では非特許文献7に記載される通り、符号化ビットストリームである区間I-I[k]を参照して、「Pピクチャ内の位置jのマクロブロックの予測誤差をEjとし,jに対応するカウンタをCjと」し、「あるPピクチャで,カウンタの値を閾値Th6と比較し,|Cj|≧Th7となるカウンタをもつマクロブロックの個数をDDissolveと」し、「すなわち,DDissolveは,ディゾルブ等の漸次変化が発生している面積に相当」するものであり、「これを,閾値Th6と比較して,DDissolve≧Th6のとき,ディゾルブ変化を検出することができる.」
D法では以上のようにして変化量DDissolveの算出とディゾルブ変化検出とを行うことができる。
以上の通り、非特許文献7では、Iピクチャ同士を比較するIピクチャシーンチェンジ検出法(I法)、Pピクチャ列上での瞬間的な変化を算出するPピクチャシーンチェンジ検出法(P法)、連続する数フレームに渡るPピクチャ列上での変化を算出するディゾルブ検出法(D法)、P-Iピクチャ間での画像内容の変化を算出するP-Iピクチャ間シーンチェンジ検出法(PI法)の4つの方法からなるシーンチェンジ検出方法が提案される。図14のように、まず、I法によって、シーンチェンジが存在する可能性のあるPピクチャ列区間を限定する。次に、区間内のシーンチェンジの有無をP法及びPI法を適用して評価する。またこれらの過程と併行してD法を用いてディゾルブ変化の検出を試みる。P、PI、D法のいずれかの方法でシーンチェンジが検出したら、ステップS15においてシーンチェンジ判定部11がシーンチェンジフレームを出力してから、ステップS16へと進む。ステップS16では映像における全ての区間I-I[k]について処理が完了したか否かを判定し、完了していれば図14のフローは終了し、完了していなければ、ステップS17において次の区間I-I[k+1]を処理対象として設定してから、ステップS11へ戻り、以上の処理を次の区間I-I[k+1]について同様に繰り返す。
こうして、シーンチェンジ判定部11では映像上の各区間I-I[k]についてステップS15でシーンチェンジフレームを出力することで、入力映像のN枚のフレーム({Fn}: = {F1, F2, …, FN})を入力した結果として、K枚のシーンチェンジフレーム({Sk}:={S1, S2, …, SK})を出力することができる(K<N)。なおこの際さらに、第1フレーム(映像の最初の時刻のフレーム)はS0としてシーンチェンジフレームに追加し、{Sk}:={S0, S1, …, SK}の計K+1枚のシーンチェンジフレームを得る。
なお、上記入力映像フレームFnとは以上の説明におけるフレームF(n)と同一である(Fn=F(n)である)が、ここではその他の変数表記に整合させる観点からフレーム番号nを引数F(n)ではなく下付き文字Fnで表している。
ここで、本実施形態においては特に、以上の通り非特許文献7の手法を踏襲しつつも、以上のI、P、PI、D法において算出した変化量の和として、以下の式(4)のようにモーション速度算出部12が映像の各フレームにおけるモーション速度({Dt}:={D1, D2, …, DN})を算出することができる。
ただし、本実施形態では、復号化せずに符号化ビットストリームの状態の映像F(t)についてモーション情報を推定するため、映像における個別の人物領域が特定されない。よって、複数人がいる時に、全体の平均速度としてモーション速度Dtが算出されうる。例えば、サッカーなどスポーツ動画において、一定な集団モーションがあると、本手法を適用できるが、ランダム的に複数人が動いている動画は適用しにくい。また、カメラワークがある時や背景(木や雲など)の動きも影響を受ける可能性があるので、このような動きがない入力映像を用いることが望ましい場合もある。
(9) 以上のシーンチェンジ判定部11におけるシーンチェンジ判定とモーション速度算出部12におけるモーション速度Dtの算出とは別の実施形態として、映像符号化データを復号した上でシーンチェンジと人物モーション速度を推定する任意の既存手法を利用してもよい。この場合は、人物領域が特定された上で人物毎に人物モーション速度を推定できる。さらに、背景(=人物領域以外)のモーションも排除できる。前記(8)の符号化ビットストリームの状態で推定した速度と当該(9)の復号された状態で推定した速度との重み付け和を用いてもよい。シーンチェンジに関しても(8)と(9)の両方の結果を論理和として用いるようにしても、両方で整合していると判定される結果を論理積として用いる(両者の完全一致ではなく、一定誤差内に収まる場合に論理積が成立するものとして用いる)ようにしてもよい。
なお、(8)の手法で復号せずにモーション情報を推定しても、符号化の際に入力映像から人物領域のみを切り出して符号化する場合(映像に既存手法であるオブジェクト符号化等が適用されてその符号化ビットストリームが得られている場合)であれば、人物領域が特定された上で人物毎に人物モーション速度を推定できるし、背景(=人物領域以外)のモーションも排除できる。すなわち、オブジェクト符号化の場合であれば、(8)の手法の変化量(の利用可能な全部または一部)であっても、(9)のように復号データを解析する場合と概ね同等の速度及びシーンチェンジの推定結果が得られることが期待される。
(10) 分類部2では予め動画コンテンツ解析等により設定しておく下限閾値minLと上限閾値maxLとの間の長さ範囲内に、最も隣接する2つのIフレームの間の長さ(フレーム数)が収まるようにI,Pフレームの分類を行うものとしたが、変形例として、この下限閾値minLと上限閾値maxLとの両方または片方の制約を除外してもよい。例えば、この両方を除外する場合は、累積変化量SDk(t)が閾値に到達することのみでフレーム列{Sk}内に新規追加するIフレーム(Ik)を決定することとなる。
(11) 図15は、一般的なコンピュータ装置70におけるハードウェア構成の例を示す図である。骨格推定装置10は、このような構成を有する1台以上のコンピュータ装置70として実現可能である。なお、2台以上のコンピュータ装置70で骨格推定装置10を実現する場合、ネットワーク経由で処理に必要な情報の送受を行うようにしてよい。コンピュータ装置70は、所定命令を実行するCPU(中央演算装置)71、CPU71の実行命令の一部又は全部をCPU71に代わって又はCPU71と連携して実行する専用プロセッサとしてのGPU(グラフィックス演算装置)72、CPU71(及びGPU72)にワークエリアを提供する主記憶装置としてのRAM73、補助記憶装置としてのROM74、通信インタフェース75、ディスプレイ76、マウス、キーボード、タッチパネル等によりユーザ入力を受け付ける入力インタフェース77、カメラ78と、これらの間でデータを授受するためのバスBSと、を備える。
骨格推定装置10の各機能部は、各部の機能に対応する所定のプログラムをROM74から読み込んで実行するCPU71及び/又はGPU72によって実現することができる。なお、CPU71及びGPU72は共に、演算装置(プロセッサ)の一種である。ここで、表示関連の処理が行われる場合にはさらに、ディスプレイ76が連動して動作し、データ送受信に関する通信関連の処理が行われる場合にはさらに通信インタフェース75が連動して動作する。骨格推定装置10による処理結果等はディスプレイ76で表示して出力してよい。骨格推定装置10への入力として用いる映像の全部又は一部をカメラ78で撮影して得るようにしてもよい。