d2l图像分割数据集制作

动手学习深度学习14-微调-热狗识别代码 图像识别,微调 阅读详情

本文主要讲述图像分割Segmentation数据集的制作

目录

加载:

实现从RGB三个通道到类别索引单int值:

图像增广

集成用法


加载:

  在Segmentation里面有三个txt,里面写的是JPEG文件夹里面的图片的名称
  将图片转为RGB,然后提取images的图片名,读取对应文件中的图片作为features
  这里注意,对于语义分割,其label是对每个像素进行标注,所以标注可以为一张与features等大小的图片,是png文件是为了防止jpg图片格式会压缩:

def read_voc_images(voc_dir, is_train=True):
    """读取所有VOC图像并标注"""
    txt_fname = os.path.join(voc_dir, 'ImageSets', 'Segmentation',
                            'train.txt' if is_train else 'val.txt')
    mode = torchvision.io.image.ImageReadMode.RGB
    with open(txt_fname, 'r') as f:
        images = f.read().split()
    features, labels = [], []
    for i, fname in enumerate(images):
        features.append(torchvision.io.read_image(os.path.join(
            voc_dir, 'JPEGImages', f'{fname}.jpg')))
        labels.append(torchvision.io.read_image(os.path.join(
            voc_dir, 'SegmentationClass' ,f'{fname}.png'), mode))
    return features, labels
voc_dir = '/CV/xhr/VOCdevkit/VOC2012'

train_features, train_labels = read_voc_images(voc_dir, True)
len(train_features), train_features[1].shape, train_labels[1].shape

'''
(1464, torch.Size([3, 375, 500]), torch.Size([3, 375, 500]))
'''

由此可见,该函数得到的是list,里面的每个元素对应的是每个图片的tensor(c,w,h)

显示一下:

n = 5
imgs = train_features[0:n] + train_labels[0:n]
imgs = [img.permute(1,2,0) for img in imgs]
d2l.show_images(imgs, 2, n);

对于Segmentation中的标记,为对各个像素的标记,每个类别对应不同的颜色,具体颜色与label标签对应见下:

VOC_COLORMAP = [[0, 0, 0], [128, 0, 0], [0, 128, 0], [128, 128, 0],
                [0, 0, 128], [128, 0, 128], [0, 128, 128], [128, 128, 128],
                [64, 0, 0], [192, 0, 0], [64, 128, 0], [192, 128, 0],
                [64, 0, 128], [192, 0, 128], [64, 128, 128], [192, 128, 128],
                [0, 64, 0], [128, 64, 0], [0, 192, 0], [128, 192, 0],
                [0, 64, 128]]
#@save
VOC_CLASSES = ['background', 'aeroplane', 'bicycle', 'bird', 'boat',
                'bottle', 'bus', 'car', 'cat', 'chair', 'cow',
                'diningtable', 'dog', 'horse', 'motorbike', 'person',
                'potted plant', 'sheep', 'sofa', 'train', 'tv/monitor']

  这里返回每个label的RGB三个通道情况,第一张图片飞机用红色标注,所以只有在第一个通道R上有数值128,其余的两个通道对应位置全为0

train_labels[0][0][50:150, 230:340], train_labels[0][1][50:150, 230:340]

'''
(tensor([[  0,   0,   0,  ...,   0,   0,   0],
         [  0,   0,   0,  ...,   0,   0,   0],
         [  0,   0,   0,  ...,   0,   0,   0],
         ...,
         [128, 128, 128,  ...,   0,   0,   0],
         [128, 128, 128,  ...,   0,   0,   0],
         [128, 128, 128,  ...,   0,   0,   0]], dtype=torch.uint8),
 tensor([[0, 0, 0,  ..., 0, 0, 0],
         [0, 0, 0,  ..., 0, 0, 0],
         [0, 0, 0,  ..., 0, 0, 0],
         ...,
         [0, 0, 0,  ..., 0, 0, 0],
         [0, 0, 0,  ..., 0, 0, 0],
         [0, 0, 0,  ..., 0, 0, 0]], dtype=torch.uint8))
'''

