用Open Images Dataset V6制作yolo训练数据集(darknet版本)

YOLO目标检测数据集构建指南:VOC/COCO/YOLO格式解析与实战训练 目标检测是计算机视觉的核心任务,其关键在于高质量的训练数据。数据标注通常涉及多种主流格式,如VOC的XML、COCO的JSON以及YOLO的TXT,每种格式在坐标表示、文件结构和存储方式上各有不同。理解这些格式的底层原理与转换逻辑,是构建标准化数据集、确保模型训练可复现性的技术基础。在工程实践中,科学的数据集划分策略和严谨的标签校验流程,能有效避免数据泄露与类别不平衡问题,直接提升模型的泛化能力与最终性能。本文聚焦于**YOLO目标检测**场景,详细解析了三种格式的互转要点、常见陷阱(如归一化坐标计算错误) 阅读详情
AI摘要

本文介绍了如何从OpenImagesDatasetV6下载特定类别图像,将其转换为Darknet所需的YOLO格式,并指导如何准备数据用于Darknet模型训练。步骤包括克隆项目、下载指定类别图像、预处理标签并生成train.txt文件。

Open Images Dataset V6是谷歌开源的一个强大的图像公开数据集,里面包含约 900 万张图像,600个类别。可用于图像分类、对象检测、视觉关系检测、实例分割和多模态图像描述。
下图为该数据集的600个类别:
600个类别
可在链接中预览某个类别/某个图像任务的标注框。
在这里插入图片描述

数据集的详细信息可参考论文:The Open Images Dataset V4: Unified image classification, object detection, and visual relationship detection at scale

接下来正文开始,介绍一下如何制作可在darknet中训练的自定义数据集。

1. 克隆github项目(首次运行)

项目地址:https://github.com/theAIGuysCode/OIDv4_ToolKit ,将项目克隆到本地。
打开: ~/OIDv4_ToolKit-master,执行指令:pip install -r requirements.txt

2.开始下载图象

2.1 先去数据集网站 https://storage.googleapis.com/openimages/web/index.html

搜索对应的类别,下面以Balloon,Airplane和Bell pepper为例。
若下载两个类别的数据,如Balloon,Airplane(各400张),执行指令
python main.py downloader --classes Balloon Airplane --type_csv train --limit 400
注1:若某类别有两个单词,中间的空格用下划线_来代替。
如Bell pepper:python main.py downloader --classes Bell_pepper --type_csv train --limit 400
注2:运行上述指令之后,需要耐心等待一段时间才会开始下载。
注3:执行命令python3 main.py -h可查看帮助指令。
注4:执行指令python main.py downloader --classes Aircraft Weapon --type_csv test --limit 100 --multiclasses 1可将多个类别一个文件夹
下载界面:

