deeplabv3+源码之慢慢解析 第二章datasets文件夹(1)voc.py--voc_cmap函数和download_extract函数

这篇具有很好参考价值的文章主要介绍了deeplabv3+源码之慢慢解析 第二章datasets文件夹(1)voc.py--voc_cmap函数和download_extract函数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

系列文章目录(共五章33节已完结)

第一章deeplabv3+源码之慢慢解析 根目录(1)main.py–get_argparser函数
第一章deeplabv3+源码之慢慢解析 根目录(2)main.py–get_dataset函数
第一章deeplabv3+源码之慢慢解析 根目录(3)main.py–validate函数
第一章deeplabv3+源码之慢慢解析 根目录(4)main.py–main函数
第一章deeplabv3+源码之慢慢解析 根目录(5)predict.py–get_argparser函数和main函数

第二章deeplabv3+源码之慢慢解析 datasets文件夹(1)voc.py–voc_cmap函数和download_extract函数
第二章deeplabv3+源码之慢慢解析 datasets文件夹(2)voc.py–VOCSegmentation类
第二章deeplabv3+源码之慢慢解析 datasets文件夹(3)cityscapes.py–Cityscapes类
第二章deeplabv3+源码之慢慢解析 datasets文件夹(4)utils.py–6个小函数

第三章deeplabv3+源码之慢慢解析 metrics文件夹stream_metrics.py–StreamSegMetrics类和AverageMeter类

第四章deeplabv3+源码之慢慢解析 network文件夹(1)backbone文件夹(a1)hrnetv2.py–4个函数和可执行代码
第四章deeplabv3+源码之慢慢解析 network文件夹(1)backbone文件夹(a2)hrnetv2.py–Bottleneck类和BasicBlock类
第四章deeplabv3+源码之慢慢解析 network文件夹(1)backbone文件夹(a3)hrnetv2.py–StageModule类
第四章deeplabv3+源码之慢慢解析 network文件夹(1)backbone文件夹(a4)hrnetv2.py–HRNet类
第四章deeplabv3+源码之慢慢解析 network文件夹(1)backbone文件夹(b1)mobilenetv2.py–2个类和2个函数
第四章deeplabv3+源码之慢慢解析 network文件夹(1)backbone文件夹(b2)mobilenetv2.py–MobileNetV2类和mobilenet_v2函数
第四章deeplabv3+源码之慢慢解析 network文件夹(1)backbone文件夹(c1)resnet.py–2个基础函数,BasicBlock类和Bottleneck类
第四章deeplabv3+源码之慢慢解析 network文件夹(1)backbone文件夹(c2)resnet.py–ResNet类和10个不同结构的调用函数
第四章deeplabv3+源码之慢慢解析 network文件夹(1)backbone文件夹(d1)xception.py–SeparableConv2d类和Block类
第四章deeplabv3+源码之慢慢解析 network文件夹(1)backbone文件夹(d2)xception.py–Xception类和xception函数
第四章deeplabv3+源码之慢慢解析 network文件夹(2)_deeplab.py–ASPP相关的4个类和1个函数
第四章deeplabv3+源码之慢慢解析 network文件夹(3)_deeplab.py–DeepLabV3类,DeepLabHeadV3Plus类和DeepLabHead类
第四章deeplabv3+源码之慢慢解析 network文件夹(4)modeling.py–5个私有函数(4个骨干网,1个模型载入)
第四章deeplabv3+源码之慢慢解析 network文件夹(5)modeling.py–12个调用函数
第四章deeplabv3+源码之慢慢解析 network文件夹(6)utils.py–_SimpleSegmentationModel类和IntermediateLayerGetter类

第五章deeplabv3+源码之慢慢解析 utils文件夹(1)ext_transforms.py.py–2个翻转类和ExtCompose类
第五章deeplabv3+源码之慢慢解析 utils文件夹(2)ext_transforms.py.py–2个裁剪类和2个缩放类
第五章deeplabv3+源码之慢慢解析 utils文件夹(3)ext_transforms.py.py–旋转类,填充类,张量转化类和标准化类
第五章deeplabv3+源码之慢慢解析 utils文件夹(4)ext_transforms.py.py–ExtResize类,ExtColorJitter类,Lambda类和Compose类
第五章deeplabv3+源码之慢慢解析 utils文件夹(5)loss.py–FocalLoss类
第五章deeplabv3+源码之慢慢解析 utils文件夹(6)scheduler.py–PolyLR类
第五章deeplabv3+源码之慢慢解析 utils文件夹(7)utils.py–去标准化,momentum设定,标准化层锁定和路径创建
第五章deeplabv3+源码之慢慢解析 utils文件夹(8)visualizer.py–Visualizer类(完结)


前期准备和说明

提示:源码众多,此次选这个版本pytorch版

  1. 已经搞明白了第一章各个函数的意图。
  2. 本章讲述的是数据预处理相关的代码。
  3. 每次只说一个大函数或大类(如果函数和类足够小,就讲多个),尽量足够简单。