实现从RGB三个通道到类别索引单int值:

  目的:在label中,使用不同颜色进行标注,但是每个像素返回的是一个rgb三通道list,不好训练,所以要将不同的rgb通道弄成一个int,方便训练.--hash索引(longtensor)
  3个256的RGB通道共有256^3种组合,所以先创建一个大的索引tensor,再使用一种将不同通道上的像素进行不同运算的方法,即(r×256+g)×256+b,使上述标记种类的rgb都能够索引到相应的int值。
  返回的这个colormap是一个long.tensor,里面对应上面种类的21个不同位置处不是默认值,是从0-20的类别对应数目,其他的全是默认创建值。
  下面这个例子表示了索引张量tensor中对应位置对应元素的过程。在label中,相应的颜色映射到对应的整数i中。

def voc_colormap2label():
    """构建从RGB到VOC类别索引的映射"""
    colormap2label = torch.zeros(256 ** 3, dtype=torch.long)
    for i, colormap in enumerate(VOC_COLORMAP):
        colormap2label[
            (colormap[0] * 256 + colormap[1]) * 256 + colormap[2]] = i
    return colormap2label

def voc_label_indices(colormap, colormap2label):
    """将VOC标签中的RGB值映射到它们的类别索引"""
    colormap = colormap.permute(1, 2, 0).numpy().astype('int32')
    idx = ((colormap[:, :, 0] * 256 + colormap[:, :, 1]) * 256
        + colormap[:, :, 2])
    return colormap2label[idx]

输入对应的图片(第一张),再输入映射函数,则返回的每个像素为对应类的对应编号:

y = voc_label_indices(train_labels[0], voc_colormap2label())
y[50:150, 230:340], VOC_CLASSES[20]

'''
(tensor([[0, 0, 0,  ..., 0, 0, 0],
         [0, 0, 0,  ..., 0, 0, 0],
         [0, 0, 0,  ..., 0, 0, 0],
         ...,
         [1, 1, 1,  ..., 0, 0, 0],
         [1, 1, 1,  ..., 0, 0, 0],
         [1, 1, 1,  ..., 0, 0, 0]]),
 'tv/monitor')
'''

注意,索引用到了hash表:

  在colormap2label中,是一个1维tensor,此时idx为2维tensor,每个元素显示的为通道数上元素的对应计算值,此时传入这个1维tensor中,会输出一个相同维度的tensor,里面的每个元素为对应‘字典’中对应计算值的索引值‘i'。

  对于没标记成类别的颜色,还有全黑的背景,全部对应为background类,在colormap2label的'字典'中索引的全是0。

如这里的14737...是对应标记白边:

图像增广

  在对图像进行随机裁剪时,同时也要对label进行裁剪
  torchvision.transforms.RandomCrop.get_params命令传入图片和裁剪的尺寸,返回的是一个4元素元组,分别为裁剪区域的左上角xy坐标与裁剪wh,可以进行functional.crop传入图像与该元组,即对指定裁剪区域进行裁剪。

def voc_rand_crop(feature, label, height, width):
    """随机裁剪特征和标签图像"""
    rect = torchvision.transforms.RandomCrop.get_params(
        feature, (height, width))
    feature = torchvision.transforms.functional.crop(feature, *rect)
    label = torchvision.transforms.functional.crop(label, *rect)
    return feature, label

segmentation不好做resize,因为resize是对像素值插值,插值对应不了label。


一般都用crop


filter是假设图像的尺寸如果小于crop的尺寸,就直接去掉了。


  getitem对应索引得到的是经过crop等teansform的图片!
  在这里注意,features是通过read_voc_images得到的。对应的是一个list,里面每个元素才为对应的图片cwh,这里self.features是经过了filter的,在filter函数中,返回的img是for img in imgs,其中这个imgs是传入的以每个元素为图片的list,这样返回的feature就是具体的图片了,self.labels也是一样的道理!!

