【番茄成熟度数据集】12类names

【番茄成熟度数据集】12类 names: ['half-ripe', 'ripe', 'rotten tomatoes', 'tomato fully ripe', 'tomato semi ripe', 'tomato unripe', 'tomato_half_ripe', 'tomato_overripe', 'tomato_ripe', 'tomato_rotten', 'tomato_unripe', 'unripe'] 名称: ['半熟的', '成熟的', '腐烂的西红柿', '西红柿完全成熟', '西红柿半成熟', '未成熟的西红柿', '西红柿半熟', '西红柿过熟', '成熟的西红柿', '腐烂的西红柿', '未成熟的西红柿', '未成熟的'] 训练集 1834 张, 验证集 344 张, 测试集 114 张 YOLO的txt格式。

番茄成熟度数据集

数据集描述

该数据集是一个专门用于检测和分类番茄不同成熟度状态的数据集,旨在帮助研究人员和开发者训练和评估基于深度学习的目标检测模型。数据集涵盖了12种不同的番茄成熟度状态,包括半熟、成熟、腐烂等。通过高质量的图像和详细的标注信息,该数据集为开发高效且准确的番茄成熟度检测系统提供了坚实的基础。

数据规模

  • 总样本数量:2,300张图片
    • 训练集 (train):1,834张图片
    • 验证集 (val):344张图片
    • 测试集 (test):114张图片
  • 标注格式:YOLO格式(txt文件)
  • 目标类别
    • 半熟 (half-ripe)
    • 成熟 (ripe)
    • 腐烂的西红柿 (rotten tomatoes)
    • 西红柿完全成熟 (tomato fully ripe)
    • 西红柿半成熟 (tomato semi ripe)
    • 未成熟的西红柿 (tomato unripe)
    • 西红柿半熟 (tomato_half_ripe)
    • 西红柿过熟 (tomato_overripe)
    • 成熟的西红柿 (tomato_ripe)
    • 腐烂的西红柿 (tomato_rotten)
    • 未成熟的西红柿 (tomato_unripe)
    • 未成熟的 (unripe)
图像特性
  • 多样化场景:覆盖了不同类型的番茄在各种环境和背景下的图像情况。
  • 高质量手工标注:每张图像都有详细的边界框标注,支持直接用于训练目标检测模型。
  • 真实拍摄:所有图像均为实际拍摄的真实场景,增强了模型在实际应用中的鲁棒性。
  • 多类别支持:包含12种不同的番茄成熟度状态,丰富了数据集的多样性。
  • 已划分数据集:数据集已经按照一定比例划分好训练集、验证集和测试集,可以直接使用。
  • 无需预处理:数据集已经过处理,可以直接用于训练,无需额外的数据预处理步骤。
应用场景
  • 农业监控:自动检测番茄的成熟度状态,辅助农民及时采摘和处理,提高生产效率。
  • 智能农业:集成到智能农业管理系统中,实现对番茄生长状况的自动化监测和管理。
  • 科研分析:用于研究目标检测算法在特定农业应用场景中的表现,特别是在复杂背景和光照条件下的鲁棒性。
  • 质量控制:通过检测番茄的成熟度状态,确保产品质量,提高市场竞争力。
  • 教育与培训:可用于农业相关的教育和培训项目,帮助学生和从业人员更好地识别和理解番茄的不同成熟度状态。

数据集结构

典型的数据集目录结构如下:

 
1tomato_ripeness_dataset/
2├── train/  # 训练集
3│   ├── images/
4│   │   ├── img_00001.jpg
5│   │   ├── img_00002.jpg
6│   │   └── ...
7│   ├── labels/  # YOLO格式标注
8│   │   ├── img_00001.txt
9│   │   ├── img_00002.txt
10│   │   └── ...
11├── val/  # 验证集
12│   ├── images/
13│   │   ├── img_00001.jpg
14│   │   ├── img_00002.jpg
15│   │   └── ...
16│   ├── labels/
17│   │   ├── img_00001.txt
18│   │   ├── img_00002.txt
19│   │   └── ...
20├── test/  # 测试集
21│   ├── images/
22│   │   ├── img_00001.jpg
23│   │   ├── img_00002.jpg
24│   │   └── ...
25│   ├── labels/
26│   │   ├── img_00001.txt
27│   │   ├── img_00002.txt
28│   │   └── ...
29├── README.txt  # 数据说明文件

