天天看點

ckpt下載下傳 deeplabv3_DeepLab 使用 Cityscapes 資料集訓練模型

0x00 操作環境

OS: Ubuntu 16.04 LTS CPU: Intel® Core™ i7-4790K GPU: GeForce GTX 1080/PCIe/SSE2 Nvidia Driver Version: 384.130 RAM: 32 GB

Anaconda: 4.6.11 CUDA: 9.0 cuDNN: 7.3.1 python: 3.6.8 tensorflow-gpu: 1.13.1

本文操作路徑基于 /home/ai,使用 ~/ 代替

0x01 環境配置

安裝 Anaconda

首先下載下傳安裝腳本并賦予執行權限

wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2019.03-Linux-x86_64.sh

chmod +x Anaconda3-2019.03-Linux-x86_64.sh

運作安裝腳本

./Anaconda3-2019.03-Linux-x86_64.sh

按照提示輸入安裝資訊,建議安裝在 /usr/local/anaconda3 目錄下,友善管理

安裝 python 3.6

最新版的 Anaconda 預設在 base 環境安裝 python 3.7,導緻很多架構不支援,這裡換成 3.6

conda install python=3.6

安裝 tensorflow-gpu

conda install tensorflow-gpu=1.13.0

安裝 CUDA

conda install cudatoolkit=9.0

0x02 配置 DeepLab v3

clone 源碼

git clone https://github.com/tensorflow/models.git

下載下傳資料集

百度雲連結 提取碼: 7jgc

在 research/deeplab/datasets/dataset 目錄下建立 dataset 檔案夾,并将下載下傳的資料集解壓至 model-master/research/deeplab/datasets/dataset

mkdir model-master/research/deeplab/datasets/dataset

unzip cityscapes.zip -d model-master/research/deeplab/datasets/dataset

解壓 gtFine 檔案

cd model-master/research/deeplab/datasets/dataset/cityscapes && \

unzip gtFine.zip

下載下傳 Cityscapes 資料集相關腳本

clone 源碼并移動至 model-master/research/deeplab/datasets/dataset/cityscapes

git clone https://github.com/mcordts/cityscapesScripts

mv cityscapesScripts model-master/research/deeplab/datasets/dataset/cityscapes

下載下傳預訓練模型

建立用于存放模型的檔案夾

mkdir ~/models-master/research/deeplab/model

下載下傳模型并解壓至 model 檔案夾

wget http://download.tensorflow.org/models/deeplabv3_mnv2_cityscapes_train_2018_02_05.tar.gz

tar zxvf deeplabv3_mnv2_cityscapes_train_2018_02_05.tar.gz ~/models-master/research/deeplab/model

0x03 轉換資料集格式

将 Cityscapes 的 JSON 資料轉換成 tfrecord

建立用于輸出 tfrecord 資料的檔案夾

mkdir ~/models-master/research/deeplab/datasets/dataset/cityscapes/tfrecord

修改 models-master/research/deeplab/datasets/convert_cityscapes.sh 中的路徑設定

以下直接給出腳本全文

注意:根據實際情況修改路徑

# Exit immediately if a command exits with a non-zero status.

set -e

CURRENT_DIR=$(pwd)

WORK_DIR="~/models-master/research/deeplab/datasets"

# Root path for Cityscapes dataset.

CITYSCAPES_ROOT="${WORK_DIR}/dataset/cityscapes"

# Create training labels.

python "${CITYSCAPES_ROOT}/cityscapesscripts/preparation/createTrainIdLabelImgs.py"

# Build TFRecords of the dataset.

# First, create output directory for storing TFRecords.

OUTPUT_DIR="${CITYSCAPES_ROOT}/tfrecord"

mkdir -p "${OUTPUT_DIR}"

BUILD_SCRIPT="${WORK_DIR}/build_cityscapes_data.py"

echo "Converting Cityscapes dataset..."

python "${BUILD_SCRIPT}" \

--cityscapes_root="${CITYSCAPES_ROOT}" \

--output_dir="${OUTPUT_DIR}" \

賦予腳本執行權限

chmod +x models-master/research/deeplab/datasets/convert_cityscapes.sh

為友善檔案管理,以上建立的檔案結構與項目預設的結構不同,會導緻一些腳本找不到 cityscapesScripts 相關子產品,需要在 python 腳本中添加路徑

~/models-master/research/deeplab/datasets/dataset/cityscapes/cityscapesscripts/preparation/createTrainIdLabelImgs.py

在 from cityscapesscripts 之前添加

sys.path.append('/home/ai/models-master_train-cityscapes/research/deeplab/datasets/dataset/cityscapes')

修改 build_cityscapes_data.py 腳本中的路徑設定

~/models-master/research/deeplab/datasets/build_cityscapes_data.py

# Cityscapes 目錄

tf.app.flags.DEFINE_string('cityscapes_root',

'./dataset/cityscapes',

'Cityscapes dataset root folder.')

# 輸出目錄

tf.app.flags.DEFINE_string('output_dir',

'./dataset/cityscapes/tfrecord',

'Path to save converted SSTable of TensorFlow examples.')

執行格式轉換腳本

~/models-master/research/deeplab/datasets/convert_cityscapes.sh

0x04 訓練

建立用于儲存訓練權重的目錄

mkdir ~/models-master/research/deeplab/train

參數

training_number_of_steps

疊代次數

train_crop_size

圖檔裁剪大小,預設 513,最小 321

fine_tune_batch_norm=False

是否使用 batch_norm,官方建議,如果訓練的 batch_size 小于12的話,須将該參數設定為False

tf_initial_checkpoint

預訓練的初始 checkpoint,即預訓練模型中的 model.ckpt

train_logdir

儲存訓練權重的目錄

dataset_dir

使用轉換後的 tfrecord 資料集目錄

python train.py \

--logtostderr \

--training_number_of_steps=30000 \

--train_split="train" \

--model_variant="xception_65" \

--atrous_rates=6 \

--atrous_rates=12 \

--atrous_rates=18 \

--output_stride=16 \

--decoder_output_stride=4 \

--train_crop_size=321 \

--train_crop_size=321 \

--train_batch_size=4 \

--fine_tune_batch_norm=False \

--dataset="cityscapes" \

--tf_initial_checkpoint="~/models-master/research/deeplab/model/train_fine/model.ckpt" \

--train_logdir="~/models-master/research/deeplab/train" \

--dataset_dir="~/models-master/research/deeplab/datasets/dataset/cityscapes/tfrecord"

0x05 測試

建立用于儲存輸出的目錄

mkdir ~/models-master/research/deeplab/vis

參數

vis_crop_size

圖檔裁剪大小

checkpoint_dir

訓練權重的目錄

vis_logdir

輸出分割結果的目錄

dataset_dir

使用轉換後的 tfrecord 資料集目錄

python vis.py

--logtostderr

--vis_split="val"

--model_variant="xception_65"

--atrous_rates=6

--atrous_rates=12

--atrous_rates=18

--output_stride=16

--decoder_output_stride=4

--vis_crop_size=1025

--vis_crop_size=2049

--dataset="cityscapes"

--colormap_type="cityscapes"

--checkpoint_dir="/home/ai/models-master_train-cityscapes/research/deeplab/train"

--vis_logdir="/home/ai/models-master_train-cityscapes/research/deeplab/vis"

--dataset_dir="/home/ai/models-master_train-cityscapes/research/deeplab/datasets/dataset/cityscapes/tfrecord"

測試後生成的原圖和分割圖存在 vis_logdir/segmentation_results 目錄下

0x06 補充

原文出處:https://www.cnblogs.com/leviatan/p/10683325.html