class VOCSegDataset(torch.utils.data.Dataset):
    """⼀个⽤于加载VOC数据集的⾃定义数据集"""
    def __init__(self, is_train, crop_size, voc_dir):
        self.transform = torchvision.transforms.Normalize(
            mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
        self.crop_size = crop_size
        features, labels = read_voc_images(voc_dir, is_train=is_train) # 这里是list
        self.features = [self.normalize_image(feature)
                        for feature in self.filter(features)]
        self.labels = self.filter(labels)
        self.colormap2label = voc_colormap2label()
        print('read ' + str(len(self.features)) + ' examples')
    def normalize_image(self, img):
        return self.transform(img.float() / 255)
    
    def filter(self, imgs): 
        # imgs是每个元素为tensor(c,w,h)的list,for循环后返回的即为img的tensor
        return [img for img in imgs if (
        img.shape[1] >= self.crop_size[0] and
        img.shape[2] >= self.crop_size[1])]
    
    def __getitem__(self, idx):
        feature, label = voc_rand_crop(self.features[idx], self.labels[idx],
                                        *self.crop_size)
        return (feature, voc_label_indices(label, self.colormap2label))
    
    def __len__(self):
        return len(self.features)
crop_size = (320, 480)
voc_train = VOCSegDataset(True, crop_size, voc_dir)
voc_test = VOCSegDataset(False, crop_size, voc_dir)

'''
read 1114 examples
read 1078 examples
'''

注意:label里面没有c,对应的是之前提到的将rgb通道计算为单个int值!

batch_size = 64
train_iter = torch.utils.data.DataLoader(voc_train, batch_size, shuffle=True,
                                    drop_last=True,
                                    num_workers=d2l.get_dataloader_workers())
for X, Y in train_iter:
    print(X.shape)
    print(Y.shape)
    break

'''
torch.Size([64, 3, 320, 480])
torch.Size([64, 320, 480])
'''

集成用法

def load_data_voc(batch_size, crop_size):
    """加载VOC语义分割数据集"""
    voc_dir = '/CV/xhr/VOCdevkit/VOC2012'
    num_workers = d2l.get_dataloader_workers()
    train_iter = torch.utils.data.DataLoader(
        VOCSegDataset(True, crop_size, voc_dir), batch_size,
        shuffle=True, drop_last=True, num_workers=num_workers)
    test_iter = torch.utils.data.DataLoader(
        VOCSegDataset(False, crop_size, voc_dir), batch_size,
        drop_last=True, num_workers=num_workers)
    return train_iter, test_iter

基于聚类算法的图像分割技术 本科毕业设计,在此总结。 1. 聚类概念 如今,学术界并未对聚类作出一个具体定义。目前,认可度最高的观点是:聚类是一种无监督的分类手段。无标签的数据集可通过聚类分析中设定的相似性度量进行分类,形成多个类簇,满足实验的分析需要。因聚类本身是一种具有主观性且能获得良好效果的研究手段,无严格意义上的对错之分,只有“类内的相似和类它的排斥”这一基本准则。1974年,Everitt对聚类作出基础定义:基于任一相似度准则,同一类簇的样本数据具有相似特性,不同类簇的样本数据不相似。相似度准则由研究所需实验效果而定。类簇指 阅读详情

相关推荐

mean shift 图像分割 (一)

Mean shitf的故事说来挺励的,早在1975年就诞生了,接着就是漫长的黑暗岁月,黑暗到几乎淡出了人们的视野,不过,命运总是善良的,95年又重新焕发生机,各种应用喷薄而出,包括目标跟踪,边缘检测,非极大值抑制等。这次就只介绍在图像分割中的应用吧,其它的我也没看。Mean shitf过程也充满正能量,描绘的是如何通过自己的努力,一步一步爬上顶峰的故事。

Note of Transposition 3万+

【动手学】36 图片增广_代码

%matplotlib inline import torch import torchvision from torch import nn from d2l import torch as d2l d2l.set_figsize() img = d2l.Image.open('./data/tmp2E5F.png') d2l.plt.imshow(img) <matplotlib.image.AxesImage at 0x7fd01038c3d0> def apply..

梦想是要有的,万一实现了呢! 1049

用于FCN的Pascal VOC 2012增强版语义分割数据集制作

数据集准备 train/val/test的划分,这个采用Hariharan[1]的做法,这个也是deeplab采用的方法,下载地址https://ucla.app.box.com/s/rd9z2xvwsfpksi7mi08i2xqrj7ab4keb 目录如下: test.txt test_id.txt train.txt train_aug.txt trainval...

Jinming Su 9978

torchvision.io.read_image

文章目录1. 说明2. 代码测试3. 结果 1. 说明 将JPEG或PNG图像读入三维RGB张量。可选地将图像转换为所需的格式。输出张量的值是uint8,在0到255之间 torchvision.io.read_image(path: str, mode: torchvision.io.image.ImageReadMode = <ImageReadMode.UNCHANGED: 0>) path : 获取图片地址 ImageReadMode: 读取模式 Return output (Te

scar2016的博客 7247

Mask2Former实战:如何用这个通用图像分割神器在COCO数据集上刷榜(附完整训练代码)

本文详细介绍了如何使用Mask2Former这一通用图像分割神器在COCO数据集上实现卓越性能。通过环境配置、模型架构解析、训练策略优化及骨干网络选型等实战步骤,帮助开发者掌握基于Masked-attention的先进分割技术,并提供完整训练代码和性能优化技巧。

weixin_42524499的博客 261

计算机视觉知识点-图像增强

图像增强技术通过对训练图像进行一系列随机更改以生成相似但不同的训练示例来扩展训练数据集的规模。 随机更改训练示例可以减少模型对某些属性的依赖,从而提高模型的泛化能力。我们可以以不同的方式裁剪图像,以使感兴趣的对象出现在不同的位置,从而减少了模型对对象出现位置的依赖性。 我们还可以调整亮度,颜色和其他因素,以降低模型对颜色的敏感度。 可以说图像增强技术为AlexNet的成功做出了巨大贡献。 使用mxnet进行一下代码演示。mxnet的安装方法 pip install d2l==0.14.3 pip ..

蓝色的杯子 1607

AttributeError: module ‘torchvision.io.image‘ has no attribute ‘ImageReadMode‘

【代码】AttributeError: module ‘torchvision.io.image‘ has no attribute ‘ImageReadMode‘

分享计算机视觉,C++,网络摄像头研发,音视频开发,嵌入式等知识。 574

DBC到ARXML:AUTOSAR CAN通信栈自动化配置完整指南

在AUTOSAR架构下,DBC(CAN数据库文件)与ARXML(AUTOSAR XML)分别扮演着描述总线通信和ECU内部配置的关键角色。DBC定义了网络上的报文与信号,而ARXML则是AUTOSAR工具链交换配置数据的标准格式。在实际的ECU开发中,如何将DBC中的通信信息高效、准确地转换为ARXML,并自动生成可编译的CAN通信栈BSW配置,是许多工程师面临的痛点。借助DaVinci Configurator等工具,我们可以通过自动化导入链路消除手工映射带来的字节序错误、信号起始位偏差等高风险问题,大幅

weixin_34183910的博客 532

飞桨AI Studio使用d2l进行VOC2012图像分割实验完全指南

本文介绍了在飞桨AI Studio平台上使用PaddlePaddle 2.5.2框架和d2l库进行VOC2012图像分割实验的完整流程。主要内容包括:1) 飞桨AI Studio环境配置与d2l库安装;2) VOC2012数据集的获取与预处理方法;3) 全卷积网络(FCN)模型的构建;4) 图像分割评估指标的计算。实验使用VOC2012数据集,包含21个类别,通过FCN模型实现像素级分类。文中详细说明了环境设置、数据准备、模型训练等关键步骤,为计算机视觉领域的图像分割任务提供了实践指南。

