遥感图像垃圾处理场分割,北京地区高分2图像,3500张图像,共2GB,分割为背景,空地,垃圾,垃圾处理设施四类

news2024/10/2 18:07:52

 

遥感图像垃圾处理场分割,北京地区高分2图像,3500张图像,共2GB,分割为背景,空地,垃圾,垃圾处理设施四类

遥感图像垃圾处理场分割数据集

规模
  • 图像数量:3500张
  • 数据量:2GB
  • 分辨率:未明确提供,但通常高分2卫星图像的分辨率为1米(多光谱)和0.8米(全色)。
类别
  • 背景 (Background)
  • 空地 (Empty Land)
  • 垃圾 (Garbage)
  • 垃圾处理设施 (Waste Treatment Facilities)
数据特点
  • 高质量图像:所有图像均为高分辨率的北京地区高分2卫星图像,提供了丰富的细节信息,有助于提高分割精度。
  • 多样化场景:涵盖了不同类型的垃圾处理场及其周边环境,确保模型能够适应多种复杂的场景。
  • 详细标注:每张图像都附有详细的像素级分割标注,标明了每个像素所属的类别。
  • 区域覆盖:专注于北京地区的垃圾处理场,具有地域代表性,适用于特定区域的研究和应用。
应用场景
  • 环境监测:帮助环保部门实时监测垃圾处理场的情况,及时发现和处理环境污染问题。
  • 城市规划:支持城市规划部门在进行土地利用规划时考虑垃圾处理场的位置和规模。
  • 资源管理:优化垃圾处理设施的布局和资源配置,提高垃圾处理效率。
  • 研究与教育:用于科研机构的研究以及相关院校的教学,帮助学生和研究人员更好地了解遥感图像分割技术。
  • 智能监控:集成到智能监控系统中,自动识别和分类垃圾处理场的不同区域,提升监控效率。

数据集结构

假设数据集的文件结构如下:

waste_site_segmentation_dataset/
├── images/
│   ├── 0001.jpg
│   ├── 0002.jpg
│   └── ...
├── masks/
│   ├── 0001.png
│   ├── 0002.png
│   └── ...
└── metadata.csv

metadata.csv 文件内容示例:

image_id, mask_id, split
0001.jpg, 0001.png, train
0002.jpg, 0002.png, train
...

masks/0001.png 示例(像素级标注):

  • 每个像素值对应一个类别:
    • 0: 背景
    • 1: 空地
    • 2: 垃圾
    • 3: 垃圾处理设施

代码示例

下面是一个完整的Python脚本示例,展示如何加载数据集、使用预训练的分割模型进行垃圾处理场分割,并可视化分割结果。我们将使用PyTorch和常见的分割库(如Segmentation Models PyTorch)。

1. 安装依赖库

首先,确保安装了必要的依赖库。可以在项目目录中的requirements.txt文件中列出这些依赖库,然后运行以下命令进行安装

pip install -r requirements.txt

requirements.txt 文件内容示例:

torch==1.10.0
torchvision==0.11.1
opencv-python-headless==4.5.4.60
segmentation-models-pytorch==0.2.1
albumentations==1.1.0
2. 加载数据集和预训练模
import os
import cv2
import torch
import numpy as np
from segmentation_models_pytorch import Unet
from albumentations import Compose, Resize, Normalize
from albumentations.pytorch import ToTensorV2

# 设置设备
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')

# 加载预训练模型
model_path = 'path_to_your_model_directory/unet_waste_site_segmentation.pth'
model = Unet(encoder_name='resnet34', classes=4, activation=None)
model.load_state_dict(torch.load(model_path, map_location=device))
model.to(device)
model.eval()

# 图像预处理
def get_preprocessing(preprocessing_fn):
    """构建预处理函数"""
    _transform = [
        Resize(height=256, width=256, interpolation=cv2.INTER_LINEAR),
        Normalize(mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225)),
        ToTensorV2()
    ]
    return Compose(_transform)

preprocessing = get_preprocessing(None)

# 加载图像
def load_image(image_path):
    img = cv2.imread(image_path)
    if img is None:
        print(f"Failed to load image: {image_path}")
        return None
    return img

# 进行推理
def segment_image(img, model, preprocessing, device):
    # 预处理图像
    sample = preprocessing(image=img)
    img = sample['image'].unsqueeze(0).to(device)
    
    # 推理
    with torch.no_grad():
        pred = model(img)
        pred = torch.softmax(pred, dim=1).argmax(dim=1).squeeze().cpu().numpy()
    
    return pred

# 可视化分割结果
def visualize_segmentation(img, mask, class_colors):
    h, w, _ = img.shape
    mask = cv2.resize(mask, (w, h), interpolation=cv2.INTER_NEAREST)
    colored_mask = np.zeros_like(img)
    for i in range(len(class_colors)):
        colored_mask[mask == i] = class_colors[i]
    overlay = cv2.addWeighted(img, 0.7, colored_mask, 0.3, 0)
    return overlay

