deeplabv3+二:详细代码解读 data generator 数据生成器

2024-09-01 23:48

本文主要是介绍deeplabv3+二:详细代码解读 data generator 数据生成器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

3+支持三种数据库,voc2012,cityscapes,ade20k,

代码文件夹

-deeplab

    -datasets

         -data_generator.py

在开始之前,始终记住,网络模型的输入是非常简单的image,规格化到[-1,1]或[0,1],或者数据扩增(水平翻转,随机裁剪,明暗变化,模糊),以及一个实施了相同数据扩增的label(毕竟需要pixel对上),test的话只需要一个image。是非常简单的数据格式,也许程序员会为了存储的压缩量以及读取处理的速度(指的就是使用tf.example 与 tf.record)写复杂的代码,但是最终的结果始终都是很简单的。

觉得自己一定要先搞清楚tf.example 与tf.record:https://zhuanlan.zhihu.com/p/33223782

 

目录

数据库分析

代码重点类Dataset

1.方法_parse_function()

2. 方法_preprocess_image()

2.1 input_preprocess的preprocess_image_and_label方法介绍

3.方法 _get_all_files(self):

4.方法 get_one_shot_iterator(self)

Class TFRecordDataset

代码使用是在train.py里面:


代码:先放代码,你可以尝试自己看,看得懂就不用往下翻浪费时间了。