m0_54846764的博客 1688

保姆级教程:给你的Jetson Orin NX换个‘大房子’——新SSD初始化与JetPack 6.x刷机全流程

本文提供Jetson Orin NX存储升级与JetPack 6.x系统部署的完整指南,涵盖SSD选型、分区策略、刷机流程及性能优化技巧。通过实测数据展示如何提升AI模型加载速度33%,并分享温度管理、I/O调度等实战经验,助力开发者突破边缘计算存储瓶颈。

weixin_42715608的博客 156

如何处理MIGO取消物料凭证报错:“只是可能对有相同的价格控制进行倒记账(本月S,前月V)” & “仅在 QM 中修改物料质量检验库存”

记录一次处理MM模块的报错。这次连续处理了两个错误,“只是可能对有相同的价格控制进行倒记账(本月S,前月V)” & “仅在 QM 中修改物料质量检验库存”。把过程和操作步骤记录下一。方便日后回头查找。

IT小职员 6228

小样本图像分割数据集

这里主要介绍两种在小样本图像分割中使用的数据集,分别是PASCAL−5iPASCAL-5^iPASCAL−5i和COCO−20iCOCO-20^iCOCO−20i,主要是对PASCAL和COCO做了一定的修改让它们更适用于小样本图像分割,SDS主要用于扩展PASCAL的标注。 PASCAL−5iPASCAL-5^iPASCAL−5i出自OSLSM,COCO−20iCOCO-20^iCOCO−20i出自CANet PASCAL−5iPASCAL-5^iPASCAL−5i PASCAL−5iPASCAL-5^i