# 主函数
def main(image_dir, model, preprocessing, device):
    class_colors = {
        0: [0, 0, 0],  # 背景
        1: [0, 255, 0],  # 空地
        2: [255, 0, 0],  # 垃圾
        3: [0, 0, 255]  # 垃圾处理设施
    }
    
    for image_name in os.listdir(image_dir):
        if image_name.endswith('.jpg'):
            image_path = os.path.join(image_dir, image_name)
            img = load_image(image_path)
            if img is not None:
                pred_mask = segment_image(img, model, preprocessing, device)
                result = visualize_segmentation(img, pred_mask, class_colors)
                cv2.imshow('Waste Site Segmentation', result)
                cv2.setWindowTitle('Waste Site Segmentation', f'Image: {image_name}')
                if cv2.waitKey(0) & 0xFF == ord('q'):
                    break
    cv2.destroyAllWindows()

# 假设图像存储在'image'目录下
image_dir = 'path_to_your_image_directory'

# 运行主函数
main(image_dir, model, preprocessing, device)

说明

  • 路径设置:请根据实际的数据集路径调整path_to_your_image_directorypath_to_your_model_directory
  • 文件命名:假设图像文件名分别为.jpg。如果实际命名规则不同,请相应修改代码。
  • 可视化:通过绘制分割掩码并叠加到原图上,可以直观地看到图像中的不同区域。

进一步的应用

  • 训练深度学习模型:可以使用这个数据集来进一步训练或微调分割模型,以提高分割精度。
  • 数据增强:为了增加数据集的多样性和鲁棒性,可以使用数据增强技术(如旋转、翻转、缩放等)生成更多的训练样本。
  • 评估与优化:通过交叉验证和测试集评估模型性能,并不断优化模型参数,以提高分割准确率。

这个数据集对于垃圾处理场的自动分割具有重要的实用价值,可以帮助相关部门及时发现和处理垃圾处理场的问题,提升环境管理和资源利用效率。

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

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

相关文章

黑科技!Llama 3.2多模态AI震撼发布

黑科技!Llama 3.2多模态AI震撼发布 Meta发布Llama 3.2模型🚀,引领AI新潮流!它能处理文字、图片、视频📸,满足不同需求,性能媲美大牌选手✨。一键启动包已准备好,让你轻松体验AI的魔…

模版and初识vector

一、引言 在C语言中,不论是数组,还是结构体定义的数组,功能都比较欠缺,不是单纯的添加几个变量就能够解决的。缺少增删查改的功能,为了解决这个问题,C决定填上C语言这个坑,但是填过坑的人都知道…

秋招突击——算法练习——复习{双指针:移动零、盛最多的水、三数之和}——新作{接雨水}

文章目录 引言复习移动零盛最多的水三数之和 新作接雨水个人实现参考实现 总结 引言 这段时间还是很迷茫的,秋招到了一个阶段,但是收获并不是很多,基本上都在泡池子,没有意向。也就没有在坚持刷题,只是整理一些专门的…

Arduino UNO R3自学笔记15 之 Arduino如何驱动数码管?

注意:学习和写作过程中,部分资料搜集于互联网,如有侵权请联系删除。 前言:学习使用数码管。 1.数码管介绍 数码管的一种是半导体发光器件,数码管可分为七段数码管和八段数码管,区别在于八段数码管比七段数…

【数据结构】图论基础

