使用python基于DeepLabv3实现对图片进行语义分割

DeepLabv3 介绍

DeepLabv3 是一种先进的语义分割模型,由 Google Research 团队提出。它在 DeepLab 系列模型的基础上进行了改进,旨在提高图像中像素级分类的准确性。以下是 DeepLabv3 的详细介绍:

  1. 概述DeepLabv3 是 DeepLab 系列中的第三代模型,专门用于解决语义分割任务。语义分割是指将图像中的每个像素分配给特定类别的过程,例如将图像中的不同对象(如人、车、建筑物等)进行精确划分。
  2. 主要特点
    • 空洞卷积(Atrous Convolution):DeepLabv3 使用空洞卷积来增加感受野,同时保持特征图的空间分辨率。空洞卷积通过在标准卷积核中插入“空洞”来扩大卷积核的有效大小,从而捕捉更大范围的上下文信息。
    • 多尺度输出(Multi-Scale Output):为了处理不同尺度的对象,DeepLabv3 在多个不同的空洞率下应用空洞卷积,并将这些不同尺度的特征图融合在一起。这种多尺度特征融合有助于提高对小物体和大物体的识别能力。
    • 空间金字塔池化(Atrous Spatial Pyramid Pooling, ASPP):ASPP 模块是 DeepLabv3 的核心组件之一,它通过使用不同空洞率的空洞卷积以及全局平均池化来捕获多尺度信息。这有助于模型更好地理解图像中的不同尺度和结构。
    • 解码器模块(Decoder Module):DeepLabv3 引入了一个简单的解码器模块,用于恢复高分辨率的分割结果。解码器模块通过上采样操作将低分辨率的特征图恢复到原始图像的分辨率,并结合低层次的特征图以增强细节信息。
  3. 架构DeepLabv3 的架构可以分为以下几个主要部分:
    • 主干网络(Backbone Network):通常使用预训练的深度卷积神经网络(如 ResNet 或 Xception)作为主干网络,提取高层次的特征表示。
    • ASPP 模块:在主干网络的输出特征图上应用 ASPP 模块,生成多尺度的特征表示。•解码器模块:通过上采样操作将 ASPP 输出的特征图恢复到原始图像的分辨率,并结合低层次的特征图以增强细节信息。
    • 最终分类层:在解码器模块的输出上应用一个逐像素的分类层,生成最终的分割结果。
  4. 训练与推理•损失函数:通常使用交叉熵损失函数或其变体(如加权交叉熵、Dice 损失等)来训练模型。
    • 数据增强:为了提高模型的泛化能力,可以采用各种数据增强技术,如随机裁剪、翻转、缩放等。
    • 推理:在推理阶段,输入图像经过模型处理后,生成每个像素的类别标签,形成最终的分割结果。

代码实现

import torch
import torch.nn.functional as F
from torchvision.models.segmentation import deeplabv3_resnet50
from torchvision import models
from PIL import Image
from torchvision import transforms as T
import numpy as np# 反归一化
def denormalize(tensor, mean, std):# 创建一个新的变换来反归一化denormalize_transform = T.Normalize(mean=[-m/s for m, s in zip(mean, std)], std=[1/s for s in std])return denormalize_transform(tensor)if __name__ == '__main__':# 加载预训练的DeepLabv3模型model = deeplabv3_resnet50(weights=models.segmentation.DeepLabV3_ResNet50_Weights.COCO_WITH_VOC_LABELS_V1,num_classes=21)model.eval()mean = [0.485, 0.456, 0.406]std = [0.229, 0.224, 0.225]# 将图片转换为模型需要的输入格式transform = T.Compose([T.Resize(1024),T.ToTensor(),T.Normalize(mean=mean, std=std),])# 加载图片# image = Image.open("fenge.jpg")image = Image.open("测试2.jpg")image_tensor = transform(image).unsqueeze(0)# 进行推理with torch.no_grad():output = model(image_tensor)['out']output_predictions = F.softmax(output, dim=1).argmax(dim=1)# 保存结果print(output_predictions.shape)print('----')output_predictions = output_predictions.squeeze(0).cpu().numpy()# 使用Pillow创建图像print(output_predictions)# 将numpy数组转换为PIL图像img = Image.fromarray(np.uint8(output_predictions * 255))  # 将数据缩放到0-255范围内# 保存图像img.save('output.png')

效果

  • 原始图片
    原始图片
    运行结果:
    运行结果
    如果有需要,还可以自己训练模型

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开启AI新篇章:探索GPT-4与大模型!订阅方案!简单支付!

开启AI新篇章:探索GPT-4的无限可能 随着人工智能技术的飞速发展,我们正处于一个前所未有的变革时代。作为人工智能领域的领导者,OpenAI 推出的GPT-4,以其卓越的自然语言处理能力和强大的计算潜力,引发了行业内外的广泛…

【Android 14源码分析】WMS-窗口显示-流程概览与应用端流程分析

忽然有一天,我想要做一件事:去代码中去验证那些曾经被“灌输”的理论。                                                                                  – 服装…

创建Vue项目的时出现:无法加载文件 E:\software\node\node_global\vue.ps1,因为在此系统上禁止运行脚本

