圖像的亮度、對比度等屬性對圖像的影響非常大,這些因素都會影響最后的識別結構。當然,復雜的預處理過程可能會導致訓練效率的下降(利用TensorFlow中多線程處理輸入數據的解決方案)。
同一不同的原始數據格式-----TFRecord格式
TensorFlow圖像處理函數:圖像編碼處理 img_data=tf.image.decode_jpeg(image_raw_data) (RGB色彩模式的圖像看做是一個三維矩陣,矩陣的每個數表示了圖像上不同位置,不同顏色的亮度,然而圖像在存儲時並不是直接記錄這些矩陣中的數字,而是記錄壓縮編碼之后的結果,所以要將一張圖像還原成一個三維矩陣,需要解碼的過程)
圖像大小調整resized=tf.image.resize_images(img_data,[300,300],method=0)(0:雙線性插值法 1:最近鄰居法 2:雙三次插值法 3:面積插值法)(圖像的大小時不固定的,但神經網絡輸入節點的個數是固定的,因此將圖像的像素作為輸入提供給神經網絡之前,需要將圖像的大小統一)
圖像裁剪和填充: tf.image.resize_image_with_crop_or_pad(img_data,1000,1000)
通過比例調整圖像大小:tf.image.central_crop(img_data,05), 此外,TensorFlow提供tf.image.crop_to_bounding_box與tf.image.pad_to_bounding_box來裁剪或者填充特定區域的圖像
圖像翻轉:圖像上下翻轉tf.image.flip_up_down(img_data) , 圖像左右翻轉tf.image.flip_left_down(img_data) 圖像沿對角線翻轉 tf.image.transpose_image(img_data) (通過隨機翻轉訓練圖像的方式可以在零成本的情況下很大程度緩解訓練出來的模型不能識別因物體角度,位置不同,而識別不出的問題)
tf.image.random_flip_up_down(img_data) 以一定概率上下翻轉圖像
圖像色彩調整:(隨機調整訓練圖像的亮度,對比度,飽和度和色相,從而使得訓練得到的模型盡可能小地收到無關因素的影響)(tf.image.adjust_brightness(img_data,-0.5)
tf.image.random_brightness(image,max_delta 在[-max_delta,max_delta]范圍隨機調整圖像的亮度
tf.image.random_contrast(image,lower,upper))
調整色相:tf.image.adjust_hue(img_data,0.1)
調整飽和度:tf.image.adjust_suturation(img_data,-5)
完成圖像標准化:將圖像上的亮度均值變為0,方差為1(tf.image.per_image_whitening(img_data)
添加標注框: