在茶葉育種、溯源管理與自動采摘等智能農業場景中,茶樹品種的識別與分類是一項關鍵任務。不同茶葉品種在嫩芽期表現出顯著的形態差異,例如顏色、葉緣結構、芽頭密度等。因此,基于圖像的茶葉品種分類不僅具備實際應用價值,也為農業人工智能研究提供了豐富的實驗素材。
本文將介紹一個面向茶樹嫩芽圖像分類任務的標準化數據集:茶葉嫩芽分類數據集,涵蓋多個常見優質茶葉品種,支持圖像分類模型的訓練與評估。
一、📦 數據集概述
該數據集收集了多個茶樹品種在嫩芽生長期的實拍圖像,圖像內容清晰地呈現了各品種在芽頭階段的顏色、形態和質感等特征,適用于構建深度學習圖像分類模型。
每張圖像都按所屬茶樹品種進行了標注,并存放在對應的類別文件夾下,可直接用于監督式圖像分類任務。
二、🏷? 類別標簽定義
數據集中共包含 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類茶葉嫩芽圖像分類數據集