遇到的坑:

1. 环境:

- tensorflow1.8+CUDA9.0+cudnn7.0+annaconda3+py3.5

- 使用最新的tensorflow1.12或者1.10都不行,报错:报错不造卷积算法(convolution algorithm...)

2. 数据集转换

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

set -e

CURRENT_DIR=$(pwd)

WORK_DIR="."

# Root path for Cityscapes dataset.

CITYSCAPES_ROOT="${WORK_DIR}/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="${CURRENT_DIR}/build_cityscapes_data.py"

echo "Converting Cityscapes dataset..."

python "${BUILD_SCRIPT}" \

--cityscapes_root="${CITYSCAPES_ROOT}" \

--output_dir="${OUTPUT_DIR}" \

- 首先当前conda环境下安装cityscapesScripts模块,要支持py3.5才行;

- 由于cityscapesscripts/preparation/createTrainIdLabelImgs.py里面默认会把数据集gtFine下面的test,train,val文件夹json文件都转为TrainIdlandelImgs.png;然而在test文件下有很多json文件编码格式是错误的,大约十几张,每次报错,然后将其剔除!!!

- 然后执行build_cityscapes_data.py将img,lable转换为tfrecord格式。

3. 训练cityscapes代码

- 将训练代码写成脚本文件:train_deeplab_cityscapes.sh

#!/bin/bash

# CUDA_VISIBLE_DEVICES=0,1,2,3 python train.py --backbone resnet --lr 0.01 --workers 4 --epochs 40 --batch-size 16 --gpu-ids 0,1,2,3 --checkname deeplab-resnet --eval-interval 1 --dataset coco

PATH_TO_INITIAL_CHECKPOINT='/home/rjw/tf-models/research/deeplab/pretrain_models/deeplabv3_cityscapes_train/model.ckpt'

PATH_TO_TRAIN_DIR='/home/rjw/tf-models/research/deeplab/datasets/cityscapes/exp/train_on_train_set/train/'

PATH_TO_DATASET='/home/rjw/tf-models/research/deeplab/datasets/cityscapes/tfrecord'

WORK_DIR='/home/rjw/tf-models/research/deeplab'

# From tensorflow/models/research/

python "${WORK_DIR}"/train.py \

--logtostderr \

--training_number_of_steps=40000 \

--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=513 \

--train_crop_size=513 \

--train_batch_size=1 \

--fine_tune_batch_norm=False \

--dataset="cityscapes" \

--tf_initial_checkpoint=${PATH_TO_INITIAL_CHECKPOINT} \

--train_logdir=${PATH_TO_TRAIN_DIR} \

--dataset_dir=${PATH_TO_DATASET}

参数分析:

training_number_of_steps: 训练迭代次数;

train_crop_size:训练图片的裁剪大小,因为我的GPU只有8G,故我将这个设置为513了;

train_batch_size: 训练的batchsize,也是因为硬件条件,故保持1;

fine_tune_batch_norm=False :是否使用batch_norm,官方建议,如果训练的batch_size小于12的话,须将该参数设置为False,这个设置很重要,否则的话训练时会在2000步左右报错

tf_initial_checkpoint:预训练的初始checkpoint,这里设置的即是前面下载的../research/deeplab/backbone/deeplabv3_cityscapes_train/model.ckpt.index

train_logdir: 保存训练权重的目录,注意在开始的创建工程目录的时候就创建了,这里设置为"../research/deeplab/exp/train_on_train_set/train/"

dataset_dir:数据集的地址,前面创建的TFRecords目录。这里设置为"../dataset/cityscapes/tfrecord"

4.验证测试

- 验证脚本:

#!/bin/bash

# CUDA_VISIBLE_DEVICES=0,1,2,3 python train.py --backbone resnet --lr 0.01 --workers 4 --epochs 40 --batch-size 16 --gpu-ids 0,1,2,3 --checkname deeplab-resnet --eval-interval 1 --dataset coco

PATH_TO_INITIAL_CHECKPOINT='/home/rjw/tf-models/research/deeplab/pretrain_models/deeplabv3_cityscapes_train/'

PATH_TO_CHECKPOINT='/home/rjw/tf-models/research/deeplab/datasets/cityscapes/exp/train_on_train_set/train/'

PATH_TO_EVAL_DIR='/home/rjw/tf-models/research/deeplab/datasets/cityscapes/exp/train_on_train_set/eval/'

PATH_TO_DATASET='/home/rjw/tf-models/research/deeplab/datasets/cityscapes/tfrecord'

WORK_DIR='/home/rjw/tf-models/research/deeplab'

# From tensorflow/models/research/

python "${WORK_DIR}"/eval.py \

--logtostderr \

--eval_split="val" \

--model_variant="xception_65" \

--atrous_rates=6 \

