Tensorflow2.0---DeepLab v3+分割网络原理及代码解析(四)- 训练过程

2023-11-03

Tensorflow2.0—DeepLab v3+分割网络原理及代码解析(四)- 训练过程

Tensorflow2.0—DeepLab v3+分割网络原理及代码解析(三)- 特征提取网络实现中,输入图片已经经过主干网络进行了特征提取,最终得到的fearture map的shape为(512,512,2)。
这篇主要讲讲训练过程吧~~

一、dataset

train_dataloader = DeeplabDataset(train_lines, input_shape, batch_size, num_classes, True, VOCdevkit_path)[3]
val_dataloader = DeeplabDataset(val_lines, input_shape, batch_size, num_classes, False, VOCdevkit_path)

train.py中上述两行代码开启dataset的重定义~

    def __getitem__(self, index):
        images  = [] #保存img
        targets = [] #保存label
        for i in range(index * self.batch_size, (index + 1) * self.batch_size):  
            i           = i % self.length
            name        = self.annotation_lines[i].split()[0] #从第i批batch数据的第一张图开始遍历处理
            #-------------------------------#
            #   从文件中读取图像(返回的都是Image对象,而不是数组)
            #-------------------------------#
            jpg         = Image.open(os.path.join(os.path.join(self.dataset_path, "VOC2007/JPEGImages"), name + ".jpg"))
            png         = Image.open(os.path.join(os.path.join(self.dataset_path, "VOC2007/SegmentationClass"), name + ".png"))
            #-------------------------------#
            #   数据增强
            #-------------------------------#
            jpg, png    = self.get_random_data(jpg, png, self.input_shape, random = self.train)
            jpg         = preprocess_input(np.array(jpg, np.float64))  #输入图片做归一化操作
            png         = np.array(png)
            png[png >= self.num_classes] = self.num_classes
            #-------------------------------------------------------#
            #   转化成one_hot的形式
            #   在这里需要+1是因为voc数据集有些标签具有白边部分
            #   我们需要将白边部分进行忽略,+1的目的是方便忽略。
            #-------------------------------------------------------#
            seg_labels  = np.eye(self.num_classes + 1)[png.reshape([-1])]
            seg_labels  = seg_labels.reshape((int(self.input_shape[0]), int(self.input_shape[1]), self.num_classes + 1))

            images.append(jpg)
            targets.append(seg_labels)

        images  = np.array(images)
        targets = np.array(targets)
        return images, targets
  • images:一个列表,包含了batch_size个图片,每个图片都经过了归一化的操作,shape均为(512,512,3)
  • targets:一个列表,包含了batch_size个label,shape均为(img_h,img_w,class_num+1)

二、loss

直接看大佬的blog吧~
憨批的语义分割重制版10——Tensorflow2 搭建自己的DeeplabV3+语义分割平台

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Tensorflow2.0---DeepLab v3+分割网络原理及代码解析(四)- 训练过程 的相关文章