创建Vue项目的时出现的问题:出现:无法加载文件 E:\software\node\node_global\vue.ps1,因为在此系统上禁止运行脚本 解决方法: .PowerShelll的执行政策阻止了该操作,用 get-ExecutionPolicy 查看执行策略的状态为受限 输入Set-ExecutionPo…

【STM32开发之寄存器版】(二)-USART

一、前言 串口作为STM32的重要外设,对程序调试具有不可替代的作用。通用同步异步收发器(USART)提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。USART利用分数波特率发生器提供宽范围的波特率选择。其主要具备以下特性&am…

CSP-J模拟赛四补题报告

前言 T1: 100 p t s \color{green}100pts 100pts T2: 100 p t s \color{green}100pts 100pts T3: 20 p t s → 5 p t s \color{red}20pts\rightarrow5pts 20pts→5pts T4: 20 p t s \color{red}20pts 20pts T1,2秒了,T3,4死了 T1 三个(three) 题面…

数据集-目标检测系列- 货船 检测数据集 freighter>> DataBall

数据集-目标检测系列- 货船 检测数据集 freighter>> DataBall 数据集-目标检测系列- 货船 检测数据集 freighter>> DataBall 数据量:3k 想要进一步了解,请联系。 DataBall 助力快速掌握数据集的信息和使用方式,会员享有 百种…

SQL优化 - 排序

文章目录 排序和索引降序索引 FilesortORDER BY 顺序问题ORDER BY LIMIT 排序和索引 如果ORDER BY操作使用了索引,那么就可以避免排序操作,因为索引本身就是按索引 key 排好序的。那什么情况下,ORDER BY会走索引呢? 例如&#…

阿里云域名注册购买和备案

文章目录 1、阿里云首页搜索 域名注册2、点击 控制台3、域名控制台 1、阿里云首页搜索 域名注册 2、点击 控制台 3、域名控制台

【08】纯血鸿蒙HarmonyOS NEXT星河版开发0基础学习笔记-Scroll容器与Tabs组件

序言: 本文详细讲解了关于我们在页面上经常看到的可滚动页面和导航栏在鸿蒙开发中如何用Scroll和Tabs组件实现,介绍了Scroll和Tabs的基本用法与属性。 笔者也是跟着B站黑马的课程一步步学习,学习的过程中添加部分自己的想法整理为笔记分享出…

【漏洞复现】泛微OA E-Office do_excel.php 任意文件写入漏洞

》》》产品描述《《《 泛微0-0fice是一款标准化的协同 OA办公软件,泛微协同办公产品系列成员之一,实行通用化产品设计,充分贴合企业管理需求,本着简洁易用、高效智能的原则,为企业快速打造移动化、无纸化、数字化的办公平台。 》》…

深度学习:基于MindSpore实现CycleGAN壁画修复

关于CycleGAN的基础知识可参考: 深度学习:CycleGAN图像风格迁移转换-CSDN博客 以及MindSpore官方的教学视频: CycleGAN图像风格迁移转换_哔哩哔哩_bilibili 本案例将基于CycleGAN实现破损草图到线稿图的转换 数据集 本案例使用的数据集里…

【含文档】基于Springboot+Vue的护肤品推荐系统(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定…

企望制造ERP系统存在RCE漏洞

漏洞描述 企望制造纸箱业erp系统由深知纸箱行业特点和业务流程的多位IT专家打造,具有国际先进的管理方式,将现代化的管理方式融入erp软件中,让企业分分钟就拥有科学的管理经验。erp的功能包括成本核算、报价定价、订单下达、生产下单、现场管…

五子棋双人对战项目(3)——匹配模块

目录 一、分析需求 二、约定前后端交互接口 匹配请求: 匹配响应: 三、实现游戏大厅页面(前端代码) game_hall.html: common.css: game_hall.css: 四、实现后端代码 WebSocketConfig …

vue3 环境配置vue-i8n国际化

一.依赖和插件的安装 主要是vue-i18n和 vscode的自动化插件i18n Ally https://vue-i18n.intlify.dev/ npm install vue-i18n10 pnpm add vue-i18n10 yarn add vue-i18n10 vscode在应用商城中搜索i18n Ally:如图 二.实操 安装完以后在对应项目中的跟package.jso…

计算机毕业设计 基于协同过滤算法的个性化音乐推荐系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

Charles+socksdroid手机抓包配置

证书配置 保存一个证书 使用abd将证书推送到手机 找手机的加密与凭据 点击从存储设备安装 选择刚刚导入手机的证书 证书按照成功 手机安装socksdroid 端口对应 ip对应 开启 点击allow 成功手机抓包 将用户证书移动到系统证书 系统证书路径:/etc/security/cacerts…

【springboot】整合LoadBalancer

目录 问题产生背景解决方案:实现LoadBalancer1. 添加依赖2. 配置文件3. 使用LoadBalancer4. 使用 RestTemplate 进行服务调用5. 测试 问题产生背景 以下是一个购物车项目,通过调用外部接口获取商品信息,并添加到购物车中,这段代码…

【Android 14源码分析】WMS-窗口显示-第二步:relayoutWindow -1

忽然有一天,我想要做一件事:去代码中去验证那些曾经被“灌输”的理论。                                                                                  – 服装…

【JAVA开源】基于Vue和SpringBoot的宠物咖啡馆平台

本文项目编号 T 064 ,文末自助获取源码 \color{red}{T064,文末自助获取源码} T064,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…