iis服务器助手广告
返回顶部
首页 > 资讯 > 精选 >tensorflow语义分割api之使用deeplab训练cityscapes的示例分析
  • 345
分享到

tensorflow语义分割api之使用deeplab训练cityscapes的示例分析

2023-06-15 06:06:53 345人浏览 薄情痞子
摘要

这篇文章给大家分享的是有关Tensorflow语义分割api之使用deeplab训练cityscapes的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。安装教程:cityscapes训练:遇到的坑:1.

这篇文章给大家分享的是有关Tensorflow语义分割api之使用deeplab训练cityscapes的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

安装教程

cityscapes训练:

遇到的坑:

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 -eCURRENT_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 cocoPATH_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 cocoPATH_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-40000INFO:tensorflow:Running local_init_op.INFO:tensorflow:Done running local_init_op.INFO:tensorflow:Starting evaluation at 2018-12-18-07:13:08INFO: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.ckptINFO: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: 02018-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.ckptINFO:tensorflow:Running local_init_op.INFO:tensorflow:Done running local_init_op.INFO:tensorflow:Starting evaluation at 2018-12-18-07:18:06INFO: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 cocoPATH_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}

感谢各位的阅读!关于“tensorflow语义分割api之使用deeplab训练cityscapes的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: tensorflow语义分割api之使用deeplab训练cityscapes的示例分析

本文链接: https://www.lsjlt.com/news/278441.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • tensorflow语义分割api之使用deeplab训练cityscapes的示例分析
    这篇文章给大家分享的是有关tensorflow语义分割api之使用deeplab训练cityscapes的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。安装教程:cityscapes训练:遇到的坑:1. ...
    99+
    2023-06-15
  • 浅谈tensorflow语义分割api的使用(deeplab训练cityscapes)
    浅谈tensorflow语义分割api的使用(deeplab训练cityscapes) 安装教程: cityscapes训练: 遇到的坑: 1. 环境: - tensorflow1....
    99+
    2024-04-02
  • Python中Unet语义分割模型的示例分析
    小编给大家分享一下Python中Unet语义分割模型的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、什么是语义分割语义分割任务,如下图所示:简而言之,...
    99+
    2023-06-22
  • 深度学习:使用UNet做图像语义分割,训练自己制作的数据集,详细教程
    语义分割(Semantic Segmentation)是图像处理和机器视觉一个重要分支。与分类任务不同,语义分割需要判断图像每个像素点的类别,进行精确分割。语义分割目前在自动驾驶、自动抠图、医疗影像等...
    99+
    2023-08-31
    深度学习 计算机视觉 语义分割 python pytorch
  • SpringMVC开发restful API之用户查询的示例分析
    小编给大家分享一下SpringMVC开发restful API之用户查询的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一,什么是restful风格?首先...
    99+
    2023-05-30
    springmvc
  • C#调用Windows API之参数类型的示例分析
    小编给大家分享一下C#调用Windows API之参数类型的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!C#调用Windows API之参数类型1、数值...
    99+
    2023-06-18
  • Python函数定义与使用的示例分析
    这篇文章主要介绍Python函数定义与使用的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!函数的定义什么是函数? — > 函数是具有某种特定功能的代码块,可以重复使用(在前面数据类型...
    99+
    2023-06-29
  • Go语言使用指针的示例分析
    这篇文章给大家分享的是有关Go语言使用指针的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。普通指针和C语言一样, 允许用一个变量来存放其它变量的地址, 这种专门用于存储其它变量地址的变量, 我们称之为指针...
    99+
    2023-06-20
  • mysql备份脚本之mysqldump使用的示例分析
    这篇文章将为大家详细讲解有关mysql备份脚本之mysqldump使用的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体内容如下#!/bin/bash #全备方...
    99+
    2024-04-02
  • Bootstrap中Table使用整理之样式的示例分析
    这篇文章将为大家详细讲解有关Bootstrap中Table使用整理之样式的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、行样式修改<table ...
    99+
    2024-04-02
  • ES6基础语法之数组的使用实例分析
    这篇文章主要介绍了ES6基础语法之数组的使用实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇ES6基础语法之数组的使用实例分析文章都会有所收获,下面我们一起来看看吧。一、Array.of()将参数中所有值...
    99+
    2023-06-30
  • Mysql中SQL语句不使用索引的示例分析
    小编给大家分享一下Mysql中SQL语句不使用索引的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!MySQL查询不使用索...
    99+
    2024-04-02
  • Bootstrap中Table使用整理之工具栏的示例分析
    这篇文章将为大家详细讲解有关Bootstrap中Table使用整理之工具栏的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、启用默认支持的工具栏  $...
    99+
    2024-04-02
  • 使用JML改进Java程序之量词的示例分析
    小编给大家分享一下使用JML改进Java程序之量词的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!量词(Quantification)(译者注:这里量词的...
    99+
    2023-06-03
  • Spring配置使用之Bean生命周期的示例分析
    这篇文章主要介绍了Spring配置使用之Bean生命周期的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。基本概念Spring 中的 Bean 的生命周期,指的是 Be...
    99+
    2023-05-31
    spring bean
  • 使用Python编程语言进行实践的示例分析
    这篇文章将为大家详细讲解有关使用Python编程语言进行实践的示例分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。其实Python真的挺有意思的,用Python用做过不少有趣好玩的事儿,这...
    99+
    2023-06-02
  • vue.js中vue-cli脚手架使用百度地图API的示例分析
    小编给大家分享一下vue.js中vue-cli脚手架使用百度地图API的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!第...
    99+
    2024-04-02
  • Visual Studio使用小技巧之区块选择的示例分析
    这篇文章主要介绍Visual Studio使用小技巧之区块选择的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!区块选择(box selection)大家应该都很熟悉了,就是按住Alt键,然后拖动鼠标,跨越多行...
    99+
    2023-06-17
  • C语言中使用结构体计算内存占用的示例分析
    小编给大家分享一下C语言中使用结构体计算内存占用的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!    c语言中结构体使用是非常广泛的,但是结构体有一个问题,就是如果开头的字段属性是字符类型(c...
    99+
    2023-06-20
  • 使用R语言与多元线性回归分析计算的示例
    这篇文章主要为大家展示了“使用R语言与多元线性回归分析计算的示例”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“使用R语言与多元线性回归分析计算的示例”这篇文章吧。计算实例例 6.9 某大型牙膏制...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作