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

article/2025/6/27 2:04:43

在计算机视觉与智能农业快速发展的背景下,基于深度学习的花卉识别与检测技术正被广泛应用于植物分类、智能园艺、自动监测与生态研究等多个领域。为了推动花卉类目标检测任务的发展,本文介绍一个包含 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://www.hkcw.cn/article/XYjqnZAMbW.shtml

相关文章

linux学习第18天(fork函数)

pid_t fork(void):创建一个子进程 成功:父进程返回子进程pid 子进程返回0(创建成功) 失败:-1 getpid/getppid 举个例子,顺便演示getpid和getppid 子进程只能执行fork之后的代码,并且同时争夺c…

Pycharm的终端无法使用Anaconda命令行问题详细解决教程

很多初学者在Windows系统上安装了Anaconda后,在PyCharm终端中运行Conda命令时,会遇到以下错误: conda : 无法将“conda”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。 请检查名称的拼写,如果包括路径,请确保…

关税政策推进受阻 特朗普政府求助上诉法院

当地时间6月2日,美国特朗普政府请求联邦上诉法院阻止此前哥伦比亚特区联邦地区法院裁定其关税政策“违法”的命令。当地时间5月29日,位于首都华盛顿的哥伦比亚特区联邦地区法院就特朗普政府依据《国际紧急经济权力法》对多国加征的关税措施发布初步禁令。该裁决针对美国两家小…

如何看待乌称摧毁大量俄战略轰炸机 俄方反驳称战果夸大

乌克兰国家安全局6月1日在社交媒体上宣布,对位于西伯利亚地区的俄罗斯轰炸机基地进行了袭击。乌方表示,此次行动目标精准,约34%的俄罗斯战略轰炸机遭到攻击,俄方战略航空兵损失高达70亿美元。行动由乌克兰总统泽连斯基亲自协调,安全局局长马柳克率队实施。泽连斯基高度评价…

刘若钒:很遗憾因伤不能和大家一起并肩战斗了,兄弟们加油 伤病阻挡国家队梦想

北京时间6月2日,中国男足公布了出征印尼客场的25人名单,刘若钒因伤未能入选。刘若钒在社交媒体上表达了遗憾:“重回国家队是对我这半年在海港表现的认可,但很遗憾因伤不能和大家一起并肩战斗了。”他同时表示,为国家队比赛一直是他的梦想,希望队友们加油,为中国队助威。…

俄乌谈判草草结束 细看条件都够狠 双方态度强硬

乌克兰在发动无人机袭击后,与俄罗斯在土耳其进行了第二轮和谈。谈判持续了大约一个小时便匆匆结束。土耳其方面表示,谈判以“非消极”的方式结束。5月16日进行了第一轮谈判,6月2日进行了第二轮谈判。预计第三轮谈判将在两周后进行,期间双方可能还会继续交战。双方态度都十分…

山东10岁失联男孩确认溺水身亡 搜救努力未果

6月2日,滕州市公安局发布警情通报。5月31日22时35分许,孔某某报警称其外孙赵某某(10岁)于当日17时许离家后失联。接警后,公安机关迅速调阅监控、走访群众,并联合当地政府和社会救援力量,采用搜救警犬和无人机等手段持续开展搜寻。6月2日15时许,在邻村一河道内发现赵某某…

PID项目-记事本不显示下划线

在安装安装keil5的插件的时候想要更改路径,用记事本打开的时候下划线都不见了,使用缩放,把100%缩放成90%就又出现了

AIGC工具平台-GPT-SoVITS-v4-TTS音频推理克隆

声音克隆与语音合成的结合,是近年来生成式AI在多模态方向上的重要落地场景之一。随着预训练模型能力的增强,结合语音识别、音素映射与TTS合成的端到端系统成为初学者可以上手实践的全流程方案。 围绕 GPT-SoVITS-v4-TTS 模块,介绍了其在整合…

Cherry Studio 和 Dify 如何接入MCP 服务

