컨벌루션 신경망(CNN)의 훈련 데이터를 작성하는 툴을 만들어 보았다 - ②이미지의 물 증가
14274 단어 파이썬tipsTensorFlow심층 학습기계 학습
소개
지난번 다음에, 이번에는 화상의 물을 늘립니다.
프로그램
pad.py#!/usr/local/bin/python3
#!-*- coding: utf-8 -*-
import argparse
import os
import tensorflow as tf
from PIL import Image
import numpy as np
import shutil
def padImages(input_dir, output_dir):
files = os.listdir(input_dir)
for file in files:
name, ext = os.path.splitext(file)
if ext != '.jpg':
print('[' + file + ']: 不正なファイルが含まれています。')
if '_' not in file:
img = tf.read_file(os.path.join(input_dir, file))
img = tf.image.decode_jpeg(img, channels=3)
height, width = 250, 250
crop_img = tf.random_crop(img, [height, width, 3])
flip_left_right_img = tf.image.random_flip_left_right(img)
# 正方形リサイズ後の場合、黒か白に寄せられてしまうため使えない。
# 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_standardization(img)
with tf.Session() as sess:
for i in range(4):
padded_img = sess.run(crop_img)
Image.fromarray(np.uint8(padded_img)).save(
os.path.join(
output_dir,
str(i) + '_crop_' + file
)
)
padded_img = sess.run(flip_left_right_img)
Image.fromarray(np.uint8(padded_img)).save(
os.path.join(
output_dir,
'flip_left_right_' + file
)
)
# padded_img = sess.run(brightness_img)
#
# Image.fromarray(np.uint8(padded_img)).save(
# os.path.join(
# output_dir,
# 'brightness_' + file
# )
# )
padded_img = sess.run(contrast_img)
Image.fromarray(np.uint8(padded_img)).save(
os.path.join(
output_dir,
'contrast_' + file
)
)
padded_img = sess.run(whitening_img)
Image.fromarray(np.uint8(padded_img)).save(
os.path.join(
output_dir,
'whitening_' + file
)
)
shutil.copyfile(
os.path.join(input_dir, file),
os.path.join(output_dir, file)
)
def main():
# @TODO: tensorflowの引数関数に変更してもよい
parser = argparse.ArgumentParser()
parser.add_argument('--input_dir', default='original')
parser.add_argument('--output_dir', default='paded')
args = parser.parse_args()
padImages(args.input_dir, args.output_dir)
if __name__ == '__main__':
main()
실행 결과
tf.random_crop
tf.image.random_flip_left_right
tf.image.random_contrast
tf.image.per_image_standardization
Reference
이 문제에 관하여(컨벌루션 신경망(CNN)의 훈련 데이터를 작성하는 툴을 만들어 보았다 - ②이미지의 물 증가), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/neriai/items/98e4f6b70c87e51014c6
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
#!/usr/local/bin/python3
#!-*- coding: utf-8 -*-
import argparse
import os
import tensorflow as tf
from PIL import Image
import numpy as np
import shutil
def padImages(input_dir, output_dir):
files = os.listdir(input_dir)
for file in files:
name, ext = os.path.splitext(file)
if ext != '.jpg':
print('[' + file + ']: 不正なファイルが含まれています。')
if '_' not in file:
img = tf.read_file(os.path.join(input_dir, file))
img = tf.image.decode_jpeg(img, channels=3)
height, width = 250, 250
crop_img = tf.random_crop(img, [height, width, 3])
flip_left_right_img = tf.image.random_flip_left_right(img)
# 正方形リサイズ後の場合、黒か白に寄せられてしまうため使えない。
# 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_standardization(img)
with tf.Session() as sess:
for i in range(4):
padded_img = sess.run(crop_img)
Image.fromarray(np.uint8(padded_img)).save(
os.path.join(
output_dir,
str(i) + '_crop_' + file
)
)
padded_img = sess.run(flip_left_right_img)
Image.fromarray(np.uint8(padded_img)).save(
os.path.join(
output_dir,
'flip_left_right_' + file
)
)
# padded_img = sess.run(brightness_img)
#
# Image.fromarray(np.uint8(padded_img)).save(
# os.path.join(
# output_dir,
# 'brightness_' + file
# )
# )
padded_img = sess.run(contrast_img)
Image.fromarray(np.uint8(padded_img)).save(
os.path.join(
output_dir,
'contrast_' + file
)
)
padded_img = sess.run(whitening_img)
Image.fromarray(np.uint8(padded_img)).save(
os.path.join(
output_dir,
'whitening_' + file
)
)
shutil.copyfile(
os.path.join(input_dir, file),
os.path.join(output_dir, file)
)
def main():
# @TODO: tensorflowの引数関数に変更してもよい
parser = argparse.ArgumentParser()
parser.add_argument('--input_dir', default='original')
parser.add_argument('--output_dir', default='paded')
args = parser.parse_args()
padImages(args.input_dir, args.output_dir)
if __name__ == '__main__':
main()
tf.random_crop
tf.image.random_flip_left_right
tf.image.random_contrast
tf.image.per_image_standardization
Reference
이 문제에 관하여(컨벌루션 신경망(CNN)의 훈련 데이터를 작성하는 툴을 만들어 보았다 - ②이미지의 물 증가), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/neriai/items/98e4f6b70c87e51014c6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)