DeepLab 使用 Cityscapes 數據集訓練模型


原文地址: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

清華大學 TUNA 鏡像站 - Anaconda

Anaconda 4.6.11

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

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

下載數據集

使用 Cityscapes 官方數據集

百度雲鏈接
提取碼: 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 補充

TensorFlow DeepLab Model Zoo


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM