【数据集处理】生成voc格式数据集

Visdrone2019数据集 生成VOC数据集格式代码。 阅读详情

import json
import re
import os
import xml.dom.minidom
import cv2
import xml.etree.ElementTree as ET
import random

txt_path = "jsonFile.txt"
image_Path = "./VOC2007/JPEGImages/"
voc_classes_path = "./voc_classes.txt"

_ANNOTATION_SAVE_PATH = './VOC2007/Annotations'
# 想把xml文件存在哪里就写哪里



# xml文件规范定义
_INDENT = '' * 4
_NEW_LINE = '\n'
_FOLDER_NODE = 'WHUT2022'
_ROOT_NODE = 'annotation'
_DATABASE_NAME = 'Dection'
_ANNOTATION = 'WHUT2022'
_AUTHOR = 'CTX'
_SEGMENTED = '0'
_DIFFICULT = '0'
_TRUNCATED = '0'
_POSE = 'Unspecified'




#--------------------------------------------------------------------------------------------------------------------------------#
#   annotation_mode用于指定该文件运行时计算的内容
#   annotation_mode为0代表整个标签处理过程,包括获得VOCdevkit/VOC2007/ImageSets里面的txt以及训练用的2007_train.txt、2007_val.txt
#   annotation_mode为1代表获得VOCdevkit/VOC2007/ImageSets里面的txt
#   annotation_mode为2代表获得训练用的2007_train.txt、2007_val.txt
#--------------------------------------------------------------------------------------------------------------------------------#
annotation_mode     = 0
#-------------------------------------------------------------------#
#   必须要修改,用于生成2007_train.txt、2007_val.txt的目标信息
#   与训练和预测所用的classes_path一致即可
#   如果生成的2007_train.txt里面没有目标信息
#   那么就是因为classes没有设定正确
#   仅在annotation_mode为0和2的时候有效
#-------------------------------------------------------------------#
classes_path        = "./voc_classes.txt"
#--------------------------------------------------------------------------------------------------------------------------------#
#   trainval_percent用于指定(训练集+验证集)与测试集的比例,默认情况下 (训练集+验证集):测试集 = 9:1
#   train_percent用于指定(训练集+验证集)中训练集与验证集的比例,默认情况下 训练集:验证集 = 9:1
#   仅在annotation_mode为0和1的时候有效
#--------------------------------------------------------------------------------------------------------------------------------#
trainval_percent    = 0.95
train_percent       = 0.95
#-------------------------------------------------------#
#   指向VOC数据集所在的文件夹
#   默认指向根目录下的VOC数据集
#-------------------------------------------------------#
# VOCdevkit_path  = 'VOCdevkit'
VOCdevkit_path = './'






# 借鉴Fast-rcnn
def convert_annotation(year, image_id, list_file):
    in_file = open(os.path.join(VOCdevkit_path, 'VOC%s/Annotations/%s.xml'%(year, image_id)))
    xml_text = in_file.read()
    root = ET.fromstring(xml_text)

    with open(classes_path, encoding='utf-8') as f:
        class_names = f.readlines()
    classes = [c.strip() for c in class_names]

    for obj in root.iter('object'):
        difficult = 0
        if obj.find('difficult')!=None:
            difficult = obj.find('difficult').text
        cls = obj.find('name').text
        if cls not in classes or int(difficult)==1:
            continue
        cls_id = classes.index(cls)
        xmlbox = obj.find('bndbox')
        b = (int(float(xmlbox.find('xmin').text)), int(float(xmlbox.find('ymin').text)), int(float(xmlbox.find('xmax').text)), int(float(xmlbox.find('ymax').text)))
        list_file.write(" " + ",".join([str(a) for a in b]) + ',' + str(cls_id))


