前提:ubuntu+tensorflow-gpu+python3.6

各种环境提前配好

1.下载工程源码

网址:https://github.com/tensorflow/models

下载时会遇到速度过慢或中间因为网络错误停止,可以换移动网络或者用迅雷下载。

2.测试环境

先添加slim路径,每次打开terminal都要加载路径

# From tensorflow/models/research/
export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim

运行测试1

# From tensorflow/models/research/
python deeplab/model_test.py

测试2

# From tensorflow/models/research/deeplab
sh local_test.sh

3.处理数据标签

处理标签为单通道,运行下面代码即可

import numpy as np
from PIL import Image
from keras.preprocessing.image import load_img, img_to_array
import os classes = ['background', 'aeroplane', 'bicycle', 'bird', 'boat',
'bottle', 'bus', 'car', 'cat', 'chair', 'cow', 'dining table',
'dog', 'horse', 'motorbike', 'person', 'potted plant',
'sheep', 'sofa', 'train', 'tv/monitor'] colormap = [[, , ], [, , ], [, , ], [, , ], [, , ],
[, , ], [, , ], [, , ], [, , ], [, , ],
[, , ], [, , ], [, , ], [, , ],
[, , ], [, , ], [, , ], [, , ],
[, , ], [, , ], [, , ]] # 利用下面的代码,将标注的图片转换为单通道的label图像
cm2lbl = np.zeros(**)
for i, cm in enumerate(colormap):
cm2lbl[(cm[]*+cm[])*+cm[]] = i def image2label(im):
# 输入为标记图像的矩阵,输出为单通道映射的label图像
data = im.astype('int32')
idx = (data[:, :, ]*+data[:, :, ])*+data[:, :, ]
return np.array(cm2lbl[idx]) def change_label(label_url, label_name): label_img = load_img(label_url)
label_img = img_to_array(label_img)
label_img = image2label(label_img) # 将图片映射为单通道数据
print(np.max(label_img)) label_single = Image.fromarray(label_img)
label_single = label_single.convert('L') save_path = './datasets/VOC2012/Label'
save_path = os.path.join(save_path, label_name) # 确定保存路径及名称
label_single.save(save_path) val_file_path = './datasets/VOC2012/ImageSets/trainval.txt' # 文件名存放路径
label_file_path = './datasets/VOC2012/SegmentationClass' # 原label存放路径 with open(val_file_path, 'r') as f:
file_names = f.readlines()
count =
for name in file_names:
count +=
name = name.strip('\n') # 去掉换行符
label_name = name + '.png' # label文件名
label_url = os.path.join(label_file_path, label_name)
print('这是第 %s 张' % count)
print(label_url)
change_label(label_url, label_name)

4.运行build_voc2012_data.py 生成 .tfrecord数据

5. 运行train.py训练模型

