(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023052707
(43)【公開日】2023-04-12
(54)【発明の名称】モデル生成方法、モデル生成装置、異常検知方法、異常検知装置及びプログラム
(51)【国際特許分類】
G06T 7/00 20170101AFI20230405BHJP
G06N 20/00 20190101ALI20230405BHJP
【FI】
G06T7/00 350B
G06N20/00 130
【審査請求】未請求
【請求項の数】18
【出願形態】OL
(21)【出願番号】P 2020013838
(22)【出願日】2020-01-30
(71)【出願人】
【識別番号】515130201
【氏名又は名称】株式会社Preferred Networks
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(72)【発明者】
【氏名】齋藤 真樹
【テーマコード(参考)】
5L096
【Fターム(参考)】
5L096AA06
5L096BA02
5L096BA03
5L096BA04
5L096BA05
5L096CA02
5L096DA02
5L096EA43
5L096FA16
5L096GA51
5L096HA11
5L096KA04
(57)【要約】 (修正有)
【課題】検知対象データにおける異常を高精度に検知するモデル生成方法、モデル生成装置、異常検知方法、異常検知装置及びプログラムを提供する。
【解決手段】モデル生成方法は、1つ以上のプロセッサが、検知対象データを異常検知モデルに入力し、異常検知モデルから異常度マップを取得するステップと、1つ以上のプロセッサが、検知対象データ内の領域を示す領域データと、領域が正常又は異常であるかを示すラベル値とのペアを含む領域ラベルを取得するステップと、1つ以上のプロセッサが、異常度マップと領域データとから異常度スコアを取得するステップと、1つ以上のプロセッサが、異常度スコアとラベル値とから検知対象データの損失値を取得するステップと、1つ以上のプロセッサが、損失値に基づき前記異常検知モデルのパラメータを更新するステップと、を有する。
【選択図】
図3
【特許請求の範囲】
【請求項1】
1つ以上のプロセッサが、検知対象データを異常検知モデルに入力し、前記異常検知モデルから異常度マップを取得するステップと、
前記1つ以上のプロセッサが、前記検知対象データ内の領域を示す領域データと、前記領域が正常又は異常であるかを示すラベル値とのペアを含む領域ラベルを取得するステップと、
前記1つ以上のプロセッサが、前記異常度マップと前記領域データとから異常度スコアを取得するステップと、
前記1つ以上のプロセッサが、前記異常度スコアと前記ラベル値とから前記検知対象データの損失値を取得するステップと、
前記1つ以上のプロセッサが、前記損失値に基づき前記異常検知モデルのパラメータを更新するステップと、
を有するモデル生成方法。
【請求項2】
前記領域ラベルを取得するステップは、前記検知対象データのラベルを領域ラベルに変換することによって行われる、請求項1記載のモデル生成方法。
【請求項3】
前記検知対象データは、画像データであり、
前記領域ラベルは、前記画像データ内の領域を示すバイナリ画像と、前記領域が正常又は異常であるかを示すバイナリ値とのペアを含む、請求項1、若しくは請求項2に記載のモデル生成方法。
【請求項4】
前記異常度スコアを取得するステップは、前記異常度マップと前記バイナリ画像とに基づき前記領域の領域異常度マップを生成し、プーリング関数によって前記領域異常度マップから前記異常度スコアを取得する、請求項3に記載のモデル生成方法。
【請求項5】
前記検知対象データのラベルは、前記検知対象データ全体に異常が含まれているかを示すバイナリ値を含み、
前記検知対象データに対応する領域ラベルは、前記検知対象データ全体を示す領域データと、前記バイナリ値を示すラベル値とのペアを含む、請求項1乃至4何れか一項記載のモデル生成方法。
【請求項6】
前記検知対象データのラベルは、前記検知対象データ内の矩形領域に異常が含まれていることを示す矩形情報を含み、
前記検知対象データに対応する領域ラベルは、前記矩形領域を示す領域データと、前記領域が異常であることを示すラベル値とのペアと、前記検知対象データ内の前記矩形領域を除く領域を示す領域データと、前記矩形領域を除く領域が正常であることを示すラベル値とのペアとを含む、請求項1乃至5何れか一項記載のモデル生成方法。
【請求項7】
前記検知対象データのラベルは、前記検知対象データ内の指定領域に異常が含まれていることを示す領域情報を含み、
前記検知対象データに対応する領域ラベルは、前記指定領域を示す領域データと、前記指定領域が異常であることを示すラベル値とのペアと、前記検知対象データ内の前記指定領域を除く領域を示す領域データと、前記指定領域を除く領域が正常であることを示すラベル値とのペアとを含む、請求項1乃至6何れか一項記載のモデル生成方法。
【請求項8】
1つ以上のメモリと、
1つ以上のプロセッサと、
を有し、
前記1つ以上のプロセッサは、
検知対象データを異常検知モデルに入力し、前記異常検知モデルから異常度マップを取得し、
前記検知対象データ内の領域を示す領域データと、前記領域が正常又は異常であるかを示すラベル値とのペアを含む領域ラベルを取得し、
前記異常度マップと前記領域データとから異常度スコアを取得し、
前記異常度スコアと前記ラベル値とから前記検知対象データの損失値を取得し、
前記損失値に基づき前記異常検知モデルのパラメータを更新する、
よう構成されるモデル生成装置。
【請求項9】
前記領域ラベルの取得は、前記検知対象データのラベルを領域ラベルに変換することにより行われる、請求項8記載のモデル生成装置。
【請求項10】
前記検知対象データは、画像データであり、
前記領域ラベルは、前記画像データ内の領域を示すバイナリ画像と、前記領域が正常又は異常であるかを示すバイナリ値とのペアを含む、請求項8若しくは請求項9に記載のモデル生成装置。
【請求項11】
前記1つ以上のプロセッサは、前記異常度マップと前記バイナリ画像とに基づき前記領域の領域異常度マップを生成し、プーリング関数によって前記領域異常度マップから前記異常度スコアを取得する、請求項10記載のモデル生成装置。
【請求項12】
前記検知対象データのラベルは、前記検知対象データ全体に異常が含まれているかを示すバイナリ値を含み、
前記検知対象データに対応する領域ラベルは、前記検知対象データ全体を示す領域データと、前記バイナリ値を示すラベル値とのペアを含む、請求項8乃至11何れか一項記載のモデル生成装置。
【請求項13】
前記検知対象データのラベルは、前記検知対象データ内の矩形領域に異常が含まれていることを示す矩形情報を含み、
前記検知対象データに対応する領域ラベルは、前記矩形領域を示す領域データと、前記領域が異常であることを示すラベル値とのペアと、前記検知対象データ内の前記矩形領域を除く領域を示す領域データと、前記矩形領域を除く領域が正常であることを示すラベル値とのペアとを含む、請求項8乃至12何れか一項記載のモデル生成装置。
【請求項14】
前記検知対象データのラベルは、前記検知対象データ内の指定領域に異常が含まれていることを示す領域情報を含み、
前記検知対象データに対応する領域ラベルは、前記指定領域を示す領域データと、前記指定領域が異常であることを示すラベル値とのペアと、前記検知対象データ内の前記指定領域を除く領域を示す領域データと、前記指定領域を除く領域が正常であることを示すラベル値とのペアとを含む、請求項8乃至13何れか一項記載のモデル生成装置。
【請求項15】
検知対象データを異常検知モデルに入力し、前記異常検知モデルから異常度マップを取得する処理と、
前記検知対象データ内の領域を示す領域データと、前記領域が正常又は異常であるかを示すラベル値とのペアを含む領域ラベルを取得する処理と、
前記異常度マップと前記領域データとから異常度スコアを取得する処理と、
前記異常度スコアと前記ラベル値とから前記検知対象データの損失値を取得する処理と、
前記損失値に基づき前記異常検知モデルのパラメータを更新する処理と、
を1つ以上のコンピュータに実行させるプログラム。
【請求項16】
1つ以上のプロセッサが、検知対象データを訓練済み異常検知モデルに入力し、前記訓練済み異常検知モデルから異常度マップを取得するステップと、
前記1つ以上のプロセッサが、前記異常度マップからプーリング関数に従って異常度スコアを取得するステップと、
前記1つ以上のプロセッサが、前記異常度スコアに基づき前記検知対象データが正常又は異常であるか判定するステップと、
を有する異常検知方法。
【請求項17】
1つ以上のメモリと、
1つ以上のプロセッサと、
を有し、
前記1つ以上のプロセッサは、
検知対象データを訓練済み異常検知モデルに入力し、前記訓練済み異常検知モデルから異常度マップを取得し、
前記異常度マップからプーリング関数に従って異常度スコアを取得し、
前記異常度スコアに基づき前記検知対象データが正常又は異常であるか判定する、
よう構成される異常検知装置。
【請求項18】
検知対象データを訓練済み異常検知モデルに入力し、前記訓練済み異常検知モデルから異常度マップを取得する処理と、
前記異常度マップからプーリング関数に従って異常度スコアを取得する処理と、
前記異常度スコアに基づき前記検知対象データが正常又は異常であるか判定する処理と、
を1つ以上のコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、モデル生成方法、モデル生成装置、異常検知方法、異常検知装置及びプログラムに関する。
【背景技術】
【0002】
与えられたデータに異常が含まれているかを機械学習によって識別する異常検知問題は、産業用途において広範な応用が考えられる。例えば、外観検査、医用画像診断、監視カメラの異常検知、リモートセンシング、自動運転などがあげられる。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
本開示の課題は、検知対象データにおける異常を高精度に検知する技術を提供することである。
【課題を解決するための手段】
【0005】
上記課題を解決するため、本開示の一態様は、
1つ以上のプロセッサが、検知対象データを異常検知モデルに入力し、前記異常検知モデルから異常度マップを取得するステップと、
前記1つ以上のプロセッサが、前記検知対象データ内の領域を示す領域データと、前記領域が正常又は異常であるかを示すラベル値とのペアを含む領域ラベルを取得するステップと、
前記1つ以上のプロセッサが、前記異常度マップと前記領域データとから異常度スコアを取得するステップと、
前記1つ以上のプロセッサが、前記異常度スコアと前記ラベル値とから前記検知対象データの損失値を取得するステップと、
前記1つ以上のプロセッサが、前記損失値に基づき前記異常検知モデルのパラメータを更新するステップと、
を有するモデル生成方法に関する。
【図面の簡単な説明】
【0006】
【
図1】本開示の一実施例による異常検知処理を示す概略図である。
【
図2】本開示の一実施例によるモデル生成装置の機能構成を示すブロック図である。
【
図3】本開示の一実施例によるモデル生成処理を示すフローチャートである。
【
図4】本開示の一実施例による異常検知装置の機能構成を示すブロック図である。
【
図5】本開示の一実施例による異常検知処理を示すフローチャートである。
【
図6】本開示の一実施例によるモデル生成装置及び異常検知装置のハードウェア構成を示すブロック図である。
【発明を実施するための形態】
【0007】
以下、図面に基づいて本開示の実施の形態を説明する。
[本開示の概略]
以下の実施例では、異常検知モデルを生成するモデル生成装置と、生成した異常検知モデルを利用した異常検知装置とが開示される。
【0008】
図1に示されるように、本開示の一実施例によるモデル生成装置100は、データベース300に格納されている訓練用ラベル付きサンプルデータを利用して、以下で詳細に説明される訓練処理に従って訓練対象の異常検知モデルを訓練する。ここで、異常検知モデルは、例えば、畳み込みニューラルネットワークによって実現され、画像データなどのサンプルデータを入力として受け取り、画像データ内の異常箇所を示す異常度マップ(anomaly map)を出力する。異常検知モデルの訓練が終了すると、モデル生成装置100は、訓練済み異常検知モデルを異常検知装置200に提供する。
【0009】
異常検知装置200は、検知対象のサンプルデータを異常検知モデルに入力し、異常検知モデルから出力された異常度マップから導出された異常度スコアに基づき検知対象のサンプルデータが正常又は異常であるか判定する。
[モデル生成装置]
図2を参照して、本開示の一実施例によるモデル生成装置100を説明する。
図2は、本開示の一実施例によるモデル生成装置100の機能構成を示すブロック図である。
【0010】
図2に示されるように、モデル生成装置100は、モデル処理部110、ラベル変換部120及び損失算出部130を有する。
【0011】
モデル処理部110は、検知対象データを異常検知モデルに入力し、異常検知モデルから異常度マップを取得する。具体的には、モデル処理部110は、データベース300に格納されている訓練用ラベル付きサンプルデータのうち画像データなどのサンプルデータを異常検知モデルに入力し、異常度マップを取得する。当該異常度マップは、サンプルデータ内の異常箇所を示し、例えば、異常度の高い箇所を大きな値で示し、当該箇所以外を小さな値で示す2次元マップであってもよい。
【0012】
一実施例では、異常検知モデルは、畳み込みニューラルネットワークであってもよいし、あるいは、異常箇所のない正常なサンプルデータと入力された検知対象データとの間の差分に基づき異常箇所を検出する何れか適切な計算モデルであってもよい。モデル処理部110は、後述される訓練手法に従って異常検知モデルの畳み込みニューラルネットワーク又は計算モデルのパラメータを更新する。
【0013】
ラベル変換部120は、検知対象データのラベルを領域ラベルに変換する。ここで、領域ラベルは、検知対象データ内の領域を示す領域データと、当該領域が正常又は異常であるかを示すラベル値とのペアを含む。具体的には、ラベル変換部120は、訓練用ラベル付きサンプルデータのうち異常検知モデルに入力されたサンプルデータに対応するラベルL1,L2又はL3をそれぞれ領域ラベルRL1,RL2又はRL3に変換する。領域ラベルは、サンプルデータ内の領域を示すバイナリ画像と、当該領域が正常又は異常であるかを示すバイナリ値"good"又は"bad"とのペアから構成され、ラベル変換部120は、入力されるラベルL1,L2又はL3のタイプに対応して領域ラベルRL1,RL2又はRL3を生成する。
【0014】
一例として、検知対象データのラベルL1は、検知対象データ全体に異常が含まれているかを示すバイナリ値(good/bad)を含むものであってもよい。例えば、サンプルデータに傷などの異常が含まれている場合、当該サンプルデータのラベルは"bad"に設定され、サンプルデータに異常が含まれておらず、正常である場合、当該サンプルデータのラベルは"good"に設定されてもよい。この場合、検知対象データに対応する領域ラベルRL1は、検知対象データ全体を示す領域データと、バイナリ値を示すラベル値とのペアを含むようにしてもよい。例えば、ラベル変換部120は、図示されるように、サンプルデータ全体が"bad"に設定されたラベルL1を、サンプルデータ全体を示す領域データと、当該領域が異常であることを示すラベル値"bad"とのペアを示す領域ラベルRL1に変換する。
【0015】
また、他の例として、検知対象データのラベルは、検知対象データ内の矩形領域に異常が含まれていることを示す矩形情報を含むものであってもよい。例えば、サンプルデータ内の矩形領域に少なくとも1つ以上の傷などの異常が含まれている場合、当該サンプルデータのラベルL2はこの矩形領域を示すものであってもよい。なお、サンプルデータに複数の異常が含まれている場合、異常箇所毎に矩形領域が設定されてもよいし、あるいは、全て又は一部の異常箇所を包含する1つ以上の矩形領域が設定されてもよい。この場合、検知対象データに対応する領域ラベルRL3は、当該矩形領域を示す領域データと、当該領域が異常であることを示すラベル値"bad"とのペアとを含むようにしてもよい。さらに、検知対象データに対応する領域ラベルRL2は、当該検知対象データ内の矩形領域を除く領域を示す領域データと、矩形領域を除く領域が正常であることを示すラベル値"good"とのペアとを更に含むようにしてもよい。例えば、ラベル変換部120は、図示されるように、"bad"に設定された矩形領域によるラベルL2を、斜線で示された領域を示す領域データと、当該領域が正常であることを示すラベル値"good"とのペアを示す領域ラベルRL2と、斜線で示された領域を示す領域データと、当該領域が異常であることを示すラベル値"bad"とのペアを示す領域ラベルRL3とに変換する。
【0016】
また、更なる他の例として、検知対象データのラベルL3は、検知対象データ内の指定領域に異常が含まれていることを示す領域情報を含むものであってよい。例えば、サンプルデータ内の指定領域に少なくとも1つ以上の傷などの異常が含まれている場合、当該サンプルデータのラベルL3はこの指定領域を示すものであってもよい。なお、サンプルデータに複数の異常が含まれている場合、各異常箇所毎に指定領域が設定されてもよいし、あるいは、全て又は一部の異常箇所を包含する1つ以上の指定領域が設定されてもよい。この場合、検知対象データに対応する領域ラベルRL5は、検知対象データ内の指定領域を示す領域データと、当該指定領域が異常であることを示すラベル値"bad"とのペアとを含むようにしてもよい。さらに、検知対象データに対応する領域ラベルRL4は、当該検知対象データ内の指定領域を除く領域を示す領域データと、指定領域を除く領域が正常であることを示すラベル値"good"とのペアとを更に含むものであってもよい。例えば、ラベル変換部120は、図示されるように、"bad"に設定された指定領域によるラベルL3を、斜線で示された領域を示す領域データと、当該領域が正常であることを示すラベル値"good"とのペアを示す領域ラベルRL4と、斜線で示された領域を示す領域データと、当該領域が異常であることを示すラベル値"bad"とのペアを示す領域ラベルRL5とに変換する。
【0017】
このようにして、異常度マップと領域ラベルとを取得すると、損失算出部130は、異常度マップと領域ラベルの領域データとから異常度スコアを取得する。具体的には、損失算出部130は、サンプルデータの異常度マップとサンプルデータ内の領域を示すバイナリ画像(例えば、サンプルデータ全体、矩形領域又は指定領域のバイナリ画像など)とに基づき当該領域にフォーカスされた領域異常度マップを生成し、プーリング関数によって領域異常度マップから異常度スコアを取得する。
【0018】
例えば、損失算出部130は、領域ラベルの各ペアのバイナリ画像と異常度マップとを照合し、バイナリ画像に示される領域のみにフォーカスした部分的な異常度マップを領域異常度マップとして生成する。そして、損失算出部130は、生成した領域異常度マップに対してプーリング関数を適用し、当該領域の異常度を表す異常度スコアを計算する。具体的なプーリング関数として、global max pooling、global average pooling、global Lp poolingなどのglobal pooling関数が利用されてもよい。
【0019】
このようにして異常度スコアを取得すると、損失算出部130は、領域異常度マップに対する異常度スコアと当該領域のラベル値とから検知対象データの損失値を取得する。ここで、損失値の計算には、深層学習において一般的に利用される何れかの損失関数が利用されてもよく、例えば、sigmoid cross entropy、contrastive loss、triplet loss、L2 softmax lossなどが利用可能である。損失算出部130は、上述した手順に従って全ての領域ラベルに対して異常度スコアを算出し、算出した異常度スコアから各領域ラベルの損失値を算出する。そして、損失算出部130は、各サンプルデータに対応する領域ラベルに対して算出した各損失値の和を計算し、計算した損失値の合計を当該サンプルデータの損失値としてモデル処理部110にわたす。
【0020】
そして、モデル処理部110は、各検知対象データの損失値に基づき異常検知モデルのパラメータを更新する。例えば、異常検知モデルがニューラルネットワークにより実現されている場合、損失算出部130から各サンプルデータの損失値を取得すると、モデル処理部110は、確率的勾配降下法などの何れか適切なパラメータ最適化手法に従って、取得した損失値に基づき異常検知モデルのパラメータを更新する。具体的には、モデル処理部110は、ラベル値"good"に対応する損失値については、当該損失値を減少させるようにパラメータを更新し、ラベル値"bad"に対応する損失値については、当該損失値を増加させるようにパラメータを更新してもよい。
【0021】
モデル処理部110は、終了条件を充足するまで当該更新処理を継続し、終了条件の充足後に最終的に取得された異常検知モデルを訓練済み異常検知モデルとして異常検知装置200に提供する。ここで、終了条件としては、例えば、所定数のサンプルデータに対して上述した手順を実行したことなどであってもよい。
[モデル生成処理]
次に、
図3を参照して、本開示の一実施例によるモデル生成処理を説明する。当該モデル生成処理は、上述したモデル生成装置100によって実現され、例えば、モデル生成装置100の1つ以上のプロセッサ又は処理回路がメモリに記憶されているプログラム又は命令を実行することによって実現されてもよい。
図3は、本開示の一実施例によるモデル生成処理を示すフローチャートである。
【0022】
図3に示されるように、ステップS101において、モデル生成装置100は、検知対象データを異常検知モデルに入力し、異常検知モデルから異常度マップを取得する。具体的には、画像データなどのサンプルデータを取得すると、モデル生成装置100は、取得したサンプルデータを訓練対象の異常検知モデルに入力し、異常検知モデルから異常度マップを取得する。当該異常度マップは、サンプルデータ内の異常箇所の位置を示す2次元マップであってもよく、例えば、外観検査については、当該サンプルデータ内に傷が含まれているか否かを示す実数と当該傷の位置を示す画像とのペアから構成されてもよい。外観検査のための画像データは、モノクロ画像又はカラー画像であってもよい。また、検知対象データは、ハイパースペクトル画像データ、深度画像データ、音声データ、波形データ、3次元データなど、検知対象に応じた何れか適切なデータであってもよい。
【0023】
ステップS102において、モデル生成装置100は、検知対象データのラベルを領域ラベルに変換する。例えば、検知対象データが外観検査のための画像データである場合、当該画像データ内における傷の有無を示すラベルが、画像データに関連付けされて訓練データとしてデータベース300に格納されている。モデル生成装置100は、ステップS101において異常検知モデルに入力した画像データに対応するラベルをデータベース300から取得し、当該ラベルを中間表現としての領域データに変換する。ここで、領域データは、画像データ内の領域を示すバイナリ画像と、当該領域が正常又は異常であるかを示すバイナリ値とのペアを含むものであってもよく、ラベルのタイプに応じて生成される。当該バイナリ画像では、異常度の高いエリアに大きな値が割り当てられ、それ以外の正常なエリアに小さな値が割り当てられてもよい。
【0024】
例えば、画像データのラベルが、
図2のL1に示されるように、画像データ全体に異常が含まれているかを示すバイナリ値を含むものである場合、モデル生成装置100は、RL1に示されるように、画像データ全体を示すバイナリ画像と、バイナリ値を示すラベル値"bad"とのペアを含むように、当該画像データに対する領域ラベルを生成してもよい。
【0025】
また、画像データのラベルが、
図2のL2に示されるように、画像データ内の矩形領域に異常が含まれていることを示す矩形情報を含むものである場合、モデル生成装置100は、RL2に示されるように、矩形領域を示すバイナリ画像と、当該領域が異常であることを示すラベル値"bad"とのペアと、RL3に示されるように、画像データ内の矩形領域を除く領域を示すバイナリ画像と、矩形領域を除く領域が正常であることを示すラベル値"good"とのペアとを含むように、当該画像データに対する領域ラベルを生成してもよい。
【0026】
また、画像データのラベルが、
図2のL3に示されるように、画像データ内の指定領域に異常が含まれていることを示す領域情報を含むものである場合、モデル生成装置100は、RL4に示されるように、指定領域を示すバイナリ画像と、指定領域が異常であることを示すラベル値"bad"とのペアと、RL5に示されるように、画像データ内の指定領域を除く領域を示すバイナリ画像と、指定領域を除く領域が正常であることを示すラベル値"good"とのペアとを含むように、当該画像データに対する領域ラベルを生成してもよい。
【0027】
ステップS103において、モデル生成装置100は、異常度マップと領域データとから異常度スコアを取得する。例えば、
図2に示されるような異常度マップと領域ラベルRL1がサンプルデータに対して取得された場合、モデル生成装置100は、異常度マップと画像データ全体を示す領域データとしてのバイナリ画像とに対してglobal max poolingを適用し、例えば、異常度スコア"1.28"とラベル値"bad"とから構成される領域スコア{1.28,bad}を取得する。
【0028】
また、
図2に示されるような異常度マップと領域ラベルRL2,RL3がサンプルデータに対して取得された場合、モデル生成装置100は、異常度マップとRL2のバイナリ画像とを照合し、バイナリ画像におけるラベル値"good"の領域のみにフォーカスした部分的な異常度マップを領域異常度マップとして生成する。そして、モデル生成装置100は、領域異常度マップに対してglobal max poolingを適用し、例えば、異常度スコア"0.30"とラベル値"good"とから構成される領域スコア{0.30,good}を取得する。また、モデル生成装置100は、異常度マップとRL3のバイナリ画像とを照合し、バイナリ画像におけるラベル値"bad"の領域のみにフォーカスした部分的な異常度マップを領域異常度マップとして生成する。そして、モデル生成装置100は、領域異常度マップに対してglobal max poolingを適用し、例えば、異常度スコア"1.26"とラベル値"bad"とから構成される領域スコア{1.26,bad}を取得する。
【0029】
また、
図2に示されるような異常度マップと領域ラベルRL4,RL5がサンプルデータに対して取得された場合、モデル生成装置100は、異常度マップとRL4のバイナリ画像とを照合し、バイナリ画像におけるラベル値"good"の領域のみにフォーカスした部分的な異常度マップを領域異常度マップとして生成する。そして、モデル生成装置100は、領域異常度マップに対してglobal max poolingを適用し、例えば、異常度スコア"0.30"とラベル値"good"とから構成される領域スコア{0.30,good}を取得する。また、モデル生成装置100は、異常度マップとRL5のバイナリ画像とを照合し、バイナリ画像におけるラベル値"bad"の領域のみにフォーカスした部分的な異常度マップを領域異常度マップとして生成する。そして、モデル生成装置100は、領域異常度マップに対してglobal max poolingを適用し、例えば、異常度スコア"1.24"とラベル値"bad"とから構成される領域スコア{1.24,bad}を取得する。
【0030】
ステップS104において、モデル生成装置100は、異常度スコアとラベル値とから検知対象データの損失値を取得する。例えば、サンプルデータに対して領域スコアRS1を取得すると、モデル生成装置100は、sigmoid cross entropy、contrastive loss、triplet loss、L2 softmax lossなどの何れか適切な損失関数に異常度スコアを適用し、当該サンプルデータの損失値を算出する。また、サンプルデータに対して領域スコアRS2,RS3を取得すると、モデル生成装置100は、損失関数にRS2,RS3の各異常度スコアを適用し、導出した各損失値の合計を当該サンプルデータの損失値として決定する。同様に、サンプルデータに対して領域スコアRS4,RS5を取得すると、モデル生成装置100は、損失関数にRS4,RS5の各異常度スコアを適用し、導出した各損失値の合計を当該サンプルデータの損失値として決定する。
【0031】
ステップS105において、モデル生成装置100は、検知対象データの損失値に基づき異常検知モデルのパラメータを更新する。異常検知モデルが畳み込みニューラルネットワークなどのニューラルネットワークにより実現されている場合、モデル生成装置100は、確率的勾配降下法などの何れか適切なパラメータ最適化手法に従って、取得した損失値に基づき異常検知モデルのパラメータを更新する。このとき、モデル生成装置100は、ラベル値"good"に対応する損失値については、当該損失値を減少させるようにパラメータを更新し、ラベル値"bad"に対応する損失値については、当該損失値を増加させるようにパラメータを更新してもよい。
【0032】
ステップS106において、モデル生成装置100は、終了条件を充足したか判断する。例えば、終了条件としては、所定数のサンプルデータに対してステップS101~S105を実行したことなどであってもよい。終了条件を充足した場合(S106:YES)、当該モデル生成処理は終了し、最終的に取得された異常検知モデルは異常検知装置200に提供される。他方、終了条件を充足していない場合(S106:NO)、モデル生成装置100は、次のサンプルデータに対して上述したステップS101~S105を繰り返す。
[異常検知装置]
次に、
図4を参照して、本開示の一実施例による異常検知装置200を説明する。異常検知装置200は、モデル生成装置100によって生成された異常検知モデルを利用して、未知のサンプルデータに対する異常の有無を判定する。
図4は、本開示の一実施例による異常検知装置200の機能構成を示すブロック図である。
【0033】
図4に示されるように、異常検知装置200は、異常度マップ生成部210及び異常検知部220を有する。
【0034】
異常度マップ生成部210は、検知対象データを訓練済み異常検知モデルに入力し、訓練済み異常検知モデルから異常度マップを取得する。具体的には、異常度マップ生成部210は、検知対象の未知の画像データなどのサンプルデータを受け付けると、受け付けたサンプルデータを訓練済み異常検知モデルに入力し、訓練済み異常検知モデルから出力された異常度マップを異常検知部220にわたす。例えば、外観検査では、検査対象の物品を様々な角度から撮像することによって取得された複数の画像データが異常検知装置200に入力されうる。この場合、異常度マップ生成部210は、これら複数のタイプの画像データに対応した訓練済み異常検知モデルを利用して、各タイプの画像データに対する異常度マップを生成してもよい。
【0035】
異常検知部220は、異常度マップからプーリング関数に従って異常度スコアを取得し、異常度スコアに基づき検知対象データが正常又は異常であるか判定する。具体的には、異常度マップ生成部210から異常度マップを取得すると、異常検知部220は、global max poolingなどの何れか適切なプーリング関数を異常度マップに適用し、異常度スコアを決定する。そして、異常検知部220は、決定した異常度スコアが所定の閾値以上であるかを判定することによって、検知対象のサンプルデータに異常がないか判定する。例えば、異常検知部220は、異常度スコアが所定の閾値以上であった場合には、サンプルデータに異常があると判定し、異常度スコアが所定の閾値未満であった場合、サンプルデータは正常であると判定してもよい。
[異常検知処理]
次に、
図5を参照して、本開示の一実施例による異常検知処理を説明する。当該異常検知処理は、上述した異常検知装置200によって実現され、例えば、異常検知装置200の1つ以上のプロセッサ又は処理回路が1つ以上のメモリに格納されているプログラム又は命令を実行することによって実現されてもよい。
図5は、本開示の一実施例による異常検知処理を示すフローチャートである。
【0036】
図5に示されるように、ステップS201において、異常検知装置200は、検知対象データを訓練済み異常検知モデルに入力し、訓練済み異常検知モデルから異常度マップを取得する。
【0037】
ステップS202において、異常検知装置200は、異常度マップからプーリング関数に従って異常度スコアを取得する。
【0038】
ステップS203において、異常検知装置200は、異常度スコアが所定の閾値以上であるか判断する。異常度スコアが所定の閾値以上であった場合(S203:YES)、異常検知装置200は、ステップS204において、当該サンプルデータは異常であると判定する。他方、異常度スコアが所定の閾値未満であった場合(S203:NO)、異常検知装置200は、ステップS205において、当該サンプルデータは正常であると判定する。
[ハードウェア構成]
前述した実施形態における各装置(モデル生成装置100、又は異常検知装置200)の一部又は全部は、ハードウェアで構成されていてもよいし、CPU(Central Processing Unit)、又はGPU(Graphics Processing Unit)等が実行するソフトウェア(プログラム)の情報処理で構成されてもよい。ソフトウェアの情報処理で構成される場合には、前述した実施形態における各装置の少なくとも一部の機能を実現するソフトウェアを、フレキシブルディスク、CD-ROM(Compact Disc-Read Only Memory)、又はUSB(Universal Serial Bus)メモリ等の非一時的な記憶媒体(非一時的なコンピュータ可読媒体)に収納し、コンピュータに読み込ませることにより、ソフトウェアの情報処理を実行してもよい。また、通信ネットワークを介して当該ソフトウェアがダウンロードされてもよい。さらに、ソフトウェアがASIC(Application Specific Integrated Circuit)、又はFPGA(Field Programmable Gate Array)等の回路に実装されることにより、情報処理がハードウェアにより実行されてもよい。
【0039】
ソフトウェアを収納する記憶媒体の種類は限定されるものではない。記憶媒体は、磁気ディスク、又は光ディスク等の着脱可能なものに限定されず、ハードディスク、又はメモリ等の固定型の記憶媒体であってもよい。また、記憶媒体は、コンピュータ内部に備えられてもよいし、コンピュータ外部に備えられてもよい。
【0040】
図6は、前述した実施形態における各装置(モデル生成装置100、又は異常検知装置200)のハードウェア構成の一例を示すブロック図である。各装置は、一例として、プロセッサ101と、主記憶装置102(メモリ)と、補助記憶装置103(メモリ)と、ネットワークインタフェース104と、デバイスインタフェース105と、を備え、これらがバス106を介して接続されたコンピュータ107として実現されてもよい。
【0041】
図6のコンピュータ107は、各構成要素を一つ備えているが、同じ構成要素を複数備えていてもよい。また、
図6では、1台のコンピュータ107が示されているが、ソフトウェアが複数台のコンピュータにインストールされて、当該複数台のコンピュータそれぞれがソフトウェアの同一の又は異なる一部の処理を実行してもよい。この場合、コンピュータそれぞれがネットワークインタフェース104等を介して通信して処理を実行する分散コンピューティングの形態であってもよい。つまり、前述した実施形態における各装置(モデル生成装置100、又は異常検知装置200)は、1又は複数の記憶装置に記憶された命令を1台又は複数台のコンピュータが実行することで機能を実現するシステムとして構成されてもよい。また、端末から送信された情報をクラウド上に設けられた1台又は複数台のコンピュータで処理し、この処理結果を端末に送信するような構成であってもよい。
【0042】
前述した実施形態における各装置(モデル生成装置100、又は異常検知装置200)の各種演算は、1又は複数のプロセッサを用いて、又は、ネットワークを介した複数台のコンピュータを用いて、並列処理で実行されてもよい。また、各種演算が、プロセッサ内に複数ある演算コアに振り分けられて、並列処理で実行されてもよい。また、本開示の処理、手段等の一部又は全部は、ネットワークを介してコンピュータ107と通信可能なクラウド上に設けられたプロセッサ及び記憶装置の少なくとも一方により実行されてもよい。このように、前述した実施形態における各装置は、1台又は複数台のコンピュータによる並列コンピューティングの形態であってもよい。
【0043】
プロセッサ101は、コンピュータの制御装置及び演算装置を含む電子回路(処理回路、Processing circuit、Processing circuitry、CPU、GPU、FPGA、又はASIC等)であってもよい。また、プロセッサ101は、専用の処理回路を含む半導体装置等であってもよい。プロセッサ101は、電子論理素子を用いた電子回路に限定されるものではなく、光論理素子を用いた光回路により実現されてもよい。また、プロセッサ101は、量子コンピューティングに基づく演算機能を含むものであってもよい。
【0044】
プロセッサ101は、コンピュータ107の内部構成の各装置等から入力されたデータやソフトウェア(プログラム)に基づいて演算処理を行い、演算結果や制御信号を各装置等に出力することができる。プロセッサ101は、コンピュータ107のOS(Operating System)や、アプリケーション等を実行することにより、コンピュータ107を構成する各構成要素を制御してもよい。
【0045】
前述した実施形態における各装置(モデル生成装置100、又は異常検知装置200)は、1又は複数のプロセッサ101により実現されてもよい。ここで、プロセッサ101は、1チップ上に配置された1又は複数の電子回路を指してもよいし、2つ以上のチップあるいは2つ以上のデバイス上に配置された1又は複数の電子回路を指してもよい。複数の電子回路を用いる場合、各電子回路は有線又は無線により通信してもよい。
【0046】
主記憶装置102は、プロセッサ101が実行する命令及び各種データ等を記憶する記憶装置であり、主記憶装置102に記憶された情報がプロセッサ101により読み出される。補助記憶装置103は、主記憶装置102以外の記憶装置である。なお、これらの記憶装置は、電子情報を格納可能な任意の電子部品を意味するものとし、半導体のメモリでもよい。半導体のメモリは、揮発性メモリ、不揮発性メモリのいずれでもよい。前述した実施形態における各装置(モデル生成装置100、又は異常検知装置200)において各種データを保存するための記憶装置は、主記憶装置102又は補助記憶装置103により実現されてもよく、プロセッサ101に内蔵される内蔵メモリにより実現されてもよい。例えば、前述した実施形態における記憶部は、主記憶装置102又は補助記憶装置103により実現されてもよい。
【0047】
記憶装置(メモリ)1つに対して、複数のプロセッサが接続(結合)されてもよいし、単数のプロセッサが接続されてもよい。プロセッサ1つに対して、複数の記憶装置(メモリ)が接続(結合)されてもよい。前述した実施形態における各装置(モデル生成装置100、又は異常検知装置200)が、少なくとも1つの記憶装置(メモリ)とこの少なくとも1つの記憶装置(メモリ)に接続(結合)される複数のプロセッサで構成される場合、複数のプロセッサのうち少なくとも1つのプロセッサが、少なくとも1つの記憶装置(メモリ)に接続(結合)される構成を含んでもよい。また、複数台のコンピュータに含まれる記憶装置(メモリ))とプロセッサによって、この構成が実現されてもよい。さらに、記憶装置(メモリ)がプロセッサと一体になっている構成(例えば、L1キャッシュ、L2キャッシュを含むキャッシュメモリ)を含んでもよい。
【0048】
ネットワークインタフェース104は、無線又は有線により、通信ネットワーク108に接続するためのインタフェースである。ネットワークインタフェース104は、既存の通信規格に適合したもの等、適切なインタフェースを用いればよい。ネットワークインタフェース104により、通信ネットワーク108を介して接続された外部装置109Aと情報のやり取りが行われてもよい。なお、通信ネットワーク108は、WAN(Wide Area Network)、LAN(Local Area Network)、PAN(Personal Area Network)等の何れか、又は、それらの組み合わせであってよく、コンピュータ107と外部装置109Aとの間で情報のやり取りが行われるものであればよい。WANの一例としてインターネット等があり、LANの一例としてIEEE802.11やイーサネット(登録商標)等があり、PANの一例としてBluetooth(登録商標)やNFC(Near Field Communication)等がある。
【0049】
デバイスインタフェース105は、外部装置109Bと直接接続するUSB等のインタフェースである。
【0050】
外部装置109Aはコンピュータ107とネットワークを介して接続されている装置である。外部装置109Bはコンピュータ107と直接接続されている装置である。
【0051】
外部装置109A又は外部装置109Bは、一例として、入力装置であってもよい。入力装置は、例えば、カメラ、マイクロフォン、モーションキャプチャ、各種センサ、キーボード、マウス、又はタッチパネル等のデバイスであり、取得した情報をコンピュータ107に与える。また、パーソナルコンピュータ、タブレット端末、又はスマートフォン等の入力部とメモリとプロセッサを備えるデバイスであってもよい。
【0052】
また、外部装置109A又は外部装置109Bは、一例として、出力装置でもよい。出力装置は、例えば、LCD(Liquid Crystal Display)、CRT(Cathode Ray Tube)、PDP(Plasma Display Panel)、又は有機EL(Electro Luminescence)パネル等の表示装置であってもよいし、音声等を出力するスピーカ等であってもよい。また、パーソナルコンピュータ、タブレット端末、又はスマートフォン等の出力部とメモリとプロセッサを備えるデバイスであってもよい。
【0053】
また、外部装置109Aまた外部装置109Bは、記憶装置(メモリ)であってもよい。例えば、外部装置109Aはネットワークストレージ等であってもよく、外部装置109BはHDD等のストレージであってもよい。
【0054】
また、外部装置109A又は外部装置109Bは、前述した実施形態における各装置(モデル生成装置100、又は異常検知装置200)の構成要素の一部の機能を有する装置でもよい。つまり、コンピュータ107は、外部装置109A又は外部装置109Bの処理結果の一部又は全部を送信又は受信してもよい。
【0055】
本明細書(請求項を含む)において、「a、b及びcの少なくとも1つ(一方)」又は「a、b又はcの少なくとも1つ(一方)」の表現(同様な表現を含む)が用いられる場合は、a、b、c、a-b、a-c、b-c、又はa-b-cのいずれかを含む。また、a-a、a-b-b、a-a-b-b-c-c等のように、いずれかの要素について複数のインスタンスを含んでもよい。さらに、a-b-c-dのようにdを有する等、列挙された要素(a、b及びc)以外の他の要素を加えることも含む。
【0056】
本明細書(請求項を含む)において、「データを入力として/データに基づいて/に従って/に応じて」等の表現(同様な表現を含む)が用いられる場合は、特に断りがない場合、各種データそのものを入力として用いる場合や、各種データに何らかの処理を行ったもの(例えば、ノイズ加算したもの、正規化したもの、各種データの中間表現等)を入力として用いる場合を含む。また「データに基づいて/に従って/に応じて」何らかの結果が得られる旨が記載されている場合、当該データのみに基づいて当該結果が得られる場合を含むとともに、当該データ以外の他のデータ、要因、条件、及び/又は状態等にも影響を受けて当該結果が得られる場合をも含み得る。また、「データを出力する」旨が記載されている場合、特に断りがない場合、各種データそのものを出力として用いる場合や、各種データに何らかの処理を行ったもの(例えば、ノイズ加算したもの、正規化したもの、各種データの中間表現等)を出力とする場合も含む。
【0057】
本明細書(請求項を含む)において、「接続される(connected)」及び「結合される(coupled)」との用語が用いられる場合は、直接的な接続/結合、間接的な接続/結合、電気的(electrically)な接続/結合、通信的(communicatively)な接続/結合、機能的(operatively)な接続/結合、物理的(physically)な接続/結合等のいずれをも含む非限定的な用語として意図される。当該用語は、当該用語が用いられた文脈に応じて適宜解釈されるべきであるが、意図的に或いは当然に排除されるのではない接続/結合形態は、当該用語に含まれるものして非限定的に解釈されるべきである。
【0058】
本明細書(請求項を含む)において、「AがBするよう構成される(A configured to B)」との表現が用いられる場合は、要素Aの物理的構造が、動作Bを実行可能な構成を有するとともに、要素Aの恒常的(permanent)又は一時的(temporary)な設定(setting/configuration)が、動作Bを実際に実行するように設定(configured/set)されていることを含んでよい。例えば、要素Aが汎用プロセッサである場合、当該プロセッサが動作Bを実行可能なハードウェア構成を有するとともに、恒常的(permanent)又は一時的(temporary)なプログラム(命令)の設定により、動作Bを実際に実行するように設定(configured)されていればよい。また、要素Aが専用プロセッサ又は専用演算回路等である場合、制御用命令及びデータが実際に付属しているか否かとは無関係に、当該プロセッサの回路的構造が動作Bを実際に実行するように構築(implemented)されていればよい。
【0059】
本明細書(請求項を含む)において、含有又は所有を意味する用語(例えば、「含む(comprising/including)」及び有する「(having)等)」が用いられる場合は、当該用語の目的語により示される対象物以外の物を含有又は所有する場合を含む、open-endedな用語として意図される。これらの含有又は所有を意味する用語の目的語が数量を指定しない又は単数を示唆する表現(a又はanを冠詞とする表現)である場合は、当該表現は特定の数に限定されないものとして解釈されるべきである。
【0060】
本明細書(請求項を含む)において、ある箇所において「1つ又は複数(one or more)」又は「少なくとも1つ(at least one)」等の表現が用いられ、他の箇所において数量を指定しない又は単数を示唆する表現(a又はanを冠詞とする表現)が用いられているとしても、後者の表現が「1つ」を意味することを意図しない。一般に、数量を指定しない又は単数を示唆する表現(a又はanを冠詞とする表現)は、必ずしも特定の数に限定されないものとして解釈されるべきである。
【0061】
本明細書において、ある実施例の有する特定の構成について特定の効果(advantage/result)が得られる旨が記載されている場合、別段の理由がない限り、当該構成を有する他の1つ又は複数の実施例についても当該効果が得られると理解されるべきである。但し当該効果の有無は、一般に種々の要因、条件、及び/又は状態等に依存し、当該構成により必ず当該効果が得られるものではないと理解されるべきである。当該効果は、種々の要因、条件、及び/又は状態等が満たされたときに実施例に記載の当該構成により得られるものに過ぎず、当該構成又は類似の構成を規定したクレームに係る発明において、当該効果が必ずしも得られるものではない。
【0062】
本明細書(請求項を含む)において、「最大化(maximize)」等の用語が用いられる場合は、グローバルな最大値を求めること、グローバルな最大値の近似値を求めること、ローカルな最大値を求めること、及びローカルな最大値の近似値を求めることを含み、当該用語が用いられた文脈に応じて適宜解釈されるべきである。また、これら最大値の近似値を確率的又はヒューリスティックに求めることを含む。同様に、「最小化(minimize)」等の用語が用いられる場合は、グローバルな最小値を求めること、グローバルな最小値の近似値を求めること、ローカルな最小値を求めること、及びローカルな最小値の近似値を求めることを含み、当該用語が用いられた文脈に応じて適宜解釈されるべきである。また、これら最小値の近似値を確率的又はヒューリスティックに求めることを含む。同様に、「最適化(optimize)」等の用語が用いられる場合は、グローバルな最適値を求めること、グローバルな最適値の近似値を求めること、ローカルな最適値を求めること、及びローカルな最適値の近似値を求めることを含み、当該用語が用いられた文脈に応じて適宜解釈されるべきである。また、これら最適値の近似値を確率的又はヒューリスティックに求めることを含む。
【0063】
本明細書(請求項を含む)において、複数のハードウェアが所定の処理を行う場合、各ハードウェアが協働して所定の処理を行ってもよいし、一部のハードウェアが所定の処理の全てを行ってもよい。また、一部のハードウェアが所定の処理の一部を行い、別のハードウェアが所定の処理の残りを行ってもよい。本明細書(請求項を含む)において、「1又は複数のハードウェアが第1の処理を行い、前記1又は複数のハードウェアが第2の処理を行う」等の表現が用いられている場合、第1の処理を行うハードウェアと第2の処理を行うハードウェアは同じものであってもよいし、異なるものであってもよい。つまり、第1の処理を行うハードウェア及び第2の処理を行うハードウェアが、前記1又は複数のハードウェアに含まれていればよい。なお、ハードウェアは、電子回路、又は電子回路を含む装置等を含んでよい。
【0064】
本明細書(請求項を含む)において、複数の記憶装置(メモリ)がデータの記憶を行う場合、複数の記憶装置(メモリ)のうち個々の記憶装置(メモリ)は、データの一部のみを記憶してもよいし、データの全体を記憶してもよい。
【0065】
以上、本開示の実施形態について詳述したが、本開示は上記した個々の実施形態に限定されるものではない。特許請求の範囲に規定された内容及びその均等物から導き出される本発明の概念的な思想と趣旨を逸脱しない範囲において種々の追加、変更、置き換え及び部分的削除等が可能である。例えば、前述した全ての実施形態において、数値又は数式を説明に用いている場合は、一例として示したものであり、これらに限られるものではない。また、実施形態における各動作の順序は、一例として示したものであり、これらに限られるものではない。
【符号の説明】
【0066】
100 モデル生成装置
101 プロセッサ
102 主記憶装置
103 補助記憶装置
104 ネットワークインタフェース
105 デバイスインタフェース
106 バス
107 コンピュータ
108 通信ネットワーク
109A,B 外部装置
110 モデル処理部
120 ラベル変換部
130 損失算出部
200 異常検知装置
210 異常度マップ生成部
220 異常検知部