首页 > 其他分享 >使用深度学习框架进行街景语义分割-数据准备、模型选择、模型训练、模型评估及如何使用PyQt5构建一个简单应用来展示分割结果长三角,珠三角共49个城市群百度街景(全景)数据,50m采样。

使用深度学习框架进行街景语义分割-数据准备、模型选择、模型训练、模型评估及如何使用PyQt5构建一个简单应用来展示分割结果长三角,珠三角共49个城市群百度街景(全景)数据,50m采样。

时间:2024-12-08 17:32:44浏览次数:4  
标签:分割 img 街景 模型 PyQt5 -- train self

使用深度学习框架进行街景语义分割-数据准备、模型选择、模型训练、模型评估以及如何使用PyQt5构建一个简单的应用来展示分割结果
在这里插入图片描述

街景 语义分割 数据集在这里插入图片描述

  1. 数据集:jingjingji,长三角,珠三角共49个城市群百度街景(全景)数据,50m采样。包含街景图像、shp、csv等数据处理结果文件。在这里插入图片描述

时间:采样点最新时间(2013年到2023年不等)在这里插入图片描述
使用深度学习框架进行街景语义分割是一个复杂但非常有趣的过程。,包括数据准备、模型选择、模型训练、模型评估以及如何使用PyQt5构建一个简单的应用来展示分割结果。

1. 数据准备

1.1. 数据集结构

确保你的数据集按照以下结构组织:

dataset/
│
├── images/
│   ├── train/
│   ├── val/
│   └── test/
│
├── labels/
│   ├── train/
│   ├── val/
│   └── test/
│
└── data.yaml
1.2. 创建数据配置文件

创建一个data.yaml文件来配置数据集:

train: ./dataset/images/train
val: ./dataset/images/val
test: ./dataset/images/test

nc: 15  # 类别数量(假设15类)
names: ['road', 'sidewalk', 'building', 'wall', 'fence', 'pole', 'traffic_light', 'traffic_sign', 'vegetation', 'terrain', 'sky', 'person', 'rider', 'car', 'truck']  # 类别名称

# 下载数据集
download: ''

2. 安装YOLOv8

确保你已经安装了YOLOv8。YOLOv8是YOLO系列的最新版本,可以从Ultralytics的GitHub仓库中获取。

git clone https://github.com/ultralytics/yolov8.git
cd yolov8
pip install -r requirements.txt

3. 训练模型

3.1. 配置训练

使用YOLOv8进行语义分割。以下是一个示例命令:

python train.py --data ./dataset/data.yaml --img 640 --batch 16 --epochs 100 --name yolov8_custom --weights yolov8n-seg.pt
3.2. 微调模型

如果你想微调一个预训练模型,可以指定模型路径:

python train.py --data ./dataset/data.yaml --img 640 --batch 16 --epochs 100 --name yolov8_custom --weights yolov8n-seg.pt

4. 评估模型

4.1. 运行评估

在验证集上评估训练好的模型:

python val.py --data ./dataset/data.yaml --weights runs/train/yolov8_custom/weights/best.pt
4.2. 可视化结果

你可以使用val命令的--save标志来可视化结果:

python val.py --data ./dataset/data.yaml --weights runs/train/yolov8_custom/weights/best.pt --save

5. 使用PyQt5构建系统

5.1. 安装PyQt5
pip install PyQt5
5.2. 创建PyQt5应用

创建一个简单的PyQt5应用来展示分割结果。

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel, QPushButton, QFileDialog
from PyQt5.QtGui import QPixmap
from PyQt5.QtCore import Qt
import cv2
import numpy as np
import torch

class MainWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()
        self.model = torch.hub.load('ultralytics/yolov8', 'custom', path='runs/train/yolov8_custom/weights/best.pt')

    def initUI(self):
        self.setWindowTitle('街景语义分割')
        self.setGeometry(100, 100, 800, 600)

        layout = QVBoxLayout()

        self.image_label = QLabel(self)
        layout.addWidget(self.image_label)

        self.load_button = QPushButton('加载图片', self)
        self.load_button.clicked.connect(self.load_image)
        layout.addWidget(self.load_button)

        self.setLayout(layout)

    def load_image(self):
        file_dialog = QFileDialog()
        file_dialog.setFileMode(QFileDialog.ExistingFile)
        if file_dialog.exec_():
            file_name = file_dialog.selectedFiles()[0]
            self.image_label.setPixmap(QPixmap(file_name))
            self.detect_defects(file_name)

    def detect_defects(self, file_name):
        img = cv2.imread(file_name)
        results = self.model(img)
        segmented_img = results[0].plot()
        
        segmented_img = cv2.cvtColor(segmented_img, cv2.COLOR_BGR2RGB)
        height, width, channel = segmented_img.shape
        bytes_per_line = 3 * width
        q_img = QImage(segmented_img.data, width, height, bytes_per_line, QImage.Format_RGB888)
        self.image_label.setPixmap(QPixmap.fromImage(q_img))

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())