# 借鉴Fast-rcnn
def get_txt(annotation_mode,trainval_percent,train_percent):
    random.seed(0)
    VOCdevkit_sets = [('2007', 'train'), ('2007', 'val')]
    if annotation_mode == 0 or annotation_mode == 1:
        print("Generate txt in ImageSets.")
        xmlfilepath = os.path.join(VOCdevkit_path, 'VOC2007/Annotations')
        saveBasePath = os.path.join(VOCdevkit_path, 'VOC2007/ImageSets/Main')
        temp_xml = os.listdir(xmlfilepath)
        total_xml = []
        for xml in temp_xml:
            if xml.endswith(".xml"):
                total_xml.append(xml)

        num = len(total_xml)
        list = range(num)
        tv = int(num * trainval_percent)
        tr = int(tv * train_percent)
        trainval = random.sample(list, tv)
        train = random.sample(trainval, tr)

        print("train and val size", tv)
        print("train size", tr)
        ftrainval = open(os.path.join(saveBasePath, 'trainval.txt'), 'w')
        ftest = open(os.path.join(saveBasePath, 'test.txt'), 'w')
        ftrain = open(os.path.join(saveBasePath, 'train.txt'), 'w')
        fval = open(os.path.join(saveBasePath, 'val.txt'), 'w')

        for i in list:
            name = total_xml[i][:-4] + '\n'
            if i in trainval:
                ftrainval.write(name)
                if i in train:
                    ftrain.write(name)
                else:
                    fval.write(name)
            else:
                ftest.write(name)

        ftrainval.close()
        ftrain.close()
        fval.close()
        ftest.close()
        print("Generate txt in ImageSets done.")

    if annotation_mode == 0 or annotation_mode == 2:
        print("Generate 2007_train.txt and 2007_val.txt for train.")
        for year, image_set in VOCdevkit_sets:
            image_ids = open(os.path.join(VOCdevkit_path, 'VOC%s/ImageSets/Main/%s.txt' % (year, image_set)),
                             encoding='utf-8').read().strip().split()
            list_file = open('%s_%s.txt' % (year, image_set), 'w', encoding='utf-8')
            for image_id in image_ids:
                list_file.write('%s/VOC%s/JPEGImages/%s.jpg' % (os.path.abspath(VOCdevkit_path), year, image_id))

                convert_annotation(year, image_id, list_file)
                list_file.write('\n')
            list_file.close()
        print("Generate 2007_train.txt and 2007_val.txt for train done.")


# 获取所有图像名
# for file in os.listdir(image_Path):
#     name = os.path.splitext(file)


# 得到一个json组成的列表,并把类别名称放在voc_classes_path里
def getJsonAndClasses(txt_path,voc_classes_path):
    clsname = set()  # 所有类别的集合
    inputfile = []  # 所有的目标信息的字典形式组成的列表

    with open(txt_path, "r", encoding='UTF-8') as f:  # 修改key的名字
        txt_all = f.read()
        print(type(txt_all))
        dic_all = json.loads(txt_all)
        for k, v in dic_all.items():
            for i in v:
                classes = re.split('-+|NAN', i['regionClass'])
                for cls in classes:
                    if cls == '' or cls[0] == "请":
                        continue
                    clsname.add(cls)
                    inner = {
                        "filename": k,
                        "class": cls,
                        "bndbox": [i['xmin'], i['xmax'], i['ymin'], i['ymax']]
                    }
                    inputfile.append(inner)

    clsname = list(clsname)
    file = open(voc_classes_path, 'w',encoding='UTF-8')

    for i in range(len(clsname)):
        s = str(clsname[i])
        file.write(s)
        file.write("\n")

    return inputfile

# 封装创建节点的
def createElementNode(doc, tag, attr):
    element_node = doc.createElement(tag)
    text_node = doc.createTextNode(attr)
    element_node.appendChild(text_node)
    return element_node

# 封装添加一个子节点的
def createChildNode(doc, tag, attr, parent_node):
    child_node = createElementNode(doc, tag, attr)
    parent_node.appendChild(child_node)

# object节点比较特殊
def createObjectNode(doc, attrs):
    object_node = doc.createElement('object')
    createChildNode(doc, 'name', attrs['class'],
                    object_node)
    createChildNode(doc, 'pose',
                    _POSE, object_node)
    createChildNode(doc, 'truncated',
                    _TRUNCATED, object_node)
    createChildNode(doc, 'difficult',
                    _DIFFICULT, object_node)
    bndbox_node = doc.createElement('bndbox')
    createChildNode(doc, 'xmin', str(int(attrs['bndbox'][0])),
                    bndbox_node)
    createChildNode(doc, 'ymin', str(int(attrs['bndbox'][2])),
                    bndbox_node)
    createChildNode(doc, 'xmax', str(int(attrs['bndbox'][1])),
                    bndbox_node)
    createChildNode(doc, 'ymax', str(int(attrs['bndbox'][3])),
                    bndbox_node)
    object_node.appendChild(bndbox_node)

    return object_node