总体目录

deeplabv3+源码之慢慢解析 第二章datasets文件夹(1)voc.py--voc_cmap函数和download_extract函数,技术,deeplab v3+,语义分割,深度学习,人工智能

提示:本章讲解的是总体结构如下datasets文件夹下的内容。

  1. data文件夹下存放的是下载后解压的数据,总体上readme.md说的挺详细的,在第一章的get_dataset函数中有介绍和截图,可以参阅。
  2. 从本章起,init.py不做单独介绍(作用是将文件夹变为一个Python模块),在每章的第一节作为一个部分简要介绍。Python中的基础薄弱的,init.py的作用看此链接。

init.py

#从两个文件模块导入了两个类,后文有详细说明
from .voc import VOCSegmentation
from .cityscapes import Cityscapes

voc.py导入

#都是基本操作
import os
import sys
import tarfile
import collections
import torch.utils.data as data
import shutil
import numpy as np

from PIL import Image
from torchvision.datasets.utils import download_url, check_integrity

  1. 导入部分,都是常用包,不理解的单独搜索即可。
  2. voc.py中一共由4个部分组成:1个字典DATASET_YEAR_DICT ,2个函数voc_cmap函数和download_extract函数,1个类VOCSegmentation,本节说除了类的其他3个部分。

DATASET_YEAR_DICT字典

字典部分就是列举了数据集每个年份的下载链接url,文件名filename,校验码md5,和对应的目录路径base_dir。

DATASET_YEAR_DICT = {
    '2012': {
        'url': 'http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar',
        'filename': 'VOCtrainval_11-May-2012.tar',
        'md5': '6cd6e144f989b92b3379bac3b3de84fd',
        'base_dir': 'VOCdevkit/VOC2012'
    },
    '2011': {
        'url': 'http://host.robots.ox.ac.uk/pascal/VOC/voc2011/VOCtrainval_25-May-2011.tar',
        'filename': 'VOCtrainval_25-May-2011.tar',
        'md5': '6c3384ef61512963050cb5d687e5bf1e',
        'base_dir': 'TrainVal/VOCdevkit/VOC2011'
    },
    '2010': {
        'url': 'http://host.robots.ox.ac.uk/pascal/VOC/voc2010/VOCtrainval_03-May-2010.tar',
        'filename': 'VOCtrainval_03-May-2010.tar',
        'md5': 'da459979d0c395079b5c75ee67908abb',
        'base_dir': 'VOCdevkit/VOC2010'
    },
    '2009': {
        'url': 'http://host.robots.ox.ac.uk/pascal/VOC/voc2009/VOCtrainval_11-May-2009.tar',
        'filename': 'VOCtrainval_11-May-2009.tar',
        'md5': '59065e4b188729180974ef6572f6a212',
        'base_dir': 'VOCdevkit/VOC2009'
    },
    '2008': {
        'url': 'http://host.robots.ox.ac.uk/pascal/VOC/voc2008/VOCtrainval_14-Jul-2008.tar',
        'filename': 'VOCtrainval_11-May-2012.tar',
        'md5': '2629fa636546599198acfcfbfcf1904a',
        'base_dir': 'VOCdevkit/VOC2008'
    },
    '2007': {
        'url': 'http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar',
        'filename': 'VOCtrainval_06-Nov-2007.tar',
        'md5': 'c52e279531787c972589f7e41ab4ae64',
        'base_dir': 'VOCdevkit/VOC2007'
    }
}

voc_cmap函数

提示:新手注意:这个函数是处理VOC数据集特有的,自己的数据集不一定要使用,对比cityscape数据集就没有。此处结果大小返回有256个,只用到前21个对应VOC数据集的21个标注类,其他的为未标注。后附补充链接。

def voc_cmap(N=256, normalized=False):
    def bitget(byteval, idx):
        return ((byteval & (1 << idx)) != 0)   #后补链接。1<<idx,把1左移idx位,相当于1乘以2^idx。byteval与2^idx按位进行与操作(全1为1,其他的都是0),看结果不等于0则返回True,等于0则返回False.

    dtype = 'float32' if normalized else 'uint8'
    cmap = np.zeros((N, 3), dtype=dtype)
    for i in range(N):       #N=256,即0-255
        r = g = b = 0
        c = i
        for j in range(8):
            r = r | (bitget(c, 0) << 7-j)  #单纯的计算,如第一个循环bitget(0, 0)=False,False<<7得到0,0|0得到0。经过8次循环得到一个r的数值。
            g = g | (bitget(c, 1) << 7-j)   #同上过程,经过8次循环得到一个g的数值。
            b = b | (bitget(c, 2) << 7-j)   #同上过程,经过8次循环得到一个b的数值。
            c = c >> 3                 #右移3位,即除以8.

        cmap[i] = np.array([r, g, b])  #经过256次循环得到一个cmap数组。这个数组的值是固定的,需要的话,可以单独输出看一下。但其中只有前21个对应VOC数据集的21个颜色(即21个类)。

    cmap = cmap/255 if normalized else cmap
    return cmap

