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

茶叶根茎分割数据集介绍与应用

在茶叶智能采摘和品质评估任务中,准确识别并分割茶叶的根茎部位具有重要意义。根茎部分通常不可采摘、质地较硬,而嫩芽则是主要采摘对象。通过精准分割根茎区域,可以有效辅助采摘机器人进行采摘路径规划,提升机械臂作业效率,避免对茶叶植株造成损伤。

为支持这一应用,我们构建了一个高质量的茶叶根茎分割数据集,专注于复杂自然环境中对根茎区域的像素级识别。

一、数据集简介

该数据集包含 1809 张高清实拍茶叶图像,以茶叶植物中的根茎部分作为主要分割目标。相较于嫩芽和叶片,根茎区域在形态上更具稳定性,边界清晰,且在茶苗品种识别、生长状态评估与采摘时机判断中具有重要参考价值,因而非常适合作为图像分割建模对象。

本数据集聚焦于 “根茎”区域的像素级语义分割任务,为每张图像提供了精细标注,帮助模型准确区分根茎与背景区域。

类别编号类别名描述
0根茎(stem)茶叶植物的根部与茎干结构

📦 数据集统计与格式:

  • 📊 图像总数:1809 张

  • 📁 标注格式:支持三种主流格式,满足多模型训练需求:

    • YOLO 格式:用于 YOLOv8-seg 等实例分割模型;

    • JSON 格式:由 LabelMe 工具生成,便于可视化与编辑;

    • Mask 格式:像素值 0 表示背景,1 表示根茎,适用于 UNet 等语义分割模型。

每张图像都配有精确的目标轮廓标注,并标注了对应的部件类别,用于支持目标分割任务。标注后的数据集如下所示:

二、数据集标签格式说明

为了满足不同任务需求和模型框架的输入要求,茶叶根茎分割数据集提供了三种主流的标注格式:YOLO 格式、JSON 格式、Mask 格式,支持实例分割与语义分割模型的灵活训练与部署。


3.1 分割 JSON 格式(LabelMe 标注)

JSON 标签格式由开源标注工具 LabelMe 生成。LabelMe 是一款轻量级但功能丰富的图像标注工具,广泛应用于实例分割、目标检测和图像分类等任务中。它支持手动绘制多边形、矩形等区域,并将标注信息以结构化 JSON 文件形式保存,便于数据的可视化、转换与后续处理。

每个 JSON 文件包含图像中所有标注对象的类别信息与轮廓坐标,可作为生成 mask 图像或 YOLO 格式标签的中间标准。


3.2 分割 YOLO 格式(适用于实例分割)

为了支持 YOLO 系列实例分割模型(如 YOLOv8-seg、YOLOv11-seg)进行训练,数据集中提供了将 LabelMe 标注转换为 YOLO 实例分割格式 的标签文件。

转换的核心逻辑是:从 JSON 文件中提取每个对象的多边形坐标点,并将其根据图像尺寸归一化为 [0,1] 范围内的比例坐标,以符合 YOLO 的输入规范。每个标注文件对应一张图像,包含一个或多个根茎实例的多边形信息。其中json转yolo的分割标签代码如下:

import json
import osclass_dict = {"stem": 0
}def translate_info(label_json, label_txt):# 检查json文件是否存在assert os.path.exists(label_json), "file:{} not exist...".format(label_json)# read jsonwith open(label_json, "r") as f1:data = json.load(f1)img_height = data['imageHeight']img_width = data['imageWidth']object_num = len(data['shapes'])with open(label_txt, "w") as f:for index in range(object_num):seg_label = []# 获取每个object的类别信息和关键点信息class_name = data['shapes'][index]['label']class_index = class_dict[class_name]  # 目标id从0开始seg_label.append(class_index)seg_points = data['shapes'][index]['points']for point in seg_points:point_x = round(point[0] / img_width, 6)point_y = round(point[1] / img_height, 6)seg_label.append(point_x)seg_label.append(point_y)info = [str(i) for i in seg_label]f.write(" ".join(info) + "\n")def main():label_json_path = r"./data/labels_json"label_txt_path = r"./data/labels_yolo"label_list = os.listdir(label_json_path)label_list = [label for label in label_list if label.endswith('.json')]for label_name in label_list:label_name = label_name.split(".json")[0]label_xml = os.path.join(label_json_path, label_name + ".json")label_txt = os.path.join(label_txt_path, label_name + ".txt")translate_info(label_xml, label_txt)if __name__ == "__main__":main()

