iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 25
1
AI & Data

從零.4開始我的深度學習之旅:從 用tf.data處理資料 到 用tf.estimator或tf.keras 訓練模型系列 第 25

二、教你怎麼看source code,找到核心程式碼 ep.18:把tfrecord parse完了,接著做了哪些preprocess? 2

文章說明

文章分段

  1. 文章說明
  2. deeplab的簡單介紹、於我的意義
  3. tensorflow的程式碼特色
  4. 訓練流程的細節
  5. 逛deeplab的github程式,順序:train.py model.py datasets/data_generator.py …

我打算等preprocess的部分講完後,統整一次我第二篇整篇的內容。

前情提要

今天繼續講input_preprocess.py這個程式檔中的methodpreprocess_image_and_label(),preprocess主要做了將影像尺寸規範到某範圍、隨機改變影像尺寸、用平均數值填充影像、隨機剪裁影像。




上個ep有稍微提到第一個preprocess的功用,但詳細的還沒有繼續說明,像是將影像改變尺寸時,align_corners是True還是False,其實還有深入討論的空間,但一個個細講下去,我的30天怕是連第二篇都沒有辦法完結。所以打算先將各個preprocess的用途與input_preprocess.py程式整個大致go through一遍,之後在考慮回來補強細項討論。

因此,今天就會假設data已經經過resize_to_range了。

開始吧。

逛deeplab的github程式(cont.)

input_preprocess.py (cont.)

  • 85-94行是resize_to_range(),回傳的processed_image與label是resize過的。
  • 我還沒有弄懂tf.identity(),所以只好先跳過。

 


接著是random scaling。

  • 首先,100-101行先用設定好的參數factor,每次都會取得隨機的resize scale。
  • 接著102-103行透過隨機取得的scale,將data與label改變尺寸。
  • 104行把processed過的data的shape,設定成[None, None, 3]

我現在也還是不明白為何要把影像長寬改成None。

今天先到這裡,狀況有點差,打的過程一直快要睡著。


上一篇
二、教你怎麼看source code,找到核心程式碼 ep.17:把tfrecord parse完了,接著做了哪些preprocess?
下一篇
二、教你怎麼看source code,找到核心程式碼 ep.19:把tfrecord parse完了,接著做了哪些preprocess? 3
系列文
從零.4開始我的深度學習之旅:從 用tf.data處理資料 到 用tf.estimator或tf.keras 訓練模型30

尚未有邦友留言

立即登入留言