草莓成熟度检测数据集 3700张 草莓成熟 带标注voc yolo 3类

 

草莓成熟度检测数据集 3700张 草莓成熟 带标注voc yolo

草莓成熟度检测数据集

名称

草莓成熟度检测数据集 (Strawberry Maturity Detection Dataset)

规模
  • 图像数量:共3713张图像。
  • 类别:分为三个级别:未熟 (raw)、半熟 (turning) 和 成熟 (ripe)。
  • 标注个数:总共23044个标注。
数据划分
  • 训练集 (Train):通常占总数据的80%左右,约2970张图像。
  • 验证集 (Validation):通常占总数据的20%左右,约743张图像。
数据特点
  • 草莓成熟度标注:每个图像都标注了草莓的成熟度等级,便于机器学习算法进行分类。
  • 丰富的标注:每张图像可能包含多个草莓实例,且每个实例都被准确地框出。
应用领域
  • 农业自动化:帮助农民在收获时更有效地筛选不同成熟度的草莓。
  • 食品质量控制:在分拣和包装过程中实现自动化,提高生产效率。
  • 科研应用:为计算机视觉和模式识别领域的研究提供有价值的数据资源。
1. 安装依赖库

首先,确保安装了必要的依赖库。可以在项目目录中的requirements.txt文件中列出这些依赖库,然后运行以下命令进行安装:

pip install -r requirements.txt

requirements.txt 文件内容示例:

torch==1.10.0
torchvision==0.11.1
pandas==1.3.4
cv2
albumentations==1.1.0
2. 创建数据集

定义一个自定义的数据集类,并创建数据加载器。

import os
import pandas as pd
import cv2
from torch.utils.data import Dataset, DataLoader
from torchvision.transforms import Compose, ToTensor, Normalize, Resize
from albumentations import HorizontalFlip, RandomBrightnessContrast, ShiftScaleRotate, BboxFromMasks, BBoxFormatPASCAL
from albumentations.pytorch import ToTensorV2# 自定义数据集类
class StrawberryDataset(Dataset):def __init__(self, data_root, annotations_file, transforms=None):self.data_root = data_rootself.annotations = pd.read_csv(annotations_file)self.transforms = transformsdef __len__(self):return len(self.annotations)def __getitem__(1, idx):img_path = os.path.join(self.data_root, self.annotations.iloc[idx, 0])image = cv2.imread(img_path)bboxes = self.annotations.iloc[idx, 1:].values.reshape(-1, 4)  # bounding box coordinateslabels = self.annotations.columns[1:]if self.transforms:augmented = self.transforms(image=image, bboxes=bboxes)image = augmented['image']bboxes = augmented['bboxes']return image, bboxes, labels# 图像预处理
def get_transforms():"""构建预处理函数"""_transform = [Resize(height=416, width=416, interpolation=cv2.INTER_LINEAR),HorizontalFlip(p=0.5),RandomBrightnessContrast(p=0.2),ShiftScaleRotate(p=0.5, shift_limit=0.0625, scale_limit=0.2, rotate_limit=15),Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),ToTensorV2(),BboxFromMasks(format=BBoxFormatPASCAL)]return Compose(_transform)# 创建数据加载器
train_dataset = StrawberryDataset(data_root='path_to_your_train_images',annotations_file='path_to_your_train_annotations.csv',transforms=get_transforms()
)
val_dataset = StrawberryDataset(data_root='path_to_your_val_images',annotations_file='path_to_your_val_annotations.csv',transforms=get_transforms()
)train_loader = DataLoader(train_dataset, batch_size=32, shuffle=True, num_workers=4)
val_loader = DataLoader(val_dataset, batch_size=32, shuffle=False, num_workers=4)
3. 训练YOLOv5模型

使用YOLOv5进行训练。

!git clone https://github.com/ultralytics/yolov5  # 下载YOLOv5代码仓库
cd yolov5# 使用YOLOv5训练模型
python train.py --weights yolov5s.pt --data path_to_your_data.yaml --name strawberry_maturity_detection --img 416 --batch 16 --epochs 100 --device 0
  • 数据配置文件:创建一个名为data.yaml的数据配置文件,其中包含训练和验证数据集的信息。
