7类茶叶嫩芽图像分类数据集
在茶叶育种、溯源管理与自动采摘等智能农业场景中,茶树品种的识别与分类是一项关键任务。不同茶叶品种在嫩芽期表现出显著的形态差异,例如颜色、叶缘结构、芽头密度等。因此,基于图像的茶叶品种分类不仅具备实际应用价值,也为农业人工智能研究提供了丰富的实验素材。
本文将介绍一个面向茶树嫩芽图像分类任务的标准化数据集:茶叶嫩芽分类数据集,涵盖多个常见优质茶叶品种,支持图像分类模型的训练与评估。
一、📦 数据集概述
该数据集收集了多个茶树品种在嫩芽生长期的实拍图像,图像内容清晰地呈现了各品种在芽头阶段的颜色、形态和质感等特征,适用于构建深度学习图像分类模型。
每张图像都按所属茶树品种进行了标注,并存放在对应的类别文件夹下,可直接用于监督式图像分类任务。
二、🏷️ 类别标签定义
数据集中共包含 7 种茶叶品种,均为典型的地方优质品种,类别标签如下:
类别名 | 数量 | 简要介绍 |
---|---|---|
Anji_White_Tea |
| 安吉白茶,浙江特色白化变异茶种,芽色浅绿偏白 |
Huangshan_Variety |
| 黄山品系,具有黄山大叶种血统,叶面宽厚 |
Longjing_43 |
| 龙井43号,广泛种植的龙井核心品系,芽头扁直 |
Nongkangzao | 62 | 农抗早,芽头密集、萌发早,适宜高产 |
Shucha_Early_Tea |
| 舒茶早,早生品种,嫩芽披毫,颜色浅绿 |
Wanzhe_95 |
| 皖浙95号,杂交优良品种,芽叶鲜绿、整齐 |
Wuniuzao |
| 乌牛早,著名早生品种,发芽整齐、颜色鲜亮 |
数据集中所有图像均来自茶园实拍,拍摄设备统一,背景自然,部分样本为单芽特写,部分为多芽集中视角,以增加模型的泛化能力。
图像均为 .jpg
格式,分辨率适中,适合直接用于训练 ResNet、MobileNet、EfficientNet 等主流图像分类网络。
三、📁 数据组织结构
数据采用常规图像分类数据结构组织,每个类别对应一个文件夹,方便直接加载:
tea_bud_classification_dataset/
├── Anji_White_Tea/
│ ├── image_001.jpg
│ ├── image_002.jpg
│ └── ...
├── Huangshan_Variety/
├── Longjing_43/
├── Nongkangzao/
├── Shucha_Early_Tea/
├── Wanzhe_95/
└── Wuniuzao/
四、🧠 推荐模型与使用方式
本数据集可用于训练或微调多种分类模型,包括但不限于:
模型 | 特点 |
---|---|
ResNet18/50 | 经典卷积网络,精度高、稳定性好 |
MobileNetV2/V3 | 轻量化网络,适合移动端部署 |
EfficientNet | 参数效率高,适合多类别扩展 |
ViT / Swin-T | 基于 Transformer,适合结构建模 |
五、📊 应用场景
该数据集可广泛应用于茶叶品种识别相关的各类实际场景,包括:
-
🌿 自动品种识别系统:用于茶园育种管理、茶苗选型等;
-
📦 智能包装分拣设备:通过视觉识别进行品种归类;
-
🧪 茶叶品控质量检测:结合形态与色彩分析评估品种纯度;
-
🤖 采摘机器人视觉系统:提前识别目标品种,实现有选择性采摘;
六、训练集和验证集划分
这段代码用于将图像分类数据集中每个类别下约20%的图像从训练集划分为验证集(可自行修改比例)。它首先读取训练集根目录下的所有类别文件夹,并对每个类别中的图像文件列表进行随机打乱,然后按比例选取20%的图像作为验证集。对于选中的图像,程序会将其从训练集路径移动到验证集对应类别的子文件夹中(若目标文件夹不存在则自动创建),从而完成数据集的训练集与验证集划分操作,适用于基于文件夹结构的图像分类任务。其中文件存放结构和划分代码分别如下:
datasets/
├── train/
│ ├── Anji_White_Tea/
│ ├── Huangshan_Variety/
│ ├── ...
├── val/
import os
import shutil
import random
import cv2train_root = "../datasets/train"
val_root = "../datasets/val"name_list = os.listdir(train_root)
for name in name_list:image_root = os.path.join(train_root, name)image_list = os.listdir(image_root)# 随机打乱文件名列表random.shuffle(image_list)num_images = len(image_list)num_val = int(num_images * 0.2)val_names = image_list[:num_val]for image_name in val_names:image_path = os.path.join(image_root, image_name)print(image_path)save_root = os.path.join(val_root, name)if not os.path.exists(save_root):os.makedirs(save_root)save_image_path = os.path.join(save_root, image_name)print(save_image_path)if os.path.exists(save_image_path) is False:shutil.move(image_path, save_image_path)
下载链接 :7类茶叶嫩芽图像分类数据集