3.3 分割 Mask 格式(适用于语义分割)

为了支持 UNet 及其变体(如 UNet++、Attention-UNet 等语义分割模型)的训练,数据集中还提供了 mask 图像格式标签。该标签图是依据 JSON 文件中的多边形标注,在与原始图像大小一致的空白图上绘制填充区域生成的。

在生成的 mask 图像中:

  • 背景区域像素值为 0

  • 根茎区域像素值为 1

  • 可扩展支持多类分割(如未来添加叶片、嫩芽等);

  • 与原图文件名保持一致,便于自动配对加载。

该格式广泛应用于语义分割任务,兼容 PyTorch、TensorFlow、MMseg 等深度学习框架。

其中,json转mask的代码如下:

import cv2
import json
import numpy as np
import osclass_dict = {"stem": 1
}def json_to_mask(image_path, json_path, save_mask_path):# 读取 JSON 文件with open(json_path, mode='r', encoding="utf-8") as f:configs = json.load(f)# 获取图像尺寸shapes = configs["shapes"]image = cv2.imread(image_path)imageHeight, imageWidth = image.shape[:2]# 创建空白图像用于生成掩码mask = np.zeros((imageHeight, imageWidth), np.uint8)# 绘制轮廓,将所有有标注的区域填充为 对应的数值for shape in shapes:label_name = shape["label"]points = np.array(shape["points"], dtype=np.int32)cv2.drawContours(mask, [points], -1, class_dict[label_name], -1)  # 255 表示白色,-1 表示填充# 保存生成的掩码图像cv2.imwrite(save_mask_path, mask)return maskif __name__ == "__main__":save_mask_root = r'./labels_mask'  # 保存mask图路径json_root = r'./labels_json'  # 读取json路径image_root = r'./images'   # 原始图像# 确保保存目录存在os.makedirs(save_mask_root, exist_ok=True)# 遍历 JSON 文件并生成掩码for file in os.listdir(json_root):name, ext = os.path.splitext(file)image_path = os.path.join(image_root, f"{name}.jpg")save_mask_path = os.path.join(save_mask_root, f"{name}.png")json_path = os.path.join(json_root, file)# 检查图像和 JSON 文件是否存在if os.path.exists(image_path) and os.path.exists(json_path):json_to_mask(image_path, json_path, save_mask_path)

三、数据格式与目录结构

基于上述处理流程,茶叶根茎分割数据集已完成图像与标签的标准化转换,统一提供如下内容:

  • ✅ 经过预处理并转换为 .jpg 格式的高清茶叶图像;

  • ✅ 对应的三种类型标注文件,包括:

    • YOLO 格式(适用于 YOLOv8/v11-seg 等实例分割模型);

    • Mask 图像格式(适用于 UNet、UNet++、Attention-UNet 等语义分割模型);

    • LabelMe 原始 JSON 格式(用于可视化、转换或编辑标注)。

下载链接 :茶叶根茎分割数据集

相关文章:

  • Vue中keep-alive结合router实现部分页面缓存
  • 【stm32】HAL库开发——单片机工作模式
  • stm32之普通定时器
  • 构建创意系统:驾驭Audition与Photoshop的AI之力,洞悉原子化设计哲学
  • 基于IEC61499实现的工业机器视觉方案
  • Java面试宝典:基础四
  • 复旦大学经济学院系统思考训练
  • 【三维重建】Deformable Beta Splatting
  • 2025.6.29总结
  • 华为云 Flexus+DeepSeek 征文|华为云 Flexus 云服务 Dify-LLM 平台深度部署指南:从基础搭建到高可用实践
  • C/C++数据结构之动态数组
  • NAND Flash BCH和FTL
  • git常见问题汇总-重复提交/删除已提交文件等问题
  • ROS 避障技术介绍
  • Ultralytics YOLO超参数调整指南(二)
  • 节点小宝:告别公网IP,重塑你的远程连接体验
  • docker安装gitlab
  • 微服务同时启动多个启动类方法
  • 团结引擎发布纯鸿蒙应用
  • 从理论到实战:解密大型语言模型的核心技术与应用指南