# 将documentElement写入XML文件
def writeXMLFile(doc, filename):
    tmpfile = open('tmp.xml', 'w')
    doc.writexml(tmpfile, addindent='' * 4, newl='\n', encoding='utf-8')
    tmpfile.close()
    # 删除第一行默认添加的标记
    fin = open('tmp.xml')
    # print(filename)
    fout = open(filename, 'w')
    # print(os.path.dirname(fout))

    lines = fin.readlines()

    for line in lines[1:]:

        if line.split():
            fout.writelines(line)

    fin.close()
    fout.close()





if __name__ == "__main__":
    ##读取图片列表
    img_path = image_Path
    fileList = os.listdir(img_path)
    if fileList == 0:
        os._exit(-1)


    # 第一步获得json列表

    ann_data = getJsonAndClasses(txt_path,voc_classes_path)

    current_dirpath = os.path.dirname(os.path.abspath('__file__'))

    if not os.path.exists(_ANNOTATION_SAVE_PATH):
        os.mkdir(_ANNOTATION_SAVE_PATH)

    # if not os.path.exists(_IMAGE_COPY_PATH):
    #     os.mkdir(_IMAGE_COPY_PATH)

    for imageName in fileList:

        saveName = imageName.strip(".jpg")
        print(saveName)

        xml_file_name = os.path.join(_ANNOTATION_SAVE_PATH, (saveName + '.xml'))

        # 获得图像
        img = cv2.imread(os.path.join(img_path, imageName))
        print(os.path.join(img_path, imageName))
        # cv2.imshow(img)
        height, width, channel = img.shape
        print(height, width, channel)


        my_dom = xml.dom.getDOMImplementation()

        doc = my_dom.createDocument(None, _ROOT_NODE, None)

        # 获得根节点
        root_node = doc.documentElement

        # folder节点

        createChildNode(doc, 'folder', _FOLDER_NODE, root_node)

        # filename节点

        createChildNode(doc, 'filename', saveName + '.jpg', root_node)

        # source节点

        source_node = doc.createElement('source')

        # source的子节点

        createChildNode(doc, 'database', _DATABASE_NAME, source_node)

        createChildNode(doc, 'annotation', _ANNOTATION, source_node)

        createChildNode(doc, 'image', 'flickr', source_node)

        createChildNode(doc, 'flickrid', 'NULL', source_node)

        root_node.appendChild(source_node)

        # owner节点

        owner_node = doc.createElement('owner')

        # owner的子节点

        createChildNode(doc, 'flickrid', 'NULL', owner_node)

        createChildNode(doc, 'name', _AUTHOR, owner_node)

        root_node.appendChild(owner_node)

        # size节点

        size_node = doc.createElement('size')

        createChildNode(doc, 'width', str(width), size_node)

        createChildNode(doc, 'height', str(height), size_node)

        createChildNode(doc, 'depth', str(channel), size_node)

        root_node.appendChild(size_node)

        # segmented节点

        createChildNode(doc, 'segmented', _SEGMENTED, root_node)

        for ann in ann_data:
            if (saveName == ann["filename"]):
                # object节点
                object_node = createObjectNode(doc, ann)
                root_node.appendChild(object_node)

            else:
                continue

        # 构建XML文件名称

        print(xml_file_name)

        writeXMLFile(doc, xml_file_name)

        get_txt(annotation_mode, trainval_percent, train_percent)

别再用Labelme手动转Mask了!用Python脚本一键搞定VOC格式数据集(附完整代码) 本文详细介绍如何利用Python脚本将Labelme标注的JSON文件自动转换为VOC格式数据集,特别针对图像语义分割任务优化。通过完整代码示例和实用技巧,帮助开发者快速实现从标注到模型训练的数据预处理全流程,大幅提升计算机视觉项目效率。 阅读详情

相关推荐

Caltech行人数据集转化VOC数据集

CaltechPestrian2VOC 代码仓库地址 将Caltech数据集转化成PASCAL VOC的格式,下载地址 文件结构如下:其中红框中的是原始的文件夹,其余4个文件夹是在执行过程中生成的 1. Seq文件转化成JEPG图像文件 调用seq2jpg.py文件,输入data文件夹,输出到JPEG文件夹中 2. VBB标注文件转化为XML文件 调用vbb2voc.py文件...