文章目录 图的概念图的基本概念图的类型图的表示方法 图的相关基本概念1. 路径(Path)2. 连通性(Connectivity)3. 图的度(Degree)4. 子图(Subgraph)5. 生成树(Spanning Tr…

LabVIEW提高开发效率技巧----快速实现原型和测试

在LabVIEW开发中,DAQ助手(DAQ Assistant)和Express VI为快速构建原型和测试功能提供了极大的便利,特别适合于简单系统的开发和早期验证阶段。 DAQ助手:是一种可视化配置工具,通过图形界面轻松设置和管理数据…

CSS3渐变

一、线性渐变 通过background-image: linear-gradient(...)设置线性渐变 语法: linear-gradient(direction,color1,color2, . . ) direction:渐变方向,默认从上到下,可选值: 简单选取: ① to right&…

Python和C++及MATLAB和R时间序列中数学物理金融气象运动和电子材料

🎯要点 小波分析,量化噪声概率分布和统计推理物理量和化学量数值计算确定性非线性系统金融资本市场和市场流动性波形传播气象建模评估 Python时间序列数学 时间序列分析是一种强大的统计技术,广泛应用于经济学、金融学、环境科学和工程学…

基于SSM+Vue技术的定制式音乐资讯平台

文未可获取一份本项目的java源码和数据库参考。 一、选题的背景与意义: 随着个人计算机的普及和互联网技术的日渐成熟,网络正逐渐成为人们获取信息及消费的主要渠道。然而在当前这个信息时代,网络中的信息种类和数量呈现爆炸性增长的趋势&a…

基于Node.js+Express+MySQL+VUE实现的在线电影视频点播网站管理系统的设计与实现部署安装

目录 1. 引言 1.1开发背景 1.2开发意义 1.3国内外研究 2. 需求分析 3. 系统架构设计 4. 关键技术选型 5. 功能模块设计 5.1功能图 5.2界面介绍 6. 总结 1. 引言 随着互联网技术的快速发展和普及,人们获取信息的方式发生了巨大变化,其中在…

PCL库简单的icp配准

#include <pcl/io/pcd_io.h> #include <pcl/point_types.h> #include <pcl/registration/icp.h>int main(int argc, char** argv) {// 确保提供了两个PCD文件作为输入if (argc ! 3) {PCL_ERROR("请提供两个PCD文件作为输入。\n");return (-1);}// …

dcatadmin 自定义登录页面

一、问题&#xff1a; 在后台管理系统中&#xff0c;不同的项目想要不同的登录页面&#xff0c;但是框架自带的登录页面就只有一个。 解决&#xff1a; 由芒果系统改造的dcatadmin登录插件&#xff0c;实现一键安装改变登录页面。 项目介绍 基于Laravel和Vue的快速开发的后台管…

html5 + css3(上)

目录 HTML认知web标准vscode的简介和使用注释标题和段落换行和水平线标签文本格式化标签图片图片-基本使用图片-属性 绝对路径相对路径音频标签视频标签超链接 HTML基础列表列表-无序和有序列表-自定义 表格表格-使用表格-表格标题和表头单元格表格-结构标签&#xff08;了解&a…

CentOS 6文件系统

由冯诺依曼在 1945 年提出的计算机五大组成部分&#xff1a;运算器&#xff0c;控制器&#xff0c;存储器&#xff0c;输入设 备&#xff0c;输出设备。 1. 硬盘结构&#xff1a; &#xff08;1&#xff09;机械硬盘结构&#xff1a; 磁盘拆解图&#xff1a; 扇区&#xff0c;…

白杨SEO:抖音上做自然搜索流量怎么挖掘出抖音流量关键词及布局进去?【举例】

前言&#xff1a;为什么想到再分享这个&#xff1f;因为发现很多人在抖音做搜索流量时怎么挖掘抖音关键词这个基础以及怎么布局进去不太清楚&#xff0c;所以再来写下&#xff0c;希望对大家有帮助。 文章大纲&#xff1a; 1、抖音搜索流量如何确定业务词&#xff1f; 2、抖音…

Ubuntu下安装Zookeeper集群

Zookeeper集群是一个开源的分布式协调服务系统&#xff0c;它由Apache软件基金会维护&#xff0c;旨在为分布式应用提供一致性和可靠性的服务。 在Zookeeper集群中&#xff0c;服务器可以扮演三种角色——领导者&#xff08;Leader&#xff09;、跟随者&#xff08;Follower&a…

开放式耳机哪个品牌好?值得选购的开放式蓝牙耳机推荐

2024年&#xff0c;蓝牙耳机市场迎来了开放式耳机的热潮。但其实对于许多消费者来说&#xff0c;如何选择合适的开放式耳机仍然充满疑问&#xff1a;佩戴稳固舒适的开放式耳机应该怎么选择&#xff1f;开放式耳机的蓝牙版本该怎么选择&#xff1f;又有哪些开放式耳机品牌是可靠…

SkyWalking 高可用

生产环境中,后端应用需要支持高吞吐量并且支持高可用来保证服务的稳定,因此需要高可用集群管理。 集群方案 Skywalking集群是将 skywalking oap 作为一个服务注册到nacos上,只要skywalking oap服务没有全部宕机,保证有一个skywalking oap在运行,就可以提供服务。 高可用…

【mmsegmentation】Loss模块(进阶)自定义自己的LOSS

1、定义自己的loss driving\models\losses\shuai_loss.py import torch from torch import nn from mmseg.models import LOSSESLOSSES.register_module() class ShuaiLoss(nn.Module):def __init__(self,loss_weight1.0):super().__init__()self.ce_loss nn.CrossEntropyLo…

躺平成长:微信小程序运营日记第二天

在进行属于生活的开源之后&#xff0c;自己更加感受到自己存在的渺茫&#xff0c;同时更加开始深刻领会&#xff0c;开源的重要性&#xff0c;在开源&#xff0c;开放&#xff0c;创造&#xff0c;再创新的思维模式下&#xff0c;不发布八部金刚功相关的训练视频&#xff0c;自…