基于无人机影像的可见光单木分割数据集-json格式
基于无人机影像的可见光单木分割数据集,共1700张影像,数据集大小3.6GB,分割标注采用标准json格式。
该数据集是一个专门用于基于无人机可见光影像进行单木分割的数据集,旨在帮助研究人员和开发者训练和评估基于深度学习的图像分割模型。数据集中的图像涵盖了多种环境下的森林场景,包括不同树种、密度和生长阶段的树木。每张图像都经过详细的像素级标注,适用于单木识别、计数以及森林资源管理等应用。
数据规模
- 总样本数量:1700张可见光影像
- 数据量:约3.6GB
- 分辨率:具体的分辨率可能因无人机拍摄高度而异,但均为高分辨率图像,以确保树木细节清晰。
- 标注目标:所有图像都带有详细的像素级标注信息,采用标准JSON格式进行标注,适用于训练和验证图像分割模型。
目标类别及数量
数据集中包含以下目标类别:
- 单木 (Individual Trees): 每棵树都被单独标注,具体实例数量未提供,但可以假设每张图像中有多棵树木。
图像特性
- 高分辨率可见光影像:图像由无人机拍摄,具有较高的空间分辨率,确保了树木细节的清晰度。
- 多样化的森林环境:覆盖了不同地理位置、树种、密度和生长阶段的森林场景。
- 丰富的背景信息:图像中包含了复杂的自然背景,如草地、灌木丛和其他植被,增加了分割任务的难度。
标注格式
数据集中的标注信息采用了标准的JSON格式文件。每个图像都有一个对应的标签文件,记录了每个单木的像素级掩码(mask)信息。这种格式可以直接用于多种图像分割框架,如U-Net、Mask R-CNN等。
数据集结构
典型的数据集目录结构如下:
深色版本
1drone_visible_tree_segmentation_dataset/
2├── images/
3│ ├── img_00001.jpg
4│ ├── img_00002.jpg
5│ └── ...
6├── annotations/
7│ ├── img_00001.json
8│ ├── img_00002.json
9│ └── ...
10└── README.md # 数据集说明文件
应用场景
该数据集可以用于以下应用场景:
- 森林资源管理:通过无人机影像进行树木计数、种类识别和健康状况评估,辅助森林资源管理和保护。
- 精准林业:帮助林场管理者优化种植策略,提高森林覆盖率和生态效益。
- 智能监控系统:辅助智能监控系统,在各种复杂环境中进行树木检测和分割。
- 科研分析:用于研究图像分割算法和技术的发展趋势,特别是在无人机可见光影像中的应用。
示例代码
以下是一个使用Python和相关库(如OpenCV、PIL等)来加载和展示数据集的简单示例代码:
python
深色版本
1import os
2import cv2
3import numpy as np
4from PIL import Image
5import json
6
7# 数据集路径
8dataset_path = 'path/to/drone_visible_tree_segmentation_dataset/'
9
10# 加载图像和标注
11def load_image_and_mask(image_path, annotation_path):
12 # 读取图像
13 image = Image.open(image_path).convert('RGB')
14
15 # 解析JSON标注文件
16 with open(annotation_path, 'r') as infile:
17 annotation = json.load(infile)
18 masks = []
19 for obj in annotation['objects']:
20 mask = np.array(obj['mask'], dtype=np.uint8) # 假设mask是以二维数组形式存储
21 masks.append(mask)
22 return image, masks
23
24# 展示图像和掩码
25def show_image_with_masks(image, masks):
26 img = np.array(image)
27 for mask in masks:
28 # 将掩码转换为彩色图层
29 colored_mask = np.zeros_like(img)
30 colored_mask[mask > 0] = [0, 255, 0]
31
32 # 叠加掩码到原图
33 img = cv2.addWeighted(img, 1, colored_mask, 0.5, 0)
34
35 cv2.imshow('Image with Masks', img)
36 cv2.waitKey(0)
37 cv2.destroyAllWindows()
38
39# 主函数
40if __name__ == "__main__":
41 images_dir = os.path.join(dataset_path, 'images')
42 annotations_dir = os.path.join(dataset_path, 'annotations')
43
44 # 获取图像列表
45 image_files = [f for f in os.listdir(images_dir) if f.endswith('.jpg')]
46
47 # 随机选择一张图像
48 selected_image = np.random.choice(image_files)
49 image_path = os.path.join(images_dir, selected_image)
50 annotation_path = os.path.join(annotations_dir, selected_image.replace('.jpg', '.json'))
51
52 # 加载图像和标注
53 image, masks = load_image_and_mask(image_path, annotation_path)
54
55 # 展示带有掩码的图像
56 show_image_with_masks(image, masks)
这段代码展示了如何加载图像和其对应的JSON标注文件,并在图像上绘制像素级掩码。您可以根据实际需求进一步扩展和修改这段代码,以适应您的具体应用场景。
示例代码:使用预训练模型进行推理
以下是使用预训练模型进行推理的示例代码。这里我们假设您使用的是基于U-Net的模型,但您可以根据需要选择其他支持像素级分割的模型。
python
深色版本
1import torch
2import torchvision
3import segmentation_models_pytorch as smp
4import cv2
5import numpy as np
6from PIL import Image
7import json
8
9# 数据集路径
10dataset_path = 'path/to/drone_visible_tree_segmentation_dataset/'
11subset = 'test' # 可以选择 'train' 或 'val'
12
13# 加载预训练模型
14model = smp.Unet(
15 encoder_name='resnet34',
16 encoder_weights='imagenet',
17 in_channels=3,
18 classes=2 # 背景 + 单木
19)
20weights_path = 'path/to/pretrained/unet_weights.pth' # 替换成实际的预训练模型路径
21model.load_state_dict(torch.load(weights_path))
22model.eval()
23
24# 主函数
25if __name__ == "__main__":
26 images_dir = os.path.join(dataset_path, 'images')
27 set_file = os.path.join(dataset_path, 'annotations', f'{subset}.txt')
28
29 # 获取图像列表
30 with open(set_file, 'r') as f:
31 image_files = [line.strip() + '.jpg' for line in f.readlines()]
32
33 # 随机选择一张图像
34 selected_image = np.random.choice(image_files)
35 image_path = os.path.join(images_dir, selected_image)
36
37 # 读取并预处理图像
38 image = Image.open(image_path).convert('RGB')
39 transform = torchvision.transforms.Compose([
40 torchvision.transforms.ToTensor(),
41 torchvision.transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
42 ])
43 image_tensor = transform(image).unsqueeze(0)
44
45 # 使用预训练模型进行推理
46 with torch.no_grad():
47 predictions = model(image_tensor)
48
49 # 处理预测结果
50 pred_mask = predictions.squeeze().cpu().numpy()
51 pred_mask = (pred_mask > 0.5).astype(np.uint8) # 二值化掩码
52
53 # 在图像上绘制掩码
54 img = np.array(image)
55 colored_mask = np.zeros_like(img)
56 colored_mask[pred_mask == 1] = [0, 255, 0]
57 img = cv2.addWeighted(img, 1, colored_mask, 0.5, 0)
58
59 # 显示结果
60 cv2.imshow('Image with Mask', img)
61 cv2.waitKey(0)
62 cv2.destroyAllWindows()
这段代码展示了如何使用预训练的U-Net模型进行推理,并显示和保存推理结果。您可以根据实际需求进一步扩展和修改这段代码,以适应您的具体应用场景
相关文章:

