(「深層学習 TensorFlow + keras 植物写真の自動着色」の続きです。)
前回は花の色がうまく染まっていなかったので、花を染める目的で学習用のデータを集めてネットワーク構成やパラメータを変えてみました。
(1)学習用データ
主に花の葉の写真を集めています。
このうちランダムに5%をvalidation用、3%をテスト用、残り92%を学習用として使っています。
(2)プログラム
今回は、以下のようなCNN構成で学習させました。
階層を増やしてカーネルサイズを3と5、スライドは2階層につき2として変化させてみました。
## イメージサイズ
PIC_SIZE = 256
## モデルの構築
autoencoder = kr.models.Sequential()
# encoder
autoencoder.add(kr.layers.Conv2D(filters= 64, kernel_size=(3, 3), strides=(1,1), activation=’relu’, padding=’same’, input_shape=(PIC_SIZE, PIC_SIZE, 1)))
autoencoder.add(kr.layers.Conv2D(filters= 64, kernel_size=(5, 5), strides=(1,1), activation=’relu’, padding=’same’))
autoencoder.add(kr.layers.Conv2D(filters= 64, kernel_size=(3, 3), strides=(2,2), activation=’relu’, padding=’same’))
autoencoder.add(kr.layers.Conv2D(filters= 64, kernel_size=(5, 5), strides=(1,1), activation=’relu’, padding=’same’))
autoencoder.add(kr.layers.Conv2D(filters= 64, kernel_size=(3, 3), strides=(2,2), activation=’relu’, padding=’same’))
autoencoder.add(kr.layers.Conv2D(filters= 64, kernel_size=(5, 5), strides=(1,1), activation=’relu’, padding=’same’))
autoencoder.add(kr.layers.Conv2D(filters= 64, kernel_size=(3, 3), strides=(2,2), activation=’relu’, padding=’same’))
# decoder
autoencoder.add(kr.layers.Conv2DTranspose(filters= 64, kernel_size=(5,5), strides=(2,2), activation=’relu’, padding=’same’))
autoencoder.add(kr.layers.Conv2DTranspose(filters= 64, kernel_size=(3,3), strides=(1,1), activation=’relu’, padding=’same’))
autoencoder.add(kr.layers.Conv2DTranspose(filters= 64, kernel_size=(5,5), strides=(2,2), activation=’relu’, padding=’same’))
autoencoder.add(kr.layers.Conv2DTranspose(filters= 64, kernel_size=(3,3), strides=(1,1), activation=’relu’, padding=’same’))
autoencoder.add(kr.layers.Conv2DTranspose(filters= 64, kernel_size=(5,5), strides=(2,2), activation=’relu’, padding=’same’))
autoencoder.add(kr.layers.Conv2DTranspose(filters= 64, kernel_size=(3,3), strides=(1,1), activation=’relu’, padding=’same’))
autoencoder.add(kr.layers.Conv2DTranspose(filters= 2, kernel_size=(1,1), strides=(1,1), activation=’relu’, padding=’same’))
# コンパイル
autoencoder.compile(optimizer=’adam’, loss=’mse’)
# バッチサイズ=48 エポック=120
(3)結果
左から、モノクロ写真、着色写真、元の写真の順です。
参考のため前回の結果ログがら一部抜粋して比較しています。
【ツワブキの花】
参考:前回の結果↓
【タンポポの花】
参考:前回の結果↓
黄色の花はそれなりに染まっているようです。
色の塗り方にムラがありますが。
【カワラナデシコの花】
前の結果↓
まだ不十分ですが少しだけ改善されていると思います。
【サルスベリの花】
前の結果↓
【サザンカの花】
前の結果↓
色は薄いですが少しは赤く染まるようになりました。まだ赤色の学習データが足りないと思います。
【サツキの花】
前の結果↓
まだ赤色が薄く緑がかった部分が多いです。花びらと葉の区別の問題でしょうか?
全体的には赤色の花の学習データまだ足りないようです。
【サツキの葉】
前の結果↓
葉の方の色合いは改善されていると思います。
まだ学習が不十分ですが前回よりは少しましになったと思います。
環境バイオでは自動着色自体は目的ではなく、学習用データや、ネットワーク構成・パラメータなどを都合よく変化させて別の目的に利用できないか検討することです。
このように自動着色で学習用データや、ネットワーク構成・パラメータなどを少しずつ変えて結果の変化を比較してみると変更の影響がなんとなく実感として解ってくると思います。
(2020/5/17 S.Onda)