您的位置:首页 > 财经 > 产业 > 松材线虫多光谱数据集

松材线虫多光谱数据集

2024/11/16 10:43:52 来源:https://blog.csdn.net/2301_78240361/article/details/142292264  浏览:    关键词:松材线虫多光谱数据集

松材线虫多光谱数据集
无人机: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月
  • 附加内容:可赠送标注图层(已排除变色木干扰)
数据集特点:
  1. 高分辨率:数据集的分辨率达到0.03~0.07米,能够提供高精度的图像信息。
  2. 多光谱成像:包括红色、绿色、红边、近红外等多个波段的图像,能够从多个角度捕捉植物健康状况的信息。
  3. 多种指数图:提供NDVI、GNDVI、LCI、NDRE、OSAVI等五种植被指数图,便于进行深入的分析和研究。
  4. 专业标注:赠送标注图层,经实地踏查,排除了变色木等干扰因素,确保标注的准确性。
数据集内容:
  • RGB影像:包含可见光范围内的高分辨率图像。
  • 四个单波段影像:红色、绿色、红边、近红外波段的单波段图像。
  • 五个指数图:NDVI(归一化差值植被指数)、GNDVI(绿叶归一化差值植被指数)、LCI(叶绿素指数)、NDRE(红边归一化差值植被指数)、OSAVI(优化土壤调整植被指数)。
数据集用途:

  1. 病害识别:可用于训练和评估深度学习模型,特别是在松材线虫病的识别方面。
  2. 早期预警:帮助实现病害的早期预警,减少病害扩散的风险。
  3. 科研与教育:为林业保护领域的研究和教学提供丰富的数据支持。
  4. 监测与管理:适用于林业管理部门,帮助监测松材线虫病的发生和发展情况。
使用场景:
  1. 无人机巡检:在无人机巡检系统中,利用该数据集训练的模型可以自动识别松材线虫病的症状。
  2. 病害监测:在病害监测系统中,利用该数据集可以提高监测的准确性和速度。
  3. 林业管理:在林业管理和保护工作中,利用该数据集可以提前发现潜在的病害风险,提高管理效率。
技术指标:
  • 数据量:覆盖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
使用指南:
  1. 数据准备:确保数据集路径正确,并且数据集已准备好。
  2. 模型训练:运行训练脚本,等待训练完成。
  3. 模型检测:使用训练好的模型进行检测,并查看检测结果。
结语:

本数据集提供了一个高质量的松材线虫病多光谱识别数据集,支持无人机巡检、病害监测等多个应用场景。通过利用该数据集训练的模型,可以提高林业保护的效率和可靠性。如果您有任何问题或需要进一步的帮助,请查阅项目文档或联系项目作者。

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com