【花卉分类实战】22 组深度学习数据集介绍(附加载预处理代码)
花卉识别与分类是计算机视觉领域的经典任务,在园艺管理、生态监测、智能识别系统开发等场景中应用广泛。高质量的标注数据集是提升花卉分类模型精度的核心支撑,本次整理并分享 22 组覆盖小类别分类、大规模物种分类、专项场景(颜色 / 品种 / 真假花区分) 的花卉图像数据集,同时附上可直接运行的 Python 加载与预处理代码,方便科研学习与项目落地。
·
花卉识别与分类是计算机视觉领域的经典任务,在园艺管理、生态监测、智能识别系统开发等场景中应用广泛。高质量的标注数据集是提升花卉分类模型精度的核心支撑,本次整理并分享 22 组覆盖小类别分类、大规模物种分类、专项场景(颜色 / 品种 / 真假花区分) 的花卉图像数据集,同时附上可直接运行的 Python 加载与预处理代码,方便科研学习与项目落地。
一、 小类别花卉分类数据集(5-16 类)
这类数据集类别数量少、单类别样本充足,适合入门级花卉分类模型训练,或特定花卉品类的识别任务。
- 16 种常见花卉图像数据集数据说明:包含落新妇、风铃草、康乃馨、普通雏菊等 16 种花卉,共 15.7K 张照片,覆盖多种常见园艺花卉。适用场景:入门级花卉分类模型训练、园艺花卉快速识别。

- 5 种常见花卉类型分类数据集数据说明:涵盖百合、莲花、向日葵、兰花、郁金香 5 类,每类 1000 张图片,样本分布均衡。适用场景:花卉分类算法入门验证、单一品类识别模型优化。

- 7 种常见花卉图片数据集数据说明:包含雏菊、蒲公英、百合、兰花、玫瑰、向日葵、郁金香 7 类,共 11531 张图片,按 70:20:10 划分为训练、验证、测试集。适用场景:深度学习模型全流程训练验证、数据增强效果对比实验。

- 包含 5 种常见花的花卉数据集数据说明:含雏菊、蒲公英、玫瑰、向日葵、郁金香 5 类原始 JPEG 图像,共 3670 张,配套测试集提交模板与样本 CSV 文件。适用场景:花卉分类竞赛训练、模型预测结果提交验证。

- 包含标记的 4242 张花卉图像数据集数据说明:涵盖洋甘菊、郁金香、玫瑰、向日葵、蒲公英 5 类,每类约 800 张,图像分辨率 320×240,比例不统一。适用场景:复杂分辨率下的模型鲁棒性测试、小分辨率图像分类任务。

- 10 类常见花卉图像数据集数据说明:包含郁金香、兰花、牡丹、绣球花等 10 类,共 733 张照片,标签可直接从图像名称提取。适用场景:轻量级分类模型开发、移动端花卉识别应用部署。

- 玫瑰、百合、向日葵、薰衣草、雏菊 + 5 种花卉分类数据集数据说明:共 10 类花卉,新增紫苑、爱瑞丝、万寿菊等 5 类,每类含 1500 张训练图、500 张验证图,配套 TFRecords 格式文件。适用场景:TensorFlow 框架下的大规模模型训练、迁移学习预训练。

二、 中大规模花卉分类数据集(102-900 类)
这类数据集覆盖物种多、样本量大,适合训练高精度、泛化能力强的花卉分类模型,或用于跨物种识别研究。
- 102 种常见花卉图像数据集(英国物种版)数据说明:涵盖英国常见的 102 类花卉,每类 40-258 张图片,图像存在比例、姿态、光线差异,类内多样性高。适用场景:高精度花卉分类模型训练、类内差异鲁棒性研究。

- 102 种花卉图片数据集(通用版)数据说明:含 102 类花卉共 8198 张照片,分为 train、test、val 三个子集,标签从 1 到 102 对应不同物种,如 pink primrose、blackberry lily 等。适用场景:花卉分类算法基准测试、多类别模型性能评估。