基于无人机影像的可见光单木分割数据集-json格式
基于无人机影像的可见光单木分割数据集,共1700张影像,数据集大小3.6GB,分割标注采用标准json格式。 该数据集是一个专门用于基于无人机可见光影像进行单木分割的数据集,旨在帮助研究人员和开发者训练和评估基于深度学习的图像分割…...

毕业设计选题:基于ssm+vue+uniapp的捷邻小程序
开发语言:Java框架:ssmuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:M…...
【毕业设计】基于 PHP 开发的社区交流系统
基于 PHP 开发的社区交流系统可以是一个论坛、博客平台或是问答网站等形式的在线平台,用于用户之间的互动交流。以下是一个简单的 PHP 社区交流系统的示例,包括用户注册、登录、发布帖子、回复帖子等功能。 技术栈 前端:HTML, CSS, JavaScr…...
RK3568 解决Ubuntu加载驱动模块报错以及开机启动如何自动加载模块
遇到问题是,当我在buildroot文件系统跑这个ko文件,是可以正常使用的,但是在Ubuntu上却跑不了,提示:insmod: ERROR: could not insert module analyze_inode.ko: Operation not permitted 参考其他博主的博客,其实只要添加sudo即可,可能是权限问题导致无法加载,这里记录…...

Fyne ( go跨平台GUI )中文文档-Fyne总览(二)
本文档注意参考官网(developer.fyne.io/) 编写, 只保留基本用法 go代码展示为Go 1.16 及更高版本, ide为goland2021.2 这是一个系列文章: Fyne ( go跨平台GUI )中文文档-入门(一)-CSDN博客 Fyne ( go跨平台GUI )中文文档-Fyne总览(二)-CSDN博客 Fyne…...
微服务常见面试题总结
文章目录 1 概念1.1 你对微服务是怎么理解的1.2 微服务带来了哪些挑战?1.3 说下微服务有哪些组件?🔥 2 注册中心2.1 注册中心有什么用?🔥2.2 SpringCloud可以选择哪些注册中心?2.3 说下Eureka 和 Nacos的区…...