train: path_to_your_train_images
val: path_to_your_val_images
nc: 3
names: ['raw', 'turning', 'ripe']
4. 调整模型
  • 超参数调整:根据实际情况调整模型的超参数,例如学习率、批大小等。
  • 数据增强:增加数据增强策略,如旋转、缩放、翻转等,以提高模型鲁棒性。
5. 预测与评估

完成训练后,可以使用训练好的模型对新的图片进行预测和评估。

from models.experimental import attempt_load
from utils.datasets import ImageList
from utils.torch_utils import select_device, time_synchronized
from utils.plots import plot_results# 加载模型
device = select_device('0')
model = attempt_load('runs/train/exp/weights/best.pt', map_location=device)  # 加载最佳权重# 新建数据集
test_dataset = ImageList('path_to_test_images', transform=get_transforms())
test_loader = DataLoader(test_dataset, batch_size=1, shuffle=False, num_workers=4)# 进行预测
results = []
with torch.no_grad():t0 = time_synchronized()for i, (x, path) in enumerate(test_loader):x = x.to(device)  # 将输入图像转换到设备上pred = model(x)[0]  # 获取预测结果results += plot_results(pred, path, save=True, show=False)  # 绘制预测结果图print(f'Time {time_synchronized("start") - t0:.3f} s')

注意:以上代码仅供参考,请根据实际情况修改路径和参数。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

01_SQLite