# Copyright 2018 The TensorFlow Authors All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ==============================================================================
"""Wrapper for providing semantic segmentaion data.The SegmentationDataset class provides both images and annotations (semantic
segmentation and/or instance segmentation) for TensorFlow. Currently, we
support the following datasets:1. PASCAL VOC 2012 (http://host.robots.ox.ac.uk/pascal/VOC/voc2012/).PASCAL VOC 2012 semantic segmentation dataset annotates 20 foreground objects
(e.g., bike, person, and so on) and leaves all the other semantic classes as
one background class. The dataset contains 1464, 1449, and 1456 annotated
images for the training, validation and test respectively.2. Cityscapes dataset (https://www.cityscapes-dataset.com)The Cityscapes dataset contains 19 semantic labels (such as road, person, car,
and so on) for urban street scenes.3. ADE20K dataset (http://groups.csail.mit.edu/vision/datasets/ADE20K)The ADE20K dataset contains 150 semantic labels both urban street scenes and
indoor scenes.References:M. Everingham, S. M. A. Eslami, L. V. Gool, C. K. I. Williams, J. Winn,and A. Zisserman, The pascal visual object classes challenge a retrospective.IJCV, 2014.M. Cordts, M. Omran, S. Ramos, T. Rehfeld, M. Enzweiler, R. Benenson,U. Franke, S. Roth, and B. Schiele, "The cityscapes dataset for semantic urbanscene understanding," In Proc. of CVPR, 2016.B. Zhou, H. Zhao, X. Puig, S. Fidler, A. Barriuso, A. Torralba, "Scene Parsingthrough ADE20K dataset", In Proc. of CVPR, 2017.
"""import collections
import os
import tensorflow as tf
from deeplab import common
from deeplab import input_preprocess# Named tuple to describe the dataset properties.
DatasetDescriptor = collections.namedtuple('DatasetDescriptor',['splits_to_sizes',  # Splits of the dataset into training, val and test.'num_classes',  # Number of semantic classes, including the# background class (if exists). For example, there# are 20 foreground classes + 1 background class in# the PASCAL VOC 2012 dataset. Thus, we set# num_classes=21.'ignore_label',  # Ignore label value.])_CITYSCAPES_INFORMATION = DatasetDescriptor(splits_to_sizes={'train': 2975,'val': 500,},num_classes=19,ignore_label=255,
)_PASCAL_VOC_SEG_INFORMATION = DatasetDescriptor(splits_to_sizes={'train': 1464,'train_aug': 10582,'trainval': 2913,'val': 1449,},num_classes=21,ignore_label=255,
)_ADE20K_INFORMATION = DatasetDescriptor(splits_to_sizes={'train': 20210,  # num of samples in images/training'val': 2000,  # num of samples in images/validation},num_classes=151,ignore_label=0,
)_DATASETS_INFORMATION = {'cityscapes': _CITYSCAPES_INFORMATION,'pascal_voc_seg': _PASCAL_VOC_SEG_INFORMATION,'ade20k': _ADE20K_INFORMATION,
}# Default file pattern of TFRecord of TensorFlow Example.
_FILE_PATTERN = '%s-*'def get_cityscapes_dataset_name():return 'cityscapes'class Dataset(object):"""Represents input dataset for deeplab model."""def __init__(self,dataset_name,split_name,dataset_dir,batch_size,crop_size,min_resize_value=None,max_resize_value=None,resize_factor=None,min_scale_factor=1.,max_scale_factor=1.,scale_factor_step_size=0,model_variant=None,num_readers=1,is_training=False,should_shuffle=False,should_repeat=False):"""Initializes the dataset.Args:dataset_name: Dataset name.split_name: A train/val Split name.dataset_dir: The directory of the dataset sources.batch_size: Batch size.crop_size: The size used to crop the image and label.min_resize_value: Desired size of the smaller image side.max_resize_value: Maximum allowed size of the larger image side.resize_factor: Resized dimensions are multiple of factor plus one.min_scale_factor: Minimum scale factor value.max_scale_factor: Maximum scale factor value.scale_factor_step_size: The step size from min scale factor to max scalefactor. The input is randomly scaled based on the v

这篇关于deeplabv3+二:详细代码解读 data generator 数据生成器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1128397

相关文章

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

python处理带有时区的日期和时间数据

《python处理带有时区的日期和时间数据》这篇文章主要为大家详细介绍了如何在Python中使用pytz库处理时区信息,包括获取当前UTC时间,转换为特定时区等,有需要的小伙伴可以参考一下... 目录时区基本信息python datetime使用timezonepandas处理时区数据知识延展时区基本信息

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

SpringMVC 通过ajax 前后端数据交互的实现方法

《SpringMVC通过ajax前后端数据交互的实现方法》:本文主要介绍SpringMVC通过ajax前后端数据交互的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价... 在前端的开发过程中,经常在html页面通过AJAX进行前后端数据的交互,SpringMVC的controll

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤及问题解决

《IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决》:本文主要介绍IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决,本文分步骤结合实例给大... 目录步骤 1:创建 Maven Web 项目步骤 2:添加 Spring MVC 依赖1、保存后执行2、将新的依赖

SpringBoot中配置文件的加载顺序解读

《SpringBoot中配置文件的加载顺序解读》:本文主要介绍SpringBoot中配置文件的加载顺序,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot配置文件的加载顺序1、命令⾏参数2、Java系统属性3、操作系统环境变量5、项目【外部】的ap

Pandas统计每行数据中的空值的方法示例

《Pandas统计每行数据中的空值的方法示例》处理缺失数据(NaN值)是一个非常常见的问题,本文主要介绍了Pandas统计每行数据中的空值的方法示例,具有一定的参考价值,感兴趣的可以了解一下... 目录什么是空值?为什么要统计空值?准备工作创建示例数据统计每行空值数量进一步分析www.chinasem.cn处

如何使用 Python 读取 Excel 数据

《如何使用Python读取Excel数据》:本文主要介绍使用Python读取Excel数据的详细教程,通过pandas和openpyxl,你可以轻松读取Excel文件,并进行各种数据处理操... 目录使用 python 读取 Excel 数据的详细教程1. 安装必要的依赖2. 读取 Excel 文件3. 读

利用Python调试串口的示例代码

《利用Python调试串口的示例代码》在嵌入式开发、物联网设备调试过程中,串口通信是最基础的调试手段本文将带你用Python+ttkbootstrap打造一款高颜值、多功能的串口调试助手,需要的可以了... 目录概述:为什么需要专业的串口调试工具项目架构设计1.1 技术栈选型1.2 关键类说明1.3 线程模

Python Transformers库(NLP处理库)案例代码讲解

《PythonTransformers库(NLP处理库)案例代码讲解》本文介绍transformers库的全面讲解,包含基础知识、高级用法、案例代码及学习路径,内容经过组织,适合不同阶段的学习者,对... 目录一、基础知识1. Transformers 库简介2. 安装与环境配置3. 快速上手示例二、核心模