当前位置: 首页 > news >正文

花卉目标检测数据集介绍(共 12 类,10490 张图像)

在计算机视觉与智能农业快速发展的背景下,基于深度学习的花卉识别与检测技术正被广泛应用于植物分类、智能园艺、自动监测与生态研究等多个领域。为了推动花卉类目标检测任务的发展,本文介绍一个包含 12 种常见花卉类别的目标检测数据集,总计 10,490 张图像,每张图像均已进行精准的目标框标注。

一、数据集概览

本数据集旨在支持基于 YOLO、Faster R-CNN、SSD 等主流算法的目标检测训练,覆盖自然环境下的野外与花园拍摄场景,具有良好的多样性和泛化能力。

  • 📊 图像总数:10,490 张

  • 🏷 目标类别数:12 类

  • 📁 标注格式:YOLO 格式、VOC 格式、Json格式

标注后的数据集如下所示:

二、数据标注说明

该数据集包含12种花卉类别,并提供了三种格式的标签,分别为json、xml和YOLO格式。在json和xml标签中,标签名称为英文。在yolo标签中,标签名字为从0开始的阿拉伯数字。其中类别编号与中英文名称的对应关系如下表所示:

类别编号英文名称中文名称
0Allium葱属植物(如洋葱花)
1Borage琉璃苣(星形花)
2Burdock牛蒡花
3Calendula金盏花
4Chicory菊苣
5Chive_blossoms韭菜花
6Coltsfoot款冬花
7Common_yarrow蓍草(欧蓍草)
8Coneflower紫锥菊
9Cow_parsley伞形花(野胡萝卜)
10Dandelion蒲公英
11Gardenia栀子花

三、数据集划分

        下面代码主要作用是将原始数据集按比例划分为训练集、验证集和测试集,并分别保存对应的图像和YOLO格式标签文件。具体过程如下:

  1. 读取数据源路径:程序首先定义了包含所有图像和YOLO标签的原始路径。
  2. 获取图像列表并打乱顺序:通过读取图像文件名列表并使用 random.shuffle() 随机打乱,实现数据的随机分布。
  3. 按照7:2:1的比例划分数据集:分别确定训练集、验证集和测试集的数量,并获取对应文件名。(可自行地定义划分比例)
  4. 创建目标文件夹并复制文件:程序依次为训练集、验证集和测试集创建对应的图像与标签保存路径,并将图像文件和标签文件分别复制过去。
import os
import random
import shutilroot_dir = r"./data_sum"
save_root_dir = r"./data_split"image_sum_dir = os.path.join(root_dir, "images")
label_yolo_sum_dir = os.path.join(root_dir, "labels_yolo")# 获取文件夹下所有图片名称
image_list = os.listdir(image_sum_dir)
image_list = [name for name in image_list if name.endswith(".jpg")]# 随机打乱文件名列表
random.shuffle(image_list)# 划分训练集和验证集
train_ratio = 0.7
val_ratio = 0.2
test_ratio = 0.1num_images = len(image_list)
num_train = int(num_images * train_ratio)
num_val = int(num_images * val_ratio)
num_test = num_images - num_train - num_val
print("num_images:{}  num_train:{}  num_val:{}  num_test:{}".format(num_images, num_train, num_val, num_test))# 获取训练集和验证集名字
train_names = image_list[:num_train]
val_names = image_list[num_train: num_train + num_val]
test_names = image_list[num_train + num_val: num_images]# 训练集图片及标签保存路径
save_train_images_path = os.path.join(save_root_dir, "images", "train")
save_train_labels_path = os.path.join(save_root_dir, "labels", "train")if not os.path.exists(save_train_images_path):os.makedirs(save_train_images_path)if not os.path.exists(save_train_labels_path):os.makedirs(save_train_labels_path)for name in train_names:# 图像image_path = os.path.join(image_sum_dir, name)label_path = os.path.join(label_yolo_sum_dir, name.split(".jpg")[0] + ".txt")assert os.path.exists(image_path), "file:{} not exist ...".format(image_path)assert os.path.exists(label_path), "file:{} not exist ...".format(label_path)shutil.copy(image_path, save_train_images_path)shutil.copy(label_path, save_train_labels_path)# 验证集图片及标签保存路径
save_val_images_path = os.path.join(save_root_dir, "images", "val")
save_val_labels_path = os.path.join(save_root_dir, "labels", "val")if not os.path.exists(save_val_images_path):os.makedirs(save_val_images_path)if not os.path.exists(save_val_labels_path):os.makedirs(save_val_labels_path)for name in val_names:# 图像image_path = os.path.join(image_sum_dir, name)label_path = os.path.join(label_yolo_sum_dir, name.split(".jpg")[0] + ".txt")assert os.path.exists(image_path), "file:{} not exist ...".format(image_path)assert os.path.exists(label_path), "file:{} not exist ...".format(label_path)shutil.copy(image_path, save_val_images_path)shutil.copy(label_path, save_val_labels_path)# 测试图片及标签保存路径
save_test_images_path = os.path.join(save_root_dir, "images", "test")
save_test_labels_path = os.path.join(save_root_dir, "labels", "test")if not os.path.exists(save_test_images_path):os.makedirs(save_test_images_path)if not os.path.exists(save_test_labels_path):os.makedirs(save_test_labels_path)for name in test_names:# 图像image_path = os.path.join(image_sum_dir, name)label_path = os.path.join(label_yolo_sum_dir, name.split(".jpg")[0] + ".txt")assert os.path.exists(image_path), "file:{} not exist ...".format(image_path)assert os.path.exists(label_path), "file:{} not exist ...".format(label_path)shutil.copy(image_path, save_test_images_path)shutil.copy(label_path, save_test_labels_path)

 本文数据集是在一些网站上搜集的,由于搜集的图片大多不带标注,自己进行了准确地标注,识别效果良好。如有需求,请支持。数据集链接——12类花卉目标检测数据集


