水稻虫害检测数据集 水稻虫害 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()
这段代码展示了如何加载模型并使用它来检测一张图片中的害虫。请根据实际情况调整路径和其他参数。