松材线虫多光谱数据集
无人机:dji mavic3 mutispectral
波段:red green rededge nir rgb
面积:39.05平方公里
数据:rgb影像,四个单波段影像,NDVI GNDVI LCI NDRE OSAVI 5个指数图
分辨率:0.03~0.07米
采集时间:2022.12
可赠送标注图层(经实地踏查,已排除变色木干扰)
部分取样。
松材线虫多光谱数据集
项目背景:
松材线虫病(Bursaphelenchus xylophilus)是一种严重的林业病害,对松林生态系统构成了重大威胁。为了有效监测和防治松材线虫病,采用先进的遥感技术和多光谱成像技术变得尤为重要。本数据集利用DJI Mavic 3 Multi-Spectral无人机采集的多光谱数据,旨在为松材线虫病的早期识别与防治提供强有力的数据支持。
数据集概述:
- 名称:松材线虫多光谱数据集
- 采集设备:DJI Mavic 3 Multi-Spectral无人机
- 波段:红色(Red)、绿色(Green)、红边(RedEdge)、近红外(NIR)、RGB
- 覆盖面积:39.05平方公里
- 数据类型:RGB影像、四个单波段影像、NDVI、GNDVI、LCI、NDRE、OSAVI五个指数图
- 分辨率:0.03~0.07米
- 采集时间:2022年12月
- 附加内容:可赠送标注图层(已排除变色木干扰)
数据集特点:
- 高分辨率:数据集的分辨率达到0.03~0.07米,能够提供高精度的图像信息。
- 多光谱成像:包括红色、绿色、红边、近红外等多个波段的图像,能够从多个角度捕捉植物健康状况的信息。
- 多种指数图:提供NDVI、GNDVI、LCI、NDRE、OSAVI等五种植被指数图,便于进行深入的分析和研究。
- 专业标注:赠送标注图层,经实地踏查,排除了变色木等干扰因素,确保标注的准确性。
数据集内容:
- RGB影像:包含可见光范围内的高分辨率图像。
- 四个单波段影像:红色、绿色、红边、近红外波段的单波段图像。
- 五个指数图:NDVI(归一化差值植被指数)、GNDVI(绿叶归一化差值植被指数)、LCI(叶绿素指数)、NDRE(红边归一化差值植被指数)、OSAVI(优化土壤调整植被指数)。
数据集用途:
- 病害识别:可用于训练和评估深度学习模型,特别是在松材线虫病的识别方面。
- 早期预警:帮助实现病害的早期预警,减少病害扩散的风险。
- 科研与教育:为林业保护领域的研究和教学提供丰富的数据支持。
- 监测与管理:适用于林业管理部门,帮助监测松材线虫病的发生和发展情况。
使用场景:
- 无人机巡检:在无人机巡检系统中,利用该数据集训练的模型可以自动识别松材线虫病的症状。
- 病害监测:在病害监测系统中,利用该数据集可以提高监测的准确性和速度。
- 林业管理:在林业管理和保护工作中,利用该数据集可以提前发现潜在的病害风险,提高管理效率。
技术指标:
- 数据量:覆盖39.05平方公里的多光谱数据,包含多种波段和指数图。
- 分辨率:0.03~0.07米,确保图像的高精度。
- 标注精度:赠送的专业标注图层,确保数据的准确性和可靠性。
注意事项:
- 数据隐私:在使用过程中,请确保遵守相关法律法规,保护个人隐私。
- 数据预处理:在使用前,建议进行一定的数据预处理,如图像归一化等。
关键代码示例:
以下是关键代码的示例,包括数据加载、模型训练、检测和结果展示。
数据加载:
1import os
2import cv2
3import numpy as np
4from xml.etree import ElementTree as ET
5
6# 数据集路径
7DATASET_PATH = 'path/to/dataset'
8RGB_IMAGES_DIR = os.path.join(DATASET_PATH, 'rgb_images')
9MULTISPECTRAL_IMAGES_DIR = os.path.join(DATASET_PATH, 'multispectral_images')
10INDEX_IMAGES_DIR = os.path.join(DATASET_PATH, 'index_images')
11LABELS_DIR = os.path.join(DATASET_PATH, 'labels')
12
13# 加载数据集
14def load_dataset():
15 rgb_images = []
16 multispectral_images = []
17 index_images = []
18 labels = []
19
20 for img_file in os.listdir(RGB_IMAGES_DIR):
21 if img_file.endswith('.jpg'):
22 rgb_img_path = os.path.join(RGB_IMAGES_DIR, img_file)
23 multispectral_img_path = os.path.join(MULTISPECTRAL_IMAGES_DIR, img_file)
24 index_img_path = os.path.join(INDEX_IMAGES_DIR, img_file)
25 label_path = os.path.join(LABELS_DIR, img_file.replace('.jpg', '.xml'))
26
27 rgb_image = cv2.imread(rgb_img_path)
28 multispectral_image = cv2.imread(multispectral_img_path)
29 index_image = cv2.imread(index_img_path)
30
31 tree = ET.parse(label_path)
32 root = tree.getroot()
33
34 objects = []
35 for obj in root.findall('object'):
36 name = obj.find('name').text
37 bbox = obj.find('bndbox')
38 xmin = int(bbox.find('xmin').text)
39 ymin = int(bbox.find('ymin').text)
40 xmax = int(bbox.find('xmax').text)
41 ymax = int(bbox.find('ymax').text)
42
43 objects.append((name, (xmin, ymin, xmax, ymax)))
44
45 rgb_images.append(rgb_image)
46 multispectral_images.append(multispectral_image)
47 index_images.append(index_image)
48 labels.append(objects)
49
50 return rgb_images, multispectral_images, index_images, labels
51
52rgb_images, multispectral_images, index_images, labels = load_dataset()
模型训练:
1# 初始化YOLOv8模型
2model = YOLO('yolov8n.pt')
3
4# 定义训练参数
5EPOCHS = 100
6BATCH_SIZE = 16
7
8# 训练模型
9results = model.train(data='pine_nematode_multispectral.yaml', epochs=EPOCHS, batch=BATCH_SIZE)
模型检测:
1# 加载训练好的模型
2model = YOLO('best.pt')
3
4# 检测图像
5def detect_pine_nematode(image):
6 results = model.predict(image)
7 for result in results:
8 boxes = result.boxes
9 for box in boxes:
10 x1, y1, x2, y2 = box.xyxy[0]
11 conf = box.conf
12 class_id = box.cls
13
14 # 显示结果
15 cv2.rectangle(image, (int(x1), int(y1)), (int(x2), int(y2)), (0, 255, 0), 2)
16 cv2.putText(image, f'Class: {class_id}, Conf: {conf:.2f}', (int(x1), int(y1)-10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)
17
18 return image
19
20# 测试图像
21test_image = cv2.imread('path/to/test_image.jpg')
22result_image = detect_pine_nematode(test_image)
23cv2.imshow('Detected Pine Nematode', result_image)
24cv2.waitKey(0)
25cv2.destroyAllWindows()
配置文件 pine_nematode_multispectral.yaml
:
1train: path/to/train/images
2val: path/to/val/images
3
4nc: 2 # Number of classes: healthy and diseased
5names: ['healthy', 'diseased'] # Class names
6
7# Training parameters
8batch_size: 16
9epochs: 100
10img_size: [640, 640] # Image size
使用指南:
- 数据准备:确保数据集路径正确,并且数据集已准备好。
- 模型训练:运行训练脚本,等待训练完成。
- 模型检测:使用训练好的模型进行检测,并查看检测结果。
结语:
本数据集提供了一个高质量的松材线虫病多光谱识别数据集,支持无人机巡检、病害监测等多个应用场景。通过利用该数据集训练的模型,可以提高林业保护的效率和可靠性。如果您有任何问题或需要进一步的帮助,请查阅项目文档或联系项目作者。