(57)【要約】【課題】姿勢推定が困難な状態の人物が撮影された画像から正しく姿勢推定を行う。【解決手段】画像取得部１１は、人物が撮影された対象画像を映像記憶部１０から取得する。回転量決定部１２は、対象画像を人物の姿勢が推定可能な向きとする回転量を決定する。回転部１３は、回転量に従って対象画像を回転させた回転後画像を生成する。姿勢推定部１４は、回転後画像から人物の姿勢を推定し人物の関節点の位置を表す姿勢推定結果を生成する。逆回転部１５は、姿勢推定結果に対して回転を元に戻す逆回転を行う。【選択図】図２
2019219989.tif 000002
【特許請求の範囲】
【請求項１】
人物が撮影された対象画像を人物の姿勢が推定可能な向きに回転させた回転後画像を生成する回転部と、
上記回転後画像から上記人物の姿勢を推定し上記人物の関節点の位置を表す姿勢推定結果を生成する姿勢推定部と、
上記姿勢推定結果に対して上記回転を元に戻す逆回転を行う逆回転部と、
を含む姿勢推定装置。
【請求項２】
請求項１に記載の姿勢推定装置であって、
上記対象画像の時刻より前の時刻に撮影された直前画像に対する上記姿勢推定結果を取得する推定結果取得部と、
上記直前画像に対する上記姿勢推定結果から上記直前画像を人物の姿勢が推定可能な向きとするための回転量および並進量を決定する回転量決定部と、
をさらに含み、
上記回転部は、上記回転量および上記並進量に従って上記対象画像を回転および並進させるものである、
姿勢推定装置。
【請求項３】
請求項１に記載の姿勢推定装置であって、
上記対象画像から所定の動作の進行度合いを示すフェーズを推定するフェーズ推定部と、
上記フェーズに対して定められた回転量および並進量を取得する回転量決定部と、
をさらに含み、
上記回転部は、上記回転量および並進量に従って上記対象画像を回転および並進させるものである、
姿勢推定装置。
【請求項４】
請求項１に記載の姿勢推定装置であって、
上記回転部は、上記対象画像を所定の角度ずつ回転させた複数の回転後画像を生成するものであり、
上記姿勢推定部は、上記複数の回転後画像それぞれから当該回転後画像中の人物の姿勢を推定するものであり、
上記複数の回転後画像に対する上記姿勢推定結果それぞれについて信頼度を算出する信頼度算出部と、
上記信頼度の分布に基づいて上記複数の回転後画像に対する上記姿勢推定結果から上記対象画像の上記姿勢推定結果を選択する推定結果選択部と、
をさらに含む姿勢推定装置。
【請求項５】
回転部が、人物が撮影された対象画像を人物の姿勢が推定可能な向きに回転させた回転後画像を生成し、
姿勢推定部が、上記回転後画像から上記人物の姿勢を推定し上記人物の関節点の位置を表す姿勢推定結果を生成し、
逆回転部が、上記姿勢推定結果に対して上記回転を元に戻す逆回転を行う、
姿勢推定方法。
【請求項６】
請求項１から４のいずれかに記載の姿勢推定装置としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は姿勢推定技術に関し、特に画像・映像処理によって画面内での人物の姿勢を推定する技術に関する。
【背景技術】
【０００２】
画像や映像から画面内での人物の姿勢を推定する試みが多くある（例えば、非特許文献１参照）。ここで、姿勢の推定としては、一般的に、画像や映像内での人物の関節の位置を推定する手法が広まっていることから、本発明では関節の位置を推定することを「姿勢推定」と呼ぶこととする。近年、機械学習に基づく姿勢推定手法が多く提案されており、高い精度を誇っている。例えば、非特許文献１の手法では、画像を入力として、当該画像から人体の関節点（例えば、首、膝、肘など）の位置を推定する。すなわち、画像と関節点の間の関係が学習されている。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】CMU-Perceptual-Computing-Lab、“OpenPose: Real-time multi-person keypoint detection library for body, face, and hands estimation”、［online］、［平成30年5月15日検索］、インターネット<URL: https://github.com/CMU-Perceptual-Computing-Lab/openpose>
【発明の概要】
【発明が解決しようとする課題】
【０００４】
機械学習に基づく姿勢推定手法では、正解情報である関節点の位置が付与された学習画像に基づいて学習が行われる。そのため、学習画像に含まれる画像によって、推定可能な対象が制限されてしまう。例えば、一般的に人物が逆さの状態で撮影されることは多くないため、そのような学習画像が学習対象に含まれず、例えば逆立ちをした人物の姿勢の推定に失敗する。しかし、例えばスポーツの映像等から姿勢の解析を行おうとすると、逆さの姿勢に対する姿勢推定を必要とすることがしばしばある。例えば図１Ａや図１Ｂに示すような、棒高跳びで跳躍している人物の画像は、その典型例である。この解決方法として、人物が逆さの姿勢である正解データを収集して学習を行う方法が考えられる。しかしながら、この方法では大量の画像に対して関節点の位置を付与する必要があるため、大変コストがかかる。
【０００５】
この発明の目的は、上記のような技術的課題に鑑みて、姿勢推定が困難な姿勢で人物が撮影された画像から正しく姿勢推定を行うことができる姿勢推定技術を提供することである。
【課題を解決するための手段】
【０００６】
上記の課題を解決するために、この発明の一態様の姿勢推定装置は、人物が撮影された対象画像を人物の姿勢が推定可能な向きに回転させた回転後画像を生成する回転部と、回転後画像から人物の姿勢を推定し人物の関節点の位置を表す姿勢推定結果を生成する姿勢推定部と、姿勢推定結果に対して回転を元に戻す逆回転を行う逆回転部と、を含む。
【発明の効果】
【０００７】
この発明の姿勢推定技術は、対象画像から人物の姿勢の大まかな向きを推定し、対象画像を姿勢推定が容易な向きに補正した上で姿勢推定を行うため、姿勢推定が困難な姿勢で人物が撮影された画像であっても正しく姿勢推定を行うことができる。
【図面の簡単な説明】
【０００８】
【図１】図１は姿勢推定が困難な画像の例を示す図である。
【図２】図２は第一実施形態の姿勢推定装置の機能構成を例示する図である。
【図３】図３は第二実施形態の姿勢推定装置の機能構成を例示する図である。
【図４】図４は第三実施形態の姿勢推定装置の機能構成を例示する図である。
【図５】図５は信頼度の分布から姿勢推定結果を選択する方法を説明する図である。
【発明を実施するための形態】
【０００９】
以下、この発明の実施の形態について詳細に説明する。なお、図面中において同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
【００１０】
［第一実施形態］
この発明の第一実施形態は、映像（または複数の画像を時系列に並べた画像列）を対象として、姿勢変化の時系列性を用いて映像中の人物の姿勢を推定する姿勢推定装置および方法である。
【００１１】
第一実施形態の姿勢推定装置１は、図２に示すように、映像記憶部１０、画像取得部１１、回転量決定部１２、回転部１３、姿勢推定部１４、逆回転部１５、および推定結果取得部１６を備える。この姿勢推定装置１が後述する各ステップの処理を行うことにより本形態の姿勢推定方法が実行される。
【００１２】
姿勢推定装置１は、例えば、中央演算処理装置（CPU: Central Processing Unit）、主記憶装置（RAM: Random Access Memory）などを有する公知又は専用のコンピュータに特別なプログラムが読み込まれて構成された特別な装置である。姿勢推定装置１は、例えば、中央演算処理装置の制御のもとで各処理を実行する。姿勢推定装置１に入力されたデータや各処理で得られたデータは、例えば、主記憶装置に格納され、主記憶装置に格納されたデータは必要に応じて中央演算処理装置へ読み出されて他の処理に利用される。姿勢推定装置１の各処理部は、少なくとも一部が集積回路等のハードウェアによって構成されていてもよい。姿勢推定装置１が備える各記憶部は、例えば、RAM（Random Access Memory）などの主記憶装置、ハードディスクや光ディスクもしくはフラッシュメモリ（Flash Memory）のような半導体メモリ素子により構成される補助記憶装置、またはリレーショナルデータベースやキーバリューストアなどのミドルウェアにより構成することができる。
【００１３】
映像記憶部１０には、姿勢推定の対象とする映像または画像列が記憶されている。以下では、映像または画像列に含まれる各画像をフレームと呼び、各フレームには姿勢推定の対象とする人物が撮影されているものとする。
【００１４】
画像取得部１１は、映像記憶部１０に記憶されている映像または画像列から時刻tのフレーム（以下、「対象画像」とも呼ぶ）を読み出す。画像取得部１１は、時刻tのフレームを回転量決定部１２へ出力する。
【００１５】
読み出したフレームが映像または画像列の最初のフレーム（すなわち、時刻t=1のフレーム）である場合、画像取得部１１は、まず、その時刻t=1のフレームに対して姿勢推定を行い、時刻t=1のフレーム中の人物の頭部と腰の位置を検出する。ここでは、時刻t=1のフレームが従来の姿勢推定技術により正しく姿勢推定できることを前提とする。もしくは、時刻t=1のフレームに対してあらかじめ頭部と腰の位置を与えておき、画像取得部１１が、その位置を読み込んでもよい。続いて、画像取得部１１は、次の時刻t=2のフレームを映像記憶部１０から読み出す。画像取得部１１は、時刻t=1のフレーム中の人物の頭部と腰の位置と共に、時刻t=2のフレームを回転量決定部１２へ出力する。
【００１６】
推定結果取得部１６は、時刻t-1のフレーム（以下、「直前画像」とも呼ぶ）の姿勢推定結果を取得し、その姿勢推定結果から時刻t-1のフレーム中の人物の頭部と腰の位置を取得する。上述のとおり、姿勢推定結果はフレーム中の人物の各関節点の位置であるため、姿勢推定結果から頭部の位置と腰の位置を抽出すればよい。推定結果取得部１６は、時刻t-1のフレーム中の人物の頭部と腰の位置を回転量決定部１２へ出力する。
【００１７】
回転量決定部１２は、画像取得部１１から時刻tのフレームを受け取り、画像取得部１１または推定結果取得部１６から時刻t-1のフレーム中の人物の頭部と腰の位置を受け取り、その頭部と腰の位置が鉛直方向（頭部が鉛直上方、腰が鉛直下方）に並ぶように回転中心および回転量を決定する。時刻t-1のフレーム中の人物の頭部と腰の位置は、時刻t=2であれば、画像取得部１１から時刻t=2のフレームと共に入力される。また、時刻t>2であれば、推定結果取得部１６から入力される。以下、回転中心を（rx, ry）とし、回転量をθとする。例えば、時刻t-1のフレーム中の人物の頭部の位置を回転中心（rx, ry）とし、腰の位置が頭の位置より鉛直方向に低い位置になるまで反時計回りに回転させる角度を回転量θとする。ただし、頭部と腰の鉛直方向の位置関係が重要であるため、回転中心は別の場所でもよく、また回転の方向も逆回り（すなわち時計回り）でもよい。回転量決定部１２は、時刻tのフレームおよび時刻t-1のフレームの回転中心（rx, ry）と回転量θを回転部１３へ出力する。
【００１８】
回転部１３は、回転量決定部１２から時刻tのフレームおよび時刻t-1のフレームの回転中心（rx, ry）と回転量θを受け取り、時刻tのフレームを回転中心（rx, ry）かつ回転量θで回転させる。また、時刻t-1のフレーム中の人物の頭部と腰の位置を結んだ線分の中点がフレームの中心となるように回転後の時刻tのフレーム（以下、「回転後画像」とも呼ぶ）を並進させる。以下、並進量を（a, b）とする。回転部１３は、回転後の時刻tのフレームを姿勢推定部１４へ出力する。
【００１９】
姿勢推定部１４は、回転部１３から回転後の時刻tのフレームを受け取り、そのフレームに対して姿勢推定を行う。ここで得られる姿勢推定結果は、回転後の時刻tのフレームに撮影された人物の各関節点の位置を表す座標の集合である。姿勢推定部１４は、時刻tの姿勢推定結果を逆回転部１５へ出力する。
【００２０】
逆回転部１５は、姿勢推定部１４から時刻tの姿勢推定結果を受け取り、回転部１３が行った回転および並進を元に戻すための逆回転および逆並進を行う。すなわち、逆回転部１５は、時刻tの姿勢推定結果を並進量（-a, -b）で並進させ、並進後の時刻tの姿勢推定結果を回転中心（rx, ry）かつ回転量-θで回転させる。逆回転部１５は、逆回転後の時刻tの姿勢推定結果を推定結果取得部１６へ出力する。
【００２１】
推定結果取得部１６は、逆回転部１５から逆回転後の時刻tの姿勢推定結果を受け取り、その姿勢推定結果を姿勢推定装置１の出力とする。また、推定結果取得部１６は、時刻tの姿勢推定結果からフレーム中の人物の頭部と腰の位置を取得し、次の時刻t+1のフレームに対して姿勢推定するときに回転量決定部１２へ出力する。
【００２２】
映像記憶部１０に記憶された映像または画像列に未処理のフレームが残っていれば、t=t+1として次のフレームに対して上述の処理を繰り返し実行する。未処理のフレームが残っていなければ（すなわち、映像または画像列が終了していれば）処理を終了する。
【００２３】
［第一実施形態の変形例１］
第一実施形態では、直前の１フレームの姿勢推定結果を利用して姿勢推定が容易な向きに対象画像を回転および並進させた上で姿勢推定を行った。これに対して、直前の２フレームの姿勢推定結果を利用して、等加速度運動を仮定して姿勢推定が容易な向きに対象画像を回転および並進させた上で姿勢推定を行っても構わない。
【００２４】
［第一実施形態の変形例２］
第一実施形態では、直前のフレームの姿勢推定結果を用いるため、ある時刻のフレームで姿勢推定に失敗すると次の時刻以降のフレームの姿勢推定を続行することができなくなる。そこで、姿勢推定部１４がある時刻のフレームの姿勢推定に失敗した場合、さらに前の時刻のフレームの姿勢推定結果を用いるようにしてもよい。そのために、変形例２の姿勢推定装置１は、図１に示すように、推定結果記憶部１７をさらに備える。推定結果記憶部１７には、現在のフレームの直近に姿勢推定に成功したフレームの姿勢推定結果を最新の姿勢推定結果として記憶する。また、新たなフレームの姿勢推定を行う度に推定結果記憶部１７に記憶されている最新の姿勢推定結果を更新する。推定結果取得部１６は、推定結果記憶部１７に記憶されている最新の姿勢推定結果からフレーム中の人物の頭部と腰の位置を取得し、回転量決定部１２へ出力するようにする。変形例１のように直前の２フレームの姿勢推定結果を利用する場合には、推定結果記憶部１７が直近に姿勢推定に成功した２フレーム分の姿勢推定結果を記憶するように構成し、新たなフレームの姿勢推定に成功する度に記憶している姿勢推定結果を更新すればよい。
【００２５】
［第二実施形態］
この発明の第二実施形態は、特定の動作を対象として、一連の動作の中でのフェーズ（動作全体の中での進行度合い）を推定し、フェーズごとにあらかじめ定められている回転量および並進量を読み出して利用する姿勢推定装置および方法である。
【００２６】
第二実施形態の姿勢推定装置２は、図３に示すように、第一実施形態の姿勢推定装置１が備える各処理部に加えて、回転量テーブル記憶部２０、回転量テーブル読込部２１、およびフェーズ推定部２２をさらに備える。この姿勢推定装置２が後述する各ステップの処理を行うことにより本形態の姿勢推定方法が実行される。
【００２７】
回転量テーブル記憶部２０には、姿勢推定の対象とする動作の各フェーズに対して回転量と並進量とが関連付けられた回転量テーブルが記憶されている。各フェーズの回転量と並進量は、事前に姿勢推定の対象とする動作の映像から決定しておけばよい。回転量テーブルの設定例を以下に示す。
【００２８】
【表１】
2019219989.tif 000003
【００２９】
回転量テーブル読込部２１は、回転量テーブル記憶部２０に記憶されている回転量テーブルを読み込み、各フェーズに対応する回転量と並進量とを取得する。回転量テーブル読込部２１は、読み込んだ回転量テーブルを回転量決定部１２へ出力する。
【００３０】
フェーズ推定部２２は、画像取得部１１から時刻tのフレームを受け取り、時刻tのフレームのフェーズpを推定する。フェーズの推定は、例えば、動作分析による動作開始タイミングの検出と当該時刻との差に基づく方法により行うことができる。以下では、棒高跳びの試技を例に説明する。棒高跳びでは、踏切を時刻0に設定する。フェーズ推定部２２は、推定対象の映像に対して動作分析を行い、踏切タイミングのフレームを検出する。動作分析には、例えば、参考文献１に記載の方法を用いることができる。踏切タイミングを検出したフレームを時刻0として、現在のフレームとの相対的な時刻差に基づいてフェーズの値pを決定する。
【００３１】
〔参考文献１〕特開２０１６−２５５２３号公報
本形態の回転量決定部１２は、フェーズ推定部２２からフェーズの値pを受け取り、回転量テーブル読込部２１から受け取った回転量テーブルからフェーズpに関連付けられた回転量θpと並進量(ap, bp)とを取得する。上記の例であれば、フェーズp=1のとき、回転量θp=Θ1であり、並進量(ap, bp)=(x1, y1)である。回転量決定部１２は、回転量θpと並進量(ap, bp)とを回転部１３へ出力する。
【００３２】
本形態の回転部１３は、回転量決定部１２から時刻tのフレームと時刻t-1のフレームの回転量θpおよび並進量(ap, bp)を受け取り、時刻tのフレームを回転量θpで回転させ、並進量(ap, bp)で並進させる。回転部１３は、回転後の時刻tのフレームを姿勢推定部１４へ出力する。
【００３３】
［第三実施形態］
この発明の第三実施形態は、１枚の対象画像における姿勢推定結果のみを用いて対象画像中の人物の姿勢を推定する姿勢推定装置および方法である。
【００３４】
第三実施形態の姿勢推定装置３は、図４に示すように、第一実施形態の姿勢推定装置１が備える各処理部（ただし回転量決定部１２を除く）に加えて、信頼度算出部３１および推定結果選択部３２をさらに備える。この姿勢推定装置３が後述する各ステップの処理を行うことにより本形態の姿勢推定方法が実行される。
【００３５】
本形態の回転部１３は、画像取得部１１から対象画像を受け取り、対象画像をn度刻みで360度回転させて、360/n枚の回転後画像を生成する。回転部１３は、得られた対象画像と角度違いの回転後画像をすべて姿勢推定部１４へ出力する。
【００３６】
本形態の姿勢推定部１４は、回転部１３から複数の回転後画像を受け取り、各回転後画像に対して姿勢推定を行う。姿勢推定部１４は、得られた回転後画像に対する姿勢推定結果をすべて信頼度算出部３１へ出力する。
【００３７】
信頼度算出部３１は、姿勢推定部１４から複数の姿勢推定結果を受け取り、各姿勢推定結果について信頼度を算出する。信頼度の算出は、例えば、以下の２つの方法がある。第１の方法は、映像の最初のフレームなどのように、人物の姿勢を信頼して求めることができる画像がある場合に用いられる。この方法では、当該画像から人物の関節間距離を算出する。具体的には、長さが一定になる関節間（例えば、肩と肘の間、肘と手の間、足首とひざの間、ひざと尻の間）の距離の比の平均を信頼度とする。第２の方法は、各関節の検出に信頼度が設定されている場合に用いられる。この方法では、関節の信頼度の平均あるいはあらかじめ定められたいくつかの関節の信頼度の平均を信頼度とする。信頼度算出部３１は、得られた姿勢推定結果の信頼度をすべて推定結果選択部３２へ出力する。
【００３８】
推定結果選択部３２は、信頼度算出部３１から複数の姿勢推定結果の信頼度を受け取り、信頼度の分布に基づいて適切な姿勢推定結果を選択する。姿勢推定結果の選択は、例えば、以下の２つの方法がある。第１の方法は、最も高い信頼度を示した姿勢推定結果を選択する方法である。第２の方法は、図５に示すように、閾値thよりも信頼度が高い状態が最も長く続く回転量の範囲をθsからθeまでとし、θsとθeとの平均に最も近い回転量で回転させた回転後画像に対する姿勢推定結果を選択する方法である。推定結果選択部３２は、選択した姿勢推定結果を時刻tの姿勢推定結果として逆回転部１５へ出力する。
【００３９】
以上、この発明の実施の形態について説明したが、具体的な構成は、これらの実施の形態に限られるものではなく、この発明の趣旨を逸脱しない範囲で適宜設計の変更等があっても、この発明に含まれることはいうまでもない。実施の形態において説明した各種の処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。
【００４０】
［プログラム、記録媒体］
上記実施形態で説明した各装置における各種の処理機能をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記各装置における各種の処理機能がコンピュータ上で実現される。
【００４１】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
【００４２】
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD-ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【００４３】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記憶装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【００４４】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【符号の説明】
【００４５】
１，２，３  姿勢推定装置
１０  映像記憶部
１１  画像取得部
１２  回転量決定部
１３  回転部
１４  姿勢推定部
１５  逆回転部
１６  推定結果取得部
１７  推定結果記憶部
２０  回転量テーブル記憶部
２１  回転量テーブル読込部
２２  フェーズ推定部
３１  信頼度算出部
３２  推定結果選択部
【図１】
2019219989.tif 000004
【図２】
2019219989.tif 000005
【図３】
2019219989.tif 000006
【図４】
2019219989.tif 000007
【図５】
2019219989.tif 000008