(58)【調査した分野】(Int.Cl.,DB名)
前記抽出手段は、前記手側の部分の色と、所定の肌色と、の比較の結果に基づいて、前記手側の部分に対応する前記領域の抽出を制御することを特徴とする請求項1に記載の領域抽出装置。
前記抽出手段は、前記手側の部分の色と前記肌色との差が所定程度を超える場合に、前記手側の部分に対応する前記領域を抽出することを特徴とする請求項2に記載の領域抽出装置。
前記抽出された領域の画像を用いて、画像内のオブジェクトを識別するためのモデルを訓練する訓練手段を更に備えることを特徴とする請求項1乃至6の何れか一項に記載の領域抽出装置。
前記抽出された領域の画像を、所定のモデルに入力することにより、前記抽出された領域に存在するオブジェクトを示すオブジェクト情報を出力する出力手段を更に備えることを特徴とする請求項1乃至7の何れか一項に記載の領域抽出装置。
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、 上方から撮影した場合には対象物が隠れて認識できないことがある。一方、商品棚又は商品の取り出し口付近から外に向かって撮影するとすれば、対象物以外を含む様々な物が写り込むこととなるので、対象物以外の物を認識してしまう場合がある。
【0005】
本願発明は以上の点に鑑みてなされてものであり、その課題の一例は、画像から対象物が映っている領域を、より正確に抽出することを可能とする領域抽出装置、領域抽出方法、及び領域抽出プログラムを提供することである。
【課題を解決するための手段】
【0006】
上記課題を解決するために、本発明の一の側面は、時間的に連続する第1フレーム画像及び第2フレーム画像を取得するフレーム画像取得手段と、前記取得された第1フレーム画像及び第2フレーム画像に基づいて、前記第1フレーム画像内で動きのある領域を示す動き情報を取得する動き情報取得手段と、前記取得された第1フレーム画像に基づいて、前記取得された動き情報により示される前記動きのある領域から、人体の肘及び手首の位置を検出する検出手段と、前記検出された位置に基づいて、前記取得された動き情報により示される前記動きのある領域のうち、前記手首から前記人体の手側の部分に対応する領域を抽出する抽出手段と、を備えることを特徴とする領域抽出装置である。
【0007】
この側面によれば、第1フレーム画像内で動きのある領域を示す動き情報が取得される。認識されるべきオブジェクトが人体の手で掴まれている場合、そのオブジェクト、手及び腕は画像内で動いている可能性がある。そして、動きのある領域から、人体の肘及び手首の位置が検出される。そして、動きのある領域のうち、手首から人体の手側の部分に対応する領域が抽出される。動きのある領域が、手首を境として2つの部分に分割された場合、これらの部分のうち、肘が位置していない方の部分が、手側の部分である。手で掴まれているオブジェクトは、画像内において、手と重なっている。そのため、手側の部分に対応する領域を抽出することで、対象物が映っている領域を、より正確に抽出することができる。
【0008】
本発明の別の側面は、前記抽出手段は、前記手側の部分の色と、所定の肌色と、の比較の結果に基づいて、前記手側の部分に対応する前記領域の抽出を制御することを特徴とする領域抽出装置である。
【0009】
手でオブジェクトが掴まれている場合、動きのある領域のうち、手側の部分は、オブジェクトの色を有する画素を含む。従って、手側の部分からは、肌色以外の色も抽出される可能性がある。この側面によれば、手側の部分の色と所定の肌色とを比較することで、手がオブジェクトを掴んでいるか否かを推定することができる。これにより、領域の抽出が制御されるので、対象物が映っていない領域を抽出することを抑制することができる。
【0010】
本発明の更に別の側面は、前記抽出手段は、前記手側の部分の色と前記肌色との差が所定程度を超える場合に、前記手側の部分に対応する前記領域を抽出することを特徴とする領域抽出装置である。
【0011】
この側面によれば、手側の部分の色と所定の肌色との差が所定程度を超える場合に、領域が抽出されるので、オブジェクトが映っていない領域を抽出することを抑制することができる。
【0012】
本発明の更に別の側面は、前記検出手段は、前記動きのある領域から、前記人体の指の関節及び指先の位置を更に検出し、前記抽出手段は、前記指の関節及び指先の位置に基づいて、前記抽出される領域を修正することを特徴とする領域抽出装置である。
【0013】
この側面によれば、検出される指の関節及び指先の位置に基づいて、手で掴まれているオブジェクトの位置を推定することができるので、対象物が映る領域を、より適切に設定することができる。
【0014】
本発明の更に別の側面は、前記抽出手段は、前記指の関節から前記指先への方向に従って、前記抽出される領域を広げることを特徴とする領域抽出装置である。
【0015】
手で掴まれているオブジェクトは、指先の方向に、手からはみ出している傾向がある。この側面によれば、指先の方向に領域が広げられるので、対象物が映る領域を、より適切に設定することができる。
【0016】
本発明の更に別の側面は、前記検出手段は、所定の姿勢推定モデルを用いて、前記肘及び前記手首の位置を検出することを特徴とする領域抽出装置である。
【0017】
本発明の更に別の側面は、前記抽出された領域の画像を用いて、画像内のオブジェクトを識別するためのモデルを訓練する訓練手段を更に備えることを特徴とする領域抽出装置である。
【0018】
この側面によれば、動きのある領域のうち、手側の部分に対応する領域の画像で、モデルが訓練される。従って、第1フレーム画像のうち、手で掴まれているオブジェクトが映っている部分の画像が訓練に用いられるので、より適切に対象物を識別するように、モデルを訓練することができる。
【0019】
本発明の更に別の側面は、前記抽出された領域の画像を、所定のモデルに入力することにより、前記抽出された領域に存在するオブジェクトを示すオブジェクト情報を出力する出力手段を更に備えることを特徴とする領域抽出装置である。
【0020】
この側面によれば、動きのある領域のうち、手側の部分に対応する領域の画像から、手で掴まれているオブジェクトを示す情報が出力される。従って、手で掴まれていないオブジェクトの識別が防止されるので、本来識別されるべき対象物を識別することができる。
【0021】
本発明の更に別の側面は、前記取得される動き情報は、デンスオプティカルフローであることを特徴とする領域抽出装置である。
【0022】
本発明の更に別の側面は、コンピュータにより実行される領域抽出方法において、時間的に連続する第1フレーム画像及び第2フレーム画像を取得するフレーム画像取得ステップと、前記取得された第1フレーム画像及び第2フレーム画像に基づいて、前記第1フレーム画像内で動きのある領域を示す動き情報を取得する動き情報取得ステップと、前記取得された第1フレーム画像に基づいて、前記取得された動き情報により示される前記動きのある領域から、人体の肘及び手首の位置を検出する検出ステップと、前記検出された位置に基づいて、前記取得された動き情報により示される前記動きのある領域のうち、前記手首から前記人体の手側の部分に対応する領域を抽出する抽出ステップと、を備えることを特徴とする。
【0023】
本発明の更に別の側面は、コンピュータを、時間的に連続する第1フレーム画像及び第2フレーム画像を取得するフレーム画像取得手段と、前記取得された第1フレーム画像及び第2フレーム画像に基づいて、前記第1フレーム画像内で動きのある領域を示す動き情報を取得する動き情報取得手段と、前記取得された第1フレーム画像に基づいて、前記取得された動き情報により示される前記動きのある領域から、人体の肘及び手首の位置を検出する検出手段と、前記検出された位置に基づいて、前記取得された動き情報により示される前記動きのある領域のうち、前記手首から前記人体の手側の部分に対応する領域を抽出する抽出手段と、として機能させることを特徴とする領域抽出プログラムである。
【発明の効果】
【0024】
本発明によれば、画像から対象物が映っている領域を、より正確に抽出することができる。
【発明を実施するための形態】
【0026】
以下、図面を参照して本発明の実施形態について詳細に説明する。以下に説明する実施形態においては、画像に映るオブジェクトを識別するモデルを生成するための学習の実行と、生成されたモデルを用いてオブジェクトの識別を行う画像処理装置に対して本発明を適用した場合の実施形態である。オブジェクトの識別は、画像内に存在するオブジェクトを認識し又は分類することを含んでもよい。なお、学習を実行する装置と、オブジェクトの識別を行う装置とは別々の装置であってもよい。
【0027】
[1.画像処理装置の構成]
先ず、画像処理装置1の構成について、
図1を用いて説明する。
図1は、本実施形態に係る画像処理装置1の概要構成の一例を示すブロック図である。
図1に示すように、画像処理装置1は、システム制御部11と、システムバス12と、入出力インターフェース13と、記憶部14と、通信部15と、入力部16と、表示部17と、GPU(Graphics Processing Unit)18と、GPUメモリ19(または、ビデオRAM)と、撮像部20と、を備えている。システム制御部11と入出力インターフェース13とは、システムバス12を介して接続されている。画像処理装置1の例として、サーバ装置、パーソナルコンピュータ等が挙げられる。
【0028】
システム制御部11は、CPU(Central Processing Unit)11a、ROM(Read Only Memory)11b、RAM(Random Access Memory)11c等により構成されている。
【0029】
入出力インターフェース13は、システム制御部11と、記憶部14、通信部15、入力部16、表示部17、GPU18、GPUメモリ19及び撮像部20と、の間のインターフェース処理を行う。
【0030】
記憶部14は、例えば、ハードディスクドライブ又はソリッドステートドライブ等により構成されている。この記憶部14には、生成されたモデル2、及びモデル2の生成に用いられる訓練データ等が記憶される。訓練データは、動画データ及びその動画データにより示される動画内に存在するオブジェクトのクラスのラベル(Ground Truth)を含む。動画データのフォーマットの例として、H.264、MPEG−2等が挙げられる。記憶部14には、更にオペレーティングシステム、モデル生成用のプログラム、オブジェクト識別用のプログラム等が記憶されている。訓練データ及び各種プログラムは、例えば、所定のコンピュータからネットワークを介して取得されるようにしてもよいし、光ディスク、メモリカード、磁気テープ等の記録媒体に記録されてドライブ装置を介して読み込まれるようにしてもよい。モデル2を生成する装置とオブジェクトの識別を行う装置とが別々の装置である場合、生成されたモデル2の受け渡しは、ネットワークを介して行われてもよいし、記録媒体を介して行われてもよい。
【0031】
通信部15は、例えばネットワークインターフェースコントローラ等により構成されている。通信部15は、インターネット、LAN(Local Area Network)等の所定のネットワークを介して他のコンピュータと接続し、そのコンピュータとの通信状態を制御する。
【0032】
入力部16は、オペレータによる操作を受け付け、操作内容に対応する信号をシステム制御部11に出力する。入力部16の例として、キーボード、マウス、タッチパネル等が挙げられる。
【0033】
表示部17は、例えば、グラフィックコントローラ及びディスプレイ等により構成されている。表示部17は、システム制御部11の制御により、画像、文字等の情報を表示する。ディスプレイのパネルの例として、液晶パネル、有機EL(Light Emitting)パネル等が挙げられる。
【0034】
GPU18は、システム制御部11からの制御により、機械学習における行列演算等を実行する。GPU18は、複数の演算を並列にパイプライン処理する。GPU18とGPUメモリ19とは接続されている。GPUメモリ19は、GPU18による演算に用いられるデータや演算結果を記憶する。なお、システム制御部11が機械学習における全ての演算を実行する場合、GPU18及びGPUメモリ19は不要である。
【0035】
撮像部20は、例えばCCD(Charge-Coupled Device)センサ、又はCMOS(Complementary Metal Oxide Semiconductor)センサ等を備えるデジタルカメラを含む。撮像部20は、システム制御部11による制御に基づき、動画を撮像する。撮像部20は、撮像された動画を示す動画データをシステム制御部11又は記憶部14に出力する。学習を実行する装置と、オブジェクトの識別を行う装置とが別々の装置である場合においては、学習を実行する装置は、撮像部20を備えなくてもよい。また、撮像部20により撮像される動画からリアルタイムでオブジェクトの識別を実行するのではなく、他のコンピュータ又は記録媒体から取得された動画データからオブジェクトの識別を実行する場合、画像処理装置1は、撮像部20を備えなくてもよい。
【0036】
画像処理装置1自身は、入力部16、表示部17、GPU18、GPUメモリ19及び撮像部20の少なくとも何れか一は備えなくてもよい。これらのうち少なくとも一つは、有線又は無線を介して画像処理装置1と接続されてもよい。
【0037】
[2.システム制御部の機能概要]
次に、
図2乃至
図6を用いて、システム制御部11及びGPU18の機能概要について説明する。
図2は、本実施形態に係る画像処理装置1のシステム制御部11及びGPU18の機能ブロックの一例を示す図である。システム制御部11及びGPU18は、CPU11aが、記憶部14に記憶されているプログラムに含まれる各種コード等を読み出し実行することにより、
図2に示すように、フレーム取得部111、動き情報取得部112、関節検出部113、領域抽出部114、訓練部115、オブジェクト情報出力部116等として機能する。
【0038】
図3は、画像処理装置1による処理の流れの一例を示す図である。フレーム取得部111は、時間的に連続するフレーム画像を取得する。フレーム画像は、動画に含まれる静止画である。フレーム画像の取得元となる動画は、通常は撮像部20により撮像された動画である。但し、後述するようにモデル2を訓練する場合、フレーム画像の取得元となる動画は、例えば記憶部14に予め記憶されてもよい。動画には、識別されるべき対象であるオブジェクト100が映っていると想定される。識別されるべきオブジェクト100は、人体のパーツとは異なる何かであってもよい。オブジェクト100の例として、食料品、飲料、文房具、日用品、雑貨等が挙げられる。また、識別されるべきオブジェクト100は、人体の手110で掴まれていると想定される。通常、オブジェクト100を持った手110及び腕120が動いているときに、動画が撮像されると想定される。例えば、誰かが、或る場所からオブジェクト100を取り出したり、オブジェクト100を元の場所に置こうとしたりするときに、動画が撮像されてもよい。従って、オブジェクト100と、そのオブジェクト100を掴んでいる手110及び腕120は、動画内で動いていると想定される。動画に含まれるフレーム画像のうち、少なくとも一のフレーム画像は、オブジェクト100を含まなくてもよい。すなわち、オブジェクト100がフレームアウトしたりフレームインしたりしてもよい。また、幾つかのフレーム画像間においては、オブジェクト100が全く動かなくてもよい。撮像される動画は、時間的に連続するフレームを含む。時間的に連続するフレームとは、例えば、撮像時刻が連続するフレームである。例えば、フレームレートが30fpsである場合、30分の1秒間隔でフレームが撮像される。フレーム取得部111は、撮像順序に従って、動画データから順次フレーム画像を取得してもよい。
図3において、フレーム取得部111は、例えばフレームt−1及びフレームtを取得する。フレームt−1は、動画に含まれるフレーム画像のうち、撮像順序に従ってt−1番目のフレーム画像である。フレームtは、t番目のフレーム画像である。従って、フレームt−1とフレームtとは時間的に連続する。
【0039】
動き情報取得部112は、フレーム取得部111により取得されたフレームt−1及びフレームtに基づいて、フレームt−1内において動きのある領域210を示す動き情報200を取得する。動き領域210は、フレームt−1からフレームtにフレームが変わる際に、視覚的な変化が起こった領域であってもよい。動き領域210とは、フレームが変わる際に、フレームt−1において動いた何かが占める領域であってもよい。動いている何かとは、例えばオブジェクト100、手110、腕120、及び/又はその他の物等であってもよい。前述した想定から、動き領域210は、通常、オブジェクト100、手110及び腕120が占める領域を少なくとも含むと考えられる。動き情報200は、動き領域210の座標を含んでもよい。或いは、動き情報200は、フレームt−1の各ピクセルについて、動きがあるか否かを示す情報を含んでもよい。或いは、動き情報200は、フレームt−1の各ピクセルについて、移動方向及び移動距離を示すベクトルを含んでもよい。動き情報200は、例えばオプティカルフローであってもよい。オプティカルフローの一種として、デンスオプティカルフローがある。デンスオプティカルフローは、動き領域を示す。動き情報200は、デンスオプティカルフローであってもよい。オプティカルフローは、畳み込みニューラルネットワーク(CNN)を含むモデルを用いて生成されてもよい。そのようなモデルの例として、FlowNet、FlowNet 2.0、LiteFlowNet等が挙げられる。予め学習済みのモデルが使用されてもよい。オプティカルフローの生成方法として、機械学習を用いない方法が用いられてもよい。そのような方法の例として、ブロックマッチング法、勾配法等が挙げられる。動き情報200は、オプティカルフローとは異なる情報であってもよい。例えば、動き情報200は、フレーム間差分法又は背景差分法を用いて生成されてもよい。
【0040】
関節検出部113は、フレーム取得部111により取得されたフレームt−1に基づいて、動き情報取得部112により取得された動き情報200により示される動きのある領域210から、人体の関節の位置を検出する。特に、関節検出部113は、人体の肘310及び手首320の位置を検出する。関節検出部113は、肘310及び手首320の位置の検出に、人体の姿勢推定モデルを用いてもよい。このモデルは、例えばCNNを含んでもよい。姿勢推定モデルの例として、DeepPose、Convolutional Pose Machines、HRNet等が挙げられる。関節検出部113は、動き領域210から、肘310及び手首320に加えて、人体の指先及び指の関節の位置を検出してもよい。すなわち、関節検出部113は、手110を構成する指先及び指の関節の位置を検出してもよい。指先及び関節が検出される指は、親指、人差し指、中指、薬指及び小指のうち少なくとも一つであってもよい。検出される関節は、第1、第2及び第3関節のうち少なくとも一つであってもよい。
【0041】
領域抽出部114は、関節検出部113により検出された肘310及び手首320の位置に基づいて、動き情報取得部112により取得された動き情報200により示される動きのある領域210のうち、手首320から人体の手110側にある部分に対応する領域600を抽出する。通常、手首320を中心として、手110及び腕120を、手110と腕120とに分けることができる。例えば、領域抽出部114は、検出された位置に基づいて、フレームt−1において、肘310と手首320とを結ぶ直線410を計算してもよい。領域抽出部114は、手首320の位置で、直線410と直角に交わる直線420を計算してもよい。直線420を境として、動き領域210のうち、肘310が位置する部分が、腕120側の部分220である。そして、動き領域210のうち、肘310がない部分が、手110側の部分230である。
【0042】
領域抽出部114は、手110側の部分230を特定すると、手110側の部分230に対応する所定形状の領域600を設定してもよい。領域600は、手110側の部分230を囲う領域であってもよい。これにより、手110がオブジェクト100を掴んでいれば、領域抽出部114は、領域600として、オブジェクト100を囲う領域を抽出することになる。領域600は、例えば、バウンディングボックスであってもよい。領域600の形状は、例えば矩形であってもよいし、その他の形状であってもよい。領域抽出部114は、手110側の部分230の領域において、例えば内角が180度未満となる各頂点の座標を特定してもよい。特定される頂点の数は4個であってもよいし、3個又は5個以上であってもよい。
図3においては、頂点510、520、530及び540が特定される。領域抽出部114は、全頂点のX座標のうち最小及び最大のX座標を特定し、全頂点のY座標のうち最小及び最大のY座標を特定してもよい。そして、領域抽出部114は、特定したX座標及びY座標に基づいて、領域600の座標を決定してもよい。例えば、最小のX座標及びY座標の組み合わせが、領域600の左上の頂点の座標となり、最大のX座標及びY座標の組み合わせが、領域600の右下の頂点の座標となる。領域抽出部114は、フレームt−1において、設定した領域600を抽出して、その領域600に相当する画像610を取得する。
【0043】
図4は、画像処理装置1の動作による効果の一例を示す図である。
図4に示すフレームt−1には、オブジェクト100−1及び100−2が映っている。オブジェクト100−1は、手110で掴まれている。オブジェクト100−2は、テーブルに置かれている。画像処理装置1は、オブジェクト100−1及び100−2の何れも識別可能であるとする。しかしながら、識別すべきオブジェクトは、オブジェクト100−1である。オブジェクト100−1を持った手110及び腕120は動いているので、動画内でオブジェクト100−1も動いている。一方、オブジェクト100−2は動かない。従って、動き情報取得部112は、オブジェクト100−1、手110及び腕120が占める領域を、動き領域210として示す動き情報200を取得する。この動き領域210からは、オブジェクト100−2が占める領域は除外される。そのため、識別すべきではない方のオブジェクト100−2が映っている領域が抽出されることが防止される。また、関節検出部113により、肘310及び手首320の位置が検出される。肘310及び手首320の位置に基づいて、領域抽出部114は、動き領域210から、手110が何処にあるかを識別することができる。オブジェクトは手110で持たれていると想定されているので、手110側の部分230を特定することで、識別すべき対象物が映っている領域を、より正確に抽出することができる。
【0044】
領域抽出部114は、動きのある領域210のうち、手110側にある部分230の色と、所定の肌色と、の比較の結果に基づいて、手110側にある部分230に対応する領域600の抽出を制御してもよい。この制御は、領域600に相当する画像610を抽出するか否かを制御することであってもよい。領域抽出部114は、色の比較に基づいて、手110がオブジェクトを掴んでいるか否かを推定する。領域抽出部114は、手110がオブジェクトを掴んでいると推定される場合にのみ、領域600を抽出してもよい。
【0045】
手110側にある部分230の色は、例えば、この部分230の平均色であってもよい。例えば、領域抽出部114は、部分230内の画素値の平均を計算してもよい。所定の肌色は、例えば人体の手の色であってもよい。例えば、画像処理装置1の管理者により、肌色のR、G及びBそれぞれの輝度値が予め画像処理装置1に入力されてもよい。或いは、画像処理装置1又はその他の装置が、手が映っている一又は複数の画像から、手の色の平均色を計算してもよい。計算された平均色の数値が、所定の肌色の数値として、記憶部14に予め記憶されてもよい。
【0046】
領域抽出部114は、例えば手110側にある部分230の色と所定の肌色との差が所定程度を超える場合に、領域600を抽出してもよい。領域抽出部114は、色の差を、公知のアルゴリズムを用いて計算してもよい。例えば、領域抽出部114は、ユークリッド距離を計算してもよい。或いは、領域抽出部114は、R、G及びBそれぞれについて輝度値の差を計算し、計算した輝度値の差を合計してもよい。領域抽出部114は、色の差の数値が所定の閾値を超える場合にのみ、領域600を抽出してもよい。手110が何かを掴んでいるのであれば、手110側の部分230は、肌色以外の色を有する画素を比較的多く含む蓋然性がある。この場合、手110側の部分230の平均色は、肌色から大きく異なる。これにより、手110がオブジェクト100を掴んでいるか否かを推定することができる。
【0047】
図5(a)及び
図5(b)は、手110側にある領域の抽出例を示す図である。
図5(a)に示すフレームt1−1には、オブジェクト100を掴んだ手110が映っている。ここで、領域抽出部114は、手110側の部分230−1を特定する。領域抽出部114は、部分230−1の平均色のR、G及びBそれぞれの輝度値として、45、65及び100を計算する。一方、所定の肌色のR、G及びBそれぞれの輝度値は、250、180及び100である。この場合、色の差が所定程度よりも大きいので、領域抽出部114は、手110側の部分230−1を囲う領域600−1を抽出する。一方、
図5(a)に示すフレームt2−1には、何も掴んでいない手110が映っている。ここで、領域抽出部114は、手110側の部分230−2を特定する。領域抽出部114は、部分230−2の平均色のR、G及びBそれぞれの輝度値として、230、193及び85を計算する。この場合、色の差が所定程度よりも小さいので、領域抽出部114は、手110側の部分230−2を囲う領域600−2を抽出しない。
【0048】
関節検出部113により人体の指の関節及び指先の位置が検出された場合、領域抽出部114は、抽出される領域600を修正してもよい。指の関節の位置及び指先の位置により、手110に掴まれているオブジェクト100の位置を或る程度推定することができるので、これらにより領域600が修正される。例えば、領域抽出部114は、指の関節から指先への方向に従って、領域600を広げてもよい。手110にオブジェクト100が掴まれているとき、フレームt−1内において、オブジェクト100は通常指に重なっている。更に、オブジェクト100は、指先が向く方向にはみ出す傾向がある。そこで、指先が向く方向に、領域600に余裕を持たせることで、オブジェクト100を囲う領域600を、適切に設定することができる。
【0049】
指の関節から指先への方向は、第1関節から指先の方向、第2関節から指先の方向、及び第
3関節から指先の方向の何れであってもよい。領域抽出部114は、例えば第1関節が検出された場合、第1関節から指先への方向を優先して用いてもよい。第1関節が検出されず、第2関節が検出された場合、領域抽出部114は、第2関節から指先への方向を用いてもよい。第3関節のみが検出された場合、領域抽出部114は、第3関節から指先への方向を用いてもよい。
【0050】
複数の指それぞれについて関節及び指先の位置が検出された場合に対応するために、何れの指の方向に従うかについて、優先順位が予め定められてもよい。例えば、人差し指、中指、薬指、小指及び親指の順に、優先順位が定められてもよい。人差し指が検出された場合、領域抽出部114は、人差し指の関節及び指先の位置に基づいて、領域600を広げる方向を決定してもよい。人差し指が検出されず、中指が検出された場合、領域抽出部114は、中指の関節及び指先の位置に基づいて、領域600を広げる方向を決定してもよい。領域抽出部114は、優先順位を用いるのではなく、検出された複数の指について、関節から指先への方向ベクトルを合成してもよい。そして、領域抽出部114は、合成された方向ベクトルに従って、領域600を広げてもよい。
【0051】
領域抽出部114は、領域600の元の面積に対して所定割合の面積分、領域600を広げてもよい。或いは、領域抽出部114は、領域600の縦又は横の辺の長さに対して所定割合の長さ分、領域600を広げてもよい。
【0052】
領域抽出部114は、上下左右の方向うち、指の関節から指先への方向に最も近い方向に、領域600を広げてもよい。或いは、領域抽出部114は、指の関節から指先への方向ベクトルのX成分及びY成分それぞれに応じた方向に、領域600を広げてもよい。例えば、指先の方向が右上の方向である場合、領域抽出部114は、領域600を、右方向及び上方向に広げてもよい。この場合、領域抽出部114は、方向ベクトルのX成分とY成分との比率に応じて、横方向における領域600の拡張量と、縦方向における領域600の拡張量との比率を決定してもよい。
【0053】
図6は、領域600の拡張例の一例を示す図である。
図6に示されるフレームt−1には、オブジェクト100を掴んだ手110が映っている。ここで、関節検出部113は、手110から、人差し指、中指、薬指及び小指それぞれについて、関節710の位置及び指先720の位置を検出した。各指において、関節710から指先720への方向800は、略左方向である。そこで、領域抽出部114は、領域600を、左方向へ所定割合拡張してもよい。
【0054】
図3に戻り、訓練部115は、領域抽出部114により抽出された領域600の画像610を用いて、画像内のオブジェクトを識別するためのモデル2を訓練する。モデル2は、分類器であってもよい。モデル2は、画像610における各クラスのオブジェクトの存在確率を示すオブジェクト情報620を出力してもよい。モデル2はCNNであってもよい。CNNの例として、ResNet、GoogleNet、AlexNet、VGGNet等が挙げられる。手110で掴まれているオブジェクト100の画像が、モデル2の訓練に用いられるので、識別すべきオブジェクト100を適切に識別するモデル2を生成することができる。ここで、識別すべきオブジェクトのクラスに加えて、「エンプティ」クラスが定義されてもよい。「エンプティ」クラスは、手110が何も掴んでいないことを示すクラスである。撮像部20により撮像される動画には、何も掴んでいない手110が映っている場合がある。こうした状況に対応するために、「エンプティ」クラスが定義される。訓練部115は、識別すべき各クラスのオブジェクトを掴んだ手110が映っている動画から抽出された画像610を用いて、モデル2を訓練するとともに、何も掴んでいない手110が映っている動画から抽出された画像610を用いて、モデル2を訓練してもよい。なお、画像処理装置1以外の装置でモデル2が訓練される場合、又は訓練済みのモデルを用いて画像処理装置1がオブジェクト100を識別する場合、画像処理装置1において、訓練部115は不要である。
【0055】
オブジェクト情報出力部116は、領域抽出部114により抽出された領域600の画像610を、所定のモデルに入力することにより、抽出された領域600に存在するオブジェクト100を示すオブジェクト情報620を出力する。これにより、オブジェクト100が識別される。用いられるモデルは、画像内のオブジェクトを識別するためのモデルである。このモデルは、画像610における各クラスのオブジェクトの存在確率を示すオブジェクト情報620を出力する。このモデルは分類器であってもよい。このモデルは、訓練部115により訓練されたモデル2であってもよい。或いは、このモデルは、訓練部115による訓練とは別の方法で訓練されたモデルであってもよい。例えば、このモデルは、識別すべき各クラスのオブジェクトを掴んだ手110が映っている動画又は静止画を用いて訓練されたモデルであってもよい。画像処理装置1は、オブジェクト情報出力部116により出力されたオブジェクト情報620において、例えば出現確率が最も高く、且つその出現確率が所定の閾値を超えるクラスを、オブジェクト100のクラスに決定してもよい。画像処理装置1は、「エンプティ」クラスの出現確率が最も高い場合、識別すべきオブジェクトは何も映っていないと決定してもよい。オブジェクト情報出力部116は、オブジェクトの識別結果として、オブジェクト情報に加えて、領域600の座標及びサイズを出力してもよい。なお、画像処理装置1以外の装置でオブジェクト100を識別する場合、画像処理装置1において、オブジェクト情報出力部116は不要である。
【0056】
[3.画像処理装置の動作]
次に、画像処理装置1の動作について、
図7及び
図8を用いて説明する。
図7は、画像処理装置1のシステム制御部11及びGPU18による学習処理の一例を示すフローチャートである。モデル生成用のプログラムに含まれるプログラムコードに従って、システム制御部11及びGPU18は学習処理を実行する。例えば、入力部16を用いたオペレータからの指示に応じて、学習処理が実行されてもよい。
【0057】
図7に示すように、フレーム取得部111は、記憶部14に記憶された訓練データに含まれる第一組の動画データ及びクラスのラベルを取得する(ステップS101)。次いで、フレーム取得部111は、フレーム番号tを1に設定する(ステップS102)。次いで、フレーム取得部111は、取得された動画データから、フレームtを取得する(ステップS103)。
【0058】
次いで、フレーム取得部111は、フレーム番号tを1増加させる(ステップS104)。フレーム取得部111は、取得された動画データから、フレームtを取得する(ステップS105)。次いで、動き情報取得部112は、フレームt−1及びフレームtに基づいて、動き情報200を取得する(ステップS106)。例えば、動き情報取得部112は、デンスオプティカルフロー生成用のモデルに、フレームt−1及びフレームtを入力することにより、動き情報200を取得する。この時点におけるフレームt−1は、ステップS102で取得されたフレームである。
【0059】
次いで、関節検出部113は、フレームt−1において、動き情報200により示される動き領域210から、肘310及び手首320それぞれの位置を検出する(ステップS107)。例えば、関節検出部113は、姿勢推定モデルにフレームt−1を入力することにより、肘310及び手首320それぞれの座標を取得する。関節検出部113は、取得された座標から、動き領域210内の位置を示す座標を抽出する。
【0060】
次いで、領域抽出部114は、取得された座標に基づいて、動き情報200により示される動き領域210のうち、手110側の領域230を特定する(ステップS108)。例えば、領域抽出部114は、手首320を通る境界線420を計算する。領域抽出部114は、動き領域210を、境界線420で2つの領域に分割する。領域抽出部114は、これらの2つの領域のうち、肘310が位置していない領域を、手110側の部分230として特定する。
【0061】
次いで、領域抽出部114は、特定された手110側の部分230の平均色を計算する。そして、領域抽出部114は、部分230の平均色と所定の肌色との差を計算する(ステップS109)。次いで、領域抽出部114は、計算された色の差が、所定の閾値よりも大きいか否かを判定する(ステップS110)。色の差が閾値よりも大きい場合(ステップS110:YES)、領域抽出部114は、手110側の部分230に対応する領域600を抽出する(ステップS111)。例えば、領域抽出部114は、部分230の各頂点の座標を特定する。領域抽出部114は、全頂点の座標から、最小のX座標及びY座標と、最大のX座標及びY座標を決定する。領域抽出部114は、決定された座標を用いて、領域600の座標を決定する。なお、ステップS101において取得されたクラスのラベルが「エンプティ」である場合、領域抽出部114は、ステップS109及びS110を省略して、常に領域600を設定してもよい。
【0062】
次いで、関節検出部113は、フレームt−1において、動き情報200により示される動き領域210から、指の関節710及び指先720それぞれの位置を検出する(ステップS112)。なお、関節検出部113は、ステップS107において、肘310及び手首320の位置とともに、指の関節710及び指先720の位置を検出しておいてもよい。
【0063】
次いで、領域抽出部114は、検出された関節710及び指先720の位置に基づいて、関節710から指先720への方向を特定する(ステップS113)。例えば、領域抽出部114は、第1関節を特定し、第1関節から指先への方向のベクトルを計算する。複数の指について関節及び指先が検出された場合、領域抽出部114は、例えば優先順位に従って、何れの指の方向を用いるかを決定する。領域抽出部114は、指先の方向ベクトルのX成分に基づいて、領域600を左右何れの方向に拡張するか、及び拡張量を決定する。また、領域抽出部114は、方向ベクトルのY成分に基づいて、領域600を上下何れの方向に拡張するか、及び拡張量を決定する。次いで、領域抽出部114は、決定された方向及び拡張量に従って、領域600を拡張し、拡張された領域600の座標を取得する(ステップS114)。
【0064】
次いで、領域抽出部114は、フレームt−1から、設定された領域600に相当する画像610を抽出する(ステップS115)。次いで、訓練部115は、抽出された画像610をモデル2に入力して、オブジェクト情報620を取得する(ステップS116)。次いで、訓練部115は、取得されたオブジェクト情報620と、ステップS101で取得されたクラスのラベルとの間の誤差を計算する。そして、訓練部115は、計算された誤差を逆伝播することにより、モデル2の重み及びバイアスを更新する(ステップS117)。なお、説明の便宜上、一フレームごとに重みが更新されているが、例えば所定数のフレームを含むバッチごとに又は動画データごとに重みが更新されてもよい。
【0065】
次いで、訓練部115は、取得された動画データの中に、フレームt+1があるか否かを判定する(ステップS118)。フレームt+1がある場合(ステップS118:YES)、処理はステップS104に進む。
【0066】
フレームt+1がない場合(ステップS118:NO)、又は色の差が閾値よりも大きくはない場合(ステップS110:NO)、訓練部115は、訓練データの中に次の動画データがあるか否かを判定する(ステップS119)。次の動画データがある場合(ステップS119:YES)、フレーム取得部111は、訓練データから、次の組の動画データ及びクラスのラベルを取得して(ステップS120)、処理はステップS102に進む。一方、次の動画データがない場合(ステップS119:NO)、訓練部115は、学習を終了させるか否かを判定する(ステップS120)。例えば、予め設定されたエポック数に相当する回数学習が実行された場合、訓練部115は、学習を終了させると判定してもよい。或いは、訓練部115は、テストデータを用いてオブジェクトの識別を行うことにより、識別誤差を計算してもよい。訓練部115は、計算された識別誤差の平均値が所定値未満である場合、学習を終了させると判定してもよい。学習が終了しない場合(ステップS121:NO)、処理はステップS101に進む。学習が終了する場合(ステップS121:YES)、学習処理は終了する。
【0067】
図8は、画像処理装置1のシステム制御部11及びGPU18による識別処理の一例を示すフローチャートである。
図8において、
図7と同一のステップについては同一の符号が付されている。
図8に示す処理例は、撮像部20により撮像される動画からリアルタイムでオブジェクトを識別する場合の処理例である。例えば、
図7に示す学習処理による学習が完了したモデル2を用いて、識別処理が実行される。システム制御部11及びGPU18は、オフジェクト識別用のプログラムに含まれるプログラムコードに従って、識別処理を実行する。例えば、システム制御部11からの指示に基づいて、撮像部20による動画の撮像が開始されたとき、識別処理が実行されてもよい。
【0068】
図8に示すように、フレーム取得部111は、フレーム番号tを0に設定する(ステップS201)。次いで、フレーム取得部111は、フレーム番号tを1増加させる(ステップS202)。次いで、フレーム取得部111は、撮像部20から、最新のフレームを、フレームtとして取得する(ステップS203)。
【0069】
次いで、フレーム取得部111は、フレーム番号tが1より大きいか否かを判定する(ステップS204)。フレーム番号tが1より大きくはない場合(ステップS204:NO)、処理はステップS202に進む。
【0070】
一方、フレーム番号tが1より大きい場合(ステップS204:YES)、ステップS106〜S110が実行される。ステップS110において、色の差が閾値よりも大きい場合(ステップS110:YES)、ステップS111〜S115が実行される。次いで、オブジェクト情報出力部116は、ステップS115で抽出された画像610をモデル2に入力することにより、オブジェクト情報620を出力する(ステップS205)。
【0071】
ステップS205の後、又は色の差が閾値よりも大きくはない場合(ステップS110:NO)、オブジェクト情報出力部116は、オブジェクトの識別を終了させるか否かを判定する(ステップS206)。識別が終了する条件は、画像処理装置1の用途に応じて予め定められていてもよい。識別が終了しない場合(ステップS206:NO)、処理はステップS202に進む。一方、識別が終了する場合(ステップS206:YES)、識別処理は終了する。
【0072】
以上説明したように、本実施形態によれば、画像処理装置1が、時間的に連続するフレームt−1及びフレームtを取得する。また、画像処理装置1が、取得されたフレームt−1及びフレームtに基づいて、フレームt−1内で動きのある領域210を示す動き情報200を取得する。また、画像処理装置1が、取得されたフレームt−1に基づいて、取得された動き情報200により示される動きのある領域210から、人体の肘310及び手首320の位置を検出する。また、画像処理装置1が、検出された位置に基づいて、取得された動き情報200により示される動きのある領域210のうち、手首320から人体の手110側の部分230に対応する領域600を抽出する。手110で掴まれているオブジェクト100は、画像内において、手110と重なっているので、手110側の部分に対応する領域600を抽出することで、オブジェクト100が映っている領域600を、より正確に抽出することができる。
【0073】
ここで、画像処理装置1が、手110側の部分230の色と、所定の肌色と、の比較の結果に基づいて、手110側の部分230に対応する領域600の抽出を制御してもよい。この場合、手110側の部分230の色と所定の肌色とを比較することで、手110がオブジェクト100を掴んでいるか否かを推定することができる。これにより、領域600の抽出が制御されるので、オブジェクト100が映っていない領域を抽出することを抑制することができる。
【0074】
ここで、画像処理装置1が、手110側の部分230の色と肌色との差が所定程度を超える場合に、手110側の部分230に対応する領域600を抽出してもよい。この場合、オブジェクト100が映っていない領域を抽出することを抑制することができる。
【0075】
また、画像処理装置1が、動きのある領域210から、人体の指の関節710及び指先720の位置を更に検出してもよい。また、画像処理装置1が、指の関節710及び指先720の位置に基づいて、抽出される領域600を修正してもよい。この場合、検出される指の関節710及び指先720の位置に基づいて、手110で掴まれているオブジェクト100の位置を推定することができるので、オブジェクト100が映る領域600を、より適切に設定することができる。
【0076】
ここで、画像処理装置1が、指の関節710から指先720への方向に従って、抽出される領域600を広げてもよい。この場合、指先の方向に領域600が広げられるので、オブジェクト100が映る領域を、より適切に設定することができる。
【0077】
また、画像処理装置1が、所定の姿勢推定モデルを用いて、肘310及び手首320の位置を検出してもよい。
【0078】
また、画像処理装置1が、抽出された領域600の画像610を用いて、画像内のオブジェクト100を識別するためのモデル2を訓練してもよい。この場合、動きのある領域210のうち、手110側の部分230に対応する領域600の画像
610で、モデルが訓練される。従って、フレームt−1のうち、手110で掴まれているオブジェクト100が映っている部分の画像610が訓練に用いられるので、より適切にオブジェクト100を識別するように、モデル2を訓練することができる。
【0079】
また、画像処理装置1が、抽出された領域600の画像610を、所定のモデルに入力することにより、抽出された領域600に存在するオブジェクト100を示すオブジェクト情報
620を出力してもよい。この場合、動きのある領域210のうち、手110側の部分230に対応する領域600の画像
610から、手110で掴まれているオブジェクト100を示す情報が出力される。従って、手で掴まれていないオブジェクト100の識別が防止されるので、本来識別されるべきオブジェクト100を識別することができる。
【0080】
また、取得される動き情報200は、デンスオプティカルフローであってもよい。
領域抽出装置は、時間的に連続する第1フレーム画像及び第2フレーム画像を取得する。領域抽出装置は、取得された第1フレーム画像及び第2フレーム画像に基づいて、第1フレーム画像内で動きのある領域を示す動き情報を取得する。領域抽出装置は、取得された第1フレーム画像に基づいて、取得された動き情報により示される動きのある領域から、人体の肘及び手首の位置を検出する。領域抽出装置は、検出された位置に基づいて、取得された動き情報により示される動きのある領域のうち、手首から人体の手側の部分に対応する領域を抽出する。