--atrous_rates=12 \

--atrous_rates=18 \

--output_stride=16 \

--decoder_output_stride=4 \

--eval_crop_size=1025 \

--eval_crop_size=2049 \

--dataset="cityscapes" \

--checkpoint_dir=${PATH_TO_INITIAL_CHECKPOINT} \

--eval_logdir=${PATH_TO_EVAL_DIR} \

--dataset_dir=${PATH_TO_DATASET}

- rusult:model.ckpt-40000为在初始化模型上训练40000次迭代的模型;后面用初始化模型测试miou_1.0还是很低,不知道是不是有什么参数设置的问题!!!

- 注意,如果使用官方提供的checkpoint,压缩包中是没有checkpoint文件的,需要手动添加一个checkpoint文件;初始化模型中是没有提供chekpoint文件的。

INFO:tensorflow:Restoring parameters from /home/rjw/tf-models/research/deeplab/datasets/cityscapes/exp/train_on_train_set/train/model.ckpt-40000

INFO:tensorflow:Running local_init_op.

INFO:tensorflow:Done running local_init_op.

INFO:tensorflow:Starting evaluation at 2018-12-18-07:13:08

INFO:tensorflow:Evaluation [50/500]

INFO:tensorflow:Evaluation [100/500]

INFO:tensorflow:Evaluation [150/500]

INFO:tensorflow:Evaluation [200/500]

INFO:tensorflow:Evaluation [250/500]

INFO:tensorflow:Evaluation [300/500]

INFO:tensorflow:Evaluation [350/500]

INFO:tensorflow:Evaluation [400/500]

INFO:tensorflow:Evaluation [450/500]

miou_1.0[0.478293568]

INFO:tensorflow:Waiting for new checkpoint at /home/rjw/tf-models/research/deeplab/pretrain_models/deeplabv3_cityscapes_train/

INFO:tensorflow:Found new checkpoint at /home/rjw/tf-models/research/deeplab/pretrain_models/deeplabv3_cityscapes_train/model.ckpt

INFO:tensorflow:Graph was finalized.

2018-12-18 15:18:05.210957: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1435] Adding visible gpu devices: 0

2018-12-18 15:18:05.211047: I tensorflow/core/common_runtime/gpu/gpu_device.cc:923] Device interconnect StreamExecutor with strength 1 edge matrix:

2018-12-18 15:18:05.211077: I tensorflow/core/common_runtime/gpu/gpu_device.cc:929] 0

2018-12-18 15:18:05.211100: I tensorflow/core/common_runtime/gpu/gpu_device.cc:942] 0: N

2018-12-18 15:18:05.211645: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1053] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 9404 MB memory) -> physical GPU (device: 0, name: GeForce GTX 1080 Ti, pci bus id: 0000:01:00.0, compute capability: 6.1)

INFO:tensorflow:Restoring parameters from /home/rjw/tf-models/research/deeplab/pretrain_models/deeplabv3_cityscapes_train/model.ckpt

INFO:tensorflow:Running local_init_op.

INFO:tensorflow:Done running local_init_op.

INFO:tensorflow:Starting evaluation at 2018-12-18-07:18:06

INFO:tensorflow:Evaluation [50/500]

INFO:tensorflow:Evaluation [100/500]

INFO:tensorflow:Evaluation [150/500]

INFO:tensorflow:Evaluation [200/500]

INFO:tensorflow:Evaluation [250/500]

INFO:tensorflow:Evaluation [300/500]

INFO:tensorflow:Evaluation [350/500]

INFO:tensorflow:Evaluation [400/500]

INFO:tensorflow:Evaluation [450/500]

miou_1.0[0.496331513]

5.可视化测试

- 在vis目录下生成分割结果图

#!/bin/bash

# CUDA_VISIBLE_DEVICES=0,1,2,3 python train.py --backbone resnet --lr 0.01 --workers 4 --epochs 40 --batch-size 16 --gpu-ids 0,1,2,3 --checkname deeplab-resnet --eval-interval 1 --dataset coco

PATH_TO_CHECKPOINT='/home/rjw/tf-models/research/deeplab/datasets/cityscapes/exp/train_on_train_set/train/'

PATH_TO_VIS_DIR='/home/rjw/tf-models/research/deeplab/datasets/cityscapes/exp/train_on_train_set/vis/'

PATH_TO_DATASET='/home/rjw/tf-models/research/deeplab/datasets/cityscapes/tfrecord'

WORK_DIR='/home/rjw/tf-models/research/deeplab'

# From tensorflow/models/research/

python "${WORK_DIR}"/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=${PATH_TO_CHECKPOINT} \

--vis_logdir=${PATH_TO_VIS_DIR} \

--dataset_dir=${PATH_TO_DATASET}

reference:

