TensorFlow動機elix-tech.github.ioの記事を読んで、「可視化」の項が面白いなーと思って。引用されている図によると、人間の目にはまったく出力クラスとは関係なさそうに見える画像でもCNNによる分類器は騙されてしまう、ということのようだ。分類モデルの方を固定しておいて入力を変数として最適化していけば任意の出力に最適な入力を得ることができるのか、と。自分でもやってみることにした。step進めたものを用意した。26]という具合に、正しいindexの番号の出力が0.9以上になるくらいのものとなっている。このモデルを騙して誤識別させるような画像を生成する、というのが今回のテーマ。3)の変数を用意する。1.0))inference学習済みのモデルにこの変数を入力として与え、分類結果を得る。255の値をとるtf.uint8のTensorをtf.image.per_image_whiteningによって変換したものを入力として取るようにしていたので、それに従って同じように変換する。以前までの記事で使っていた識別器。r.inference(input_image)loss上記で得られた結果と、「理想とする出力」の差分が今回の損失の値になる。Entropyを使ってみることにする。[FLAGS.target_class])train定義したlossを最小化する手続き。これも適当にAdamOptimizerを使っておく。学習によって値を更新していくのは入力変数vのみ。at:...みたいなエラーが出てしまう。tf.float32)))))と書き換えてみたら無事に学習できるようになった。step程度でlossは十分に減少し、softmaxの目標indexの出力は0.999を超えるくらいになる。(0.999060)で、この学習終了後の変数vを画像として出力してみると。f.write(sess.run(tf.image.encode_png(output_image)))(ちなみにこういったランダム要素の多い画像をjpeg出力するときはchroma_downsamplingオプションをFalseにしないとかなり情報が落ちてしまうようなので注意。今回の分類器に最適化された入力画像、となる。10のものが0.999以上の値になっている。どちらも非常に高い確度で同じ人物だと認識する、ということになる。こんなデタラメ模様のどこに特徴が隠れているんだ...。実験ちなみに一応、他のindexに最適化された画像もそれぞれ生成してみた。いう感じで、どれもそれぞれ対応するindexに対し0.999くらいのsoftmax出力になる画像なのだけど、人間の目にはデタラメ模様にしか見えない。そこに人間の目には分からないような最適化を加えたものを作ることもできるわけで。分類器の結果は完全に別の人物としての高確度の識別をしてしまう。高確度であるアイドルさんとして識別されることがあったりして不思議に思っていたけど、こういう結果を見るとまぁ起こり得るんだろうなぁと納得できる。こんな意味わからん誤認識をするくせに94%とかの精度が出る方が不思議だわ...。流儀に...2018-10-09学習済みMobileNetV2モデルによる推論をTensorFlow.jsとWebWorkerを使っ...将棋駒画像分類の話の続き。学習させたモデル...2018-07-07将棋駒画像分類をMobileNetV2で最初から学習させる前回の将棋駒画像分類の話の続き。その2以前に試した、アイドル顔識別の性能評価。