松材线虫多光谱数据集

news2024/9/22 10:25:06

松材线虫多光谱数据集
无人机: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. 模型检测:使用训练好的模型进行检测,并查看检测结果。
结语:

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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2139269.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【智路】智路OS 欢迎来到智路OS路侧操作系统开发手册

https://airos-edge.readthedocs.io/zh/latest/ 欢迎来到智路OS路侧操作系统开发手册 智路OS 是一套完整的软件和服务开放系统, 由路侧操作系统(airos-edge),车端(airos-vehicle)和云端开发者平台共同构成…

【Spring Boot】SpringBoot自动装配-Import

目录 一、前言二、 定义三、使用说明3.1 创建项目3.1.1 导入依赖3.1.2 创建User类 3.2 测试导入Bean3.2.1 修改启动类 3.3 测试导入配置类3.3.1 创建UserConfig类3.3.2 修改启动类 3.4 测试导入ImportSelector3.4.1 创建UseImportSelector类3.4.2 修改启动类3.4.3 启动测试 3.5…

Python 二维码(QR码)生成器:使用python-qrcode简化条码创建

在数字时代,QR码已成为快速信息共享和数据传输的必备工具。无论是用于市场营销活动、活动签到,还是仅仅分享Wi-Fi凭证,QR码都提供了一种方便的方式来打包和扫描访问信息。今天,我们将探索python-qrcode库,这是一个强大…

Golang | Leetcode Golang题解之第409题最长回文串

题目&#xff1a; 题解&#xff1a; func longestPalindrome(s string) int {mp : map[byte]int{}for i : 0; i < len(s); i {mp[s[i]]}res : 0for _, v : range mp {if v&1 1 {res v - 1} else {res v}}if res<len(s) {res}return res }

【MyBatis精讲】从入门到精通的详细指南:简化Java持久层操作的艺术

文章目录 【MyBatis精讲】从入门到精通的详细指南&#xff1a;简化Java持久层操作的艺术1.mybatis快速入门1.1创建步骤1.2mapper代理开发模式 2.mybatis增删改查2.1查询所有数据2.2 id查询数据2.3插入数据2.4修改数据2.5删除数据2.6 mybatis多条件查询2.7 mybatis动态条件查询 …

HTML标签优先级

HTML&#xff08;HyperText Markup Language&#xff09;标签的位置对于页面的结构、性能以及可维护性至关重要。合理安排标签的位置不仅有助于提高网页的加载速度&#xff0c;还能使得代码更加清晰易懂。以下是一些关于HTML标签放置的基本规则和建议&#xff1a; 1. 文档类型…

web安卓逆向之必学HTML基础知识

文章目录 HTML基础知识一、HTML的介绍1. HTML定义2. HTML 的作用1. 定义网页的结构2. 实现超文本链接3. 支持多媒体内容4. 提供表单交互5. 提高网页的可访问性和 SEO 3. 小结 二、html的基本结构1. HTML 基本结构2. HTML 基本结构的详细介绍3. 教学案例4. 补充知识5. 小结 三、…

【网络通信基础与实践第三讲】传输层协议概述包括UDP协议和TCP协议

一、进程间的通信 通信的两端应当是两个主机中的应用进程&#xff0c;也就是说&#xff0c;端到端的通信是应用进程之间的通信 运输层有一个很重要的功能就是复用和分用&#xff0c;复用是指在发送方不同的应用进程都可以使用同一个运输层协议传送数据&#xff0c;分用是指接…

C++前后缀分解

相关知识点 C算法与数据结构 打开打包代码的方法兼述单元测试 这个算法很容易想到&#xff0c;学习了本文后&#xff0c;可以更快得想到。 前后缀分解 分治法的一种&#xff0c;将数组和字符串&#xff0c;拆分成前缀和后缀。字符串(数组&#xff09;的前缀是字符串的前i个元…

QT模型视图结构2

文章目录 Qt 模型视图结构——模型类(二)1.基本概念1.1.模型的基本结构1.2.模型索引1.3.行号和列号1.4.父项1.5.项的角色 Qt 模型视图结构——模型类(二) ​ 模型/视图结构是一种将数据存储和界面展示分离的编程方法。模型存储数据&#xff0c;视图组件显示模型中的数据&#…