qq_38932073的博客 3655

简单的图书管理系统---SpringBoot+mysql通过前后端分离实现增删查改

SpringBoot+mysql通过前后端分离实现增删查改 上篇文章介绍了如何写后端接口 SpringBoot连接MySQL获取数据写后端接口 这篇文章,我们就介绍一下怎么写前端 点击修改跳出修改界面,点击添加书籍跳出添加书籍界面 点击删除,直接删除一行数据 其他的也没什么解释了,直接上代码(看不懂的可以私聊我哟) <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>

爱笑的博客 2014

如何使用D2L.ai进行实例分割:从理论到实践的完整指南

实例分割是计算机视觉领域的一项关键技术,它不仅能够识别图像中的物体类别,还能精确勾勒出每个物体的像素级边界。D2L.ai作为一本交互式深度学习书籍,提供了多框架代码、数学原理和详细讨论,被全球70个国家的500多所大学采用,包括斯坦福、麻省理工、哈佛和剑桥等顶尖学府。本指南将带您了解实例分割的核心概念,并通过D2L.ai的实战资源掌握这项强大技术。 ## 实例分割与其他分割技术的区别 在深入实

gitblog_00648的博客 1089

高通Camera IFE时钟配置

高通Camera IFE时钟配置中的minHorizontalBlanking和minVerticalBlanking配置计算方法

一个懒癌的驱动工程师的随笔分享 6167

SAP(ERP)工艺路线(Routing)业务视角解析

工艺路线(Routing)也是PP模块,即生产制造模块中最重要核心主数据之一,也是ERP(SAP)顾问,必需从业务与系统深入掌握的重要主数据,它也是整个生产计划与生产流程的重要基础。因为执行步骤只是操作层面的认知,业务顾问需要从业务本质上去理解它,要真正从业务视角理解工艺路线的业务价值,而不仅仅是操作层面的认知。因此将工艺路线理解为“有以上业务本质的理解,然后进到SAP系统中,就容易理解工艺路线(Routing)的每一组成部分结构与功能了,本质就是理解制造企业如何将设计意图转化为物理现实的编码规则。

m0_45197968的博客 1498

深入理解语义分割与数据集处理(基于d2l-ai项目)

深入理解语义分割与数据集处理(基于d2l-ai项目) 【免费下载链接】d2l-en d2l-ai/d2l-en: 是一个基于 Python 的深度学习教程,它使用了 SQLite 数据库存储数据。适合用于学习深度学习,特别是对于需要使用 Python 和 SQLite 数据库的场景。特点是深度学习教程、Python、SQ...

gitblog_00302的博客 432

使用阿里天池平台训练YOLO目标检测模型

YOLO算法是一种单阶段目标检测算法,由Joseph Redmon等人于2015年提出。与传统的两阶段检测算法相比,YOLO将目标检测问题转化为回归问题,直接预测边界框的位置和类别概率,大大提高了检测速度。YOLOv1: 首次提出YOLO的核心思想,将图像分割成网格,每个网格预测边界框和类别概率。YOLOv2: 引入了批量归一化、锚框等改进,提高了检测精度。YOLOv3: 采用多尺度预测,增强了对小目标的检测能力。

步子哥的博客 1087

brats数据集图像分割_【知识星球】几个人像分割数据集简介和下载

