質問: 現在、正常画像のみを用いて異常検知が行えるかを検討しています。 正常画像は綺麗に復元できるのですが、異常の画像もそのままの異常の箇所が復元されてしまい、異常として検出出来ず悩んでいます 今回検討しているアルゴリズムは 畳み込みオートエンコーダ(Convolutional Autoencoder) を使用しています 開発にはpytorchを使用しています データ数は正常が4000枚です 異常画像に関しては存在しませんが評価用に発生しうる形状に近い物を自作した画像が20枚あります 検出対象の画像は載せられないのですがペットボトルを例にすると底面の中央の突起部分の位置がずれたら異常として検出したいと思っています 画像自体は光が反射したり影が映りこんだりと、ノイズも含まれます。 素人的な考え方ですが、正常と異常の分布は離れているのが望ましいだろうと考え、正常と(自作ですが)異常の画像の分布をt-sneを使って取ってみました ※紫が正常 黄色が異常です ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/8dc1145f0030e76c06b311a7b2da632a.jpeg) 基本的に正常の領域内に異常が入り込んでおり、分離が難しい状態でした また画像自体も底面中央の突起のような小さい物が中心から1cmずれたくらいでは差として捉えられないのかなと考えます 自分が見た記事ではオートエンコーダで検出出来ているものは製品の欠けやそもそも形状が大きく変わってしまうもの、外周の影響が大きく出ているものの例が多かったのですが、正常と異常で分布が大きく変わらないような小さい物体の位置ずれでも検出させることは可能なのでしょうか? モデルのチューニングも何度か行ったのですが2エポック目からは正常も異常も復元できてしまっており次にどのようなアプローチをとるべきかわかりません・・・ 各手法それぞれ得手不得手なデータの特性があるとは思いますが、異常検知で多く使われている手法なのでこのような異常のケースはあるはずなので実際に作成された方や知見のある方のご意見を伺いたいです プログラミングと直接関係のない質問で申し訳ありません
回答: オートエンコーダーの圧縮ベクトルにたいして、正常データと異常データでSVMなどにかけたりしますね。 弱異常検知と呼ばれる手法です。 こちらもご覧ください。 https://qiita.com/shinmura0/items/1af83f5a5857d50cabc2