- 299 种花卉的图像汇编数据集数据说明:共 115944 张图像,涵盖 299 类花卉,平均分辨率 271×242 像素,每类平均 387 张样本,最少 222 张、最多 483 张。适用场景:超大规模花卉分类模型训练、物种多样性识别研究。

- 从图像中对花进行分类的数据集(102 类升级版)数据说明:含 102 类花卉共 18.5K 张照片,涵盖 Alpine sea holly、Anthurium、Bird of paradise 等物种,覆盖范围广。适用场景:跨地域花卉识别模型开发、稀有花卉物种分类研究。

- 有关 900 种不同花卉的信息数据集数据说明:涵盖 900 种花卉的照片、叶子、花期信息,共 21.4K 张照片,数据源自百万会员园艺社交平台,信息权威。适用场景:多模态花卉识别模型训练、植物学研究数据支撑。

- 用于大类分类的花卉图像数据集数据说明:102 类花卉数据集,由 Visual Geometry Group 提供,每类 40-258 张图片,类内差异大、类别相似度高。

- 适用于花卉识别系统的数据集数据说明:含雏菊、郁金香、玫瑰、向日葵、蒲公英 5 类,共 4394 张照片,适用于 MLP、CNN、AlexNet 等算法模型训练。

三、 专项花卉数据集(颜色 / 品种 / 真假区分)
这类数据集聚焦特定场景,适合针对性的模型训练任务,如颜色分类、品种鉴定、生成模型开发等。
- 两千张左右的花卉图片数据集数据说明:约 2K 张花卉图像,分辨率 360×360,涵盖不同形状、大小、颜色的花卉,样本多样性高。适用场景:花卉分类模型预训练、数据增强算法效果验证。

- 与花朵相关的多样化数据集数据说明:共 900 张花卉图像,样本类型丰富,支持生成模型与分类模型训练。适用场景:GAN 模型花卉图像生成、小样本花卉分类任务。

- 包含玫瑰(红色和黄色)图片的数据集数据说明:红玫瑰与黄玫瑰原始照片,共 72 张,无软件编辑,真实度高。适用场景:花卉颜色分类模型训练、玫瑰品种鉴定研究。

- 大丽花图像数据集数据说明:618 张不同大丽花品种图像,拍摄于不同光照、角度,每张图片附带品种、颜色、大小等元数据。适用场景:大丽花品种鉴定模型训练、植物学品种分类研究。

- 未编辑白色花朵图片的处理和分类数据集数据说明:含茉莉花、铃兰、雪花莲等 13 类白色花卉,共 514 张未编辑照片,图像按前缀标记类别。适用场景:白色花卉精细分类、花卉颜色特征提取研究。

- 内含 5341 张紫色花朵照片数据集数据说明:5341 张紫色花卉 JPG 格式照片,专为 DCGAN 模型训练打造,生成效果稳定。适用场景:紫色花卉图像生成、GAN 模型训练与优化。

- 程序生成的花卉仿真图像数据集数据说明:4943 张可编程生成的仿真花卉图像,有颜色和花瓣图案差异,无固定花瓣数量和大小。适用场景:GAN 模型属性研究、仿真图像与真实图像对比实验。

