メルマガ登録
3次元データを活用した異常検知モデルであるBTFについて検証を進める連載記事です。本稿では、本連載のメインテーマであるBTFモデルの技術的な解説と検証結果を紹介します。
こんにちは。アナリティクスサービス部の尾村です。
これまで不良品検出のために、2次元の画像データを利用する様々なモデルが提案されてきました。
一方で、近年の3Dセンサーの精度と可用性の向上により、3次元データを扱う様々な手法が提案されています[MVTec 3D-AD]。
本稿では、初めに2次元画像データにおいてSOTA((SOTA (State of the Art)は、その時点での最高性能の意味です。))を達成した異常検知手法であるPatchCore[PatchCore]について説明し、PatchCoreを改良し3次元の特徴を加えることで、より高い精度で不良部分を判定できる異常検知手法であるBTF (Back to the Feature)[BTF]について、技術的な解説と検証結果を紹介します。
異常検知とは、特に画像を用いた不良品検出の文脈では、部品や製品の外見上の欠陥を見つける技術のことです。
技術の分類として、学習用データセットの性質と使い方によって、以下のように大きく2種類に分けられます。
学習用データセットは、正常なものも異常なものも含めて、全てラベル付けされている必要があります。
これは、正常なものと異常なものを分類するように学習したモデルを使って異常を見つける方法です。 手法としては、深層学習による分類モデル等があります。
ラベル付けされていないデータセットを使い、テスト用データセットに含まれる異常を見つける方法です。
また、以下に示す半教師あり異常検知も、教師なし異常検知として扱われることがあるようです。本稿では、参考論文[MVTec 3D-AD][BTF]と同様に、半教師あり異常検知も教師なし異常検知として扱うことにします。 手法としては、正規分布のような確率分布を使った外れ値の定義付けや、k近傍法のようなクラスタリング等があります。
全てのデータセットがラベル付けされている必要がなく、学習用データセットのうち正常なものの一部あるいは全てがラベル付けされている必要があります[AD Survey]。
正常なデータのみで学習をしたモデルを使って異常を見つける方法であり、異常なデータを入力したときに正常なデータを入力したときと比較すると逸脱した出力がされることを期待しています。
すなわち、教師あり異常検知とは異なり、異常なデータのラベル付けが必要ありません。 手法としては、入力画像を再構成するAutoEncoderやGAN等があります。
【関連記事】
【連載①】画像に対する教師なし深層異常検知の基本手法【不良品検知ブログ】 – Platinum Data Blog by BrainPad
この分類のうち、本稿では教師なし異常検知を取り上げ、特にPatchCoreアルゴリズムに基づいた異常検知方法について説明を進めます。
また、PatchCoreは本来、異常検知のために部品や製品の写真といった2次元画像を対象としていますが、
本稿ではBTF論文結果に準じて、PatchCoreを改良することで、3次元データの異常検知をする方法について紹介します[BTF]。
なお、結果再現のために同著者によるGithubリポジトリを利用しました[BTF GitHub]。
異常検知の分野で、2次元画像を使う場合と3次元データを使う場合に、それぞれの利点と欠点について説明します。
以下の画像のように、異常検知対象に、傷やへこみ等の幾何学的な異常がある場合には、2次元画像では判別が難しく、3次元データでは異なる角度から見ることができるため判別が容易な状況があります。
一方で、色の違いによる異常がある場合には、2次元画像では容易に判別できますが、3次元データでは角度によっては判別が難しい場合があります。
2次元画像と3次元データの比較[BTF]。上部が2次元画像、下部が3次元データについて異なる角度から見た場合です。左2つのクッキーとジャガイモの例は、へこみによる異常の例を示し、右2つのコネクタ部品であるケーブルグランドと発泡体であるウレタンフォームの例は、色の変化による異常の例を示しています。
PatchCoreは、2次元画像を使った異常検知手法であり、工業用の製品や部品のデータセットであるMVTec ADにおいてSOTAを記録するほど高い精度を出しました[PatchCore]。
※画像毎に異常であるかどうかの判定に、上記画像のようにAU ROCで#1 (SOTA)を達成しています。
ピクセル毎に異常であるかどうかの判定については、この時点では、AU ROCで#13であり一番良いわけではありません。
また、深層学習モデルの学習が必要ないことから学習時間が比較的短く、推論時間も短くなるための工夫もされています。
実際に、既に提案されていた異常検知手法であるSPADE[SPADE]やPaDiM[PaDiM]と比較した結果、推論時間はSPADEよりも高速であり、小さいモデル(PatchCore-1%)ではPaDiMと同等の性能です。
※PatchCore-1%は、PatchCore-100%のモデルに対して1/100の特徴量のみを保持します。
そのため、推論時間は短くなりますが、スコアは悪くなる可能性があります。
画像をパッチ(Patch)と呼ばれる小さな領域に分割して、ImageNetデータセット[ImageNet]による学習済み深層学習モデル等を利用して特徴量を抽出します。
つまり、PatchCoreによる異常検知のために新たに深層学習モデルの学習が必要ないことから、学習時に計算資源上のコストがかかりにくいです。
※深層学習モデルとして、論文中では、ResNet-50やWideResnet-50、DenseNet等が使われています。
PatchCoreの手法におけるキーポイントは、PatchCore論文[PatchCore]の3章で紹介されているように、次に示す3つの手法です。
PatchCoreで異常検知をするための具体的な手順は、次の画像に示す通りです。
上の画像から、PatchCoreは、「データ前処理」「学習時」「推論時」の3つのステップで構成されていることが分かります。各ステップについて説明します。
学習と推論の前に共通して実行されます。
※PatchCoreの手法におけるキーポイントは、PatchCore論文[PatchCore]の3章で紹介されているように、次に示す3つの手法です。
各手法は、上記で説明した3ステップである「データ前処理」「学習時」「推論時」と順に概ね対応しています。
3次元データを扱った異常検知手法は未だ確立されておらず、3次元情報を使用しないPatchCoreが、3次元データを利用するモデルよりも遥かに高い精度である現状でした。
2次元画像を使うPatchCoreと3次元データを使うモデルの精度比較[BTF]。
RGB PatchCoreがSOTAを達成したモデル、Voxel (+ RGB) GANやPoint Cloud 3D -ST128は現行の3次元モデルを示します。PROやI-ROCのどちらでも大きな開きがあり、2次元画像のみを使うPatchCoreの方が精度良いことが分かります。
しかし、2022年に3次元データを利用したPatchCoreによる異常検知手法が、従来の手法よりも高精度だと報告するBTF論文[BTF]がarXivに投稿されました。
本稿では、BTF論文で紹介されている手法の説明と、論文の結果が再現できるように公開されているGitHubリポジトリ[BTF GitHub]を使い、結果を再現した結果も共有します。
この論文で精度比較のために使われているデータセットは、3次元データによる異常検知のために作成されたMVTec 3D-ADデータセットです。
MVTec 3D-ADデータセットに関する詳しい説明は別記事で紹介しています。
【関連記事】
【3D異常検知・補足編】3Dデータによる異常検知用データセットMVTec 3D-ADの紹介
BTF論文では、異常部分のピクセルレベルでの高精度なセグメンテーションを目指します。
結果として、本論文で報告しているBTFモデルは、ピクセルレベルの2つの指標について、AU ROC: 99.3%、PRO: 96.4%を達成しています。
BTF論文で検証されたBTFを除く9種類のモデルと比較しても、かなり良い精度であることが分かります。
上記の表で紹介されている10種類の手法について、アーキテクチャの違いで分類した表は以下のようになります。
表中のアーキテクチャである「PatchCore拡張版」は、PatchCoreの特徴量生成部分を別の特徴量生成手法に置き換えたものであり、ImageNetによる事前学習モデルを使用しません。
アーキテクチャ | 手法名 |
---|---|
PatchCore | RGB iNet、Depth iNet |
PatchCore拡張版 | Depth Raw、Depth HoG、Depth SIFT、PC FPFH、RGB+PC BTF |
NSA[NSA] | Depth NSA |
PointNeXt[PointNeXt] | PC+RGB PointNeXt |
SpinNet[SpinNet] | PC SpinNet |
BTF論文ではNSA、PointNeXt、SpinNetでも検証していますが、精度がPatchCoreやPatchCore拡張版によるいくつかのモデルと比べそれほど精度が良くないことと、GitHubリポジトリに結果を再現できるスクリプトがないことを理由に本稿では説明を割愛します。
すなわち、本稿で説明するのは、以下の表で赤枠で囲ったPatchCoreに関連する7種類の特徴量を使った手法になります。
BTF論文で検証されたPatchCoreに関連する手法は、使用する画像種類と特徴量作成方法が異なります。
使用する画像種類は、以下のように3分類あることが分かりました。
特徴量の作成方法は、以下のように5分類あることが分かりました。
上で示した2種類の分類に基づき、7手法を分類した表は次のようになります。
特徴量作成方法 | iNet | Raw | HOG | SIFT | FPFH |
---|---|---|---|---|---|
RGB画像 | RGB iNet、 RGB + PC BTF | ||||
深度マップ | Depth iNet | Depth Raw | Depth HoG | Depth SIFT | |
XYZ画像 | PC FPFH、 RGB + PC BTF |
本論文で提案された最も高精度である「RGB + PC BTF」は、2種類の入力画像種類と特徴量作成方法を使っています。
「RGB + PC BTF」を除く6手法のうち、良いスコアを出したのは、「RGB iNet」と「PC FPFH」でした。
これら2つの手法は、それぞれRGB画像とXYZ画像を利用するもので、これら2つの特徴量をうまく使えると精度の向上が期待できます。
そこで、これら2つの特徴量を単純に結合して新たな特徴量とする「RGB + PC BTF」が考案されました。
結果としてBTFは、全ての指標において最高精度を出すことができています。
なお、5種類の特徴量作成方法については、別記事で紹介しているので、興味があれば参考にしてください。
【関連記事】
【3D異常検知・補足編】2次元画像と3次元データのための特徴量生成方法
BTF論文で説明された7種類のPatchCoreに関連した手法により、テストデータについて異常部分を可視化した結果は、次の図に示す通りです。
上図のBTF論文結果をGitHubリポジトリ[BTF GitHub]を使い、再現したものは以下のようになります。
上図の各手法それぞれの異常度に対して適切な閾値を設定することで、ピクセルレベルでの異常部分を決定できます。
閾値は手動で決定できますが、今回は偽陽性率に基づき自動的に決定しました。
以下の図では、全テストデータに対して偽陽性率が1%になるように可視化しています。
偽陽性率とPRO及び真陽性率の関係は、PRO曲線とROC曲線を見ればわかるように、トレードオフの関係になっています。
つまり、偽陽性率を下げると間違えて異常であると判定した部分が少なくなりますが、PROや真陽性率の値は減少し真の異常部分を異常であると判定しにくくなってしまいます。
参考までに、次の図は、全テストデータに対して偽陽性率が0.3%になるように可視化したものです。間違えて予測している部分(偽陽性)は減少していますが、正しく異常部分を当てられている部分(真陽性)も減少していることが確認できます。
したがって、PRO曲線やROC曲線等に基づき、どの程度の偽陽性を許容するのかを目的に応じて議論し決定することが重要です。
上図の可視化例に対する、ピクセルレベルのAU ROCスコア及びAU PROは次のようになります。
ROC曲線やPRO曲線をデータ毎に可視化しAU ROCやAU PROを計算することは、どのようなデータであると結果が悪くなるのかを定量的に確かめる意味で非常に重要です。
今回の例では、RawとHoGの2つの手法の場合で、結果が悪くなっていることが分かります。
テストデータに含まれる全てのデータに対して、今回手元で計算したAU PROは、以下のようになりBTF論文で報告されている値と一致しています。
10種類の各カテゴリに対する可視化例を以下の表に示します。
なお、「予測した異常部分の可視化例」については、各カテゴリと手法について偽陽性率が1%になるような閾値を選択しました。
また、偽陽性率が増加するとPROがどのくらい改善するのか示すために「全テストデータに対するPRO曲線」も次に示しています。
この記事では、3次元データを扱った場合の異常検知手法について、ご紹介しました。
従来の2次元画像に含まれる色情報に加えて3次元データを使うと、より高い精度でピクセルレベルでの異常検知ができるBTF手法の結果を紹介しました。
2次元画像や3次元データを単体で使う場合には、それぞれに向き不向きなタスクがありますが、BTF手法では双方の苦手な部分を補えるように特徴量生成することができ精度向上に繋がったと考察できます。
さらに、様々なカテゴリについて異常部分を可視化した結果についても共有しました。
ブレインパッドでは、3次元データを扱った手法や異常検知技術をビジネスに活用するため、調査や検証を積極的に実施しています。
本記事を通じて、ブレインパッドの取り組みについて、ご興味を持っていただけますと幸いです。
<連載記事>
あなたにオススメの記事
2023.12.01
生成AI(ジェネレーティブAI)とは?ChatGPTとの違いや仕組み・種類・活用事例
2023.09.21
DX(デジタルトランスフォーメーション)とは?今さら聞けない意味・定義を分かりやすく解説【2024年最新】
2023.11.24
【現役社員が解説】データサイエンティストとは?仕事内容やAI・DX時代に必要なスキル
2023.09.08
DX事例26選:6つの業界別に紹介~有名企業はどんなDXをやっている?~【2024年最新版】
2023.08.23
LLM(大規模言語モデル)とは?生成AIとの違いや活用事例・課題
2024.03.22
生成AIの評価指標・ベンチマークとそれらに関連する問題点や限界を解説