汽车电子零部件(16):ZCU区域控制器
ZCU(Zone Control Unit,区域控制器),功能主要包括哦数据交互、信号控制及电力分配等,是智能网联汽车中不可或缺的关键组件,ECU负责车身、车门、车窗、天窗、车灯(外大灯、内氛围灯)、座椅(可能包括座椅音响)、雷达甚至后排娱乐系统等控制执行单元的集中化。 CCU(centr…...
如何在Java服务中实现数据一致性:事务与锁机制的综合应用
如何在Java服务中实现数据一致性:事务与锁机制的综合应用 大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在Java服务端开发中,确保数据一致性是构建稳定可靠系统的关键。尤…...

记录一下ElementUI 3 在浏览器导入, table表格显示问题
当时问题忘了截图, 现在通过文字记录一下问题 我直接在html了引入 vue3 和 ElementUI 3 , 使用了table组件, 但是表格的td 总是只显示一列, 问题是我的 el-table-column 标签 没有结束标签 , 在vue文件模块化里写不需要结束标签, 在浏览器里无法直接识别出来, 所以他是渲染了第…...
【JavaScript】数据结构之堆
什么是堆? 堆都能用树来表示,一般树的实现都是利用链表。而 二叉堆 是一种特殊的堆,它用完全二叉树来表示,却可以利用数组实现。平时使用最多的是二叉堆。二叉堆易于存储,并且便于索引。堆数据结构像树,但…...

工程车辆目标检测、程车检测算法、工程车辆类型检测算法
工程车检测算法主要用于智能交通系统、建筑工地管理、矿山开采、物流运输等领域,通过图像识别技术来检测和识别工程车,以提高安全管理、交通流量管理和资源调度的效率。以下是关于工程车检测算法的技术实现、应用场景及优势的详细介绍。 一、技术实现 工…...

【技术文章】ArcGIS Pro如何批量导出符号和工程样式?
目录 1.确定Pro软件版本 2.共享工程样式 3.管理和调用项目样式 制作好的地图,如何快速分享地图中的符号样式用于其它地图的制作? 在ArcMap软件中,可以通过命令一键批量导出所有符号。ArcGIS Pro软件是否也可以批量导出符号用于其它地图…...

javascript的闭包学习
为什么要产生闭包的概念,通俗来说一下。 公司有一个项目,分为两个部分,张三、李四各分配一个部分。 张三.js代码: var key我要吃肉 function fn(){console.log(key); } 李四.js代码: var key我要喝酒 function fn…...
JavaScript高级—— js 是单线程运行的
1、如何证明 js 执行时单线程的? ① setTimeout()的回调函数是在主线程执行的 ② 定时器回调函数只有在运行栈中的代码全部执行完后才有可能执行 2、为什么 js 要用单线程模式,而不用多线程模式? ① JavaScript 的单…...

Java 微服务框架 HP-SOA v1.1.4
HP-SOA 功能完备,简单易用,高度可扩展的Java微服务框架。 项目主页 : https://www.oschina.net/p/hp-soa下载地址 : https://github.com/ldcsaa/hp-soa开发文档 : https://gitee.com/ldcsaa/hp-soa/blob/master/README.mdQQ Group: 44636872, 66390394…...

代码随想录Day 52|题目:101.孤岛的面积、102.沉没孤岛、103.水流问题、104.建造最大岛屿
提示:DDU,供自己复习使用。欢迎大家前来讨论~ 文章目录 图论part03题目一:101.孤岛的总面积解题思路DFS**BFS** 题目二:102. 沉没孤岛解题思路 题目三:103. 水流问题解题思路优化 题目四:104.建造最大岛屿…...

go webapi上传文件
一、导入依赖 import "net/http" 我这里用到了Guid所以安装依赖 go get github.com/google/uuid 二、main.go package mainimport ("fmt""github.com/jmoiron/sqlx""github.com/tealeg/xlsx""log""path/filepath&q…...

【小沐学GIS】基于Openstreetmap创建Sionna RT场景(Python)
文章目录 1、简介1.1 blender 2、下载和安装2.1 Python2.2 jupyter 3、运行结语 1、简介 1.1 blender https://www.blender.org/ Blender 是一款免费开源的3D创作套件。 使用 Blender,您可以创建3D可视化效果,例如静态图像、3D动画、VFX(…...
网安面试题1
深信服厂商面 自我介绍 我看到你介绍里面有提到独立设计网络拓扑图,你知道内网有哪些攻击途径吗 护网红队有什么成果 sql注入有哪些类型 sql注入的防御方式 讲一个你工作中遇到的应急响应 怎么判断内网的攻击是不是真实攻击 Windows中了勒索病毒你应该怎么办 linux被…...

你了解system V的ipc底层如何设计的吗?消息队列互相通信的原理是什么呢?是否经常将信号量和信号混淆呢?——问题详解
前言:本节主要讲解消息队列, 信号量的相关知识。 ——博主主要是以能够理解为目的进行讲解, 所以对于接口的使用或者底层原理很少涉及。 主要的讲解思路就是先讨论消息队列的原理, 提一下接口。 然后讲解ipc的设计——这个设计一些…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...

Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...

【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式
今天是关于AI如何在教学中增强学生的学习体验,我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育,这并非炒作,而是已经发生的巨大变革。教育机构和教育者不能忽视它,试图简单地禁止学生使…...

vulnyx Blogger writeup
信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

免费数学几何作图web平台
光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...
关于uniapp展示PDF的解决方案
在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项: 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库: npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...