(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-16
(45)【発行日】2024-01-24
(54)【発明の名称】骨格検出システム
(51)【国際特許分類】
G06T 7/00 20170101AFI20240117BHJP
【FI】
G06T7/00 660B
(21)【出願番号】P 2020147563
(22)【出願日】2020-09-02
【審査請求日】2023-02-20
(73)【特許権者】
【識別番号】000001122
【氏名又は名称】株式会社日立国際電気
(74)【代理人】
【識別番号】110001678
【氏名又は名称】藤央弁理士法人
(72)【発明者】
【氏名】廣木 桂一
(72)【発明者】
【氏名】垂井 俊明
(72)【発明者】
【氏名】福田 竣
(72)【発明者】
【氏名】森田 健一
(72)【発明者】
【氏名】伊藤 良起
【審査官】千葉 久博
(56)【参考文献】
【文献】特開2016-24742(JP,A)
【文献】特開2012-120647(JP,A)
【文献】特開2011-258161(JP,A)
【文献】特開2007-72665(JP,A)
【文献】特開2002-245441(JP,A)
【文献】特開平10-40419(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 7/00
(57)【特許請求の範囲】
【請求項1】
骨格検出システムであって、
1以上の演算装置と、
1以上の記憶装置と、を含み、
前記1以上の記憶装置は、
骨格検出を行う対象画像と、
異なる骨格を定義する複数の骨格定義モデルにそれぞれ対応する複数の骨格検出モデルを格納し、
前記対象画像は、動画像内のフレーム画像であり、
前記1以上の演算装置は、
前記動画像内の過去のフレーム画像における骨格検出結果に基づいて、前記複数の骨格検出モデルから第1の骨格検出モデルを選択し、
前記第1の骨格検出モデルによって前記対象画像の骨格検出を実行する、骨格検出システム。
【請求項2】
請求項1に記載の骨格検出システムであって、
前記1以上の演算装置は、前記過去のフレーム画像における骨格検出結果の中のkeypointの検出結果に基づき、前記複数の骨格検出モデルから前記第1の骨格検出モデルを選択する、骨格検出システム。
【請求項3】
骨格検出システムであって、
1以上の演算装置と、
1以上の記憶装置と、を含み、
前記1以上の記憶装置は、
骨格検出を行う対象画像と、
異なる骨格を定義する複数の骨格定義モデルにそれぞれ対応する複数の骨格検出モデルを格納し、
前記1以上の演算装置は、
ユーザにより指定された骨格検出を行う目的に基づいて、前記複数の骨格検出モデルから第1の骨格検出モデルを選択し、
前記第1の骨格検出モデルによって前記対象画像の骨格検出を実行する、骨格検出システム。
【請求項4】
骨格検出システムであって、
1以上の演算装置と、
1以上の記憶装置と、を含み、
前記1以上の記憶装置は、
骨格検出を行う対象画像と、
異なる骨格を定義する複数の骨格定義モデルにそれぞれ対応する複数の骨格検出モデルを格納し、
前記1以上の演算装置は、
骨格検出の推定計算コストが使用可能な計算リソース内に収まるように、前記複数の骨格検出モデルから第1の骨格検出モデルを選択し、
前記第1の骨格検出モデルによって前記対象画像の骨格検出を実行する、骨格検出システム。
【請求項5】
システムが画像の骨格検出を行う方法であって、
前記システムは、
骨格検出を行う対象画像と、
異なる骨格を定義する複数の骨格定義モデルにそれぞれ対応する複数の骨格検出モデルを格納し、
前記対象画像は、動画像内のフレーム画像であり、
前記方法は、
前記システムが、前記動画像内の過去のフレーム画像における骨格検出結果に基づいて、前記複数の骨格検出モデルから、第1の骨格検出モデルを選択し、
前記システムが、前記第1の骨格検出モデルによって前記対象画像の骨格検出を実行する、ことを含む方法。
【請求項6】
システムが画像の骨格検出を行う方法であって、
前記システムは、
骨格検出を行う対象画像と、
異なる骨格を定義する複数の骨格定義モデルにそれぞれ対応する複数の骨格検出モデルを格納し、
前記方法は、
前記システムが、ユーザにより指定された骨格検出を行う目的に基づいて、前記複数の骨格検出モデルから、第1の骨格検出モデルを選択し、
前記システムが、前記第1の骨格検出モデルによって前記対象画像の骨格検出を実行する、ことを含む方法。
【請求項7】
システムが画像の骨格検出を行う方法であって、
前記システムは、
骨格検出を行う対象画像と、
異なる骨格を定義する複数の骨格定義モデルにそれぞれ対応する複数の骨格検出モデルを格納し、
前記方法は、
前記システムが、骨格検出の推定計算コストが使用可能な計算リソース内に収まるように、前記複数の骨格検出モデルから、第1の骨格検出モデルを選択し、
前記システムが、前記第1の骨格検出モデルによって前記対象画像の骨格検出を実行する、ことを含む方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像における骨格検出の技術に関する。
【背景技術】
【0002】
静止画像や動画像内のフレーム画像内での人物の骨格や姿勢を推定する試みが多くあり、骨格検出、または姿勢推定と呼ばれている。これらの技術では、一般的に画像内での人物の関節や頭等の特定部位の位置を推定する手法が広まっている。
【0003】
近年、機械学習に基づく骨格検出手法が多く提案されており、高い精度を誇っている。特許文献1は、骨格検出の結果と3Dセンサによる人物外郭データや人物の姿勢の推定結果の適合度を評価することで妥当性の高い3D形状を取得する処理を記載している。特許文献2は、骨格検出の結果に基づく部位ごとの特徴量抽出を行い、身体特徴を用いた個人認証を実現する技術を開示している。
【先行技術文献】
【特許文献】
【0004】
【文献】米国特許出願公開第2013/0250050号
【文献】米国特許出願公開第2019/0278985号
【発明の概要】
【発明が解決しようとする課題】
【0005】
従来の骨格検出手法では、対象となる人物の状態によって検出精度が低くなり得る。例えば、遠方にいるため細部が明瞭でない人物や、群衆や遮蔽物などにより体の一部が隠れている人物などの、骨格の検出精度が低くなる。または、従来の骨格検出手法は計算コストが大きいため、エッジデバイスやモバイルデバイスなど計算リソースの少ない機器に骨格検出機能を実装した場合に、リソース不足で骨格検出機能が動作しない、又はその動作速度が遅くなり得る。
【課題を解決するための手段】
【0006】
本発明の一態様の骨格検出システムは、1以上の演算装置と、1以上の記憶装置と、を含む。前記1以上の記憶装置は、骨格検出を行う対象画像と、異なる骨格を定義する複数の骨格定義モデルにそれぞれ対応する複数の骨格検出モデルを格納する。前記1以上の演算装置は、前記対象画像の骨格検出について予め定められている条件の判定を行い、前記判定の結果に基づいて、前記複数の骨格検出モデルから、第1の骨格検出モデルを選択し、前記第1の骨格検出モデルによって前記対象画像の骨格検出を実行する。
【発明の効果】
【0007】
本発明の一態様によれば、骨格検出を高精度、高速、省リソースで実行することができる。本発明に関連する更なる特徴は、本明細書の記述、添付図面から明らかになるものである。また、上記した以外の、課題、構成及び効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【0008】
【
図1】遠距離用骨格検出モデルに対応する遠距離用骨格定義モデルを示す。
【
図2】群衆用骨格検出モデルに対応する群衆用骨格定義モデルを示す。
【
図5】出力装置が表示する骨格検出結果の例を示す。
【
図6】出力装置が表示する骨格検出結果の例を示す。
【
図7】骨格検出システムの動作のフローチャートを示す。
【
図8A】骨格定義モデルサマリテーブルの構成例を示す。
【
図8B】keypointデータテーブルの構成例を示す。
【
図8C】skeletonデータテーブルの構成例を示す。
【
図9】骨格検出結果データテーブルの構成例を示す。
【
図10】骨格検出モデル選択部の動作を説明するフローチャートである。
【発明を実施するための形態】
【0009】
以下、本発明の実施形態について図面を用いて詳細に説明する。便宜上その必要があるときは、複数のセクションまたは実施例に分割して説明するが、特に明示した場合を除き、それらは互いに無関係なものではなく、一方は他方の一部または全部の変形例、詳細、補足説明等の関係にある。また、以下において、要素の数等(個数、数値、量、範囲等を含む)に言及する場合、特に明示した場合及び原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。
【0010】
本システムは、物理的な計算機システム(一つ以上の物理的な計算機)でもよいし、クラウド基盤のような計算リソース群(複数の計算リソース)上に構築されたシステムでもよい。計算機システムあるいは計算リソース群は、1以上のインタフェース装置(例えば通信装置及び入出力装置を含む)、1以上の記憶装置(例えば、メモリ(主記憶)及び補助記憶装置を含む)及び1以上の演算装置を含む。
【0011】
命令コードを含むプログラムが演算装置によって実行されることで機能が実現される場合、定められた処理が、適宜に記憶装置及び/またはインタフェース装置等を用いながら行われるため、機能は演算装置の少なくとも一部とされてもよい。機能を主語として説明された処理は、演算装置あるいはその演算装置を有するシステムが行う処理としてもよい。プログラムは、プログラムソースからインストールされてもよい。プログラムソースは、例えば、プログラム配布計算機または計算機が読み取り可能な記憶媒体(例えば計算機読み取り可能な非一過性記憶媒体)であってもよい。各機能の説明は一例であり、複数の機能が一つの機能にまとめられたり、一つの機能が複数の機能に分割されたりしてもよい。
【0012】
以下の説明において、画像内での人物を含む動物の関節や頭等の特定部位の位置を推定することを「骨格検出」と呼ぶ。また、特定部位の位置のことを「keypoint」と呼ぶ。keypointは例えば、首、膝、肘などである。また、keypoint同士の接続関係のことを「skeleton」と呼ぶ。skeletonは例えば膝と足首、肩と肘など接続関係にあるkeypointの組のことである。
【0013】
以下に説明する骨格検出手法は、複数の骨格検出モデルから画像における骨格検出に適した骨格検出モデルを選択することで、高精度、高速かつ省リソースな骨格検出を実現する。省リソースは、計算機のCPU、GPU、RAMといった計算リソースの占有量が小さいことである。
【0014】
以下に説明する骨格検出システムの一例は、予め学習された複数の骨格検出モデルを保持し、骨格検出シーンに応じて骨格検出モデルを選択する。骨格検出シーンは、対象画像の骨格検出に関わる情報であり、対象画像の内容に関する情報、対象画像の撮像時刻前の画像の内容に関する情報、骨格検出を行うユーザによって入力される情報、骨格検出機能が実装される計算機の演算リソースに関する情報、画像の撮像装置についての情報などを含む。
【0015】
複数の骨格検出モデルは、それぞれ、異なる骨格定義モデルに基づき訓練される。異なる骨格定義モデルは、それぞれ、異なる数又は異なる種類のkeypoint又はskeletonで構成される。全ての骨格検出シーンに対応する骨格定義モデルと比較して、異なる骨格検出シーンそれぞれに適するように構成された骨格定義モデルにおいて、keypoint及びskeletonの一方又は両方の数が少なくなっている。
【0016】
keypointを削除又は統合することで、keypoint及びskeletonの数を減少させることができる。keypointの統合は、複数のkeypointを再計算により1つ又は元より少ない数のkeypointに置き換えることである。骨格検出は、keypoint及びskeletonの数に比例して計算コストの増える処理を含むため、keypointとskeletonの数を減らすことで高速、省リソースになる。
【0017】
骨格検出モデルは、有限次元の特徴量空間によって、画像とkeypoint及びskeletonとの間の関係を記憶している。よって、検出すべきkeypoint及びskeletonの数が少なくなる結果、keypoint又はskeletonの1つあたりに割り当てられる特徴量空間が大きくなり、各keypointの検出精度が高くなる。あるkeypointを検出しないことで、そのkeypointとskeletonで接続されていた別のkeypointの検出精度が低くなり得るが、適切にkeypointを選択し骨格定義モデルを構成することで回避できる。
【0018】
以上のとおり、keypoint及びskeletonの数を少なくした骨格定義モデルを用いて骨格検出モデルを構成することで、骨格検出における高精度、高速、省リソースを両立して実現することができる。一方で、骨格定義モデルに含まれないkeypointは検出されないため、骨格検出シーンに応じて適切な骨格検出モデル(骨格定義モデル)が選択される。
【0019】
本明細書の一実施例に係る骨格検出手法は、骨格検出を高精度、高速、省リソースで実行することができる。また、当該骨格検出手法が検出するkeypoint数は少なくなるが、当該骨格検出手法は、骨格検出シーンに応じて適切なkeypointを検出することができる。
【実施例1】
【0020】
以下において、本明細書の一実施例に係る骨格検出システムを説明する。本例における骨格検出システムは、1台の監視カメラによって撮影された静止画像又は動画像内のフレーム画像を受け取り、当該画像の骨格検出について予め定められている条件の判定を行う。骨格検出システムは、対象画像の骨格検出シーンの情報を参照して、上記骨格検出についての予め定められた条件を判定する。
【0021】
骨格検出システムは、その判定結果に基づいて、複数の骨格検出モデルの中から、当該画像から骨格を検出するための骨格検出モデルを選択する。骨格検出システムは、選択した骨格検出モデルを用いて、当該画像の骨格検出処理を行う。
【0022】
本実施例での骨格検出シーンに含まれる情報を説明する。本実施例の骨格検出シーンは、過去フレーム画像の各keypointの検出率、過去のフレーム画像内の人数、カメラと過去フレーム画像内人物との推定距離、及びユーザに指定された骨格検出の目的、を含む。骨格検出システムは、上記情報をもとに、対象画像のための骨格検出モデルを選択する。
【0023】
以下に説明する例で選択可能な骨格検出モデルは、2種類の骨格検出モデル、具体的には、遠距離用骨格検出モデルと群衆用骨格検出モデルとで構成されている。
図1は、遠距離用骨格検出モデルに対応する遠距離用骨格定義モデル10を示す。
図2は、群衆用骨格検出モデルに対応する群衆用骨格定義モデル20を示す。図中の矩形はkeypoint、keypointを接続する直線はskeletonを表す。
【0024】
遠距離用骨格定義モデル10は、頭101、首102、右肩103、左肩104、尻105、右膝106、左膝107、右足首108、及び左足首109のkeypointを定義する。遠距離用骨格定義モデルは、さらに、頭と首との間のskeleton151、首と右肩との間のskeleton152、首と左肩との間のskeleton153、首と尻との間のskeleton154、尻と右膝との間のskeleton155、尻と左膝との間のskeleton156、右膝と右足首との間のskeleton157、及び左膝と左足首との間のskeleton158を定義している。
【0025】
遠距離用骨格定義モデル10は、手首、肘、目、鼻、口、耳などのサイズが小さい部位のkeypointを含まない。遠距離用骨格モデルのkeypointは、遠くからでも見えやすい大きな部位で構成されている。そのため、遠距離用骨格検出モデルは、遠距離の人物を高速、高精度に検出するのに適している。
【0026】
図2は、群衆用骨格検出モデルに対応する群衆用骨格定義モデル20を示す。群衆用骨格定義モデル20は、右目201、左目202、鼻203、首204、右肩205、左肩206、右肘207、及び左肘208のkeypointを定義する。
【0027】
群衆用骨格定義モデル20は、さらに、右目と鼻との間のskeleton251、左目と鼻との間のskeleton252、鼻と首との間のskeleton253、首と右肩との間のskeleton254、首と左肩との間のskeleton255、右肩と右肘との間のskeleton256、及び左肩と左肘との間のskeleton257を定義している。
【0028】
群衆用骨格定義モデル20は、尻、膝、足首など下半身のkeypointを含まない。群衆用骨格モデルのkeypointは、人物同士が重なり合っていても見えやすい上半身の部位で構成されている。そのため、群衆用骨格検出モデルは、人物同士の重なりが多い群衆内の人物の骨格を高速、高精度に検出するのに適している。
【0029】
これらの骨格定義モデルは従来の骨格検出手法の骨格定義モデルよりも少ないkeypointで構成されており、これによって高精度、高速、省リソースを実現することができる。また、これらの骨格定義モデルは従来の骨格検出手法の骨格定義モデルと共通のkeypointを多く含んでおり、共通でないkeypointも、複数のkeypointの統合によって一座標を計算できるものになっている。例えば、頭keypointは、右目、左目、鼻、口のkeypointの重心をとることで位置を決定することができる。これによって、従来の骨格検出手法で使われている学習データセットを活用し高精度の骨格検出を実現することができる。
【0030】
以下に説明する構成例は、1台の監視カメラによる画像を基に骨格検出モデルを選択する。他の構成例は、複数台の監視カメラを連携しほかの監視カメラによって得られた情報をもとに骨格モデルを選択してもよい。
【0031】
図3は、本実施例の骨格検出システムの構成図である。
図4は、骨格検出モデル選択部302の構成図の例である。骨格検出システム30は、入力装置310と、出力装置314と、演算装置311と、メモリ312と、補助記憶装置313とを含む。入力装置310は、監視カメラとの通信インタフェースを含み、画像の入力を受け付ける。また入力装置310は、マウス、キーボードなどのヒューマンインタフェースを含み、ユーザによる骨格検出システム30への入力を受け付ける。出力装置314は、骨格検出システム30による演算結果を出力するディスプレイやプリンタなど、またはサーバなど別機器との通信インタフェースを含む。
【0032】
補助記憶装置313は、骨格検出システム30による分析処理を実現する各種プログラム、及び処理の実行結果等を格納する。補助記憶装置313は、骨格検出モデル選択部302、骨格検出実行部303、骨格検出結果出力部304、骨格検出実行条件入力部305、画像内情報分析部306、及びカメラ画像取得部309の、処理プログラムを格納している。さらに、補助記憶装置313は、骨格モデル記憶部301、骨格検出結果記憶部307、及びシーン情報記憶部308を格納している。これらはデータベース(データファイル)である。
【0033】
メモリ312には、補助記憶装置313に格納されている各種プログラム及びデータが展開される。演算装置311は、メモリ312にロードされたプログラムを実行して対応する機能部として動作し、例えば、1以上のCPU、GPUなどで構成される。以下に説明する処理及び演算は、演算装置311が実行する。
【0034】
骨格モデル記憶部301は、複数の骨格検出モデル及びそれぞれに対応する骨格定義モデルを格納している。骨格検出モデルは機械学習モデルであり、例えばニューラルネットワークである。骨格検出モデルは、画像を入力とし、各keypointの検出結果を画像内座標として出力する。
【0035】
複数の骨格検出モデルが出力するkeypointの種類が、それぞれ異なる。例えば、骨格検出モデルAは、目、鼻、耳、口、首、右肩、左肩、右肘、左肘、右手首、左手首、右尻、左尻、右膝、左膝、右足首、左足首のkeypointを出力する。骨格検出モデルBは頭部、首、右肩、左肩、尻、右膝、左膝、右足首、左足首のkeypointを出力する。
【0036】
また、異なる骨格検出モデルは、keypoint同士の接続関係であるskeletonについてもそれぞれ異なる定義を持っている。例えば骨格検出モデルCは右肩と左肩を接続するskeletonを含むが、骨格検出モデルDは、右肩と左肩を接続するskeletonが存在しない。骨格検出モデルは、大量に蓄積された人物の画像から統計的に構築され(訓練され)、画像内のどのような色や形状が各keypoint及びskeletonである確率が高いかを決定する。
【0037】
骨格検出モデル選択部302は、シーン情報記憶部308から取得した骨格検出シーンの情報に基づき、骨格モデル記憶部301に格納されている複数の骨格検出モデルから、実行するべき骨格検出モデルを選択する。本実施例では、過去のフレーム画像の各keypointの検出率と、過去のフレーム画像内の人数と、カメラと人物との推定距離と、ユーザにより指定された骨格検出の目的を基準として、骨格検出モデルの選択を行う。カメラと人物との距離は、画像内の人物の大きさと画像内座標に基づき推定できる。
【0038】
骨格検出実行部303は、骨格モデル記憶部301に格納されている骨格検出モデルのうち、骨格検出モデル選択部302の選択した骨格検出モデルを用いて、現在画像を入力としkeypointの検出結果を出力する骨格検出処理を行う。骨格検出結果出力部304は、骨格検出実行部303から出力された骨格検出結果から得られる情報を出力装置314に出力する。骨格検出結果出力部304は、骨格検出結果について、予め定められた種類の情報を出力装置314に出力する。骨格検出結果出力部304は、例えば、侵入者の検知結果、人物の数、入力画像と検出骨格を重ねた画像等を出力してもよい。
【0039】
図5及び6は、出力装置314が表示する骨格検出結果の例を示す。
図5の検出結果画像は、遠距離用骨格検出モデルにより検出された骨格と、使用された骨格検出モデルについての情報を合わせて示す。上述のように、遠距離用骨格検出モデルは、頭から足首までの全身のkeypointを検出し、遠くからでも検出できる比較的大きい部位のkeypointを検出する。
図6の検出結果画像は、群衆用骨格検出モデルにより検出された骨格と、使用された骨格検出モデルについての情報を合わせて示す。上述のように、群衆用骨格検出モデルは、人物同士が重なり合っていても見えやすい上半身のkeypointを検出する。
【0040】
図3に戻って、骨格検出実行条件入力部305は、入力装置310を介して、骨格検出シーンに関する情報をユーザから取得し、シーン情報記憶部308に格納する。本実施例では、骨格検出を行う目的がユーザにより入力される。本実施例では、ユーザは、骨格検出を行う目的を、「人数カウント」「侵入者検知」「特定行動検知」「選択なし」の中から選択する。
【0041】
画像内情報分析部306は、カメラ画像取得部309から入力画像を取得し、また骨格検出結果記憶部307から1以上の過去(入力画像以前の)フレーム画像の骨格検出結果を取得する。画像内情報分析部306は、過去フレーム画像の骨格検出結果を分析して入力画像の骨格検出シーンに関する情報を取得し、シーン情報記憶部308に格納する。
【0042】
本実施例では、画像内情報分析部306は、各過去フレーム画像における、各keypointの検出率、画像内の人数、及びカメラと人物の推定距離を取得し出力する。各keypointの検出率は、各keypointが画像内の人物について検出された割合であり、画像内において、各keypointの検出数を人物の数で除算した値である。
【0043】
画像内の人数の取得方法は、例えば、骨格検出結果を利用し人物の頭部を数える。カメラと人物の距離の推定方法は、骨格検出結果を利用し人物の画像内の大きさによって距離を推定できる。または、カメラの画角と地面の形状の情報が分かっていれば、距離推定方法は、人物の足首の画像内座標から距離を推定できる。例えば、画像内の距離推定可能な全ての人の距離が推定される。
【0044】
骨格検出結果記憶部307は、骨格検出実行部303によって出力された骨格検出の結果と、その結果を出力した骨格検出モデルを格納する。格納されている情報は、必要に応じて、画像内情報分析部306に取得される。
【0045】
シーン情報記憶部308は、画像内情報分析部306及び骨格検出実行条件入力部305から出力された骨格検出シーンに関する情報を記憶する。カメラ画像取得部309は、骨格検出システム30に接続されたカメラから画像を取得し、画像内情報分析部306及び骨格検出実行部303に出力する。
【0046】
図4は骨格検出モデル選択部302の論理構成例を示す。骨格検出モデル選択部302は、シーン情報取得部401と、画像取得部402と、選択実行部403と、選択結果出力部404とを含む。
【0047】
シーン情報取得部401は、シーン情報記憶部308からシーン情報を取得する。本実施例では、シーン情報には、過去の骨格検出結果と、ユーザによって入力された骨格検出を行う目的が含まれる。画像取得部402は、カメラ画像取得部309からカメラ画像の入力を受け付ける。選択実行部403は、入力されたシーン情報と画像に基づき骨格検出で使用する骨格検出モデルの選択を行う。選択結果出力部404は、骨格検出モデルの選択結果を骨格検出実行部303に出力する。
【0048】
次に、本実施例の骨格検出システム30の動作を
図7のフローチャートを用いて説明する。ステップS101において、骨格検出実行条件入力部305は、ユーザによる骨格検出を行う目的の入力を受け取り、シーン情報記憶部308に記録する。ステップS102において、カメラ画像取得部309が、骨格検出処理を行う入力画像を取得する。ステップS103において、骨格検出モデル選択部302が、モデル選択処理を実行し、骨格検出処理で使う骨格モデルMを決定する。
【0049】
ステップS104において、骨格検出実行部303が、ステップS103で決定された骨格モデルMを骨格モデル記憶部301から取得する。ステップS105において、骨格検出実行部303が、骨格モデルMを使い骨格検出処理を実行し、骨格検出結果を骨格検出結果記憶部307に格納する。骨格検出結果出力部304は、出力装置314に骨格検出結果に基づく情報を出力する。骨格検出結果に基づきシーン情報記憶部308のシーン情報を更新する。ステップS106において、骨格検出モデル選択部302が、続けて処理する入力画像があるか判定を行う。次の入力画像がある場合は(S106:YES)、ステップS107に進み、次の入力画像がない場合は(S106:NO)、骨格検出システムの処理を終了する。
【0050】
ステップS107において、骨格検出モデル選択部302が続けて処理する入力画像を取得する。ステップS108において、骨格検出モデル選択部302が更新されたシーン情報を用いてモデル選択処理を実行し、次の骨格検出処理で使う骨格検出モデルNを決定する。モデルMとモデルNとが同じ骨格検出モデルの場合(S109:YES)、フローはステップS105に戻り、それらが異なる骨格検出モデルの場合(S109:NO)、フローはステップS110に進む。ステップS110において、骨格検出実行部303が、ステップS108で決定された骨格検出モデルNを骨格モデル記憶部301から取得する。フローは、以降骨格検出モデルMを骨格検出モデルNで置き換え、ステップS105に戻る。
【0051】
ここで、骨格定義モデル、骨格定義モデルのkeypoint情報、骨格定義モデルのskeleton情報、及び骨格検出結果のデータ構成例を、
図8Aから8C及び9を用いて説明する。
図8Aから8Cは、骨格定義モデルを表すデータ構造を示している。
図8Aは骨格定義モデルサマリテーブル、
図8Bは、keypointデータテーブル、
図8Cは、skeletonデータテーブルの構成例を示す。
【0052】
図8Aに示す骨格定義モデルサマリテーブルは、異なる骨格定義モデルそれぞれのサマリ情報を示す。骨格定義モデルサマリテーブルは、骨格定義モデル名欄801、keypoint数欄802、skeleton数欄803、keypointテーブル欄804、及びskeletonテーブル欄805を含む。
【0053】
骨格定義モデル名欄801は、骨格定義モデルそれぞれの名称を示す。モデル名は、骨格定義モデルの一意に同定する。keypoint数欄802及びskeleton数欄803は、それぞれ、骨格定義モデルを構成するkeypointの数及びskeletonの数を示す。keypoint数及びskeleton数はそのモデルの計算コストの指標でもある。
【0054】
keypointテーブル欄804は、骨格定義モデルのkeypointの詳細情報を示すkeypointデータテーブルへのリンクを示す。skeletonテーブル欄805は、骨格定義モデルのskeletonの詳細情報を示すskeletonデータテーブルへのリンクを示す。以降、骨格定義モデルM1を例に説明する。
【0055】
図8Bは、骨格定義モデルM1のke
ypointデータテーブルの構成例を示す。keypointデータテーブルは、ke
ypoint名欄811、有効性判定対象欄812、及び有効検出率欄813を含む。
【0056】
keypoint名欄811は、骨格モデルに含まれるkeypointの一覧を示す。keypoint名は、骨格定義モデルにおけるkeypointを一意に同定する。有効性判定対象欄812は、各keypointについて、骨格検出モデル選択部302で行われるモデルの有効性判定処理で使用されるkeypointか否かを示す。有効検出率欄813は、keypointが使用される場合の有効検出率を示す。
【0057】
図8Cは、骨格定義モデルM1のskeletonデータテーブルの構成例を示す。skeletonデータテーブルは、skeletonID欄821、始点欄822、及び終点欄823を含む。skeletonID欄821は、骨格定義モデルに含まれるskeletonのIDの一覧を示す。始点欄822及び終点欄823は、それぞれ、各skeletonが接続する始点keypoint及び終点keypointを示す。
【0058】
上述のように、骨格定義モデルは、検出する骨格のkeypoint及びskeletonを定義する。骨格定義モデルに対応する骨格検出モデルは、これらkeypoint及びskeletonの定義に従って学習を行う。骨格定義モデルに従って学習を行った骨格検出モデルは、入力された画像に対して、検出されたkeypointの座標を出力する。学習の方法は既に知られた技術であり説明を省略する。
【0059】
図9は、骨格検出モデルによる検出結果を示す、骨格検出結果データテーブルの構成例を示す。骨格検出結果データテーブルは、結果ID欄901、画像ID欄902、座標欄903、骨格定義モデル欄904、及びkeypoint欄905を含む。結果ID欄901は、検出結果のIDを示す。画像ID欄902は、検出対象の画像のIDを示す。例えば、画像IDは連番であり、前後のフレームは画像IDから知ることができる。座標欄903は画像内の座標を示し、(x座標、y座標)の形式で表される。骨格定義モデル欄904は、骨格検出に使われた骨格検出モデルが対応する骨格定義モデルを示す。Keypointは、骨格定義モデルにおけるいずれのkeypointであるかを示す。
【0060】
次に、骨格検出モデル選択部302の動作を説明する。骨格検出モデル選択部302は、シーン情報と入力画像を受け取り、骨格検出モデルの選択結果を出力する。本実施例では、骨格検出モデル選択部302は、遠距離用骨格検出モデルと群衆用骨格検出モデルの2種類の骨格検出モデルのうちの一方を選択する。なお、用意される骨格検出モデルの数は3以上でもよい。
【0061】
図10は、骨格検出モデル選択部302の動作を説明するフローチャートである。ステップS201において、シーン情報取得部401がシーン情報Sを受け取る。本実施例において、シーン情報取得部401は、シーン情報として、過去のフレーム画像における骨格検出結果とユーザに指定された骨格検出を行う目的を受け取る。
【0062】
本実施例では、骨格検知を行う目的は「人数のカウント」「侵入者検知」「特定行動検知」「選択なし」のいずれかであるとする。ステップS202において、画像取得部402が入力画像を受け取る。ステップS203で、選択実行部403は、過去のフレーム画像の骨格検出結果があるか判定を行う。
【0063】
図7を参照して説明した骨格検出システム処理フローのステップS103において、過去のフレーム画像の骨格検出結果がなく、ステップS108では過去のフレーム画像の骨格検出が存在する。過去の検出結果がない場合(S203:NO)、フローはステップS204に進む。
【0064】
ステップS204では、選択実行部403は、骨格検出の目的による分岐判定を行う。骨格検出の目的が「人数カウント」の場合は、選択実行部403は、群衆用の骨格モデルを選択する(ステップS213)。骨格検出の目的が「侵入者検知」または「設定なし」の場合は、選択実行部403は、遠距離用の骨格モデルを選択する(ステップS214)。選択結果出力部404は、骨格検出モデルの選択結果を出力し、骨格検出モデル選択部302の処理が終了する。
【0065】
ステップS203に戻り、過去フレーム画像の検出結果がある場合は(S203:YES)、フローはステップS205に進む。ステップS205では、選択実行部403は、過去の骨格検出結果を用い、過去10フレーム画像ののべ検出人数を算出する。のべ検出人数が0人の場合は(S205:YES)、参照できる過去検出結果が存在しないので、フローはステップS204に進む。
【0066】
のべ検出人数が1人以上の場合は(S205:NO)、フローはステップS206に進む。ステップS206では、選択実行部403は、直前フレーム画像の骨格検出で使用された骨格モデルによって分岐判定を行う。使用された骨格モデルが遠距離用の場合はステップS207に進む。
【0067】
ステップS207では、選択実行部403は、過去の骨格検出結果を用い直前の10フレーム画像の平均検出人数を算出し、平均検出人数が10人以上か判定する。平均検出人数が10人未満の場合は(S207:NO)、フローはステップS213に進み、選択実行部403は、遠距離用骨格モデルを選択する。平均検出人数が10人以上の場合は(S207:YES)、フローはステップS208に進む。このように過去の複数のフレーム画像の検出結果を参照することで、より適切な選択が可能となる。
【0068】
ステップS208では、過去フレーム画像の骨格検出結果を用い、最も遠い人物とカメラとの推定距離を算出する。例えば、選択実行部403は、直前の10フレーム画像を参照する。例えば、人物の画像内の大きさによって大まかな距離を算出することができる。または、カメラの画角と地面の形状の情報が分かっていれば、人物の足首の画像内座標から大まかな距離を算出することができる。最も遠い人物との推定距離が100mより長い場合は(S208:NO)、選択実行部403は、ステップS213に進み遠距離用骨格モデルを選択する。推定距離が100m以下の場合はステップS209に進む。
【0069】
ステップS209では、選択実行部403は、直前10フレーム画像でのkeypointの検出率による分岐判定を行う。
図8Bを参照して説明したように、keypointデータテーブルは、骨格モデル内のkeypointごとに有効性判定対象か否かを示し、さらに、有効性判定対象の有効検出率を示す。選択実行部403は、有効性判定対象となっている各keypointについて、直前10フレーム画像の平均検出率が、指定された有効検出率を超えるか判定する。
【0070】
ここでは例として、右膝、左膝、右足首、左足首が有効性判定対象のkeypointとする。これらのkeypointの検出率が低いということは、下半身が見えない画角ということである。さらにステップS207の分岐条件より画像内の人数が多いことから、群衆用骨格モデルの方が適している可能性が高いということになる。
【0071】
よって、すべての有効性判定対象となっているkeypointについて、直前10フレーム画像の平均検出率が有効検出率以下であった場合は(S209:YES)、選択実行部403は、ステップS214に進み骨格モデルを群衆用に変更する。そうでない場合は(S209:NO)、選択実行部403は、ステップS213に進み遠距離用骨格モデルを選択する。
【0072】
次に、ステップS206に戻り、直前フレームの骨格検出で使用された骨格検出モデルが群衆用の場合は(S206:NO)、フローはステップS210に進む。ステップS210ではステップS207と同様に、選択実行部403は、直前10フレーム画像の平均検出人数で分岐判定を行う。平均検出人数が10人以上の場合は(S210:NO)、選択実行部403は、ステップS214に進み群衆用骨格モデルを選択する。平均検出人数が10人未満の場合は(S210:YES)、フローはステップS211に進む。
【0073】
ステップS211では、ステップS208と同様に、選択実行部403は、カメラと人物の推定距離で分岐判定を行う。例えば、選択実行部403は、直前の10フレーム画像を参照する。最も遠い人物との推定距離が50m未満の場合は(S211:NO)、選択実行部403は、ステップS214に進み群衆用骨格モデルを選択する。推定距離が50m以上の場合は(S211:YES)、フローはステップS212に進む。
【0074】
ステップS212では、ステップS209と同様に、選択実行部403は、直前10フレーム画像でのkeypointの検出率による分岐判定を行う。ここでは例として、右肘、右膝、右目、左目、鼻のkeypointの検出率を判定対象とする。
【0075】
これらのkeypointの検出率が低いということは、体の末端の部位や小さい部位が見えない画角ということである。さらにステップS211の分岐条件により、人物との距離が大きい。従って、遠距離用骨格モデルの方が適している可能性が高いということになる。
【0076】
よって、すべての有効性判定対象となっているkeypointについて、直前10フレーム画像の平均検出率が有効検出率以下である場合は(S212:YES)、選択実行部403は、ステップS213に進み骨格モデルを遠距離用に変更する。そうでない場合は(S212:NO)、選択実行部403は、ステップS213に進み群衆用骨格モデルを選択する。
【0077】
ステップS213で遠距離用骨格モデルを選択した後、選択結果出力部404は選択結果を出力し、骨格検出モデル選択部302の処理が終了する。ステップS214で群衆用骨格モデルを選択した場合も同様である。
【0078】
以上で述べたように、本実施例の骨格検出システムによれば、keypointの少ない骨格モデルを用いることで高精度、高速、省リソースな骨格検出を実現することができる。その際、骨格検出シーンに応じた骨格モデルを選択し、不要なkeypointや検出しにくいkeypointを排除することで、必要なkeypointや検出しやすいkeypointに計算リソースを集中させ、人数カウントや侵入者検知、特定行動検出といった骨格検出を行う目的を達成することができる。
【0079】
なお、上記例は、ユーザ指定された目的及び過去画像の情報に基づき骨格検出モデルを選択するが、これらの一方のみに基づき骨格検出モデルを選択してもよい。骨格検出モデル選択部302は、上記条件と異なる条件に基づき骨格検出モデルを選択することができる。例えば、画角、設置高さ、仰俯角等の撮像装置の撮像条件や、画像の撮像時刻、撮像対象の競技種類等に基づいて骨格検出モデルを選択することができる。
【実施例2】
【0080】
別の実施例として、フレームレート、画像解像度、使用可能な計算リソース(ハードウェアスペック及びリソース占有率)等、画像の内容ではなく、骨格検出に関わる物理的な条件に応じて、骨格検出モデルの選択を行う方法を説明する。フレームレート、画像解像度、使用可能な計算リソースは、骨格検出について予め定められている条件であり、骨格検出モデルの骨格検出シーンに含まれる情報である。本実施例は、
図11Aから11Cに示すような、検出keypoint数を段階的に変化させた骨格検出モデルから、一つの骨格検出モデルを選択する。これにより、計算リソースに対して適切な骨格検出モデルを選択することができる。
【0081】
図11A、11B及び11Cは、keypoint数が異なる骨格定義モデル701、702及び703を示す。これらの順に、keypoint及びskeletonの数が多く、骨格検出のための計算コストも大きい。これら骨格定義モデル701、702及び703に対応する骨格検出モデルが、選択候補として用意される。
【0082】
骨格検出の計算コストは、処理するフレームレートと画像解像度に比例し変化する。よって、例えば、画像解像度と使用可能な計算リソースに応じて骨格モデルの選択を行うことで、要求されるフレームレートで骨格検出処理を行うことができる。フレームレートは、例えば、撮像されている動画像のフレームレート、又は、予め指定されている骨格検出処理のフレームレートである。フレームレート及び画像解像度は、画像を撮像するカメラから取得する又はユーザから取得することができる。使用可能な計算リソースは、骨格検出システム3が実行しているオペレーティングシステムから取得することができる。
【0083】
例えば、骨格検出システム3は、keypoint数が異なる遠距離用骨格検出モデル及びkeypoint数が異なる群衆用骨格検出モデルを格納している。骨格検出モデル選択部302は、実施例1において説明した方法に従って、遠距離用又は群衆用骨格検出モデルの一方の種類を選択した後、さらに、選択した種類の骨格検出モデルから、一つの適切なkeypoint数の骨格検出モデルを選択する。
【0084】
例えば、骨格検出モデル選択部302は、骨格検出モデルのkeypoint及びskeletonの数と、要求フレームレート及び画像解像度から、必要な計算リソースを計算することができる。骨格検出モデルのkeypoint及びskeletonの数は、
図8Aを参照して説明した骨格定義モデルサマリテーブルに格納されている。
【0085】
骨格検出モデル選択部302は、推定される計算コストが使用可能な計算リソースに収まるように、骨格検出モデルを選択する。骨格検出モデル選択部302は、例えば、要求フレームレート、画像解像度及び使用可能な計算リソースの条件内で、最もkeypoint及びskeletonの数が多い骨格検出モデルを選択することができる。条件を満たす骨格検出モデルが存在しない場合は、keypoint及びskeletonの数が最も少ない骨格検出モデルを選択してもよい。
【0086】
なお、骨格検出システム3は、実施例1を参照して説明した判定を行うことなく、上記物理的条件についてのみ判定を行い、keypoint及びskeletonの数が異なる骨格検出モデルから、一つの骨格検出モデルを選択してもよい。
【0087】
本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明したすべての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【0088】
また、上記の各構成・機能・処理部等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、演算装置がそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード等の記録媒体に置くことができる。
【0089】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしもすべての制御線や情報線を示しているとは限らない。実際には殆どすべての構成が相互に接続されていると考えてもよい。
【符号の説明】
【0090】
30 :骨格検出システム
301 :骨格モデル記憶部
302 :骨格検出モデル選択部
303 :骨格検出実行部
304 :骨格検出結果出力部
305 :骨格検出実行条件入力部
306 :画像内情報分析部
307 :骨格検出結果記憶部
308 :シーン情報記憶部
309 :カメラ画像取得部
310 :入力装置
311 :演算装置
312 :メモリ
313 :補助記憶装置
314 :出力装置
401 :シーン情報取得部
402 :画像取得部
403 :選択実行部
404 :選択結果出力部