GuanghaoChen的博客 6996

VOC 数据集格式的生成

voc数据集生成

Hilda_zzy的博客 1434

STM32掉电保存配置参数技巧

本文介绍了使用STM32内置备份寄存器(BKP)实现掉电保存配置参数的方法。相比外接EEPROM或Flash,备份寄存器无需外设但存储容量有限,需通过VBAT引脚连接纽扣电池供电。文章详细说明了初始化步骤,包括使能PWR时钟、允许访问备份寄存器等操作,并提供了RTC初始化的代码示例。同时介绍了HAL库中读写备份寄存器的函数使用方法,包括HAL_RTCEx_BKUPWrite和HAL_RTCEx_BKUPRead函数的具体参数和调用示例。该方法适用于需要小容量数据掉电保存的应用场景。

hanhanhan233的博客 948

制作VOC数据集——生成ImageSets/Main下的txt文件

import os import random trainval_percent = 0.7 # 可以自己设置 train_percent = 0.8 # 可以自己设置 xmlfilepath = f"/Users/Administrator/Desktop/ship_detection_online/Annotations_new" # 地址填自己的 txtsavepath = f"/...

dedell的博客 2098

工程伦理ppt

工程伦理学 第一章 工程与伦理 1.1 如何理解工程 一、技术与工程的区别 二、技术与工程的联系 三、工程的定义 五、工程具有不确定性和探索性 六、理解工程活动的7个维度 1.2 如何理解伦理 一、道德与伦理 二、不同的伦理立场 三、伦理困境与伦理选择 1.3 工程实践中的伦理问题 一、工程活动中的行动者网络(具有动态性和网络性) 二、主要的工程伦理问题 三、工程伦理问题的特点 1.4 如何处理工程实践中的伦理问题 一、工程实践中伦理问题的辨识 二、处理工程伦理问题的基本原则 三、应对工程伦理问题的基本思路

weixin_51656605的博客 7万+

AS7262六通道可见光传感器:从光谱原理到物联网色彩检测实战

光谱检测是嵌入式感知领域的关键技术,其核心原理是通过特定波长的滤光片分离光线并转换为电信号,从而实现对环境光或物体反射光的成分分析。这项技术的价值在于将复杂的光学分析简化为可编程读取的数字信号,极大降低了色彩检测在物联网和智能设备中的应用门槛。在智能农业、工业分拣、环境监测等场景中,精确的光谱数据能够驱动自动化决策,例如评估植物光照条件或识别物料颜色。本文以Adafruit AS7262传感器为例,深入解析其基于硅干涉滤光片的六通道设计,并通过Arduino与Python实战,演示如何快速构建从数据采集到可

weixin_28738173的博客 598

【数据集制作】VOC2007格式数据集制作和处理教程(Faster-RCNN模型标准输入)

此数据集可用于目标检测和图像分割,此次实验案例是讲解Faster-RCNN、YOLOv3等模型的进行目标检测的标准数据集输入,没讲分割,所有用不到上述所有数据集,只讲其中目标检测部分数据集的制作。此次案例是制作VOC2007数据集的制作教程,用于目标检测,此次数据集处理可用于Faster-RCNN、YOLOv3等网络进行目标检测模型的标准输入。至此,VOC2007格式数据集制作完成。

weixin_45736855的博客 6448

【算法】图解A* 搜索算法

A* 算法是启发式搜索算法,是根据Dijkstra算法改进而来。 问题引入 如下图所示,S为起始(start)节点,G为目标(goal)节点。 节点之间连线是两点的路径长度,如A到E的路径长度c(A,E) = 9。 节点旁的h值时当前节点到达目标节点(G)的预估值,如h(A)=15, 表示从当前点A到达目标点G的估计路径长度为15,此处h(x)即为启发函数,启发函数的设计有很多方法,具体可......

zhuhua造轮子的博客 4万+

快速制作自己的VOC语义分割数据集

PASCAL VOC2012是语义分割任务极为重要的官方数据集,大量优秀的语义分割模型都会刷一下这个数据集,因此我们在使用别人的开源代码时,如果能将自己的数据集整理成官方数据集的格式,则可快速验证模型性能,减少自身工作量。