【实践】如何利用tensorflow的object_detection api开源框架训练基于自己数据集的模型(Windows10系统)

如何利用tensorflow的object_detection api开源框架训练基于自己数据集的模型(Windows10系统) 一.环境配置 1. Python3.7.x(注:我用的是3.7.3.安 ...

CocoStuff—基于Deeplab训练数据的标定工具【二、用已提供的标注数据跑通项目】

一.说明 本文为系列博客第二篇,主要讲述笔者在使用该团队提供已经标注好的COCO数据集进行训练的过程. 由于在windows中编译Caffe和Deeplab特别的麻烦,笔者并没有去探索,后续可能会去尝 ...

TensorFlow Object Detection API(Windows下训练)

本文为作者原创,转载请注明出处(http://www.cnblogs.com/mar-q/)by 负赑屃 最近事情比较多,前面坑挖的有点久,今天终于有时间总结一下,顺便把Windows下训练跑通.Li ...

语义分割丨PSPNet源码解析「训练阶段」

引言 之前一段时间在参与语义分割的项目,最近有时间了,正好把这段时间的所学总结一下. 在代码上,语义分割的框架会比目标检测简单很多,但其中也涉及了很多细节.在这篇文章中,我以PSPNet为例,解读一下 ...

语义分割丨DeepLab系列总结「v1、v2、v3、v3+」

花了点时间梳理了一下DeepLab系列的工作,主要关注每篇工作的背景和贡献,理清它们之间的联系,而实验和部分细节并没有过多介绍,请见谅. DeepLabv1 Semantic image segmen ...

caffe初步实践---------使用训练好的模型完成语义分割任务

caffe刚刚安装配置结束,乘热打铁! (一)环境准备 前面我有两篇文章写到caffe的搭建,第一篇cpu only ,第二篇是在服务器上搭建的,其中第二篇因为硬件环境更佳我们的步骤稍显复杂.其实,第 ...

使用TensorFlow Object Detection API+Google ML Engine训练自己的手掌识别器

上次使用Google ML Engine跑了一下TensorFlow Object Detection API中的Quick Start(http://www.cnblogs.com/take-fet ...

比较语义分割的几种结构:FCN,UNET,SegNet,PSPNet和Deeplab

简介 语义分割:给图像的每个像素点标注类别.通常认为这个类别与邻近像素类别有关,同时也和这个像素点归属的整体类别有关.利用图像分类的网络结构,可以利用不同层次的特征向量来满足判定需求.现有算法的主要区 ...

语义分割之车道线检测Lanenet(tensorflow版)

Lanenet 一个端到端的网络,包含Lanenet+HNet两个网络模型,其中,Lanenet完成对车道线的实例分割,HNet是一个小网络结构,负责预测变换矩阵H,使用转换矩阵H对同属一条车道线的所 ...

随机推荐

STL_advance distance prev next

template typename iterator_traits::difference_type d ...

一般处理程序 ashx中使用外部Session 出现不存在 解决方案

MXS&Vincene  ─╄OvЁ  &0000004 ─╄OvЁ  MXS&Vincene MXS&Vincene  ─╄OvЁ:今天很残酷,明天更残酷,后天很美好 ...

ubuntu12.04开启远程桌面

我们共享所使用的协议是rdp,所以我们要装这个东西. sudo apt-get install xrdp sudo apt-get install vnc4server tightvncserver ...

codeforce Codeforces Round #201 (Div. 2)

cf 上的一道好题:  首先发现能生成所有数字-N 判断奇偶 就行了,但想不出来,如何生成所有数字,解题报告 说是  所有数字的中最大的那个数/所有数字的最小公倍数,好像有道理:纪念纪念: #incl ...

网络加速手段之一,JS文件资源合并下载

有过ftp下载文件经验的人都有体验,单独下载一个100M的文件比分开下载100个1M的文件速度快很多,这是因为下载需要解析域名,建立连接等额外开销的时间,因此下载100个文件就要做100次这种额外的开 ...

Using jQuery to add a dynamic “Back To Top” floating button with smooth scroll

Ever read a really long blog post or article and then had to scroll all the way up to the top of the ...

UIALertView的基本用法与UIAlertViewDelegate对对话框的事件处理方法

首先,视图控制器必须得实现协议UIAlertViewDelegate中的方法,并指定delegate为self,才能使弹出的Alert窗口响应点击事件. 具体代码如下: ViewController. ...

Drainage Ditches - poj 1273(网络流模板)

题意:1是源点,m是汇点,求出来最大流量,没什么好说的就是练习最大流的模板题 ************************************************************* ...

在 overlay 中运行容器 - 每天5分钟玩转 Docker 容器技术(51)

上一节我们创建了 overlay 网络 ov_net1,今天将运行一个 busybox 容器并连接到 ov_net1: 查看容器的网络配置: bbox1 有两个网络接口 eth0 和 eth1.eth ...

HTTPS、证书与使用Charles抓包

.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font-size: 14.0px; font-family: "Helvetica Neue", & ...

ckpt下载 deeplabv3_tensorflow语义分割api使用(deeplab训练cityscapes)相关推荐

  1. 图像语义分割模型DeepLab训练Cityscapes数据集过程记录

    参考:https://github.com/tensorflow/models/blob/master/research/deeplab/g3doc/cityscapes.md https://git ...

  2. 【语义分割专题】语义分割相关工作--DeepLab系列

    DeepLab系列: DeepLabV1 贡献:首次把空洞卷积引入图形分割领域. 基本内容: 基于VGG16 去掉最后两个池化层改为卷积层(控制分辨率不要太小) 去掉全连接层(保留最后一个用于soft ...

  3. 自定义语义分割数据集(划分训练集与验证集)、并且将一个文件夹下的所有图片的名字存到txt文件

    目录 1.划分训练集.验证集与测试集 2.文件名称保存为txt 3.文件移动 4. 将数据集保存为.pkl格式以及读取.pkl格式文件 我们可以借助Pytorch从文件夹中读取数据集,十分方便,但是P ...

  4. DeepLab语义分割

    参考: DeepLab V1 V2 V3 V3+及pytorch实现 V1 DeepLab是针对语义分割任务提出的模型,主要使用了DCNN.CRF.空洞卷积做密集预测. DeepLab是结合了深度卷积 ...

  5. 史上最全语义分割综述(FCN,UNet,SegNet,Deeplab,ASPP...)

    目录 语义分割综述 摘要 语义分割领域研究现状 灰度分割 条件随机场 深度学习方法 数据集与评价指标 常用数据集 评价指标 模型介绍 语义分割综述 摘要 语义分割(全像素语义分割)作为经典的计算机视觉 ...

  6. MMSegmentation:标准统一的语义分割框架

    本文转载自知乎,已获作者授权转载. 链接:https://zhuanlan.zhihu.com/p/164489668 写在前面 语义分割作为计算机视觉中一项基础任务,同时在自动驾驶/视频编辑等领域中 ...

  7. 综述 | 语义分割经典网络及轻量化模型盘点

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 基于图像的语义分割又被理解为密集的像素预测,即将每个像素进行分类, ...

  8. 道路场景语义分割算法

    道路场景语义分割算法 输入输出接口 Input: (1)左右两个摄像头采集的实时图像视频分辨率(整型int) (2)左右两个摄像头采集的实时图像视频格式 (RGB,YUV,MP4等) (3)摄像头标定 ...

  9. 你了解如何用GAN做语义分割吗

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 前  言 本文主要推荐一篇使用GAN来做语义分割的论文.  论文名 ...

最新文章

  1. 论文阅读(Xiang Bai——【arXiv2016】Scene Text Detection via Holistic, Multi-Channel Prediction)...
  2. RS233通信协议与osi七层模型中的物理层,数据链路层的对比
  3. 教程之怎样清理mac系统垃圾
  4. Pandas中文官档 ~ 基础用法1
  5. 170304 地铁修建 ccf
  6. win10下Redis集群搭建的详细步骤
  7. 人造电子皮肤、软体机器人、单孔腔镜手术机器人......青年科学家们都在研究哪些“黑科技”?...
  8. 2引擎帮助文档_ANSA快速入门指南中文帮助文档浅析(上)
  9. SQL触发器 常用语句
  10. Silverlight中调用ClientBin下非xap内的xml的方法
  11. GBaseDataStudio 管理工具简介
  12. 高手实战!Windows 7开机加速完全攻略
  13. 【日语】日文假名输入与键盘对应
  14. python求积分面积的几个方法
  15. insmod: error inserting 'simp-blkdev.ko': -1 Invalid module format
  16. upc Buy an Integer#二分
  17. 举安全之盾,防事故之患
  18. 央视影音 服务器暂时无法连接服务器,央视影音APP播放不了怎样办 打开不知道决办法...
  19. nginx 反向代理 proxy_pass DNS 缓存问题
  20. 国外2G容量免费网盘--ZumoDrive

热门文章

  1. 机器学习的epoch、iteration和batchsize什么意思
  2. g150th 键盘拆_150年后,我们应该重新设计电脑键盘
  3. JavaScript 作用域(Scope)详解
  4. 人月神话札记:祸起萧墙
  5. 有没有一首歌会让你不寂寞
  6. FastReport打印时图片出现了黑边框
  7. <论文阅读03> Clustering-based multiple instance learning with multi-view feature
  8. Meta系列(二): 在R中如何计算效应值
  9. Gateway + Redis整合Kaptcha验证码
  10. 冒泡排序(Bubble Sort)的学习