精選文章

Tensorflow Deeplab 程式使用方法 教學 Tutorial | Deeplab參數解釋中文

可以用來把deeplab源碼運作起來,並且保留我對於程式各參數的解釋,新手試著搞懂這所有參數的用法。 如果還會遇到bug,可以問我,我最近在整理blog,我在把文章補完善
<br /><br />

Deeplab是Google做的tensorflow團隊的人所做的研究,他的源碼是放在github的[tensorflow/models/tree/master/research/deeplab](https://github.com/tensorflow/models/tree/master/research/deeplab)

<br /><br />


## 想在不安裝package的情況下,單把deeplab的code挖出來執行的話
1. 把slim的兩個東西

	```
    /research/slim/deployment
    ```
    ```
    /research/slim/nets
    ```
    把這兩個資料夾下的所有項目複製放入`models/research/deelab/core/`資料夾裡

2. 把有這行的`.py`檔案全部加入這行`sys.path.append("..")`

    ```
    from deeplab import ...
    ```
    
    ```
    sys.path.append("..")
    from deeplab import ...
    ```

<br /><br />



## 程式用法
```
python3 train.py --train_logdir ./models/MOBILENET_v2_CrossEntropy_v2 \                         # 給訓練的Model名稱,並且統一放在models/資料夾下
                 --tf_initial_checkpoint ./models/MOBILENET_v2_CrossEntropy_v1/model.ckpt-1000  # pretrain放的方式
```
這個部分可以自行摸索,但基本上就是`--直接黏著參數名`。

<br /><br />

## 訓練結束檢視時,Tensorboard的用法
那因為程式是有用tensorboard去呈現訓練結果,所以訓練完成後,以`Model為名稱的資料夾`下方會有tfevents

```
ls ./models/MOBILENET_v2_CrossEntropy/events.out.tfevents..
```
所以使用tensorboard的方法只要給`--logdir`參數上一層的資料夾位置。
```
tensorboard --logdir=./models/MOBILENET_v2_CrossEntropy
```

<br /><br />

`train.py`有這些參數:

```
num_clones
train_logdir             #這次訓練的checkpoint、tfevent放置資料夾(推薦資料夾名稱包含backbone, loss function名稱等等)
save_summaries_images    #True/False,要不要在tfevent裡放image, label, prediction
optimizer                #[momentum, adam]擇一
learning_policy          #[poly, step]擇一,learning rate的下降方式
base_learning_rate       #0.0001 初始training的learning rate
learning_rate_decay_step #2000 每更新幾次model內部參數,learning rate下降
training_number_of_steps #30000 model總更新內部參數次數
tf_initial_checkpoint    #None,pretrained model參數
initialize_last_layer    #True/False,如果是不同的model,True,如果是同功用的model,False
min_scale_factor         #0.5,data augmentation的縮放最小比例,如果圖本來就不大,可能填接近1的數字
max_scale_factor         #2,data augmentation的縮放最大比例
dataset                  #有建立在datasets/data_generator.py的資料集
train_split              #用來選擇用於[train, val]的tfrecord,選項在datasets/data_generator.py的splits_to_sizes
dataset_dir              #None,datasets/\*Dataset Name\*/tfrecord/
```

<br />

`eval.py`有這些參數:

```
master           #跟建立tensorflow cluster有關的,跟train.py的`master`一樣即可,如果只有用一個gpu,保留原始設定的空字串`''`就好
eval_logdir      #放置評估模型時,產生的任何檔案
checkpoint_dir   #有放訓練好的模型資料夾,與train.py對應是`train_logdir`
eval_batch_size  #評估時的batch_size,與train.py的`train_batch_size`對應,目前不清楚train跟eval的batch_size一樣與不一樣會有什麼差別,預設是不一樣
eval_crop_size   #應該是進入model時的input size,與train.py的`train_crop_size`對應,不清楚可不可以不一樣,預設是一樣513x513
atrous_rates     #就是deeplab提出的atrous convolution,在這裡調空洞比例
output_stride    #input_size/output_size的比例,縮小多少倍的意思
eval_scales      #選擇評估時,resize input尺寸,1.0就是原始大小
add_flipped_images   #要不要把input水平翻轉
quantize_delay_step  #同train.py的`quantize_delay_step`
dataset              #同train.py的`dataset`
eval_split           #用來選擇用於[train, val]的tfrecord,選項在datasets/data_generator.py的splits_to_sizes,同train.py的`train_split`,如果跟train時選擇一樣的dataset,可以用來檢視model是不是正確執行
dataset_dir          #同train.py的`dataset_dir`
max_number_of_evaluations   #評估要iteration幾次,如果沒有設定,evaluation會無限迴圈
```

<br /><br />

## 錯誤寫法:
預設none的參數,沒有的話,就不要特別寫上去然後加一個`None`給他
```
python3 train.py --tf_initial_checkpoint None  # wrong way
```
在寫參數時,就直接忽略掉那個參數就行了

留言

這個網誌中的熱門文章

COCO Dataset: 介紹、下載、取得方式、標註資料格式(key points)