- 花与非花图片数据集数据说明:共 12.6K 张图像,分为花卉(FD 前缀)与非花卉(NFD 前缀)两类,每类约 6.3K 张。适用场景:花卉存在性检测模型训练、图像二分类任务验证。
四、 花卉数据集使用实操小技巧
- 数据预处理重点:针对不同分辨率的图像,先统一尺寸(建议 224×224 或 256×256);对光线不均的样本,可通过亮度、对比度调整增强鲁棒性。
- 模型选型建议:小类别分类优先用 ResNet50、MobileNetV2,兼顾精度与速度;大规模分类优先用 Vision Transformer(ViT),提升长距离特征提取能力;生成任务优先用 DCGAN、StyleGAN。
- 过拟合解决方法:小样本数据集可采用迁移学习,基于预训练模型微调;加入随机裁剪、翻转、旋转等数据增强手段;使用 Dropout 层或 L2 正则化抑制过拟合。
五、 技术实操:花卉数据集加载与预处理(附 Python 代码)
以下代码实现了花卉分类 / 生成数据集的核心加载与预处理功能,新手可直接复制运行。
第一步:环境准备
执行以下命令安装依赖库:
bash
运行
pip install opencv-python pillow torch torchvision numpy pandas
第二步:完整加载 + 预处理代码
python
运行
# ===================== 核心功能1:分类数据集加载(适配小/大规模花卉分类) =====================
import os
import numpy as np
from PIL import Image
from torch.utils.data import Dataset, DataLoader
from torchvision import transforms
class FlowerClassificationDataset(Dataset):
"""
加载花卉分类数据集(适配按类别分文件夹的花卉数据集)
"""
def __init__(self, data_root, transform=None):
# 16种常见花卉数据集查看地址
# https://www.dilitanxianjia.com/14756/
# 5种常见花卉类型分类数据集查看地址
# https://www.dilitanxianjia.com/14750/
# 7种常见花卉数据集查看地址
# https://www.dilitanxianjia.com/14741/
self.data_root = data_root
self.transform = transform
self.classes = sorted(os.listdir(data_root))
self.class_to_idx = {cls: idx for idx, cls in enumerate(self.classes)}
self.image_paths = []
self.labels = []
# 包含5种常见花的数据集查看地址
# https://www.dilitanxianjia.com/14735/
# 包含标记的4242张花卉图像数据集查看地址
# https://www.dilitanxianjia.com/14732/
# 遍历文件夹获取图像路径和标签
for cls in self.classes:
cls_dir = os.path.join(data_root, cls)
for img_name in os.listdir(cls_dir):
if img_name.endswith((".jpg", ".png", ".jpeg")):
self.image_paths.append(os.path.join(cls_dir, img_name))
self.labels.append(self.class_to_idx[cls])
# 10类常见花卉数据集查看地址
# https://www.dilitanxianjia.com/14665/
# 玫瑰+百合等10类花卉数据集查看地址
# https://www.dilitanxianjia.com/14656/
def __len__(self):
# 102种常见花卉(英国物种版)查看地址
# https://www.dilitanxianjia.com/14753/
# 102种花卉通用版数据集查看地址
# https://www.dilitanxianjia.com/14747/
return len(self.image_paths)
def __getitem__(self, idx):
# 299种花卉汇编数据集查看地址
# https://www.dilitanxianjia.com/14744/
# 从图像中对花分类(102类升级版)查看地址
# https://www.dilitanxianjia.com/14726/
img_path = self.image_paths[idx]
label = self.labels[idx]
img = Image.open(img_path).convert("RGB")
if self.transform:
img = self.transform(img)
# 900种花卉信息数据集查看地址
# https://www.dilitanxianjia.com/14702/
# 用于大类分类的102类花卉数据集查看地址
# https://www.dilitanxianjia.com/14784/
# 适用于花卉识别系统的数据集查看地址
# https://www.dilitanxianjia.com/14662/
return img, label
# 数据预处理变换
transform = transforms.Compose([
transforms.Resize((224, 224)),
transforms.RandomHorizontalFlip(),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
])
# 示例调用(替换为你的本地数据集路径)
# train_dataset = FlowerClassificationDataset(
# data_root="./flower_dataset/train",
# transform=transform
# )
# train_loader = DataLoader(train_dataset, batch_size=32, shuffle=True)
# print(f"分类数据集加载完成,共{len(train_dataset)}张图像,{len(train_dataset.classes)}个类别")
# ===================== 核心功能2:GAN生成数据集加载(适配紫色花/仿真花数据集) =====================
class FlowerGANDataset(Dataset):
"""
加载花卉生成模型数据集(适配无标签的花卉生成类数据集)
"""
def __init__(self, data_root, img_size=64):
# 两千张左右花卉图片数据集查看地址
# https://www.dilitanxianjia.com/14729/
# 与花朵相关的多样化数据集查看地址
# https://www.dilitanxianjia.com/14723/
self.data_root = data_root
self.img_size = img_size
self.image_paths = [os.path.join(data_root, f) for f in os.listdir(data_root)
if f.endswith((".jpg", ".png", ".jpeg"))]
# 红/黄玫瑰数据集查看地址
# https://www.dilitanxianjia.com/14720/
# 大丽花图像数据集查看地址
# https://www.dilitanxianjia.com/14714/
self.transform = transforms.Compose([
transforms.Resize((img_size, img_size)),
transforms.ToTensor(),
transforms.Normalize([0.5]*3, [0.5]*3) # 归一化到[-1,1],适配GAN训练
])
def __len__(self):
# 未编辑白色花朵数据集查看地址
# https://www.dilitanxianjia.com/14705/
# 紫色花朵数据集查看地址
# https://www.dilitanxianjia.com/14681/
return len(self.image_paths)
def __getitem__(self, idx):
# 程序生成花卉仿真数据集查看地址
# https://www.dilitanxianjia.com/14674/
img_path = self.image_paths[idx]
img = Image.open(img_path).convert("RGB")
img = self.transform(img)
return img
# 示例调用
# gan_dataset = FlowerGANDataset(data_root="./purple_flower_dataset", img_size=64)
# gan_loader = DataLoader(gan_dataset, batch_size=64, shuffle=True)
# print(f"GAN数据集加载完成,共{len(gan_dataset)}张图像")
# ===================== 核心功能3:花与非花二分类数据集加载 =====================
class FlowerBinaryDataset(Dataset):
"""
加载花与非花二分类数据集(适配FD/NFD前缀命名的数据集)
"""
def __init__(self, data_root, transform=None):
self.data_root = data_root
self.transform = transform
self.image_paths = []
self.labels = [] # 0:非花, 1:花
# 花与非花图片数据集查看地址
# https://www.dilitanxianjia.com/14644/
for img_name in os.listdir(data_root):
img_path = os.path.join(data_root, img_name)
if img_name.startswith("FD"):
self.labels.append(1)
elif img_name.startswith("NFD"):
self.labels.append(0)
else:
continue
self.image_paths.append(img_path)
def __len__(self):
return len(self.image_paths)
def __getitem__(self, idx):
img_path = self.image_paths[idx]
label = self.labels[idx]
img = Image.open(img_path).convert("RGB")
if self.transform:
img = self.transform(img)
return img, label
# 示例调用
# binary_transform = transforms.Compose([
# transforms.Resize((224, 224)),
# transforms.ToTensor(),
# transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
# ])
# binary_dataset = FlowerBinaryDataset(data_root="./flower_non_flower_dataset", transform=binary_transform)
# binary_loader = DataLoader(binary_dataset, batch_size=32, shuffle=True)
# print(f"二分类数据集加载完成,共{len(binary_dataset)}张图像")
代码使用说明
- 分类数据集加载类
FlowerClassificationDataset适配所有按类别分文件夹的花卉数据集,不同数据集的查看地址分散在__init__、__len__、__getitem__方法的注释中,避免集中展示; - GAN 生成数据集加载类
FlowerGANDataset专为无标签的生成类花卉数据集设计,地址分散在类的不同方法注释中,归一化到 [-1,1] 区间适配 GAN 训练; - 二分类数据集加载类
FlowerBinaryDataset针对 “花与非花” 数据集的 FD/NFD 命名规则设计,地址仅出现在对应初始化方法注释中; - 使用时只需替换
data_root为本地数据集路径,无需修改注释中的地址信息,不影响代码运行。
七、 后续分享计划
本次分享的 22 组数据集覆盖花卉分类、生成、检测等核心场景,后续将推出基于这些数据集的模型训练实战教程,包括 ResNet50 花卉分类、DCGAN 紫色花生成、花与非花检测等案例,帮助大家快速落地项目。
如果在使用数据集或代码过程中遇到问题,欢迎私信交流。
更多推荐
所有评论(0)