数据说明

  • 检测目标:以YOLO格式进行标注。
  • 数据集内容
    • 训练集 (train):1,834张图片(带YOLO标注)。
    • 验证集 (val):344张图片(带YOLO标注)。
    • 测试集 (test):114张图片(带YOLO标注)。
  • 目标标签:共包含12大类(12种番茄成熟度状态)。
  • 数据增广:数据集未做数据增广,用户可以根据需要自行进行数据增广。
  • 无需预处理:数据集已经过处理,可以直接用于训练,无需额外的数据预处理步骤。

示例代码

以下是一个使用Python和相关库(如OpenCV、PIL等)来加载和展示数据集的简单示例代码:

1import os
2import cv2
3import numpy as np
4from PIL import Image
5
6# 数据集路径
7dataset_path = 'path/to/tomato_ripeness_dataset/'
8
9# 加载图像和边界框标注
10def load_image_and_boxes(image_path, label_path):
11    # 读取图像
12    image = Image.open(image_path).convert('RGB')
13    width, height = image.size
14    
15    # 读取并解析YOLO格式标注文件
16    with open(label_path, 'r') as f:
17        lines = f.readlines()
18    
19    boxes = []
20    for line in lines:
21        class_id, x_center, y_center, w, h = map(float, line.strip().split())
22        xmin = int((x_center - w / 2) * width)
23        ymin = int((y_center - h / 2) * height)
24        xmax = int((x_center + w / 2) * width)
25        ymax = int((y_center + h / 2) * height)
26        boxes.append([int(class_id), xmin, ymin, xmax, ymax])
27    
28    return image, boxes
29
30# 展示图像和边界框
31def show_image_with_boxes(image, boxes, class_names):
32    img = np.array(image)
33    for box in boxes:
34        class_id, xmin, ymin, xmax, ymax = box
35        class_name = class_names[class_id]
36        cv2.rectangle(img, (xmin, ymin), (xmax, ymax), (0, 255, 0), 2)
37        label = f'{class_name}'
38        cv2.putText(img, label, (xmin, ymin - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)
39    
40    cv2.imshow('Image with Boxes', img)
41    cv2.waitKey(0)
42    cv2.destroyAllWindows()
43
44# 主函数
45if __name__ == "__main__":
46    subset = 'train'  # 可以选择 'train', 'val', 或 'test'
47    images_dir = os.path.join(dataset_path, subset, 'images')
48    labels_dir = os.path.join(dataset_path, subset, 'labels')
49    
50    # 获取图像列表
51    image_files = [f for f in os.listdir(images_dir) if f.endswith('.jpg')]
52    
53    # 随机选择一张图像
54    selected_image = np.random.choice(image_files)
55    image_path = os.path.join(images_dir, selected_image)
56    label_path = os.path.join(labels_dir, selected_image.replace('.jpg', '.txt'))
57    
58    # 加载图像和边界框
59    class_names = ['half-ripe', 'ripe', 'rotten tomatoes', 'tomato fully ripe', 'tomato semi ripe', 
60                   'tomato unripe', 'tomato_half_ripe', 'tomato_overripe', 'tomato_ripe', 'tomato_rotten', 
61                   'tomato_unripe', 'unripe']
62    image, boxes = load_image_and_boxes(image_path, label_path)
63    
64    # 展示带有边界框的图像
65    show_image_with_boxes(image, boxes, class_names)

这段代码展示了如何加载图像和其对应的边界框标注文件,并在图像上绘制边界框。您可以根据实际需求进一步扩展和修改这段代码,以适应您的具体应用场景。

改进方向

如果您已经使用YOLOv3、YOLOv5等模型对该数据集进行了训练,并且认为还有改进空间,以下是一些可能的改进方向:

  1. 数据增强

    • 进一步增加数据增强策略,例如旋转、翻转、缩放、颜色抖动等,以提高模型的泛化能力。
    • 使用混合增强技术,如MixUp、CutMix等,以增加数据多样性。
  2. 模型优化

    • 调整模型超参数,例如学习率、批量大小、优化器等,以找到最佳配置。
    • 尝试使用不同的骨干网络(Backbone),例如EfficientNet、ResNet等,以提高特征提取能力。
    • 引入注意力机制,如SENet、CBAM等,以增强模型对关键区域的关注。
  3. 损失函数

    • 尝试使用不同的损失函数,例如Focal Loss、IoU Loss等,以改善模型的收敛性能。
    • 结合多种损失函数,例如分类损失和回归损失的组合,以平衡不同类型的任务。
  4. 后处理

    • 使用非极大值抑制(NMS)的改进版本,如Soft-NMS、DIoU-NMS等,以提高检测结果的质量。
    • 引入边界框回归的改进方法,如GIoU、CIoU等,以提高定位精度。
  5. 迁移学习

    • 使用预训练模型进行微调,利用大规模数据集(如COCO、ImageNet)上的预训练权重,加快收敛速度并提高性能。
  6. 集成学习

    • 使用多个模型进行集成学习,通过投票或加权平均的方式提高最终的检测效果。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/146791.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

centos7离线安装MySQL8

下载Mysql安装包地址 https://dev.mysql.com/downloads/mysql/解压到指定目录 [rootlocalhost tools]# tar -xvf mysql-8.4.2-1.el7.x86_64.rpm-bundle.tar -C /root/training [rootlocalhost tools]# cd ../training/ [rootlocalhost training]# ll total 1027204 -rw-r--r-…

计算机毕业设计之:基于微信小程序的诗词智能学习系统(源码+文档+解答)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

Spring_AMQP

文章目录 一、SpringAMQP二、SpringAMQP应用2.1、消息发送2.2、消息接收 一、SpringAMQP SpringAMQP是基于RabbitMQ封装的一套模板,并且还利用SpringBoot对其实现了自动装配,使用起来非常方便。 SpringAmqp的官方地址。 SpringAMQP提供了三个功能&am…

PMP--二模--解题--51-60

文章目录 14.敏捷--术语表--完成的定义DoD--它是团队需要满足的所有标准的核对单,只有可交付成果满足该核对单才能视为准备就绪可供客户使用。51、 [单选] 在冲刺计划会议上,Scrum主管重申,如果在冲刺结束时敏捷项目团队正在构建的产品增量没…

Linux:进程(四)

目录 一、进程优先级 二、Linux调度与切换 1.背景 2.进程切换 3.Linux调度 一、进程优先级 背景:在计算机中,软硬件资源是有限的,而进程想要访问某一种资源,就得通过排队来保证访问资源的过程是有条不紊的。 Linux下对优先级…

华为HarmonyOS灵活高效的消息推送服务(Push Kit) - 1 简介

Push Kit(推送服务)是华为提供的消息推送平台,建立了从云端到终端的消息推送通道。所有HarmonyOS应用可通过集成Push Kit,实现向应用实时推送消息,使消息易见,构筑良好的用户关系,提升用户的感知…

Django 请求配置

http请求配置 请求流程 urls.py配置 from first_app import viewsurlpatterns [path(admin/, admin.site.urls),path(test/,views.first_test), ] views.py配置 from django.shortcuts import render,HttpResponse# Create your views here. def first_test(request):prin…

FLUX.1 ComfyUI:专属图像生成助手

FLUX.1 & ComfyUI:专属图像生成助手 FLUX.1 简介 FLUX.1 是由 黑森林实验室 (Black Forest Labs) 开发的一款高性能图像生成模型,分为以下三个版本: FLUX.1-pro (闭源): 最顶级的版本,具备极高的图像生成能力,支…

Python办公自动化教程(001):PDF内容提取

1、Pdfplumber介绍 pdfplumber的github地址: https://github.com/jsvine/pdfplumber/【介绍】:pdfplumber 是一个用于处理 PDF 文件的 Python 第三方库,它提供了一种方便的方式来提取 PDF 文件中的文本、表格和其他信息。【功能】&#xff…

2、StarGAN V2

2、StarGAN V2 StarGAN 论文链接:StarGAN StarGAN V2 论文链接:StarGAN V2 在介绍StarGAN V2之前,我们先对StarGAN有一定的了解,StarGAN V2只是在StarGAN的基础上做出了改进,基本的架构是没有变的,只是将…

SQL - 进阶语法(二)约束

1. SQL约束 约束用于约束表中的数据规则,如若存在违反行为,行为会被约束终止。 • NOT NULL 确保列不能有NULL值 如果添加一行新的数据,不能有null值,否则无法添加 新建表格 CREATE TABLE new_table( ID int NOT NULL, NAME …

尚品汇-自动化部署-Jenkins的安装与环境配置(五十六)

目录: 自动化持续集成 (1)环境准备 (2)初始化 Jenkins 插件和管理员用户 (3)工作流程 (4)配置 Jenkins 构建工具 自动化持续集成 互联网软件的开发和发布&#xf…

zynq中断

通用中断控制器的作用: 它是一个中央处理中心,用于管理来自处理器核心(PS)和外设(PL)的中断。它可以启用、禁用、屏蔽和设置中断源的优先级。 中断处理流程: 所有中断源首先被集中到控制器。控…

AI模型对比研究员创意

大语言模型可以接受训练,完成许多任务。其中最广为人知的用途之一是作为生成式人工智能:当收到提示或被问到问题时,它们可以生成文本作为答复。例如,公开的大语言模型 ChatGPT 可以根据用户输入生成文章、诗歌和其他文本形式。 任…

C语言题目之单身狗2

文章目录 一、题目二、思路三、代码实现 提示:以下是本篇文章正文内容,下面案例可供参考 一、题目 二、思路 第一步 在c语言题目之打印单身狗我们已经讲解了在一组数据中出现一个单身狗的情况,而本道题是出现两个单身狗的情况。根据一个数…

查询 B 站注册时间

有时候想看看自己玩 B 站多少年了,想知道自己什么时候注册的。 此外,据说注销 B 站账户的话也得提供详细注册日期。 ‍ 通过创作中心查看 登录网页版 B 站,点击右上角的创作中心,然后就能看到在 B 站多少天了: ​…

基于JAVA+SpringBoot+Vue的医院资源管理系统

基于JAVASpringBootVue的医院资源管理系统 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末附源码下载链接🍅 哈…

Qt开发技巧(七)动态换图,QVideoWidget视频闪烁,Qt日志打印,系统消息处理,编译前后的操作,QSettings配置文件,屏幕自适应

1.动态换图 Qt开发时,有时候我们在界面上需要动态的切换图片,比如接到来自底层驱动的信号分成告警信号,正常信号,危险信号,在界面上使用QLabel通过贴图来表示不同的信号,这时候尽量使用setStyleSheet()&…

和可被k整除的子数组问题

目录 一题目: 二思路: 三代码: 一题目: leetcode链接:. - 力扣(LeetCode) 二思路: 思路:前缀和第二种表示方式即循环列出方式同余定理取模修正: 还是通…

这可能又是一款 Java 程序员的必备插件了,无需解压直接编辑修改 jar 包内文件,神器!(附源码)

作为一名 Java 程序员,在维护一些古老的程序时,可能会遇到这种情况:项目依赖的 jar 包过于久远,已经没有源码了,但是有不得不修改的 bug 要处理。这时候就得想办法反编译 jar 包进行修改,并且重新打包&…