2017年3月25日 星期六

[Tensorflow] 將圖片轉成 TFRecords 檔案

如何將影像訓練資料轉成 Tensorflow可以讀的 TFrecords 檔?

嘗試可行方案

透過 build_image_data.py 轉成 TFrecords 檔

For inception-v3 model

1. 方案1

在Tensorflow官方的Github上

How to Construct a New Dataset for Retraining

Briefly, this script takes a structured directory of images and converts it to a sharded TFRecord that can be read by the Inception model.
教我們如何產生 Inception model 可以讀的 TFrecords 格式

如果有安裝Bazel這個Google內部使用的 make file 工具的話

按照裡面的指令,就能夠將影像資料轉成 tfrecords 檔

步驟1: 先準備好 訓練資料的資料夾 & 驗證資料的資料夾 
以及負責標籤的 labels.txt 檔txt 檔裡面只有資料夾名稱,一個資料夾一行,其餘用換行鍵隔開)

步驟2

bazel-bin/inception/build_image_data \                      # 照著輸入即可
--train_directory="${TRAIN_DIR}" \                      輸入訓練資料夾位置
--validation_directory="${VALIDATION_DIR}" \    # 輸入驗證資料夾位置
--output_directory="${OUTPUT_DIRECTORY}" \  # 輸出 tfrecords 檔的路徑
--labels_file="${LABELS_FILE}" \                        #裡面只有資料夾名稱,即有哪些資料夾需要處理 
--train_shards=128 \                                               # 照著輸入即可
--validation_shards=24 \                                         # 照著輸入即可
--num_threads=8                                                   # 照著輸入即可


2. 方案2

註:與 How to Retrain a Trained Model on the Flowers Data(較小資料量的訓練 (218 MB)) 類似的內容

For pre-trained model

之前利用NVIDIA官網上的教學


則是可以產生 已經訓練過的模型 (內有ckpt檔案的路徑,執行後會自動網路上下載)可以讀的 TFrecords 格式

因為不想要改動原本裡面內建的腳本程式,所以另外複製了一份

並且更改檔案名稱

需要小心的是,如果今天創造了一個新的程式

需要在 inception/data 裡面有一個檔案叫作 BUILD 的txt檔案裡面加上它需要的資訊

最簡單的作法是找到原本檔案的資訊,名稱以及對應的檔案改成新的檔案名就可以了


---(暫不採用)寫一個腳本程式(script ) ---

腳本程式(負責準備好訓練用影像資料夾等路徑) + python 檔案(實際處理)

原因:因為需要考慮bazel這個建置程式可能造成的影響(ex. 只能在特定資料夾下處理)

所以直接拿Tensorflow models資料夾中的腳本直接來修改比較省時間
-------------------------------------------------------------------------------------------
背景知識補充 : 認識與學習BASH學習 Shell Scripts

參考以下的文章

How do I create a script file for terminal commands?

以 vim 打開一個程式任意的撰寫畫面

請務必確保在第一行寫下以下的程式

#!/bin/bash

接著,再將該程式標示為可執行

chmod +x 檔案名稱

What does set -e mean in a bash script?

What does -z mean in Bash?


Bazel

使用bazel build之前

記得開一個worksapce,這邊的通關密碼是輸入

touch WORKSPACE

相關 bazel 建置的問題 : The 'build' command is only supported from within a workspace 

後來去查 Bazel 的官方使用教學的 Using a Workspace 這段也有提到這件事情





待嘗試...

教學文 Tfrecords Guide :執行 python code 產生 tfrecords 檔  

Python 

新創一個 python 檔案

在命令列視窗裡面以vim開啟一個結尾是.py的檔案

$ vim filename.py

進入vim編輯的畫面之後

記得在第一行加上下列的程式碼

#!/usr/bin/python

按下 [Esc] 鍵之後,輸入冒號符號: 和英文字母 wq,代表寫入(Write)並離開(Quit)的意思


沒有留言:

張貼留言

/* 載入prettify的autoloader */ /* 載入JQuery */