基于无人机影像的可见光单木分割数据集-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的设计——这个设计一些…...
XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...
日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...
树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...
Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...
