Tensorflow 影象資料預處理,標準化
阿新 • • 發佈:2018-12-18
import numpy as np
import random
import matplotlib.pyplot as plt
from PIL import Image
1.需要匯入的包
for n in range(4600): # input_data用來儲存所有faces圖片的路徑 data_path=r'C:\Users\Administrator\Desktop\dataset\faces-resize-gray\{}.jpg'.format(n+1) input_data.append(data_path) `` ` 2.建立一個數組儲存所有圖片的路徑資訊
def faces_batch(input_data): random.shuffle(input_data)
train_data儲存影象資料
train_data=np.empty((BATCH_SIZE,IMAGE_SIZE,IMAGE_SIZE))
隨機返回batch個影象的路徑
random_path=[]
random_path=random.sample(input_data,BATCH_SIZE)
3.首先random.shuffle就地打亂列表,再隨機從列表中返回十個圖片的地址,
for i in range(BATCH_SIZE):
讀取隨即返回的batch個路徑對應的picture,並儲存到一個第一維為batch大小的陣列
image=Image.open(random_path[i])
影象隨機左右翻轉
if random.randint(1,11) >random.randint(1,10):
image = image.transpose(Image.FLIP_LEFT_RIGHT)
img_ndarray=np.asarray(image,dtype='float64')
4.前面設定為randint(1,11),後面為(1,10)保證了圖片被水平翻轉的概率為0.5
影象明度,對比度隨機調整
gamma=random.randint(-30,30) a=random.uniform(0.85,1.3) img_brightness=a*img_ndarray + gamma
5.gamma值調整亮度
a值調整對比度
影象歸一化處理
mean=np.sum(img_brightness)/4096
std=np.std(img_ndarray)
standard_img=(img_brightness-mean)/std
train_data[i]=standard_img
train_data = train_data.astype('float32')
return train_data
6.np.sum()/(imgsize*imgsize)求出畫素均值
np.std求出標準差