随机推荐

  • 竞赛 基于大数据的时间序列股价预测分析与可视化 - lstm

    文章目录 1 前言 2 时间序列的由来 2 1 四种模型的名称 3 数据预览 4 理论公式 4 1 协方差 4 2 相关系数 4 3 scikit learn计算相关性 5 金融数据的时序分析 5 1 数据概况 5 2 序列变化情况计算 最
  • adb 安装apk到指定设备

    一 打印设备代号 adb devices 红色和绿色区域为设备代号 二 命令 adb s 4580fa7e User aaa apk 加上 s 设备代号 apk路径替换成自己的 三 安装成功 Performing Streamed Inst
  • qrcode.js 解析二维码(源码) 复制的

    qrcode js 解析二维码 源码 复制的 var aa aa ab function f e var d qrcode width var b qrcode height var c true for var g 0 g lt e le
  • 猿人学第二题

    通过fd抓包发现他是进行了两次请求 先返回的是一对script的标签定义的js代码 第二次返回的才是正常的html代码 打开f12进入浏览器控制台 发现进入了无限debuger 那么直接在控制台中输入Function prototype c
  • 【华为OD机试真题2023B卷 JAVA&JS】观看文艺汇演问题

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 观看文艺汇演问题 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 为庆祝中国共产党成立100周年 某公园将举行多场文艺汇演 很多演出都是同时进行 一个人只能同时观看一场
  • 同时安装多台服务器系统,多服务器同时安装操作系统

    多服务器同时安装操作系统 内容精选 换一换 如果您需要使用毕昇编译器 则需要先在服务端安装毕昇编译器 毕昇编译器基于开源LLVM开发 并进行了优化和改进 同时将flang作为默认的Fortran语言前端编译器 是针对鲲鹏平台的高性能编译器
  • python2 tensorflow_谷歌TensorFlow 2.1.0正式发布 支持Python 2的最后一个 TF 版本

    TensorFlow 2 1 0 正式发布了 TensorFlow 2 1 是支持 Python 2 的最后一个 TF 版本 主要特性和改进如下 tensorflow pip 软件包现在默认包括针对 Linux 和 Windows 的 GP
  • vue组件通信总结(转)

    虽然一直使用 vue 文章中的方法也一直使用 但是 这么齐全的总结 却没有过 写的不错 链接
  • HTML lang 没你想的那么简单

    前言 做 web 无障碍相关的研究时 遇到的第一件事就是要给 设置正确的 lang 属性 这么简单的一件事 想也不用就写好了 或者直接简写成 Bingo 可以去做其它事了 但仔细想一想 好像有些问题 zh 是什么鬼 拼音 明明是国际标准怎么
  • SpringBoot 添加 MDC 日志链路追踪

    文章目录 1 线程池配置 2 拦截器配置 3 日志文件配置 4 异步方法使用 5 定时任务使用 日志链路追踪的意思就是将一个标志跨线程进行传递 在一般的小项目中也就是在你新起一个线程的时候 或者使用线程池执行任务的时候会用到 比如追踪一个用
  • shell脚本编程大全

    文章目录 一 命令行 二 shell 三 文件系统 四 shell命令 五 shell的父子关系 六 内建命令 七 环境变量 八 文件系统权限 九 管理文件系统 十 构建基本shell脚本 十一 使用结构化命令 十二 处理用户输入 十三 呈
  • “赶快上车,会调用你也可以当鉴黄师了”说罢,老司机转眼间将车门焊得死死的!

    都是学习用途 不知道为啥 图片被ban了 如需查看完整图片请转移到从今天开始种树 起因 本人在某平台发布文章时封面用了几张美女图片 内容里都是正常的流程图之类的 却被这个平台告知如下内容 大家评评理这图片违规么 查看完整图片请转移到从今天开
  • 上机作业:日历(java)

    上机作业 日历 java 1 思路框架分析 本着按照手机日历的构造模型作为model 我着手开始了日历java小程序的编写 说到日历 就不得不提一嘴最可恶的闰年 懂得都懂 闰年是bug制造者 这次用java语言编写 我特意拿出一个方法来判断
  • 543.二叉树的直径

    543 二叉树的直径 给定一棵二叉树 你需要计算它的直径长度 一棵二叉树的直径长度是任意两个结点路径长度中的最大值 这条路径可能穿过也可能不穿过根结点 本题需要明确二叉树的直径计算方法 二叉树的直径不一定过根节点 需要遍历左子节点和右子节点
  • 清除pip安装库时的缓存

    目录 1 命令清除缓存 2 路径手动清除 在使用pip安装Python库时 如果之前已经下载过该库 pip会默认使用缓存来安装库 而不是重新从网络上下载 缓存文件通常存储在用户目录下的缓存文件夹中 具体位置因操作系统和Python版本而异
  • maven多环境打包实现web.xml和context.xml中的占位符变量替换

    在springboot或传统springmvc的tomcat项目中 为了实现spring容器文件中的变量替换 我们通常可以在项目的resource目录下新建几个环境目录 例如rd test dev stress online等等 然后再在对
  • Tensorflow:BP神经网络权值初始化

    一 Tensorflow入门 1 计算图 每一个计算都是计算图上的一个结点 而节点之间的边描述了计算之间的依赖关系 支持通过tf Graph生成新的计算图 不同计算图上的张量和运算不会共享 Tensorflow会自动生成一个默认的计算图 如
  • vue 标签点击切换颜色

    1单选
  • Twitter API

    文章转自 https www jianshu com p e6628917878b GET trends available GET热门 可用 返回具有热门主题信息推文的地理位置 返回是对位置的WOEID A WOEID is aYahoo
  • Tensorflow2.0---DeepLab v3+分割网络原理及代码解析(四)- 训练过程

    Tensorflow2 0 DeepLab v3 分割网络原理及代码解析 四 训练过程 在Tensorflow2 0 DeepLab v3 分割网络原理及代码解析 三 特征提取网络实现中 输入图片已经经过主干网络进行了特征提取 最终得到的f