文章转载自:

http://Ir56pwRb.ddzqx.cn
http://WYbEORJr.ddzqx.cn
http://t1uYSaCh.ddzqx.cn
http://zf5m6hr1.ddzqx.cn
http://B4VbtbL5.ddzqx.cn
http://t8HDtYtM.ddzqx.cn
http://zvMzr85X.ddzqx.cn
http://PKyJNzrm.ddzqx.cn
http://fMrStIpu.ddzqx.cn
http://GPysqPiA.ddzqx.cn
http://7ahWcd2H.ddzqx.cn
http://fPtUSTJP.ddzqx.cn
http://7fwqJQhn.ddzqx.cn
http://ELDbWc5n.ddzqx.cn
http://AJfkLyUO.ddzqx.cn
http://xIESElkf.ddzqx.cn
http://E1n9jT5Q.ddzqx.cn
http://KJ8GnVSZ.ddzqx.cn
http://sRgO3H8d.ddzqx.cn
http://koqYxRBs.ddzqx.cn
http://HxiNxU1D.ddzqx.cn
http://AtbuvSIa.ddzqx.cn
http://7BIDwxcP.ddzqx.cn
http://qNjkbGmz.ddzqx.cn
http://Uk134dbM.ddzqx.cn
http://AK8czj10.ddzqx.cn
http://Pb9xV4lM.ddzqx.cn
http://F29eO56u.ddzqx.cn
http://lW3oyOsF.ddzqx.cn
http://jhi8cGWT.ddzqx.cn
http://www.dtcms.com/a/227504.html

相关文章:

  • ⚡️ Linux grep 命令参数详解
  • JavaSE 字符串:深入解析 String、StringBuilder与 StringBuffer
  • Playwright 测试框架 - Node.js
  • 【算法】分支限界
  • 第二章 AI大模型接入
  • 【仿muduo库实现并发服务器】使用正则表达式提取HTTP元素
  • 密码学:解析Feistel网络结构及实现代码
  • SCAU8642--快速排序
  • 本地部署 DeepSeek R1(最新)【从下载、安装、使用和调用一条龙服务】
  • 迅速止痒的4个方法: 冷敷、冰敷、炉甘石洗剂、薄荷膏
  • Python基础入门:开启编程之旅
  • Python----目标检测(使用YOLO 模型进行线程安全推理和流媒体源)
  • 腾答知识竞赛系统功能介绍
  • PyTorch——卷积层(3)
  • 2025年5月24日系统架构设计师考试题目回顾
  • Windows环境下Scoop包管理工具的全面指南
  • 数智管理学(十六)
  • 计算机视觉NeRF
  • 在Linux中配置内网可访问的YUM光盘源
  • Docker安装Redis集群(3主3从+动态扩容、缩容)保姆级教程含踩坑及安装中遇到的问题解决
  • 一元函数积分
  • 给stm32cubeide编译出来的bin文件追加crc32
  • 领域驱动设计(Domain-Driven Design, DDD)
  • 监控 100 台服务器磁盘内存CPU利用率
  • 使用nhdeep档案管理系统单机版,创建归档文件目录打印文件
  • 2025/6月最新Cursor(0.50.5版本)一键自动更换邮箱无限续杯教程
  • Python中使用pandas
  • P5684 [CSP-J2019 江西] 非回文串 题解
  • 使命召唤16:现代战争 MOD整合包 豪华中文 免安 离线运行版
  • MySQL指令个人笔记