python main.py downloader --classes Balloon Airplane --type_csv train --limit 400

                   ___   _____  ______            _    _    
                 .'   `.|_   _||_   _ `.         | |  | |   
                /  .-.  \ | |    | | `. \ _   __ | |__| |_  
                | |   | | | |    | |  | |[ \ [  ]|____   _| 
                \  `-'  /_| |_  _| |_.' / \ \/ /     _| |_  
                 `.___.'|_____||______.'   \__/     |_____|
        

             _____                    _                 _             
            (____ \                  | |               | |            
             _   \ \ ___  _ _ _ ____ | | ___   ____  _ | | ____  ____ 
            | |   | / _ \| | | |  _ \| |/ _ \ / _  |/ || |/ _  )/ ___)
            | |__/ / |_| | | | | | | | | |_| ( ( | ( (_| ( (/ /| |    
            |_____/ \___/ \____|_| |_|_|\___/ \_||_|\____|\____)_|    
                                                          
        
    [INFO] | Downloading Balloon.
   [ERROR] | Missing the train-annotations-bbox.csv file.
[DOWNLOAD] | Do you want to download the missing file? [Y/n] y
...100%, 1138 MB, 5640 KB/s, 206 seconds passed
[DOWNLOAD] | File train-annotations-bbox.csv downloaded into OID/csv_folder/train-annotations-bbox.csv.

-----------------------------------------------------------------------Balloon-----------------------------------------------------------------------
    [INFO] | Downloading train images.
    [INFO] | [INFO] Found 3262 online images for train.
    [INFO] | Limiting to 400 images.
    [INFO] | Download of 400 images in train.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████| 400/400 [06:15<00:00,  1.07it/s]
    [INFO] | Done!
    [INFO] | Creating labels for Balloon of train.
    [INFO] | Labels creation completed.
    [INFO] | Downloading Airplane.

-----------------------------------------------------------------------Airplane-----------------------------------------------------------------------
    [INFO] | Downloading train images.
    [INFO] | [INFO] Found 12003 online images for train.
    [INFO] | Limiting to 400 images.
    [INFO] | Download of 400 images in train.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████| 400/400 [04:34<00:00,  1.46it/s]
    [INFO] | Done!
    [INFO] | Creating labels for Airplane of train.
    [INFO] | Labels creation completed.

2.2 数据预处理

下载后的数据存储在文件夹OID/Dataset/train/,每个类别的文件包括对应的image和label。
对应的label为txt文件,打开后为:

Airplane 48.0 268.23846499999996 972.8 561.4438100000001

对应的四个数值分别为:XMin, XMax, YMin, YMax。

目前的label格式并不能直接拿来在Darknet中进行训练,需对其进行转换为YOLO接受的格式。

  1. 打开classes.txt,将里面的内容改为需要转换的类别。
    在本例中,将其改为:
Airplane
Balloon
  1. 运行指令python convert_annotations.py,转换label格式。
    代码如下:
import os
import cv2
import numpy as np
from tqdm import tqdm
import argparse
import fileinput

# function that turns XMin, YMin, XMax, YMax coordinates to normalized yolo format
def convert(filename_str, coords):
    os.chdir("..")
    image = cv2.imread(filename_str + ".jpg")
    coords[2] -= coords[0]
    coords[3] -= coords[1]
    x_diff = int(coords[2]/2)
    y_diff = int(coords[3]/2)
    coords[0] = coords[0]+x_diff
    coords[1] = coords[1]+y_diff
    coords[0] /= int(image.shape[1])
    coords[1] /= int(image.shape[0])
    coords[2] /= int(image.shape[1])
    coords[3] /= int(image.shape[0])
    os.chdir("Label")
    return coords

ROOT_DIR = os.getcwd()

# create dict to map class names to numbers for yolo
classes = {}
with open("classes.txt", "r") as myFile:
    for num, line in enumerate(myFile, 0):
        line = line.rstrip("\n")
        classes[line] = num
    myFile.close()
# step into dataset directory
os.chdir(os.path.join("OID", "Dataset"))
DIRS = os.listdir(os.getcwd())

# for all train, validation and test folders
for DIR in DIRS:
    if os.path.isdir(DIR):
        os.chdir(DIR)
        print("Currently in subdirectory:", DIR)
        
        CLASS_DIRS = os.listdir(os.getcwd())
        # for all class folders step into directory to change annotations
        for CLASS_DIR in CLASS_DIRS:
            if os.path.isdir(CLASS_DIR):
                os.chdir(CLASS_DIR)
                print("Converting annotations for class: ", CLASS_DIR)
                
                # Step into Label folder where annotations are generated
                os.chdir("Label")

                for filename in tqdm(os.listdir(os.getcwd())):
                    filename_str = str.split(filename, ".")[0]
                    if filename.endswith(".txt"):
                        annotations = []
                        with open(filename) as f:
                            for line in f:
                                for class_type in classes:
                                    line = line.replace(class_type, str(classes.get(class_type)))
                                labels = line.split()
                                coords = np.asarray([float(labels[1]), float(labels[2]), float(labels[3]), float(labels[4])])
                                coords = convert(filename_str, coords)
                                labels[1], labels[2], labels[3], labels[4] = coords[0], coords[1], coords[2], coords[3]
                                newline = str(labels[0]) + " " + str(labels[1]) + " " + str(labels[2]) + " " + str(labels[3]) + " " + str(labels[4])
                                line = line.replace(line, newline)
                                annotations.append(line)
                            f.close()
                        os.chdir("..")
                        with open(filename, "w") as outfile:
                            for line in annotations:
                                outfile.write(line)
                                outfile.write("\n")
                            outfile.close()
                        os.chdir("Label")
                os.chdir("..")
                os.chdir("..")
        os.chdir("..")

转换后生成的文件在image目录,打开后为:

0 0.56421875 0.5209378333333333 0.86875 0.339166

其中,0对应之前classes.txt中的类别,对应的数字为转换后的标准化数据格式

3.将数据导入至Darknet

  1. 打开Darknet的data文件夹,创建文件夹obj;
  2. 将下载的数据按照步骤2进行转换,并将其拷贝至obj文件夹,并把对应类别classes.txt拷贝到data文件夹下;
  3. 创建.data文件,根据数据集修改classes,train文件路径,valid文件路径,names文件路径,backup文件路径;
  4. 新建python文件generate_train.py,代码如下:
import os

image_files = []
os.chdir(os.path.join("data", "obj"))
for filename in os.listdir(os.getcwd()):
    if filename.endswith(".jpg"):
        image_files.append("data/obj/" + filename)
os.chdir("..")
with open("train.txt", "w") as outfile:
    for image in image_files:
        outfile.write(image)
        outfile.write("\n")
    outfile.close()
os.chdir("..")
  1. 执行指令python generate_train.py,在./data文件夹下会生成train.txt文件。
Open Images V7 数据集介绍 Open Images是由谷歌发布的一个开源图片数据集,在2022年10月份发布了最新的V7版本。这个版本的数据集包含了900多万张图片,都有类别标记。 阅读详情

相关推荐

用Fiftyone下载OpenImage Datasetv6数据集

openimage下载数据集

qq_45828295的博客 2854

目标检测数据集:Open Images Dataset V6 + Extensions 网站获取已经标注好的数据集

Open Images Dataset 网站获取已经标注好的数据集一、简介二、数据集说明1.查看数据集2.搜索选项三、数据集下载和使用1.数据集下载2.下载失败3.从谷歌云盘中下载数据4.转化成数据集所需格式 一、简介   Open Images Dataset是一个可以提供免费数据集的网站,里面的数据集提供了目标检测任务、语义分割任务的标签,可以减少我们搜集数据的压力。网址是(需要科学上网): 二、数据集说明   我们以获取目标检测数据集为例,对于方框中的一个物体,我们记录的是这个方框的左上角坐标(x1

AI Chen的博客 8126

WiderPerson数据集转YOLO格式:从XML到TXT的完整转换指南与避坑技巧

在计算机视觉领域,目标检测是识别和定位图像中特定对象的核心任务,其技术价值在于为自动驾驶、安防监控和智能零售等应用场景提供关键感知能力。数据集格式转换是模型训练前的重要预处理步骤,直接影响模型的收敛速度和最终性能。本文将聚焦于行人检测这一具体应用,深入解析如何将广泛使用的WiderPerson数据集从其原生PASCAL VOC XML格式,高效、准确地转换为YOLO系列模型所需的TXT格式。这一过程涉及坐标归一化、类别ID映射、脏数据处理等关键技术细节,是确保YOLO模型能够充分利用WiderPerson数

anjichan4261的博客 490

Open Image 数据集简介

Google 又放出了一个大新闻: Open Image 图像数据集,包含 900 万张机器标注的 image-level 的图像数据。数据基本来自 flickr,其中验证集经过了人工检校。

Simon's Blog 4万+

手把手教你用Anaconda+Pycharm搞定YOLO-FastestV2环境(附CUDA 11.4避坑指南)

本文详细介绍了如何使用Anaconda和PyCharm搭建YOLO-FastestV2开发环境,包括CUDA 11.4的安装避坑指南。从虚拟环境创建、PyTorch特定版本安装到数据集构建和模型训练,提供全流程实战指导,帮助开发者高效完成目标检测项目的环境配置与模型部署。

weixin_30520015的博客 486

YOLO目标检测实战:从环境搭建到模型部署全流程指南

目标检测是计算机视觉的核心任务,旨在识别图像中物体的类别并定位其位置。其核心原理在于通过深度学习模型对图像进行特征提取与回归分析,实现端到端的预测。这项技术的核心价值在于平衡速度与精度,为实时应用提供可能。在众多实现方案中,YOLO(You Only Look Once)系列算法因其独特的单阶段检测架构脱颖而出,它将检测任务重构为单一的回归问题,通过单次前向传播即可输出边界框、置信度及类别信息,显著提升了推理效率。这使得YOLO在自动驾驶、视频监控、工业质检等对实时性要求高的应用场景中成为首选。本文聚焦于Y

weixin_34268579的博客 341

Open Images Dataset V4 Train - Valid - Test 解析为 Darknet-YOLO 训练数据 (backpack-handbag-suitcase)

Open Images Dataset V4 Train - Valid - Test 解析为 Darknet-YOLO 训练数据 (backpack-handbag-suitcase) 1. Backpack - Handbag - Suitcase # category_id = '/m/01940j' - Backpack - 0 # category_id = '/m/080hkjn' - Handbag - 1 # category_id = '/m/01s55n' - Suitcase - 2

程永强 880

YOLO数据格式解析与转换实战:从VOC/COCO到TXT的精准处理

目标检测是计算机视觉的核心任务,其关键在于如何让模型理解图像中物体的位置与类别。数据标注格式作为连接原始图像与模型的桥梁,直接决定了模型能否正确学习。常见的格式如PASCAL VOC的XML和COCO的JSON,分别以结构化文档和中心化数据库的形式存储信息,便于人类阅读与大规模管理。而YOLO系列算法采用的TXT格式则体现了极简高效的工程哲学,它将边界框坐标归一化,直接对应模型输入,极大提升了训练效率。在实际项目中,数据往往以VOC或COCO格式标注,必须准确转换为YOLO格式才能用于训练。转换的核心在于坐

weixin_34138056的博客 356

caffe fcn训练自己数据集_如何用自己的数据训练YOLOv3

1. 引言YOLO自诞生以来,每个版本都会引起学术界和工业界的极大关注。在工业界,即使精度稍差,YOLO往往也会比一些Two-Stage的目标检测器更受青睐,因为它是真的很快,完全能满足实时性的应用要求。YOLO最新的版本是YOLOv3,主要改进是提升了小目标检测的效果。YOLOv3官方的权重是在COCO数据集上训练的,总共有80类目标,但是在实际应用中,我们往往需要检测特定的目标。比如在自动驾驶...

weixin_26716079的博客 269

Open Images V6数据集:基于YOLOv5的目标检测与分类应用

Open Images V6是一个大型的、多类别的图像数据集,包含了来自多个领域的图像,并且每张图像都包含了多种物体的标注信息。它是目前最具挑战性的目标检测数据集之一,涵盖了从常见的动物、交通工具、日常用品到更为罕见的物体,几乎可以满足各类目标检测任务的需求。本文介绍了如何使用YOLOv5在Open Images V6数据集上进行目标检测任务。通过数据预处理、模型训练、评估和UI界面的实现,我们成功地实现了一个基于YOLOv5的目标检测应用。

YOLO 480

YOLO苹果目标检测实战:从数据集准备到模型训练与部署

目标检测是计算机视觉的核心任务之一,旨在识别图像中特定物体的位置和类别。其原理通常基于深度学习模型,通过卷积神经网络提取特征,并预测边界框和类别概率。这项技术的价值在于能够自动化完成识别与定位,极大地提升了在安防、自动驾驶、工业质检等场景的效率。在实际工程中,数据准备是模型成功的关键,涉及数据标注、格式转换与科学划分。本文围绕一个开箱即用的苹果检测数据集资源包展开,详细解析了VOC、COCO和YOLO三种主流标注格式的差异与应用场景,并提供了基于YOLOv8的完整训练、验证与部署流程,帮助开发者快速上手并规

weixin_33834628的博客 478

2024年目标检测数据集大合集所有下载地址汇总

数据集名称下载地址 瓷砖瑕疵检测数据集VOC+YOLO标注.zip点我下载 道路路标交通标志检测数据集VOC+YOLO格式877张4类别.zip点我下载 钢材缺陷检测数据集VOC+YOLO格式386张5类别.7z点我下载 中国交通标志检测数据集VOC+YOLO格式5998张58类别.7z点我下载 道路交通事故检测数据集VOC+YOLO格式11819张2类别.7z点我下载 钢丝绳破损灼伤缺陷检测数据集VOC+YOLO格式1318张2类别.7z点我下载 公共场所危险物品检测数据集VOC+YOLO格式1431

FL1623863129的博客 7159

基于YOLO的PCB缺陷检测数据集构建与模型训练全流程指南

目标检测是计算机视觉的核心任务之一,其原理是通过算法自动识别图像中特定目标的位置和类别。在工业自动化领域,这项技术能极大提升质检效率与一致性,具有显著的技术价值。PCB(印刷电路板)的自动光学检测(AOI)是目标检测的典型应用场景,而高质量的数据集是模型性能的基石。本文聚焦于一个开箱即用的PCB专用YOLO数据集,详细解析其包含的VOC、COCO和YOLO三种标注格式,并提供了从数据准备、模型训练到调优部署的完整工程实践路径。通过融入数据增强和模型剪枝等关键技术,旨在帮助工程师快速构建鲁棒的PCB元件识别与

weixin_34054866的博客 367

YOLO目标检测算法:原理、演进与实战部署指南

目标检测作为计算机视觉的核心任务,其核心思想是在图像中定位并识别特定对象。YOLO(You Only Look Once)算法通过将检测任务重构为单次神经网络预测,实现了速度与精度的突破性平衡。该技术采用网格化预测机制,每个单元同时回归边界框坐标和类别概率,这种端到端架构显著提升了推理效率,特别适合实时视频分析等场景。从技术实现看,YOLO通过损失函数统一优化定位与分类任务,其预测值包含目标置信度和归一化坐标信息。随着版本迭代,YOLO系列相继引入锚框机制、多尺度预测、自对抗训练等创新,最新版本甚至实现了完

ctpaknc9526的博客 348

笔记本电脑目标检测数据集:VOC+YOLO双格式实战指南

目标检测是计算机视觉落地的核心任务,其效果高度依赖高质量标注数据与规范格式。VOC格式保留完整结构化信息(如truncated、difficult等工业级字段),YOLO格式则适配主流训练框架的归一化坐标要求;二者兼容可显著降低格式转换错误风险,提升小目标(如USB接口)检测精度。该类数据集在智能仓储分拣、IT资产盘点、二手验机等真实产线场景中具备直接工程价值,尤其适合YOLO系列模型的快速验证与轻量化部署。本文围绕3524张多场景笔记本图像,详解双格式设计原理、坐标转换陷阱、训练避坑要点及跨域增强路径。

weixin_34008933的博客 354

月球火星陨石坑数据集:多格式标签与YOLO/MMDetection实战指南

目标检测是计算机视觉的核心任务,其原理是通过算法在图像中定位并识别出感兴趣的目标。这项技术的价值在于能够自动化处理海量视觉数据,广泛应用于自动驾驶、遥感分析和工业质检等领域。在实际工程中,数据标注格式的多样性,如VOC XML、YOLO TXT和COCO JSON,常成为跨框架模型训练与迁移的障碍。针对天体地质和行星科学等特定应用场景,一份同时包含上述三种格式的标注数据集能极大提升开发效率。本文以一份包含1287张图像的月球火星陨石坑数据集为例,深入解析其多格式标签的设计如何解决框架兼容性问题,并详细演示了

weixin_33824363的博客 375

Roboflow实战:一站式解决CV数据格式混乱与标注难题,提升模型训练效率

在计算机视觉项目中,高质量的数据集是模型成功的基石。数据标注与格式转换是核心痛点,涉及目标检测、实例分割等任务。传统方法需手动处理YOLO、COCO、VOC等多种格式,过程繁琐且易错。通过数据运维(DataOps)理念,可实现数据接入、标注、增强、版本管理的流程化与自动化,从而提升数据质量与实验可复现性。Roboflow作为一站式平台,集成了智能标注与自动化格式转换功能,支持超过30种数据集格式,并能自动生成可直接用于PyTorch、TensorFlow等框架的训练配置文件。该工具尤其适用于需要快速处理混合

450

煤气罐检测数据集构建与应用:面向智慧安防的YOLO/VOC/JSON多格式实战

目标检测是计算机视觉的核心任务之一,旨在识别图像中特定物体的位置与类别。其技术原理通常基于深度学习模型,通过卷积神经网络提取特征并回归边界框坐标。在智慧社区、工业安全等应用场景中,针对特定目标的精准检测具有重要价值,例如煤气罐违规存放的识别。本文围绕一个精心构建的煤气罐检测数据集展开,该数据集针对社区安防场景,提供了涵盖多种遮挡、光照和小目标挑战的真实图像。为提升工程易用性,数据集同时提供了VOC、YOLO和JSON三种主流标签格式,无缝支持从YOLOv8等前沿检测器训练到业务系统集成的全流程,有效解决了通

weixin_30600197的博客 329
上一篇: (日常搬砖)Linux常用指令记录(更新ing)
下一篇: 【Mac OS相关】Mac OS 从终端进入u盘/移动硬盘
Philharmy_Wang
博客等级 码龄8年 10粉丝 13原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值