download_extract函数

提示:此函数位于文件末尾,就是数据的下载校验和解压缩。

def download_extract(url, root, filename, md5):               #按url下载,MD5校验
    download_url(url, root, filename, md5)     #download_url来自torchvision.datasets.utils,导入的最后一行。
    with tarfile.open(os.path.join(root, filename), "r") as tar:   #tar文件解压缩
        tar.extractall(path=root)

Tips

  1. 补python中的左移<<和右移>>运算

  2. 补VOC数据集21个类,21种颜色说明。

  3. 下一节是VOC数据集最重要的VOCSegmentation类。文章来源地址https://www.toymoban.com/news/detail-546462.html

到了这里,关于deeplabv3+源码之慢慢解析 第二章datasets文件夹(1)voc.py--voc_cmap函数和download_extract函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用LabVIEW实现 DeepLabv3+ 语义分割含源码

    图像分割可以分为两类:语义分割(Semantic Segmentation)和实例分割(Instance Segmentation),前面已经给大家介绍过两者的区别,并就如何在labview上实现相关模型的部署也给大家做了讲解,今天和大家分享如何使用labview 实现deeplabv3+的语义分割,并就 Pascal VOC2012 (DeepLabv3Plus-Mobi

    2024年02月13日
    浏览(33)
  • 【期末不挂科-单片机考前速过系列P2】(第二章:搞定寻址方式)经典例题盘点(带图解析)

    前言 大家好吖,欢迎来到 YY 滴单片机系列 ,热烈欢迎! 本章主要内容面向接触过单片机的老铁 主要内容含: 欢迎订阅 YY 滴C++专栏!更多干货持续更新!以下是传送门! YY的《C++》专栏 YY的《C++11》专栏 YY的《Linux》专栏 YY的《数据结构》专栏 YY的《C语言基础》专栏 YY的《

    2024年02月01日
    浏览(31)
  • 第二章(第二节):无穷小量和函数

    若 lim f(x) = 0 , 则称函数 f(x) 当 x → x 0 时是无穷小量,简称: 无穷小 。      x→ x 0 定理1. 有限多个 无穷小量的代数和仍是无穷小量 定理2. 有限多个 无穷小量的积也是无穷小量 定理3.常数与无穷小量的积也是无穷小量 定理4.有界变量与无穷小量的积是无穷小量 当 x→

    2024年02月08日
    浏览(34)
  • 信息系统安全(第二章)

    2.1.1基本概念 在网络开放环境中,信息系统易遭受各种各样的攻击,例如消息窃听,身份伪装,消息伪造与篡 改,消息重放等。这种入侵行为的实施相当一部分建立在入侵者获得已经存在的通信通道或伪装身 份与系统建立通信通道的基础上。因此,在信息系统中,用户在登

    2024年04月09日
    浏览(71)
  • 第二章 编程基础

    内容框图 单行注释: 快速注释: 多行注释: 使用+号拼接 使用拼接函数 列表 列表是一个有序的序列结构,可以存放不同数据类型的数据。 列表每一个元素有一个索引。 列表可以进行一系列操作,添加,删除,修改元素。 元组是一个有序的序列结构,基本结构和列表类似。

    2024年02月06日
    浏览(45)
  • 第二章 集合

    提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 HashSet 底层就是基于 HashMap 实现的。两者主要区别: 线程是否安全: HashMap 是非

    2024年02月02日
    浏览(49)
  • 操作系统——第二章

    一.单选题(共30题,60.0分) 1 ()是指从作业提交给系统到作业完成的时间间隔 (2.0分) A、 周转时间 B、 响应时间 C、 等待时间 D、 运行时间 正确答案: A 2 引入多道程序设计技术之后,处理器的利用率() (2.0分) A、 有所改善 B、 极大提高 C、 降低 D、 无变化 正确答

    2023年04月08日
    浏览(33)
  • 第二章:基本概念(下)

    人们往往将信号称为**“软件中断”**。进程收到信号,就意味着某一事件或异常情况的发生。 信号的类型很多,每一种分别标识不同的事件或情况。采用 不同的整数 来标识各种信号类型,并以SIGxxxx 形式的符号名加以定义。 内核、其他进程(只要具有相应的权限)或进程自

    2024年02月08日
    浏览(33)
  • 第二章 翻译

    Section Ⅲ Translation Directions: In this section, there is a text in English. Translate it into Chinese. Write your translation on ANSWER SHEET 2. (15points) “Sustainability” has become a popular word these days, but to Ted Ning, the concept will always have personal meaning. Having endured a painful period of unsustainability in his own life made it

    2024年02月08日
    浏览(42)
  • 第二章-算法

    算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。 算法有五个基本特征:输入、输出、有穷性、确定性和可行性。 输入:算法具有零个或者多个输入。 输出:算法至少有一个或多个输出。 有穷性:算法在执行了有

    2024年02月14日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包