接續ep.18。
input_preprocess.py
(cont.)tf.shape
的axis 0是平常圖片的高、axis 1則是圖片的寬。
mean_pixel
變數中。
pad_to_bounding_box()
中,tensorflow的image API中也有實作一個同名的method,但這兩個有稍微不同之處:Deeplab這裡實作的方法,可以輸入任意要padding的值,不用一定是0;在圖片尺寸不明的狀況下亦可處理。
再來是將已經經過resize、padding的影像,用random_crop()
隨機裁切,他的第一個參數是把data與label這兩個高寬相同、但channel數不同的tensor用list包起來,這樣分批可以加快速度處理。
所做的事情是隨機在圖片的任意位置上產生指定crop尺寸(預設是513,513)的bounding box,然後再根據bounding box做裁切。
做完一切處理後,所有的影像皆為指定的crop尺寸,就把影像的尺寸給設定好。label也是。
接著最後就是在訓練時,以0.5的機率將data與label作為一組進行左右翻轉。這個method也是自製的,而非使用tf.random_flip_left_right,這樣可以調控翻轉的比例並且確保data與label是接受相同的處理。
最後就將處理完成的data與label回傳。