6. 其他建议

  • 数据增强:使用数据增强技术来提高模型的鲁棒性。
  • 模型集成:集成多个模型以提高性能。
  • 模型量化:量化模型以适应边缘设备。

7. 示例代码

7.1. 数据预处理示例
import cv2
import os

def resize_images(input_dir, output_dir, size=(640, 640)):
    if not os.path.exists(output_dir):
        os.makedirs(output_dir)
    
    for filename in os.listdir(input_dir):
        if filename.endswith(('.jpg', '.png', '.jpeg')):
            img_path = os.path.join(input_dir, filename)
            img = cv2.imread(img_path)
            img_resized = cv2.resize(img, size)
            output_path = os.path.join(output_dir, filename)
            cv2.imwrite(output_path, img_resized)

# 示例用法
resize_images('./dataset/images/train', './dataset/images/train_resized')

8. 运行和调试

确保你的环境配置正确,并且所有依赖项都已安装。运行PyQt5应用时,确保模型文件路径正确,并且数据集路径正确。

标签:分割,img,街景,模型,PyQt5,--,train,self
From: https://blog.csdn.net/2401_88440984/article/details/144280191

相关文章

  • 如何使用YOLOv8训练自动驾驶路面分类模型。涵数据集准备、模型训练、等步骤,并提供自动
    自动驾驶路面分类数据集,按照不同的天气条件,即干燥、湿润、水上、新雪、融化的雪和冰。不同的道路材料属性包括沥青、混凝土、泥浆和碎石。不同的道路平整性分为光滑、轻微不平和严重不平。共27类,37万张图像,13GB数据好的,让我们从数据集准备开始,逐步介绍如何使用深度学习框......
  • 基于ResNet50和VGG16深度学习模型的阿尔茨海默病MRI图像分类与早期诊断研究
    阿尔茨海默病(AD)是目前全球范围内最常见的神经退行性疾病之一,早期诊断对延缓疾病进程和改善患者生活质量至关重要。随着医学影像学的进步,基于MRI图像的阿尔茨海默病检测成为一种重要的研究方向。本文提出了一种基于深度学习的MRI图像分类方法,利用ResNet50和VGG16两种深度卷积神......
  • 大模型分类及代表性模型列表
    大模型分类及代表性模型列表以下是截至2024年较为全面的大模型分类及其代表性模型列表,涵盖国内外的模型,分为通用语言模型、多模态模型、垂直领域模型、基础模型等类别,具体特点和应用也总结如下:一、通用语言模型(NaturalLanguageProcessing)国外模型:GPT系列(OpenAI)模型......
  • 帝国CMS 在超态信息插件中为sinfo模型增加字段
    在Sinfo插件中,可以在sinfo数据表中新增字段,控制单独每个sinfo的属性。以下是新增字段说明。可以仅选择新增其中某个字段。字段名:sinfo_md字段标识:页面模式字段类型:TINYINT存放表:副表输入表单显示元素:单选框初始值:0==默认:default1==列表式2==封面式其它各项默认。友......
  • 产品热设计结构模型预处理思路与solidworks处理方法
     ......
  • 【深度学习】利用Java DL4J 构建和训练医疗影像分析模型
    ......
  • 【推荐算法】推荐系统中的单目标精排模型
    前言:推荐系统中模型发展较快,初学者【也就是笔者】很难对模型进行一个系统的学习。因此,这篇文章总结了王树森中的视频以及《深度学习推荐系统》中的单目标精排模型,绘制了一个单目标精排模型的思维导图来帮助初学者【笔者】更好的学习。在后面的学习过程中,会加入更多的单目标......
  • 搭建人工智能多模态大语言模型的通用方法
    上一篇:《理解多模态大语言模型,主流技术与最新模型简介》序言:动手搭建建多模态LLM的两大通用主流方法是:统一嵌入-解码器架构和跨模态注意力架构,它们都是通过利用图像嵌入与投影、跨注意力机制等技术来实现的。构建多模态LLM的常见方法构建多模态LLM(大型语言模型)主要有两种......
  • 解决|diffusion transformer的环境安装慢问题、vae预训练模型下载失败问题、扩散模型
    目录环境安装慢1、换源2、直接下载包到本地vae预训练模型下载失败1、去huggingface官网下载对应的模型2、传输至服务器的某个文件夹3、在代码里直接加载下载好的模型:扩散模型的损失参考链接环境安装慢这个问题有很多解决方法,我比较喜欢的是以下两种:1、换源我体验下来,清华源是......
  • 什么是隐马尔可夫模型
    隐马尔可夫模型(HiddenMarkovModel,HMM)隐马尔可夫模型(HMM)是一个统计模型,用来描述一个由不可观测(隐含)状态组成的马尔可夫过程,并且这些隐状态是通过可观测的变量(观测数据)来间接推测的。模型基本结构HMM是一个典型的概率图模型,由以下几个主要元素组成:隐状态集合(Hidden......