質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Q&A

解決済

1回答

1123閲覧

AutoEncoderを用いた異常検知について

---stax---

総合スコア148

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

0グッド

0クリップ

投稿2019/05/21 05:58

現在、正常画像のみを用いて異常検知が行えるかを検討しています。
正常画像は綺麗に復元できるのですが、異常の画像もそのままの異常の箇所が復元されてしまい、異常として検出出来ず悩んでいます

今回検討しているアルゴリズムは
畳み込みオートエンコーダ(Convolutional Autoencoder)
を使用しています
開発にはpytorchを使用しています

データ数は正常が4000枚です
異常画像に関しては存在しませんが評価用に発生しうる形状に近い物を自作した画像が20枚あります

検出対象の画像は載せられないのですがペットボトルを例にすると底面の中央の突起部分の位置がずれたら異常として検出したいと思っています
画像自体は光が反射したり影が映りこんだりと、ノイズも含まれます。

素人的な考え方ですが、正常と異常の分布は離れているのが望ましいだろうと考え、正常と(自作ですが)異常の画像の分布をt-sneを使って取ってみました
※紫が正常 黄色が異常です
イメージ説明

基本的に正常の領域内に異常が入り込んでおり、分離が難しい状態でした
また画像自体も底面中央の突起のような小さい物が中心から1cmずれたくらいでは差として捉えられないのかなと考えます

自分が見た記事ではオートエンコーダで検出出来ているものは製品の欠けやそもそも形状が大きく変わってしまうもの、外周の影響が大きく出ているものの例が多かったのですが、正常と異常で分布が大きく変わらないような小さい物体の位置ずれでも検出させることは可能なのでしょうか?

モデルのチューニングも何度か行ったのですが2エポック目からは正常も異常も復元できてしまっており次にどのようなアプローチをとるべきかわかりません・・・

各手法それぞれ得手不得手なデータの特性があるとは思いますが、異常検知で多く使われている手法なのでこのような異常のケースはあるはずなので実際に作成された方や知見のある方のご意見を伺いたいです

プログラミングと直接関係のない質問で申し訳ありません

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

オートエンコーダーの圧縮ベクトルにたいして、正常データと異常データでSVMなどにかけたりしますね。
弱異常検知と呼ばれる手法です。

こちらもご覧ください。
https://qiita.com/shinmura0/items/1af83f5a5857d50cabc2

投稿2019/05/21 08:34

編集2019/05/21 08:35
MasashiKimura

総合スコア1150

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

---stax---

2019/05/21 14:18

ありがとうございます。 リンクも是非参考にさせて頂きます。 重ねて質問して申し訳ないのですがもうひとつ伺わせてください 今回作成したモデルは異常も復元出来てしまった事からどこかでミスをしているのかと思い、見直しと、MNISTのデータでも学習させてみて数字ではないもの(漢字や意地悪な書き方をした数字)を与えるとどのようになるのか確認してみました。 明らかに数字とかけ離れているものは復元出来ませんでしたが、数字にも見えそうな漢字(白など)は学習を進めると「8」のように似た数字に復元するようになりました。 数字というノイズも少なく、単純なデータなので明らかに形状が訓練にないような物は復元出来ないという事は理解できたのですが、訓練を重ねることで復元されるべきでないものが復元出来てしまった事から、オートエンコーダが異常検知に使えるのか疑問に感じてきました。 これはモデルのチューニングが下手なのか、それともオートエンコーダは欠損のような明らかに形状が変わるようなデータには有効な手法に留まるということなのでしょうか? 例えば犬や猫の写真があったとして、少しだけ耳が長い写真を異常としたい場合のような正常と大きく変わらない、でも変化しているようなものでも現実的に検出可能なのでしょうか… (自分の取り組んでる件がそういう話のような気がして…) 漠然とした疑問で申し訳ありません… また、長々と申し訳ありません。 自分自身、まだまだ知識が浅いので的外れなことを言っているかと思いますがご意見頂けたら幸いです。 よろしくお願い致します。
MasashiKimura

2019/05/22 05:23

オートエンコーダを用いた異常検知は、教師なし学習です。現状の教師なし学習はそもそもそれほど高い精度を持ちません。どのような状態が異常であるかを定義できるのなら、それを直接認識したほうが精度が高いこともあります。 とはいえ、SVMを組み合わせたオートエンコーダに夜異常検知はある程度実用的に動きます。 いろいろ試してみると良いと思います。
---stax---

2019/05/23 05:13

返答遅くなり申し訳ありません。 ご意見ありがとうございます。 ラベルが無いため教師なしでやりたい、世間的に成功している例があるから出来るだろっていう感じで要求が来たのですがなかなか上手くいかずに行き詰っていました・・・ データの前処理やモデルのチューニング次第で何とでもなるのか、ある程度データの特性によって出来るもの出来ないものがあると割り切ってしまっていのか分からず悩んでいました 頂いたリンクをもう一度読み直してみます
MasashiKimura

2019/05/24 00:24

元画像と復元画像の差分画像を特徴量として、20枚でSVMを学習させればうごくような気がします。なんとなくです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問