iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 17
1
AI & Data

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

二、教你怎麼看source code,找到核心程式碼 ep.10:如何製作tfrecord? 2

文章說明

文章分段

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

 

前情提要

開始講dataset資料夾的程式,首先從build_dataset_data.py開始,這份code需要根據每個dataset的架構的不同去撰寫,但簡言之其需要寫到的功能有:

  • 處理參數的程式
  • 定義tfrecord中的每一個tf example要存放的名字與型態
  • 根據data與label的存放的型態,用對應載入程式將其載入
  • 把準備好的資料按照定義,寫成一筆筆tf example存入tfrecord
  • 以上兩步用迴圈處理
  • 還可以按照資料集的不同分配,處理train與validation資料

Ep.9其實只有講到step 1而已,今天接著繼續按照程式順序來閱讀,準備從build_data.py說明自定義的reader。

開始吧。

逛deeplab的github程式

build_data.py

首先快速瀏覽一下這份code裡面包含的功能:

  • 52行是將tensorflow用於讀取jpeg與png的2種method,合併成為一個通用的reader,使用時要先宣告要讀取的檔案型態。

 

  • 105、120行是把讀取的資料轉成在儲存tfrecord時使用的TF_Feature型態。

 

  • 接著是最後的136行,是適用於大部分segmentation任務的通用型tf example格式,包括2d data本身、檔名、2d影像的、還有label

 



接著回到build_voc2012_data.py,104-105行分別宣告了用來處理data和label的reader。

由此可知,voc2012的資料集的data是jpeg格式,且為3維(RGB)的彩色影像;而label則是png格式的1維影像。

事實上,label不會是jpeg格式的原因是:jpeg是有損壓縮,將其載入回來的label有可能失真,所以一般來說,如果label被以一張影像的方式儲存的話,決大部分都是以png的格式進行儲存的。


上一篇
二、教你怎麼看source code,找到核心程式碼 ep.9:如何製作tfrecord?
下一篇
二、教你怎麼看source code,找到核心程式碼 ep.11:如何製作tfrecord? 3
系列文
從零.4開始我的深度學習之旅:從 用tf.data處理資料 到 用tf.estimator或tf.keras 訓練模型30

尚未有邦友留言

立即登入留言