以下、本発明を実施するための形態について説明する。なお、以下の実施例は開示の技術を限定するものではない。そして、各実施の形態は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
[第1の実施の形態]
<情報処理装置の構成例>
図1はデータセット作成システム10の構成例を表す図である。
データセット作成システム10は、撮像装置200とデータセット作成装置100を備える。
撮像装置200は、撮像部201を備える。例えば、撮像装置200はカメラ装置であって、撮像部201はカメラ(又はカメラの撮像部分)である。撮像部201は、対象物体を撮像し、対象物体を含む画像を生成する。撮像部201は、生成した画像を画像データ(又はRGB(Red Green Blue)データ)として、データセット作成装置100へ出力する。
なお、以下においては、画像と画像フレーム、及び画像データを区別しないで用いる場合がある。
データセット作成装置100は、データセットを作成する。データセットは、例えば、画像及び画像に関するアノテーションのことである。上述したように、データセットを用いて、機械学習による3次元(又は3D。以下、「3D」と称する場合がある。)物体検出が行われる。データセット作成装置100は、例えば、このようなデータセットを作成するための装置である。本データセット作成装置100では、深度センサなど特殊なセンサを用いることなく、入力画像を用いて、データセットを作成することが可能となっている。
図1に示すようにデータセット作成装置100は、記憶部101、自己位置推定部102、3D点群生成部103、インスタンス領域(ローカル)計算部104、3D点群グループ計算部105を備える。また、データセット作成装置100は、インスタンス領域(グローバル)計算部106と3D物体領域計算部107、アノテーション付加部108、及びデータセット生成部109を備える。
記憶部101は、撮像装置200から出力された画像データを記憶する。また、記憶部101は、各種設定値などを記憶する。
自己位置推定部102は、記憶部101から読み出した画像データを用いて、世界座標系における撮像装置200の位置及び姿勢を推定する。推定した位置及び姿勢は、例えば、3次元座標で表される。例えば、自己位置推定部102は、SLAMやMVS、SfM(Structure from Motion)などを用いて、撮像装置200の位置及び姿勢を計算することで、撮像装置200の位置及び姿勢を推定する。
SLAMは、例えば、カメラ画像の画像データを用いて、カメラの位置及び姿勢と環境の3次元情報とを同時に取得する技術である。SLAMにより、例えば、GPS信号が届かない環境においても、3次元情報を取得して、自律移動などを実現することができる。自己位置推定部102は、このうち、撮像装置200の位置及び姿勢を推定する。SLAMやMVSなどの具体的な手法は、例えば、公知の手法でよい。
自己位置推定部102は、推定した撮像装置200の位置及び姿勢を、3D物体領域計算部107へ出力する。
3D点群生成部103は、記憶部101から読み出した画像データを用いて、画像に含まれる対象物体の世界座標系における3次元点(又は3次元点群。以下では「3D点」又は「3D点群」と称する場合がある。)を生成する。例えば、3D点群生成部103は、SLAMやMBS、SfMなどを用いて、画像データから、各画像に含まれる対象物体の3D点を生成する。3D点群生成部103は、生成した3D点群を3D点群グループ計算部105へ出力する。
なお、3D点群生成部103は、3D点群を生成する際に、記憶部101から読み出した画像データから画像特徴を用いて、画像毎に2次元特徴点(又は2D特徴点。以下、「2D特徴点」と称する場合がある。)を取得する。例えば、SLAMなどでは、3次元点を生成する際に、SIFT(Scale Invariant Feature Transform)特徴やSURF(Speeded Up Robust Features)特徴などの画像特徴を用いて、各画像の特徴点を抽出している。3D点群生成部103は、このようなSIFT特徴などを利用して抽出した特徴点を、2D特徴点として抽出する。3D点群生成部103は、抽出した2D特徴点を3D点群グループ計算部105へ出力する。
インスタンス領域(ローカル)計算部104は、記憶部101から読み出した画像データを用いて、各画像に含まれる物体の境界領域を計算する。境界領域のことを、例えば、インスタンス領域と称する場合がある。また、境界によって区分けされた個々の物体のことを、例えば、インスタンスと称する場合がある。インスタンス領域は、例えば、個々の物体の領域を表す。
なお、インスタンス領域(ローカル)計算部104は、画像毎にインスタンス領域を計算する。その際、インスタンス領域(ローカル)計算部104は、各画像でインスタンス領域のラベルが一貫していない、各画像で独立したラベルのインスタンス領域を計算する。このようなスンスタンス領域のことを、例えば、インスタンス領域(ローカル)と称する場合がある。図9(B)はインスタンス領域(ローカル)の例を表す図である。図9(B)の詳細は後述する。
インスタンス領域(ローカル)計算部104は、例えば、以下のようにして、インスタンス領域(ローカル)を計算する。
すなわち、インスタンス領域(ローカル)計算部104は、記憶部101から読み出した画像データを用いて、隣接画素の画像データの差分と閾値とを比較するなどにより、画像内に含まれる物体の境界(boundary)を検出する。インスタンス領域(ローカル)計算部104は、境界検出を複数回繰り返して、画像のどの位置で境界になり易いかを学習する。インスタンス領域(ローカル)計算部104は、記憶部101に学習データを記憶する。インスタンス領域(ローカル)計算部104は、記憶部101から読み出した学習データと入力画像の画像データとを比較して、入力画像に含まれる物体の境界を検出する。そして、インスタンス領域(ローカル)計算部104は、検出した境界に対して、焼きなまし法(annealing)を用いて最適化を行い、1つの物体としての境界を作成する。インスタンス領域(ローカル)を計算する手法としては、例えば、「Trung Phan et al., “Bayesian Semantic Instance Segmentation in Open Set World”, ECCV 2018」がある。以下では、インスタンス領域(ローカル)を計算する手法のことを、例えば、インスタンスセグメンテーションと称する場合がある。インスタンス領域(ローカル)計算部104は、インスタンス領域(ローカル)内に含まれる画素の画素位置(2次元座標)を、インスタンス領域(ローカル)に付したラベルとともに計算する。インスタンス領域(ローカル)計算部104は、計算したインスタンス領域(ローカル)を3D点群グループ計算部105とインスタンス領域(グローバル)計算部106へ出力する。
図1に戻り、3D点群グループ計算部105は、3D点群をインスタンス領域(ローカル)ごとにグループ化する。具体的には、3D点群グループ計算部105は、2D特徴点を3D点群生成部103から取得し、インスタンス領域(ローカル)計算部104から取得したインスタンス領域(ローカル)を用いて2D特徴点をグループ化する。そして、3D点群グループ計算部105は、2D特徴点と対応した3D点であって、3D点群生成部103で生成された3D点を、2D特徴点をグループ化したときの画像毎のグループ数に基づいて、グループ化する。詳細は動作例で説明する。3D点群グループ計算部105は、グループ化した3D点群を、グループ毎にラベルを付したり、まとめたりして、インスタンス領域(グローバル)計算部106へ出力する。
インスタンス領域(グローバル)計算部106は、インスタンス領域(ローカル)とグループ化された3D点群とに基づいて、複数の画像で同一の物体を表すインスタンス領域を計算する。具体的には、インスタンス領域(グローバル)計算部106は、例えば、画像毎に各インスタンス領域(ローカル)に割り当てられたラベルを、画像間で同一の物体を表すラベルに変更し、変更後のラベルをインスタンス領域に割り当てる。例えば、図13(B)の例では、インスタンス領域(グローバル)計算部106は、各インスタンス領域(ローカル)に割り当てられたラベルr1~r6を、画像間で同一のラベルr1,r2へ変更し、画像間で同一のラベルr1,r2を、各インスタンス領域に割り当てる。図13(C)は割り当て後のインスタンス領域の例を表す。このような同一のラベルが割り当てられたインスタンス領域を、例えば、インスタンス領域(グローバル)と称する場合がある。インスタンス領域(グローバル)は、例えば、入力画像間で一貫したラベルが割り振られた各インスタンスを表している。
インスタンス領域(グローバル)計算部106は、例えば、インスタンス領域(グローバル)に含まれる画素の画素位置(2次元座標)とともに、インスタンス領域(グローバル)として割り当てたラベルとを、3D物体領域計算部107へ出力する。
図1に戻り、3D物体領域計算部107は、インスタンス領域(グローバル)を用いて、インスタンスごとに3D物体領域を計算する。その際、3D物体領域計算部107は、自己位置推定部102から出力された撮像装置200の位置及び姿勢の情報を利用して、3D物体領域を計算する。
インスタンス領域(グローバル)は、各インスタンス内に含まれる画素位置(2次元座標に示される)により示されるが、これを3次元領域へ復元することで、各インスタンスの3D物体領域が計算される。
3D物体領域計算部107は、例えば、視体積交差法を用いて、各インスタンスの3D物体領域を計算する。視体積交差法は、例えば、2次元画像を3次元画像に復元する手法であり、複数の視点からの2次元シルエットに基づいて、3次元画像を復元する。視体積交差法は、例えば、「Jean-Sebastien Franco, Edmond Boyer, “Efficient Polyhedral Modeling from Silhouettes”, IEEE Transactions on Pattern Analysis and Machine Intelligence (TPAMI), March 2009」に記載されている。
3D物体領域計算部107は、計算した3D物体領域に関する情報をアノテーション付加部108へ出力する。
アノテーション付加部108は、3D物体領域に対してアノテーションを付加する。この場合、利用者がデータセット作成装置100のキーボードなどを操作することで、対象となる3D物体の座標系(例えば、3D物体の3D領域と位置及び姿勢)とラベルなどを入力することで、アノテーション付加部108は、各3D物体領域に対してアノテーションを付加する。
図14(A)は、3D物体領域にアノテーションが付加された例を表す図である。例えば、アノテーション付加部108は、3D物体領域に関する情報と、アノテーションに関する情報とを、データセット生成部109へ出力する。
図1に戻り、データセット生成部109は、例えば、3D物体領域に関する情報を用いて、3D物体領域を2次元座標へ投影することで、3D物体領域とアノテーションを、アノテーション付きの2次元画像へ変換する。図14(B)はアノテーション付き画像の例を表す図である。詳細は動作例で説明する。例えば、データセット生成部109は、アノテーション付きの画像を、データセットとして、記憶部101に記憶したり、外部に出力したりする。
<動作例>
図2はデータセット作成装置100の動作例を表すフローチャートである。
データセット作成装置100は、処理を開始すると(S10)、SLAM等を利用して、撮像装置200(又はカメラ。以下、「カメラ」と称する場合がある。)の位置及び姿勢と3D点群とを推定する(S11)。
図6(A)は、入力画像に写る(又は含まれる)対象物体c1,c2の例を表す図である。例えば、対象物体c1は、段ボールなどの四角柱の物体であり、対象物体c2はドラム缶などの円柱の物体である。
図7(A)は、入力画像M1~M3の例を表す図である。図7(A)に示すように、カメラの位置及び姿勢が異なる、対象物体c1,c2を含む複数の画像が入力される。
図7(B)は、SLAM等で算出したカメラの位置及び姿勢の例を表す図である。自己位置推定部102は、記憶部101から読み出した入力画像の画像データに対して、SLAM等を用いて、世界座標系(3次元座標)で表されたカメラの位置及び姿勢を算出する。
図7(C)は、対象物体c1,c2に対する3D点群の例を表す図である。例えば、3D点群生成部103は、記憶部101から読み出した入力画像の画像データに対して、SLAM等を用いて、図7(C)に示すような世界座標系(3次元座標)で表された3D点群を生成する。
図7(D)は、2D特徴点の例を表す図である。例えば、3D点群生成部103は、SLAMの計算を行う際に、SIFT特徴により特徴点の算出を行うが、2次元座標系(カメラ座標系)で表されたこの特徴点を、2D特徴点として、入力画像M1~M3毎に取得する。
なお、3D点と2D特徴点とは対応関係にある。図8(A)は2D特徴点の例、図8(B)は3D点群の例をそれぞれ表す図である。
例えば、3D点p11は、2D特徴点f12,f21,f31と対応し、3D点p12は、2D特徴点f11,f22,f32と対応する。3D点群生成部103は、例えば、以下のようにして対応関係を記憶部101に記憶する。
すなわち、3D点群生成部103は、SLAMの処理を行う際に、SIFT特徴の処理により2D特徴点f11を算出して、その後、3D点p12を算出する。そして、3D点群生成部103は、2D特徴点f11と3D点p12とを、ある領域にまとめて(或いは、あるラベルとともに)記憶部101に記憶する。
これにより、例えば、その後の処理で、記憶部101のある領域にまとめて記憶されていることから、3D点群グループ計算部105などの他の構成部分は、2つの点f11,p12が対応関係にあることを把握することが可能となる。
図2に戻り、次に、データセット作成装置100は、インスタンス領域(ローカル)を計算する(S12)。例えば、インスタンス領域(ローカル)計算部104は、記憶部101から読み出した入力画像の画像データに対して、インスタンスセグメンテーションの処理を行うことで、インスタンス領域(ローカル)を計算する。
図9(A)は入力画像M1~M3の例、図9(B)は入力画像M1~M3に対するインスタンス領域(ローカル)の例をそれぞれ表す図である。インスタンス領域(ローカル)計算部104は、上述したように、インスタンスセグメンテーションの処理を行うことで、入力画像M1に2つのインスタンスr1,r2を含むインスタンス領域(ローカル)を計算する。また、インスタンス領域(ローカル)は、インスタンスセグメンテーションの処理を行うことで、入力画像M2に2つのインスタンスr3,r4、さらに、入力画像M3に2つのインスタンスr5,r6をそれぞれ含むインスタンス領域(ローカル)を計算する。
インスタンス領域(ローカル)計算部104は、例えば、各インスタンスに含まれる画素位置と、各インスタンスに割り当てたラベルとを、インスタンス領域(ローカル)に含まれる情報として、3D点群グループ計算部105へ出力する。
図2に戻り、次に、データセット作成装置100は、3D点群のグルーピング処理を行う(S13)。
図3は3D点群のグルーピング処理の例を表すフローチャートである。図3に示す各処理は、例えば、3D点群グループ計算部105において行われる。
3D点群グループ計算部105は、3D点群のグルーピング処理を開始すると(S130)、各インスタンス領域(ローカル)Rにおいて、画像収縮処理を適用し、インスタンス領域(ローカル)RをR’に縮小する(S131)。例えば、Rは物体の境界領域を表し、R’は物体の境界領域を縮小した縮小境界領域を表している。
例えば、図9(B)に示すインスタンスr1に着目すると、インスタンスr1の境界はインスタンスセグメンテーションにより最適化されているものの、誤差が含まれている場合がある。そこで、3D点群グループ計算部105は、インスタンスr1を、インスタンスr1の中心に向けて縮小させる処理を行うことで、その誤差を補正するようにしている。具体的な処理としては、例えば、3D点群グループ計算部105は、S12で計算したインスタンスr1の領域内に含まれる画素の中心画素を算出し、その中心画素に向けて、インスタンスr1の境界に存在する画素より数画素分の画素を、インスタンス領域r’1における境界の画素とする。
なお、以下では、各インスタンスr1~r6は、画像収縮処理適用後のインスタンス領域(ローカル)R’のインスタンスとして説明する場合がある。
3D点群グループ計算部105は、縮小したインスタンス領域R’の各インスタンス内に含まれる画素の画素位置の情報を、例えば、内部メモリなどに保持し、次の処理に備える。
図3に戻り、次に、3D点群グループ計算部105は、画像の2D特徴点群Fのうち、インスタンス領域(ローカル)R’の内部に含まれる2D特徴点群F’(⊆F)を、インスタンス領域(ローカル)R’毎に抽出する(S132)。本処理では、例えば、2D特徴点をインスタンス毎にグループ化する処理が行われる。
例えば、3D点群グループ計算部105は、S131で計算したインスタンス領域(ローカル)R’に含まれる、S11で取得した2D特徴点群F’を抽出する。
図10(A)は2D特徴点(又は2D特徴点群。以下では、2D特徴点と2D特徴点群とを区別しないで用いる場合がある。)の例を表す。また、図10(B)はインスタンス領域(ローカル)R’に含まれるインスタンスr1~r6の例を表す。さらに、図10(C)は、抽出された2D特徴点群F’の例を表す図である。例えば、3D点群グループ計算部105は、以下の処理を行う。
すなわち、3D点群グループ計算部105は、画像M1において、インスタンスr1に含まれる、2D特徴点f11~f14を抽出する。ここで、インスタンスr1には、その領域に含まれる画素位置の情報が含まれる。そのため、3D点群グループ計算部105は、内部メモリからインスタンスr1に含まれる画素位置を読み出し、3D点群生成部103から取得した2D特徴点の画素位置と一致するものがあれば、インスタンスr1の領域内の2D特徴点として、その2D特徴点を抽出する。一方、3D点群グループ計算部105は、読み出したインスタンスr1の画素位置と一致する2D特徴点がなければ、インスタンスr1の領域外の2D特徴点として、その2D特徴点を抽出しないようにする。以降、3D点群グループ計算部105は、他のインスタンスr2~r6についても、各インスタンスr2~r6に含まれる2D特徴点を抽出する。
図11(A)から図11(C)は、抽出された2D特徴点の例を表す図である。図11(A)に示すように、3D点群グループ計算部105は、インスタンスr1に含まれる2D特徴点として、f11~f14を抽出する。また、3D点群グループ計算部105は、インスタンスr2に含まれる2D特徴点として、f15~f17を抽出している。さらに、図11(B)と図11(C)に示すように、3D点群グループ計算部105は、他のインスタンスr3~r6についても、インスタンスr3~r6毎に、各インスタンスに含まれる2D特徴点f21~f35を抽出する。
このとき、3D点群グループ計算部105は、インスタンスr1に属する2D特徴点f11~f14を1つのグループにグループ化し、例えば、記憶部101に記憶する。また、3D点群グループ計算部105は、インスタンスr2に属する2D特徴点f13~f17を1つのグループにグループ化し、例えば、記憶部101に記憶する。このように、3D点群グループ計算部105は、各2D特徴点f11~f35が属するインスタンス毎に、各2D特徴点f11~f35をグループ化して、記憶部101に記憶する。
なお、このようにグループ化された2D特徴点(又は2D特徴点群F’)を、例えば、2D特徴点グループと称する場合がある。
図3に戻り、次に、3D点群グループ計算部105は、3D点群全体Pのうち、2D特徴点群F’に対応する3D点群P’(⊆P)を、2D特徴点群F’毎に抽出する(S133)。本処理では、抽出された2D特徴点に対応する3D点を抽出する処理が行われる。すなわち、上述したように、2D特徴点と3D点は、例えば、記憶部101に対応して記憶される。3D点群グループ計算部105は、このような対応関係を利用して、S132で抽出した2D特徴点群F’に含まれる3D点群P’を抽出する。
図10(D)は、抽出された3D点群P’の例を表す図である。例えば、図11(A)に示すように、インスタンスr1に含まれる2D特徴点群F’は、f11~f14の4点である。この場合、2D特徴点f11は、3D点との対応関係(例えば、図8(A)と図8(B))から、3D点p12に対応する。従って、3D点群グループ計算部105は、例えば、2D特徴点群F’に属する2D特徴点f11に対応する3D点群P’として、記憶部101から、3D点p12を抽出する。同様にして、3D点群グループ計算部105は、例えば、2D特徴点群F’に属する2D特徴点f12に対応する3D点群P’として、記憶部101から、3D点p11を抽出する。以降、3D点群グループ計算部105は、同一画像Mに含まれる、各2D特徴点f13~f17についても、対応する3D点p13~p24を、記憶部101から抽出する。
また、図11(B)に示すように、インスタンスr3に含まれる2D特徴点群F’は、f21からf24の4点である。この場合、2D特徴点f21は、その対応関係(例えば、図8(A)と図8(B))から、3D点p11に対応する。従って、3D点群グループ計算部105は、例えば、2D特徴点群F’に属する2D特徴点f21に対応する3D点群P’として、記憶部101から、3D点p11を抽出する。同様にして、3D点群グループ計算部105は、例えば、2D特徴点群F’に属する2D特徴点f22に対応する3D点群P’として、記憶部101から、3D点p12を抽出する。以降、3D点群グループ計算部105は、各2D特徴点f23~f27についても、対応する3D点p13~p24を、記憶部101から抽出する。
さらに、図11(C)に示すように、3D点群グループ計算部105は、2D特徴点群F’に属する2D特徴点f31~35に対応する3D点群P’として、記憶部101から、3D点p11,p12,p22~p24を抽出する。
図12(A)は、抽出された3D点群P’の例を表す図である。以下では、抽出された3D点群を、例えば、3D点群グループと称する場合がある。
図3に戻り、次に、3D点群グループ計算部105は、3D点群P’の各3D点をノードとし、ノードのペアが属するグループの個数を重みとするエッジからなるグラフを生成する(S134)。
図12(B)は、図12(A)を3D点群P’とした場合のグラフの例を表す図である。
例えば、3D点のペアとして、p11とp12に着目する。3D点p11,p12に対応する2D特徴点は、画像M1においては、f11,f12である(例えば図11(A))。2D特徴点f11,f12の2点は、S132において、インスタンスr1に属するグループとしてグループ化された。従って、3D点群グループ計算部105は、2D特徴点f11,f12と対応する3D点p11,p12を、2D特徴点f11,f12と対応させて、1つのグループにグループ化することが可能である。
また、3D点p11,p12に対応する2D特徴点として、画像M2においては、f21,f22がある。2D特徴点f21,f22の2点は、S132において、インスタンスr3に属するグループとしてグループ化された。従って、3D点群グループ計算部105は、2D特徴点f21,f22と対応する3D点p11,12を、2D特徴点f21,f22と対応させて、1つのグループでグループ化することが可能である。
さらに、3D点p11,12に対応する2D特徴点として、画像M3においては、f31,f32がある。2D特徴点f31,f32の2点は、S132において、インスタンスr5に属するグループとしてグループ化された。従って、3D点群グループ計算部105は、2D特徴点f31,f32と対応する3D点p11,p12を、2D特徴点f31,f32に対応させて、1つのグループにグループ化することが可能である。
従って、3D点群グループ計算部105は、3D点のペアp11,p12を、3つのグループにグループ化することが可能であることから、3つのグループに属するペアと判定し,図12(B)に示すように、グループの数「3」をエッジとするグラフを作成する。
同様にして、3D点のペアp12,p13について着目すると、3D点p12,13に対応する2D特徴点は、画像M1においてはf11,f13、画像M2においてはf22,f23、画像M3においてはf32(3D点p13に対応する2D特徴点がない)がある。図11(A)~図11(C)に示すように、2D特徴点f11,f13で1つのグループ、2D特徴点f22,f23で1つのグループになっている。ただし、2D特徴点f32,f33はグループ化されていない。従って、3D点群グループ計算部105は、2D特徴点f11,f13,f22,f23,f32に対応する3D点p12,p13を、2つのグループにグループ化することが可能であることから、2つのグループに属するペアと判定し、図12(B)に示すようにグループ数「2」をエッジとするグラフを作成する。
以降、3D点群グループ計算部105は、他の3D点のペアについても、対応する2D特徴点がインスタンス領域(ローカル)R’を用いてグループ化したときの画像毎のグループ数(又は重み)をエッジとするグラフを作成する。
図12(B)においては、各3D点p11~p24がノードとなり、ノード間の数字が、例えば、3D点のペアが属するグループのグループ数を表している。例えば、3D点群グループ計算部105は、各ノードの情報と、計算したノード間のグループ数とを、記憶部101を用いて計算し、計算したこれらの情報を、グラフとして、内部メモリに記憶する。
図3に戻り、次に、3D点群グループ計算部105は、ある閾値以下の重みをもつエッジを切断してグラフを分割して、ノードグループを取得する(S135)。
図12(B)の例では、閾値を「0」とする。この場合、3D点群グループ計算部105は、「0」以下の重み又はグループ数をもつエッジを切断して、3D点p11~p14を1つのノードグループ、3D点p21~p24を1つのノードグループとする2つのグループに分割して、各ノードグループを取得する。例えば、3D点群グループ計算部105は、記憶部101から閾値とグラフを読み出し、グループ数が閾値以下となっているエッジを切断して、切断部分を境にして、各ノードグループに属する3D点を取得すればよい。
図3に戻り、次に、3D点群グループ計算部105は、同一ノードグループに属する3D点群を、一意の番号を有するグループとして定義する(S136)。例えば、図12(B)の例では、3D点群グループ計算部105は、3D点p11~p14に「g1」を割り当て、3D点p21~p24に「g2」を割り当てる。
3D点群グループ計算部105は、例えば、割り当てた一意のグループ番号と、3次元座標で表された3D点とを、3D点群グループに関する情報として、インスタンス領域(グローバル)計算部106へ出力する。このようなグループ化された3D点群P’を、例えば、3D点群グループと称する場合がある。
図3に戻り、そして、3D点群グループ計算部105は、3D点群のグルーピング処理を終了する(S137)。
このように、3D点群グループ計算部105では、画像データから画像特徴を用いて画像毎に取得した2D特徴点を、インスタンス領域を用いてグループ化する(S132)。そして、3D点群グループ計算部105は、2D特徴点と対応した3D点であって、画像データからSLAM等により計算した3D点を、2D特徴点をグループ化したときの画像毎のグループ数に基づいて、ノードグループにグループ化している(S133~S135)。
図1に戻り、次に、データセット作成装置100は、インスタンス領域(グローバル)を計算する計算処理を行う(S14)。
図4は、インスタンス領域(グローバル)計算処理の動作例を表すフローチャートである。図4は、主に、インスタンス領域(グローバル)計算部106において各処理が行われる。
インスタンス領域(グローバル)計算部106は、本処理を開始すると(S140)、各インスタンス領域(ローカル)Rにおける2D特徴点群Fに対応する3D点群P’について、P’に割り当てられているグループの中で支配的な番号をRに割り当てる(S141)。本処理では、インスタンス領域(ローカル)R’の各インスタンスに割り当てられたラベルを、画像間で同一の(又は一貫した)ラベルに変更する処理が行われる。
図13(A)は3D点群グループ、図13(B)はインスタンス領域(ローカル)、図13(C)はインスタンス領域(グローバル)の例をそれぞれ表す図である。
図13(C)に示すように、インスタンス領域(グローバル)計算部106は、各インスタンス領域(ローカル)に割り当てられたラベルr1~r6を、画像間で同一のラベルr1,r2へ変更し、ラベルr1,r2を、各インスタンス領域に割り当てる。
具体的には、インスタンス領域(グローバル)計算部106は、例えば、インスタンス領域(ローカル)に関する情報と、3D点群グループに関する情報、及び記憶部101に記憶された対応関係に関する情報に基づいて、以下の処理を行う。
すなわち、インスタンス領域(グローバル)計算部106は、インスタンス領域(ローカル)のインスタンスr1に属する3D点群グループを確認する。例えば、インスタンス領域(グローバル)計算部106は、インスタンスr1に属する2D特徴点と対応する3D点を含む3D点群グループが3D点群グループg1であることを確認する。また、インスタンス領域(グローバル)計算部106は、インスタンスr2に属する2D特徴点と対応する3D点を含む3D点群グループが3D点群グループg2であることを確認する。インスタンス領域(グローバル)計算部106は、次の画像M2においても、同様に、インスタンスr3に属する2D特徴点と対応する3D点を含む3D点群グループが3D点群グループg1、インスタンスr4に属する2D特徴点と対応する3D点を含む3D点群グループが3D点群グループg2であることをそれぞれ確認する。さらに、インスタンス領域(グローバル)計算部106は、次の画像M3においても、インスタンスr5が3D点群グループg1と対応し、インスタンスr6が3D点群グループg2と対応することをそれぞれ確認する。そして、インスタンス領域(グローバル)計算部106は、インスタンスr1,r3,r5が同一の3D点群グループg1と対応し、インスタンスr2,r4,r6が同一の3D点群グループg2と対応することを確認する。このとき、インスタンス領域(グローバル)計算部106は、インスタンスr1,r3,r5に同一のラベル「r1」を割り当て、インスタンスr2,r4,r6に同一のラベル「r2」を割り当てる。図13(C)はそのようにして割り当てた割り当て結果を表す。このようにして割り当てたラベルをもつインスタンスが、例えば、インスタンス領域(グローバル)となる。
インスタンス領域(グローバル)計算部106は、例えば、割り当てたラベルとともに、インスタンス領域(グローバル)の各インスタンスに含まれる画素位置の情報を記憶部101に記憶する。
なお、インスタンス領域(グローバル)計算部106は、ラベルの割り当てに関して、同一グループ内の2D特徴点の個数が最大となっているインスタンス領域(ローカル)に割り当てられたラベルを用いてもよい。図11(A)~図11(C)の例では、インスタンス領域(グローバル)計算部106は、同一のグループr1,r3,r5の中で、2D特徴点の個数が最も多いr1又はr3を、インスタンスr1,r3,r5に割り当ててもよい。
或いは、インスタンス領域(グローバル)計算部106は、ラベルの割り当てに関して、エッジの重みの総和が最大である2D特徴点を有する番号を、割り当てるようにしてもよい。図12(B)の例では、インスタンス領域(グローバル)計算部106は、同一のグループr1,r3,r5の中で、エッジの重みが最大となるp11,p12と対応する2D特徴点を有するr1,r3,又はr5のいずれかを、インスタンスr1,r3,r5に割り当ててもよい。
図4に戻り、インスタンス領域(グローバル)計算部106は、S141の処理を終えると、インスタンス領域(グローバル)の計算処理を終了する(S142)。インスタンス領域(グローバル)計算部106は、例えば、各インスタンスに含まれる画素位置と、割り当てたラベルの情報とを、インスタンス領域(グローバル)に関する情報として、3D物体領域計算部107へ出力する。
図1に戻り、次に、データセット作成装置100は、3D物体領域の計算処理を行う(S15)。
図5は、3D物体領域の計算処理の例を表すフローチャートである。図5は、主に、3D物体領域計算部107が行う。
3D物体領域計算部107は、3D物体領域の計算処理を開始すると(S150)、画像毎に、個別のインスタンス領域(グローバル)の遮蔽関係を計算する(S151)。
図13(D)は、遮蔽計算により計算されたインスタンス領域の遮蔽関係の例を表す図である。本処理では、3D物体領域計算部107は、インスタンス領域(グローバル)に対して、カメラ位置を原点として、カメラ位置から各インスタンスまでの距離を計算することで、各インスタンスの前後関係を明確にする処理を行う。
そのため、3D物体領域計算部107は、自己位置推定部102からカメラの位置及び姿勢の情報(3次元座標)を取得し、取得した位置及び姿勢の情報と、インスタンス領域(グローバル)に関する情報とを用いて、各インスタンスまでの距離を計算する。その際、例えば、インスタンス領域(グローバル)が2次元座標で表されているため、3D物体領域計算部107は、各インスタンスの中心座標を3次元座標に変換後に、カメラ位置から各インスタンスまでの距離を計算してもよい。或いは、3D物体領域計算部107は、インスタンス領域(グローバル)に対応する3D点群グループの重心座標とカメラ位置との距離を計算するようにしてもよい。後者の場合、3D物体領域計算部107は、例えば、3D点群グループ計算部105から3D点群グループの情報を取得して、対応する3D点群グループの重心座標を計算するようにしてもよい。
図13(D)の例では、前後関係を示すラベルが付加されている。この場合、カメラ位置から各インスタンスの中心座標までの距離が、インスタンス間で同じ場合がある。このような場合は、3D物体領域計算部107は、遮蔽関係を求めないようにしてもよい。
3D物体領域計算部107は、例えば、インスタンス領域(グローバル)の各インスタンスに含まれる画像位置とラベル、及び遮蔽関係の情報(「前」又は「後」など)を、内部メモリに記憶する。
図5に戻り、次に、3D物体領域計算部107は、画像毎に、個別のインスタンス領域(グローバル)の尤度マップを計算する(S152)。尤度マップは、例えば、各画像においてインスタンスが存在する確率を2次元座標上で表現したものである。
図13(E)は尤度マップの例を表す図である。図13(E)の上の行は、インスタンスr1に対応する画像毎の尤度マップ、下の行は、インスタンスr2に対応する画像毎の尤度マップの例をそれぞれ表している。尤度マップとは、例えば、各画素が尤度(実数値)を示す画像サイズ(幅×高さ)の2次元行列で表されたマップである。図13(E)の例では、各画素について、何かしらのインスタンス(又は物体)が存在する確率が高いときは「赤」に近い数値で表され、存在する確率が低いときは「青」に近い数値で表され、未知である場合は「緑」に近い数値で表される。
3D物体領域計算部107は、例えば、以下の処理を行う。すなわち、3D物体領域計算部107は、内部メモリから、遮蔽関係を有するインスタンス領域(グローバル)の情報を読み出し、画像毎に各インスタンスに含まれる画素を抽出する。例えば、3D物体領域計算部107は、画像M1におけるインスタンスr1に含まれる画素を抽出し、インスタンスr1内の画素は赤、インスタンスr1が存在しない領域の画素を青にした画像データ(又は尤度マップ)を生成する。3D物体領域計算部107は、同様にして、画像M1からM3までの各インスタンスr1,r2の尤度マップを生成する。この場合、前後関係によっては、他のインスタンスが遮蔽物になる場合がある。例えば、画像M1においてインスタンスr2に対して、インスタンスr1は遮蔽物になる。このような場合、3D物体領域計算部107は、遮蔽物内の画素を、「unknown」を示す緑にした画像データを生成する。
なお、3D物体領域計算部107は、尤度マップにおける各インスタンスにおいて、その境界部分の画素については、順次、虹色(又は中間の尤度)となるように、尤度マップを補間する。3D物体領域計算部107は、2D物体の境界を滑らかになるように補間している。
3D物体領域計算部107は、生成した尤度マップの情報を、例えば、内部メモリに記憶する。
図5に戻り、次に、3D物体領域計算部107は、視体積交差法により、インスタンス領域(グローバル)ごとの3D物体領域を計算する(S153)。本処理では、尤度マップから3D物体領域を検出する処理が行われる。
上述したように、例えば、「Jean-Sebastien Franco, Edmond Boyer, “Efficient Polyhedral Modeling from Silhouettes”, IEEE Transactions on Pattern Analysis and Machine Intelligence (TPAMI), March 2009」に示される視体積交差法が用いられる。具体的には、3D物体領域計算部107は、例えば、複数の尤度マップにより複数視点からシルエットが示されているため、各画素の画素位置と画素値(又は画像データ)とを用いて、視覚エッジを計算し、多角体の外枠を計算し、エッジを取り出し、頂点を抽出する処理などを行う。これにより、例えば、3D物体領域計算部107は、尤度マップから、1単位がボクセルとなっている3D物体領域を抽出することができる。
図13(F)は、尤度マップから抽出された各インスタンスの3D物体領域の例を表す図である。
なお、3D物体領域計算部107は、抽出した3次元の物体領域に対して、3D Bounding Box(3次元バウンディングボックス)や楕円体(又は3次元楕円体)を用いて、3D物体領域をさらに近似表現するようしてもよい。
図6(B)は、3D Bounding Boxと楕円体の例を表す図である。3D Bounding Boxは、例えば、四角柱の外枠部分を3次元座標(世界座標系)で表したものである。また、楕円体も、例えば、その一部又は全部を3次元座標(世界座標系)で表したものである。これらの3次元座標は、例えば、記憶部101において、3D Bounding Box又は楕円体に関する情報として記憶されている。
例えば、3D物体領域計算部107は、以下の処理を行う。すなわち、3D物体領域計算部107は、記憶部101から3D Bounding Boxや楕円体に関する情報を読み出す。3D物体領域計算部107は、読み出した情報の中から、視体積交差法により計算した3D物体領域を含む(又は最大限包含する)3D Bounding Boxや楕円体に関する情報を抽出する。これにより、例えば、視体積交差法で計算した3D物体領域に最も近似した3D Bounding Boxや楕円体を、3D物体領域として取得することが可能である。
図5に戻り、3D物体領域計算部107は、S153の処理を行うと、3D物体領域の計算処理を終了する(S154)。3D物体領域計算部107は、計算した3D物体領域に関する情報(例えば、3D物体領域に含まれる3次元座標位置など)或いは3D Bounding Boxや楕円体に関する情報を、3D物体領域に関する情報として、アノテーション付加部108へ出力する。
図2に戻り、次に、データセット作成装置100は、3D物体領域に対して座標系とラベルとを付加する(S16)。例えば、アノテーション付加部108は、ユーザにより入力された座標系(3D領域と3D物体領域の位置及び姿勢)とラベルとを、アノテーションとして、S15で計算した3D物体領域に関する情報とともに、データセット生成部109へ出力する。
図14(A)は、アノテーションが付加された3D物体領域の例を表す図である。図14(A)の例では、ラベルとして、「cup」が付加され、3D物体の位置及び姿勢、3D領域がアノテーションとなっている例を表している。
図2に戻り、次に、データセット作成装置100は、アノテーション付き画像群を取得する(S17)。
図14(B)はアノテーション付き画像の例を表す図である。例えば、データセット生成部109は、3次元座標系で表された3D物体領域を、公知の方法により、2次元座標系に変換する。図14(B)は変換後の画像の例を表している。
そして、データセット生成部109は、変換後の物体領域の情報(2次元座標系)を、記憶部101から読み出した入力画像と合成し、データセットとして、記憶部101に記憶したり、外部へ出力したりする。データセットは、アノテーションが付加された合成画像となっている。
図2に戻り、データセット作成装置100は、S17の処理を行うと、一連の処理を終了する(S18)。
以上説明したように、本データセット作成装置100は、2D特徴点をインスタンス毎にグループ化した2D特徴点グループの画像毎のグループ数を利用して、2D特徴点と対応する3D点をグループ化している(例えば図12(A)と図12(B))。具体的には、データセット作成装置100は、グループ数に応じたエッジを有するグラフを作成し、閾値以下となっているエッジを分断させることで、3D点をグループ化している(例えば図12(B))。これにより、例えば、画像特徴が少ない、すなわち、2D特徴点が少ない画像や、乱雑な環境下における画像の2D特徴点であっても、データセット作成装置100では、対応する3D点をグループ化することが可能である。そして、データセット作成装置100においては、グループ毎に3D物体検出された画像を用いてアノテーションの入力が可能となるため、作業者は、3D物体検出された画像がどのような画像であるかを容易に把握した上で、アノテーションを入力することができる。そして、データセット作成装置100では、その後、3D物体検出により検出した3D物体領域に対して、データセットを作成することが可能となる。
従って、本データセット作成装置100は、画像特徴が少ない画像や乱雑な環境の画像であっても、3D物体検出のためのデータセットを作成することが可能となる。
また、本データセット作成装置100では、画像特徴が少ない画像や乱雑な環境下における画像であっても、3D点をグループ化し、3D物体領域検出により3D物体領域を検出している。従って、本データセット作成装置100は、画像特徴が少ない画像や乱雑な環境下における画像であっても、撮像画像に含まれる対象物体に対応した3D領域を決定することができ、また、そのような画像からでも3D物体を取得することが可能である。
なお、上述した例は、各インスタンス領域Rに対して、画像収縮処理を適用して、R’に縮小した例について説明した。例えば、データセット作成装置100は、画像収縮処理を適用することなく、各インスタンス領域Rそのものを用いて、S132以降の処理を行ってもよい。この場合、データセット作成装置100は、S132においては、各インスタンス領域Rの内部に含まれる2D特徴点群Fを抽出し、S133において、2D特徴点群Fに対応する3D点群Pを抽出すればよい。
[その他の実施の形態]
図15は、データセット作成装置100の他の構成例を表す図である。図1に示すデータセット作成装置100では、撮像装置200がデータセット作成装置100の外部に設けられた例を示した。図15の例では、撮像部201がデータセット作成装置100内に設けられた例である。図15に示すように、撮像部201付きのデータセット作成装置100が用いられてもよい。
図16は、データセット作成装置100のハードウェア構成例を表す図である。
データセット作成装置100は、さらに、CPU(Central Processing Unit)120、ROM(Read Only Memory)121、RAM(Random Access Memory)122、及びメモリ123を備える。
CPU120は、ROM121に記憶されたプログラムを読み出してRAM122にロードし、ロードしたプログラムを実行して、自己位置推定部102、3D点群生成部103、インスタンス領域(ローカル)計算部104、3D点群グループ計算部105の機能を実現する。また、CPU120は、ロードしたプログラムを実行することで、インスタンス領域(グローバル)計算部106、3D物体領域計算部107、アノテーション付加部108、及びデータセット生成部109の機能を実現する。CPU120は、例えば、自己位置推定部102、3D点群生成部103、インスタンス領域(ローカル)計算部104、3D点群グループ計算部105に対応する。また、CPU120は、例えば、インスタンス領域(グローバル)計算部106、3D物体領域計算部107、アノテーション付加部108、及びデータセット生成部109に対応する。
なお、CPU120に代えて、MPU(Micro Processing Unit)やDSP(Digital Signal Processor)、FPGA(Field Programmable Gate Array)などのプロセッサやコントローラなどが用いられてもよい。また、メモリ123は、例えば、記憶部101に対応する。
なお、図16に示すデータセット作成装置100に、カメラが付加されてもよい。
以上まとめると、付記のようになる。
(付記1)
データセット作成装置におけるデータセット作成方法であって、
入力した複数画像の画像データに基づいて、各画像に含まれる物体の境界領域に関する情報を計算し、
前記画像データから画像特徴を用いて画像毎に取得した2次元特徴点を前記物体の境界領域に関する情報を用いてグループ化し、前記2次元特徴点と対応した3次元点であって、前記画像データから計算した前記3次元点を、前記2次元特徴点をグループ化したときの画像毎のグループ数に基づいて、グループ化し、
各画像に含まれる前記物体の境界領域に関する情報と、グループ化した前記3次元点とに基づいて、入力した複数画像で同一の物体を表す境界領域に関する情報を取得し、
同一の物体を表す前記境界領域に関する情報に基づいて、該境界領域毎に3次元物体領域に関する情報を計算し、
前記3次元物体領域に関する情報にアノテーションを付加してデータセットを作成する
ことを特徴とするデータセット作成方法。
(付記2)
各画像に含まれる前記物体の境界領域に関する情報に基づいて、前記境界領域を縮小した縮小境界領域に関する情報を計算し、
前記物体の境界領域に関する情報は、前記縮小境界領域に関する情報であることを特徴とする付記1記載のデータセット作成方法。
(付記3)
前記物体の境界領域に関する情報は、前記物体の境界領域内に含まれる画素位置であり、
前記2次元特徴点として表された画素位置と、前記物体の境界領域内に含まれる画素位置とに基づいて、前記2次元特徴点を、前記物体の境界領域ごとにグループ化することを特徴とする付記1記載のデータセット作成方法。
(付記4)
前記2次元特徴点は、第1及び第2の2次元特徴点を含み、
前記第1及び第2の2次元特徴点とそれぞれ対応する第1及び第2の3次元点を、前記第1及び第2の2次元特徴点をグループ化したときのグループ数が閾値より多いとき、前記第1及び第2の3次元点を1つのグループにグループ化することを特徴とする付記1記載のデータセット作成方法。
(付記5)
複数の画像の画像毎に、かつ、前記画像に含まれる前記物体の境界領域毎に、第1のラベルを割り当て、
各画像に含まれる前記物体の境界領域に関する情報と、グループ化した前記3次元点とに基づいて、入力した複数画像で同一の物体に第2のラベルを割り当て、前記第1のラベルを前記第2のラベルに変更して、前記同一の物体を表す境界領域に関する情報を取得することを特徴とする付記1記載のデータセット作成方法。
(付記6)
前記同一の物体を表す境界領域に関する情報と、前記画像データから取得した前記複数の画像を撮影したカメラの位置及び姿勢に関する情報とに基づいて、画像毎に、前記画像に複数の前記境界領域が含まれる場合に各境界領域の前後関係の情報を計算することを特徴とする付記5記載のデータセット作成方法。
(付記7)
視体積交差法を用いて、同一の物体を表す前記境界領域に関する情報に基づいて、前記境界領域毎に前記3次元物体領域に関する情報を計算することを特徴とする付記1記載のデータセット作成方法。
(付記8)
計算した前記3次元物体領域に関する情報に基づいて、前記3次元物体領域を含む3次元バウンディングボックス又は3次元楕円体に関する情報を計算し、前記3次元物体領域を前記3次元バウンディングボックス又は前記3次元楕円体とすることを特徴とする付記1記載のデータセット作成方法。
(付記9)
前記画像特徴は、SIFT(Scale Invariant Feature Transform)特徴又はSURF(Speeded Up Robust Features)特徴であることを特徴とする付記1記載のデータセット作成方法。
(付記10)
SLAM(Simultaneous Localization and Mapping)又はMVS(Multi-View Stereo)を用いて、前記画像データから前記3次元点を計算することを特徴とする付記1記載のデータセット作成方法。
(付記11)
入力した複数画像の画像データに基づいて、各画像に含まれる物体の境界領域に関する情報を計算する第1のインスタンス領域計算部と、
前記画像データから画像特徴を用いて画像毎に取得した2次元特徴点を前記物体の境界領域に関する情報を用いてグループ化し、前記2次元特徴点と対応した3次元点であって、前記画像データから計算した前記3次元点を、前記2次元特徴点をグループ化したときの画像毎のグループ数に基づいて、グループ化する3点群グループ計算部と、
各画像に含まれる前記物体の境界領域に関する情報と、グループ化した前記3次元点とに基づいて、入力した複数画像で同一の物体を表す境界領域に関する情報を取得する第2のインスタンス領域計算部と、
同一の物体を表す前記境界領域に関する情報に基づいて、該境界領域毎に3次元物体領域に関する情報を計算する3次元物体領域計算部と、
前記3次元物体領域に関する情報にアノテーションを付加してデータセットを作成するデータセット生成部と
を備えることを特徴とするデータセット作成装置。
(付記12)
データセット作成装置のコンピュータで実行されるデータセット作成プログラムであって、
入力した複数画像の画像データに基づいて、各画像に含まれる物体の境界領域に関する情報を計算し、
前記画像データから画像特徴を用いて画像毎に取得した2次元特徴点を前記物体の境界領域に関する情報を用いてグループ化し、前記2次元特徴点と対応した3次元点であって、前記画像データから計算した前記3次元点を、前記2次元特徴点をグループ化したときの画像毎のグループ数に基づいて、グループ化し、
各画像に含まれる前記物体の境界領域に関する情報と、グループ化した前記3次元点とに基づいて、入力した複数画像で同一の物体を表す境界領域に関する情報を取得し、
同一の物体を表す前記境界領域に関する情報に基づいて、該境界領域毎に3次元物体領域に関する情報を計算し、
前記3次元物体領域に関する情報にアノテーションを付加してデータセットを作成する
処理を前記コンピュータに実行させることを特徴とするデータセット作成プログラム。