(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-26
(45)【発行日】2024-05-09
(54)【発明の名称】学習装置、処理装置、学習方法、姿勢検出モデル、プログラム、及び記憶媒体
(51)【国際特許分類】
G06T 7/00 20170101AFI20240430BHJP
G06N 20/00 20190101ALI20240430BHJP
【FI】
G06T7/00 350B
G06N20/00
(21)【出願番号】P 2020152140
(22)【出願日】2020-09-10
【審査請求日】2023-03-24
(73)【特許権者】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(74)【代理人】
【識別番号】110004026
【氏名又は名称】弁理士法人iX
(72)【発明者】
【氏名】浪岡 保男
(72)【発明者】
【氏名】吉井 崇哲
(72)【発明者】
【氏名】和田 篤
【審査官】藤原 敬利
(56)【参考文献】
【文献】特開2020-016935(JP,A)
【文献】戎野 聡一,組み立て作業解析のためのハイアングル画像の自動骨格アノテーション,SSII2020 第26回 画像センシングシンポジウム 講演資料集,日本,画像センシング技術研究会,2020年06月10日
【文献】村上 達哉,人体姿勢アノテーション困難な映像における類似姿勢学習の有用性,情報処理学会 研究報告 コンピュータビジョンとイメージメディア(CVIM) 2018-CVIM-212,日本,情報処理学会 ,2018年05月03日
(58)【調査した分野】(Int.Cl.,DB名)
G06T 7/00- 7/90
G06V 10/00-20/90
G06N 20/00
(57)【特許請求の範囲】
【請求項1】
実際の人物を写した実写画像又は仮想の人体モデルを用いて描画された描画画像が入力されると、前記実写画像又は前記描画画像に含まれる人体の姿勢を示す姿勢データを出力する第1モデルと、
前記姿勢データが入力されると、前記姿勢データが前記実写画像と前記描画画像のいずれに基づくか判定する第2モデルと、
を学習させる学習装置であって、
前記第2モデルによる判定の精度が低下するように前記第1モデルを学習させ、
前記第2モデルによる判定の精度が向上するように前記第2モデルを学習させる、学習装置。
【請求項2】
前記第1モデルの学習中には、前記第2モデルの更新を停止し、
前記第2モデルの学習中には、前記第1モデルの更新を停止する、請求項1記載の学習装置。
【請求項3】
前記第1モデルの学習と前記第2モデルの学習を交互に実行する、請求項1又は2に記載の学習装置。
【請求項4】
複数の前記描画画像を用いて前記第1モデルを学習させ、
前記複数の描画画像の少なくとも一部は、前記人体モデルの一部を上方から描画した画像である、請求項1~3のいずれか1つに記載の学習装置。
【請求項5】
前記姿勢データは、人体の複数の部位の位置を示すデータと、部位間の関連性を示すデータと、を含む、請求項1~4のいずれか1つに記載の学習装置。
【請求項6】
請求項1~5のいずれか1つに記載の学習装置により学習された前記第1モデルに、作業中の人物を写した複数の作業画像を入力し、時間に対する姿勢の変化を示す時系列データを取得する、処理装置。
【請求項7】
実際の人物を写した実写画像又は仮想の人体モデルを用いて描画された描画画像が入力されると、前記実写画像又は前記描画画像に含まれる人体の姿勢を示す姿勢データを出力する第1モデルと、
前記姿勢データが入力されると、前記姿勢データが前記実写画像と前記描画画像のいずれに基づくか判定する第2モデルと、
を学習させる学習方法であって、
前記第2モデルによる判定の精度が低下するように前記第1モデルを学習させ、
前記第2モデルによる判定の精度が向上するように前記第2モデルを学習させる、学習方法。
【請求項8】
請求項7記載の学習方法により学習された前記第1モデルを含む姿勢検出モデル。
【請求項9】
コンピュータに、
実際の人物を写した実写画像又は仮想の人体モデルを用いて描画された描画画像が入力されると、前記実写画像又は前記描画画像に含まれる人体の姿勢を示す姿勢データを出力する第1モデルと、
前記姿勢データが入力されると、前記姿勢データが前記実写画像と前記描画画像のいずれに基づくか判定する第2モデルと、
を学習させるプログラムであって、
前記第2モデルによる判定の精度が低下するように前記第1モデルを学習させ、
前記第2モデルによる判定の精度が向上するように前記第2モデルを学習させる、プログラム。
【請求項10】
請求項9記載のプログラムを記憶した記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、学習装置、処理装置、学習方法、姿勢検出モデル、プログラム、及び記憶媒体に関する。
【背景技術】
【0002】
画像から人体の姿勢を検出する技術がある。この技術について、姿勢の検出精度の向上が求められている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明が解決しようとする課題は、姿勢の検出精度を向上可能な、学習装置、処理装置、学習方法、姿勢検出モデル、プログラム、及び記憶媒体を提供することである。
【課題を解決するための手段】
【0005】
実施形態に係る学習装置は、第1モデル及び第2モデルを学習させる。前記第1モデルは、実際の人物を写した実写画像又は仮想の人体モデルを用いて描画された描画画像が入力されると、前記実写画像又は前記描画画像に含まれる人体の姿勢を示す姿勢データを出力する。前記第2モデルは、前記姿勢データが入力されると、前記姿勢データが前記実写画像と前記描画画像のいずれに基づくか判定する。前記学習装置は、前記第2モデルによる判定の精度が低下するように前記第1モデルを学習させる。前記学習装置は、前記第2モデルによる判定の精度が向上するように前記第2モデルを学習させる。
【図面の簡単な説明】
【0006】
【
図1】第1実施形態に係る学習システムの構成を表す模式図である。
【
図2】第1実施形態に係る学習方法を表すフローチャートである。
【
図7】第1モデル及び第2モデルの学習方法を表す模式図である。
【
図8】第1実施形態の第1変形例に係る学習システムの構成を示す模式的ブロック図である。
【
図9】第2実施形態に係る分析システムの構成を表す模式的ブロック図である。
【
図10】第2実施形態に係る分析システムによる処理を説明するための図である。
【
図11】第2実施形態に係る分析システムによる処理を説明するための図である。
【
図12】第2実施形態に係る分析システムによる処理を説明するための図である。
【
図13】第2実施形態に係る分析システムによる処理を説明するための図である。
【
図14】第2実施形態に係る分析システムによる処理を表すフローチャートである。
【
図15】システムのハードウェア構成を表すブロック図である。
【発明を実施するための形態】
【0007】
以下に、本発明の各実施形態について図面を参照しつつ説明する。
本願明細書と各図において、既に説明したものと同様の要素には同一の符号を付して詳細な説明は適宜省略する。
【0008】
(第1実施形態)
図1は、第1実施形態に係る学習システムの構成を表す模式図である。
第1実施形態に係る学習システム10は、画像中の人物の姿勢を検出するモデルの学習に用いられる。学習システム10は、学習装置1、入力装置2、表示装置3、及び記憶装置4を含む。
【0009】
学習装置1は、モデルの学習に使用される学習データを生成する。また、学習装置1は、モデルを学習させる。学習装置1は、汎用又は専用のコンピュータである。複数のコンピュータにより、学習装置1の機能が実現されても良い。
【0010】
入力装置2は、ユーザが学習装置1に情報を入力する際に用いられる。入力装置2は、例えば、マウス、キーボード、マイク(音声入力)、及びタッチパッドから選択される少なくともいずれかを含む。
【0011】
表示装置3は、学習装置1から送信された情報をユーザに向けて表示する。表示装置3は、例えば、モニタ及びプロジェクタから選択される少なくともいずれかを含む。タッチパネルのように、入力装置2と表示装置3の両方の機能を備えた機器が用いられても良い。
【0012】
記憶装置4は、学習システム10に関するデータ及びモデルを記憶する。記憶装置4は、例えば、ハードディスクドライブ(HDD)、ソリッドステートドライブ(SSD)、及びネットワーク接続ハードディスク(NAS)から選択される少なくともいずれかを含む。
【0013】
学習装置1、入力装置2、表示装置3、及び記憶装置4は、無線通信、有線通信、ネットワーク(ローカルエリアネットワーク又はインターネット)などにより、相互に接続される。
【0014】
学習システム10について、より具体的に説明する。
学習装置1は、第1モデル及び第2モデルの2つのモデルを学習させる。第1モデルは、実写画像又は描画画像が入力されると、実写画像又は描画画像に含まれる人体の姿勢を検出する。実写画像は、実際の人物を写した得られる画像である。描画画像は、仮想の人体モデルを用いて、コンピュータプログラムにより描画された画像である。描画画像は、学習装置1により生成される。
【0015】
第1モデルは、検出結果として、姿勢データを出力する。姿勢データは、人物の姿勢を示す。姿勢は、人体の複数の部位の位置により表される。姿勢は、部位同士の関連性により表されても良い。姿勢は、人体の複数の部位の位置と部位同士の関連性の両方により表されても良い。以下では、複数の部位及び部位同士の関連性によって表される情報を、骨格ともいう。又は、姿勢は、人体の複数の関節の位置により表されても良い。部位は、目、耳、鼻、頭、肩、上腕、前腕、手、胸、腹、太腿、下腿、足などの、身体の一部分を指す。関節は、首、肘、手首、腰、膝、足首などの、部位の少なくとも一部同士を繋げる可動性の接合部を指す。
【0016】
第2モデルは、第1モデルから出力された姿勢データが入力される。第2モデルは、その姿勢データが実写画像と描画画像のいずれから得られたか判定する。
【0017】
図2は、第1実施形態に係る学習方法を表すフローチャートである。
図2に表したように、第1実施形態に係る学習方法は、学習データの準備(ステップS1)と、第1モデルの準備(ステップS2)と、第2モデルの準備(ステップS3)と、第1モデル及び第2モデルの学習(ステップS4)と、を含む。
【0018】
<学習データの準備>
実写画像の準備では、実空間に存在する人物をカメラ等で撮影し、画像を取得する。画像には、人物の全体が写っていても良いし、人物の一部のみが写っていても良い。また、画像には、複数の人物が写っていても良い。画像は、少なくとも人物の輪郭が大まかに認識できる程度に、鮮明であることが好ましい。準備した実写画像は、記憶装置4に保存される。
【0019】
学習データの準備では、描画画像の準備及びアノテーションが行われる。描画画像の準備では、モデリング、骨格作成、テクスチャマッピング、及びレンダリングが実行される。例えば、ユーザは、学習装置1を用いてこれらの処理を実行する。
【0020】
モデリングでは、人体を模した3次元の人体モデルが作成される。人体モデルは、オープンソースの3DCGソフトウェアであるMakeHumanを用いて作成できる。MakeHumanでは、年齢や、性別、筋肉量、体重などを指定することにより、人体の3Dモデルを容易に作成できる。
【0021】
人体モデルに加えて、人体の周りの環境を模した環境モデルがさらに作成されても良い。環境モデルは、例えば、物品(設備、備品、製作物等)や、床、壁などを模して生成される。環境モデルは、実際の物品や、床、壁などを撮影し、その動画を用いてBlenderにより作成できる。Blenderは、オープンソースの3DCGソフトウェアであり、3Dモデルの作成、レンダリング、アニメーションなどの機能を備える。Blenderにより、作成した環境モデル上に、人体モデルを配置する。
【0022】
骨格作成では、モデリングで作成された人体モデルに、骨格が追加される。MakeHumanには、Armatureと呼ばれる人型の骨格が用意されている。これを用いることで、人体モデルに対して容易に骨格データを追加できる。人体モデルに骨格データを追加し、骨格を動作させることにより、人体モデルを動作させることができる。
【0023】
人体モデルの動作には、実際の人体の動作(モーション)を示すモーションデータが用いられても良い。モーションデータは、モーションキャプチャデバイスにより取得される。モーションキャプチャデバイスには、Noitom社のPERCEPTION NEURON2を用いることができる。モーションデータを用いることで、人体モデルに、実際の人体のモーションを再現させることができる。
【0024】
テクスチャマッピングでは、人体モデル及び環境モデルに質感を与える。例えば、人体モデルに対しては、衣類を付与する。人体モデルに付与する衣類の画像を用意し、人体モデルのサイズに合うように画像を調整する。調整した画像を人体モデルに貼り付ける。環境モデルに対しては、実際の物品、床、壁などの画像が貼り付けられる。
【0025】
レンダリングでは、質感を付与した人体モデル及び環境モデルを用いて描画画像を生成する。生成された描画画像は、記憶装置4に保存される。例えば、環境モデル上で人体モデルを動作させる。例えば、人体モデルを動作させながら、複数の視点から見た人体モデル及び環境モデルを所定間隔でレンダリングする。これにより、複数の描画画像が生成される。
【0026】
図3(a)及び
図3(b)は、描画画像の一例である。
図3(a)に表した描画画像では、背を向けた人体モデル91が写っている。
図3(b)に表した描画画像では、人体モデル91が上方から写されている。また、環境モデルとして、棚92a、壁92b、及び床92cが写っている。人体モデル及び環境モデルには、テクスチャマッピングにより、質感が付与されている。テクスチャマッピングにより人体モデル91には、実際の作業で使用される制服が付与されている。棚92aの上面には、作業に使用される部品、道具、治具などが付与されている。壁92bには、細かな形状、色の変化、微小な汚れなどが付与されている。
【0027】
図3(a)に表した描画画像では、人体モデル91の足は、画像の端で見切れている。
図3(b)に表した描画画像では、人体モデル91の胸、腹、下半身などは写っていない。
図3(a)及び
図3(b)に表したように、複数の方向から人体モデル91の少なくとも一部を見たときの描画画像が準備される。
【0028】
アノテーションでは、実写画像及び描画画像に対して、姿勢に関するデータを付与する。アノテーションの形式は、例えば、COCO Keypoint Detection Taskに準ずる。アノテーションでは、画像に含まれる人体に対して、姿勢を示すデータが付与される。例えば、アノテーションにより、人体の複数の部位、各部位の座標、部位同士の接続関係などが示される。また、部位ごとに、「画像内に存在する」、「画像外に存在する」、又は「画像内に存在するが何かに隠れている」のいずれかの情報が付与される。描画画像に対するアノテーションには、人体モデルの作成の際に追加したArmatureを用いることができる。
【0029】
図4(a)及び
図4(b)は、アノテーションを例示する画像である。
図4(a)は、人体モデル91を含む描画画像を表す。
図4(a)の例では、環境モデルが含まれていない。アノテーションされる画像は、
図3(a)及び
図3(b)に表したように、環境モデルを含んでも良い。
図4(a)の描画画像に含まれる人体モデル91に対して、
図4(b)に表したように、身体の各部位をアノテーションする。
図4(b)の例では、人体モデル91の頭91a、左肩91b、左上腕91c、左前腕91d、左手91e、右肩91f、右上腕91g、右前腕91h、及び右手91iが示されている。
【0030】
以上の処理により、実写画像、実写画像に対するアノテーション、描画画像、及び描画画像に対するアノテーションを含む学習データが準備される。
【0031】
<第1モデルの準備>
準備した学習データを用いて初期状態のモデルを学習し、第1モデルを準備する。実写画像を用いた学習済みのモデルを用意し、描画画像を用いて当該モデルを学習させることで、第1モデルを準備しても良い。この場合、ステップS1において、実写画像の準備及び実写画像に対するアノテーションを省略できる。例えば、実写画像を用いた学習済みのモデルとして、姿勢検出モデルであるOpenPoseを利用できる。
【0032】
図5は、第1モデルの構成を例示する概略図である。
第1モデルは、複数のニューラルネットワークを含む。具体的には、
図5に表したように、第1モデル100は、Convolutional Neural Network(CNN)101、第1ブロック(ブランチ1)110、及び第2ブロック(ブランチ2)120を含む。
【0033】
まず、第1モデル100に入力された画像IMは、CNN101に入力される。画像IMは、実写画像又は描画画像である。CNN101は、特徴マップFを出力する。特徴マップFは、第1ブロック110及び第2ブロック120のそれぞれに入力される。
【0034】
第1ブロック110は、人体の部位の存在確率をピクセルごとに表したPart Confidence Map(PCM)を出力する。第2ブロック120は、部位間の関連性を表すベクトルであるPart Affinity Fields(PAF)を出力する。第1ブロック110及び第2ブロック120は、例えばCNNを含む。第1ブロック110と第2ブロック120を含むステージが、ステージ1からステージt(t≧2)まで複数設けられている。
【0035】
CNN101、第1ブロック110、及び第2ブロック120の具体的な構成については、それぞれ特徴マップF、PCM、及びPAFを出力できれば任意である。CNN101、第1ブロック110、及び第2ブロック120の構成については、公知のものを適用可能である。
【0036】
第1ブロック110は、PCMであるSを出力する。第1ステージの第1ブロック110による出力を、S
1とする。ρ
1を、ステージ1の第1ブロック110から出力された推論とする。S
1は、以下の数式1で表される。
【数1】
【0037】
第2ブロック120は、PAFであるLを出力する。第1ステージの第2ブロック120による出力を、L
1とする。φ
1を、ステージ1の第2ブロック120から出力された推論とする。L
1は、以下の数式2で表される。
【数2】
【0038】
ステージ2以降では、直前のステージの出力と特徴マップFを用いて検出が行われる。ステージ2以降のPCM及びPAFは、以下の数式3及び4で表される。
【数3】
【数4】
【0039】
第1モデル100は、PCM及びPAFのそれぞれについて、正解値と検出値の平均二乗誤差が最小となるように学習される。部位jにおけるPCMの検出値をS
jとし、正解値をS
*
jとすると、ステージtでの損失関数は、以下の数式5で表される。
【数5】
【0040】
Pは、画像内のピクセルpの集合である。W(p)は、バイナリマスクを表す。ピクセルpにおいてアノテーションが欠落している場合は、W(P)=0である。それ以外の場合は、W(p)=1である。このマスクを使用することで、アノテーションの欠落に起因して正しい検出がなされた場合に、損失関数が増加することを防止できる。
【0041】
PAFについて、部位間の接続cにおけるPAFの検出値をL
cとし、正解値をL
*
Cとすると、ステージtでの損失関数は、以下の数式6で表される。
【数6】
【0042】
数式5及び6から、全体の損失関数は、以下の数式7で表される。数式7において、Tは、ステージの総数を表す。例えば、T=6に設定される。
【数7】
【0043】
損失関数の計算を行うために、PCMとPAFの正解値が定義される。PCMの正解値の定義について説明する。PCMは、人体の部位が二次元平面状に存在する確率を表す。特定の部位が画像に写っている場合に、PCMは極値をとる。PCMは、それぞれの部位について1枚生成される。画像内に複数の人体が写っている場合、それぞれの人体の部位が同一マップ内に記述される。
【0044】
まず、画像内のそれぞれの人体のPCMの正解値を作成する。x
j、k∈R
2を画像内に含まれるk番目の人の部位jの座標とする。画像内のピクセルpにおけるk番目の人体の部位jのPCMの正解値は、以下の数式8で表される。σは、極値の分散を調整するために定義される定数である。
【数8】
【0045】
PCMの正解値は、数式8で得られた各人体のPCMの正解値を最大値関数で集約したものと定義される。よって、PCMの正解値は、以下の数式9で定義される。数式9において平均ではなく最大を用いるのは、極値同士が近くのピクセルに存在する場合に、極値を明確に保つためである。
【数9】
【0046】
PAFの正解値の定義について説明する。PAFは、部位と部位の関連度を表す。特定の部位と部位の間にあるピクセルは、単位ベクトルvを有する。その他のピクセルは、ゼロベクトルを持つ。PAFは、これらのベクトルの集合であると定義される。k番目の人の部位j
1から部位j
2への部位間の接続をcとすると、画像内のピクセルpにおけるk番目の人の接続cのPAFの正解値は、以下の数式10で表される。
【数10】
【0047】
単位ベクトルvは、x
j1、kからx
j2、kへ向かうベクトルであり、以下の数式11で定義される。
【数11】
【0048】
pがk番目の人の接続cにあることは、閾値σ1を用いて以下の数式12で定義される。垂直記号が付されたvは、vに垂直な単位ベクトルである。
【数12】
【0049】
PAFの正解値は、数式10で得られた各人のPAFの正解値の平均をとった値と定義される。よって、PAFの正解値は、以下の数式13で表される。n
c(p)は、はピクセルpにおける非ゼロベクトルの数である。
【数13】
【0050】
実写画像を用いて学習済みのモデルに対して、描画画像を用いて学習させる。学習には、ステップS1で準備された描画画像及びアノテーションが用いられる。例えば、再急降下法が用いられる。再急降下法は、関数の傾きから関数の最小値を探索する最適化アルゴリズムの1つである。描画画像を用いた学習により、第1モデルが準備される。
【0051】
<第2モデルの準備>
図6は、第2モデルの構成を例示する概略図である。
第2モデル200は、
図6に表したように、畳み込み層210、最大値プーリング220、ドロップアウト層230、平坦化層240、及び全結合層250を含む。畳み込み層210に記載された数字は、チャネル数を表す。全結合層250に記載された数字は、出力の次元を表す。第1モデルの出力であるPCMとPAFを第2モデル200に入力する。第2モデル200は、第1モデル100から、姿勢を示すデータが入力されると、そのデータが実写画像と描画画像のどちらに基づくかの判定結果を出力する。
【0052】
例えば、第1モデル100から出力されるPCMは、19のチャネルを有する。第1モデル100から出力されるPAFは、38のチャネルを有する。PCMとPAFを第2モデル200へ入力する際、入力データが0から1の範囲の値となるように、正規化が行われる。正規化では、PCMとPAFの各ピクセルの値が、とりうる最大値で除算される。PCMの最大値とPAFの最大値は、学習に用いるデータセットとは別に実写画像と描画画像をそれぞれ複数枚用意し、第1モデル100から出力されるPCMとPAFから取得される。
【0053】
正規化されたPCMとPAFは、第2モデル200へ入力される。第2モデル200は、畳み込み層210を含む多層ニューラルネットワークを備える。PCMとPAFは、それぞれ、2つの畳み込み層210へ入力される。畳み込み層210の出力情報は、活性化関数に通される。活性化関数として、ランプ関数(正規化線形関数)が用いられる。ランプ関数の出力は、平坦化層240に入力され、全結合層250に入力できるように処理される。
【0054】
過学習を抑制するために、平坦化層240の前には、ドロップアウト層230が設けられている。平坦化層240の出力情報は、全結合層250に入力され、それぞれ256次元の情報として出力される。出力情報は、活性化関数としてのランプ関数に通され、512次元の情報として結合される。結合された情報を、もう1度、ランプ関数を活性化関数とした全結合層250に入力する。出力された64次元の情報は、全結合層250へ入力される。最後に、全結合層250の出力情報は、活性化関数であるシグモイド関数に通され、第1モデル100への入力が実写画像である確率を出力する。学習装置1は、出力された確率が0.5以上の場合、第1モデル100への入力が実写画像であると判定する。学習装置1は、出力された確率が0.5未満の場合、第1モデル100への入力が描画画像であると判定する。
【0055】
いずれかのモデルの学習では、バイナリクロスエントロピーを損失関数として用いる。ある画像nにおける第1モデル100への入力が実写画像である確率をP
realnとしたとき、第2モデル200の損失関数Fdは、以下の数式14で定義される。Nは、データセット内の全ての画像を表す。t
nは、入力画像nに付与される正解ラベルである。nが実写画像であれば、t
n=1である。nが描画画像であれば、t
n=0である。
【数14】
【0056】
数式14で定義される損失関数が、最小となるように学習を行う。最適化手法には、例えばAdamが用いられる。再急降下法では、全てのパラメータに同じ学習率が用いられる。これに対し、Adamでは、勾配の二乗平均及び平均を考慮することで、パラメータごとに適切な重みの更新を行える。学習の結果、第2モデル200が準備される。
【0057】
<第1モデル及び第2モデルの学習>
準備した第2モデル200を用いて、第1モデル100を学習させる。また、準備した第1モデル100を用いて、第2モデル200を学習させる。第1モデル100の学習と第2モデル200の学習は、交互に実行される。
【0058】
図7は、第1モデル及び第2モデルの学習方法を表す模式図である。
第1モデル100には、画像IMが入力される。画像IMは、実写画像又は描画画像である。第1モデル100は、PCM及びPAFを出力する。PCM及びPAFのそれぞれは、第2モデル200に入力される。第2モデル200へ入力される際、PAM及びPAFは、上述した通り正規化される。
【0059】
第1モデル100の学習について説明する。第1モデル100は、第2モデル200による判定の精度が低下するように学習される。すなわち、第1モデル100は、第2モデル200を欺くように学習される。例えば、第1モデル100は、描画画像が入力されたときに、第2モデル200が実写画像と判定する姿勢データを出力するように、学習される。
【0060】
第1モデル100の学習では、第2モデル200の学習が行われないように、第2モデル200の重みの更新を停止させる。例えば、第1モデル100への入力には、描画画像のみを用いる。もともと検出可能であった実写画像の検出精度を低下させることにより、第1モデル100が第2モデル200を欺くように学習されることを防止するためである。第2モデル200を欺くように第1モデル100を学習させるため、PCM及びPAFが第2モデル200へ入力される際には、正解ラベルを反転させる。
【0061】
第1モデル100は、第1モデル100と第2モデル200の損失関数が最小となるように学習される。第2モデル200の損失関数と第1モデル100の損失関数を同時に用いることによって、第1モデル100が、入力に拘わらず姿勢検出を行えないようにして第2モデル200を欺くように学習されることを防止できる。数式7及び14より、第1モデル100の学習フェーズの損失関数f
gは、以下の数式15で表される。λは、第1モデル100の損失関数と第2モデル200の損失関数のトレードオフを調整するためのパラメータである。例えば、λとして、0.5が設定される。
【数15】
【0062】
第2モデル200の学習について説明する。第2モデル200は、判定の精度が向上するように学習される。すなわち、第1モデル100は、学習の結果、第2モデル200を欺くような姿勢データを出力する。第2モデル200は、その姿勢データが実写画像と描画画像のどちらに基づくか、正しく判定できるように学習される。
【0063】
第2モデル200の学習では、第1モデル100の学習が行われないように、第1モデル100の重みの更新が停止される。例えば、第1モデル100には、実写画像と描画画像の両方が入力される。第2モデル200は、数式14で定義された損失関数が最小となるように学習される。第2モデル200の作成時と同様に、最適化手法にはAdamを用いることができる。
【0064】
上述した第1モデル100の学習と第2モデル200の学習が交互に実行される。学習装置1は、学習させた第1モデル100及び第2モデル200を、記憶装置4に保存する。
【0065】
第1実施形態の効果を説明する。
近年、ビデオカメラなどで撮影されたRGB画像、深度カメラで撮影された深度画像などから、人体の姿勢を検出する方法が研究されている。また、姿勢検出は、生産性改善に向けた取り組みへの利用が試みられている。しかし、製造現場等では、作業者の姿勢、作業の環境によって、姿勢の検出精度が大きく低下しうるという課題があった。
【0066】
製造現場で撮影される画像は、画角や解像度などに制限が課される場合が多い。例えば、製造現場において、作業の障害とならないようにカメラを配置する場合、カメラは、作業者よりも上方に設けられることが好ましい。また、製造現場では、設備、製品などが置かれており、作業者の一部が写らないことが多い。OpenPoseなどの従来の方法では、上方から人体を写した画像や、作業者の一部しか映っていない画像などについては、姿勢の検出が大きく低下しうる。また、製造現場では、設備、製品、治具などが存在する。これらが人体として誤検出される場合もある。
【0067】
上方から作業者を写した画像や、作業者の一部が写っていない画像について、姿勢の検出精度を向上させるために、モデルを十分に学習させることが望ましい。しかし、モデルの学習には、多くの学習データが必要となる。作業者を上方から実際に撮影して画像を準備し、それぞれの画像に対してアノテーションを実行すると、膨大な時間が必要となる。
【0068】
学習データの準備に必要な時間を短縮するために、仮想の人体モデルを用いることが有効である。仮想の人体モデルを用いることで、作業者を任意の方向から写した画像を、容易に生成(描画)できる。また、人体モデルに対応した骨格データを用いることで、描画画像に対するアノテーションを容易に完了できる。
【0069】
一方、描画画像は、実写画像に比べて、ノイズが少ない。ノイズは、画素値のゆらぎ、欠陥などである。例えば、人体モデルをレンダリングしただけの描画画像は、ノイズを全く含まず、実写画像に比べて過度に鮮明である。テクスチャマッピングにより描画画像に質感を付与できるが、その場合でも、描画画像は、実写画像に比べてより鮮明である。このため、描画画像を用いて学習させたモデルに実写画像を入力すると、実写画像の姿勢の検出精度が低いという課題が存在する。
【0070】
この課題について、第1実施形態では、姿勢を検出するための第1モデル100が、第2モデル200を用いて学習される。第2モデル200は、姿勢データが入力されると、その姿勢データが実写画像と描画画像のいずれに基づくか判定する。第1モデル100は、第2モデル200による判定の精度が低下するように学習される。第2モデル200は、判定の精度が向上するように学習される。
【0071】
例えば、第1モデル100は、実写画像が入力されると、第2モデル200が描画画像に基づく姿勢データと判定するように、学習される。また、第1モデル100は、描画画像が入力されると、第2モデル200が実写画像に基づく姿勢データと判定するように、学習される。これにより、第1モデル100は、実写画像が入力された際に、学習に用いた描画画像と同様に、精度良く姿勢データを検出できるようになる。また、第2モデル200は、学習により、判定の精度が向上する。第1モデル100の学習と第2モデル200の学習を交互に実行することで、第1モデル100は、実写画像に含まれる人体の姿勢データを、より精度良く検出できるようになる。
【0072】
第2モデル200の学習には、人体の複数の部位の位置を示すデータであるPCMと、部位間の関連性を示すデータであるPAFと、を用いることが好ましい。PCMとPAFは、画像中の人物の姿勢との関連性が高い。第1モデル100の学習が不十分な場合、第1モデル100は、描画画像に基づくPCMとPAFを適切に出力できない。この結果、第2モデル200は、第1モデル100から出力されたPCMとPAFが描画画像に基づくと、容易に判定できる。第2モデル200による判定の精度を低下させるために、第1モデル100は、実写画像だけではなく描画画像からも、より適切なPCMとPAFを出力できるように学習される。これにより、姿勢の検出に好適なPCMとPAFが、より適切に出力されるようになる。この結果、第1モデル100による姿勢検出の精度を向上できる。
【0073】
第1モデル100の学習に用いられる描画画像の少なくとも一部は、人体モデルを上方から写したものであることが好ましい。上述した通り、製造現場では、作業の障害とならないように、カメラは作業者よりも配置されうるためである。人体モデルを上方から写した描画画像が、第1モデル100の学習に用いられることで、実際の製造現場の作業者を写した画像に対して、姿勢をより精度良く検出できる。なお、「上方」は、人体モデルの直上だけでは無く、人体モデルよりも高い位置を指す。
【0074】
(第1変形例)
図8は、第1実施形態の第1変形例に係る学習システムの構成を示す模式的ブロック図である。
第1変形例に係る学習システム11は、
図8に表したように、演算装置5及び検出器6をさらに備える。検出器6は、実空間上の人物に装着され、その人物の動作を検出する。演算装置5は、検出された動作に基づいて、人体の各部位の各時刻における位置を算出し、算出結果を記憶装置4に記憶する。
【0075】
例えば、検出器6は、加速度センサ及び角速度センサの少なくともいずれかを含む。検出器6は、人物の各部位の加速度又は角速度を検出する。演算装置5は、加速度又は角速度の検出結果に基づいて、各部位の位置を算出する。
【0076】
検出器6の数は、区別したい部位の数に応じて適宜選択される。例えば、
図4に表したように、上方から撮影した人物の頭、両肩、両上腕、両前腕、及び両手にそれぞれ印付けする場合、10個の検出器6が用いられる。10個の検出器を、それぞれ、実空間上の人物の各部位の安定して取り付けられる部分に取り付ける。例えば、比較的形状の変化が小さい、手の甲、前腕の中間部分、上腕の中間部分、肩、首の裏、頭の周囲に検出器をそれぞれ取り付け、これらの部位の位置データを取得する。
【0077】
学習装置1は、記憶装置4に記憶された各部位の位置データを参照し、人体モデルに、実空間上の人物と同じ姿勢をとらせる。学習装置1は、姿勢を設定した人体モデルを用いて描画画像を生成する。例えば、検出器6を装着した人物が、実際の作業と同じ姿勢を取る。これにより、描画画像に写る人体モデルの姿勢が、実際の作業時の姿勢に近くなる。
【0078】
この方法によれば、人体モデルの各部位の位置を人が指定する必要が無くなる。また、人体モデルの姿勢が、実際の作業時の人物の姿勢と全く異なる姿勢となることを回避できる。人体モデルの姿勢を実際の作業時の姿勢に近づけることで、第1モデルによる姿勢の検出精度を向上させることができる。
【0079】
(第2実施形態)
図9は、第2実施形態に係る分析システムの構成を表す模式的ブロック図である。
図10~
図13は、第2実施形態に係る分析システムによる処理を説明するための図である。
第2実施形態に係る分析システム20は、第1実施形態に係る学習システムによって学習された姿勢検出モデルとしての第1モデルを用いて、人物の動作を分析する。分析システム20は、
図9に表したように、処理装置7及び撮像装置8をさらに含む。
【0080】
撮像装置8は、実空間における作業中の人物(第1人物)を撮影し、画像を生成する。以降では、撮像装置8により撮影された作業中の人物を、作業者とも呼ぶ。撮像装置8は、静止画を取得しても良いし、動画を取得しても良い。動画を取得する場合、撮像装置8は、動画から静止画を切り出す。撮像装置8は、作業者が写った画像を記憶装置4に保存する。
【0081】
作業者は、所定の第1作業を繰り返し実行する。撮像装置8は、1回の第1作業の開始から終了までの間に、作業者を繰り返し撮影する。撮像装置8は、繰り返しの撮影により得られた複数の画像を記憶装置4に保存する。例えば、撮像装置8は、複数の第1作業を繰り返す作業者を撮影する。これにより、複数の第1作業の様子を撮影した複数の画像が記憶装置4に保存される。
【0082】
処理装置7は、記憶装置4にアクセスし、作業者が写った画像(実写画像)を第1モデルに入力する。第1モデルは、画像中の作業者の姿勢データを出力する。例えば、姿勢データは、複数の部位の位置及び部位同士の関連性を含む。処理装置7は、第1作業中の作業者を写した複数の画像を第1モデルに順次入力する。これにより、各時刻における作業者の姿勢データが得られる。
【0083】
一例として、処理装置7は、第1モデルに画像を入力し、
図10に表した姿勢データを取得する。姿勢データは、頭の重心97a、左肩の重心97b、左肘97c、左手首97d、左手の重心97e、右肩の重心97f、右肘97g、右手首97h、右手の重心97i、及び背骨97jのそれぞれの位置を含む。また、姿勢データは、これらを結ぶ骨のデータを含む。
【0084】
処理装置7は、複数の姿勢データを用いて、時間の経過に伴う部位の動作を示す時系列データを生成する。例えば、処理装置7は、各姿勢データから、頭の重心の位置を抽出する。処理装置7は、姿勢データの基となった画像が取得された時刻に従って、頭の重心の位置を整理する。例えば、時刻と位置を紐づけて1レコードとするデータを作成し、複数のデータを時刻順にソートすることで、時間の経過に伴う頭の動作を示す時系列データが得られる。処理装置7は、少なくとも1つの部位について、時系列データを生成する。
【0085】
処理装置7は、生成した時系列データに基づいて、第1作業の周期を推定する。又は、処理装置7は、時系列データにおいて、1つの第1作業の動作に基づく範囲を推定する。
【0086】
処理装置7は、処理により得られた情報を記憶装置4に保存する。処理装置7は、上方を外部へ出力しても良い。例えば、出力される情報は、算出された周期を含む。情報は、周期を用いた計算により得られた値を含んでも良い。情報は、周期に加えて、時系列データ、周期の計算に用いた各画像の時刻などを含んでも良い。情報は、1つの第1作業の動作を示す時系列データの一部を含んでも良い。
【0087】
処理装置7は、情報を表示装置3に出力しても良い。又は、処理装置7は、情報を含むファイルを、CSVなどの所定の形式で出力しても良い。処理装置7は、FTP(File Transfer Protocol)などを用いて外部のサーバへデータを送信しても良い。又は、処理装置7は、データベース通信を行い、ODBC(Open Database Connectivity)などを用いて外部のデータベースサーバへデータを挿入してもよい。
【0088】
図11(a)、
図11(b)、
図12(b)、および
図12(c)において、横軸は時間を表し、縦軸は鉛直方向における位置(深度)を表している。
図11(c)、
図11(d)、
図12(d)、および
図13(a)において、横軸は時間を表し、縦軸は距離を表している。これらの図では、距離の値が大きいほど、2つの対象の間の距離が近く、相関が強いことを示している。
図12(a)および
図13(b)は、横軸は時間を表し、縦軸はスカラー値を表している。
【0089】
図11(a)は、処理装置7により生成された時系列データの一例である。例えば
図11(a)は、作業者の左手の動作を示す時間長Tの時系列データである。まず、処理装置7は、
図11(a)に表した時系列データから、時間長Xの部分データを抽出する。
【0090】
時間長Xは、例えば、作業者又は分析システム20の管理者などによってあらかじめ設定される。時間長Xとしては、第1作業の大凡の周期に対応する値が設定される。時間長Tは、予め設定されても良いし、時間長Xに基づいて決定されても良い。例えば、処理装置7は、時間長Tの間に撮影された複数の画像をそれぞれ第1モデルに入力し、姿勢データを得る。処理装置7は、それらの姿勢データを用いて、時間長Tの時系列データを生成する。
【0091】
処理装置7は、部分データとは別に、時間長Tの時系列データから、時刻t
0からt
nまで、所定の時間間隔で時間長Xのデータを抽出する。具体的には、処理装置7は、
図11(b)の矢印で表すように、時系列データから、時間長Xのデータを、時刻t
0からt
nまで全体に亘って、例えば1フレームごとに抽出する。
図11(b)では、抽出されるデータの一部の時間幅のみが矢印で表されている。以降では、
図11(b)に表すステップによって抽出されたそれぞれの情報を、第1比較データと呼ぶ。
【0092】
処理装置7は、
図11(a)に表すステップで抽出された部分データと、
図11(b)に表すステップで抽出された各々の第1比較データと、の間の距離を順次計算する。処理装置7は、例えば、部分データと第1比較データとの間のDTW(Dynamic Time Warping)距離を算出する。DTW距離を用いることで、繰り返される動作の時間の長短に拘わらず、相関の強度を求めることができる。この結果、それぞれの時刻における、部分データに対する時系列データの距離の情報が得られる。これを表したものが、
図11(c)である。以降では、
図11(c)に表す、各時刻における距離を含む情報を第1相関データと呼ぶ。
【0093】
次に、処理装置7は、作業者Mによる作業時間の周期を推定するために、時系列データにおける仮類似点の設定を行う。具体的には、処理装置7は、
図11(c)に表す第1相関データにおいて、時刻t
0から時間μが経過した後の時刻を基準として、ばらつき時間Nの範囲内に複数の候補点α
1~α
mをランダムに設定する。
図11(c)に表す例では、3つの候補点がランダムに設定されている。時間μおよびばらつき時間Nは、例えば、作業者又は管理者などによって予め設定される。
【0094】
処理装置7は、ランダムに設定された候補点α
1~α
mのそれぞれにおいてピークを有する正規分布のデータを作成する。そして、それぞれの正規分布と、
図11(c)に表す第1相関データと、の間の相互相関係数(第2相互相関係数)を求める。処理装置7は、相互相関係数が最も高い候補点を、仮類似点として設定する。例えば、
図11(c)に表した候補点α
2が仮類似点に設定されるとする。
【0095】
処理装置7は、仮類似点(候補点α
2)を基に、再度、時間μが経過した後の時刻を基準として、ばらつき時間Nの範囲内に複数の候補点α
1~α
mをランダムに設定する。このステップを、時刻t
nまで繰り返し行うことで、
図11(d)に表すように、時刻t
0~t
nの間に、複数の仮類似点β
1~β
kが設定される。
【0096】
処理装置7は、
図12(a)に表すように、それぞれの仮類似点β
1~β
kにピークを有する複数の正規分布を含んだデータを作成する。以降では、
図12(a)に表す複数の正規分布を含む情報を第2比較データと呼ぶ。処理装置7は、
図11(c)および
図11(d)に表す第1相関データと、
図12(a)に表す第2比較データと、の間の相互相関係数(第1相互相関係数)を算出する。
【0097】
【0098】
例えば、処理装置7は、
図12(b)に表すように、時刻t
1からt
2までの間の、時間長Xの部分データを抽出する。続いて、処理装置7は、
図12(c)に表すように、時間長Xの複数の第1比較データを抽出する。処理装置7は、部分データと、それぞれの第1比較データと、の間の距離を計算することで、
図12(d)に表すように、第1相関データを作成する。
【0099】
処理装置7は、
図12(d)に表すように、時刻t
0から時間μが経過した後の時刻を基準として、複数の候補点α
1~α
mをランダムに設定し、仮類似点βを抽出する。これを繰り返すことで、
図13(a)に表すように、複数の仮類似点β
1~β
kが設定される。そして、処理装置7は、
図13(b)に表すように、仮類似点β
1~β
kに基づく第2比較データを作成し、
図12(d)および
図13(a)に表す第1相関データと、
図13(b)に表す第2比較データと、の間の相互相関係数を算出する。
【0100】
処理装置7は、上述したステップを、時刻t2以降も繰り返すことで、それぞれの部分データについて相互相関係数を算出する。その後、処理装置7は、最も高い相互相関係数が得られた仮類似点β1~βkを、真の類似点として抽出する。処理装置7は、真の類似点同士の時間間隔を算出することで、作業者の第1作業の周期を得る。処理装置7は、例えば、時間軸上隣り合う真の類似点間の時間の平均を求め、この平均時間を第1作業の周期とすることができる。又は、処理装置7は、真の類似点同士の間の時系列データを、1つの第1作業の動作を示す時系列データとして抽出する。
【0101】
ここでは、第2実施形態に係る分析システム20により、作業者の第1作業の周期を分析する例について説明した。第2実施形態に係る分析システム20の用途は、この例に限定されない。例えば、所定の動作を繰り返し行う人物に対して、その周期の分析、1回の動作を示す時系列データの抽出などに広く適用することが可能である。
【0102】
図14は、第2実施形態に係る分析システムによる処理を表すフローチャートである。
撮像装置8は、人物を撮影し、画像を生成する(ステップS11)。処理装置7は、画像を第1モデルに入力し(ステップS12)、姿勢データを取得する(ステップS13)。処理装置7は、姿勢データを用いて、部位に関する時系列データを生成する(ステップS14)。処理装置7は、時系列データに基づき、人物の動作の周期を算出する(ステップS15)。処理装置7は、算出された周期に基づく情報を外部へ出力する(ステップS16)。
【0103】
分析システム20によれば、繰り返し実行される所定の動作の周期を自動で分析できる。例えば、製造現場においては、作業者の第1作業の周期を自動的に分析できる。このため、作業者自身による記録や申告、業務改善のための技術者による作業の観察や周期の計測などが不要となる。作業の周期を容易に分析することが可能となる。また、分析結果が、分析する者の経験や知識、判断などに依らないため、周期をより高精度に求めることが可能となる。
【0104】
また、分析システム20は、分析する際に、第1実施形態に係る学習システムによって学習された第1モデルを用いる。この第1モデルによれば、撮影された人物の姿勢を高精度に検出できる。第1モデルから出力された姿勢データを用いることで、分析の精度を向上できる。例えば、周期の推定の精度を向上させることができる。
【0105】
図15は、システムのハードウェア構成を表すブロック図である。
例えば、学習装置1は、コンピュータであり、ROM(Read Only Memory)1a、RAM(Random Access Memory)1b、CPU(Central Processing Unit)1c、およびHDD(Hard Disk Drive)1dを有する。
【0106】
ROM1aは、コンピュータの動作を制御するプログラムを格納している。ROM1aには、上述した各処理をコンピュータに実現させるために必要なプログラムが格納されている。
【0107】
RAM1bは、ROM1aに格納されたプログラムが展開される記憶領域として機能する。CPU1cは、処理回路を含む。CPU1cは、ROM1aに格納された制御プログラムを読み込み、当該制御プログラムに従ってコンピュータの動作を制御する。また、CPU1cは、コンピュータの動作によって得られた様々なデータをRAM1bに展開する。HDD1dは、読み取りに必要な情報や、読み取りの過程で得られた情報を記憶する。HDD1dは、例えば、
図1に表した記憶装置4として機能する。
【0108】
学習装置1は、HDD1dに代えて、eMMC(embedded Multi Media Card)、SSD(Solid State Drive)、SSHD(Solid State Hybrid Drive)などを有していても良い。
【0109】
また、学習システム11における演算装置5、分析システム20における処理装置7についても、
図15と同様のハードウェア構成を適用できる。又は、学習システム11において、1つのコンピュータが学習装置1及び演算装置5として機能しても良い。分析システム20において、1つのコンピュータが学習装置1及び処理装置7として機能しても良い。
【0110】
以上で説明した、学習装置、学習システム、学習方法、学習された第1モデルを用いることで、画像中の人体の姿勢をより高精度に検出できる。また、コンピュータを、学習装置として動作させるためのプログラムを用いることで、同様の効果を得ることができる。
また、以上で説明した処理装置、分析システム、分析方法を用いることで、時系列データをより高精度に分析できる。例えば、人物の動作の周期をより高精度に求めることができる。コンピュータを、処理装置として動作させるためのプログラムを用いることで、同様の効果を得ることができる。
【0111】
上記の種々のデータの処理は、コンピュータに実行させることのできるプログラムとして、磁気ディスク(フレキシブルディスク及びハードディスクなど)、光ディスク(CD-ROM、CD-R、CD-RW、DVD-ROM、DVD±R、DVD±RWなど)、半導体メモリ、または、他の記録媒体に記録されても良い。
【0112】
例えば、記録媒体に記録された情報は、コンピュータ(または組み込みシステム)により読み出されることが可能である。記録媒体において、記録形式(記憶形式)は任意である。例えば、コンピュータは、記録媒体からプログラムを読み出し、このプログラムに基づいてプログラムに記述されている指示をCPUで実行させる。コンピュータにおいて、プログラムの取得(または読み出し)は、ネットワークを通じて行われても良い。
【0113】
以上、本発明のいくつかの実施形態を例示したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更などを行うことができる。これら実施形態やその変形例は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。また、前述の各実施形態は、相互に組み合わせて実施することができる。
【符号の説明】
【0114】
1:学習装置、 2:入力装置、 3:表示装置、 4:記憶装置、 5:演算装置、 6:検出器、 7:処理装置、 8:撮像装置、 10,11:学習システム、 20:分析システム、 91:人体モデル、 100:第1モデル、 110:第1ブロック、 120:第2ブロック、 200:第2モデル、 210:畳み込み層、 220:最大値プーリング、 230:ドロップアウト層、 240:平坦化層、 250:全結合層