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

相关文章

Python实现MQTT通信的示例代码

《Python实现MQTT通信的示例代码》本文主要介绍了Python实现MQTT通信的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 安装paho-mqtt库‌2. 搭建MQTT代理服务器(Broker)‌‌3. pytho

SpringBoot改造MCP服务器的详细说明(StreamableHTTP 类型)

《SpringBoot改造MCP服务器的详细说明(StreamableHTTP类型)》本文介绍了SpringBoot如何实现MCPStreamableHTTP服务器,并且使用CherryStudio... 目录SpringBoot改造MCP服务器(StreamableHTTP)1 项目说明2 使用说明2.1

MySQL进行数据库审计的详细步骤和示例代码

《MySQL进行数据库审计的详细步骤和示例代码》数据库审计通过触发器、内置功能及第三方工具记录和监控数据库活动,确保安全、完整与合规,Java代码实现自动化日志记录,整合分析系统提升监控效率,本文给大... 目录一、数据库审计的基本概念二、使用触发器进行数据库审计1. 创建审计表2. 创建触发器三、Java

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

MyBatis-Plus通用中等、大量数据分批查询和处理方法

《MyBatis-Plus通用中等、大量数据分批查询和处理方法》文章介绍MyBatis-Plus分页查询处理,通过函数式接口与Lambda表达式实现通用逻辑,方法抽象但功能强大,建议扩展分批处理及流式... 目录函数式接口获取分页数据接口数据处理接口通用逻辑工具类使用方法简单查询自定义查询方法总结函数式接口

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

Spring boot整合dubbo+zookeeper的详细过程

《Springboot整合dubbo+zookeeper的详细过程》本文讲解SpringBoot整合Dubbo与Zookeeper实现API、Provider、Consumer模式,包含依赖配置、... 目录Spring boot整合dubbo+zookeeper1.创建父工程2.父工程引入依赖3.创建ap

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

创建Java keystore文件的完整指南及详细步骤

《创建Javakeystore文件的完整指南及详细步骤》本文详解Java中keystore的创建与配置,涵盖私钥管理、自签名与CA证书生成、SSL/TLS应用,强调安全存储及验证机制,确保通信加密和... 目录1. 秘密键(私钥)的理解与管理私钥的定义与重要性私钥的管理策略私钥的生成与存储2. 证书的创建与

SQL中如何添加数据(常见方法及示例)

《SQL中如何添加数据(常见方法及示例)》SQL全称为StructuredQueryLanguage,是一种用于管理关系数据库的标准编程语言,下面给大家介绍SQL中如何添加数据,感兴趣的朋友一起看看吧... 目录在mysql中,有多种方法可以添加数据。以下是一些常见的方法及其示例。1. 使用INSERT I