(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-03-06
(45)【発行日】2023-03-14
(54)【発明の名称】学習装置、検査装置、学習検査方法、学習プログラムおよび検査プログラム
(51)【国際特許分類】
G06T 7/00 20170101AFI20230307BHJP
G06N 20/00 20190101ALI20230307BHJP
【FI】
G06T7/00 350B
G06T7/00 600
G06N20/00
(21)【出願番号】P 2019035827
(22)【出願日】2019-02-28
【審査請求日】2021-11-09
(31)【優先権主張番号】P 2018047487
(32)【優先日】2018-03-15
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100087480
【氏名又は名称】片山 修平
(72)【発明者】
【氏名】長崎 俊紀
(72)【発明者】
【氏名】芳賀 進
【審査官】千葉 久博
(56)【参考文献】
【文献】特開2014-219847(JP,A)
【文献】特開2011-198268(JP,A)
【文献】特開2010-243451(JP,A)
【文献】特開2003-208594(JP,A)
【文献】桑原隆比古, 外3名,“クラスタ化された特徴セットにより学習された複数識別器を用いた性別認識”,電子情報通信学会技術研究報告,日本,社団法人電子情報通信学会,2005年10月21日,第105巻, 第375号,p.1-6
(58)【調査した分野】(Int.Cl.,DB名)
G06T 7/00
G06N 20/00
(57)【特許請求の範囲】
【請求項1】
複数の学習データを含む第1学習データ群に対して機械学習することで、第1分類器および第1SVM境界線を生成する機械学習部と、
前記第1SVM境界線と前記第1学習データ群の各学習データとの距離データを算出する算出部と、
前記距離データの分布が中央で分かれていない場合には、前記距離データに応じて、前記第1学習データ群を第2学習データ群、第3学習データ群および第4学習データ群に分割する分割部と、を備え、
前記機械学習部は、前記第2学習データ群に対して機械学習することで第2分類器および第2SVM境界線を生成し、前記第3学習データ群に対して機械学習することで第3分類器および第3SVM境界線を生成し、前記第4学習データ群に対して機械学習することで第4分類器および第4SVM境界線を生成することを特徴とする学習装置。
【請求項2】
前記機械学習部による分類器およびSVM境界線の生成、前記算出部による各学習データと生成されたSVM境界線との距離の算出、および前記分割部による学習データ群の3つの学習データ群への分割は、SVM境界線と各学習データとの距離データの分布が中央で分かれるまで繰り返されることを特徴とする請求項1記載の学習装置。
【請求項3】
それぞれ2種類のラベルのいずれかが付された学習データを複数含む学習データ群に対して所定の特徴量に基づいてクラスタリングを行い、要素数が最大となる第1クラスタのいずれかの第1学習データと、前記第1クラスタに含まれる学習データのうち前記第1学習データと同じラベルが付された学習データとを第1群として選択し、前記第1クラスタ以外のクラスタに含まれる学習データのうち前記第1学習データと異なる学習データを第2群として選択し、前記第1群および前記第2群を前記第1学習データ群として格納部に格納する選択部をさらに備えることを特徴とする請求項1または2に記載の学習装置。
【請求項4】
前記選択部は、前記特徴量の特徴量空間において、前記第1クラスタに含まれる学習データのうち前記第1学習データ
から最も近いものから所定番目まで近い学習データを前記第1群として選択し、前記第1クラスタ以外の学習データのうち前記第1学習データ
から最も遠いものから所定番目まで遠い学習データを前記第2群として選択することを特徴とする請求項3記載の学習装置。
【請求項5】
前記選択部は、前記特徴量の特徴量空間において前記第1クラスタの重心位置に最も近い学習データを前記第1学習データとして選択することを特徴とする請求項3または4に記載の学習装置。
【請求項6】
検査対象に対して
、第1学習データ群に対して機械学習することで得られた第1分類器で分類を行う検査部と、
前記第1分類器の第1SVM境界線と前記検査対象との距離を算出する算出部と、を備え、
前記検査部は、前記算出部が算出した距離に応じて、
前記第1学習データ群を第2学習データ群と第3学習データ群と第4学習データ群とに分割した場合の前記第2学習データ群に対して機械学習することで得られた第2分類器、
前記第3学習データ群に対して機械学習することで得られた第3分類器
、および
前記第4学習データ群に対して機械学習することで得られた第4分類器のいずれかを選択し、選択した分類器を用いて前記検査対象を分類することを特徴とする検査装置。
【請求項7】
前記第1分類器は、複数の学習データを含む第1学習データ群に対して機械学習することで生成された分類器であり、
前記第2分類器、前記第3分類器および前記第4分類器は、それぞれ、前記第1分類器に係る第1SVM境界線と前記第1学習データ群の各学習データとの距離データに応じて前記第1学習データ群を分割することで得られた第2学習データ群、第3学習データ群および第4学習データ群に対して機械学習することで生成された分類器であることを特徴とする請求項6記載の検査装置。
【請求項8】
機械学習対象の学習データ群を用いた分類器およびSVM境界線の生成、各学習データと生成されたSVM境界線との距離の算出、および学習データ群の3つの学習データ群への分割は、SVM境界線と各学習データとの距離データの分布が中央で分かれるまで繰り返され、生成された分類器に係るSVM境界線と各学習データとの距離データの分布が中央で分かれている場合に当該分類器に識別子が付されており、
前記算出部による距離の算出と、前記検査部による3つの分類器からの選択とが、前記算出部によって算出された距離に応じて選択される分類器に前記識別子が付されているまで繰り返されることを特徴とする請求項6または7に記載の検査装置。
【請求項9】
複数の学習データを含む第1学習データ群に対して機械学習することで、第1分類器および第1SVM境界線を生成する処理と、
前記第1SVM境界線と前記第1学習データ群の各学習データとの距離データを算出する処理と、
前記距離データの分布が中央で分かれていない場合には、前記距離データに応じて、前記第1学習データ群を第2学習データ群、第3学習データ群および第4学習データ群に分割する処理と、
前記第2学習データ群に対して機械学習することで第2分類器および第2SVM境界線を生成し、前記第3学習データ群に対して機械学習することで第3分類器および第3SVM境界線を生成し、前記第4学習データ群に対して機械学習することで第4分類器および第4SVM境界線を生成する処理と、
検査対象に対して前記第1分類器で分類を行う処理と、
前記第1SVM境界線と前記検査対象との距離を算出し、当該距離に応じて前記第2分類器、前記第3分類器および前記第4分類器のいずれかを選択し、選択した分類器を用いて前記検査対象を分類する処理と、をコンピュータが実行することを特徴とする学習検査方法。
【請求項10】
コンピュータに、
複数の学習データを含む第1学習データ群に対して機械学習することで、第1分類器および第1SVM境界線を生成する処理と、
前記第1SVM境界線と前記第1学習データ群の各学習データとの距離データを算出する処理と、
前記距離データの分布が中央で分かれていない場合には、前記距離データに応じて、前記第1学習データ群を第2学習データ群、第3学習データ群および第4学習データ群に分割する処理と、
前記第2学習データ群に対して機械学習することで第2分類器および第2SVM境界線を生成し、前記第3学習データ群に対して機械学習することで第3分類器および第3SVM境界線を生成し、前記第4学習データ群に対して機械学習することで第4分類器および第4SVM境界線を生成する処理と、を実行させることを特徴とする学習プログラム。
【請求項11】
コンピュータに、
検査対象に対して
、第1学習データ群に対して機械学習することで得られた第1分類器で分類を行う処理と、
前記第1分類器の第1SVM境界線と前記検査対象との距離を算出する処理と、
算出された距離に応じて、
前記第1学習データ群を第2学習データ群と第3学習データ群と第4学習データ群とに分割した場合の前記第2学習データ群に対して機械学習することで得られた第2分類器、
前記第3学習データ群に対して機械学習することで得られた第3分類器
、および
前記第4学習データ群に対して機械学習することで得られた第4分類器のいずれかを選択し、選択した分類器を用いて前記検査対象を分類する処理と、を実行させることを特徴とする検査プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本件は、学習装置、検査装置、学習検査方法、学習プログラムおよび検査プログラムに関する。
【背景技術】
【0002】
検査対象の画像などについて分類器を用いて良否判定を自動で行う技術が求められている。しかしながら、単一の分類器では、様々な種類の検査対象の良否判定の境界線が複雑になり、検査対象の良否を正確に行うことが困難である。そこで、分類器を多段にする技術が開示されている(例えば、特許文献1,2参照)。
【先行技術文献】
【特許文献】
【0003】
【文献】特開2009-151395号公報
【文献】特開2010-165046号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、固定されたパラメータで評価された分類器を多段に用いるだけでは、正確に良否判定することができない場合がある。
【0005】
1つの側面では、本発明は、正確に良否判定を行うことができる学習装置、検査装置、学習検査方法、学習プログラムおよび検査プログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
1つの態様では、学習装置は、複数の学習データを含む第1学習データ群に対して機械学習することで、第1分類器および第1SVM境界線を生成する機械学習部と、前記第1SVM境界線と前記第1学習データ群の各学習データとの距離データを算出する算出部と、前記距離データの分布が中央で分かれていない場合には、前記距離データに応じて、前記第1学習データ群を第2学習データ群、第3学習データ群および第4学習データ群に分割する分割部と、を備え、前記機械学習部は、前記第2学習データ群に対して機械学習することで第2分類器および第2SVM境界線を生成し、前記第3学習データ群に対して機械学習することで第3分類器および第3SVM境界線を生成し、前記第4学習データ群に対して機械学習することで第4分類器および第4SVM境界線を生成する。
【0007】
1つの態様では、検査装置は、検査対象に対して、第1学習データ群に対して機械学習することで得られた第1分類器で分類を行う検査部と、前記第1分類器の第1SVM境界線と前記検査対象との距離を算出する算出部と、を備え、前記検査部は、前記算出部が算出した距離に応じて、前記第1学習データ群を第2学習データ群と第3学習データ群と第4学習データ群とに分割した場合の前記第2学習データ群に対して機械学習することで得られた第2分類器、前記第3学習データ群に対して機械学習することで得られた第3分類器、および前記第4学習データ群に対して機械学習することで得られた第4分類器のいずれかを選択し、選択した分類器を用いて前記検査対象を分類する。
【発明の効果】
【0008】
正確に良否判定を行うことができる。
【図面の簡単な説明】
【0009】
【
図2】(a)はハードマージンを用いて生成されたSVM境界線を例示する図であり、(b)はソフトマージンを用いて生成されたSVM境界線を例示する図である。
【
図4】(a)および(b)は背景パターンごとのデータ群を例示する図である。
【
図5】(a)は実施例1に係る学習検査装置の全体構成を例示するブロック図であり、(b)は学習検査装置のハードウェア構成を例示するブロック図である。
【
図6】(a)は第1学習データ群を例示する図であり、(b)は良データと不良データとを十分に分離できた場合を例示する図であり、(c)は良データと不良データとが十分に分離できていない場合を例示する図である。
【
図7】(a)は閾値を例示する図であり、(b)は良判定領域、あいまい領域および不良判定領域を例示する図である。
【
図8】分類器格納部に格納された各分類器を例示する図である。
【
図9】学習処理の際に学習検査装置が実行するフローチャートを例示する図である。
【
図10】ユニットルーチンを表すフローチャートを例示する図である。
【
図12】検査処理の際に学習検査装置が実行するフローチャートを例示する図である。
【
図13】テストルーチンを表すフローチャートを例示する図である。
【
図14】検査処理の際に学習検査装置が実行するフローチャートの他の例を例示する図である。
【
図15】(a)は学習データを例示する図であり(b)は検査データを例示する図である。
【
図16】実施例2に係る学習検査装置の全体構成を例示するブロック図である。
【
図17】選択部が実行するフローチャートを例示する図である。
【
図18】(a)~(c)は学習データの選択を例示する図である。
【発明を実施するための形態】
【0010】
実施例の説明に先立って、学習データ群を用いた機械学習について説明する。
【0011】
検査対象の良否判定を行うことで、検査を行う技術が望まれている。例えば、検査対象のデータ(例えば画像データ)に対して良否判定を自動で行うことができれば、検査を自動で行うことができる。良否判定を自動で行うためには、学習データを用いて機械学習することによって、良否判定を行うための最適な分類器を生成しておけばよい。例えば、遺伝的プログラミングによって、最適な分類器を生成することができる。分類器として、SVM(Support Vector Machine)を用いることができる。
【0012】
図1で例示するように、分類器は、複数の学習データを含む学習データ群に対して、2種類のグループに分類するための分離超平面(SVM境界線)を有している。2種類のグループとは、例えば、良データおよび不良データである。学習データ群に含まれる各学習データには、「良」を表すラベルまたは「不良」を表すラベルが付されている。例えば、「良」を表すラベルとして「+1」を用い、「不良」を表すラベルとして「-1」を用いる。例えば、分類器は、様々なSVM境界線のうち、SVM境界線に最も近い学習データ点までの距離(マージン)dminが最大となるような、SVM境界線を有している。
【0013】
次に、ハードマージンおよびソフトマージンについて説明する。
図2(a)は、ハードマージンを用いて生成されたSVM境界線を例示する図である。
図2(a)で例示するように、ハードマージンを用いると、マージン内に学習データが含まれないようにマージンが最大化される。その結果、各学習データのはみ出し距離は0となる。この場合、誤判定が無くなるというメリットが得られる。その一方で、条件を満たすSVM境界線を生成できない場合があるというデメリットがある。また、学習データに特化されたSVM境界線が生成されることになり、汎化性能が低下するというデメリットがある。
【0014】
これに対して、
図2(b)は、ソフトマージンを用いて生成されたSVM境界線を例示する図である。
図2(b)で例示するように、ソフトマージンを用いると、マージン内にある程度の学習データが含まれることが許容される。例えば、{マージン-Σ(はみ出し距離)}が最大となるようにSVM境界線が生成される。この場合、ハードマージンを用いる場合よりも、条件を満たすSVM境界線を見つけることができる可能性が高くなるというメリットが得られる。また、ハードマージンを用いる場合と比較して、汎化性能が高くなるというメリットも得られる。その一方で、マージン内の学習データに対する判定結果については誤っている可能性がある。
【0015】
ソフトマージンを用いる場合、取得された条件が異なる学習データを用いて分類器を生成すると、見逃し判定などの誤判定が発生しやすくなる。見逃し判定とは、
図3で例示するように、不良データが良データであると判定されることである。例えば、複数種類の背景パターンが存在する学習用画像を用いて分類器を生成する場合などに、誤判定が発生しやすくなる。例えば、複数の背景パターンが含まれた検査の場合に一つのアルゴリズムで良否判定を行なおうとすると、画像特徴量分布が複雑になる。良データの画像特徴量と不良データの画像特徴量とが重なると、誤判定が発生する。
【0016】
図4(a)で例示するように、例えば、背景パターンの種類ごとにデータをグループ化すると、各グループにおいて良データと不良データとが含まれることになる。この場合、1つの境界線でデータを分類することが困難である。そこで、
図4(b)で例示するように、データを背景パターンの種類ごとにグループ化し、各グループにおいて良否判定を行うことが望まれる。
【0017】
以下の実施例では、ソフトマージンを用い、背景などの条件が異なるデータに対しても正確に良否判定を行うことができる学習装置、検査装置、学習検査方法、学習プログラム、および検査プログラムについて説明する。
【実施例1】
【0018】
図5(a)は、実施例1に係る学習検査装置100の全体構成を例示するブロック図である。
図5(a)で例示するように、学習検査装置100は、学習データ格納部10、学習部20、距離算出部30、判定部40、分割部50、分類器格納部60、検査データ格納部70、検査部80などとして機能する。
【0019】
図5(b)は、学習検査装置100のハードウェア構成を例示するブロック図である。
図5(b)で例示するように、学習検査装置100は、CPU101、RAM102、記憶装置103、表示装置104等を備える。CPU(Central Processing Unit)101は、中央演算処理装置である。CPU101は、1以上のコアを含む。RAM(Random Access Memory)102は、CPU101が実行するプログラム、CPU101が処理するデータなどを一時的に記憶する揮発性メモリである。記憶装置103は、不揮発性記憶装置である。記憶装置103として、例えば、ROM(Read Only Memory)、フラッシュメモリなどのソリッド・ステート・ドライブ(SSD)、ハードディスクドライブに駆動されるハードディスクなどを用いることができる。記憶装置103は、学習プログラムおよび検査プログラムを記憶している。表示装置104は、液晶ディスプレイなどの表示装置である。
【0020】
例えば、CPU101が記憶装置103に記憶されている学習プログラムを実行することで、
図5(a)の学習データ格納部10、学習部20、距離算出部30、判定部40、分割部50および分類器格納部60が実現される。また、CPU101が記憶装置103に記憶されている検査プログラムを実行することで、
図5(a)の距離算出部30、分類器格納部60、検査データ格納部70および検査部80が実現される。なお、学習検査装置100の各部として、専用の回路などのハードウェアを用いてもよい。
【0021】
図6(a)で例示するように、学習データ格納部10には、複数の学習データを含む第1学習データ群が格納されている。本実施例においては、良データには、一例として「1」の良否ラベルが付されている。不良データには、一例として「-1」の良否ラベルが付されている。学習部20は、ソフトマージンを用いて、この第1学習データ群に対して機械学習することで、分離超平面(第1SVM境界線)を生成し、第1分類器1aを生成する。分類器格納部60は、第1世代の分類器として第1分類器1aを格納する。
【0022】
距離算出部30は、第1SVM境界線に対する各学習データの距離diを算出する。「i」は、学習データ群のうちi番目の学習データを表す。第1SVM境界線よりも良データ側の学習データの距離diは、プラスの値となる。第1SVM境界線よりも不良データ側の学習データの距離diは、マイナスの値となる。
【0023】
図6(b)は、良データと不良データとを十分に分離できた場合を例示する図である。
図6(b)の例では、SVM境界線との距離の分布において、良データ群と不良データ群とが中央(SVM境界線)で互いに離間し、良データ群の分布範囲と不良データ群の分布範囲とが互いに重複していない。このような場合においては、再分類を行わなくてもよい。これに対して、
図6(c)は、良データと不良データとが十分に分離できていない場合を例示する図である。
図6(c)の例では、SVM境界線との距離の分布において、良データ群と不良データ群とが中央で互いに離間していない。したがって、良データ群の分布範囲および不良データ群の分布範囲の少なくとも一部が互いに重複している。このような場合においては、再分類が行うことが求められる。
【0024】
そこで、判定部40は、良データ群と不良データ群とが十分に分離されているか否かを判定する。判定部40は、プラスの閾値(以下、第1閾値)およびマイナスの閾値(以下、第2閾値)を設ける。判定部40は、全ての良データ群が第1閾値を上回りかつすべての不良データ群が第2閾値を下回る場合には、再分類が不要と判定する。それ以外の場合には、判定部40は、再分類が必要と判定する。例えば、
図7(a)で例示するように、diの平均値が良判定では+1、不良判定では-1となるように規格化しておけば、第1閾値=+1とし、第2閾値=-1とすることができる。この場合、-1≦di≦+1のデータ数が0であり、全てのdiの符号が良否ラベルの符号と一致していれば、再分類が不要と判定することができる。
【0025】
再分類が必要と判定されれば、分割部50は、
図7(b)で例示するように、第1閾値を上回る距離の領域を、良判定領域とする。分割部50は、第1閾値以下第2閾値以上の領域を、あいまい領域とする。分割部50は、第2閾値を下回る距離の領域を、不良判定領域とする。分割部50は、第1学習データ群を、良判定領域の第2学習データ群と、あいまい領域の第3学習データ群と、不良判定領域の第4学習データ群とに分割する。
【0026】
学習部20は、第2学習データ群に対して機械学習することで、第2SVM境界線を生成し、第2分類器2aを生成する。学習部20は、第3学習データ群に対して機械学習することで、第3SVM境界線を生成し、第3分類器2bを生成する。学習部20は、第4学習データ群に対して機械学習することで、第4SVM境界線を生成し、第4分類器2cを生成する。分類器格納部60は、第2世代の良判定領域に関連付けて第2分類器2aを格納し、第2世代のあいまい領域に関連付けて第3分類器2bを格納し、第2世代の不良判定領域に関連付けて第4分類器2cを格納する。
【0027】
距離算出部30は、第2学習データ群について、第2SVM境界線に対する各学習データの距離diを算出する。判定部40は、第2学習データ群について、再分類が必要か否かを判定する。再分類が不要と判定されれば、学習部20は、第2学習データ群について、再分類を行わない。再分類が必要と判定されれば、分割部50は、第2学習データ群を良判定領域、あいまい領域、および不良判定領域の3つの学習データ群に振り分ける。学習部20は、さらに各学習データ群に対して学習を行うことで、SVM境界線を生成し、第2世代の良判定領域からの第3世代として、3つの分類器を生成し、分類器格納部60に格納する。これらの作業は、再分類が不要と判定されるまで繰り返される。第3学習データ群および第4学習データ群についても、同様の作業が繰り返される。それにより、あいまい領域の学習データが無くなり、良データ群と不良データ群とを十分に分離することができる。以上のように、再分類が不要と判定されるまで、1つの分類器について次の世代として3つの分類器が生成されることになる。
【0028】
図8は、分類器格納部60に格納された各分類器を例示する図である。
図8で例示するように、第1世代の分類器として、第1分類器1aが生成されている。第2世代の分類器として、第2分類器2a、第3分類器2bおよび第4分類器2cが生成されている。第2分類器2aについて、第3世代として3つの分類器3a、分類器3b、および分類器3cが生成されている。第3分類器2bについて、第3世代として3つの分類器3d、分類器3eおよび分類器3fが生成されている。第4分類器2cについて、第3世代として3つの分類器3g、分類器3hおよび分類器3iが生成されている。再分類が不要と判定された分類器については、末端の分類器であることを示す識別子が関連付けられる。
【0029】
次に、以上の学習処理の詳細についてさらに説明する。
図9は、学習処理の際に学習検査装置100が実行するフローチャートを例示する図である。
図9の処理は、学習処理の全体的な流れを表している。
図9で例示するように、学習部20は、学習データ格納部10から第1学習データ群を読み込む(ステップS1)。次に、学習部20は、第1学習データ群に対して機械学習を行うことで、第1SVM境界線を生成し、第1分類器1aを生成し、分類器格納部60に格納する(ステップS2)。
【0030】
次に、距離算出部30は、第1学習データ群の各学習データについて、第1SVM境界線との距離diを算出する(ステップS3)。次に、判定部40は、第1学習データ群について、再分類が必要か否かを判定する(ステップS4)。例えば、判定部40は、第2閾値(=-1)≦di≦第1閾値(=1)のデータ数が0であり、全てのdiの符号が良否ラベルの符号と一致していれば、再分類が不要と判定することができる。
【0031】
ステップS4で「No」と判定された場合には、フローチャートの実行が終了する。ステップS4で「Yes」と判定された場合には、分割部50は、各学習データについて、距離diが第1閾値(=1)を上回るか否かを判定する(ステップS5)。ステップS5で「Yes」と判定された学習データについて、分割部50は、良判定領域の第2学習データ群に振り分ける(ステップS6)。次に、第2学習データ群について、ユニットルーチンが実行される(ステップS7)。次に、学習部20は、学習収束のフラグが立っているか否かを判定する(ステップS8)。ステップS8で「Yes」と判定された場合、
図9のフローチャートの実行が終了する。ステップS8で「No」と判定された場合、ユニットルーチンがさらに実行される(ステップS9)。以下、学習収束のフラグが立つまでユニットルーチンが繰り返される。
【0032】
ステップS5で「No」と判定された学習データについて、分割部50は、第2閾値(=-1)≦di≦第1閾値(=1)を満たすか否かを判定する(ステップS10)。ステップS10で「Yes」と判定された学習データについて、分割部50は、あいまい領域の第3学習データ群に振り分ける(ステップS11)。次に、第3学習データ群について、ユニットルーチンが実行される(ステップS12)。次に、学習部20は、学習収束のフラグが立っているか否かを判定する(ステップS13)。ステップS13で「Yes」と判定された場合、
図9のフローチャートの実行が終了する。ステップS13で「No」と判定された場合、ユニットルーチンがさらに実行される(ステップS14)。以下、学習収束のフラグが立つまでユニットルーチンが繰り返される。
【0033】
ステップS10で「No」と判定された学習データについて、分割部50は、不良判定領域の第4学習データ群に振り分ける(ステップS15)。次に、第4学習データ群について、ユニットルーチンが実行される(ステップS16)。次に、学習部20は、学習収束のフラグが立っているか否かを判定する(ステップS17)。ステップS17で「Yes」と判定された場合、
図9のフローチャートの実行が終了する。ステップS17で「No」と判定された場合、ユニットルーチンがさらに実行される(ステップS18)。以下、学習収束のフラグが立つまでユニットルーチンが繰り返される。
【0034】
図10は、ユニットルーチンを表すフローチャートを例示する図である。
図10で例示するように、学習部20は、学習対象の学習データ群を読み込む(ステップS21)。次に、学習部20は、読み込んだ学習データ群に対して機械学習を行うことで、SVM境界を生成し、分類器を生成し、分類器格納部60に格納する(ステップS22)。次に、距離算出部30は、各学習データについて、SVM境界との距離diを算出する(ステップS23)。次に、判定部40は、学習データ群について、再分類が必要か否かを判定する(ステップS24)。例えば、判定部40は、第2閾値(=-1)≦di≦第1閾値(=1)のデータ数が0であり、全てのdiの符号が良否ラベルの符号と一致していれば、再分類が不要と判定することができる。
【0035】
ステップS24で「No」と判定された場合には、学習部20は、学習収束のフラグを立てる(ステップS25)。その後、ユニットルーチンの実行が終了する。ステップS24で「Yes」と判定された場合には、分割部50は、各学習データについて、距離diが第1閾値(=1)を上回るか否かを判定する(ステップS26)。ステップS26で「Yes」と判定された学習データについて、分割部50は、良判定領域の学習データ群に振り分ける(ステップS27)。ステップS26で「No」と判定された学習データについて、分割部50は、第2閾値(=-1)≦di≦第1閾値(=1)を満たすか否かを判定する(ステップS28)。ステップS28で「Yes」と判定された学習データについて、分割部50は、あいまい領域の学習データ群に振り分ける(ステップS29)。ステップS28で「No」と判定された学習データについて、分割部50は、不良判定領域の学習データ群に振り分ける(ステップS30)。学習部20は、良判定領域の学習データ群、あいまい領域の学習データ群、および不良判定領域の学習データ群の2つの学習データ群を、それぞれ学習対象の学習データ群に設定する(ステップS31)。以上の処理の実行によって、ユニットルーチンが終了する。
【0036】
本実施例に係る学習処理によれば、学習部20は、複数の学習データを含む第1学習データ群に対して機械学習することで、第1分類器1aおよび第1SVM境界線を生成する。距離算出部30は、第1SVM境界線と第1学習データ群の各学習データとの距離データを算出する。分割部50は、距離データの分布が中央で分かれていない場合には、当該距離データに応じて、第1学習データ群を第2学習データ群、第3学習データ群および第4学習データ群に分割する。学習部20は、第2学習データ群に対して機械学習することで第2分類器2aおよび第2SVM境界線を生成し、第3学習データ群に対して機械学習することで第3分類器2bおよび第3SVM境界線を生成し、第4学習データ群に対して機械学習することで第4分類器2cおよび第4SVM境界線を生成する。このように、学習データとSVM境界線との距離に応じて学習データ群を分割してさらに機械学習することで、正確に良否判定することができるようになる。例えば、複数の背景パターンが含まれる検査対象について、背景パターンごとに良否判定することができるようになる。
【0037】
学習部20による分類器およびSVM境界線の生成、距離算出部30による各学習データと生成されたSVM境界線との距離の算出、および分割部50による学習データ群の3つの学習データ群への分割は、SVM境界線と各学習データとの距離データの分布が中央で分かれるまで繰り返されることが好ましい。この場合、より正確に良否判定することができるようになる。
【0038】
続いて、検査処理について説明する。検査データ格納部70は、検査対象の検査時に取得された検査対象の検査データを格納している。検査データは、例えば、製造工程の各製品の画像である。検査部80は、
図11で例示するように、検査データ格納部70に格納されている検査データを読み込む。検査部80は、分類器格納部60に格納されている第1分類器1aを用いて、検査データを分類する。距離算出部30は、検査データと第1SVM境界線との距離dを算出する。
【0039】
検査部80は、算出された距離dに応じて、分類器格納部60に格納されている分類器のうちどの分類器を用いるか決定する。d>第1閾値(=+1)の場合には、検査データは良判定領域に属するため、検査部80は、第2世代の良判定領域に関連付けてある第2分類器2aを用いると決定する。次に、検査部80は、分類器格納部60から第2分類器2aを取得し、第2分類器2aを用いて検査データを分類する。
【0040】
第2閾値(=-1)≦d≦第1閾値の場合には、検査データはあいまい領域に属するため、検査部80は、第2世代のあいまい領域に関連付けてある第3分類器2bを用いると決定する。次に、検査部80は、分類器格納部60から第3分類器2bを取得し、第3分類器2bを用いて検査データを分類する。
【0041】
d<第2閾値の場合には、検査データは不良判定領域に属するため、検査部80は、第2世代の不良判定領域に関連付けてある第4分類器2cを用いると決定する。次に、検査部80は、分類器格納部60から第4分類器2cを取得し、第4分類器2cを用いて検査データを分類する。検査部80は、検査データが末端の分類器に到達するまでこれらの動作を繰り返す。
【0042】
検査データが末端の分類器に到達した場合、検査部80は、当該末端の分類器を用いて検査データを分類する。距離算出部30は、検査データと当該末端の分類器のSVM境界線との距離dを算出する。例えば、検査部80は、d≧0の場合には、検査データが良データであると判定し、表示装置104に当該判定結果を表示させる。また、検査部80は、d<0の場合には、検査データが不良データであると判定し、表示装置104に当該判定結果を表示させる。このようにすることで、検査データの良否を判定することができる。
【0043】
あるいは、d>第1閾値の場合には、検査データは良判定領域に属するため、検査部80は、検査データが良データであると判定し、表示装置104に当該判定結果を表示させる。第2閾値(=-1)≦d≦第1閾値(=1)の場合には、検査データはあいまい領域に属するため、検査部80は、検査データの良否判定が不可と判定し、表示装置104に当該判定結果を表示させる、第2閾値(=-1)<dの場合には、検査データは不良判定領域に属するため、検査部80は、検査データが不良データであると判定し、表示装置104に当該判定結果を表示させる。このようにすることで、検査データの良否判定を行うことができるとともに、良否判定不可と判定することも可能となる。
【0044】
次に、以上の検査処理の詳細についてさらに説明する。
図12は、検査処理の際に学習検査装置100が実行するフローチャートを例示する図である。
図12の処理は、学習処理の全体的な流れを表している。
図12で例示するように、検査部80は、検査データ格納部70から検査データを読み込む(ステップS41)。次に、検査部80は、分類器格納部60に格納されている第1分類器1aを用いて検査データを分類する。距離算出部30は、検査データと第1SVM境界線との距離dを算出する(ステップS42)。
【0045】
次に検査部80は、分類器格納部60から取得した分類器が末端の分類器であるか否かを判定する(ステップS43)。ステップS43で「No」と判定された場合、検査部80は、d>第1閾値(=1)であるか否かを判定する(ステップS44)。ステップS44で「Yes」と判定された場合、検査部80は、検査データが第2世代の良判定領域に属すると判定し、第2世代の良判定領域に関連付けてある第2分類器2aを分類器格納部60から取得する(ステップS45)。次に、検査データに対して、テストルーチンが実行される(ステップS46)。次に、検査部80は、テストルーチンで取得された分類器が末端の分類器であるか否かを判定する(ステップS47)。ステップS47で「No」と判定された場合、テストルーチンがさらに実行される(ステップS48)。以下、取得された分類器が末端の分類器であると判定されるまでテストルーチンが繰り返される。
【0046】
ステップS44で「No」と判定された場合、検査部80は、第2閾値(=-1)≦d≦第1閾値(=1)であるか否かを判定する(ステップS49)。ステップS49で「Yes」と判定された場合、検査部80は検査データが第2世代のあいまい領域に属すると判定し、第2世代のあいまい領域に関連付けてある第3分類器2bを分類器格納部60から取得する(ステップS50)。次に、検査データに対してテストルーチンが実行される(ステップS51)。次に、検査部80は、テストルーチンで取得された分類器が末端の分類器であるか否かを判定する(ステップS52)。ステップS52で「No」と判定された場合、テストルーチンがさらに実行される(ステップS53)。以下、取得された分類器が末端の分類器であると判定されるまでテストルーチンが繰り返される。
【0047】
ステップS49で「No」と判定された場合、検査部80は検査データが第2世代の不良判定領域に属すると判定し、第2世代の不良判定領域に関連付けてある第4分類器2cを分類器格納部60から取得する(ステップS54)。次に、検査データに対してテストルーチンが実行される(ステップS55)。次に、検査部80は、テストルーチンで取得された分類器が末端の分類器であるか否かを判定する(ステップS56)。ステップS56で「No」と判定された場合、テストルーチンがさらに実行される(ステップS57)。以下、取得された分類器が末端の分類器であると判定されるまでテストルーチンが繰り返される。
【0048】
ステップS43、ステップS47、ステップS52、またはステップS56で「Yes」と判定された場合、検査部80は、末端の分類器を用いて検査データを分類する。距離算出部30は、検査データと当該末端の分類器のSVM境界線との距離dを算出する(ステップS58)。検査部80は、d≧0であるか否かを判定する(ステップS59)。ステップS59で「Yes」と判定された場合、検査部80は、検査データが良データであると判定し、表示装置104に当該判定結果を表示させる(ステップS60)。ステップS59で「No」と判定された場合、検査部80は、検査データが不良データであると判定し、表示装置104に当該判定結果を表示させる(ステップS61)。このようにすることで、検査データの良否を判定することができる。
【0049】
図13は、テストルーチンを表すフローチャートを例示する図である。
図13で例示するように、検査部80は、取得された分類器が末端の分類器であるか否かを判定する(ステップS71)。ステップS71で「Yes」と判定された場合、テストルーチンは終了する。ステップS71で「No」と判定された場合、検査部80は、分類器を用いて検査データを分類する。距離算出部30は、検査データと分類器のSVM境界線との距離dを算出する(ステップS72)。検査部80は、d>第1閾値(=1)であるか否かを判定する(ステップS73)。ステップS73で「Yes」と判定された場合、検査部80は、検査データが良判定領域に属すると判定し、当該良判定領域に関連付けられている分類器を取得する(ステップS74)。ステップS73で「No」と判定された場合、検査部80は、第2閾値(=-1)≦d≦第1閾値(=1)であるか否かを判定する(ステップS75)。ステップS75で「Yes」と判定された場合、検査部80は、検査データがあいまい領域に属すると判定し、当該あいまい領域に関連付けられている分類器を取得する(ステップS76)。ステップS75で「No」と判定された場合、検査部80は、検査データが不良判定領域に属すると判定し、当該不良判定領域に関連付けられている分類器を取得する(ステップS77)。以上の処理により、テストルーチンが終了する。
【0050】
図14は、検査処理の際に学習検査装置100が実行するフローチャートの他の例を例示する図である。
図14で例示するように、
図12と同様のステップS41~S57が実行される。ステップS43、ステップS47、ステップS52、またはステップS56で「Yes」と判定された場合、検査部80は、末端の分類器を用いて当該検査データを分類する。距離算出部30は、検査データと当該末端の分類器のSVM境界線との距離dを算出する(ステップS81)。検査部80は、d>第1閾値(=1)であるか否かを判定する(ステップS82)。ステップS82で「Yes」と判定された場合、検査部80は、検査データが良データであると判定し、表示装置104に当該判定結果を表示させる(ステップS83)。ステップS82で「No」と判定された場合、検査部80は、第2閾値(=-1)≦d≦第1閾値(=1)であるか否かを判定する(ステップS84)。ステップS84で「Yes」と判定された場合、検査データの良否判定が不可と判定し、表示装置104に当該判定結果を表示させる(ステップS85)。ステップS84で「No」と判定された場合、検査部80は、検査データが不良データであると判定し、表示装置104に当該判定結果を表示させる(ステップS86)。
【0051】
本実施例に係る検査処理によれば、検査部80は、検査対象の検査データに対して第1分類器1aで分類を行う。距離算出部30は、第1分類器1aの第1SVM境界線と検査対象との距離を算出する。検査部80は、距離算出部30が算出した距離に応じて、第2分類器2a、第3分類器2bおよび第4分類器2cのいずれかを選択し、選択した分類器を用いて検査対象を分類する。このように、検査データとSVM境界線との距離に応じて、予め生成しておいた3つの分類器から選択を行うことで、正確に良否判定できるようになる。
【0052】
第1分類器1aは、複数の学習データを含む第1学習データ群に対して機械学習することで生成された分類器であり、第2分類器2a、第3分類器2bおよび第4分類器2cは、それぞれ、第1分類器1aに係る第1SVM境界線と第1学習データ群の各学習データとの距離データに応じて第1学習データ群を分割することで得られた第2学習データ群、第3学習データ群および第4学習データ群に対して機械学習することで生成された分類器であることが好ましい。この場合、予め、機械学習によって適切な分類器を生成しておくことができるため、正確に良否判定できるようになる。
【0053】
機械学習対象の学習データ群を用いた分類器およびSVM境界線の生成、各学習データと生成されたSVM境界線との距離の算出、および学習データ群の3つの学習データ群への分割は、SVM境界線と各学習データとの距離データの分布が中央で分かれるまで繰り返され、生成された分類器に係るSVM境界線と各学習データとの距離データの分布が中央で分かれている場合に当該分類器に識別子が付されている。この場合において、距離算出部30による距離の算出と、検査部80による3つの分類器からの選択とが、距離算出部30によって算出された距離に応じて選択される分類器に識別子が付されているまで繰り返されることが好ましい。この場合、距離データの分布が中央で分かれるまで分類器の生成が繰り返されるため、より正確に良否判定できるようになる。
【0054】
なお、上記各例において、第1閾値および第2閾値の絶対値が同一であるが、それに限られない。例えば、第1閾値の絶対値と第2閾値の絶対値とが異なっていてもよい。
【0055】
上記学習処理において、学習部20が、複数の学習データを含む第1学習データ群に対して機械学習することで、第1分類器および第1SVM境界線を生成し、第2学習データ群に対して機械学習することで第2分類器および第2SVM境界線を生成し、第3学習データ群に対して機械学習することで第3分類器および第3SVM境界線を生成し、第4学習データ群に対して機械学習することで第4分類器および第4SVM境界線を生成する機械学習部の一例として機能する。距離算出部30が、前記第1SVM境界線と前記第1学習データ群の各学習データとの距離データを算出する算出部の一例として機能する。分割部50が、前記距離データの分布が中央で分かれていない場合には、前記距離データに応じて、前記第1学習データ群を第2学習データ群、第3学習データ群および第4学習データ群に分割する分割部の一例として機能する。
【0056】
上記検査処理において、検査部80が、検査対象に対して第1分類器で分類を行い、算出部が算出した距離に応じて、第2分類器、第3分類器および第4分類器のいずれかを選択し、選択した分類器を用いて前記検査対象を分類する検査部の一例として機能する。距離算出部30が、前記第1分類器の第1SVM境界線と前記検査対象との距離を算出する算出部の一例として機能する。
【実施例2】
【0057】
実施例1では、背景などの条件が異なるデータを、それぞれ異なる分類器で分類することによって正確に良否判定を行うことができる学習装置、検査装置、学習検査方法、学習プログラム、および検査プログラムについて説明した。ところで、学習データおよび検査データにおいて、背景模様に、ゴミや傷などの欠陥が含まれる場合がある。例えば、
図15(a)で例示するように、学習データの良データに、規則的な斑点模様の背景模様が含まれる場合がある。一方、学習データの不良データに、縞模様にシミなどの欠陥が含まれる場合がある。このような場合、精度の高い分類器を生成することが困難となる場合がある。
【0058】
精度の高い分類器の生成ができないと、検査データの分類精度が低下する。例えば、
図15(b)で例示するように、良データに分類されるべき検査データにはゴミなどの欠陥は含まれないが背景模様が存在する場合に、当該検査データが不良データに分類される場合がある。また、不良データに分類されるべき検査データにゴミなどの欠陥が含まれる場合に、当該検査データが良データに分類される場合がある。
【0059】
したがって、ゴミや傷などの欠陥が含まれる背景模様の学習データと、欠陥が含まれない背景模様の学習データとが、それぞれ異なる領域に分類されることが好ましい。そこで、人が学習データを確認し、学習データから、欠陥が明確に視認できる学習データと、欠陥がほとんど視認されない学習データとを選択することが考えられる。この場合、欠陥が含まれているか否かが不明確な学習データを排除することができ、精度の高い分類器を生成できるようになる。
【0060】
しかしながら、人が1つ1つのデータの背景模様を確認すると手間を要することになり、コストが増大する。そこで、背景模様が共通する学習データが同じグループに分類され、当該グループが、欠陥の無い背景模様を含む学習データと欠陥を含む背景模様を含む学習データとに分類されるような学習データを選択して学習することが望まれる。そこで、実施例2では、背景模様が共通する学習データ群が、欠陥の無い背景模様を含む学習データと欠陥を含む背景模様を含む学習データとに分類されるような学習データを選択する例について説明する。
【0061】
図16は、実施例2に係る学習検査装置100aの全体構成を例示するブロック図である。
図16で例示するように、学習検査装置100aが実施例1の学習検査装置100と異なるのは、選択部90をさらに備える点である。選択部90は、ユーザによって入力される学習データ群から少なくとも一部の学習データを選択して学習データ格納部10に格納する。以下、選択部90の動作について説明する。
【0062】
図17は、選択部90が実行するフローチャートを例示する図である。まず、選択部90は、ユーザによって入力される学習データ群の各学習データについて、特徴量を抽出し、各学習データを特徴量空間においてマッピングする(ステップS91)。
図18(a)は、マッピングの結果を例示する図である。
図18(a)の例では、特徴量Aおよび特徴量Bの2軸が用いられている。例えば、特徴量として、平均輝度、輝度分布、コントラスト、周波数情報などを用いることができる。
【0063】
次に、選択部90は、抽出した特徴量を用いて、学習データ群に対してクラスタリングを行う(ステップS92)。
図18(b)は、クラスタリングの結果を例示する図である。
図18(b)の例では、学習データ群が4つのクラスタに分類されている。各クラスタは、〇で囲まれている。クラスタリング手法は、特に限定されるものではない。例えば、クラスタリング手法として、K-means法などを用いることができる。画像において背景模様の占有面積が大きければ、同じ背景模様の学習データは同じクラスタに分類されると見込まれる。
【0064】
次に、選択部90は、要素数が最大のクラスタ(以下、最大クラスタと称する)を探す(ステップS93)。最大クラスタを探索することで、支配的な背景特徴を有するクラスタを選択することができる。
【0065】
次に、選択部90は、最大クラスタの重心に1番近い学習データiを探す(ステップS94)。学習データiとして、最大クラスタの中心付近の学習データを探索してもよく、最大クラスタに含まれるいずれかの学習データを探索してもよい。ただし、最大クラスタの重心に一番近い学習データを探索することで、最大クラスタの特徴量が最も反映された学習データを探索することができる。
【0066】
次に、選択部90は、特徴量空間における学習データiと学習データjとの距離を算出する(ステップS95)。ステップS95が最初に実行される際には、j=1である。次回以降、jに1が足し合わされる。それにより、各学習データとの距離が順に算出される。ステップS95の実行後、選択部90は、jが学習データ群の学習データ数よりも小さいか否かを判定する(ステップS96)。ステップS96で「Yes」と判定された場合、ステップS95から再度実行される。ステップS95およびステップS96が繰り返し実行されることで、学習データiと他の学習データとの距離が算出される。
図18(b)では、算出結果が例示されている。
【0067】
ステップS96で「No」と判定された場合、選択部90は、学習データiとk番目に近い学習データを探す(ステップS97)。ステップS97が最初に実行される際には、k=1である。次回以降、kに1が足し合わされる。それにより、学習データiと近い順に学習データが探索されることになる。次に、選択部90は、学習データkが学習データiと同じクラスタかつ同じラベルであるか否かを判定する(ステップS98)。ラベルとは、上述したように、「良」を表すラベルおよび「不良」を表すラベルである。ステップS98で「Yes」と判定された場合、選択部90は、学習データkを採用する(ステップS99)。ステップS98で「No」と判定された場合、選択部90は、学習データkを不採用とする(ステップS100)。ステップS99またはステップS100の実行後、選択部90は、kがNよりも小さいか否かを判定する(ステップS101)。ステップS101で「Yes」と判定された場合、ステップS97から再度実行される。ステップS97~ステップS101が繰り返し実行されることで、最大クラスタ内で学習データiから近いN個の学習データのうち学習データiと同じラベルの学習データが採用される。
【0068】
次に、選択部90は、学習データiとL番目に遠い学習データを探す(ステップS102)。ステップS102が最初に実行される際には、L=1である。次回以降に、Lに1が足し合わされる。それにより、学習データiと遠い順に学習データが探索されることになる。次に、選択部90は、学習データLが学習データiと異なるクラスタかつ異なるラベルであるか否かを判定する(ステップS103)。ステップS103で「Yes」と判定された場合、選択部90は、学習データLを採用する(ステップS104)。ステップS103で「No」と判定された場合、選択部90は、学習データLを不採用とする(ステップS105)。ステップS104の実行後またはステップS105の実行後、選択部90は、LがMよりも小さいか否かを判定する(ステップS106)。ステップS106で「Yes」と判定された場合、ステップS102から再度実行される。ステップS102~ステップS106が繰り返し実行されることで、最大クラスタ以外の学習データのうち、学習データiから遠いM個の学習データのうち学習データiと異なるラベルの学習データが採用される。
【0069】
ステップS106で「No」と判定された場合、選択部90は、採用された学習データと学習データiとを、第1学習データ群として学習データ格納部10に格納する(ステップS107)。
図18(c)は、第1学習データ群を例示する。
【0070】
本実施例によれば、特徴量空間上のクラスタラベルと距離という背景情報が各学習データに自動で付与される。それにより、ユーザは、学習データと、学習データごとの良否ラベルを与えるだけで、学習に適した学習データを自動で選択することができる。
【0071】
また、特徴量空間上のクラスタラベルと距離とによって、学習させたい背景模様をもつ画像を自動で選択することができる。それにより、良否ラベルだけの入力情報から背景模様ごとに特化したアルゴリズムを生成するような段構造を生成できるようになる。また、背景模様ごとに特化した良否判定アルゴリズムが生成されるため、雑多な学習データに対する良否判定アルゴリズムに比べて良否判定の正答率が向上する。
【0072】
以上、本発明の実施例について詳述したが、本発明は係る特定の実施例に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【0073】
10 学習データ格納部
20 学習部
30 距離算出部
40 判定部
50 分割部
60 分類器格納部
70 検査データ格納部
80 検査部
90 選択部
100 学習検査装置
104 表示装置