欢迎大家来到《知识星球》专栏,今天给大家介绍一下人像分割相关的几个数据集,并提供下载。作者&编辑 | 言有三有三AI知识星球的“数据集”板块中已经提供了非常多的珍贵的数据集介绍和下载,从人脸相关的任务,到美学摄影,到一些大型数据集,今天介绍几个人像分割相关的数据集。1 图像分割算法关于图像分割的知识,大家可以关注我们相关的技术文章,从传统算法到深度学习算法,有综述,有各类模型的解...

weixin_39729837的博客 1469

SAP S/4HANA Cloud 管理员业务角色创建实战:基于 SAP_BR_ADMINISTRATOR 模板的一站式指南

摘要:SAP S/4HANA Cloud新系统初始登录时常见Fiori Launchpad无磁贴的问题,这是由于缺乏合适的业务角色分配。本文介绍了通过预交付的SAP_BR_ADMINISTRATOR模板创建管理员角色的完整流程,包括业务用户、业务角色和业务目录的核心概念解析。重点说明了直接使用模板的风险,并提供了从模板创建自定义管理员角色的详细步骤(4.1-4.3),以及权限限制设置的注意事项。文中还分享了一个实际项目案例,强调正确配置管理员角色对后续权限体系建设的关键作用。(149字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 200

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

数据集学习笔记(二):目标检测和图像分割标注软件介绍和使用,并转换成YOLO系列可使用的数据集格式

labelImg是一个开源的图像标注工具,用于创建图像标注数据集。它提供了一个简单易用的界面,允许用户通过绘制边界框或者创建多边形来标注图像中的对象。它支持多种常见的标注格式,如Pascal VOC、YOLO和COCO等。使用labelImg,用户可以加载图像文件夹,逐个标注图像中的对象,并保存标注结果。该工具还提供了一些快捷键和功能,如缩放、移动和删除标注框,以及快速切换到下一张图像等。此外,labelImg还支持标注图像的困难程度、部分可见性和关键点等。

源的博客 8142

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

ZoneDeck 打包与发布完全指南:本机一键打包、版本号管理与 GitHub Actions 自动化发版

ZoneDeck 是一款 Windows 桌面工作区管理工具("Boss Key" 类应用),采用"常驻核心(`ZoneDeck.exe`,纯 Rust)+ 配置界面(`config.exe`,Tauri + Svelte)"双进程架构。本文聚焦该项目的**打包与发布体系**:如何在本机一键产出便携版与 InnoSetup 安装包、如何统一管理版本号、如何通过 GitHub Actions 完成"

gitblog_00035的博客 497

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

QMD 查询语法深度指南:结构化多路检索、Intent 消歧与本地混合搜索实战

QMD(Quick Markdown Database)是一个完全本地运行的 mini CLI 搜索引擎,面向文档、知识库、会议纪要等纯文本语料。本文以 [docs/SYNTAX.md](https://link.gitcode.com/i/d7e102f4563240d7fd3c6e9ea28385b4) 为骨架,系统讲解 QMD 的结构化查询语言:从 EBNF 文法、`lex`/`vec`/`

gitblog_00683的博客 663

【图像分割】基于 SDD、Otsu 和自适应阈值方法的 BBBC005 数据集的 275 个合成核图像分割附matlab代码

图像分割是计算机视觉领域的一个重要研究方向,其目的是将图像分割成具有独特特征的区域,以便进行进一步的分析和处理。在图像分割领域,SDD、Otsu 和自适应阈值方法都是常用的技术,它们在不同的场景下都有着各自的优势和局限性。本文将基于这三种方法,对BBBC005数据集中的275个合成核图像进行分割,并对结果进行比较和分析。首先,让我们简要介绍一下这三种方法。

m0_57702748的博客 197

Gen6D数据集制作进阶:如何用CloudCompare精准定义物体朝向(X+/Z+方向)?

本文详细介绍了如何利用CloudCompare工具在Gen6D数据集中精准定义物体朝向(X+/Z+方向),解决6D位姿估计中的关键问题。通过平面拟合和方向向量计算,开发者可以避免坐标系定义错误导致的位姿估计失效,提升数据集质量。文章包含实战技巧和常见错误排查,适用于工业检测和增强现实等场景。

weixin_30369041的博客 453
上一篇: datawhale天池二手车比赛
下一篇: d2l风格迁移--包含tensor与pil图片互换操作
我想吃鱼了,
博客等级 码龄5年 62粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值