qq_44840741的博客 9049

地瓜派RDK X5部署YOLOv11n避坑指南:手把手教你解决Softmax算子导致的性能暴跌问题

本文详细介绍了在地瓜派RDK X5开发板上部署YOLOv11n模型时遇到的性能问题及解决方案。通过强制BPU部署Softmax算子,成功将推理速度从7FPS提升至47FPS,并提供了完整的优化流程和技术细节,帮助开发者避免类似性能陷阱。

weixin_42629671的博客 269

脑机接口技术介绍、应用与挑战

脑机接口的概念最先于1973年提出,伴随着计算机性能的飞速提高,在美国“人类脑计划”的资金支持下,脑机接口的研究进入了高速发展期。去年年末,我国科技部会议透露:中国将拿出540亿元,推进中国脑计划的发展。同时,这一举措也推动了我国脑机接口的研究发展。 脑机接口属于多学科交叉科技,涉及神经科学、计算机科学、认知科学、控制与信息科学技术、医学等多个学科。技术实现方式是通过信号采集设备从大脑皮层采集脑电信号,经过放大、滤波、A/D转换等处理,转换为可以被计算机识别的信号,然后对信号进行预处理,提取特征信号,再利

weixin_44603934的博客 9132

VOC格式数据集制作:ImageSets->Segmentation文件中的train.txt,test.txt,trainval.txt,val.txt详细制作(详细图文教程)

VOC格式数据集制作:ImageSets->Segmentation文件中的train.txt,test.txt,trainval.txt,val.txt详细制作过程。

qq_40280673的博客 1774

数据分享:中国历年省、市、县行政区划shp(1949~2023年共计75年)

中华人民共和国县级以上行政区沿革》(三册,1949-1983年)“The Atlas of Changes of Administrative Regions of China”;《中华人民共和国行政区划沿革地图集》The yearly publications of “The Administrative Regions”, 1985-2014;每年的出版行政区划简册(1985-2014年)行政区划网:www.xzqh.org。行政区划网:www.xzqh.org。

J_Giser的博客 3697

voc定位数据xml转coco数据集格式json

[toc] 代码里面集合了python处理xml的精髓 ## 1. voc定位数据xml转coco数据集格式json import xml.etree.ElementTree as ET import os import json coco = dict() coco['images'] = [] coco['type'] = 'instances' coco['annotations'...

无左无右的博客 4638

前端技能树,面试复习第 54 天—— 手写代码:情景题

前端修罗场提供全网最专业的前端优质文章与社区服务,为应届生,初中级前端工程师提供全面、优质的面试服务、技能提升、职场解惑服务!内容包含:前端面试辅导,前端面试题,前端交流,前端答疑,前端基础知识,前端知识体系,技能树搭建,Javascript,CSS,CSS3,HTML,React,Vue,小程序,前端简历,职业交流,远程工作,英文交流,英文提升,外企,互联网,国企,大厂,牛客面试题,掘金面试题,面经,优质前端文章分享...

前端进阶之路 | 中大厂、外企、国企内推 | 面试培训 | 简历修改 987

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

深度学习必备知识——模型数据集Yolo与Voc格式文件相互转化

在深度学习中,第一步要做的往往就是处理数据集,尤其是学习百度飞桨PaddlePaddle的小伙伴,数据集经常要用Voc格式的,比如性能突出的ppyolo等模型。所以学会数据集转化的本领是十分必要的。这篇博客就带你一起进行Yolo与Voc格式的相互转化,附详细代码!

weixin_63866037的博客 4680

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

告别混乱!Potsdam遥感数据集预处理全攻略:格式转换、数据增强与COCO/VOC格式一键生成

本文详细介绍了Potsdam遥感数据集的预处理全流程,包括TIF格式转换、数据增强以及COCO/VOC格式一键生成。通过专业级代码示例和工程化实践,帮助开发者高效处理高分辨率遥感图像,优化语义分割任务的模型训练效果。

weixin_34122532的博客 453

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

NTscan扫描工具

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

Labelme标注的数据集转VOC2007格式的数据集。

