TensorFlow - 画像を加工してみる.
TensorFlowには画像を加工するための様々な関数が用意されています.
CIFAR-10のチュートリアルでも色々と適用しているので画像加工部分のみ切り出してみました.
tensorflow/models/image/cifar10/cifar10_input.py - tensorflow - Git at Google
加えた処理
- 画像の切り取り(ランダムに適用)
- 明るさの変更(ランダムに適用)
- コントラストの変更(ランダムに適用)
- 白色化
コード
#!/usr/bin/env python # -*- coding: utf-8 -*- from sklearn.datasets import load_sample_images import matplotlib.pyplot as plt import tensorflow as tf def main(args): original_image = load_sample_images().images[0] / 255.0 img = tf.placeholder(tf.float32, shape=[427, 640, 3]) # 画像の切り取り height, width = 400, 400 crop_img = tf.image.random_crop(img, [height, width]) # 明るさをランダムに変更 brightness_img = tf.image.random_brightness(img, max_delta=63) # コントラストをランダムに変更 contrast_img = tf.image.random_contrast(img, lower=0.2, upper=1.8) # 白色化 whitening_img = tf.image.per_image_whitening(img) with tf.Session() as sess: imgs = [original_image] + sess.run([crop_img, brightness_img, contrast_img, whitening_img], feed_dict={img: original_image}) for i, (image, title) in enumerate(zip(imgs, ["original", "crop", "brightness", "contrast", "whitening"])): plt.subplot(231 + i) plt.imshow(image) plt.title(title) plt.show() if __name__ == "__main__": tf.app.run()
結果