基于无人机影像的可见光单木分割数据集-json格式

news2024/12/24 8:49:19

基于无人机影像的可见光单木分割数据集,共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模型进行推理,并显示和保存推理结果。您可以根据实际需求进一步扩展和修改这段代码,以适应您的具体应用场景

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

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

相关文章

4.5 pandas 实战 分析抖音播放数据(1)

课程目标 基于pandas对抖音播放数据做数据分析 数据准备 点此去下载 课程内容 导包 import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns plt.rcParams["font.family"] "SimHei" plt.rcParams["ax…

道路坑洞分割数据集/道路裂纹分割数据集

1.道路坑洞,道路裂纹分割数据集,包含5790张坑洞分割图像数据(默认分割标注png图片,850MB)2.10000余张道路裂纹图像数据(默认分割标注png图片,3.7GB)3。道路坑洞,道路 道路坑洞与裂纹…

关于“华为杯”第二十一届中国研究生数学建模竞赛赛题下载及提交作品的重要提醒

↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 各参赛队伍: “华为杯”第二十一届中国研究生数学建模竞赛即将于2024年…

零基础玩转实在Agent -- 基础篇|实在Agent研究

前言 实在Agent是什么 实在Agent(智能体)是实在智能基于RPA和自研屏幕语义理解技术,结合最前沿的Al大模型打造的自动化智能体产品。 它能像朋友一样聊天,并通过对话的方式理解你的任务需求,自动规划任务的实现方式&…

Qt clicked()、clicked(bool)、toggled(bool)信号的区别和联系

clicked() 信号 所属控件:clicked()信号是QAbstractButton类(及其子类,如QPushButton、QRadioButton、QCheckBox等)的一个信号。clicked信号可以说是许多控件(特别是按钮类控件,如QPushButton)…

后台数据管理系统 - 项目架构设计-Vue3+axios+Element-plus(0920)

十三、文章分类页面 - [element-plus 表格] Git仓库:https://gitee.com/msyycn/vue3-hei-ma.git 基本架子 - PageContainer 功能需求说明: 基本架子-PageContainer封装文章分类渲染 & loading处理文章分类添加编辑[element-plus弹层]文章分类删除…

Vue3DevTools7是如何在vscode定位指定文件位置的?

Vue3DevTools7是如何在vscode定位指定文件位置的? 背景 今天在使用vue脚手架创建项目的时候,并发现一个新的(实验中的新功能),可以直接在我们的项目中集成Vue DevTools插件,浏览器插件devtools即将成为历史…

第十三周:机器学习笔记

第十三周周报 摘要Abstract一、机器学习——Transformer(上)1. Sequence to Sequence(Seq 2 Seq,序列到序列模型) 的应用2. Transformer的结构2.1 Transformer encoder(Transformer 编码器) 二、Pytorch学习1. 网络模型…

python爬虫初体验(一)

文章目录 1. 什么是爬虫?2. 为什么选择 Python?3. 爬虫小案例3.1 安装python3.2 安装依赖3.3 requests请求设置3.4 完整代码 4. 总结 1. 什么是爬虫? 爬虫(Web Scraping)是一种从网站自动提取数据的技术。简单来说&am…

BandiView 7.03 看图软件

BandiView 加入了大量现代化功能特性,比如支持 HDR 照片高动态范围效果、支持 HEIC / RAW / 漫画模式、免解压直接看图、查看 AI 图片提示词等 BandiView 是一款非常值得推荐的电脑全能看图浏览工具软件,软件的兼容性非常强,可以一站式满足用…

java通过org.eclipse.milo实现OPCUA客户端进行连接和订阅

前言 之前写过一篇关于MQTT的方式进行物理访问的文章:SpringBoot集成MQTT,WebSocket返回前端信息_springboot mqtt websocket-CSDN博客 最近又接触到OPCUA协议,想通过java试试看能不能实现。 软件 在使用java实现之前,想着有没…

欠款管理代码———未来之窗行业应用跨平台架构

一、欠款管理代码 function fun_会员_还款操作(会员卡信息id,MainID){var 未来之窗vos对话框_内容 ";var title"test";var 未来之窗vos对话框_id"hjksgfjkkhkj_child";CyberWin_Dialog.layer(未来之窗vos对话框_内容,{type:"url",title:&…

windows下,用docker部署xinference,为什么老是提示localhost无法访问?

部署xinference有两种方式: 一、本地部署 (略) 二、使用Docker部署(与运行) 其中又包括: 1)使用CPU的方式:(略) 1)使用GPU的方式&#xff1…

LeetCode_sql_day30(1264.页面推荐)

描述 1264.页面推荐 朋友关系列表: Friendship ------------------------ | Column Name | Type | ------------------------ | user1_id | int | | user2_id | int | ------------------------ (user1_id, user2_id) 是这张表具有唯一值的…

低代码可视化工具--vue条件判断v-if可视化设置-代码生成器

在Vue UniApp中,条件判断通常是通过指令v-if、v-else-if、v-else来实现的。这些机制允许你根据表达式的真假值来决定是否渲染某个元素或元素组,或者执行特定的逻辑。 条件判断说明 v-if 是惰性的:如果在初始渲染时条件为假,则什么…

mac os x 找不到钥匙串访问

昨天手贱更新了最新的mac系统,结果在实用工具中找不到钥匙串访问APP了。。。 最新mac系统为 15.0 (24A335) 真是醉了。。。 那就得想办法把他给呼出来,在开发者中心下载了一个.cer文件,然后双击打开,此时钥匙串打开了&#xff…

猿大师办公助手在线编辑Office为什么要在客户端电脑安装插件微软Office或金山WPS?

猿大师办公助手作为一款专业级的网页编辑Office方案,与在线云文档方案(飞书、腾讯文档等)不同,需要在客户端电脑安装猿大师办公助手插件及微软Office或者金山WPS软件,很多客户不理解为什么要这么麻烦,能否客…

从虚拟到现实:数字孪生与数字样机的进化之路

数字化技术高速发展的当下,计算机辅助技术已成为产品设计研发中不可或缺的一环,数字样机(Digital Prototype, DP)与数字孪生技术便是产品研发数字化的典型方法。本文将主要介绍数字样机与数字孪生在国内外的发展,并针对…

机器翻译之创建Seq2Seq的编码器、解码器

1.创建编码器、解码器的基类 1.1创建编码器的基类 from torch import nn#构建编码器的基类 class Encoder(nn.Module): #继承父类nn.Moduledef __init__(self, **kwargs): #**kwargs:不定常的关键字参数super().__init__(**kwargs)def forward(self, X, *args…