図1は、一実施形態に係る学習装置及び検出装置の機能ブロック図である。学習装置1は、準備部2及び学習部3を備え、検出装置10は検出処理部11を備える。これらの全体的な処理内容は次の通りである。学習装置1は、準備部2において車載カメラで取得された映像を読み込み、管理者等のマニュアル作業等によってその種別が指定される対象(例えば、道路標識)に関する学習データをこの映像を用いて準備し、学習部3においてこの学習データを用いて学習を行うことで、遠方にある対象の認識精度が低い既存モデルを改良した改良モデルを得るものである。検出装置10では検出処理部11において、この改良モデルを用いて画像認識を行うことで、既存モデルを用いた場合よりも遠方の検出精度が向上された形で、画像における対象の検出結果を得ることができる。検出処理部11の処理内容は、後述する図3の検出部21と同様である。(検出部21及び検出処理部11では、用いるモデルのみが異なり、入力される映像又は画像に対して同様の検出処理を行う。)
図2は、コネクテッドカーのシステムの模式図である。システムSY内には、複数(ここでは例として3両だが、一般には任意の多数)のコネクテッドカーCC1,CC2,CC3が存在し、それぞれが車載カメラC1,C2,C3を搭載して走行中の映像を取得し、これら映像はネットワークNW上を伝送されてサーバSVに収集される。学習装置1ではこのようにサーバSVに収集された映像を利用して学習データを得ることができ、このサーバSVが学習装置1として機能するようにしてもよい。一方、学習装置1において車載カメラでの映像を取得する態様はこれに限らない。例えば、ネットワークNW上の伝送を介することなく、車載カメラで撮影した映像をその場で物理的な保存媒体(例えば、SSD等の半導体メモリやDVD等の光学ディスク)に記録しておき、人手による作業を介して、この保存媒体から映像を読み込むようにしてもよい。
以下、学習装置1による処理の詳細として、準備部2及び学習部3を説明する。
図3は、一実施形態に係る準備部2の機能ブロック図である。準備部2は、検出部21、識別部22及び推定部23を備える。検出部21は、図2を参照して説明した各種態様で取得可能な車載カメラ映像を読み込み、この映像の各フレームより、管理者等によって指定される所定種類の対象を検出し、映像の各フレームに検出結果としての対象の占める範囲を紐づけたものを、識別部22へと出力する。ここで、対象が未検出であったフレームに関しても、検出範囲が存在しない旨(検出に失敗した旨)を紐づけることで検出結果とし、識別部22へと出力する。
検出部21では、映像の各フレームから指定される対象を検出する際に、既に学習して構築されている物体認識手法の既存モデル(学習済パラメータ)を利用する。物体認識手法としては、SVM(サポートベクトルマシン)等の機械学習による物体認識や、各種のCNN(畳込ニューラルネットワーク)等の深層学習による物体認識など(例えばSSD、YOLOv3、Mask R-CNNなど)、任意の既存手法を用いてよく、学習済みのパラメータ(深層学習による物体認識であればネットワークの各層の重みなど)を用いて検出部21では各フレームより対象検出を行うことができる。なお、管理者等が検出部21に対して指定する検出対象の種類は、この種類の対象を当該物体認識手法により検出するように予め学習されて学習結果としてのパラメータがあるものの中から、選択して指定するものとする。
物体認識手法においては、認識すべき所定の物体の種別を指定することで、画像より物体の占める範囲(例えば矩形状の囲み枠(bounding box))と、当該物体に該当する度合い(当該物体らしさのスコア)とを得ることができる。検出部21においては、各フレームに物体認識手法を適用することで、物体らしさのスコアが判定用の閾値以上である場合には検出成功したものとしてその範囲をフレームに紐づけ、スコアがこの閾値未満である場合には検出失敗したものとして範囲をフレームに紐づけることなく、検出結果を得ることができる。
識別部22では、検出部21で得た各フレームに検出結果付与された映像より、フレーム時刻上において連続して対象検出に成功していると判定される検出成功区間と、これに隣接する区間であって、フレーム時刻上において連続して対象検出に失敗していると判定される検出失敗区間と、を識別し、識別結果の検出成功区間及び検出失敗区間を推定部23へと出力する。なお、当該出力される検出成功区間及び検出失敗区間は、データとしては映像であり、且つ、その各フレームには検出部21での検出結果としての対象の領域の情報が紐づいたものである。
識別部22では、次のようにして検出成功区間及び検出失敗区間を識別することができる。まず、検出部21から得られる映像において、一定時間(例えば5秒など)以上連続して対象の検出に成功していると判定される区間を、検出成功区間として識別する。ここで、突発的なノイズ等の影響で短時間だけ対象が未検出となる場合もありうるので、所定の閾値の短時間以内の未検出の部分は、同一の検出成功区間の途中での欠損データとして削除して扱い、識別部22の後段側にある推定部23及び学習部3では利用しないようにしてもよい。
例えば、閾値として5秒以上連続して検出成功している区間を検出成功区間とし、0.2秒以下の未検出(検出失敗)は欠損データとして扱うとする場合に、2.9秒だけ連続して検出成功した第1区間と、これに連続して0.1秒だけ検出失敗した第2区間と、これに連続して3秒だけ連続して検出成功した第3区間と、があるとすると、第1区間及び第3区間を1つの(判定閾値5秒以上である合計の長さ2.9秒+3秒=5.9秒の)検出成功区間とし、その途中で短時間(閾値0.2秒以下の0.1秒)のみ検出失敗している第2区間は欠損データとして削除するように扱ってもよい。
また、検出成功区間を識別するための、区間内部でのフレーム同士の連続性の判定においては、時間が隣接するフレーム間における検出部21での検出結果の領域の移動が閾値以下であることを条件として課してもよい。この領域移動が閾値以下であることの判定は、領域の代表位置(重心など)の移動量で判定してもよいし、隣接フレーム間で検出結果の領域の位置の重複が一定値以上であることによって判定してもよい。
以上のようにして検出成功区間を識別すると次に、識別部22では、この検出成功区間に隣接する所定長さの区間を検出失敗区間として識別する。説明のため、映像のフレーム時刻をt(t=1,2,3,…)、時刻tのフレームをF(t)とし、時刻t1≦t≦t2の範囲にある区間が検出成功区間R1={F(t)|t1≦t≦t2}として識別されたものとする。(なお、以降の説明例においても、フレーム時刻は整数として、すなわちフレーム番号として説明する。)識別部22では、この検出成功区間R1に対して、所定長さLを有し未来側で隣接している区間R2[未来]又は所定長さLを有し過去側で隣接している区間R2[過去]を、対応する検出失敗区間R2として識別する。なお、上記の定義により区間R2[未来]及び区間R2[過去]は映像のフレーム集合として以下のように書ける。
R2[未来]={F(t)|t2+1≦t≦t2+1+L} …(1)
R2[過去]={F(t)|t1-1-L≦t≦t1-1} …(2)
識別部22では、検出成功区間R1={F(t)|t1≦t≦t2}上において、各時刻tに対象が検出されている領域のサイズS(t)(面積や、縦又は横の長さなどをサイズS(t)とする)の時間変化の挙動を調べ、時間tが進むにつれてサイズS(t)が増加する挙動であった場合には、過去側の区間R2[過去]を検出失敗区間R2であるものとして識別し、逆に、時間tが進むにつれてサイズS(t)が減少する挙動であった場合には、未来側の区間R2[未来]を検出失敗区間R2であるものとして識別することができる。
この識別は、次の1つの規則にまとめることができる。すなわち、検出成功区間R1の時間軸上での両端t1,t2のいずれかのうち、区間R1上でこのいずれかの端(t1又はt2)に向かうにつれて、フレームF(t)での検出領域のサイズS(t)が減少する挙動を示していると判定される側の端に、検出失敗区間R2が隣接して存在するものとして識別する。
すなわち、車載カメラの映像の撮影状況の典型例として、車載カメラは車両前方又は後方のいずれかを向いて設置され、車両は車道を前進又は後進しているという2×2=4通りが想定されるが、いずれの場合であっても上記の手法により、対象を近接して撮影している状況にある検出成功区間R1に対応するものとして、対象を遠方で撮影している状況にある検出失敗区間R2を推定することができる。
例えば、車載カメラが車両前方を撮影するよう設置され、車両は車道を前進している場合、カメラ前方にあってカメラに撮影され、且つ、車道付近に静止している対象(道路標識等)は常に、時間が進むにつれカメラに近づく形で撮影され、一定距離以上近づくと撮影範囲(カメラの画角範囲)から消え、車両後方に移ってカメラから見えないようになる。この際、対象の大きさは、時間が進むにつれカメラに近づき、大きくなる挙動を示す。この場合、t1≦t≦t2の検出成功区間R1に対して、時刻t<t1の過去側は、対象が車両前方に存在するが遠すぎるため、撮影されているが検出失敗している状況であり、時刻t=t1は、ある程度近づいてある程度の大きさで撮影されるようになったことにより初めて検出成功した状況であり、その後の時刻t=t2は、対象が充分に近づいた後にカメラの撮影範囲から消える直前の状況である。すなわち、サイズS(t)の増加挙動より、過去側の区間R2[過去]を検出失敗区間R2として定めることができる。
その他の状況においても同様に、サイズS(t)の増減から、検出成功区間の過去側又は未来側として検出失敗区間を定めることができる。また、対象が道路標識等の静止している対象ではなく、走行中の他車両などのように、自車両に対して概ね一定の相対速度で、(すなわち、互いに頻繁に追い抜いたり追い越されたりする状況ではなく、)相対的に移動している対象の場合も同様に、サイズS(t)の増減から、検出成功区間の過去側又は未来側として検出失敗区間を定めることができる。
なお、車載カメラでの撮影状況(例えば、前方カメラで車両は前進しながら撮影している状況)が既知である場合、サイズS(t)の増減判定を行うことなく、増減判定を行った場合と同様の手法で検出失敗区間を検出成功区間の過去側又は未来側に定めるようにしてよい。
なお、識別部22では、検出成功区間R1の過去側又は未来側のいずれかに検出失敗区間R2が存在する旨を識別したが、この箇所において、式(1)又は(2)で定められるような少なくとも一定長さLで連続して対象の検出に失敗しているフレームF(t)群が存在しない場合は、ペアとしての検出成功区間R1及び検出失敗区間R2が検出できなかったものとして扱うようにしてよい。(この場合、映像上の別の箇所において、ペアとして検出できた検出成功区間R1及び検出失敗区間R2を、識別部22の後段側の推定部23での処理対象とすればよい。)ここで、一定長さLで連続して対象の検出に失敗しているフレームF(t)群の存在の判定においては、前述した検出成功区間で短時間だけ検出失敗した箇所を欠損データとして扱うのと同様の手法を適用してよい。すなわち、概ね連続して検出失敗しているが、その間に短時間だけ突発的に検出成功している場合、連続した検出失敗区間の途中の欠損データとして削除して扱うようにしてよい。
推定部23は、識別部22で得た、時間軸上で隣接することで互いに対応する検出成功区間及び検出失敗区間を用いて、検出成功区間の各フレームに対して検出部21で検出されている対象の領域の情報を利用して、検出失敗区間の各フレームについて、対象が検出されるべき領域を推定して紐づけることで学習データを得て、学習部3へと出力する。すなわち、出力される学習データは、互いに対応する検出成功区間及び検出失敗区間で構成され、検出成功区間の各フレームには検出部21で検出された対象の領域が紐づいており、検出失敗区間の各フレームには推定部23で推定された、対象が検出されるべき領域(しかしながら遠方であるため、既存モデルを用いた検出部21では未検出であった領域に相当)が紐づいている。
推定部23では、次のようにして、検出失敗区間の各フレームについての対象が検出されるべき領域を推定する。説明例として、検出成功区間を前述した区間R1={F(t)|t1≦t≦t2}とし、各フレームF(t)内で検出されている対象の領域を、対象を内包する矩形B1(t)とする。また、検出失敗区間は過去側の長さLの区間R2[過去]={F(t)|t1-1-L≦t≦t1-1}であったものとし、各フレーム内での検出されるべき領域を矩形B2(t)とする。(なお、過去側で説明するが、検出失敗区間が未来側の区間R2[未来]であっても同様に矩形B2(t)を推定することができる。)
一実施形態では、未来側の矩形B1(t)(t1≦t≦t2)の画像フレームF(t)内での位置及びサイズの時系列データに対して、時刻の所定関数によるフィッティングを行い、(例えば、1次関数として直線フィッティングを行い、)このフィッティング関数で過去側のt1-1-L≦t≦t1-1の範囲での矩形B2(t)の位置及びサイズを予測することにより、矩形B2(t)を推定してもよい。
一実施形態では、検出部21で読み込んで用いる車載カメラ映像において追加情報として、映像を撮影した各時刻tのカメラの位置C(t)の情報(実世界のワールド座標としての3次元座標C(t)の情報であり、カメラ光軸の方向の情報も含む)が、予め紐づけられているものとして、このカメラの位置情報C(t)を利用して矩形B2(t)を推定してもよい。このため、以下のように「ワールド座標(X,Y,Z)⇔カメラ座標(x,y,z)⇔画像座標(u,v)」を変換する計算を行えばよい。これらの座標変換のためのカメラパラメータは既知であるものとする。なお、カメラ位置C(t)の情報は、GPS(全地球測位システム)等の任意の既存の測位手法と方位センサ(カメラ光軸の方位を取得する方位センサ)とを用いて、車両側において映像のフレーム時刻と測位時刻を一致させて取得しておけばよい。
まず、未来側の矩形B1(t)(t1≦t≦t2)に関して、隣接フレーム画像F(t),F(t+1)間での矩形内での同一点対応を求めたうえでのステレオ視差などの既存手法を適用することで、矩形B1(t)が3次元カメラ座標系で占める矩形範囲b1(t)を求める。(ここで、対象は道路標識等のように平面形状で構成される前提で、この平面形状を囲むものとして矩形範囲b1(t)を求めればよい。)
次に、対象は道路標識等であって実世界で静止している前提のもと、そのワールド座標で占める矩形範囲b(時刻tに依存しない一定範囲b)を求める。具体的には、カメラ位置C(t)(ワールド座標)を用いて、このカメラ位置を基準として求まっているカメラ座標の矩形範囲b1(t)をワールド座標に変換した矩形b1'(t)を求め、この矩形b1'(t)のt1≦t≦t2での平均値としてワールド座標の矩形範囲bを求めればよい。(理想的には矩形b1'(t)は静止位置及び固定サイズとして時間変化しないはずだが、ノイズ等があるので、時間平均として求める。)
最後に、ワールド座標の矩形範囲b(対象の静止位置及び範囲)を、過去側の検出失敗区間R2[過去]={F(t)|t1-1-L≦t≦t1-1}の各時刻tにおいて、カメラ位置C(t)(ワールド座標)を用いて、カメラ座標での矩形範囲b2(t)に変換し、これをさらにフレーム画像内での範囲に変換し、この変換範囲をフレーム画像内で囲む矩形として、推定位置の矩形B2(t)を求めることができる。
図4は、以上の準備部2で準備される学習データの模式例を示す図である。図4では、時刻t=17~32の16フレームF(17)~F(32)で構成される検出成功区間R1と、これに対応する対応する過去側の時刻t=1~16の16フレームF(1)~F(16)で構成される検出失敗区間R2[過去]と、で学習データSD(0)が構成される例が示されている。
学習データSD(0)においては、検出成功区間R1の各フレームF(t)(t=17~32)には検出部21で検出成功した領域B1(t)が紐づいており、検出失敗区間R2[過去]の各フレームF(t)(t=1~16)には推定部23で推定された領域B2(t)が紐づいている。図4ではこれらフレームF(t)上の領域B1(t)又はB2(t)の、全時刻t=1~32うちの一部の例としてt=11,19,29の場合のフレームF(11)上の推定領域B2(11)、フレームF(19)上の検出領域B1(19)、フレームF(29)上の検出領域B1(29)が模式的なイラストとして、路上映像における道路標識の領域として示されている。これらイラストにおいては時刻tが進むにつれ、道路標識がカメラ側に近づいて映るようになっている様子が示されている。この図4の学習データSD(0)の例は以降においても適宜、共通の説明例として参照する。
学習部3は、以上のように準備部2が準備した学習データを用いて学習を行うことにより、検出部21で用いた既存モデルを改良したモデルを得る。この改良モデルは既存モデルと比べて、より遠方にある対象でも検出可能となっている点で、改良されたものである。
図5は、一実施形態に係る学習部3による学習のフローチャートである。ステップS0では、学習パラメータ(モデル)の初期値M(0)及び学習データの初期値SD(0)としてそれぞれ、検出部21で用いた既存モデル及び準備部2から得た学習データを設定したうえでステップS1へと進む。
以下、図5に示されるように、ステップS1~S6でループする処理(大ループ処理)と、この内部にさらにステップS1~S3でループする処理(小ループ処理)とが存在するが、各ステップを説明する際に、当該時点での前者の大ループ処理の回数をi(i=1,2,3…)として参照する。ステップS0からステップS1に至った時点において、この回数iは初回に該当し、i=1であるものとする。この回数iは、ステップS6からステップS1に戻った時点で、1だけ加算されてその次の値i+1となり、値が更新されるものとする。
ステップS1では、現時点(繰り返し回数i回目)の学習データSD(i-1)より、訓練画像セット、検証画像セット及び評価画像セットを選出してから、ステップS2へと進む。この際、以下の条件(1)及び(2)を満たすように、ランダムに選出すればよい。
条件(1)…訓練画像セット、検証画像セット及び評価画像セットはそれぞれ、所定数n1個、n2個、n3個の画像セットとして、相互に重複しないように、すなわち、同一の画像が訓練画像セット、検証画像セット及評価画像セットのうちの2つ以上に重複して属することがないように、学習データSD(i-1)の画像の中から選出する。
条件(2)…訓練画像セット、検証画像セット及び評価画像セットはそれぞれ、一定割合r(0<r<1)だけ失敗画像を含み、残りの割合(1-r)は成功画像を含むようにして、選出する。ここで、学習データSD(i-1)は成功画像セットD1(i-1)及び失敗画像セットD2(i-1)から構成されているので、前者よりランダムに成功画像をそれぞれ(1-r)*n1個、(1-r)*n2個及び(1-r)*n3個だけ選出し、後者よりランダムに失敗画像をそれぞれr*n1個、r*n2個及びr*n3個だけ選出することで、訓練画像セット、検証画像セット及び評価画像セットを得るようにすればよい。(ここで、選出はランダムだが、条件(1)に従い、既に選出された画像は以降の選出から除外すればよい。)なお、訓練画像セット、検証画像セット及び評価画像セットは一定割合rで失敗画像を含むのではなく、相互に必ずしも等しくない割合r1,r2,r3でそれぞれ失敗画像を含むようにして選出するようにしてもよい。
なお、図5の繰り返し回数i=1(初回)に対応する学習データSD(0)における成功画像セットD1(0)及び失敗画像セットD2(0)はそれぞれ、検出成功区間の画像セット及び検出失敗区間の画像セットとし、これらもステップS0で初期値として設定しておくものとする。
ステップS2では、ステップS1で選出した訓練画像セット及び検証画像セットを用いて学習を行い、学習により得られたモデルをステップS1で選出した評価画像セットを用いて評価してから、ステップS3へと進む。この学習及び評価は、モデルが例えばCNN等の深層学習のものである場合、以下のように行えばよい。
(学習)…既存手法により学習を行う。すなわち、訓練画像セットを用いて勾配法などにより、ネットワークパラメータとしての各層の重みを調整(訓練)することを所定回数繰り返し、得られたパラメータをモデルとして用いて検証画像セットにより、検出部21と同様の手法で検出して検証を行うことを1エポックとする。この1エポックの処理を所定回数だけ繰り返す、あるいは検証画像セットによる検証結果(検出精度)が収束したと判定されるまで繰り返すことで、最終的に得られたパラメータを学習により得られたモデルとする。
ここで、上記の学習の手法は既存手法であるが、本実施形態においては特に、次のような扱いで既存手法を適用する。すなわち、訓練画像セット及び検証画像セットは共に、成功画像及び失敗画像を含むものである。成功画像においては通常通り、紐づけられているフレーム内での対象が検出された領域を、この対象に関して検出結果であるものとして、学習の際の正解として扱う。一方、失敗画像においては、推定部23で推定された領域を、この対象に関しての検出結果であるものとして、学習の際の正解として扱うようにする。
なお、訓練画像セット及び検証画像セットはまとめて、学習(訓練及び検証)のために用いる学習画像セットを構成するものである。
(評価)…上記の訓練画像セット及び検証画像セットにおける成功画像及び失敗画像の扱いと同様にして評価画像セットを用いて、学習されたパラメータ(モデル)を評価する。すなわち、評価画像セットのうち成功画像は紐づけられたフレーム内での対象検出領域を正解とし、失敗画像は推定部23で推定された領域を正解として、学習されたパラメータにより評価画像セットより検出部21と同様の手法で検出を行い、検出精度を評価する。
ステップS3では、ステップS2で評価したモデルの検出精度と、現時点(繰り返し回数i回目)のモデルM(i-1)の検出精度と、を比較し、向上していればステップS4へと進み、向上していなければステップS1へと戻る。なお、検出精度は、F値などで評価すればよく、向上しているか否かはこの評価値の増分に対する閾値判定で判定してもよいし、評価値がわずかにでも増分(正の増分)を有すれば向上していると判定してもよい。また、比較対象となる現時点のモデルM(i-1)の検出精度は、ステップS2における評価と同様にして、共通の評価画像セット(ステップS1で選出されたもの)より算出すればよい。
ステップS4では、ステップS3で向上判定が得られたモデルを、現時点(i回目)の次の繰り返し処理(i+1回目)での比較対象としての現状モデルM(i)(=M(i+1-1))に設定することでモデルを更新してから、ステップS5へと進む。
ステップS5では、モデル更新に関して収束判定が得られたか否かを判定し、得られていればステップS7へと進み、得られていなければステップS6へと進む。この収束判定は、現時点での繰り返し回数iが一定回数に到達したことによって収束したものと判定してもよいし、ステップS4で更新して得た最新の現状モデルM(i)の、直前のモデルM(i-1)に対する向上の度合いが閾値判定で小さくなったことによって収束したものと判定してもよい。
ステップS7では、得られた一連のモデルM(0),M(1),…,M(i-1),M(i)の中から最良のモデルとしてM(i)を、学習部3による最終的結果(図1の改良モデル)として出力し、図5のフローは終了する。
ステップS6では、現時点(繰り返し処理i回目)の学習データSD(i-1)を更新して次の繰り返し処理(i+1回目)で用いる学習データSD(i)(=SD(i+1-1))を得てから、ステップS1へと戻る。この更新は、学習データSD(i-1)での成功画像セットD1(i-1)と失敗画像セットD2(i-1)の区別を更新したものとして、成功画像セットD1(i)及び失敗画像セットD2(i)からなる学習データSD(i)を得るものである。具体的には、失敗画像セットD2(i-1)の一部分である変更画像セットD3(i-1)⊂D2(i-1)を、成功画像に変更する(成功画像とみなして扱うようにする)ことで、更新を行う。すなわち、更新された成功画像セットD1(i)は更新前の成功画像セットD1(i-1)に変更画像セットD3(i-1)を追加したもの(これらの和集合)であり、更新された失敗画像セットD2(i)は更新前の失敗画像セットD2(i-1)から変更画像セットD3(i-1)を除外したもの(これらの差集合)である。和集合、差集合を取る演算を+,-で表現すると以下のように集合の式で書ける。
D1(i)=D1(i-1)+D3(i-1)
D2(i)=D2(i-1)-D3(i-1)
ここで、失敗画像から成功画像へと変更する対象となる変更画像セットD3(i-1)は、ステップS3で向上判定が得られステップS4で更新されたモデルM(i)をステップS2で学習及び評価する際に用いた、訓練画像セット、検証画像セット又は評価画像セットに含まれる失敗画像の全部又は一部、とすればよい。(訓練、検証、評価画像セットに含まれる失敗画像の全部を変更画像セットD3(i-1)としてよい。)一部とする場合、ランダムに一部分を選んだものによって変更画像セットD3(i-1)を得るようにしてもよいし、検出成功区間R1(当初の成功画像セットD1(0))に時間的に近い側から順に所定数を選んだものとして変更画像セットD3(i-1)を得るようにしてもよい。
なお、失敗画像から成功画像へと変更された場合は、元の失敗画像に対して推定部23で推定された対象の領域を、変更後の成功画像において検出部21で検出された領域であるものとみなして、図5のフローの繰り返し処理での以降のステップ(当該変更され更新されたステップS6以降のステップ)において、成功画像として扱うようにすればよい。
図6は、図5のフローの繰り返しによってモデルM(i-1)及び学習データSD(i-1)が更新される模式例を、図4の例に対応するものとして示す図である。図6では図4と同様に、成功画像は白色のフレームとして、失敗画像は灰色のフレームとして区別して示しており、図5のフローをi=1,2,3と3回繰り返すことにより、モデルが「M(0)→M(1)→M(2)→M(3)」と更新され、これに対応して学習データも「SD(0)→SD(1)→SD(2)→SD(3)」と更新される例が示されている。
図6にて、当初の学習データSD(0)では図4で説明した通り、フレームF(1)~F(16)が失敗画像セットD2(0)であり、フレームF(17)~F(32)が成功画像セットD1(0)である。i=1(繰り返し処理1回目)でモデルM(1)及び学習データSD(1)へと更新された際に、フレームF(14)及びF(16)が成功画像に変更して扱われるようになる。同様に、i=2(繰り返し処理2回目)ではフレームF(12)及びF(13)が成功画像として扱われるようになり、i=3(繰り返し処理3回目)ではフレームF(8)及びF(10)が成功画像として扱われるようになる。これらの成功画像セット及び失敗画像セットの更新は集合の式で書けば以下の通りである。
D1(1)=D1(0)+{F(14),F(16)}, D2(1)=D2(0)-{F(14),F(16)} …(i=1での更新)
D1(2)=D1(1)+{F(12),F(13)}, D2(2)=D2(1)-{F(12),F(13)} …(i=2での更新)
D1(3)=D1(2)+{F(8),F(10)}, D2(3)=D2(2)-{F(8),F(10)} …(i=3での更新)
学習部3では図5のフローによって、既存モデルでは遠方のため検出不能であった失敗画像も正解の領域を推定したうえで正解画像として扱うことにより、学習(訓練及び検証)とこの評価とをランダム選出される正解画像に対して繰り返し行い、評価によりモデルの検出精度が向上した場合に、対応する失敗画像を成功画像に扱いを変更して、さらに学習及び評価を同様にして継続する。これにより、図6に模式的に示されるように、遠方で検出不能であった失敗画像も検出可能なモデルをM(1),M(2),M(3)として、処理回数iを増やすごとにより遠方側でも検出可能となり改良されたモデルとして、更新されて取得することができる。
なお、失敗画像の中には遠方の認識精度向上に寄与し得ない状態にあるものも存在しうるが、図5のS1~S3での小ループ処理により、このような状態にある失敗画像が一定数以上選択された場合は、結果としてステップS3で否定判定が得られ、再度のステップS1において遠方認識の精度向上に寄与し得る失敗画像がランダムに選択されるのを待つこととなる。なお、以下の補足説明(3)の手法により、このような失敗画像を除外することも可能である。
以下、追加的な実施形態等に関する補足説明を行う。
(1)図5のステップS1(繰り返し処理i回目)において学習部3は、訓練、検出、評価画像を選出する対象としての失敗画像セットD2(i-1)の全体から選出するのではなく、フレーム番号が成功画像セットD1(i-1)に近い側の上位の所定数以内から選出するようにしてもよい。
例えば、図6の例で、上位の4個から選出する場合、i=1回目の学習データSD(0)に関して、失敗画像セットD2(0)=F(1)~F(16)の全部からではなく、成功画像セットD1(0)=F(17)~F(32)に近い側上位の4個であるF(16),F(15),F(14),F(13)の中から選出してよい。同様に、i=2,3,4回目の学習データSD(1),SD(2)及びSD(3)での失敗画像セットD2(1),D2(2),D2(3)の全部(前述の通り図6中において灰色で表示されるフレーム画像)からではなく、成功画像セットにフレーム番号が近い側(図6の例の場合、より未来の時刻にある側)のそれぞれ以下の上位4個から選出してよい。
失敗画像セットD2(1)に関して、F(15),F(13),F(12),F(11)
失敗画像セットD2(2)に関して、F(15),F(11),F(10),F(9)
失敗画像セットD2(3)に関して、F(15),F(11),F(9),F(7)
このように、繰り返し回数iの際に、フレーム番号が成功画像セットD1(i-1)に近い側の上位の所定数以内から失敗画像を選択するようにすることで、遠方に対象が存在する失敗画像セット全体の中でも、可能な限りカメラに近い位置にあることで、撮影されている対象のサイズが最も大きい側のものであることが想定される失敗画像を優先して学習及び評価用に選出して利用することにより、現状のモデルM(i-1)の検出精度で検出可能なサイズから極端に小さいサイズで対象が撮影されている画像を、学習及び評価に用いることを避けることが期待される。これにより、ステップS3でのモデル精度の向上判定で肯定的な判定結果を速やかに得る可能性を高め、図5のフローによるモデル精度の向上を高速化することが期待される。
(2)以上の説明では、図4の模式例のように、学習データSD(0)は1つの検出成功区間による成功画像セットと、これに対応する1つの検出失敗区間による失敗画像セットと、で構成されている場合を例として説明した。学習データSD(0)の画像数を増やすため、準備部2では1つ以上の映像を読み込んで、指定される同一種類の対象に関して、2つ以上の互いに対応する検出成功区間及び検出失敗区間の画像で構成されるものとして、学習データSD(0)(成功画像セットD1(0)及び失敗画像セットD2(0))を得るようにしてもよい。
この場合に上記の補足説明(1)の手法を適用する際は、検出失敗区間の各フレーム(失敗画像)に、対応する検出成功区間の端(検出失敗区間に隣接する側の端)のフレームとの時刻差を紐づけておき、この時刻差が小さい側の上位の所定数から失敗画像を選択するようにすればよい。
(3)学習部3によるステップS6での更新処理においては、次の追加処理をさらに行うようにしてもよい。前提として、学習部3では、失敗画像セットの各画像に対して、ステップS1にて訓練、検出、評価画像のいずれかに選択されたが、対応するステップS3で否定判定となった回数(学習又は評価するための画像として選択されたが、得られたモデルは検出精度が向上しなかった回数)をカウントして記録しておくものとする。そして、ステップS6において学習部3では、失敗画像セットの一部の画像を成功画像に変更する処理を行った後の追加処理として、失敗画像セットの各画像のうち、上記カウントして記録されている選択された回数が閾値を超えたものは、以降継続して実施されるステップS1における選択対象から除外されるよう、失敗画像セットから削除するようにしてもよい。この閾値は、図5のフローの大ループ処理(ステップS1~S6のループ処理)の回数i(あるいは、ステップS1~S3の小ループ処理の回数)に応じて増加する閾値としてもよい。
この追加処理の模式例として、次を挙げることができる。例えば図6の失敗画像F(15)は、成功画像セット(当初の検出成功区間R1)に近い側にあるが、学習データがSD(1)~SD(3)と更新されても失敗画像のままであり成功画像に変更されていないことから、モデルの検出精度の向上に寄与しない可能性が高いもの(例えば、対象の撮影状態が悪いもの)として、ループ処理回数i=3,4等の時点でカウント回数が閾値を超え、失敗画像セットから削除することが可能である。
(4)準備部2で読み込んで学習装置1で学習のために用いる映像は、図2を参照して車載カメラ映像として説明したが、同様の特性を有する任意の映像を、学習装置1において扱うことが可能である。すなわち、ロボットやドローン等の任意の移動手段に設けられたカメラにより、路上などを移動しながら撮影された映像を、学習装置1において扱うことが可能である。
(5)学習部3による図5のフローチャートの変形例として次も可能である。すなわち、ステップS5及びS6は省略して、ステップS4からステップS7へと以降した後、フローを終了するようにしてもよい。この場合、既に説明した大ループ処理としての繰り返し回数i=1のみであり、小ループ処理(ステップS1~S3)の繰り返しのみが行われうることとなり、学習装置1では既存モデルM(0)を改良したモデルM(1)を出力することとなる。
(6)以上の説明では、準備部2(のうち、識別部22)が検出成功区間及びこれに隣接する検出失敗区間を識別する際に、検出成功区間と検出失敗区間とが連続しているものとして識別したが、互いに不連続なものとして、当該隣接する両区間を識別し、推定部23に出力するようにしてもよい。すなわち、検出成功区間と検出失敗区間との間に映像上の1つ以上のフレームが存在して互いに不連続であるが、時間軸上で先後関係にあることから互いに隣接しているものとして識別するようにしてもよい。この際、以上説明したのと同様にして、識別部22では検出成功区間及び検出失敗区間を互いに連続しており且つ隣接するものとして検出したうえで、この連続箇所から、検出成功区間側及び/又は検出失敗区間側の所定数(管理者等が予め設定しておく)のフレームを削除したうえで、互いに不連続且つ互いに隣接するものとして検出成功区間及び検出失敗区間を得ることができる。
(7)用いた映像が適切ではなかった等の事情で、準備部2で適切な学習データが得られなかった場合や、学習データで学習しうる上限精度のモデルが現状モデルM(i-1)として既に得られている場合は、学習部3でステップS1~S3の小ループ処理を繰り返してもステップS3においてモデルの向上判定が得られないこともありうる。従って、ステップS1~S6の大ループ処理の各i回において、この小ループ処理の回数の上限閾値を設けておき、上限に達した場合は学習の処理を終了するようにしてもよい。i≧2で上限に達した場合、得られている最良モデルM(i-1)を学習部3の出力とすればよい。i=1で上限に達した場合、学習データが適切でない可能性がある等のエラーの旨を出力してよい。
(8)図7は、一般的なコンピュータ装置70におけるハードウェア構成の例を示す図である。学習装置1及び検出装置10はそれぞれ、このような構成を有する1台以上のコンピュータ装置70として実現可能である。コンピュータ装置70は、所定命令を実行するCPU(中央演算装置)71、CPU71の実行命令の一部又は全部をCPU71に代わって又はCPU71と連携して実行する専用プロセッサ72(GPU(グラフィック演算装置)や深層学習専用プロセッサ等)、CPU71や専用プロセッサ72にワークエリアを提供する主記憶装置としてのRAM73、補助記憶装置としてのROM74、通信インタフェース75、ディスプレイ76、マウス、キーボード、タッチパネル等によりユーザ入力を受け付ける入力インタフェース77と、これらの間でデータを授受するためのバスBSと、を備える。
学習装置1及び検出装置10の各部は、各部の機能に対応する所定のプログラムをROM74から読み込んで実行するCPU71及び/又は専用プロセッサ72によって実現することができる。ここで、表示関連の処理が行われる場合にはさらに、ディスプレイ76が連動して動作し、データ送受信に関する通信関連の処理が行われる場合にはさらに通信インタフェース75が連動して動作する。