文章目录 ** SQLite 存储各类和数据类型 **** SQLite 五种亲缘类型** SQLite 创建数据表删除数据表插入数据信息从数据表中获取数据,以结果表的形式返回数据(结果集)updatedistinctorder bygroup byhaving触发器删除一个触发器(tr…

软件设计师——数据结构

本博文所有内容来自于B站up主zst_2001 目录 时间复杂度 常规数据结构 链表 栈与队列 ​编辑 串 数组 树 卡特兰数: 平衡二叉树 哈夫曼 图 AOV 排序 顺序 折半 哈希 时间复杂度 常规数据结构 链表 栈与队列 串 找i位置前面的字符串&#xff0c…

TIM输入捕获及其应用场景

一,TIM输入捕获介绍(IC(Input Capture)输入捕获) 定义:输入捕获模式下,当通道输入引脚出现指定电平跳变(如上升沿或下降沿)时,当前定时器的计数值&#xff0…

【Matlab案例】imageJ + matlab 实现物体轨迹追踪及路径彩色上色

我们经常看到一些文献中对细胞或者粒子的运动轨迹进行上色,不同的颜色对应着不同的时间。一纯色的轨迹实现起来很方便,彩色的轨迹如何实现呢?本文使用imageJ获取轨迹数据,使用matlab对轨迹进行上色。结果如下: 1. im…

酒店新科技,飞睿智能毫米波雷达人体存在感应器,智能照明创新节能新风尚

在这个日新月异的时代,科技正以未有的速度改变着我们的生活。从智能手机到智能家居,每一个细微之处都渗透着科技的魅力。而今,这股科技浪潮已经席卷到了酒店行业,为传统的住宿体验带来了翻天覆地的变化。其中,引人注目…

Linux驱动开发(速记版)--设备树

第五十二章 初识设备树 52.1 设备树介绍 设备树(Device Tree)是嵌入式系统和Linux内核中用于描述硬件的一种机制。 设备树概述 目的:描述硬件设备的特性、连接关系和配置信息。 优势:与平台无关,提高系统可移植性和可…

外贸网站怎么搭建对谷歌seo比较好?

外贸网站怎么搭建对谷歌seo比较好?搭建一个网站自然不复杂,但要想搭建一个符合谷歌seo规范的网站,那就要多注意了,你的网站做的再酷炫,再花里胡哨,但如果页面都是js代码,或者页面没有源代码内容…

相机基础概念

景深: 景深的定义 DOF:depth of filed 是指在摄影机镜头或其他成像器前沿能够取得清晰图像的成像所测定的被摄物体前后距离范围。光圈、镜头、及焦平面到拍摄物的距离是影响景深的重要因素。定义3:在镜头前方(焦点的前、后)有一…

【RISCV指令集手册】向量扩展v1.0

概述 从rvv 0.9说起 此前写过向量扩展0.9的阅读记录,三年已过,本以为不再参与RVV的相关开发,奈何造化弄人,旧业重操,真就世事难料呀。 总的来说1.0版本相比0.9版本的扩充了较多内容,但大部分为指令功能的…

Qt中使用QPainter绘制阴影

困扰了很久的问题,今天终于明白了如何绘制QGraphicDropShadowEffect同样效果的阴影,故写下这篇文章分享给大家。其方法是复制Qt源代码中QGraphicDropShadowEffect绘制实现的核心代码然后稍作修改实现,先看效果和封装过后的源代码:…

深度探索Kali Linux的精髓与实践应用

Kali Linux简介 Kali Linux作为全球网络安全领域的首选操作系统之一,其强大的功能性及广泛的适用范围令人瞩目。除了上述基础介绍外,让我们深入探究Kali Linux的几个关键特性及其在实际操作中的具体应用案例。 Kali工具集成:全面的安全工具…

计算机视觉——图像修复综述篇

目录 1. Deterministic Image Inpainting 判别器图像修复 1.1. sigle-shot framework (1) Generators (2) training objects / Loss Functions 1.2. two-stage framework 2. Stochastic Image Inpainting 随机图像修复 2.1. VAE-based methods 2.2. GAN-based methods …

【C++】“list”的介绍和常用接口的模拟实现

【C】“list”的介绍和常用接口的模拟实现 一. list的介绍1. list常见的重要接口2. list的迭代器失效 二. list常用接口的模拟实现(含注释)三. list与vector的对比 一. list的介绍 list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xf…

国庆普及模拟赛-5

题目链接: file:///C:/Users/Administrator/Desktop/%E4%B8%8B%E5%8F%91%E6%96%87%E4%BB%B61005/20241005.pdf T1: 题目分析:不需要进行模拟,想要获得分数最大化,只需要将大的数据相加,再减去小的数据。 …

C语言进阶版第16课—自定义类型:结构体

文章目录 1. 结构体类型的声明和初始化2. 结构体自引用3. 结构体内存对齐3.1 结构体内存对齐规则3.2 修改默认对齐数 4. 结构体传参4. 结构体实现位段5. 位段使用的注意事项 1. 结构体类型的声明和初始化 结构体在使用之前都要对其类型进行声明,关键字是struct&…

Pandas -----------------------基础知识(主要matplotlib知识)(七)

Dataframe变形 转置 T import pandas as pddata {2022: [10, 30, 15, 20], 2023: [40, 50, 36, 21]} df1 pd.DataFrame(data, index[q1, q2, q3, q4]) print("原始数据框:") print(df1)df2 df1.Tprint("转换后数据框:") print(df…

计算机视觉算法知识详解(含代码示例)

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

FRP搭建内网穿透:云服务端 + 家用Linux/Windows主机【2024】

介绍 FRP是一个可以自己搭建内网穿透服务的开源项目,开源地址直达: FRP-GitHub 实际上frp由两个程序组成 ①frps:在服务端运行的程序 ②frpc:在客户端运行的程序 运作方式示意图如下 服务端 因为服务上使用了1Panel面板,直接在应用商店安…

【算法系列-链表】删除链表的倒数第N个结点

【算法系列-链表】删除链表的倒数第N个结点 文章目录 【算法系列-链表】删除链表的倒数第N个结点1. 算法分析🛸2. 模拟解决问题2.1 思路分析🎯2.2 代码示例🌰 3. 双指针(快慢指针)解决问题3.1 思路分析🎯3.2 代码示例&#x1f330…

软件验证与确认实验二-单元测试

目录 1. 实验目的及要求.................................................................................................... 3 2. 实验软硬件环境.................................................................................................... 3 …