(「深層学習 TensorFlow + keras 植物写真の自動着色(2)」の続きです。)
いままでの自動着色の結果を利用して特定の花だけを塗りつぶす学習を試みました。
(1) プログラム
まず自動着色の結果を参考にして Autoencoder プログラムを作成。
(Autoencoder:入力層と出力層に同じデータを用いて教師あり学習させる。)
autoencoder03-5.py(言語 Python、テキストファイル UTF-8)
(2) 学習用データ
基本的には教師画像は元の画像と同じ画像ですが、ドクダミの花の教師画像だけは以下のように黒く塗りつぶして輪郭をグレーにしています。
例)元の画像 → 教師画像
↓ ↓ ↓
学習用画像 colorize03.zip
これを学習させることによって、ドクダミの花だけを黒く塗りつぶすことはできるでしょうか?
(3)結果
学習結果(ウェイト)autoencoder03-5_weights.h5
テストプログラム autoencoder03-5test.py(言語 Python、テキストファイル UTF-8)
テストデータ colorize03test.zip
↓テスト結果(一部抜粋、それぞれの上段が元の画像、下段が結果の画像)
【ドクダミの花】
輪郭が少し黄色になってますが、 ほぼ予定通りにドクダミの花が特異的に黒く塗られました。
【その他の花や葉】
予定通り、その他の花や葉はドクダミの花ように黒く塗られてはいませんでした。
また、どのようなピクセルのパターンを識別してるのかを、以下のような図形や下手な絵で試してみました。
基本的には白は黄色になりました。おそらく学習用データに黄色い花や葉の緑が多いことが影響してるのではないかと思います。無条件で白を黒に変えてはいません。
下手な絵でも形状がドクダミに似て、かつ背景が濃い緑のものが黒く塗りつぶされました。
同じ形状でも背景の色も影響しているようです。おそらく背景にドクダミの葉に近い色(濃い緑)があると黒に染まるのではないかと思います。
【開発環境】
Ubuntu 18.04.1 LTS、Python 3.6.6、tensorflow-gpu 1.8.0、Keras 2.2.4
画像表示は IPython.display, jupyter notebook で実行
(2020/5/27 S.Onda)
(2020/5/29 S.Onda 追記、一部修正)