以下、本発明を実施するための形態について図面を用いて詳細に説明する。
図1は、本発明の実施形態による画像分類装置を含む全体システムの概略図である。この全体システムは、画像を保持しているサーバ等の記憶装置1、画像収集装置2及び画像分類装置3を備えて構成される。
サーバ等の記憶装置1と画像収集装置2とは、インターネット等の伝送路4を介して接続され、画像収集装置2と画像分類装置3とは、LAN(Local Area Network:ローカルエリアネットワーク)等を介して接続される。
記憶装置1には、画像分類装置3の学習処理に用いる教師データの候補となる画像が保持されている。尚、記憶装置1は、図1に示すように、伝送路4を介して画像収集装置2に接続されるサーバ等であってもよいし、画像収集装置2に直接接続され、画像がデータベースとして保存されたハードディスク等であってもよい。
図2は、図1に示した全体システムにおいて、全体の処理の流れを説明するフローチャートである。まず、オペレータは、所定数の正解ラベル付き教師データ(画像及びスコア)を用意する。画像分類装置3は、実際の処理を行う前に、オペレータにより予め用意された所定数の正解ラベル付き教師データを用いて、学習モデルの初期学習を行う(ステップS201)。
画像収集装置2は、外部の記憶装置1から画像を収集し、画像に対して前処理を行い、学習に適した形に変換する(ステップS202)。画像分類装置3は、画像毎に、学習モデルを用いてカテゴリ毎のスコア(信頼度)を推定し(ステップS203)、最大スコアのカテゴリを、当該画像が属するカテゴリとする(ステップS204)。スコアは、画像がカテゴリに属する確率を示す。
画像分類装置3は、カテゴリ毎に、スコアの低い順に画像をソートする(ステップS205)。そして、画像分類装置3は、カテゴリ毎に、スコアの低い画像から順番にオペレータに確認を促し(画像が当該カテゴリに属するか否かを確認させ)、オペレータの操作に従い、必要に応じてカテゴリを修正する(ステップS206)。
画像分類装置3は、オペレータによる確認の後に修正を行わなかったカテゴリ、及びオペレータによる確認の後に修正を行ったカテゴリを正しいカテゴリとして、カテゴリ毎の教師データを生成する(ステップS207)。そして、画像分類装置3は、カテゴリ毎の教師データに基づいて学習モデルの学習を行う(ステップS208)。
これにより、スコアの低い画像を教師データとして、学習モデルの学習が行われる。スコアの低い画像を教師データとするのは、画像を一層正しく分類できるように学習モデルを更新するためである。そもそもスコアの低い画像は、現時点の学習モデルによって正しいカテゴリに分類され難い画像である。この画像のカテゴリがオペレータにより正しく修正され、修正後の画像を教師データとして学習モデルの学習を行うことで、正しく分類し難かった画像の分類精度を高めることができる。
つまり、スコアの低い画像を教師データとすることにより、分類精度の高い学習モデルに更新することができる点で、スコアの低い画像は有用な教師データであるといえる。このように、スコアの低い画像は、現時点の学習モデルが分類を苦手とする画像であるから、これを優先的に教師データとすることで、学習モデルの分類精度を効率的に高めることができる。
画像分類装置3は、処理を終了するか否か(所定の終了の条件を満たしているか否か)を判定し(ステップS209)、処理を終了しないと判定した場合(ステップS209:N)、ステップS202へ移行し、ステップS202~S208の処理を繰り返す。一方、画像分類装置3は、ステップS209において、処理を終了すると判定した場合(ステップS209:Y)、処理を終了する。
画像分類装置3は、ステップS209において、例えば追加学習により画像分類の精度が十分となった場合、または十分な数の教師データが得られた場合に、処理を終了する。
図1を参照して、画像収集装置2は、画像収集部20、教師候補画像が保存される記憶部21及び前処理部22を備えている。画像分類装置3は、画像分類部30、学習モデルが保存された記憶部31、カテゴリ毎の画像及びスコアが保存される記憶部32、修正部33、カテゴリ毎の画像が保存される記憶部34、学習部35及びスケジューラ36を備えている。
図3は、画像収集装置2及び画像分類装置3の処理フロー例を示す図である。画像分類装置3のスケジューラ36は、画像収集装置2の画像収集部20及び前処理部22、並びに画像分類装置3の画像分類部30、修正部33及び学習部35におけるそれぞれの動作をスケジューリングし、統括制御する(ステップS300)。スケジューラ36の詳細については後述する。
画像収集装置2の画像収集部20は、記憶装置1から伝送路4を介して、N枚の画像を収集し、N枚の画像を教師候補画像I1,・・・,INとして記憶部21に保存する(ステップS301)。Nは1以上の整数である。
画像収集部20は、例えばWebページにある画像を、サイズまたはアスペクト比等の条件に基づいてダウンロードしてもよいし、分類対象となる画像が登録されたデータベースから、ランダムに選択して読み出すようにしてもよい。
前処理部22は、記憶部21からN枚の教師候補画像I1,・・・,INを読み出し、教師候補画像I1,・・・,INを画像分類装置3の入力フォーマットに適した形に変換するための前処理を行う(ステップS302)。そして、前処理部22は、前処理後のN枚の教師候補画像I1,・・・,INを画像分類装置3へ送信する。
前処理部22は、例えば画像のサイズを学習モデルの入力サイズに合わせるために変換したり、学習モデルの汎化性能を向上させるためにランダムに変形させたり、ノイズを加えたりする。
画像分類装置3の画像分類部30は、画像収集装置2の前処理部22から、前処理後のN枚の教師候補画像I1,・・・,INを受信する。そして、画像分類部30は、教師候補画像I1,・・・,INのそれぞれについて特徴量を算出し、特徴量に基づいてカテゴリ毎のスコアを推定し、スコアの最も高いカテゴリを特定する。カテゴリの数をCとし、Cは2以上の整数とする。
具体的には、画像分類部30は、記憶部31に保存された学習モデルを用いて、教師候補画像I1,・・・,INのそれぞれについてカテゴリ毎のスコアを推定し、スコアの最も高いカテゴリを特定する。
画像分類部30の処理が行われる前に、学習モデルは、既に初期学習済みであるものとする。前述のとおり、初期学習時には、所定数の正解ラベル付き教師データが用意され、学習が行われる。
画像分類部30は、特定したカテゴリに従い、教師候補画像I1,・・・,INのそれぞれをC個のカテゴリのうちのいずれかに分類する(ステップS303)。画像分類部30は、カテゴリ毎の分類結果である教師候補画像Ik,1,・・・,Ik,Nk及び特定したカテゴリのスコアSk,1,・・・,Sk,Nkを記憶部32に保存する(ステップS304)。画像分類部30の詳細については後述する。
kはカテゴリの番号であり、k=1,・・・,Cである。Nkは、カテゴリkに分類された教師候補画像Ik,1,・・・,Ik,Nkの枚数であり、0以上の整数である。つまり、カテゴリkの分類結果は、Nk枚の教師候補画像Ik,1,・・・,Ik,Nk及びこれらのスコアSk,1,・・・,Sk,Nkである。
図4は、画像分類部30及び学習部35による学習モデルの処理例を説明する図である。図4に示すように、画像分類部30は、教師候補画像I1,・・・,IN(総称して、教師候補画像Iという。)のそれぞれを、学習モデルの入力データとして入力層に与え、カテゴリ毎のスコアSを、学習モデルの出力データとして出力層から取得する。
これにより、教師候補画像Iについて、学習モデルを用いてカテゴリ毎のスコアSが推定される。図4に示すスコアS(0.3,0.1,0,・・・,0.1)の例の場合、教師候補画像Iのカテゴリ1のスコアは0.3、カテゴリ2のスコアは0.1、カテゴリ3のスコアは0、・・・、カテゴリCのスコアは0.1である。全てのカテゴリのスコアの合計は1である。最大スコアが0.3であるとすると、画像分類部30は、教師候補画像Iを、最大スコアのカテゴリ1に分類する。
ここで、学習モデルを用いることで、入力層に入力された教師候補画像Iから特徴量が算出される。この特徴量とは、画像の局所的な特徴または画像全体の意味的な特徴を反映したベクトルであり、例えば畳み込みニューラルネットワークにおいては、畳み込み層及びプーリング層を繰り返し連ねることにより得られる。また、画像の勾配または色ヒストグラム等、学習により更新されない予め決められた特徴量を用いてもよい。
そして、特徴量からカテゴリ毎のスコアが算出される。算出方法としては、例えば畳み込みニューラルネットワークにおいて、複数の全結合層を連ね、出力層としてカテゴリの個数(C個)の要素を持つ層を使用することにより得られる。
尚、学習モデルは、教師あり学習が可能なモデルであり、画像の分類結果をスコアとして出力するものであればよい。学習モデルとしては、例えばニューラルネットワークが用いられる。この場合、ニューラルネットワークの種類は何でもよいが、深層学習で用いられる畳み込みニューラルネットワークであることが望ましい。畳み込みニューラルネットワークについては以下の文献を参照されたい。
A. Krizhevsky et al.,“Imagenet classification with deep convolutional neural networks”,Advances in neural information processing systems,pp.1097-1105(2012)
図5は、記憶部32に保存された分類結果の構成例を示す図である。図5に示すように、カテゴリ1について、教師候補画像I1,1,・・・,I1,N1及びスコアS1,1,・・・,S1,N1が記憶部32に保存される。また、カテゴリ2について、教師候補画像I2,1,・・・,I2,N2及びスコアS2,1,・・・,S2,N2が記憶部32に保存される。同様に、カテゴリCについて、教師候補画像IC,1,・・・,IC,NC及びスコアSC,1,・・・,SC,NCが記憶部32に保存される。
N1は、カテゴリ1に分類された教師候補画像I1,1,・・・,I1,N1の枚数であり、0以上の整数である。N2は、カテゴリ2に分類された教師候補画像I2,1,・・・,I2,N2の枚数であり、0以上の整数である。同様に、NCは、カテゴリCに分類された教師候補画像IC,1,・・・,IC,NCの枚数であり、0以上の整数である。
図1及び図3に戻って、修正部33は、記憶部32から、分類結果であるカテゴリ毎の教師候補画像Ik,1,・・・,Ik,Nk及びスコアSk,1,・・・,Sk,Nkを読み出す。そして、修正部33は、カテゴリ毎に、スコアSk,1,・・・,Sk,Nkの低い教師候補画像Ik,1,・・・,Ik,Nkから順番にオペレータに確認を促し、オペレータの操作に従い、必要に応じてカテゴリを修正する(ステップS305)。
これにより、カテゴリが正しいと確認された教師候補画像Iについては、そのカテゴリはそのままとされ、カテゴリが正しくないと確認された教師候補画像Iについては、そのカテゴリは修正される。
修正部33は、確認及び修正後のカテゴリ毎の教師候補画像Ik,1’,・・・,Ik,Nk’を教師データとして、記憶部34に保存する(ステップS306)。修正部33の詳細については後述する。
確認及び修正後のカテゴリ毎の教師候補画像Ik,1’,・・・,Ik,Nk’には、確認後修正されなかった画像、及び確認後修正された画像が含まれる。kはカテゴリの番号であり、k=1,・・・,Cである。Nk’は、カテゴリkに属する確認及び修正後の教師候補画像Iの枚数であり、0以上の整数である。
これにより、スコアの低い教師候補画像Iから順番に確認及び修正が行われ、教師データが生成される。したがって、スコアの低い教師候補画像I(分類が誤っている教師候補画像I、またはカテゴリの分類が困難な分類境界に近い教師候補画像I)について、そのカテゴリを正しいものに修正することができ、これを優先的に教師データに追加することができる。前述のとおり、スコアの低い教師候補画像Iは、現時点の学習モデルが分類を苦手とする画像であるから、これを教師データとすることで、分類精度の高い学習モデルに更新することができる。
学習部35において、有用な教師データを用いて学習が行われるから、修正部33の処理は、分類精度の高い学習モデルに更新するために必要な処理であるといえる。
また、カテゴリが付与された教師候補画像Iに対し、修正部33にてそのカテゴリを修正する処理は、カテゴリ(ラベル)が付与されていない画像に対してカテゴリを新たに付与する処理に比べ、処理負担が少なくて済む。
図6は、記憶部34に保存された教師データの構成例を示す図である。図6に示すように、カテゴリ1について、教師データ(の画像)I1,1’,・・・,I1,N1’が記憶部34に保存される。また、カテゴリ2について、教師データI2,1’,・・・,I2,N2’が記憶部34に保存される。同様に、カテゴリCについて、教師データIC,1’,・・・,IC,NC’が記憶部34に保存される。
N1’は、カテゴリ1に属する教師データI1,1’,・・・,I1,N1’の枚数であり、0以上の整数である。N2’は、カテゴリ2に属する教師データI2,1’,・・・,I2,N2’の枚数であり、0以上の整数である。同様に、NC’は、カテゴリCに属する教師データIC,1’,・・・,IC,NC’の枚数であり、0以上の整数である。
図1及び図3に戻って、学習部35は、記憶部34からカテゴリ毎の教師データIk,1’,・・・,Ik,Nk’を読み出す。そして、学習部35は、カテゴリ毎の教師データIk,1’,・・・,Ik,Nk’に基づいて、記憶部31に保存された学習モデルの学習を行う(ステップS307)。学習部35の詳細については後述する。
図4を参照して、学習部35は、教師データIk,1’,・・・,Ik,Nk’のそれぞれを入力データとし、当該教師データが属するカテゴリを反映したカテゴリ毎のスコアSを正解データとして、学習モデルの学習を行う。カテゴリ毎のスコアSは、当該教師データが属するカテゴリのスコアを1とし、その他のカテゴリのスコアを0とする。
図4の例では、教師データがカテゴリ2に属する場合を示している。この教師データのスコアSは、カテゴリ2のスコアを1、その他のカテゴリのスコアを0としたS(0,1,0,・・・,0)である。学習部35は、教師データ及びスコアSを学習モデルに与える。そして、学習部35は、教師データを入力層から順伝播させ、出力層の出力信号とスコアSとの間の誤差信号を求め、誤差信号を出力層から逆伝播させることで、重み等のパラメータを更新する。
これにより、修正部33にて生成された有用な教師データを用いて学習が行われるから、分類精度の高い学習モデルに更新することができ、画像分類部30における分類精度を高めることができる。
図1及び図3に戻って、画像収集装置2及び画像分類装置3によるステップS301~S307の処理は、ステップS300の処理に従い、繰り返し行われる。
これにより、修正部33により生成される教師データが逐次的に増えると共に、画像分類部30による分類処理の精度を高めることができる。
〔画像分類部30〕
次に、図1に示した画像分類装置3の画像分類部30について詳細に説明する。図7は、画像分類部30の処理例を示すフローチャートである。
画像分類部30は、スケジューラ36から分類開始指示を入力したか否かを判定する(ステップS701)。画像分類部30は、ステップS701において、分類開始指示を入力していないと判定した場合(ステップS701:N)、分類開始指示を入力するまで待つ。分類開始指示は、スケジューラ36が画像分類部30に分類処理を開始させるための信号である。
一方、画像分類部30は、ステップS701において、分類開始指示を入力したと判定した場合(ステップS701:Y)、画像収集装置2の前処理部22から教師候補画像I1,・・・,INを入力する(ステップS702)。
画像分類部30は、教師候補画像I1,・・・,INのそれぞれについて、記憶部31に保存された学習モデルを用いて、カテゴリ毎のスコアを推定する(ステップS703)。これにより、教師候補画像I1,・・・,INのそれぞれについて、カテゴリ毎のスコアS1,・・・,SNが得られる。
画像分類部30は、教師候補画像I1,・・・,INのそれぞれについて、カテゴリ毎のスコアのうち最大スコアを特定し、最大スコアのカテゴリを、当該教師候補画像Iのカテゴリに設定する(ステップS704)。
画像分類部30は、教師候補画像I1,・・・,INをカテゴリ毎に分類する(ステップS705)。そして、画像分類部30は、カテゴリ毎に、スコアの低い順に教師候補画像I1,・・・,INをソートすることで、k(k=1,・・・,C)番目のカテゴリについての画像Ik,1,・・・,Ik,Nkを得る(ステップS706)。
画像分類部30は、カテゴリ毎の分類結果である教師候補画像Ik,1,・・・,Ik,Nk及びスコアSk,1,・・・,Sk,Nkを生成し(ステップS707)、記憶部32に保存する(ステップS708)。
画像分類部30は、画像収集装置2から入力した教師候補画像I1,・・・,INの分類処理が完了したとして、ステップS701にて入力した分類開始指示に対応する分類完了を、スケジューラ36に出力する(ステップS709)。分類完了は、画像分類部30による分類処理が完了したことを示す信号である。
このように、画像分類部30は、分類開始指示に従い、学習モデルを用いて教師候補画像I1,・・・,INの分類を行い、カテゴリ毎の分類結果である教師候補画像Ik,1,・・・,Ik,Nk及びスコアSk,1,・・・,Sk,Nkを生成し、分類完了を出力する。
〔修正部33〕
次に、図1に示した画像分類装置3の修正部33について詳細に説明する。図8は、修正部33の処理例を示すフローチャートである。
修正部33は、スケジューラ36から修正開始指示を入力したか否かを判定する(ステップS801)。修正部33は、ステップS801において、修正開始指示を入力していないと判定した場合(ステップS801:N)、修正開始指示を入力するまで待つ。修正開始指示は、スケジューラ36が修正部33に修正処理を開始させるための信号である。
一方、修正部33は、ステップS801において、修正開始指示を入力したと判定した場合(ステップS801:Y)、記憶部32から、分類結果であるカテゴリ毎の教師候補画像Ik,1,・・・,Ik,Nk及びスコアSk,1,・・・,Sk,Nkを読み出す(ステップS802)。
修正部33は、カテゴリ毎に、スコアSk,1,・・・,Sk,Nkの低い教師候補画像Ik,1,・・・,Ik,Nkから順番にオペレータに確認を促し、オペレータの操作に従い、必要に応じてカテゴリを修正する(ステップS803)。
修正部33は、確認及び修正後のカテゴリ毎の教師候補画像Ik,1’,・・・,Ik,Nk’を教師データとして生成し(ステップS804)、これを記憶部34に保存する(ステップS805)。
確認及び修正後のカテゴリ毎の教師候補画像Ik,1’,・・・,Ik,Nk’は、カテゴリ毎の教師候補画像Ik,1,・・・,Ik,Nkのうち、オペレータにより確認が行われた画像のみである。ここで、オペレータにより確認が行われた画像には、その確認によりカテゴリが誤っていると判断され、その後カテゴリが修正された画像、及び、その確認によりカテゴリが正しいと判断され、その後カテゴリが修正されなかった画像が含まれる。
修正部33は、画像分類部30により分類されたカテゴリ毎の教師候補画像Ik,1,・・・,Ik,Nkの修正処理が完了したとして、ステップS801にて入力した修正開始指示に対応する修正完了を、スケジューラ36に出力する(ステップS806)。修正完了は、修正部33による修正処理が完了したことを示す信号である。
このように、修正部33は、修正開始指示に従い、カテゴリ毎の教師候補画像Ik,1,・・・,Ik,Nkの修正を行い、カテゴリ毎の確認修正結果である教師データIk,1’,・・・,Ik,Nk’を生成し、修正完了を出力する。
尚、修正部33は、ステップS803において、全てのカテゴリの全ての教師候補画像Ik,1,・・・,Ik,Nkを確認修正対象としてもよいし、予め設定された枚数の教師候補画像Ik,1,・・・,Ik,Nkを確認修正対象としてもよい。
例えば、オペレータにより、カテゴリ毎に上限枚数が予め設定されているとする。修正部33は、カテゴリ毎に、スコアSk,1,・・・,Sk,Nkの低い教師候補画像Ik,1,・・・,Ik,Nkから順番に、上限枚数に到達するまで確認を促し、カテゴリを修正する。
また、例えば、オペレータにより、カテゴリ毎にスコアの閾値が予め設定されているとする。修正部33は、カテゴリ毎に、スコアSk,1,・・・,Sk,Nkの低い教師候補画像Ik,1,・・・,Ik,Nkから順番に、閾値を下回った画像のみについて確認を促し、カテゴリを修正する。
また、スケジューラ36が、修正部33により処理が行われる確認修正対象の枚数を決定するようにしてもよい。例えば、スケジューラ36は、修正部33による修正開始のタイミングにおいて、当該タイミングから学習部35により現在の学習が完了するまでの時間を推定する。そして、スケジューラ36は、修正部33が当該時間の経過するタイミングで修正処理を完了するように、確認修正対象の枚数を決定し、確認修正対象の枚数を修正部33に出力する。修正部33は、確認修正対象の枚数をカテゴリの数で除算し、カテゴリ毎に、スコアSk,1,・・・,Sk,Nkの低い教師候補画像Ik,1,・・・,Ik,Nkから順番に、除算結果の枚数に到達するまで確認を促し、カテゴリを修正する。
具体的には、スケジューラ36は、後述する学習開始指示を学習部35に出力してから、学習部35から後述する学習完了を入力するまでの間の時間を求め、当該時間を教師データの数で除算することで1教師データあたりの学習時間を集計し、平均を算出して1教師データあたりの学習時間を推定する。スケジューラ36は、推定した1教師データあたりの学習時間を保持する。
また、スケジューラ36は、修正指示開始を修正部33に出力してから、修正部33から修正完了を入力するまでの間の時間を求め、当該時間を確認修正が行われた画像の枚数で除算することで1画像あたりの修正時間を集計し、平均を算出して1画像あたりの修正時間を推定する。スケジューラ36は、推定した1画像あたりの修正時間を保持する。
スケジューラ36は、修正部33による修正開始のタイミングにおいて、学習部35から、現在の学習における残りの教師データの数を入力し、残りの教師データの数に、保持している1教師データあたりの学習時間を乗算することで、当該タイミングから現在の学習が完了するまでの時間を推定する。
スケジューラ36は、当該タイミングから現在の学習が完了するまでの時間を、保持している1画像あたりの修正時間で除算することで、確認修正対象の枚数を決定する。
また、修正部33は、カテゴリ毎に、スコアSk,1,・・・,Sk,Nkが所定の閾値以上の教師候補画像Ik,1,・・・,Ik,Nkを特定し、特定した画像の一部をランダムに選択して、確認修正対象の画像に加えるようにしてもよい。所定の閾値は、オペレータにより予め設定される。
これにより、スコアの高い画像を教師データとすることができ、スコアに基づいた教師データの偏りを軽減することができる。また、スコアが高いが誤ったカテゴリに分類された画像を修正する可能性を増やすことができる。
このように、スコアが高いが誤ったカテゴリに分類された画像は、現時点の学習モデルが分類を苦手とする画像であるから、これを教師データとすることで、学習モデルの分類精度を効率的に高めることができる。
〔学習部35〕
次に、図1に示した画像分類装置3の学習部35について詳細に説明する。図9は、学習部35の処理例を示すフローチャートである。
学習部35は、スケジューラ36から学習開始指示を入力したか否かを判定する(ステップS901)。学習部35は、ステップS901において、学習開始指示を入力していないと判定した場合(ステップS901:N)、学習開始指示を入力するまで待つ。学習開始指示は、スケジューラ36が学習部35に学習処理を開始させるための信号である。
一方、学習部35は、ステップS901において、学習開始指示を入力したと判定した場合(ステップS901:Y)、記憶部34から、カテゴリ毎の教師データIk,1’,・・・,Ik,Nk’を読み出す(ステップS902)。
学習部35は、教師データIk,1’,・・・,Ik,Nk’のそれぞれについて、当該画像の属するカテゴリのスコアを1に設定すると共に、それ以外のスコアを0に設定することで、スコアSを生成する(ステップS903)。
学習部35は、教師データIk,1’,・・・,Ik,Nk’のそれぞれを入力データとし、カテゴリ毎のスコアSを正解データとして、学習モデルの学習を行う(ステップS904)。
学習部35は、修正部33により確認修正されたカテゴリ毎の教師データIk,1’,・・・,Ik,Nk’を用いた学習処理が完了したとして、ステップS901にて入力した学習開始指示に対応する学習完了を、スケジューラ36に出力する(ステップS905)。学習完了は、学習部35による学習処理が完了したことを示す信号である。
このように、学習部35は、学習開始指示に従い、カテゴリ毎の教師データIk,1’,・・・,Ik,Nk’を用いた学習を行い、学習モデルを更新し、学習完了を出力する。
尚、学習部35は、ステップS903,S904において、記憶部34から読み出したカテゴリ毎の教師データIk,1’,・・・,Ik,Nk’に加え、今までの学習に用いた教師データも併せて、学習対象の教師データとしてもよい。
これにより、過去の学習に用いた教師データを今回の学習の教師データとして、学習モデルの学習が行われる。過去の学習に用いた教師データを今回の学習の教師データとしない場合には、当該教師データの画像についての分類精度が低下してしまう。そこで、過去の学習に用いた教師データも今回の学習の教師データに含めることにより、当該画像の分類精度を低下させないようにできる。
つまり、過去の学習に用いた教師データを今回の学習の教師データに含めることは、当該画像の分類精度を低下させない点で、有用な教師データであるといえる。これにより、学習モデルの分類精度を効率的に高めることができる。
また、学習部35は、オペレータにより予め設定された教師データ毎の使用率設定値に基づいて、教師データを選択するようにしてもよい。例えば、学習部35は、使用率設定値50%の教師データについて、2回の学習処理のうち1回について、当該教師データを間引く(除外する)ようにする。これにより、使用率設定値に応じて、学習に用いる教師データを間引くことができ、教師データの増加による学習時間の増大を緩和させることができる。
〔スケジューラ36〕
次に、図1に示した画像分類装置3のスケジューラ36について詳細に説明する。図10は、スケジューラ36による並行処理例を説明する図であり、下へ向けて時間が経過するものとする。前述のとおり、スケジューラ36は、画像収集部20、前処理部22、画像分類部30、修正部33及び学習部35の動作を統括制御し、処理開始のタイミングを指示することで、これらの処理を並行して行わせる。
図10を参照して、まず時間帯T1において、画像収集部20及び前処理部22が教師候補画像A1の処理を行っており、このときに並行して、学習部35が教師データD1を用いて学習モデルを学習する処理を行っているものとする。
学習部35による教師データD1の処理が完了し、画像収集部20及び前処理部22による教師候補画像A1の処理が完了すると、時間帯T2において、画像分類部30は、教師候補画像A1に基づき、学習モデルを用いて分類結果B1を生成する処理を行う。また、時間帯T2,T3において、画像収集部20及び前処理部22は、次の教師候補画像A2の処理を行う。
この場合、画像分類部30による学習モデルを用いた処理と、学習部35による学習モデルを学習する処理とは、同時に並行して実行することができない。1つの学習モデルについて、その利用及び学習を同時に実行できないからである。つまり、画像分類部30による処理は、学習部35による処理の完了を待って行われ、学習部35による処理は、画像分類部30による処理の完了を待って行われる。
画像分類部30による学習モデルを用いた分類結果B1を生成する処理が完了すると、時間帯T3,T4において、修正部33は、分類結果B1に基づいて教師データC1を生成する処理を行う。また、時間帯T3において、学習部35は、教師データD2を用いて学習モデルを学習する処理を行う。
学習部35による教師データD2の処理が完了し、画像収集部20及び前処理部22による教師候補画像A2の処理が完了すると、時間帯T4において、画像分類部30は、教師候補画像A2に基づき、学習モデルを用いて分類結果B2を生成する処理を行う。また、時間帯T4,T5において、画像収集部20及び前処理部22は、次の教師候補画像A3の処理を行う。
修正部33による教師データC1を生成する処理が完了し、画像分類部30による学習モデルを用いた分類結果B2を生成する処理が完了すると、時間帯T5,T6において、修正部33は、分類結果B2に基づいて教師データC2を生成する処理を行う。また、時間帯T5において、学習部35は、教師データC1を用いて学習モデルを学習する処理を行う。
学習部35による教師データC1の処理が完了し、画像収集部20及び前処理部22による教師候補画像A3の処理が完了すると、時間帯T6において、画像分類部30は、教師候補画像A3に基づき、学習モデルを用いて分類結果B3を生成する処理を行う。また、時間帯T6,T7において、画像収集部20及び前処理部22は、次の教師候補画像A4の処理を行う。
修正部33による教師データC2を生成する処理が完了し、画像分類部30による学習モデルを用いた分類結果B3を生成する処理が完了すると、時間帯T7,T8において、修正部33は、分類結果B3に基づいて教師データC3を生成する処理を行う。また、時間帯T7において、学習部35は、教師データC2を用いて学習モデルを学習する処理を行う。
このように、画像収集部20及び前処理部22は、教師候補画像の処理が完了すると、次の教師候補画像の処理を行う。そして、画像分類部30は、画像収集部20及び前処理部22の処理の完了を待って処理を行い、修正部33は、画像分類部30の処理の完了を待って処理を行い、学習部35は、修正部33の処理の完了を待って処理を行う。
この場合、画像分類部30及び学習部35は、同じ学習モデルにアクセスすることから、同時に動作することはない(図10の斜線の箇所を参照)。
図11は、スケジューラ36による画像収集部20及び前処理部22の制御例を示すフローチャートである。スケジューラ36は、収集開始指示を画像収集部20に出力する(ステップS1101)。収集開始指示は、スケジューラ36が画像収集部20に収集処理を開始させるための信号である。
これにより、画像収集部20にて、教師候補画像の収集が行われ、その後前処理部22にて、当該教師候補画像の前処理が行われる。そして、前処理部22は、教師候補画像の前処理を完了すると、収集及び前処理完了をスケジューラ36に出力する。または、画像収集部20は、教師候補画像の収集を完了すると、収集完了をスケジューラ36に出力し、前処理部22は、教師候補画像の前処理を完了すると、前処理完了をスケジューラ36に出力する。
スケジューラ36は、前処理部22から収集及び前処理完了を入力したか否か(または、画像収集部20から収集完了を入力し、かつ前処理部22から前処理完了を入力したか否か)を判定する(ステップS1102)。
スケジューラ36は、ステップS1102において、収集及び前処理完了を入力したと判定した場合(ステップS1102:Y)、ステップS1103へ移行する。一方、スケジューラ36は、ステップS1102において、収集及び前処理完了を入力していないと判定した場合(ステップS1102:N)、収集及び前処理完了を入力するまで待つ。
スケジューラ36は、当該スケジューラ36による画像収集部20及び前処理部22の制御を終了するか否か(所定の終了の条件を満たしているか否か)を判定する(ステップS1103)。スケジューラ36は、ステップS1103において、制御を終了しないと判定した場合(ステップS1103:N)、ステップS1101へ移行し、次の収集開始指示を画像収集部20に出力する。
これにより、画像収集部20にて、次の教師候補画像の収集が行われ、その後前処理部22にて、当該次の教師候補画像の前処理が行われる。
一方、スケジューラ36は、ステップS1103において、制御を終了すると判定した場合(ステップS1103:Y)、当該制御を終了する。
図12は、スケジューラ36による画像分類部30の制御例を示すフローチャートである。スケジューラ36は、画像収集部20及び前処理部22による教師候補画像の収集及び前処理が完了済みであるか否かを判定する(ステップS1201)。また、スケジューラ36は、学習部35による教師データを用いた学習モデルの学習が完了済みであるか否かを判定する(ステップS1202)。
スケジューラ36は、ステップS1201において収集及び前処理が完了済みでない、またはステップS1202において学習が完了済みでないと判定した場合(ステップS1201:N、またはステップS1202:N)、完了済みとなるまで待つ。
一方、スケジューラ36は、ステップS1201において収集及び前処理が完了済みであり、かつステップS1202において学習が完了済みであると判定した場合(ステップS1201:Y、かつステップS1202:Y)、分類開始指示を画像分類部30に出力する(ステップS1203)。
これにより、画像分類部30にて、学習モデルを用いた教師候補画像の分類が行われる。そして、画像分類部30は、教師候補画像の分類を完了すると、分類完了をスケジューラ36に出力する。
スケジューラ36は、画像分類部30から分類完了を入力したか否かを判定する(ステップS1204)。
スケジューラ36は、ステップS1204において、分類完了を入力したと判定した場合(ステップS1204:Y)、ステップS1205へ移行する。一方、スケジューラ36は、ステップS1204において、分類完了を入力していないと判定した場合(ステップS1204:N)、分類完了を入力するまで待つ。
スケジューラ36は、当該スケジューラ36による画像分類部30の制御を終了するか否か(所定の終了の条件を満たしているか否か)を判定する(ステップS1205)。スケジューラ36は、ステップS1205において、制御を終了しないと判定した場合(ステップS1205:N)、ステップS1201へ移行し、次の分類開始指示を出力する条件を満たすか否かを判定する。
一方、スケジューラ36は、ステップS1205において、制御を終了すると判定した場合(ステップS1205:Y)、当該制御を終了する。
図13は、スケジューラ36による修正部33の制御例を示すフローチャートである。スケジューラ36は、画像分類部30による教師候補画像の分類処理が完了済みであるか否かを判定する(ステップS1301)。
スケジューラ36は、ステップS1301において、分類処理が完了済みでないと判定した場合(ステップS1301:N)、完了済みとなるまで待つ。
一方、スケジューラ36は、ステップS1301において、分類処理が完了済みであると判定した場合(ステップS1301:Y)、修正開始指示を修正部33に出力する(ステップS1302)。
これにより、修正部33にて、分類結果を用いた修正処理が行われる。そして、修正部33は、修正処理を完了して教師データを生成すると、修正完了をスケジューラ36に出力する。
スケジューラ36は、修正部33から修正完了を入力したか否かを判定する(ステップS1303)。
スケジューラ36は、ステップS1303において、修正完了を入力したと判定した場合(ステップS1303:Y)、ステップS1304へ移行する。一方、スケジューラ36は、ステップS1303において、修正完了を入力していないと判定した場合(ステップS1303:N)、修正完了を入力するまで待つ。
スケジューラ36は、当該スケジューラ36による修正部33の制御を終了するか否か(所定の終了の条件を満たしているか否か)を判定する(ステップS1304)。スケジューラ36は、ステップS1304において、制御を終了しないと判定した場合(ステップS1304:N)、ステップS1301へ移行し、次の修正開始指示を出力する条件を満たすか否かを判定する。
一方、スケジューラ36は、ステップS1304において、制御を終了すると判定した場合(ステップS1304:Y)、当該制御を終了する。
図14は、スケジューラ36による学習部35の制御例を示すフローチャートである。スケジューラ36は、修正部33による分類結果の修正が完了済み(教師データの生成が完了済み)であるか否かを判定する(ステップS1401)。また、スケジューラ36は、画像分類部30による教師データを用いた分類が完了済みであるか否かを判定する(ステップS1402)。
スケジューラ36は、ステップS1401において修正が完了済みでない、またはステップS1402において分類が完了済みでないと判定した場合(ステップS1401:N、またはステップS1402:N)、完了済みとなるまで待つ。
一方、スケジューラ36は、ステップS1401において修正が完了済みであり、かつステップS1402において分類が完了済みであると判定した場合(ステップS1401:Y、かつステップS1402:Y)、学習開始指示を学習部35に出力する(ステップS1403)。
これにより、学習部35にて、教師データを用いた学習モデルの学習が行われる。そして、学習部35は、学習を完了すると、学習完了をスケジューラ36に出力する。
スケジューラ36は、学習部35から学習完了を入力したか否かを判定する(ステップS1404)。
スケジューラ36は、ステップS1404において、学習完了を入力したと判定した場合(ステップS1404:Y)、ステップS1405へ移行する。一方、スケジューラ36は、ステップS1404において、学習完了を入力していないと判定した場合(ステップS1404:N)、学習完了を入力するまで待つ。
スケジューラ36は、当該スケジューラ36による学習部35の制御を終了するか否か(所定の終了の条件を満たしているか否か)を判定する(ステップS1405)。スケジューラ36は、ステップS1405において、制御を終了しないと判定した場合(ステップS1405:N)、ステップS1401へ移行し、次の学習開始指示を出力する条件を満たすか否かを判定する。
一方、スケジューラ36は、ステップS1405において、制御を終了すると判定した場合(ステップS1405:Y)、当該制御を終了する。
このように、スケジューラ36は、画像収集部20、前処理部22、画像分類部30、修正部33及び学習部35におけるそれぞれの動作を統括制御し、これらの処理を並行して行わせる。
これにより、全体の処理時間を短縮することができ、1サイクルあたりの時間(画像収集部20がN枚の教師候補画像I1,・・・,INを収集してから学習部35が学習モデルの学習を行うまでの間の処理時間)を削減することができる。
以上のように、本発明の実施形態の画像分類装置3によれば、画像分類部30は、教師候補画像I1,・・・,INのそれぞれについて、学習モデルを用いてカテゴリ毎のスコアを推定し、最大スコアのカテゴリに分類する。そして、画像分類部30は、カテゴリ毎に、スコアの低い順に教師候補画像I1,・・・,INをソートすることで、画像Ik,1,・・・,Ik,Nkを得る。画像分類部30は、カテゴリ毎の分類結果である教師候補画像Ik,1,・・・,Ik,Nk及びスコアSk,1,・・・,Sk,Nkを生成する。
修正部33は、カテゴリ毎に、スコアSk,1,・・・,Sk,Nkの低い教師候補画像Ik,1,・・・,Ik,Nkから順番にオペレータに確認を促し、オペレータの操作に従い、必要に応じてカテゴリを修正し、確認及び修正後のカテゴリ毎の教師候補画像Ik,1’,・・・,Ik,Nk’を教師データとする。学習部35は、カテゴリ毎の教師データを用いて学習モデルの学習を行う。
スケジューラ36は、画像収集部20、前処理部22、画像分類部30、修正部33及び学習部35の動作を統括制御し、これらの処理を並行して行わせる。
これにより、学習モデルを用いた分類結果に対し、オペレータによる修正が行われ、学習に用いる教師データが生成されるから、人手により教師データが収集される場合に比べ、有用な教師データを収集するための労力及び時間を低減することができる。
また、スケジューラ36の制御により、画像の収集及び前処理、学習モデルを用いた分類処理、修正処理、及び学習モデルの学習処理を並行して行うようにしたから、全体の処理時間を短縮し、1サイクルあたりの時間を削減することができる。
一般に、深層学習の教師データとしては、カテゴリ毎に数千から数万枚の画像が必要とされることが多い。本発明の実施形態では、初期学習のために、カテゴリ毎に数百枚の画像を用意すれば済み、その後は処理の労力及び時間を低減しつつ、教師データを必要な量に達するまで収集することができる。
以上、実施形態を挙げて本発明を説明したが、本発明は前記実施形態に限定されるものではなく、その技術思想を逸脱しない範囲で種々変形可能である。前記実施形態では、画像分類装置3はスケジューラ36を備えているが、スケジューラ36を備えていなくてもよい。
尚、本発明の実施形態による画像分類装置3のハードウェア構成としては、通常のコンピュータを使用することができる。画像分類装置3は、CPU、RAM等の揮発性の記憶媒体、ROM等の不揮発性の記憶媒体、及びインターフェース等を備えたコンピュータによって構成される。
画像分類装置3に備えた画像分類部30、記憶部31、記憶部32、修正部33、記憶部34、学習部35及びスケジューラ36の各機能は、これらの機能を記述したプログラムをCPUに実行させることによりそれぞれ実現される。
これらのプログラムは、前記記憶媒体に格納されており、CPUに読み出されて実行される。また、これらのプログラムは、磁気ディスク(フロッピー(登録商標)ディスク、ハードディスク等)、光ディスク(CD-ROM、DVD等)、半導体メモリ等の記憶媒体に格納して頒布することもでき、ネットワークを介して送受信することもできる。