Skip to main content
©2019 Pasona Tech, Inc. All Rights Reserved.
MACHINE LEARNING Meetup KANSAI #4
AutoEncoderを使って未知の物体を検出する
ニューラルネットワークはUFOを見つけることができるのか
©2019 Pasona Tech, Inc. All Rights Reserved.
2
アウトライン
自己紹介
AutoEncoderと異常検知
実際にやってみた
会社紹介
©2019 Pasona Tech, Inc. All Rights Reserved.
自己紹介
名前:夏谷実
所属:株式会社パソナテック IoEソリューション事業部
好きな物:FPGA, 組込みプログラミング, プログラミング言語,
Deep Learning, 機械学習
好きなプログラミング言語:Python, C, Verilog-HDL, F#, Rust, Common Lisp,
Scheme, Tcl/Tk
SNS:はてなID natsutan, @natsutan
3
http://natsutan.hatenablog.com/
TensorFlow Users Group Kansai
©2019 Pasona Tech, Inc. All Rights Reserved.
4
AutoEncoderと異常検知
©2019 Pasona Tech, Inc. All Rights Reserved.
お題
5
砂漠での自動運転に物体検出を使ってみる
砂漠画像
https://commons.wikimedia.org/wiki/File:%E7%A0%82%E6%BC%A0%E3%81%AB%E3%82%A
A%E3%82%A2%E3%82%B7%E3%82%B9_(19419940618).jpg
Wikipediaの画像にUFOを追加
UFO画像
https://www.irasutoya.com/2013/03/ufo.html
©2019 Pasona Tech, Inc. All Rights Reserved.
お題
6
学習していれば、建物や人間
は見つけることができる。
学習していないUFO
は見つけることがで
きない
砂漠での自動運転に物体検出を使ってみる
今の物体検出では学習していないものは検出できない。
誰も見たことがないUFOに対応するにはどうしたらよいか。
UFO以外の物体にも対応したい
©2019 Pasona Tech, Inc. All Rights Reserved.
異常検知の手法を物体検出に応用する
異常検知(anomaly detection)
・正常な状態から違う状態の物を見つける。
・半教師あり学習
- 正常データだけでモデルを作り異常度を判断する。
7
正常データ:砂漠画像 異常データ:UFO画像
正常画像だけで学習を行う。
異常データは不要。
未知の物体を検出できる。
©2019 Pasona Tech, Inc. All Rights Reserved.
AutoEncoderの構成
8
入力
64x64x3
出力
64x64x3
Convolution MaxPooling UpSampling
16x16x8
入力画像の特徴量(64x64x3=12288)が、真ん中の特徴量(16x16x8=2048)に圧縮される
入力と出力が同じになるように学習する。
©2019 Pasona Tech, Inc. All Rights Reserved.
異常検知手法
9
砂漠の画像を入れると砂漠の画像が出てくる。
砂漠じゃない画像を入れても、砂漠っぽい画像がでてくる。
入力 出力
SSD
入力画像と出力画像の差を取って、一
定以上の差があれば異常と判断する。
SSD:
sum of squared difference
©2019 Pasona Tech, Inc. All Rights Reserved.
10
実際にやってみた
©2019 Pasona Tech, Inc. All Rights Reserved.
データの準備
11https://commons.wikimedia.org/wiki/File:Batayeh,_Sharjah.jpg
砂漠の画像データを64x64に分割し、砂漠以外が
写っていないものを正常データ(教師データ)とした。
最終的な学習データは520枚、テストデータは105枚
空が入っているデータも作り、空と砂漠が正常データ
とした。
©2019 Pasona Tech, Inc. All Rights Reserved.
コーディングのTips
12
①誤差関数
②Heatmap
https://blog.keras.io/building-autoencoders-in-keras.html
autoencoder.compile(optimizer='adadelta',
loss='binary_crossentropy')
Keras official blog
説明がわかりやすくて、非常に参考になる。
ただし、入力が2値の場合を扱っているので、誤差関数に注意
‘mean_squared_error’ 最小二乗誤差
異常検知にAEを使う例の場合、異常個所にヒートマップを付ける例
が多い。この時、異常度(ex:SSD)を正規化する実装が多い。
今回の異常検知では、正規化せずに閾値の設定の方が実用的
©2019 Pasona Tech, Inc. All Rights Reserved.
結果①
13
①学習データに空を含
まない場合
空は砂漠でないので
異常扱い
白いところが異常度が高い ②学習データに空を含む
場合
空でも砂漠でもないとこ
ろが異常扱い
©2019 Pasona Tech, Inc. All Rights Reserved.
結果②
14
砂漠ではないものを検出
©2019 Pasona Tech, Inc. All Rights Reserved.
実際の使い方
15
物体検出が見逃したものに対して
警告を上げる
©2019 Pasona Tech, Inc. All Rights Reserved.
発展形
・VAE
Variational AutoEncoder,
変分オートエンコーダー
16
・学習が速い
CPUのみでも5分~10分で学習が終了する。
例:新しい砂漠に行った時も、新しい砂漠のデータで
すぐに学習できる。
©2019 Pasona Tech, Inc. All Rights Reserved.
まとめ
・物体検出では学習していない物体は検出できない
・AutoEncoderは自分自身に戻るNNで、特徴量の圧縮を行う。
・AutoEncoderで異常検知をすることで、未知の物体を検出できる。
17
AutoEncoder 異常検知
©2019 Pasona Tech, Inc. All Rights Reserved.
パソナテックの紹介
18
エッジAIソリューション
https://ja.wikipedia.org/wiki/Raspberry_Pi
組込じゃない時系列分析、異常検知もやってます。
エンジニア募集中(未経験者歓迎)
Wantedlyでパソナテックを検索してください。
もしくは、 mnatsutani@pasonatech.co.jp まで連絡ください
受講者300
名突破
©2019 Pasona Tech, Inc. All Rights Reserved.