这里以魔搭社区的MCP 广场为例,进行介绍 一、Cherry Studio 接入 MCP服务教程 1. 第一步:访问魔搭社区官网 魔搭社区官网 点击上方链接进入魔搭社区官网后,点击MCP广场。 2.第二步:选择要接入的MCP服务(这里以 ‘今天吃什么’ 为例) 点击图中标注的连接,然后点击下…

微服务 Feign相关

1.feign 调用超时控制逻辑 openfign 中配置默认的链接时间是 10S 读取时间是60S 可以在YML文件中修改配置 spring: cloud:nacos:server-addr: 127.0.0.1:8848config:namespace: 51d656b5-cfe8-4cd0-95ad-91811cd88dc6#openfeign 相关配置openfeign:client:config: # …

一键解决Github无法访问或时断时续的问题-Linux环境

创建脚本github_host.sh vi github_host.sh 按i插入文本,将下面一段内容复制进去 #!/bin/bashhosts_path/etc/hosts # 系统 hosts 保存路径 hosts_path_bak/etc/hosts.bak # 系统 hosts 备份路径# 备份 hosts echo "########## 备份 $hosts_path 到 $…

关于海洋数据上云的一些机遇与挑战

知识星球:数据书局。打算通过知识星球将这些年积累的知识、经验分享出来,让各位在数据治理、数据分析的路上少走弯路,另外星球也方便动态更新最近的资料,提供各位一起讨论数据的小圈子 1. 摘要 海洋观测技术的革新以及数据模型…

高效微调方法简述

高效微调简述 一、微调与RAG的区别: 针对成本和性价比选择RAG或微调,那他们适用的范围和区别要提前了解; 形象的描述预训练、微调、提示工程、Agents: 微调流程: 数据保密那就是私域微调,否则就可以线上…

通用优势估计函数(GAE,Generalized Advantage Estimation)详解

强化学习中用于估计优势函数的核心技术,由Schulman等人于2016年提出。核心作用是在强化学习中,用单一可调参数(λ)平衡偏差与方差,为策略梯度算法(如PPO、TRPO、A2C)提供稳定、高效的优势函数估…

Java从入门到精通 - 常用API(一)

常用 API 此笔记参考黑马教程,仅学习使用,如有侵权,联系必删 文章目录 常用 API1. 包代码演示 2. String2.1 String 概述代码演示总结 2.2 String 的常用方法代码演示 2.3 String 使用时的注意事项第一点第二点代码演示 总结题目 2.4 String…

n8n部署工作流websecscan-ai-powered-website-security-auditor

人工智能驱动的网站安全审计工作流 此 n8n 工作流程利用DeepSeek V3的模型检测漏洞、配置问题和安全配置错误,提供全面的网站安全分析。该工作流程生成专业的 HTML 安全报告,并直接通过 QQ邮箱 发送。 1.主要特点 双层安全分析:使用专门的…

TC3xx学习笔记-启动过程详解(一)

文章目录 前言Firmware启动过程BMHD Check流程ABM启动Internal Flash启动Bootloader ModeProcessing in case no valid BMHD foundProcessing in case no Boot Mode configured by SSW 总结 前言 之前介绍过UCB BMHD的使用,它在启动过程中起着重要的作用&#xff0…

Docker 镜像制作

目录 镜像制作及原因 快照方式制作镜像 Dockerfile 制作镜像 为什么需要 Dockerfile Dockerfile 指令 常见问题 镜像制作及原因 镜像制作是因为某种需求,官方的镜像无法满足需求,需要我们通过一定手段来自定义镜像来满足要求。 制作镜像往往因为以…

模块二:C++核心能力进阶(5篇) 篇一:《STL源码剖析:vector扩容策略与迭代器失效》

一、前言:重新认识vector的复杂性 在C开发者中,std::vector常被视为"动态数组"的简单实现,但其底层机制实则蕴含着深刻的工程智慧。本篇将通过: 多维度源码剖析(GCC/Clang/MSVC三平台实现对比)…