昆虫种类识别数据集昆虫物种分类数据集YOLO格式VOC格式 目标检测 机器视觉数据集

时间:2024-10-24 19:42:30

 一、数据集概述

数据集名称:10类昆虫图像数据集

   数据集包含了多种农作物中常见的昆虫种类,包括军虫、豆蓟象、红蜘蛛、水稻瘿蚊、水稻卷叶蛾、水稻叶蝉、水稻水蚤、小麦薄翅薄翅蔗蝇、白背飞虱和黄稻螟。

1.1可能应用的领域

  • 农业害虫监测与防控: 通过识别不同种类的害虫,农业专家和农民可以更好地监测和评估害虫对作物的威胁程度,有针对性地制定防控策略,减少农作物损失。

  • 智能农业技术发展: 利用昆虫种类识别技术,可以开发智能农业设备和系统,实现自动化的害虫监测和防控,提高农业生产效率和作物品质。

  • 生态学研究与保护: 通过分析昆虫种类的分布和多样性,可以深入了解农田生态系统的结构和功能,为生态平衡的维护和生物多样性的保护提供数据支持。

 1.2数据采集

  • 确定昆虫分类数据集的范围和目标,包含多样的目标类别、尺寸和姿态变化,丰富的背景变化,标注精准度,数据平衡性,多样性的数据增强,数据质量控制。
  • 准备采集设备,包括相机、照明设备和标注工具。确保图像清晰度高,昆虫特征准确可见。

1.3数据集包含的分类

    包含995张昆虫图片,数据集中包含以下几种类别

  • 军虫:常见的稻田害虫,主要危害水稻等作物。
  • 豆龟甲:豆类作物中的一种有害昆虫,会造成豆类植物叶片损伤。
  • 红蜘蛛:植物害虫之一,常见于温暖干燥的环境下,会危害各类植物。
  • 水稻象蚊:水稻上的一种害虫,会影响水稻的生长和产量。
  • 稻纵卷叶螟:水稻上的一种害虫,幼虫主要以水稻叶片为食。
  • 稻叶蝉:常见于稻田的一种害虫,会吸食水稻的汁液,导致水稻生长受阻。
  • 稻田蚁:水稻生长季节中常见的害虫,会危害水稻的根系。
  • 小麦蓟蛉:小麦上的一种害虫,会危害小麦的生长。
  • 白背飞虱:植物害虫之一,会危害多种作物,如水稻、小麦等。
  • 黄化稻螟:水稻上的一种害虫,主要以水稻的幼苗和叶片为食。

二、数据标注

  2.1手动标注数据集  

  构建昆虫识别分类数据集涉及一系列复杂昆虫类别的标注,包括军虫、豆龟甲、红蜘蛛、水稻象蚊、稻纵卷叶螟、稻叶蝉、稻田蚁、小麦蓟蛉、白背飞虱和黄化稻螟。这些昆虫在不同环境中具有多样性外貌和微小差异,增加了标注工作的复杂度和工作量。标注人员需要投入大量时间和精力,准确标注每个昆虫的特征和类别,以捕捉它们的细微差别和准确特征。通过LabelImg逐一标注图像,确保每个昆虫类别都被准确标注,保障数据集的准确性和完整性,为昆虫分类算法的训练和改进打下坚实基础。

2.2 数据集结构

  在使用深度学习进行训练任务时,通常需要将数据集划分为训练集、验证集和测试集。这种划分是为了评估模型的性能并确保模型的泛化能力。数据集划分为训练集、验证集和测试集的比例。常见的比例为 70% 训练集、20% 验证集和 10% 测试集,也就是7:2:1。数据集已经按照标准比例进行划分。

标注格式:

  • VOC格式 (XML)​​​​​​​
  • YOLO格式 (TXT)
yolo_dataset/
│
├── train/
│   ├── images/
│   │   ├── image1.jpg
│   │   ├── image2.jpg
│   │   ├── ...
│   │
│   └── labels/
│       ├── image1.txt
│       ├── image2.txt
│       ├── ...
│
└── test...
└── valid...

voc_dataset/
│
├── train/
│   ├───├
│   │   ├── image1.xml
│   │   ├── image2.xml
│   │   ├── ...
│   │
│   └───├
│       ├── image1.jpg
│       ├── image2.jpg
│       ├── ...
│
└── test...
└── valid...

三、使用指南

步骤介绍

  • 数据预处理

    • 加载数据集,并根据 YOLO 模型的要求进行预处理,如将图像缩放至模型输入大小,生成标注文件等。
# 数据预处理及训练代码示例
import os
import numpy as np
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.applications import MobileNetV2
from tensorflow.keras.layers import Dense, GlobalAveragePooling2D
from tensorflow.keras.models import Model
from tensorflow.keras.optimizers import Adam

# 定义数据集路径
train_data_dir = 'train'
test_data_dir = 'test'

# 数据增强
train_datagen = ImageDataGenerator(
    rescale=1./255,
    shear_range=0.2,
    zoom_range=0.2,
    horizontal_flip=True
)

test_datagen = ImageDataGenerator(rescale=1./255)

# 加载数据集
train_generator = train_datagen.flow_from_directory(
    train_data_dir,
    target_size=(224, 224),
    batch_size=32,
    class_mode='categorical'
)

test_generator = test_datagen.flow_from_directory(
    test_data_dir,
    target_size=(224, 224),
    batch_size=32,
    class_mode='categorical'
)
  • 模型训练

    • 选择适合昆虫识别的 YOLO 版本。
    • 使用标注好的训练集数据进行模型训练。
    • 调整模型超参数、学习率等以优化模型性能。
  • 模型评估

    • 使用测试数据集对训练好的模型进行评估,计算精度、召回率等指标。
  • 模型部署

    • 将训练好的模型部署到生产环境中,用于昆虫识别任务。
# 加载YOLOv5模型
model = torch.hub.load('ultralytics/yolov5', 'yolov5s')

# 加载输入图像
image_path = 'image.jpg'
image = Image.open(image_path)

# 预处理输入图像
transform = transforms.Compose([
    transforms.Resize(size=(640, 640)),
    transforms.ToTensor(),
])
image = transform(image).unsqueeze(0)

# 进行模型推理
results = model(image)

# 处理模型输出
for result in results.pandas().xyxy[0].iterrows():
    _, data = result
    class_id = data['class']
    confidence = data['confidence']
    box = data[['xmin', 'ymin', 'xmax', 'ymax']].tolist()
    print(f"Class ID: {class_id}, Confidence: {confidence}, Bounding Box: {box}")
  • 结果可视化

    • 可视化模型在测试集上的检测结果,可以将检测结果叠加在原始图像上显示。