水稻虫害检测数据集 水稻虫害 8900张 带标注 voc yolo

水稻虫害检测数据集 水稻虫害 8900张 带标注 voc yolo

label| pic_ num| box_ _num
green- I eafhopper: (1759, 1838)
rice- -bug: (1790, 2302)
leaf-folder: (1815, 2602)
stem-borer: (1773, 1916)
whorl- maggot:(1815, 4528)
total: (8952, 13186)

这个水稻虫害检测数据集包含了8900张带有标注的图像,用于训练和评估机器学习模型来识别五种不同的水稻害虫。每张图像都包含了一个或多个害虫实例,并且每个实例都被边界框所标注。这些边界框的数据格式遵循VOC(PASCAL Visual Object Classes)和YOLO(You Only Look Once)标准,这使得数据集可以很容易地被多种目标检测框架所使用。

数据集详情

  • green-leafhopper:1759个图像样本,总共1838个边界框。
  • rice-bug:1790个图像样本,总共2302个边界框。
  • leaf-folder:1815个图像样本,总共2602个边界框。
  • stem-borer:1773个图像样本,总共1916个边界框。
  • whorl-maggot:1815个图像样本,总共4528个边界框。
  • 总计:8952个图像样本,总共13186个边界框。

关键代码示例

假设你想要使用这个数据集来训练一个基于YOLOv5的目标检测模型。首先确保你已经安装了YOLOv5及其依赖项。如果还没有安装,可以通过以下命令进行安装:

 
git clone https://github.com/ultralytics/yolov5  # 克隆YOLOv5仓库
cd yolov5
pip install -r requirements.txt  # 安装依赖
数据集准备

你需要将数据集转换成YOLOv5期望的格式。通常,这包括创建一个data.yaml文件,以及将图像和标签放置在正确的目录结构中。

 
# data.yaml
train: ../path/to/train/images
val: ../path/to/val/images

nc: 5  # 类别数量
names: ['green-leafhopper', 'rice-bug', 'leaf-folder', 'stem-borer', 'whorl-maggot']
训练模型

一旦你的数据集准备好并且配置文件设置完毕,你可以开始训练模型。这里是一个简单的训练脚本例子:

 

# train.py
import torch
from models.experimental import attempt_load
from utils.datasets import create_dataloader
from utils.general import check_dataset, check_file, check_img_size, non_max_suppression, scale_coords, set_logging
from utils.torch_utils import select_device, time_synchronized

set_logging()
device = select_device('')

# 加载预训练模型
model = attempt_load('yolov5s.pt', map_location=device)  # or yolov5m, yolov5l, yolov5x

# 创建数据加载器
data_loader, dataset = create_dataloader('../data/data.yaml', 64, 32, 640, single_cls=False)

# 开始训练
for epoch in range(epochs):
    model.train()
    for i, (imgs, targets, paths, _) in enumerate(data_loader):
        imgs = imgs.to(device).float() / 255.0  # 将图像归一化到0-1之间
        targets = targets.to(device)
        
        # 前向传播
        pred = model(imgs, augment=False)[0]
        
        # 处理预测结果
        pred = non_max_suppression(pred, conf_thres=0.001, iou_thres=0.6, classes=None, agnostic=False)
        
        # 这里可以添加损失计算、反向传播等训练逻辑
        # ...

print("Training completed.")

上述代码仅作为示例,实际训练时需要更详细的设置,如优化器、学习率调整策略、损失函数等。YOLOv5项目中提供了完整的训练脚本,可以直接使用。

检测

训练完成后,你可以使用训练好的模型来进行实时检测或者对新的图像进行测试。

 
# detect.py
from pathlib import Path
import torch
from models.experimental import attempt_load
from utils.datasets import LoadImages
from utils.general import non_max_suppression, scale_coords, plot_one_box
from utils.torch_utils import select_device

device = select_device('')
model = attempt_load('runs/train/exp/weights/best.pt', map_location=device)  # 加载最佳权重
model.eval()

dataset = LoadImages('path/to/test/image.jpg', img_size=640)

for path, img, im0s, _ in dataset:
    img = torch.from_numpy(img).to(device)
    img = img.float()  # uint8 to fp16/32
    img /= 255.0  # 0 - 255 to 0.0 - 1.0
    if img.ndimension() == 3:
        img = img.unsqueeze(0)

    with torch.no_grad():
        pred = model(img, augment=False)[0]

    pred = non_max_suppression(pred, 0.4, 0.5, classes=None, agnostic=False)

    for i, det in enumerate(pred):  # detections per image
        p, s, im0 = path, '', im0s

        if len(det):
            det[:, :4] = scale_coords(img.shape[2:], det[:, :4], im0.shape).round()
            for *xyxy, conf, cls in reversed(det):
                label = f'{model.names[int(cls)]} {conf:.2f}'
                plot_one_box(xyxy, im0, label=label, color=(0, 255, 0), line_thickness=3)

cv2.imshow("Result", im0)
cv2.waitKey(0)
cv2.destroyAllWindows()

这段代码展示了如何加载模型并使用它来检测一张图片中的害虫。请根据实际情况调整路径和其他参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QQ_1309399183

一角两角不嫌少

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值