皆さま、異常検知というと、どのようなイメージをお持ちでしょうか?

製造業の方は、温度や電圧、振動などのセンサーの値を使い、機械学習やデータサイエンス的な手法を用いて異常検知をされているイメージがあります。
私は製造業を仕事にしておりませんので、違うアプローチ・・・せっかくAIで検知するならば、ディープラーニングを利用して画像で異常検知する方法を考えようと思います。

工場で生産されたものを画像で検査し、良品か不良品かを判別する・・・例えるなら、歩いている人を目で見て犯罪者を探し出す警官のような作業・・・これが異常検知となります。pol.png 28.02 KB異常検知で真っ先に思いつくのが、例えば物体検出的な手法で異常部分をアノテーションする方法です。不良品画像.png 47.95 KB
この方法の良い点は、異常の種類が分かることにあります。
アノテーション作業が完璧に行えるならば、異常の種類もわかりますし、最も理想的な異常検知と言えます。
しかし、現実はそんなに甘くありません。下記のような問題が発生します。

    良品データはいくらでも集められるが、不良品データが集まらない。
    ・
未知の不良品は検知できない。

例えば犯罪者を探す警官がいて、「銃を持っている奴は犯罪者だ!」というように、アノテーションしたとすると「日本刀を抱えて辻斬りする奴」なんかを見逃してしまいます。
警官画像.png 84.59 KB
犯罪者が事件を起さない・・・もとい、不良品を見逃して出荷しないことが重要です。
とにかく、挙動が不審な奴はとりあえず職質しよう・・・みたいな、そういう気持ちで取り組まなくては不良品たちは中々尻尾を出しません。

G検定でお馴染みの単語で説明する場合「正解率(Accuracy)」よりも「再現率(Recall)」が高くなるようにしなくてはいけません。
その上で適合率(precision)」も低くならないようにしないと、とりあえず全員逮捕状態になってしまうので困ってしまいます。

そこで解決法となるのが、「良品のみ学習して不良品を検出する」方法になります。
それについては次回以降説明、ということで・・・

ただ、物体検出的な手法が全く不要とは思っていません。
せっかくパッと見て「悪い」って分かる奴を見逃すほどお人好しではありません。
私の考えでは最終的にはこの手法もシステムの中に組み込んでおくべきだと思います。