サンプル数が少ないとうまく結果を出せない可能性がある
正方形の画像かつ回転等を行っても大丈夫なデータに限るが、画像データの水増しを行ってみる
使用ライブラリ
import numpy as np
import glob
import os
from matplotlib import pyplot as plt
import cv2
プログラム
#今回はGoogleコラボを使うのでこの一文を入れる
from google.colab import drive
drive.mount('/content/drive')
#指定した場所から取得
true_train_img=glob.glob(os.path.join("/content/drive/MyDrive/mvtec/tile/train/good", '*'))
#取得したアドレスの確認
print(true_train_img)
#枚数の確認
print(len(true_train_img))
lensize=len(true_train_img)
#枚数分
for i in range(lensize):
#一枚に対しての処理
#90度、90度、90度で一回転するので3になる
for j in range(3):
img=cv2.imread(os.path.join(true_train_img[i]))
#保存先の指定 最後/としないとファイル直下に大量の画像が入るので注意
savepath='/content/drive/MyDrive/mvtec/tile/train/mizumasi/'
zero_i = "{0:03d}".format(i)
one_i="{0:01d}".format(j)
#アドレスの指定と数字を組み合わせ
new_name = savepath+zero_i+one_i+".png"
for k in range(j):
img=cv2.rotate(img,cv2.ROTATE_90_CLOCKWISE)
#書き込み処理
cv2.imwrite(new_name,img)
この処理を行う事で、1枚→4枚になるのでデータは確保できるはず。
しかしながら上下左右などデータを変えてしまうと成立しないようなデータは使用するべきではないのでちゅうい
ドライブ上ではこのような配置になる。goodは元の画像mizumasiは回転後の画像が入る。画像を1フォルダで一緒にしてしまうと元データが分かりにくくなるので分けている。
true_mizumasi_train=glob.glob(os.path.join("/content/drive/MyDrive/mvtec/tile/train/mizumasi" , '*'))
上のような一文を学習用プログラムに入れることで、取得した画像をプログラム上で追加できる。