完整工程,deeplab v3+(tensorflow)代码全理解及其运行过程,长期更新的更多相关文章

  1. (原)faster rcnn的tensorflow代码的理解

    转载请注明出处: https://www.cnblogs.com/darkknightzh/p/10043864.html 参考网址: 论文:https://arxiv.org/abs/1506.01 ...

  2. Deeplab v3+的结构的理解,图像分割最新成果

    Deeplab v3+ 结构的精髓: 1.继续使用ASPP结构, SPP 利用对多种比例(rates)和多种有效感受野的不同分辨率特征处理,来挖掘多尺度的上下文内容信息. 解编码结构逐步重构空间信息来 ...

  3. Deeplab v3+的结构代码简要分析

    添加了解码模块来重构精确的图像物体边界.对比如图 deeplab v3+采用了与deeplab v3类似的多尺度带洞卷积结构ASPP,然后通过上采样,以及与不同卷积层相拼接,最终经过卷积以及上采样得到 ...

  4. Transformer解析与tensorflow代码解读

    本文是针对谷歌Transformer模型的解读,根据我自己的理解顺序记录的. 另外,针对Kyubyong实现的tensorflow代码进行解读,代码地址https://github.com/Kyuby ...

  5. 深度学习之卷积神经网络CNN及tensorflow代码实例

    深度学习之卷积神经网络CNN及tensorflow代码实例 什么是卷积? 卷积的定义 从数学上讲,卷积就是一种运算,是我们学习高等数学之后,新接触的一种运算,因为涉及到积分.级数,所以看起来觉得很复杂 ...

  6. 深度学习之卷积神经网络CNN及tensorflow代码实现示例

    深度学习之卷积神经网络CNN及tensorflow代码实现示例 2017年05月01日 13:28:21 cxmscb 阅读数 151413更多 分类专栏: 机器学习 深度学习 机器学习   版权声明 ...

  7. 《Genesis-3D开源游戏引擎完整实例教程-2D射击游戏篇:简介及目录》(附上完整工程文件)

    G-3D引擎2D射击类游戏制作教程 游戏类型: 打飞机游戏属于射击类游戏中的一种,可以划分为卷轴射击类游戏. 视觉表现类型为:2D 框架简介: Genesis-3D引擎不仅为开发者提供一个3D游戏制作 ...

  8. Deeplab v3+中的骨干模型resnet(加入atrous)的源码解析,以及普通resnet整个结构的构建过程

    加入带洞卷积的resnet结构的构建,以及普通resnet如何通过模块的组合来堆砌深层卷积网络. 第一段代码为deeplab v3+(pytorch版本)中的基本模型改进版resnet的构建过程, 第 ...

  9. 条件随机场(crf)及tensorflow代码实例

    对于条件随机场的学习,我觉得应该结合HMM模型一起进行对比学习.首先浏览HMM模型:https://www.cnblogs.com/pinking/p/8531405.html 一.定义 条件随机场( ...

随机推荐

  1. MSB4064 错误

    把项目从vs2008转成vs 2012 后,受用msbuild 编译出错 错误Code:MSB4064 修改 把msbuild 的路径从 %windir%\Microsoft.NET\Framewor ...

  2. fillder---断言,更改提交数据

    1.before requests:请求的发送前拦截,此时可以修改提交的表单.cookies.header头数据 在URL请求前,设置为before requests 2.after response ...

  3. Fibonacci数列(数列 取模)

    问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少. 输入格式 输入包含一个整数n ...

  4. 20172328 2018-2019《Java软件结构与数据结构》第四周学习总结

    20172328 2018-2019<Java软件结构与数据结构>第四周学习总结 概述 Generalization 本周学习了第六章·列表,主要让我们认识列表以及分析各种列表实现. 教材 ...

  5. Elasticsearch大规模时序索引如何治理和规划

    什么是时序索引? 其主要特点体现在两个方面, 一存,以时间为轴,数据只有增加,没有变更,并且必须包含timestamp(日期时间,名称随意)字段,其作用和意义要大于数据的id字段,常见的数据比如我们通 ...

  6. 识别拖动与点击操作之zepto的bug

    问题描述:给页面<a>标签绑定了tap事件,在移动设备上点击按钮貌似一切正常,可以响应.但是,把页面上下滑动几次之后,或者在滑动时手指滑动出移动屏幕之外,之后再点击按钮,就会发现第一次点击 ...

  7. JAVA篇<一> 继承extends(已转移到JAVA总结篇)

    前题:如果不经过指出继承,那么所有的类都继承了JAVA中的Object类. 正文: 继承的关键字是:extends,是所有面向对象语言的重要特性. 例public class TestExtends ...

  8. buffer格式的转换

    ---恢复内容开始--- 定义好一个buffer 例如: var buf = new Buffer(''nihaoya); 通过str转成base64的字符 var str =buf.toString ...

  9. MySQL性能分析及explain的使用(转)

    1.使用explain语句去查看分析结果,如 explain select * from test1 where id=1; 会出现: id selecttype table type possibl ...

  10. Centos7 Nagios 搭建

    Nagios 是一款自动化运维工具,可以协助运维人员监控服务器的运行状况,并且拥有报警功能.本文章将介绍其安装方法和详细的配置方法. 总结 可以做资源,网络,应用服务的监控 配置上需要配置被监控的,服 ...