ChatGPT提示词-中文版(awesome-chatgpt-prompts中文版)

原是Github上110.6K星的项目&#xff1a;GitHub - f/awesome-chatgpt-prompts: This repo includes ChatGPT prompt curation to use ChatGPT better. 我翻译成了中文需要自提 我用夸克网盘分享了「Chat GPT提示词.csv」&#xff0c;点击链接即可保存。打开「夸克APP」在线查看…

Windows11 WSL2的ubuntu 22.04中拉取镜像报错

问题描述 在windows11 WSL2的ubuntu 22.04中拉取镜像报错。错误为&#xff1a; Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting header…

深度学习的关键数据结构——张量解释

参考英文文章: https://deeplizard.com/learn/video/Csa5R12jYRghttps://deeplizard.com/learn/video/Csa5R12jYRg 什么是张量&#xff08;Tensor&#xff09; 神经网络中的输入、输出和变换都是用张量表示的&#xff0c;因此&#xff0c;神经网络编程大量使用张量。张量的概念…

【资料分析】特殊考点——拉动增长、贡献率、容斥问题

拉动增长和增量贡献率 第X产业增加值 是一个整体名称&#xff0c;例如张狗剩这是一个整体的名字 增量贡献率 部分增量/ 整体增量&#xff0c;已知增量贡献率80.6%,对应的部分增量可以求得&#xff08;现期2632&#xff0c;增长率10.3%&#xff0c;可用假设分配&#xff09;&a…

【Linux 20】进程控制

文章目录 &#x1f308; 一、创建线程⭐ 1. 线程创建函数⭐ 3. 给线程传参⭐ 4. 创建多线程⭐ 5. 获取线程 ID &#x1f308; 二、终止线程⭐1. 使用 return 终止线程⭐ 2. 使用 pthread_exit 函数终止线程⭐ 3. 使用 pthread_cancel 函数终止线程 &#x1f308; 三、等待线程⭐…

如何查看串口被哪个程序占用?截止目前最方便的方法

痛点&#xff1a;串口因为某种原因被占用&#xff0c;如何找到罪魁祸首&#xff1f; 做开发的小伙伴们&#xff0c;经常会遇到这样的问题&#xff1a;串口因为某种原因被占用&#xff0c;导致无法通讯&#xff0c;但是又找不到被哪个程序占用。只有重启电脑&#xff0c;才能解…

Python计算机视觉 第10章-OpenCV

Python计算机视觉 第10章-OpenCV OpenCV 是一个C 库&#xff0c;用于&#xff08;实时&#xff09;处理计算视觉问题。实时处理计算机视觉的 C 库&#xff0c;最初由英特尔公司开发&#xff0c;现由 Willow Garage 维护。OpenCV 是在 BSD 许可下发布的开源库&#xff0c;这意味…

[产品管理-20]:NPDP新产品开发 - 18 - 产品设计与开发工具 - 初始设计与规格定义

目录 前言&#xff1a; 一、什么是初始设计规格 二、初始设计与规格定义的工具 2.1 用户 - 功能性设计 1、定义与目的 2、主要内容 3、重要性 4、注意事项 2.2 用户 - 可用性设计 1、定义与目的 2、主要原则 3、实施步骤 4、重要性 2.3 生产 - 可生产性设计 1、…

Linux FTP服务问题排查

一、问题描述 最近linux虚拟机重启之后发现&#xff0c;FTP服务总是不正常&#xff0c;工具无法连接。 二、排查及处理过程 1、检查ftp服务是否正常安装&#xff1a;yes rpm -qa|grep vsftpd 2、检查ftp服务是否正常启动&#xff1a; systemctl status vsftpd 启动vsftpd sys…

Lnux-gcc/g++使用

目录 1.gcc/g介绍 1.什么是 gcc / g 2.gcc/g指令格式 2. gcc / g 实现程序翻译的过程 1.预处理(进行宏替换) 2.编译(生成汇编&#xff09; 3.汇编&#xff08;生成机器可识别代码&#xff09; 4.连接&#xff08;生成可执行文件或库文件&#xff09; 1.gcc/g介绍 1.什么…