【文献】
磯谷和樹 ほか,ティルトロータ型UAVの自動着陸のための安全な着陸地点の検出,ロボティクスメカトロニクス講演会2019講演会論文集,一般社団法人日本機械学会,2019年06月05日,pp.(1P2-N09(1))-(1P2-N09(3))
(58)【調査した分野】(Int.Cl.,DB名)
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、クラスアクティベーションマップは、識別されたクラスのオブジェクトが存在する場所全体を正確に示すのではなく、他のクラスとの区別がしやすい場所を強調しやすいなどの性質がある。そのため、CAMを単純に利用しても、画像内のオブジェクトを囲うような領域、例えばバウンディングボックスを、精度よく特定することが難しい。
【0005】
本願発明は以上の点に鑑みてなされてものであり、その課題の一例は、画像においてオブジェクトが存在する位置に対応する領域を精度よく特定することが可能なオブジェクト領域特定装置、オブジェクト領域特定方法、及びオブジェクト領域特定プログラムを提供することである。
【課題を解決するための手段】
【0006】
上記課題を解決するために、本発明の一の側面は、時間的に連続する第1フレーム画像及び第2フレーム画像を取得するフレーム画像取得手段と、画像内のオブジェクトを識別するモデルに前記第1フレーム画像を入力して、前記第1フレーム画像上の位置であって、前記第1フレーム画像内のオブジェクトの識別に影響を与える位置を示す位置情報を取得する位置情報取得手段と、前記第1フレーム画像及び前記第2フレーム画像に基づいて、前記第1フレーム画像内における前記オブジェクトの動きを示す動き情報を取得する動き情報取得手段と、前記取得された位置情報
と前記取得された動き情報
とを足し合わせることに基づいて、前記第1フレーム画像上の領域であって、前記オブジェクトが存在する位置に対応する領域を示す領域情報を生成する領域情報生成手段と、を備えるオブジェクト領域特定装置であることを特徴とする。
【0007】
この側面によれば、位置情報及び動き情報に基づいて、オブジェクトが存在する位置に対応する領域を示す領域情報が生成される。位置情報は、フレーム画像内のオブジェクトの識別に影響を与える位置を示す。従って、位置情報は、そのオブジェクトが存在する場所のうち、少なくともある程度の範囲の場所を示す蓋然性がある。動き情報は、そのオブジェクトの動きを示す。従って、そのオブジェクトが動いている場合、動き情報は、そのオブジェクトが存在する場所全体を少なくとも示す蓋然性がある。そのため、これらの情報を用いて領域情報を生成することで、画像においてオブジェクトが存在する位置に対応する領域を精度よく特定することができる。
【0008】
本発明の別の側面は、前記オブジェクト領域特定装置において、前記領域情報生成手段は、前記位置情報と前記動き情報とを統合することに基づいて、前記領域情報を生成することを特徴とする。
【0009】
この側面によれば、位置情報と動き情報との統合により、フレーム画像において、動きがある複数の範囲のうち、オブジェクトの識別に影響を与える位置に対応する範囲が特定される。従って、オブジェクトが存在する位置に対応する領域を精度よく特定することができる。
【0010】
本発明の更に別の側面は、前記オブジェクト領域特定装置において、前記動き情報取得手段は、前記第1フレーム画像における各位置について、前記オブジェクトの移動方向及び移動距離を示す前記動き情報を生成し、前記領域情報生成手段は、前記位置情報と前記動き情報とを、位置ごとに足し合わせることに基づいて、前記領域情報を生成することを特徴とする。
【0011】
この側面によれば、オブジェクトの識別に影響を与える位置が、その位置における移動方向及び移動距離で変更される。
【0012】
本発明の更に別の側面は、前記オブジェクト領域特定装置において、前記第2フレーム画像のうち、前記
生成された領域情報により示される領域の画像を、画像内のオブジェクトを識別する第2モデルに入力することにより、前記第2フレーム画像
内のオブジェクトを検出する検出手段を更に備えることを特徴とする。
【0013】
この側面によれば、フレーム画像において、生成された領域情報により示される領域に対応する画像が、その画像内のオブジェクトを識別するモデルに入力される。従って、フレーム画像内のオブジェクトがこのモデルにより識別される。また、領域情報により、そのオブジェクトの位置に対応する領域が示される。従って、フレーム画像内のオブジェクトを精度よく検出することができる。また、精度の高い領域情報が自動的に生成されるので、人間による領域情報のアノテーションを必要とする機械学習なくして、オブジェクトの検出が可能である。
【0014】
本発明の更に別の側面は、前記オブジェクト領域特定装置において、前記生成された領域情報に基づいて、前記モデルを訓練する訓練手段を更に備えることを特徴とする。
【0015】
この側面によれば、自動的に生成された領域情報に基づいて、モデルが訓練されるので、オブジェクトの位置に対応する領域を特定するための機械学習のために、人間による領域情報のアノテーションが不要となる。
【0016】
本発明の更に別の側面は、前記オブジェクト領域特定装置において、前記位置情報取得手段は、前記モデルに更に前記第2フレーム画像を入力して、前記第2フレーム画像上の位置であって、前記第2フレーム画像内のオブジェクトの識別に影響を与える位置を示す第2位置情報を取得し、前記訓練手段は、前記第2フレーム画像から、前記
生成された領域情報により示される領域の第1画像を抽出するする第1抽出手段と、前記取得された第2位置情報に基づいて、前記第2フレーム画像上の領域であって、前記オブジェクトの識別に影響を与える位置に対応する領域を示す第2領域情報を生成する第2領域情報生成手段と、前記第2フレーム画像から、前記取得された第2領域情報により示される領域の第2画像を抽出する第2抽出手段と、前記取得された第1画像及び第2画像に基づいて、前記モデルの重みを更新する更新手段と、を含むことを特徴とする。
【0017】
この発明によれば、第2フレーム画像のうち、位置情報及び動き情報に基づいて生成された領域情報により示される領域の第1画像と、第2フレーム画像のうち、第2位置情報に基づいて生成された第2領域情報により示される領域の第2画像と、に基づいて、モデルの重みが更新される。位置情報により示される位置であって、第1フレーム画像においてオブジェクトの識別に影響を与える位置が、動き情報により示される動きで変更される場合、変更後の位置は、第2フレーム画像において、オブジェクトの識別に影響を与える位置に対応するものと考えられる。そのため、第1画像及び第2画像を用いることで、モデルを適切に訓練することができる。
【0018】
本発明の更に別の側面は、前記オブジェクト領域特定装置において、前記訓練手段は、前記抽出された第1画像の特徴を取得する第1特徴取得手段と、前記抽出された第2画像の特徴を取得する第2特徴取得手段と、を更に含み、前記更新手段は、前記取得された第1特徴及び第2特徴に基づいて、前記モデルの重みを更新することを特徴とする。
【0019】
この発明によれば、第1画像の特徴及び第2画像の特徴に基づいて、モデルの重みが更新される。第2領域情報は、第2フレーム画像において、オブジェクトの識別に影響を与える位置に対応する領域を示す。従って、その領域から抽出された第2画像の特徴は、検出される対象となるオブジェクトの特徴を示す。そこで、例えば、第1画像の特徴と第2画像の特徴とが互いに近づくように、重みが更新されることにより、モデルを適切に訓練することができる。
【0020】
本発明の更に別の側面は、前記オブジェクト領域特定装置において、前記位置情報は、クラスアクティベーションマップの少なくとも一部であることを特徴とする。
【0021】
本発明の更に別の側面は、前記オブジェクト領域特定装置において、前記動き情報は、オプティカルフローであることを特徴とする。
【0022】
本発明の更に別の側面は、コンピュータにより実行されるオブジェクト領域特定方法において、時間的に連続する第1フレーム画像及び第2フレーム画像を取得するフレーム画像取得ステップと、画像内のオブジェクトを識別するモデルに前記第1フレーム画像を入力して、前記第1フレーム画像上の位置であって、前記第1フレーム画像内のオブジェクトの識別に影響を与える位置を示す位置情報を取得する位置情報取得ステップと、前記第1フレーム画像及び前記第2フレーム画像に基づいて、前記第1フレーム画像内における前記オブジェクトの動きを示す動き情報を取得する動き情報取得ステップと、前記取得された位置情報
と前記取得された動き情報
とを足し合わせることに基づいて、前記第1フレーム画像上の領域であって、前記オブジェクトが存在する位置に対応する領域を示す領域情報を生成する領域情報生成ステップと、を含むことを特徴とする。
【0023】
本発明の更に別の側面は、コンピュータを、時間的に連続する第1フレーム画像及び第2フレーム画像を取得するフレーム画像取得手段と、画像内のオブジェクトを識別するモデルに前記第1フレーム画像を入力して、前記第1フレーム画像上の位置であって、前記第1フレーム画像内のオブジェクトの識別に影響を与える位置を示す位置情報を取得する位置情報取得手段と、前記第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乃至
図7を用いて、システム制御部11及びGPU18の機能概要について説明する。
図2は、本実施形態に係る画像処理装置1のシステム制御部11及びGPU18の機能ブロックの一例を示す図である。システム制御部11及びGPU18は、CPU11aが、記憶部14に記憶されているプログラムに含まれる各種コード等を読み出し実行することにより、
図2に示すように、フレーム取得部111、位置情報取得部112、動き情報取得部113、領域情報生成部114、訓練部115、検出部116等として機能する。
【0038】
図3は、モデル2の構成例を示す図である。
図3に示すように、モデル2は、CAM検出部210と、フロー検出部220と、領域推定アルゴリズム230と、を含む。CAM検出部210は、モデル211を含む。
【0039】
[2−1.基本機能]
フレーム取得部111は、時間的に連続するフレーム画像を取得する。フレーム画像は、動画に含まれる静止画である。この動画には、検出される対象であるオブジェクト100が映っていると想定される。このオブジェクト100は、動画内で動いていると想定される。動画に含まれるフレーム画像のうち、少なくとも一のフレーム画像は、オブジェクト100を含まなくてもよい。すなわち、オブジェクト100がフレームアウトしたりフレームインしたりしてもよい。また、幾つかのフレーム画像間においては、オブジェクト100が全く動かなくてもよい。この動画は、時間的に連続するフレームを含む。時間的に連続するフレームとは、例えば、撮像時刻が連続するフレームである。例えば、フレームレートが30fpsである場合、30分の1秒間隔でフレームが撮像される。フレーム取得部111は、撮像順序に従って、動画データから順次フレーム画像を取得してもよい。
図3において、フレーム取得部111は、例えばフレームt−1及びフレームtを取得する。フレームt−1は、動画に含まれるフレーム画像のうち、撮像順序に従ってt−1番目のフレーム画像である。フレームtは、t番目のフレーム画像である。従って、フレームt−1とフレームtとは時間的に連続する。
【0040】
位置情報取得部112は、モデル211に、フレーム取得部111により取得されたフレームt−1を入力する。これにより、位置情報取得部112は、フレームt−1上の位置であって、フレームt−1内のオブジェクト100の識別に影響を与える位置を示す位置情報510を取得する。モデル211は、画像内のオブジェクトを識別する。従って、位置情報510は、モデル211による識別に影響を与える位置を示す。モデル211は、分類器であってもよい。モデル211は、例えばCNNであってもよい。例えば、モデル211は、畳み込み層、プーリング層、全結合層、ソフトマックス関数等を含んでもよい。モデル211において、畳み込み層及びプーリング層は、フレームt−1の特徴マップを生成する。全結合層は、特徴マップから、フレームt−1の特徴を抽出する。ソフトマックス関数は、抽出された特徴から、フレームt−1における各クラスの存在確率を示す値を生成する。CNNの例として、ResNet、GoogleNet、AlexNet、VGGNet等が挙げられる。CAM検出部210は、位置情報を生成する。位置情報取得部112は、CAM検出部210から位置情報を取得する。オブジェクト100の識別に影響を与える位置とは、例えばオブジェクト100の識別の根拠となる位置であってもよい。また、オブジェクト100の識別に影響を与える位置とは、オブジェクト100の識別に重要な位置であってもよい。また、オブジェクト100の識別に影響を与える位置とは、オブジェクト100を、そのオブジェクト100のクラスとは異なるクラスのオブジェクトと区別化する位置であってもよい。また、オブジェクト100の識別に影響を与える位置とは、モデル211が生成する特徴マップにおいて、その位置の値が変化することによって、モデル211から出力される確率値が、他の位置の場合と比較して大きく変化することであってもよい。位置情報510は、例えばCAMアルゴリズムにより生成されるクラスアクティベーションマップ又はその一部であってもよい。CAMのアルゴリズムの例として、Grad−CAM、Grad−CAM++、Smooth Grad等が挙げられる。例えば、CAM検出部210は、或るオブジェクトのクラスが与えられると、そのクラスに応じて、各特徴マップについて、モデル211の最終層の勾配を算出してもよい。CAM検出部210は、算出された勾配に基づいて、各特徴マップの重みを算出してもよい。CAM検出部210は、特徴マップに重みを掛けて、これらの特徴マップを足し合わせることにより、位置情報510を生成してもよい。位置情報510は、例えば識別に対する影響度合い又は重要度を示す値を位置ごとに示す二次元のヒートマップであってもよい。或いは、位置情報510は、影響度合い又は重要度合いが所定値以上である位置を示す位置行列であってもよい。すなわち、位置情報510は、フレームtにおいて、オブジェクト100の識別について重要な位置を示してもよい。位置情報取得部112は、アクティベーションマップから、影響度合い又は重要度合いが所定値以上である位置を抽出して、その位置行列を生成してもよい。
【0041】
動き情報取得部113は、フレーム取得部111により取得されたフレームt−1及びフレームtに基づいて、フレームt−1内におけるオブジェクト100の動きを示す動き情報520を取得する。オブジェクト100の動きとは、フレームt−1とフレームtとの間での、オブジェクト100の変位であってもよい。フレームt−1とフレームtとの関係において、フレームt−1は、移動前におけるオブジェクト100に対応し、フレームtは、移動後におけるオブジェクトに対応する。動き情報520は、例えば、移動方向及び移動距離(或いは移動速度)を示してもよい。例えば、動き情報520は、フレームt−1における各位置について、移動方向及び移動距離を示すベクトルを含んでもよい。例えば、動き情報520は、フレームt−1の各位置について、その位置の座標と、移動後の座標との差分を示してもよい。例えば、動き情報520は、オプティカルフローであってもよい。例えば、動き情報取得部113は、フレームt−1及びフレームtをフロー検出部220に入力して、フロー検出部220から動き情報520を取得する。フロー検出部220は、例えばCNNを含むモデルであってもよい。フロー検出部220の例として、FlowNet、FlowNet 2.0、LiteFlowNet等が挙げられる。フロー検出部220として、予め学習済みのモデルが使用されてもよい。フロー検出部220は、予め記憶部14に記憶されてもよく、必要なときにRAM14又はGPUメモリ19にロードされてもよい。オプティカルフローの生成方法として、機械学習を用いない方法が用いられてもよい。そのような方法の例として、ブロックマッチング法、勾配法等が挙げられる。
【0042】
領域情報生成部114は、位置情報取得部112により取得された位置情報510及び動き情報取得部113により取得された動き情報520に基づいて、フレーム取得部111により取得されたフレームt上の領域であって、オブジェクト100が存在する位置に対応する領域を示す領域情報540を生成する。オブジェクト100が存在する位置に対応する領域とは、例えばオブジェクト100を囲むような領域であってもよい。領域の形状は、例えば矩形であってもよい。この領域は、例えばバウンディングボックスであってもよい。領域情報540は、例えばその領域の座標及びそのサイズを含んでもよい。領域の座標は、中心座標又は何れかの頂点の座標であってもよい。領域のサイズは、領域の高さ及び幅を含んでもよい。
【0043】
領域情報生成部114は、領域推定アルゴリズム230に従って、領域情報540を生成してもよい。例えば、領域情報生成部114は、位置情報510と動き情報520とを統合することに基づいて、領域情報540を生成してもよい。例えば、領域情報生成部114は、位置情報510と動き情報520とを、位置ごとに足し合わせることに基づいて、領域情報540を生成してもよい。例えば、領域情報生成部114は、位置情報510及び動き情報520に基づいて、新位置情報530を生成してもよい。
図4は、新位置情報530の生成例を示す図である。
図4において、位置情報510は、例えば影響度合い又は重要度合いが所定値以上である位置(オブジェクト100の識別に重要な位置)のX座標及びY座標をそれぞれ示す位置行列である。
図4において、動き情報520は、フレームt−1における各位置について、その位置のX座標及びY座標と、移動先の位置のX座標及びY座標と、の差分を示す位置情報行列である。領域情報生成部114は、例えば位置情報510の行列と、動き情報520の行列とを、要素ごとに足し合わせることにより、新位置情報530を生成してもよい。具体的には、位置情報510と動き情報520との間で座標が一致する要素ごとに、足し合わせが行われてもよい。これにより、フレームt−1においてオブジェクト100の識別に影響を与える位置が、フレームtにおける移動後の位置に変換されてもよい。その他の位置については、動き情報520がそのまま新位置情報530に引き継がれてもよい。
【0044】
領域情報生成部114は、新位置情報530に基づいて、オブジェクト100の位置に対応する領域を推定する。例えば、領域情報生成部114は、新位置情報530において、移動方向及び移動距離が互いに同一又は類似する位置の範囲を、オブジェクトの場所の候補として一又は複数特定してしてもよい。また、領域情報生成部114は、新位置情報530において、移動後において、識別に影響を与える位置の範囲を特定してもよい。領域情報生成部114は、オブジェクトの場所の候補のうち、移動後において、識別に影響を与える位置の範囲を含む候補を、オブジェクト100の場所と推定してもよい。領域情報生成部114は、オブジェクト100の場所に推定された範囲を外接する領域531を設定してもよい。領域情報生成部114は、領域531を示す領域情報540を生成する。
【0045】
前述したように、位置情報510は、オブジェクト100の識別に影響を与える位置を示す。位置情報510においては、オブジェクト100が他のクラスのオブジェクトと視覚的に区別がしやすい箇所の値が、他の部分の値と比べて高くなりやすい。従って、位置情報510は、オブジェクト100の大雑把な位置又はオブジェクト100の一部分の位置を示す蓋然性がある。そのため、位置情報510は、オブジェクト100が存在する範囲全体を正確に示すとは限らない。一方、動き情報520は、オブジェクト100の動きを示す。フレームt−1とフレームtとの間でオブジェクト100が動いていると仮定すれば、動き情報520において、オブジェクト100が存在する範囲全体について、動きがあることが示される蓋然性がある。しかしながら、検出対象であるオブジェクト100以外に、フレーム画像内に動いているオブジェクトが存在
する場合、その範囲についても、動きがあることが示される。そのため、動き情報520のみでは、オブジェクト100の場所を特定することは難しい。オブジェクトが移動する方向及び距離の少なくとも何れか一方は、オブジェクト間で異なる可能性がある。そこで、位置情報510と動き情報520とを統合することで、フレーム画像において動きがある複数の範囲のうち、オブジェクト100の識別に影響を与える位置を含む範囲を特定することができる。そのため、新位置情報530により、オブジェクト100が存在する領域を精度よく推定することが可能となる。
【0046】
図5は、オブジェクト100の位置に対応する領域の推定例を示す図である。動いているオブジェクト100、110及び120が撮像されて、動画データが生成されたとする。オブジェクト100、110及び120のクラスは互いに異なる。
図5に示すように、フレームt−1は、オブジェクト100、110及び120を含む。オブジェクト100のクラスについて、位置情報510が生成される場合、その位置情報510は、例えばオブジェクト100が存在する位置のうち、一部の位置300を、識別に影響を与える位置として示す。フレームt−1及びフレームtに基づいて生成される動き情報520において、オブジェクト100、110及び120それぞれが存在する範囲400、410及び420について、動きがあることを示している。位置情報510と動き情報520を統合して生成された新位置情報530においては、範囲400、410及び420のうち、範囲400が、位置300と重複している。従って、例えば範囲400を囲むような領域531が推定される。
【0047】
[2−2.学習段階]
図6は、学習段階における画像処理装置1の処理の流れの一例を示す図である。画像処理装置1は、弱教師あり学習により、オブジェクトを検出するためのモデル2を生成する。通常、オブジェクトを検出するためのモデルを生成する場合、訓練データに入れるラベルとして、領域情報が必要である。領域情報は、人間の手動によるアノテーションが必要である。また、半教師あり学習であっても、手動による領域情報のアノテーションを完全に排除することはできない。これに対して、画像処理装置1は、人間の手動による領域情報のアノテーションなくして、オブジェクトを検出するためのモデルを生成する。これにより、アノテーションによる作業コストを省略することができる。モデル2の生成に必要なラベルは、オブジェクトのクラスである。
【0048】
学習段階において、フレーム取得部111は、訓練データを取得する。訓練データは、動画データ及びクラスのラベルを含む。例えば、訓練データは、記憶部14に予め記憶されてもよい。
【0049】
位置情報取得部112は、モデル211に、フレームt−1を入力することにより、フレーム取得部111によりラベルとして取得されたクラスに対応する位置情報510を、CAM検出部210から取得する。位置情報取得部112は、モデル211に、更にフレームtを入力することにより、ラベルとして取得されたクラスに対応する位置情報560を、CAM検出部210から取得する。位置情報取得部112が、動画データから順次フレーム画像を取得し、位置情報取得部112が、順次フレーム画像をモデル211に入力する場合には、位置情報560を取得することは、位置情報510を取得することと同一である。
【0050】
動き情報取得部113及び領域情報生成部114の機能は、3−1項で述べたとおりである。
【0051】
訓練部115は、領域情報生成部114により生成された領域情報540に基づいて、モデル211を訓練する。
【0052】
例えば、訓練部115は、フレームtから、領域情報540により示される領域531の画像550を抽出する。
【0053】
また、訓練部115は、位置情報取得部112により取得された位置情報560に基づいて、フレームt上の領域561であって、オブジェクト100の識別に影響を与える位置に対応する領域561を示す領域情報570を生成する。例えば、訓練部115は、位置情報560において、影響度合い又は重要度を示す値が所定値以上である範囲を特定してもよい。訓練部115は、特定された範囲を外接する領域561を設定してもよい。領域561の形状は矩形であってもよい。領域情報570は、領域561の座標及びサイズを含んでもよい。
【0054】
訓練部115は、フレームtから、領域情報570により示される領域561の画像580を抽出する。
【0055】
訓練部115は、画像550及び画像580に基づいて、モデル211の重みを更新する。モデル211のバイアスが更に更新されてもよい。
【0056】
例えば、訓練部115は、画像550の特徴を取得する。例えば、訓練部115は、画像550をモデル240に入力することにより、画像550の特徴を示す特徴情報590を取得してもよい。モデル240は、画像の特徴を抽出するモデルである。モデル240は、分類器であってもよい。モデル240は、CNNであってもよい。例えば、モデル240は、畳み込み層、プーリング層、全結合層及びソフトマックス関数を含んでもよい。モデル240において、畳み込み層及びプーリング層は、画像550の特徴マップを生成する。全結合層は、生成された特徴マップを変換して、特徴情報590を生成する。特徴情報590は、例えば一次元のベクトルであってもよい。
【0057】
また、訓練部115は、画像580の特徴を取得する。例えば、訓練部115は、画像580をモデル260に入力することにより、画像580の特徴を示す特徴情報600を取得してもよい。モデル260の構造及び機能は、モデル240の構造及び機能と同一であってもよい。モデル240とモデル260とは、重みを共有してもよい。或いは、モデル240がモデル260を兼ねてもよい。
【0058】
訓練部115は、画像550の特徴及び画像580の特徴に基づいて、モデル211の重みを更新してもよい。例えば、訓練部115は、特徴情報590と特徴情報600との間の誤差610を算出又は取得してもよい。例えば、所定の損失関数を用いて誤差610が算出される。訓練部115は、算出された誤差610に基づいて、モデル211の重みを更新してもよい。例えば、訓練部115は、誤差610を逆伝搬する。これにより、訓練部115は、モデル240及び260の重みを更新し、更にモデル211の重みを更新する。誤差逆伝搬により、特徴情報590と特徴情報600とが互いに近づくように、モデル211、240及び260が訓練される。
【0059】
図4を用いて説明した例において、位置情報510と動き情報520とを統合することにより、フレームt−1においてオブジェクト100の識別に影響を与える重要な位置に、動きが加わることで、それらの位置が、フレームtにおける位置に変換されるものと推定される。この観点から、新位置情報530により示される重要な位置と、位置情報560により示される重要な位置とは、対応するものと想定される。また、領域情報570は、フレームtにおいて、オブジェクト100の識別に影響を与える位置に対応する領域561を示す。従って、領域561から抽出された画像580の特徴は、オブジェクト100の特徴を表すと言える。そこで、特徴情報590と特徴情報600とが互いに近づくようにモデル211を訓練することで、適切な学習が行われる。そして、新位置情報530を用いた、オブジェクト100が存在する領域531の推定精度が、学習前よりも向上する。
【0060】
訓練部115は、ラベルとして取得されたクラスと、モデル240によるクラスの識別結果と間の分類誤差に更に基づいて、モデル240、260及び211を訓練してもよい。例えば、訓練部115は、分類誤差を逆伝搬することにより、モデル240、260及び211の重みを更新してもよい。
【0061】
訓練部115は、モデル211の学習を終えると、モデル2を記憶部14に記憶させる。モデル2において、学習によりパラメータが更新されるのはモデル211であるので、訓練部115は、モデル211を記憶部14に記憶させればよい。
【0062】
[2−3.実用段階]
図7は、実用段階における画像処理装置1の処理の流れの一例を示す図である。
【0063】
学習終了後の実用段階において、フレーム取得部111は、例えば撮像部20による動画の撮像中に、リアルタイムで撮像部20から順次フレームのデータを取得してもよい。或いは、フレーム取得部111は、記憶部14に予め記憶されている動画データからフレーム画像のデータを取得してもよい。或いは、フレーム取得部111は、ネットワークを介して他のコンピュータからストリーミングで送信されてくる動画データから、フレーム画像のデータを取得してもよい。
【0064】
位置情報取得部112は、モデル211に、フレームt−1を入力することにより、一又は複数のクラスにそれぞれ対応する位置情報510を、CAM検出部210から取得してもよい。予め定められた一のクラスのオブジェクト100を検出する場合、位置情報取得部112は、そのクラスに対応する位置情報510のみを取得してもよい。オブジェクト100のクラスを識別する場合、位置情報取得部112は、例えば全クラスのそれぞれの位置情報510を取得してもよい。或いは、位置情報取得部112は、例えば識別可能な複数のクラスのうち、モデル211から出力される存在確率を示す値が所定値以上である1又は複数のクラスそれぞれについて、位置情報510を取得してもよい。
【0065】
動き情報取得部113の機能は、3−1項で述べたとおりである。
【0066】
領域情報生成部114は、動き情報取得部113により動き情報520が取得された各クラスについて、領域情報540を生成する。予め定められた一のクラスのオブジェクト100を検出する場合、領域情報生成部114は、オブジェクト100の検出結果として、領域情報540のみを出力してもよい。
【0067】
検出部116は、フレーム取得部111により取得されたフレームtのうち、領域情報生成部114により取得された領域情報540により示される領域531の画像550を、モデル3に入力することにより、オブジェクト100を検出してもよい。モデル3は、画像内のオブジェクトを識別するモデルである。モデル3は、例えば分類器であってもよい。モデル3は、CNNであってもよい。モデル3は、学習が完了したモデル240であってもよい。モデル3は、画像550から、クラス情報620を生成する。クラス情報620は、画像550内のオブジェクトのクラスを示す情報である。例えば、クラス情報620は、各クラスのオブジェクトの存在確率を示す値を含んでもよい。或いは、クラス情報620は、識別可能な複数のクラスのうち、画像550内における存在確率が最も高いオブジェクトのクラスを識別する情報であってもよい。
【0068】
検出部116は、画像550が抽出されたクラスごとに、画像550をモデル3に入力して、クラス情報を取得してもよい。検出部116は、画像550が抽出されたクラスごとに、クラス情報からそのクラスの存在確率を特定してもよい。そして、検出部116は、存在確率が最も高いクラスのクラス情報及びそのクラスについて生成された領域情報540を、オブジェクト100の検出結果として出力してもよい。或いは、検出部116は、存在確率が所定値以上である各クラスについて、クラス情報及び領域情報540を出力してもよい。
【0069】
オブジェクト100の検出結果の出力先の例としては、RAM11c、記憶部14、表示部17、画像処理装置1以外のコンピュータ等が挙げられる。
【0070】
[3.画像処理装置の動作]
次に、画像処理装置1の動作について、
図8及び
図9を用いて説明する。
図8は、画像処理装置1のシステム制御部11及びGPU18による学習処理の一例を示すフローチャートである。モデル生成用のプログラムに含まれるプログラムコードに従って、システム制御部11及びGPU18は学習処理を実行する。例えば、入力部16を用いたオペレータからの指示に応じて、学習処理が実行されてもよい。
【0071】
図8に示すように、フレーム取得部111は、記憶部14に記憶された訓練データに含まれる第一組の動画データ及びクラスのラベルを取得する(ステップS101)。次いで、フレーム取得部111は、フレーム番号tを1に設定する(ステップS102)。フレーム取得部111は、取得された動画データから、フレームtを取得する。次いで、位置情報取得部112は、フレームtをモデル211に入力することにより、ラベルとして取得されたクラスに対応する位置情報510を取得する(ステップS103)。
【0072】
次いで、フレーム取得部111は、フレーム番号tを1増加させる(ステップS104)。フレーム取得部111は、取得された動画データから、フレームtを取得する。次いで、動き情報取得部113は、フレームt−1及びフレームtをフロー検出部220に入力することにより、動き情報520を取得する(ステップS105)。この時点におけるフレームt−1は、ステップS102で取得されたフレームである。
【0073】
次いで、領域情報生成部114は、位置情報510と動き情報520とを統合して、新位置情報530を生成する(ステップS106)。次いで、領域情報生成部114は、生成された新位置情報530に基づいて、領域情報540を生成する(ステップS107)。次いで、領域情報生成部114は、フレームtから、領域情報540により示される領域531により示される領域の画像550を抽出する(ステップS108)。
【0074】
次いで、訓練部115は、フレームtをモデル211に入力することにより、ラベルとして取得されたクラスの位置情報510を取得する(ステップS109)。次いで、訓練部115は、取得された位置情報510に基づいて、領域情報570を生成する(ステップS110)。次いで、訓練部115は、フレームtから、領域情報570により示される領域561の画像580を抽出する(ステップS111)。
【0075】
次いで、訓練部115は、抽出された画像550をモデル240に入力することにより、特徴情報590を取得する。また、訓練部115は、抽出された画像580をモデル260に入力することにより、特徴情報600を取得する。(ステップS112)。次いで、訓練部115は、特徴情報590と特徴情報600との間の誤差610を算出する。(ステップS113)。次いで、訓練部115は、算出された誤差610を逆伝搬することにより、モデル240、260及び211の重み及びバイアスを更新する(ステップS114)。なお、説明の便宜上、一フレームごとに重みが更新されているが、例えば所定数のフレームを含むバッチごとに又は動画データごとに重みが更新されてもよい。
【0076】
次いで、訓練部115は、取得された動画データの中に、フレームt+1があるか否かを判定する(ステップS115)。フレームt+1がある場合(ステップS115:YES)、処理はステップS104に進む。一方、フレームt+1がない場合(ステップS115:NO)、訓練部115は、訓練データの中に次の動画データがあるか否かを判定する(ステップS116)。次の動画データがある場合(ステップS116:YES)、フレーム取得部111は、訓練データから、次の組の動画データ及びクラスのラベルを取得して(ステップS117)、処理はステップS102に進む。一方、次の動画データがない場合(ステップS116:NO)、訓練部115は、学習を終了させるか否かを判定する(ステップS118)。例えば、予め設定されたエポック数に相当する回数学習が実行された場合、訓練部115は、学習を終了させると判定してもよい。或いは、訓練部115は、テストデータを用いてオブジェクトの検出を行うことにより、誤差610を算出してもよい。訓練部115は、算出された誤差610の平均値が所定値未満である場合、学習を終了させると判定してもよい。学習が終了しない場合(ステップS118:NO)、処理はステップS101に進む。学習が終了する場合(ステップS118:YES)、学習処理は終了する。
【0077】
図9は、画像処理装置1のシステム制御部11及びGPU18によるオブジェクト検出処理の一例を示すフローチャートである。
図9に示す処理例は、撮像部20により撮像される動画からリアルタイムでオブジェクトを検出する場合の処理例である。例えば、
図8に示す学習処理による学習が完了したモデル211を用いて、オブジェクト検出処理が実行される。システム制御部11及びGPU18は、オブジェクト検出用のプログラムに含まれるプログラムコードに従って、オブジェクト検出処理を実行する。例えば、システム制御部11からの指示に基づいて、撮像部20による動画の撮像が開始されたとき、オブジェクト検出処理が実行されてもよい。
【0078】
図9に示すように、フレーム取得部111は、フレーム番号tを0に設定する(ステップS201)。次いで、フレーム取得部111は、フレーム番号tを1増加させる(ステップS202)。次いで、フレーム取得部111は、撮像部20から、最新のフレームを、フレームtとして取得する(ステップS203)。
【0079】
次いで、フレーム取得部111は、フレーム番号tが1より大きいか否かを判定する(ステップS204)。フレーム番号tが1より大きくはない場合(ステップS204:NO)、処理はステップS202に進む。
【0080】
一方、フレーム番号tが1より大きい場合(ステップS204:YES)、位置情報取得部112は、フレームt−1をモデル211に入力することにより、位置情報510を取得する(ステップS205)。ここで、位置情報取得部112は、モデル211から出力される識別結果に基づいて、一又は複数のクラスそれぞれに対応する位置情報510を取得する。
【0081】
次いで、動き情報取得部113は、フレームt−1及びフレームtをフロー検出部220に入力することにより、動き情報520を取得する(ステップS206)。
【0082】
次いで、領域情報生成部114は、位置情報510が取得されたクラスごとに、位置情報510と動き情報520とを統合して、新位置情報530を生成する(ステップS207)。次いで、領域情報生成部114は、新位置情報530が生成されたクラスごとに、新位置情報530に基づいて、領域情報540を生成する(ステップS208)。次いで、領域情報生成部114は、領域情報540が生成されたクラスごとに、フレームtから、領域情報540により示される領域531の画像550を抽出する(ステップS209)。
【0083】
次いで、検出部116は、画像550が生成されたクラスごとに、画像550をモデル3に入力することにより、クラス情報620を取得する。検出部116は、モデル3による識別結果に基づいて、クラス情報620及び領域情報540を出力する(ステップS210)。
【0084】
次いで、検出部116は、オブジェクト検出を終了させるか否かを判定する(ステップS211)。オブジェクト検出が終了する条件は、画像処理装置1の用途に応じて予め定められていてもよい。オブジェクト検出が終了しない場合(ステップS211:NO)、処理はステップS202に進む。一方、オブジェクト検出が終了する場合(ステップS211:YES)、オブジェクト検出処理は終了する。
【0085】
以上説明したように、本実施形態によれば、画像処理装置1が、フレームt−1及びフレームtを取得する。また、画像処理装置1が、モデル211にフレームt−1を入力して、フレームt−1上の位置であって、フレームt−1内のオブジェクト100の識別に影響を与える位置を示す位置情報510を取得する。また、画像処理装置1が、フレームt−1及びフレームtに基づいて、フレームt−1内におけるオブジェクト100の動きを示す動き情報520を取得する。また、画像処理装置1が、取得された位置情報510及び動き情報520に基づいて、フレームt−1上の領域であって、オブジェクト100が存在する位置に対応する領域を示す領域情報540を生成する。従って、位置情報510及び動き情報520に基づいて、オブジェクト100が存在する位置に対応する領域を示す領域情報540が生成される。位置情報510は、フレーム画像内のオブジェクト100の識別に影響を与える位置を示す。従って、位置情報510は、そのオブジェクト100が存在する場所のうち、少なくともある程度の範囲の場所を示す蓋然性がある。動き情報520は、そのオブジェクト100の動きを示す。従って、そのオブジェクト100が動いている場合、動き情報520は、そのオブジェクト100が存在する場所全体を少なくとも示す蓋然性がある。そのため、これらの情報を用いて領域情報540を生成することで、画像においてオブジェクト100が存在する位置に対応する領域を精度よく特定することができる。
【0086】
ここで、画像処理装置1が、位置情報510と動き情報520とを統合することに基づいて、領域情報540を生成してもよい。この場合、位置情報510と動き情報520との統合により、フレーム画像において、動きがある複数の範囲のうち、オブジェクト100の識別に影響を与える位置に対応する範囲が特定される。従って、オブジェクト100が存在する位置に対応する領域を精度よく特定することができる。
【0087】
ここで、画像処理装置1が、フレームt−1における各位置について、オブジェクト100の移動方向及び移動距離を示す動き情報520を生成てもよい。また、画像処理装置1が、位置情報510と動き情報520とを、位置ごとに足し合わせることにより、領域情報540を生成してもよい。この場合、オブジェクト100の識別に影響を与える位置が、その位置における移動方向及び移動距離で変更される。
【0088】
また、画像処理装置1が、フレームtのうち、取得された領域情報540により示される領域の画像550を、画像内のオブジェクト100を識別するモデル3に入力することにより、フレームtのオブジェクト100を検出してもよい。この場合、フレーム画像において、生成された領域情報540により示される領域に対応する画像550が、その画像内のオブジェクト100を識別するモデル3に入力される。従って、フレーム画像内のオブジェクト100がこのモデル3により識別される。また、領域情報540により、そのオブジェクト100の位置に対応する領域531が示される。従って、フレーム画像内のオブジェクト100を精度よく検出することができる。また、精度の高い領域情報540が自動的に生成されるので、人間による領域情報のアノテーションを必要とする
機械学習なくして、オブジェクト100の検出が可能である。
【0089】
また、画像処理装置1が、生成された領域情報540に基づいて、モデル211を訓練してもよい。この場合、自動的に生成された領域情報540に基づいて、モデル211が訓練されるので、オブジェクト100の位置に対応する領域531を特定するための機械学習のために、人間による領域情報のアノテーションが不要となる。
【0090】
ここで、画像処理装置1が、モデル211に更にフレームtを入力して、フレームt上の位置であって、フレームt内のオブジェクト100の識別に影響を与える位置を示す第2位置情報560を取得してもよい。また、画像処理装置1が、フレームtから、取得された領域情報540により示される領域531の画像550を抽出してもよい。また、画像処理装置1が、取得された第2位置情報510に基づいて、フレームt上の領域560であって、オブジェクト100の識別に影響を与える位置に対応する領域560を示す領域情報570を生成してもよい。また、画像処理装置1が、フレームtから、取得された領域情報570により示される領域561の画像580を抽出してもよい。また、画像処理装置1が、取得された画像550及び画像580に基づいて、モデル211の重みを更新してもよい。位置情報510により示される位置であって、フレームt−1においてオブジェクト100の識別に影響を与える位置が、動き情報520により示される動きで変更される場合、変更後の位置は、フレームtにおいて、オブジェクト100の識別に影響を与える位置に対応するものと考えられる。そのため、画像550及び画像580を用いることで、モデル211を適切に訓練することができる。
【0091】
ここで、画像処理装置1が、抽出された画像550の特徴を取得してもよい。また、画像処理装置1が、抽出された画像580の特徴を取得してもよい。また、画像処理装置1が、取得されたこれらの特徴に基づいて、モデル211の重みを更新してもよい。領域情報570は、フレームtにおいて、オブジェクト100の識別に影響を与える位置に対応する領域を示す。従って、その領域から抽出された画像580の特徴は、検出される対象となるオブジェクト100の特徴を示す。そこで、例えば、画像550の特徴と画像580の特徴とが互いに近づくように、重みが更新されることにより、モデル211を適切に訓練することができる。
【0092】
また、位置情報510は、クラスアクティベーションマップの少なくとも一部であってもよい。
【0093】
また、動き情報520は、オプティカルフローであってもよい。
オブジェクト領域特定装置は、時間的に連続する第1フレーム画像及び第2フレーム画像を取得する。オブジェクト領域特定装置は、画像内のオブジェクトを識別するモデルに第1フレーム画像を入力して、第1フレーム画像上の位置であって、第1フレーム画像内のオブジェクトの識別に影響を与える位置を示す位置情報を取得する。オブジェクト領域特定装置は、第1フレーム画像及び第2フレーム画像に基づいて、第1フレーム画像内におけるオブジェクトの動きを示す動き情報を取得する。オブジェクト領域特定装置は、取得された位置情報及び動き情報に基づいて、第1フレーム画像上の領域であって、オブジェクトが存在する位置に対応する領域を示す領域情報を生成する。