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
首先下载安装脚本并赋予执行权限
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
DeepLab 使用 Cityscapes 数据集训练模型的更多相关文章
- tensorflow语义分割api使用(deeplab训练cityscapes)
安装教程:https://github.com/tensorflow/models/blob/master/research/deeplab/g3doc/installation.md citysca ...
- TensorFlow下利用MNIST训练模型并识别自己手写的数字
最近一直在学习李宏毅老师的机器学习视频教程,学到和神经网络那一块知识的时候,我觉得单纯的学习理论知识过于枯燥,就想着自己动手实现一些简单的Demo,毕竟实践是检验真理的唯一标准!!!但是网上很多的与t ...
- MMDetection 快速开始,训练自定义数据集
本文将快速引导使用 MMDetection ,记录了实践中需注意的一些问题. 环境准备 基础环境 Nvidia 显卡的主机 Ubuntu 18.04 系统安装,可见 制作 USB 启动盘,及系统安装 ...
- 语义分割丨PSPNet源码解析「训练阶段」
引言 之前一段时间在参与语义分割的项目,最近有时间了,正好把这段时间的所学总结一下. 在代码上,语义分割的框架会比目标检测简单很多,但其中也涉及了很多细节.在这篇文章中,我以PSPNet为例,解读一下 ...
- 多伦多大学&NVIDIA最新成果:图像标注速度提升10倍!
图像标注速度提升10倍! 这是多伦多大学与英伟达联合公布的一项最新研究:Curve-GCN的应用结果. Curve-GCN是一种高效交互式图像标注方法,其性能优于Polygon-RNN++.在自动模式 ...
- Dual Attention Network for Scene Segmentation
Dual Attention Network for Scene Segmentation 原始文档 https://www.yuque.com/lart/papers/onk4sn 在本文中,我们通 ...
- 语义分割之Dual Attention Network for Scene Segmentation
Dual Attention Network for Scene Segmentation 在本文中,我们通过 基于自我约束机制捕获丰富的上下文依赖关系来解决场景分割任务. 与之前通过多尺 ...
- [转]综述论文翻译:A Review on Deep Learning Techniques Applied to Semantic Segmentation
近期主要在学习语义分割相关方法,计划将arXiv上的这篇综述好好翻译下,目前已完成了一部分,但仅仅是尊重原文的直译,后续将继续完成剩余的部分,并对文中提及的多个方法给出自己的理解. _论文地址:htt ...
- 综述论文翻译:A Review on Deep Learning Techniques Applied to Semantic Segmentation
近期主要在学习语义分割相关方法,计划将arXiv上的这篇综述好好翻译下,目前已完成了一部分,但仅仅是尊重原文的直译,后续将继续完成剩余的部分,并对文中提及的多个方法给出自己的理解. 论文地址:http ...
随机推荐
- 源码安装 odoo12 -- 问题记录
odoo12启动过程中遇到的问题,及解决办法:1.ImportError: No module named ‘win32service’pipenv install pypiwin32 2.Impor ...
- 关于前端设置cookie
cookie既可以后端设置也可以在前端设置,例如登陆/注册功能,每次都要向服务器请求用户数据,这种就可以把cookie放到前端储存起来. 当网页要发http请求时,浏览器会先检查是否有相应的cooki ...
- autoMapper dotnetcore webapi 自动添加映射 abp
在ef的xxxxApplicationModule的Initialize方法中,已经添加了自动映射的配置,如下图: 写的很明白了,我们只需要写一个类继承Profile就可以了.如下图所示: 这样就可以 ...
- 点击导出table表格
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- SQLite 安装
Windows 平台安装 下载地址:https://www.sqlite.org/download.html 下载预编译的安装包 将下载的安装包=解压到一个文件夹,有三个重要文件: sqlite3.e ...
- java任务中嵌套任务
实际上嵌套任务没什么稀奇,原理与上一篇差不多,,可先看这个https://www.cnblogs.com/kexb/p/10228422.html package com.hra.riskprice; ...
- 机器学习面试--一句话概括传统ML算法
机器学习过程主要包括:数据的特征提取.数据预处理.训练模型.测试模型.模型评估改进等几部分 传统机器学习算法主要包括以下五类: 回归:建立一个回归方程来预测目标值,用于连续型分布预测 分类:给定大量带 ...
- javascript 取整,取余数 math方法
1.丢弃小数部分,保留整数部分 parseInt() 函数可解析一个字符串,并返回一个整数. parseInt(string, radix) 参数 描述 string 必需.要被解析的字符串. rad ...
- hdu 1290_献给杭电五十周年校庆的礼物
Description 或许你曾经牢骚满腹或许你依然心怀忧伤或许你近在咫尺或许你我天各一方 对于每一个学子母校 永远航行在生命的海洋 今年是我们杭电建校五十周年,这是一个值得祝福的日子.我们该送给母校 ...
- 自己封装的简单DbDao
首先,DbDao是一个用来操作数据库的类.需要对数据库的驱动包 要操作数据库首先要获得链接,这时候就需要链接数据库的所有参数了,包括driver,url,user,password.(全部定义为pri ...