1. 程式人生 > >Tensorflow 影象資料預處理,標準化

Tensorflow 影象資料預處理,標準化

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求出標準差