VOC2007数据文件夹说明 1)JPEGImages文件夹 文件夹里包含了训练图片和测试图片,混放在一起 2)Annatations文件夹 文件夹存放的是xml格式的标签文件,每个xml文件都对应于JPEGImages文件夹的一张图片 3)ImageSets文件夹 Action存放的是人的动作,我们暂时不用 Layout存放的人体部位的数据。我们暂时不用 Main存放的是图...

AI浩 7983

图像语义分割网络实战(一)增强数据集PASCAL VOC2012 Aug的制作

接下来的几篇中,我将作为一个小白记录自己在图像语义分割领域实战的步骤和问题。 VOC数据集下载 VOC2012中一共有10000+图,但并不都用于分割任务,有的用以物体标识或者动作识别等。所谓其增强版就是指联合了SBD数据集(Semantic Boundaries Dataset and Benchmark),一般放在benchmark Release文件夹里。 Pascal VOC官网:http://host.robots.ox.ac.uk/pascal/VOC/ SBD官网:http://hom

qq_39444453的博客 5272

自定义csv转VOC目标检测数据集脚本

简介 代码是基于其他blog的代码进行修改的,把csv行数据提取独立为一个函数。根据自己的csv文件格式对返回进行调整。 功能说明 按VOC数据集格式生成对应文件夹,自动在脚本当前目录下生成 可设置训练集与验证集比例,随机分配 根据上一点分配的比例分别生成all.txt、train.txt和val.txt(分别记录对应图片的文件名,不含尾缀) 生成对应Annotations的XML文件 csv文件里面多个bbox使用同一张图片,能自动加入到同一个XML的object中 Code # encoding=u

P_Leung的技术博客 844

coco数据集转换为voc格式

1。coco数据集简介,共标注了90类 1:person 2:bicycle 3:car 4:motorcycle 5:airplane 6:bus 7:train 8:truck 9:boat 10:traffic light 11:fire hydrant 13:stop sign 14:parking meter 15:bench 16:bird 17:cat 18:dog 19:hors...

weixin_45527800的博客 2209

raw2voc数据集格式处理

前言 用深度学习做目标检测,经常会接触到pascal voc这个数据集。目前很多开源项目对数据的处理格式都采用和voc一样的格式,逐渐这成为了一种标准数据处理格式,这里记一次制作符合自己需求的VOC格式数据集。 VOC数据集简介 文件夹树结构 └── VOCdevkit #根目录 └── VOC2007 #不同年份的数据集,这里只下载了2007的,还有2012等其它年份的 ...

桃之夭夭,灼灼其华 970

读取voc中的数据集路径修改_制作VOC2007数据集常用代码

研究背景由于研究时常根据使用情况,制作符合要求的数据集,因而将需要的代码整理。数据集结构└── VOCdevkit #根目录└── VOC2012 #不同年份的数据集,这里只下载了2012的,还有2007等其它年份的├── Annotations #存放xml文件,与JPEGImages中的图片一一对应,解释图片的内容等等├── ImageSets #该...

weixin_34923040的博客 646

xml2txt 转换代码示例参考。 VOC转YOLO格式

使用U-Net分割模型处理耕地提取与耕地非农化分割数据集数据集 土地非农化监测,土地利用变化监测,耕地识别等应用 耕地提取数据集

2401_88441190的博客 639

Pytorch机器学习(三)——VOC数据集转换为YOLO数据集

Pytorch机器学习(二)——利用torchvision.datasets分析,处理,可视化VOC数据集 文章目录 系列文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 前言 本文为利用pytorch官方提供的datasets读取VOC数据集的方法,来处理数据集并把其转化为yolo的格式。如果对datasets读取VOC数据集的方法不熟悉,可以看上篇文章 Pytorch机器学习(二)——利用torchvision.datas

lzzzzzzm的博客 2125

python数据处理-数据清洗

目录 1.绘制图片 2.画出目标-生成xml-截取ROI-生成目标HW的直方图分布 3.画出目标-生成xml-截取ROI-生成目标HW的直方图分布-分类信息的解析 4.VOC格式的trainval.txt的生成: -1.已经处理好的txt(无越界,无错误)转换为xml文件 #-*-coding:utf-8-*- import os import cv2 import xml.e...

baidu_40840693的博客 1511
上一篇: 李宏毅2021春季机器学习课程笔记7: Seq2seq & Transformer
下一篇: Go自学遇到的问题记录(一)
Andy in boots
博客等级 码龄7年 73粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值