(第1の実施形態)
本実施形態は、複数の同一物体が整列して配置されているシーンの画像を撮像し、対象物体の輪郭情報と画像中の物体類似領域とに基づいて物体一つひとつの領域を取得し、ロボットによって対象物体をピッキングする例について説明する。物流倉庫で管理されている製品やスーパーマーケット等で陳列されている多様な商品群をロボットでピッキングする場合、対象物体の幾何形状やテクスチャ情報等の物体モデル(具体的にはCADモデル等)が必要とされる。しかし、物体毎にモデルを用意することは物体の種類が非常に多い為困難である。また、整列した複数の物体を撮像した画像から取得される画像特徴からは、物体1つ分の画像特徴の集合を抽出することが困難である。複数の物体を1単位とした画像特徴の集合が多数取得されるためである。画像特徴の集合の数が多いほど物体1つ分の画像特徴の集合である可能性は高いが、それのみで物体1つ分の領域を推定することは難しい。複数を1つと推定してしまうこともあれば、1つ単位の大きさは正しいが、境目が間違ってしまうこともあるためである。
本実施形態では、物体モデルを用いることなく、同一物体が複数整列して配置されているという知識を示す少なくとも2種類の画像特徴を用いる。ひとつは、輪郭情報である。輪郭情報は、予め画像から物体の輪郭を抽出するよう学習済みのモデルから取得される情報である。これによって、物体1つ分の単位についての知識を得る。もうひとつは、ニューラルネットワークから得られる画像特徴である。輪郭情報には、認識対象である物体以外の、例えば棚の柱や段ボールの輪郭が抽出される可能性がある。また、輪郭が必ずしも正確に得られるとは限らない。物体と背景の境界が曖昧な場合や、物体と物体の境界が曖昧な場合もある。例えば、物体と背景の色やテクスチャが全く異なる場合は簡単に境界を見つけやすいが、物体と背景が同じような色やテクスチャである場合には、境界がわかりづらい。物体と物体が密着して整列している場合にも、境界が見つけにくい。この場合、輪郭がいくつの物体を示しているかについての情報は得られない。したがって、輪郭情報から物体1つ分の領域を推定するには不確かな要素が残る。そのため、2つの画像特徴を補完的に用いることによって、ユーザーが手間をかけずに、物体1つ分の領域を推定する。これらの画像特徴を用いて、物体一つひとつの領域を特定し、その情報をもとに、ロボットが対象物体をピッキングすることができる。また、入力画像をユーザーによって編集する手間をかけずに、物体1つ分の領域をロボットが推定できる。
本発明にかかる実施形態を説明するのに先立ち、用語の定義について説明する。
輪郭とは、物体1つ分の領域を囲む線を指し、画像においては背景と前景にある物体1つ分の領域との境界線である。情報処理によって輪郭を求める場合には、通常、隣接画素間の輝度変化が大きい領域が輪郭の候補となる。物体と背景との色が類似している場合は境界が曖昧になる可能性がある。また、密に隣接する物体同士は境界が曖昧になる可能性がある。
輪郭マップ(第1画像)とは、画像から物体1つ分の輪郭と推定された境界を可視化した画像である。輪郭マップは、少なくとも物体群と背景との境界を示す。入力された画像と同じ解像度で、画像の各画素には輪郭らしさを表す0から1までの値が保持されている。輪郭マップは、画像から物体1つ分の領域を推定するのに用いる。輪郭マップの生成方法は後述する。
画像特徴マップとは、カラー画像からテクスチャやエッジなどの画像特徴を抽出した画像である。マップの各画素に対応して特徴として多次元ベクトルが保持されている。画像特徴マップは、整列された物体群から繰り返し現れるパターンを抽出するのに用いる。画像特徴マップの生成方法は後述する。
特徴クラスタマップとは、図5に示すような、画像特徴マップを特徴の類似度に基づいてクラスタリングした画像である。マップの各画素にはクラスタのIDが保持されている。特徴クラスタのIDが同じ画素は、類似した特徴が得られていることを示す。またIDの数は後述する分割数に等しい。例えば、図1の符号17のように、棚の上に1列3個ずつ2列分物体が整列された画像からは、各物体を表す特徴クラスタや、隣り合う物体間の隙間を表す特徴クラスタ、2列を隔てる棚を表す特徴画像特徴が得られる。そのため、例えば、図1の符号17で分割数3の場合を例にすると、3つのクラスタIDからなる図5の画像特徴マップが得られる。特徴クラスタマップの生成方法は後述する。
特徴ラベル画像(第2画像の候補)とは、図6に示すような、特徴クラスタマップのクラスタごとに分割された領域をラベリングした画像である。各クラスタについて特徴ラベル画像を生成する。特徴ラベル画像の数はクラスタの数と等しくなる。特徴ラベル画像の生成方法は後述する。
物体領域スコアとは、各特徴ラベル画像(第2画像の候補)について、物体1つ分の領域らしさを表す値である。つまり、特徴ラベル画像から物体の1つ分の領域と対応する画像特徴を有する画像を選ぶために、特徴ラベル画像ごとに所定のルールに基づいて物体領域スコアを付与する。所定のルールとは、例えば、クラスタリングされた画像特徴の集合の数が大きいほど大きくする。この物体領域スコアが最大スコアとなる特徴ラベル画像を第2画像として決定する。スコアの算出方法は、後述する。
物体領域とは、輪郭マップ(第1画像)と決定された特徴ラベル画像(第2画像)とを用いて、物体1つ分の領域を推定した画像である。図8に物体領域を示す。異なる色で分離された領域が物体1つ分の領域であり、図8には6つの物体が確認できる。第2画像から得られる画像特徴の集合を、第1画像から得られる輪郭まで拡張することによって物体1つ分の領域を表す。複数の物体が一つひとつ分離して識別可能になっている。
以下、本発明にかかる実施形態の情報処理装置を詳細に説明する。
図1は、本実施形態に係る情報処理装置10を備える情報処理システム1の構成例を示す図である。情報処理システム1は撮像装置11、ロボット15、情報処理装置10からなる。撮像装置11は対象とするシーン17を撮像して、画像を情報処理装置10に送る。本実施形態における対象とするシーンとは、複数の同一物体が整列して配置されているシーンである。また、対象とするシーン内の複数の同一物体を対象物体として扱う。情報処理装置10は対象とするシーン17から対象物体18を一つひとつ分離して識別できる処理を行い、ロボット制御部164に対象物体を一つひとつに分離した情報を送る。ロボット制御部164はロボット15と接続されており、対象物体18をロボット15で把持するための制御を行う。また、撮像装置11はロボット15のアームに固定されているものとする。また、撮像装置11の座標系からロボット15への座標系への変換行列は、事前にキャリブレーションによって求めておく。なお、撮像装置11と情報処理装置10は無線で接続されており、通信によって画像や制御情報を送受信することができる。有線によって接続されていてもよい。また、ロボット15を経由して接続されていてもよい。
図2は、本実施形態に係る情報処理装置10を備える情報処理システム1の機能構成例を示す図である。同図に示すように、本実施形態における情報処理装置10は、撮像装置11と輪郭抽出モデル記憶部162、画像特徴抽出モデル記憶部161、位置姿勢決定部163、およびロボット制御部164と接続されている。さらに、ロボット制御部164はロボット15と接続されている。
撮像装置11は、複数の対象物体が整列しているシーン17を2次元カラー画像として撮像する装置である。具体的には、カラーカメラである。
輪郭抽出モデル記憶部162は、学習済みの輪郭抽出モデルを記憶しておく装置である。輪郭抽出モデル(第1学習済みモデル)とは、深層学習によって学習されたネットワークで、例えば、CNN(Convolutional Neural Network:畳み込みニューラルネットワーク)を用いる。このCNNは、予め人が物体の輪郭部分を真値として入力したカラー画像(輪郭情報)を教師データとして学習済みであるものとする。学習時には、様々な物体を撮像した画像群を入力し、夫々の画像における物体の輪郭情報を出力とし、予め用意した真値と比較することで学習させる。例えば、動物やインテリア等の一般物体を撮像した画像に対しては、一般物体と背景との境界部分である輪郭をユーザーが入力して教師データを用意する。本実施形態で認識させるような、同じ物体が整列して写った画像についても、ユーザーが物体と物体を隔てる影や隙間を輪郭として入力する。このようにユーザーが物体の輪郭を教示することで、人間が物体の輪郭として認識できる境界をニューラルネットワークに教示することができる。物体内部のテクスチャには特に真値を与えないことで、背景と前景物体との境界である輪郭に対して強く反応するようにモデルを生成する。物体1つ分の領域を囲む輪郭を示す画像特徴を学習することによって、物体同士が密に整列されている状況においても、物体2つを1単位として誤認識することなく、物体同士をひとつひとつ分離して認識できる。また、物体以外の情報(例えば、棚や段ボールの大きさに関する情報)が無くても、物体1つ分の領域を学習できる。なお、学習済みモデルとは、入力画像から入力画像に対応する結果を出力するニューラルネットワークに基づくネットワーク構造とそのパラメータである。
画像特徴抽出モデル記憶部161は、画像特徴抽出モデルを記憶しておく装置である。画像特徴抽出モデル(第2学習済みモデル)とは、1つ以上の画像特徴を出力するCNNである。CNNは入力された画像に対して畳み込み処理を繰り返し行うことで画像特徴マップを取得する。また、複数回の畳み込み処理を行うことで、畳み込み処理毎に受容野の異なる画像特徴マップが取得される。取得される画像特徴マップは、CNNによって、夫々の畳み込み処理で取得される画像特徴マップのいずれでもよい。あらかじめ設計者が決めておいた畳み込み処理層(例えば10回畳み込み処理後)の画像特徴マップを取得してもよい。取得された複数の画像特徴マップを組み合わせて得られた画像特徴マップでもよい。特徴マップの組み合わせは、複数の画像特徴マップの解像度をある所定の解像度(例えば画像のサイズ)に変換した後、複数の画像特徴マップにおける画素間の(中央値のような)代表値を選択してもよい。夫々の画像特徴マップに渡る統計値(全体の平均や分散)を求めてもよい。夫々の画像の統計値の平均を用いてもよい。取得された画像特徴マップは特徴ラベル画像生成部160と決定部170へ出力する。画像特徴をニューラルネットワークから取得するメリットとして、物体が球体や円柱である場合、すべての物体が同じ面を向けて整列していなくても物体1つ分の領域を推定できることがある。画像特徴をエッジ検出等のルールベースで取得する場合、球体や円柱の表面のテクスチャ(具体的には柄プリントやラベル等)の向きを揃えて画像特徴を取得する必要がある。球体や円柱の表面のテクスチャから得られる画像特徴は、物体の回転によって位置が異なる可能性が有る為である。本実施形態の手法では、球体や円柱が回転した状態で配置される状況においても、必要な画像特徴を抽出しうる。加えて物体の外形を輪郭情報によって識別できる。ニューラルネットワークから得られる画像特徴は、ニューラルネットワークの学習の段階で一般画像認識に必要な画像特徴を多面的に学習しており、ルールベースで得られる画像特徴よりロバストであるためである。
位置姿勢決定部163は、撮像装置11の撮像時の位置姿勢を決定する。対象シーンに合わせて位置と姿勢を決定する。本実施形態では、整列された物体すべてが同じ大きさかつ同じ向きを向いている状態になるよう撮像位置を決定する。
ロボット制御部164はロボット15に対する制御を行う。ロボット15はロボット制御部164から制御され、動作する。本実施形態では、物体を1つずつピッキングするロボットを説明する。
情報処理装置10は、以下の構成要素により構成される。画像取得部110は、撮像装置11によって複数の物体を並べたシーンを撮像した入力画像を取得する。入力画像は撮像装置11から情報処理装置10に入力される。輪郭抽出モデル取得部120は、輪郭抽出モデル記憶部162から情報処理装置10に入力される輪郭抽出モデルを取得する。画像特徴抽出モデル取得部130は、画像特徴抽出モデル記憶部161から情報処理装置10に入力される画像特徴抽出モデルを取得する。輪郭取得部140は、輪郭抽出モデルに基づいて入力画像から物体の輪郭を示す画像特徴を抽出した輪郭マップ(第1画像)を取得する。取得した輪郭マップは決定部170と特定部180に送られる。画像特徴抽出部150は、画像特徴抽出モデルに基づいて入力画像から多様な画像特徴を抽出した画像特徴マップを抽出する。抽出した画像特徴マップは特徴ラベル画像生成部160と決定部170に送られる。特徴ラベル画像生成部160は、画像特徴マップから画像特徴量の類似性に基づいてクラスタリングを行い、画像特徴ごとの集合を示す特徴クラスタマップを生成する。さらに、特徴クラスタマップごとにクラスタリングしたクラスタごとに領域をラベリングした特徴ラベル画像を生成する。生成した特徴ラベル画像群は決定部170に送られる。決定部170は、画像特徴マップと輪郭マップに基づいて、特徴ラベル画像ごとに物体1つ分の領域らしさを表すスコアを取得する。そして最大スコアとなる特徴ラベル画像を第2画像として決定する。得られた第2画像は特定部180に送られる。特定部180は、第2画像と輪郭マップ(第1画像)とに基づいて、境界(輪郭)の周辺まで第2画像の画像特徴群を基準とした部分領域を領域拡張することによって、物体1つ分の領域を示す物体領域を推定する。推定された物体領域はロボット制御部164に送られる。
ロボット制御部164では、物体領域を受け取り、画像内から把持するべき対象物体18を特定し、ロボット15が対象物体18を把持するために必要な制御パラメータを求める。ロボット制御部164は求めた制御パラメータを用いてロボット15を動作させる。ただし、図2は、機器構成の一例であり、本発明の適用範囲を限定するものではない。
図3は、情報処理装置10のハードウェア構成を示す図である。H11はCPUであり、システムバスH18に接続された各種デバイスの制御を行う。H12はROMであり、BIOSのプログラムやブートプログラムを記憶する。H13はRAMであり、CPUであるH11の主記憶装置として使用される。H14は外部メモリであり、情報処理装置10が処理するプログラムを格納する。入力部H15はキーボードやマウス、ロボットコントローラーであり、情報等の入力に係る処理を行う。表示部H16はH11からの指示に従って情報処理装置10の演算結果を表示装置に出力する。なお、表示装置は液晶表示装置やプロジェクタ、LEDインジケーターなど、種類は問わない。H17は通信インターフェイスであり、ネットワークを介して情報通信を行うものであり、例えば情報処理装置10が取得したロボットの制御情報をロボットに出力する。通信インターフェイスはイーサネット(登録商標)でもよく、USBやシリアル通信等種類は問わない。
次に、本実施形態における処理手順について説明する。図4は、本実施形態における情報処理装置10を備える情報処理システム1の処理手順の一例を示すフローチャートである。以下の説明では、各工程(ステップ)について先頭にSを付けて表記することで、工程(ステップ)の表記を省略する。ただし、情報処理システム1は必ずしもこのフローチャートで説明するすべてのステップを行わなくても良い。以下、フローチャートは、コンピュータである図3のCPU(H11)が外部メモリ(H14)で格納されているコンピュータプログラムを実行することにより実現されるものとする。
S1010では、情報処理システム1がシステムの初期化を行う。すなわち、外部メモリH14からプログラムを読み込み、情報処理システム1を動作可能な状態にする。輪郭抽出モデル取得部120は輪郭抽出モデル記憶部162から輪郭抽出モデルを読み込み、使用可能な状態にする。画像特徴抽出モデル取得部130は画像特徴抽出モデル記憶部161から画像特徴抽出モデルを読み込み、使用可能な状態にする。さらに、撮像装置11がシーン17を撮像するために、撮像装置11の位置姿勢を位置姿勢決定部163により決定し、ロボット制御部164に入力する。位置姿勢決定部163が決定する位置姿勢は、設計者が予め固定値で決めておけばよい。ただし、撮像位置決定部163が決定する位置の決め方はこれに限るものではなく、シーン17を撮像することができれば、乱数で決定してもよい。あらかじめ設計者が決めた範囲内において乱数で決定してもよい。これら以外の方法で決定してもよい。決定した撮像位置姿勢に基づきロボット制御部164が制御情報をロボット15に入力し、ロボット15が動作する。
S1020では、ロボット15が撮像位置姿勢となった後に、撮像装置11が複数の同一種類の物体が整列されたシーン17を撮像し、撮像された画像を画像取得部110へと出力する。ここで撮像される画像はカラーの2次元画像である。撮像される画像は対象物体18を複数含むシーン17である。複数の対象物体18は同じような見え方で撮像されていることが望ましい。例えば、複数の面からなる物体であれば同じ面が撮像装置11から見えている等である。つまり、対象物体18は撮像装置1に同じ方向を向いた状態で並べられている。また、複数の対象物体18は同じような距離離れた地点から撮像されていることが望ましい。例えば、撮像された画像中で、複数の対象物体18の撮像された面積の大きさがほぼ等しい等である。
S1030では、画像取得部110が、撮像装置11が撮像した画像を取得する。そして、取得した画像を輪郭画像取得部140と画像特徴抽出部150へと出力する。
S1040では、輪郭画像取得部140が、輪郭抽出モデルに基づいて、入力画像から物体の輪郭を示す画像特徴を抽出した輪郭画像を取得する。輪郭画像は、少なくとも少なくとも物体群と背景との境界を示す。すなわち、輪郭抽出モデル(第1学習済みモデル)は入力画像を入力として、物体1つ分の輪郭を示す画像特徴を出力結果とする。S1010において読み込まれた輪郭抽出モデルに対して画像を入力することで、画像と同サイズの輪郭マップが取得される。輪郭マップにおける各画素は輪郭尤度の値を有する。輪郭尤度の値は、例えば0から1の間の数値で表現され、輪郭である確率が高いほど大きい値で表現される。抽出された輪郭マップは決定部170と特定部180へと出力する。
S1050では、画像特徴抽出部150が、画像特徴抽出モデルに基づいて、入力画像から、物体が整列されて配置されることによって構成される画像特徴を画素ごとに抽出した画像特徴マップを取得する。入力画像を画像特徴抽出モデル(第2学習済みモデル)に入力した出力結果は、物体が整列されて配置されることによって構成される画像特徴を含む。画像特徴マップは各画素に多次元ベクトルで特徴が保持されている。また、画像特徴マップは元の画像の領域と対応付けられている。つまり、画像の左上端を(0.0,0.0)、右上端を(1.0,0.0)、左下端を(0.0,1.0)、右下端を(1.0,1.0)とする。座標を比率で表した場合に、元の画像の(x1,y1)における画像特徴は、画像特徴マップにおける(x1,y1)に保持されている。
S1060では、特徴ラベル画像生成部160が、画像特徴マップからクラスタリングと領域ラベリングによって、類似構造を有する画像特徴群を有する特徴ラベル画像を生成する。そして特徴ラベル画像を決定部170へ出力する。まず、特徴ラベル画像生成部160は画像特徴マップの各画素における多次元ベクトル特徴において、類似した特徴をクラスタリングによってクラスタ化し特徴クラスタマップ(複数の画像特徴群を示す画像)を生成する。すなわち、マップの各画素をクラスタID1番からN番までのN種類に分類する。クラスタリングする方法は階層的クラスタリングであるウォード法を用い、類似度合を計算する距離として多次元ベクトル間のコサイン距離を用いる。ただし、クラスタリング方法や距離指標はこれに限るものではない。例えば、最短距離法や群平均法などの階層的手法を用いてもよい。K−means法などの非階層的な手法を用いてもよい。距離指標としてユークリッド距離を用いてもよい。クラスタリングにおけるクラスタ分割数は、設計者が予め固定値で定めておいてもよいし、処理の中で自動的に決定されてもよい。例えば、クラスタの分割数を順に増加させながらクラスタリング処理を行い、1つのクラスタ当たりの画素数の代表値(たとえば平均値)が予め決めておいた閾値以下になる分割数を選択してもよい。1クラスタ当たりの画素数の画像に対する比率が閾値以下になる分割数を選択してもよい。図5に特徴クラスタマップの例を示す。図5は解像度が8x8の画像特徴マップをクラスタリングすることによって生成された特徴クラスタマップで、クラスタ数N=3の場合である。次に、特徴ラベル画像生成部160は、特徴クラスタマップの各クラスタに対して領域ラベリングを行うことで、画像特徴群ごとに特徴ラベル画像をN枚生成する。図6に図5の特徴クラスタマップから生成した特徴ラベル画像群の例を示す。3つの特徴ラベル画像L10、L11、L12は夫々特徴クラスタマップのクラスタID1番、2番、3番に対応する。各特徴ラベル画像において、色が異なる画素はラベルが異なることを示しており、白い画素は背景ラベルであることを示している。例えば、L10は6つのラベル領域、L11は2つのラベル領域、L12は3つのラベル領域が得られている。
S1070では、決定部170が、画像特徴マップと輪郭マップ(第1画像)に基づいて、各特徴ラベル画像に対して、物体1つ分の領域らしさを表すスコアを付与し、スコアが所定の値より大きい候補から第2画像を決定する。輪郭と一致する画像特徴群は好ましくないため、輪郭マップに基づいて少なくとも境界と一致しない画像特徴群を第2の画像として決定する。所定の値は、ユーザーが予め経験的に設定した値を用いる。ここでは、最大スコアとなる特徴ラベル画像を第2画像として決定する。ただし、特徴ラベル画像の解像度が画像取得部110で取得した画像の解像度と異なる場合には、拡大縮小などの補正を行って画像取得部110で取得した画像の解像度に合わせたものを、第2画像とする。推定した第2画像は特定部180へ出力する。第2画像は特徴ラベル画像のラベルごとに対象物体の個体を表現している。ただし、第2画像が表す領域は、画像中の対象物体の領域を過不足なく表したものではなく、対象物体領域の一部の領域だけを表しているため、次のS1080で、物体1つ分の領域を過不足なく表した物体領域を推定する。
特徴ラベル画像に対して物体領域らしさを表すスコア計算方法について説明する。物体領域らしさを表すスコアSCは次式で計算する。
SC=A×S1+B×S2+C×S3+D×S4・・・(式1)
ここで、A、B、C、DはS1、S2、S3、S4のスコアの係数である。
S1は対象物体の形状の類似性を表すスコアである。特徴ラベル画像の各ラベルが表す領域の形状が似ているほど、スコアが高くなるように計算する。例えば、まず、各ラベル領域に対して主成分分析を行って、各ラベル領域の重心と第一主成分方向、第二主成分方向が重なるように各ラベル領域を重ねる。そして、S1=(重なったラベル領域のAND領域の画素数)÷(重なったラベル領域のOR領域の画素数)としてS1を求めればよい。
S2は対象物体の特徴の類似性を表すスコアである。特徴ラベル画像におけるクラスタリングされた画像特徴同士が類似している場合に大きくする。つまり、特徴ラベル画像における各ラベル領域に対応する画像特徴マップの類似度が高いほど、スコアが高くなるように計算する。例えば、特徴ラベル画像におけるラベル領域ごとに対応する画像特徴マップの平均値を取得して、これらを各ラベル領域の特徴ベクトルとする。さらに、これらの平均値をラベル領域間の平均特徴ベクトルとして、平均特徴ベクトルと各ラベル領域の特徴ベクトルとのコサイン距離の総和を類似度のスコアS2として取得する。
S3は対象物体がなるべく小さな単位であることを期待するスコアである。特徴ラベル画像におけるクラスタリングされた画像特徴の集合の数が大きいほど大きくする。つまり、特徴ラベル画像におけるラベル領域の数が多いほど、スコアが高くなるように計算する。こうすることで、対象物体が整列して配置されている場合等に、複数の個体からなる領域を1つの個体であると誤判定してしまうことを抑制する。例えば、S3=log(ラベル領域の数)としてS3を求めればよい。
S4は輪郭マップとの整合性を表すスコアである。特徴ラベル画像におけるクラスタリングされた画像特徴が輪郭マップ(第1画像)の画像特徴と類似しない場合に大きくする。つまり、特徴ラベル画像における各ラベル領域が、対応する輪郭マップ領域において輪郭尤度が低いほど、スコアが高くなるように計算する。例えば、まず、特徴ラベル画像と輪郭マップとの解像度が異なる場合には、大きい解像度に合わせるように小さい解像度の画像を拡大補正する。そして、特徴ラベル画像の背景ラベル以外の全てのラベル領域に対応する輪郭マップの輪郭尤度の平均値を求め、S4=1−(輪郭尤度の平均値)とする。
図7に輪郭マップの例を示す。各画素に保持されている値が輪郭尤度であり、値が無い画素は輪郭尤度が0.0であることを示している。図7の輪郭マップに対して図6のL10、L11、L12の3つの特徴ラベル画像群夫々のスコアS4を計算する場合について、具体的に説明する。輪郭マップはこれらの特徴ラベル画像群と同じ解像度であるため、解像度を合わせる補正は省略する。L10における輪郭尤度の平均値は(0.0×36+1.0×1)/37≒0.027であるから、L10のS4=1.0−0.027=0.973である。L11における輪郭尤度の平均値は(0.0×1+0.5×2+1.0×14)/17≒0.882であるから、L11のS4=1.0−0.882=0.118である。L12における輪郭尤度の平均値は(0.5×5+1.0×5)/10=0.75であるから、L12のS4=1.0−0.75=0.25である。
以上のように特徴ラベル画像ごとにS1、S2、S3、S4を求め、設計者が定めるA、B、C、Dの係数を用いて式1から物体領域らしさを表すスコアSCを取得する。例えば設計者は、物体領域の真値が既知のデータセットをいくつか用意して、それらに対してS1、S2、S3、S4を求め、既知の真値との差が最も小さくなるようにA、B、C、Dを調整すればよい。そして、SCが最大となる特徴ラベル画像を、元の画像の解像度に合わせて補正したものを第2画像とする。ただし、S1、S2、S3、S4の計算方法については、例示したに過ぎず、ここで述べた方法に限るものではない。
S1080では、特定部180が、第2画像と輪郭マップ(第1画像)に基づいて、画像における物体1つ分の領域を示す物体領域を特定する。つまり、輪郭マップ(第1画像)と第2画像とに基づいて、画像特徴群に対応する部分領域を基準として境界の周辺まで領域拡張することによって、入力画像における物体1つ分の領域を示す物体領域を特定する。この処理によって、輪郭が曖昧である場合や、画像特徴群が上手く分離できていない場合でも、物体1つ分の領域を特定可能になる。まず、第2画像と輪郭マップ夫々が、画像取得部110が取得した画像の解像度と異なる場合には、拡大縮小の補正によって、画像の解像度と同じ解像度にする。そして、ラベリング処理を用いて、第2画像の夫々のラベル領域を種子点として輪郭マップに対して領域を拡張することで、物体領域を求める。第2画像によって、対象物体の個数や、対象物体の大まかな分布が分かっているので、輪郭マップに基づいて、夫々の対象物体領域の範囲を推定する。すなわち、第2画像から得られる画像特徴群を、第1画像から得られる輪郭まで拡張することによって物体1つ分の領域を表すようにする。具体的には、第2画像の夫々のラベル領域を種子点として領域拡張を行い、輪郭マップの輪郭尤度が低い画素ほど、領域拡張を行いやすくする。図8に物体領域の例を示す。物体領域は、シーン17を撮像した画像に対して、対象物体18の一つひとつが存在する領域をラベルによってマッピングしたものである。図8において異なる色が塗られている領域は異なる物体領域であることを示している。ラベリング処理の方法としては、watershedアルゴリズムを用いる。ただし、ラベリング処理方法はこれに限るものではなく、領域拡張処理でもよいし、グラフカットアルゴリズムを用いてもよい。
S1090では、ロボット制御部164が、推定された物体領域に基づいて、ロボット15が対象物体18を把持する制御を行う。例えば、物体領域の中から把持する対象物体を一つ選び、その幾何重心位置と輪郭を求めることで、ロボット15のハンドで物体の輪郭両端を把握する。または、物体の幾何重心位置を吸着することで、対象物体18を把持するように、ロボット制御部164はロボット15を制御する。この時、撮像装置11の画像座標系での結果を、ロボット15の座標系に変換する変換行列を用いて、ロボット座標系で処理を行う。
以上に述べたように、第1の実施形態では、対象物体の輪郭と特徴を抽出し、画像特徴マップをクラスタリング、ラベリング処理を行い、特徴ラベル画像群を生成する。そして、スコア計算によって物体領域画像を推定する。これにより、同一種類の複数の物体が密に整列した環境においても、CADモデル等の物体に関する事前情報無しに、物体一つひとつの領域を正しく取得することができる。さらに、物体一つひとつの領域を正しく取得することで、ロボットが対象物体を誤って2個まとめて把持したり、対象物体を把持できない動作を行ったりする失敗を防ぎ、正確かつ効率よく対象物体をピッキングすることができる。
第1の実施形態では、撮像装置11はロボット15に固定されている構成について説明したが、これに限るものではない。例えば、撮像装置11はロボット15とは別に独立して三脚に固定してシーン17を撮像するようにしてもよい。その場合は、撮像装置11で撮像したシーンの座標系をロボット15の座標系に変換するための変換行列を事前にキャリブレーションによって求めておけばよい。
第1の実施形態では、画像から画像特徴マップを得る際に、画像特徴抽出モデルとしてCNNを用いて取得する例について示した。しかしながら、画像特徴マップを得る方法はCNNによる畳み込み処理に限るものではない。例えば、SIFT(Scale−Invariant Feature Transform)やORB(Oriented FAST and Rotated BRIEF)、AKAZE(Accelerated KAZE)等である。これらの特徴量を用いて画像特徴を抽出する。それらをマップ化することによって画像特徴マップとしてもよい。
第1の実施形態における図1ではロボット15は地面に固定されて用いられることを前提に説明したが、これに限るものではない。例えば、AGV(Automated Guided Vehicle)にロボット15が接続されており、移動しながらロボット15が物体をピッキングするような構成としてもよい。その場合、情報処理装置10を含む情報処理装置10もAGVに搭載されている。または、情報処理装置10は別途固定されており、撮像装置11から画像を無線によって受信し、ロボット15やAGVを制御する信号を無線によって送信してもよい。
(第2の実施形態)
第1の実施形態では、複数の対象物体が整列しているシーンにおいて、対象物体一つひとつの領域を推定することで、対象物体に関するCADモデル等の情報無しにロボットが対象物体をピッキングする例について述べた。この時、撮像された画像において、対象物体群が同じような大きさで撮像されるように、適切な位置姿勢に撮像装置を移動させてから撮像を行う必要がある。第2の実施形態では、複数の対象物体が整列しているシーンに対して、撮像装置が斜め方向から撮像する等、対象物体群が異なる大きさで撮像される場合であっても、対象物体一つひとつを分離して識別する例について述べる。
図9は、本実施形態に係る情報処理装置20を備える情報処理システム2の構成例を示す図である。図9は第1の実施形態における図1と同様の部分が多く存在するため、違いのある部分のみを説明する。情報処理システム2は撮像装置21、ロボット15、情報処理装置20からなる。撮像装置21は距離画像センサであり、対象とするシーン27を撮像して、画像と形状情報を情報処理装置20に送る。本実施形態における対象とするシーンは、複数の同一物体が整列して配置されており、対象物体28に対して斜めから見たシーンである。また、対象とするシーン内の複数の同一物体を対象物体として扱う。
図10は、本実施形態に係る情報処理装置20を備える情報処理システム2の機能構成例を示す図である。図10は第1の実施形態における図2と同様の部分が多く存在するため、違いのある部分のみを説明する。撮像装置21は、複数の対象物体が整列している状態を斜めから観測するシーン27を2次元画像および形状情報として撮像する装置である。形状情報とは、複数の同一物体が整列して配置されているシーンを撮像した2次元の距離画像のことである。距離画像は、画像における各画素に撮像装置からの距離情報が含まれる画像である。ただし、形状情報は距離画像に限るものではなく、3次元点群であってもよい。
情報処理装置20は、以下の構成要素により構成される。形状情報取得部210は、撮像装置21から情報処理装置20に入力される画像および距離画像を取得する。主平面取得部220は形状情報取得部210から画像と形状情報を取得し、シーン27における主平面を取得する。ここで、主平面とは、整列された物体を複数含む面である。例えば、図9における平面aa’bb’は、ユーザーが設定した主平面であって、画像に写っている物体すべてを含む面になっている。取得した主平面および画像と形状情報は画像補正部230に送られる。画像補正部230は主平面に関する情報と形状情報に基づいて、画像をシーン27の主平面に対して正対した視点からの見た画像に補正する処理を行う。正対した視点とは、すべての物体が同じ大きさかつ同じ面を向いた状態で見える点である。補正した画像は輪郭画像取得部140および画像特徴抽出部160へ送られる。その他の構成要素については、第1の実施形態における図2の説明と同様であるため説明を省略する。
次に、本実施形態における処理手順について説明する。図11は、本実施形態における情報処理装置20を備える情報処理システム2の処理手順の一例を示すフローチャートである。図11は図4と同様の部分が多くあるため、重複する部分についての説明は省略し、違いのある部分のみ説明を行う。
S2020では、ロボット15が撮像位置姿勢となった後に、撮像装置21が複数の同一種類の対象物体が整列されたシーン27を撮像し、撮像された画像と距離画像を形状情報取得部210へと出力する。ここで撮像されるのは、2次元画像と距離画像である。撮像される画像は図9のシーン27に示すように、対象物体28を斜めから撮像したものであり、画像上では手前の対象物体ほど大きく、奥にある対象物体ほど小さく撮像されている。また、複数の対象物体28はある面方向から見れば、どの対象物体も等しい距離に存在するように整列されていることが望ましい。
S2030では、形状情報取得部210が、撮像装置21が撮像した画像および距離画像を取得する。そして、画像と距離画像を主平面取得部220に出力する。
S2040では、主平面取得部220が、距離画像を3次元点群に変換し、3次元点群から複数の対象物体からなる主平面を取得する。距離画像は各画素(x,y)において距離値dを保持している。距離画像から3次元点の位置(X,Y,Z)に変換するには以下の式2を用いる。
X=d×r1×(x−cx)/fx
Y=d×r1×(y−cy)/fy (式2)
Z=d×r1
ここで、(cx,cy)は距離画像における画像中心座標、(fx,fy)は距離画像の焦点距離、r1は距離値dをmmの単位に変換する係数である。これらの定数は図示しないパラメータ保持部に撮像装置21に関する情報として保持されており、S2010の初期化時にパラメータ保持部から主平面取得部220が取得しておく。また、距離値dに0が保持されている画素は、距離値が得られていないことを示しているため、その画素から3次元点への変換は行わない。ここでは、距離画像を全て3次元点群に変換する例について述べたが、これに限るものではない。例えば、画像を用いて、複数の対象物体以外の領域に対応する距離画像を除外して処理を行ってもよい。例えば、背景は青く、対象物体は青ではない、ということが事前情報としてわかっている場合には、青い画素に対応する距離画像は処理しなくてもよい。
次に、主平面取得部220は3次元点群から複数の対象物体からなる主平面を取得する。複数の点群(M点)からなる3次元点群(Xi,Yi,Zi)(i=1,2,・・,M)に対して、以下の平面の式で当てはめを行う。
Z=aX+bY+c (式3)
ここで、a,b,cは平面を表す係数である。3次元点群M点のうち3点を選んで式3に代入すると、a,b,cを解くための3つの式を得ることができる。そして、得られたa,b,cを用いて次式を満たす点の数を求める。
|aX+bY+c−Z|<T (式4)
ただし、|x|はxの絶対値、Tは設計者が設定する閾値である。M点の中から3点をランダムに選んで式4を満たす点の数を求めることを一定数繰り返し行い、式4を満たす点の数が最大となった時の平面の係数a,b,cを主平面とする。得られた主平面を画像補正部230へ出力する。
S2050では、画像補正部230が、主平面に正対した位置から見た画像となるように、画像の補正を行う。補正した画像は輪郭画像取得部140および画像特徴抽出部150へ出力する。画像を補正する方法について図12の画像補正処理のフローチャートを用いて説明する。
S2051では、画像補正部230が、初期化処理によって、これから計算に用いる中心座標cpと主平面の法線ベクトルnpの取得を行う。中心座標cpは主平面上の点であり、cp=(0,0,c)で与えられる。主平面の法線npは単位ベクトルでありnp=(a,b,−1)/|(a,b,−1)|により得られる。また、補正後の画像が観測される仮想的なカメラの内部パラメータを求める。仮想カメラの内部パラメータには、撮像装置21の内部パラメータと同じパラメータを用いる。内部パラメータは焦点距離fx、fyと中心座標cx、cyからなる。
S2052では、画像補正部230が、仮想カメラの位置姿勢を取得する。まず位置については、中心座標cpから法線ベクトルnp方向に進んだ点とする。その距離は元の画像と同じ距離cとして、仮想カメラの位置vp=cp+c×npにより求める。姿勢行列Rvについては、z成分は−npとして、残りのx成分とy成分は任意の単位ベクトルとする。ただし、姿勢行列の拘束としてRvRv^tが単位行列となり、Rv^t=Rv^−1であるようにx成分y成分を決定する。ただし、X^tとX^−1はそれぞれ行列Xの転置行列と逆行列である。
S2053では、画像補正部230が、得られた仮想カメラの位置vpと姿勢Rvを用いて、撮像装置21から仮想カメラへの変換行列Pvを取得する。4x4の単位行列に対して、1行目から3行目かつ1列目から3列目の9つの要素を姿勢行列Rvで置き換える。さらに、4列目の1行目から3行目を位置ベクトルvpで置き換える。こうして得られた4x4行列の逆行列がPvである。
S2054では、画像補正部230が、画像と形状情報の対応付けを行う。つまり、3次元点群の各点に対応する画像を求め、各点に画素値(RGBの色情報)を付加して、色付きの3次元点群を求める。3次元点群が画像のどこと対応するかについては、撮像装置21における画像センサと距離画像センサとのキャリブレーション情報を用いる。
S2055では、画像補正部230が、色付き3次元点群を仮想カメラ座標へ変換する。3次元点群の座標に対して変換行列Pvを適用することで変換する。
S2056では、画像補正部230が、仮想カメラの画像座標系に変換して補正画像を得る。S2055で得られた仮想カメラ座標における色付き3次元点群を、仮想カメラの内部パラメータを用いて画像座標系に変換する。3次元座標(X,Y,Z)を内部パラメータfx、fy、cx、cyを用いて画像座標(x,y)に変換する式は以下の式5である。
x=cx+fx×X/Z,y=cy+fy×Y/Z (式5)
こうして各点を画像座標に変換して、対応する点の色を画素の値として格納することで、補正画像が得られる。補正画像の画素に対応する点が疎である場合には、バイキュービック補間などの補間法によって画素の穴を埋めて補正画像とする。
以上の処理によってS2050では画像の補正を行い、得られた補正画像を輪郭画像取得部140と画像特徴抽出部150へ出力する。
S2060以降の処理については、第1の実施形態における図4のS1040以降と同様であるため、説明を省略する。
以上述べたように、第2の実施形態では、撮像装置21が整列している対象物体に正対せず斜めから撮像する。対象物体の見た目の大きさに違いがある場合であっても、形状情報に基づいて画像を自動的に補正することによって、物体一つひとつの領域を正しく取得して、ロボットがピッキングすることができる。
(変形例)
第2の実施形態では撮像装置21は距離画像センサであるとして説明したが、これに限るものではない。例えば、撮像装置21は画像センサであり、形状情報を取得する距離撮像装置が図示しない別の装置として構成されてもよい。その場合、距離撮像装置が形状情報を取得するシーンは撮像装置21が撮像するシーン27を含む領域であることが望ましい。また、撮像装置21、距離撮像装置、ロボット15間はそれぞれキャリブレーションによって座標変換行列を求めておく。
S2050では、画像補正の方法として色付き3次元点群を変換行列によって変換する例について述べたが、補正方法はこれに限るものではない。例えば、形状情報から対象物体のシーンが略平面と見なせる場合には、ホモグラフィ変換によって対象物体に正対する補正画像を生成してもよい。
第2の実施形態では、形状情報から主平面を取得し、主平面から変換行列を求める方法について説明したが、変換行列を求める方法はこれに限るものではない。例えば、情報処理装置20に接続されたユーザーインタフェース部をさらに備え、ユーザーインタフェース部におけるユーザー入力に基づいて変換行列を生成してもよい。ユーザーインタフェース部が表示する画像に対して、ユーザーは画像補正によって正対するべき面や面の方向を指定し、それを主平面として用いてもよい。また、ユーザーは画像中から少なくとも4点の座標を指定し、補正後の座標で指定した点がどこに移動するべきかをさらに指定することで、ホモグラフィ行列を取得して、ホモグラフィ変換によって補正画像を生成してもよい。
第2の実施形態では、前処理として補正画像を生成し、補正画像を用いて輪郭抽出や画像特徴抽出を行う例について述べたが、これに限るものではない。例えば、斜めから撮像された画像であっても、第1の実施形態の図4と同様に、撮像した画像からそのまま輪郭抽出や画像特徴抽出を行ってもよい。その場合には、物体類似領域推定部においてスコア計算をする際に、形状情報に基づいてスコアを取得すればよい。具体的には、S1の計算の際には、形状情報を用いて各ラベルが表す画像上の領域に対応する3次元形状の類似度が高いほどスコアが高くなるように計算する。
第2の実施形態では、前処理として形状情報に基づいて、対象物体に正対する位置から撮像した見えの補正画像を生成する例について説明した。その他、撮像装置21の位置姿勢を実際に移動させることで、対象物体に正対する画像を撮像できる場合には、撮像装置21を移動させてもよい。その場合には、最初の撮像位置姿勢において取得した形状情報に基づいて、撮像装置21を移動させるべき位置姿勢を求め、ロボット15を制御することで、撮像装置21を移動させて、画像撮像からやり直せばよい。その場合は、以降の処理は第1の実施形態における図4と同様である。
(第3の実施形態)
第1、第2の実施形態では、対象シーンにおける対象物体一つひとつの領域を推定することで、ロボットピッキングする例について説明した。それに対して、第3の実施形態では、対象シーンにおいて対象物体がいくつ存在するか、個数を数える例について説明する。対象シーンにおける対象物体の個数を画像から取得することができれば、倉庫における在庫管理や棚卸作業等の効率を上げることができる。
図13は、第3の実施形態に係る情報処理装置30の機能構成例を示す図である。図13は第1の実施形態における図2と同様の部分が多く存在するため、違いのある物体数取得部380について説明する。物体数特定部380は第2画像を受け取り、第2画像に基づいてそのラベル数を物体数として特定する。
次に、本実施形態における処理手順について説明する。図14は、本実施形態における情報処理装置30の処理手順の一例を示すフローチャートである。図14の多くの部分は第1の実施形態における図4と同様であるため説明を省略し、違いのあるS3080について説明する。
S3080では、物体数特定部380はS1070で決定部170が出力した第2画像における各物体領域ラベルの数を特定し、その数を物体数としてシステムに出力する。さらに、第1の実施形態における特定部180と同様に、第2画像と輪郭マップに基づいて物体領域を生成する。これを表示部に表示することによって、対象物体をどのように数えて物体数を出力しているかをユーザーが確認できるようにする。
以上述べたように、第3の実施形態では、対象シーンにおける対象物体の数をカウントし、その数を確認用の物体領域画像とともに出力する。これにより、対象物体の登録等の手間無しに画像上の対象物体の数を数えることができ、倉庫における在庫管理や棚卸作業等の効率を上げることができる。
(変形例)
第3の実施形態では、決定部170が第2画像を出力するものとして説明したが、これに限るものではない。例えば、S1070において、決定部170が、スコアが最大となる場合におけるラベル領域の数を出力するようにしてもよい。その場合には、物体数取得部380は不要であり、S3080の工程も必要なくなる。ユーザーが確認するための物体領域画像は、決定部170が生成する第2画像を表示すればよい。
(その他の実施形態)
本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、データ通信用のネットワーク又は各種記憶媒体を介してシステム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。また、そのプログラムをコンピュータが読み取り可能な記録媒体に記録して提供してもよい。