简介:本资源是面向农业AI研发者、计算机视觉工程师及高校科研人员的番茄实例分割专用数据集,聚焦真实农田场景下的多类别精细识别与分割任务,可直接支撑目标检测与实例分割模型训练,解决番茄品质分级、生长状态监测及智能采摘等实际问题。压缩包共2000个文件,含1286张JPEG农田实拍图、1286个YOLO格式多边形分割标注txt文件(覆盖bad/good/green tomato与stem四类)、1个类别定义yaml配置文件及1份详细说明docx文档,整体容量961.94MB,结构规范、开箱即用。目前已有82人学习下载,适用于YOLOv8/v10等主流框架的实例分割迁移训练。用户可直接获取高质量农业图像、精准像素级标注、完整类别体系与场景化文档支持,显著降低农业视觉项目的数据准备门槛,加速从算法验证到田间部署的全流程开发。
1. 项目概述:一份“番茄实例分割数据集”的诞生与价值
最近在整理硬盘时,翻到了一个名为“番茄实例分割数据集-20251122-173819.zip”的文件包。这让我想起了去年年底,为了一个农业AI视觉项目,我和团队花了大半个月时间,亲手采集、标注、整理出这份数据集的全过程。在计算机视觉,特别是目标检测和实例分割领域,数据是模型的“燃料”,其质量直接决定了算法性能的天花板。而一份针对特定场景(比如温室番茄)的高质量、标注精细的数据集,其价值往往远超一个现成的通用模型。今天,我就来详细拆解一下这个数据集从无到有的构建全流程,分享其中的技术选型、实操细节以及我们踩过的那些“坑”,希望能给正在或计划构建自己专属数据集的朋友们一些实实在在的参考。
这份数据集的核心目标,是服务于番茄植株的实例分割任务。与单纯框出番茄的“目标检测”不同,实例分割要求模型不仅能找到图像中每一个独立的番茄个体(实例),还要精确地勾勒出每一个番茄的像素级轮廓(分割)。这对于精准统计果实数量、评估果实大小、成熟度乃至早期病害的定位都至关重要。我们当时面临的场景是温室环境下的番茄监测,光线复杂、枝叶遮挡严重、果实颜色形态多样,通用数据集如COCO很难直接胜任,自建数据集成了唯一且必要的选择。接下来,我将从数据采集、标注工具选型、标注规范制定、数据集整理与增强,以及最终的使用建议这几个方面,完整还原我们的构建之路。
2. 数据采集:场景定义与原始素材获取
构建数据集的第一步,也是决定其最终适用性的基石,就是数据采集。采集不是漫无目的地拍照,而是需要紧密结合你的实际应用场景进行周密设计。
2.1 明确采集场景与需求
我们的项目应用于现代玻璃温室,主要需求是通过顶部轨道机器人搭载的摄像头,自动巡检并分析番茄的生长状态。因此,采集需求非常明确:
- 视角:模拟巡检机器人的顶视和斜视角度,避免纯粹的平视或仰视。
- 环境:必须覆盖温室内的典型环境——晴天直射光、多云漫射光、清晨/傍晚的侧光、以及补光灯开启时的混合光。要特别注意避免强光造成的过曝和阴影区域的欠曝。
- 目标状态:番茄的不同生长阶段(小果、青果、转色期、红果)、不同健康状况(健康、病害早期斑点、虫咬痕迹)、以及被叶片不同程度遮挡的情况。
- 多样性:需要涵盖不同的番茄品种(大果型、樱桃番茄)、不同的种植架式(单杆整枝、双杆整枝),以提升模型的泛化能力。
基于这些需求,我们制定了详细的采集计划表,确保每一次拍摄都有明确的目标。
2.2 采集设备与参数设置
工欲善其事,必先利其器。在设备选择上,我们并没有追求最顶级的摄影装备,而是强调“一致性”和“可复现性”。
- 相机:使用了一台索尼A6000微单相机,选择它的原因是其APS-C画幅传感器在宽容度和色彩表现上比较均衡,且手动模式功能完整。
- 镜头:采用一颗定焦镜头(35mm F1.8),定焦镜头畸变小,画质稳定,避免了变焦镜头不同焦段可能引入的透视差异。F1.8的大光圈在温室弱光环境下很有用,但我们实际拍摄时通常会收缩到F4-F5.6,以获得更大的景深,确保前景和背景的番茄都清晰。
- 关键设置:
- 模式:全程手动模式(M档)。这是最重要的一点,自动模式下的曝光和白平衡每张图都可能变化,会给后续模型训练引入不必要的噪声。
- 白平衡:手动设置色温值(如5500K),并在每次环境光变化时用灰卡重新校准。统一的白平衡对于颜色敏感的农业应用(如判断成熟度)至关重要。
- ISO:尽量固定在最低原生ISO(如ISO 100),仅在光线不足时适度提高,但优先保证快门速度,避免手抖模糊。
- 格式:拍摄RAW+JPEG双格式。RAW文件保留了最大的后期调整空间,JPEG用于快速预览和标注。最终标注使用的是经过统一基础校正后导出的JPEG图像。
实操心得:在温室这种光线复杂的环境,自动模式是“灾难”。我们曾尝试用自动模式拍了一组,结果同一场景下的照片亮暗、色调差异巨大,后期校正工作量翻倍不说,还可能导致模型学习到错误的颜色特征。坚持手动模式,虽然前期麻烦,但为数据一致性打下了坚实基础。
2.3 采集过程与素材管理
我们组织了三次集中采集,覆盖了早、中、晚不同时段和不同天气。每次采集大约获得800-1000张原始照片。这里的管理细节很重要:
- 命名规则:照片按
采集日期_序列号_简要描述.jpg格式命名,如20251110_001_morning_sunny_top.jpg。RAW文件保持相同主文件名。 - 现场记录:用手机备忘录或笔记本记录每批照片对应的环境条件(时间、天气、光照)、区域编号、番茄品种等信息。这些元数据后期可能用于数据子集的划分(例如,专门训练一个“强光下”的模型)。
- 初步筛选:在采集间隙就进行初步筛选,删除明显失焦、严重过曝/欠曝、或者目标占比太小的废片。这能减轻后续工作量。
最终,我们获得了约2500张有效原始图像,经过后期统一调整,得到了用于标注的图像库。
3. 标注工具选型与规范制定
有了原始图像,下一步就是为它们打上“标签”。标注的质量是数据集的灵魂。
3.1 标注工具深度对比与选择
我们评估了当时主流的几款开源标注工具:
- LabelImg:经典,但只支持矩形框(Bounding Box)标注,不符合我们实例分割的需求。
- LabelMe:由麻省理工CSAIL实验室开发,支持多边形(Polygon)标注,非常适合语义分割和实例分割。图形界面友好,但处理大量数据时,管理和导出略显繁琐。
- CVAT:英特尔出品的强大在线标注系统,功能极其全面,支持团队协作、自动标注、视频标注等。但部署和配置相对复杂,对本地硬件有一定要求。
- Roboflow:在线平台,提供了从数据上传、预处理、标注、增强到导出一站式服务,非常方便。但免费版有容量和功能限制,且数据需要上传到云端。
考虑到数据安全性(农业图像可能涉及商业隐私)、标注精度要求以及团队本地协作的便利性,我们最终选择了CVAT。它在本地服务器部署后,能提供不逊于商业工具的标注体验,特别是其“分割”模式,可以用多边形或笔刷进行精细勾勒,并且天然支持实例分割(每个多边形都是一个独立的实例)。它的任务分配、进度跟踪功能也极大提升了我们三人标注小组的效率。
3.2 制定精细化的标注规范文档
工具只是手段,规范才是保证标注一致性的核心。我们制定了一份长达5页的《番茄实例分割标注规范》,所有标注人员必须通过考核才能上岗。关键规范包括:
- 类别定义:我们只定义一个类别:
tomato。避免引入“green_tomato”, “red_tomato”等子类,因为成熟度是连续变化的,硬性分割反而可能混淆模型。成熟度信息可以通过其他渠道(如果实颜色占比)后处理得到。 - 标注对象:只要是肉眼可辨的、直径大于1厘米的番茄果实(包括被遮挡部分),都需要标注。明显腐烂或严重畸形的不标。
- 遮挡处理:
- 被枝叶轻微遮挡:沿番茄可见轮廓进行标注。
- 被其他番茄严重遮挡(超过50%):如果无法推断被遮挡部分的完整形状,则只标注可见部分。并在“备注”中说明“严重遮挡”。
- 一片叶子横穿番茄:标注时忽略叶子,按番茄完整的圆形轮廓标注,叶子部分被视为背景。
- 轮廓精度:要求多边形点尽可能贴近番茄边缘,特别是在颜色对比明显的区域。对于边缘模糊的番茄,允许一定的平滑,但整体形状必须准确。我们规定每个番茄实例的多边形点数在20-50个之间为宜,太少形状失真,太多效率低下且易产生噪声。
- 标签属性:CVAT允许为每个实例添加属性。我们增加了
occlusion_level(遮挡等级:none, partial, heavy)和size_estimate(大小估计:small, medium, large)两个属性,为后续更精细的模型训练或分析提供可能。
踩坑实录:初期没有规范时,不同标注员对“该标什么”理解不一。有人只标完全可见的,有人连藏在叶子后只露一点红的也标。结果就是模型训练时极度不稳定,召回率忽高忽低。制定并严格执行规范后,模型的性能才趋于稳定。这份时间投入是绝对值得的。
4. 标注实操、质检与数据集构建
规范落地,进入具体的标注和质检流程。
4.1 标注工作流与效率技巧
我们使用CVAT搭建了标注流水线:
- 任务创建:将约2500张图片按温室区域分成5个标注任务,每个任务500张左右。
- 分配与标注:小组成员领取任务。标注时,我们总结了一些提升效率的技巧:
- 先粗后细:对于一张图,先用矩形框模式快速框出所有番茄实例,然后再逐个切换到分割模式细化轮廓。这比直接画多边形快很多。
- 利用快捷键:熟练掌握CVAT的快捷键(如
N新建形状,Ctrl++放大,Ctrl+-缩小)能极大提升速度。 - 复杂轮廓处理:对于边缘特别复杂的果实,不要追求用多边形点完全拟合,可以在曲线处多打几个点,直线处少打点,后期数据增强会一定程度上弥补轮廓的微小不精确。
- 中期自查:每标注完100张,标注员需要随机抽检10张自己的成果,对照规范检查常见错误。
4.2 多重质检与争议解决
标注完成后,质检环节比标注本身更重要。我们实行三级质检制度:
- 交叉互检:任务完成后,组员之间交换任务进行第一次检查。检查者会标记出疑似问题(如漏标、标错类别、轮廓严重不准)。
- 组长抽检:我作为项目负责人,会从每个任务中随机抽取20%的图片进行深度检查,并计算标注错误率。我们设定了错误率阈值(如实例级错误率<2%),超过阈值的任务需要返工。
- 关键样本全检:对于光照极端、遮挡严重、果实密集的约200张“困难样本”,进行全员逐一核对,共同讨论并确定最终标注方案。
对于质检中发现的争议(例如,一个被遮挡超过70%的番茄到底算不算一个实例),我们会召集简短评审会,依据规范原则并参考实际业务需求(我们的业务更看重可计数果实的检测)做出最终裁定,并可能反过来更新标注规范。这个过程确保了数据集的权威性和一致性。
4.3 数据集格式整理与划分
质检通过后,从CVAT导出标注数据。CVAT支持多种导出格式,我们选择了COCO JSON格式。因为COCO格式是MMDetection、Detectron2、YOLO等主流框架都支持的通用格式,方便后续使用。 导出后,我们进行了以下整理:
- 文件结构标准化:
Tomato_Seg_Dataset/ ├── images/ # 存放所有JPEG图像 │ ├── train2017/ │ └── val2017/ ├── annotations/ # 存放标注文件 │ ├── instances_train2017.json │ └── instances_val2017.json └── README.md # 数据集说明文档 - 数据集划分:按8:1:1的比例随机划分训练集(train)、验证集(val)和测试集(test)。这里有个关键点:划分是在“图片”层面随机进行的,但要确保同一个温室区域、同一时间拍摄的图片组尽量被分到同一个集合,防止数据泄露(即极其相似的图片出现在训练和测试集,导致虚高的性能指标)。我们采用了基于“采集批次”的分层抽样。
- 生成YOLO格式备用:虽然COCO是主流,但考虑到很多研究者习惯用YOLOv5/v8,我们也用脚本将COCO格式转换成了YOLO格式(每个图像对应一个.txt文件,内容为
class_id x1 y1 x2 y2 ...多边形归一化坐标)。这个转换脚本需要小心处理坐标归一化和多边形点顺序。
5. 数据增强策略与预处理
原始数据集只有2500张图像,对于训练深度神经网络来说可能不足。数据增强是低成本“创造”新数据、提升模型鲁棒性的法宝。
5.1 离线增强与在线增强
我们采用了混合策略:
离线增强(预处理阶段):在训练开始前,对训练集图像应用一次性的、确定性的变换,扩充数据集容量。我们使用Albumentations库,生成了约5倍的增强数据。核心增强包括:
- 几何变换:随机水平翻转(概率0.5)、随机旋转(±15度)、随机缩放裁剪(缩放范围0.8-1.2)。这些模拟了摄像头视角的微小变化。
- 颜色变换:随机调整亮度、对比度、饱和度(幅度±20%),随机添加RGB通道偏移。这模拟了温室光照的变化。
- 噪声与模糊:随机添加高斯噪声、随机运动模糊或高斯模糊。模拟相机抖动或镜头污渍。
注意:应用几何变换时,必须同步计算并变换标注的多边形坐标点,Albumentations库对此支持得很好。
在线增强(训练阶段):在模型每次读取训练数据时实时进行增强。这能提供无限多的变体。我们主要使用了Mosaic增强(将四张图拼成一张)和MixUp增强(将两张图线性混合),这两种增强能极大地提升模型对小目标、遮挡目标的检测能力,非常适合我们番茄密集、遮挡多的场景。
5.2 增强策略的针对性调整
不是所有增强都适用。我们通过实验发现:
- 垂直翻转:要谨慎使用或不用,因为温室顶视拍摄的图像,番茄不会“倒挂”,垂直翻转会引入不真实的场景。
- 过大角度的旋转:可能导致番茄“躺”在叶子上,不符合物理规律,我们限制了旋转角度。
- 色彩空间剧烈变化:如Hue(色调)剧烈调整,可能把绿番茄变成紫番茄,这脱离了实际,我们限制了其调整幅度。
增强的目标是增加数据的多样性,同时保持其“合理性”。我们通过可视化工具定期检查增强后的图像和标注,确保增强没有产生畸变或错误的标注。
6. 数据集使用指南与模型训练初步验证
数据集构建完成后,我们用它初步训练了一个模型,以验证数据集的有效性。
6.1 数据集使用准备
我们将整理好的数据集(包含原始图像、增强后图像、COCO和YOLO格式标注)打包,并命名为Tomato_Seg_Dataset_v1.0.zip(内部文件日期即反映了最终版本时间)。一个完整的数据集包应包含:
- 图像文件夹(按train/val/test划分)。
- 标注文件。
- 一个详细的
README.md或dataset_card.json,说明:- 数据集基本信息:名称、版本、创建日期、创建者。
- 统计信息:图像数量、实例数量、平均每图实例数、实例大小分布直方图。
- 类别信息:类别名称及ID。
- 采集与标注信息:设备、环境、标注工具、标注规范摘要。
- 许可信息:明确数据集的使用许可(如CC BY-SA 4.0)。
- 文件结构:清晰的目录说明。
- 使用示例:提供几行代码展示如何用PyTorch或YOLO加载此数据集。
6.2 基于YOLOv8的初步验证
我们选择YOLOv8-seg模型进行快速验证,因为它部署简单,且实例分割性能不错。
# 安装Ultralytics pip install ultralytics # 准备YOLO格式的数据集配置文件 `tomato.yaml` # path: /path/to/Tomato_Seg_Dataset # train: images/train # val: images/val # nc: 1 # 类别数 # names: ['tomato'] # 启动训练 yolo task=segment mode=train model=yolov8n-seg.pt data=tomato.yaml epochs=100 imgsz=640训练过程中,我们密切关注在验证集上的指标:mAP50-95(分割精度)、mAP50、以及precision和recall。一个健康的信号是,训练损失稳步下降,验证集指标在后期趋于平稳并达到一个可接受的值(例如,在验证集上mAP50达到0.85以上)。
6.3 常见训练问题与数据集关联排查
第一次训练往往不会一帆风顺。如果模型性能很差,需要回溯检查数据集:
- 问题:损失不下降,mAP极低。
- 排查:首先可视化一些训练样本和对应的标签,检查标注是否正确加载(边框和掩码是否与图像对齐)。可能是标注文件路径错误或格式解析出错。
- 问题:过拟合严重(训练集mAP很高,验证集很低)。
- 排查:检查训练集和验证集的数据分布是否差异过大(例如,训练集全是晴天,验证集全是阴天)。需要重新划分数据集,确保分布一致。同时,可以增加数据增强的多样性,或添加正则化(如Dropout)。
- 问题:对小目标或密集目标检测效果差。
- 排查:查看数据集中小目标(像素面积<32x32)的实例占比。如果占比少,模型自然学不好。可以考虑过采样包含小目标的图像,或在数据增强中更多使用Mosaic来人为创造小目标场景。
- 问题:模型混淆背景和番茄。
- 排查:检查数据集中是否有大量与番茄颜色相似的物体(如红色标签、砖块)未被正确标注为背景?或者标注的轮廓是否过于粗糙,包含了太多背景像素?需要精修标注。
通过这样一轮“训练-评估-排查”的循环,我们不仅验证了数据集的基本有效性,还发现了标注中一些需要微调的地方(例如,部分重叠果实的轮廓区分度不够),并进行了最后一轮修正,最终形成了开篇提到的那个番茄实例分割数据集-20251122-173819.zip文件。
构建一个高质量的自定义数据集是一项繁重但极具价值的工作。它要求你对业务场景有深刻理解,对数据采集、标注、整理有严谨的流程把控,更要有耐心去处理无数细节。这份“番茄数据集”对我们项目的成功起到了决定性作用。如果你也正在从事类似的工作,我的建议是:尽早制定规范,严格进行质检,不要害怕在数据准备阶段投入时间。因为喂给模型的是“垃圾”,得到的输出也必然是“垃圾”。一份干净、准确、有代表性的数据集,是你后续所有模型迭代和性能提升的坚实起点。在模型调参感到迷茫时,不妨回过头来,再看看你的数据,问题往往就隐藏在那里。
本文还有配套的精品资源,点击获取