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

运行结果:

如果有需要,还可以自己训练模型
相关文章:
使用python基于DeepLabv3实现对图片进行语义分割
DeepLabv3 介绍 DeepLabv3 是一种先进的语义分割模型,由 Google Research 团队提出。它在 DeepLab 系列模型的基础上进行了改进,旨在提高图像中像素级分类的准确性。以下是 DeepLabv3 的详细介绍: 概述DeepLabv3 是 DeepLab 系列中的第三代…...
【漏洞复现】泛微OA E-Office do_excel.php 任意文件写入漏洞
》》》产品描述《《《 泛微0-0fice是一款标准化的协同 OA办公软件,泛微协同办公产品系列成员之一,实行通用化产品设计,充分贴合企业管理需求,本着简洁易用、高效智能的原则,为企业快速打造移动化、无纸化、数字化的办公平台。 》》…...
算法(食物链)
240. 食物链 题目 动物王国中有三类动物 A,B,C𝐴,𝐵,𝐶,这三类动物的食物链构成了有趣的环形。 A𝐴 吃 B𝐵,B𝐵 吃 C𝐶,C𝐶 吃 A𝐴。…...
ubuntu20.04系统安装zookeeper简单教程
Ubuntu系统中安装和配置Zookeeper的完整指南 Apache Zookeeper是一个开源的分布式协调服务,广泛用于分布式应用程序中管理配置、提供命名服务、分布式同步以及组服务等。在本教程中,我们将详细介绍如何在Ubuntu系统中安装Zookeeper,并进行相关…...
.NET Core 高性能并发编程
一、高性能大并发架构设计 .NET Core 是一个高性能、可扩展的开发框架,可以用于构建各种类型的应用程序,包括高性能大并发应用程序。为了设计和开发高性能大并发 .NET Core 应用程序,需要考虑以下几个方面: 1. 异步编程 异步编程…...
B 私域模式升级:开源技术助力传统经销体系转型
一、引言 1.1 研究背景 随着市场竞争加剧,传统经销代理体系面临挑战。同时,开源技术发展迅速,为 B 私域升级带来新机遇。在当今数字化时代,企业面临着日益激烈的市场竞争。传统的经销代理体系由于管理效率低下、渠道局限、库存压…...
vue之vuex的使用及举例
Vuex是专门为Vue.js设计的集中式状态管理架构,它允许你将所有的组件共享状态存储在一个单独的地方,即“store”,并以相应的规则保证状态以一种可预测的方式发生变化。以下是Vuex的基本使用方法: 一、安装Vuex 对于Vue 2项目&…...
使用 vite 快速初始化 shadcn-vue 项目
Vite 1. 创建项目 使用 vite 创建一个新的 vue 项目。 如果你正在使用 JS 模板,需要存在 jsconfig.json 文件才能正确运行 CLI。 # npm 6.x npm create vitelatest my-vue-app --template vue-ts# npm 7, extra double-dash is needed: npm create vitelatest m…...
微信小程序:一个小程序跳转至另一个小程序
一、微信小程序支持一个小程序跳转至另一个小程序吗? 支持。 1.1、目标小程序需开放被跳转:目标小程序需要在其 app.json 文件中配置 navigateToMiniProgramAppIdList,将源小程序的 AppID 加入其中。 1.2、用户授权:用户需要授…...
Java第二阶段---10方法带参---第二节 方法重载(Overloading)
1.概念 在同一个类中,方法名相同,参数列表不同的多个方法构造成方法重载 2.示例 public class Calculator{public int sum(int a,int b){return ab;}public int sum(int a,int b,int c){return abc;} } 3.误区 下面的方法是否属于方法重载ÿ…...
Java Web 之 Session 详解
在 JavaWeb 开发中,Session 就像网站的专属记忆管家,为每个用户保管着重要的信息和状态,确保用户在网站的旅程顺畅无阻。 场景一: 想象你去一家大型超市购物,推着购物车挑选商品。这个购物车就如同 Sessionÿ…...
63.5 注意力提示_by《李沐:动手学深度学习v2》pytorch版
系列文章目录 文章目录 系列文章目录注意力提示生物学中的注意力提示查询、键和值注意力的可视化使用 show_heatmaps 显示注意力权重代码示例 代码解析结果 小结练习 注意力提示 🏷sec_attention-cues 感谢读者对本书的关注,因为读者的注意力是一种稀缺…...
vscode 的terminal 输出打印行数限制设置
修改 VSCODE 的 settings.json文件 "terminal.integrated.scrollback": 100000, {"extensions.ignoreRecommendations": true,"workbench.colorTheme": "Monokai","explorer.confirmDelete": false,"editor.fontSize…...
深入挖掘C++中的特性之一 — 继承
目录 1.继承的概念 2.举个继承的例子 3.继承基类成员访问方式的变化 1.父类成员的访问限定符对在子类中访问父类成员的影响 2.父类成员的访问限定符子类的继承方式对在两个类外访问子类中父类成员的影响 4.继承类模版(注意事项) 5.父类与子类间的转…...
Linux 下 poll 详解
在Linux系统编程中,poll 是一个强大的多路复用(I/O 多路复用)函数,用于同时监控多个文件描述符的事件,特别是在处理网络套接字或其他I/O设备时。相比于select,poll 支持监控更多的文件描述符,并…...
virtualbox配置为NAT模式后物理机和虚拟机互通
virtualbox配置为 NAT模式后,虚拟机分配到的 IP地址一般是 10.xx网段的,虚拟机可以通过网络地址转换访问物理机所在的网络,但若不做任何配置,则物理机无法直接访问虚拟机。 virtualbox在提供 NAT配置模式时,也提供了端…...
工程机械车辆挖掘机自卸卡车轮式装载机检测数据集VOC+YOLO格式2644张3类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2644 标注数量(xml文件个数):2644 标注数量(txt文件个数):2644 标注…...
[Notepad++] 文本编辑器的下载及详细安装使用过程(附有下载文件)
程序员常用的文本编辑器Notepad,用于修改配置文件等 下载链接在文末 下载压缩包后解压 !!安装路径不要有中文 解压文件,得到 双击exe文件 选择简体中文,点击OK 点击下一步 点击“我接受” 更改安装目录,不…...
深入浅出Java多线程(六):Java内存模型
引言 大家好,我是你们的老伙计秀才!今天带来的是[深入浅出Java多线程]系列的第六篇内容:Java内存模型。大家觉得有用请点赞,喜欢请关注!秀才在此谢过大家了!!! 在并发编程中…...
注册了个小趴菜999#it#com
注册了个 999#it#com 拿着玩玩吧 现在二级域名竟然也让注册了 不过cn.com的二级似乎早就可以了...
突破百度网盘下载限速:BaiduPCS-Go命令行客户端的3大技术突破
突破百度网盘下载限速:BaiduPCS-Go命令行客户端的3大技术突破 【免费下载链接】BaiduPCS-Go iikira/BaiduPCS-Go原版基础上集成了分享链接/秒传链接转存功能 项目地址: https://gitcode.com/GitHub_Trending/ba/BaiduPCS-Go 你是否厌倦了百度网盘的龟速下载&…...
嵌入式C++轻量级生命体基类:面向OOP的零开销实体抽象
1. 项目概述life_entity是一个面向嵌入式系统与游戏逻辑建模场景设计的轻量级 C 基类,其核心定位并非通用游戏引擎组件,而是为资源受限环境(如 Cortex-M3/M4 微控制器运行 FreeRTOS 或裸机实时调度器)中实现可继承、可多态、可生命…...
在CentOS上部署RustDesk私有中继服务器:从零搭建到安全配置
1. 环境准备:搭建RustDesk私有中继服务器的基石 在CentOS系统上部署RustDesk私有中继服务器,首先需要确保基础环境配置正确。我遇到过不少因为环境问题导致的部署失败案例,所以这部分我会详细说明每个环节的注意事项。 1.1 系统更新与基础依赖…...
抑制素A抗体如何提升妊娠中期唐氏综合征筛查的效能?
一、为何抑制素A成为妊娠期的重要生物标志物?抑制素A是一种由α和βA亚基通过二硫键连接形成的异源二聚体糖蛋白。在非妊娠期,它主要由卵巢颗粒细胞分泌,作为反馈调节因子,选择性地抑制垂体前叶分泌卵泡刺激素。进入妊娠状态后&am…...
AI报告文档审核助力生态数据可信化:IACheck提升生物多样性调查报告物种识别准确性
在生态环境保护逐渐走向精细化管理的背景下,生物多样性调查数据的重要性不断提升。从自然保护区评估到生态修复项目,从环境影响评价到长期生态监测,物种数据已成为支撑决策的重要基础。而在这些数据中,“物种识别的准确性”&#…...
TCT亚洲展|直击3D打印前沿盛宴,解锁增材制造新趋势
近日,2026 TCT亚洲展在上海国家会展中心圆满落幕,作为亚太地区规模最大、专业性最强的3D打印与增材制造行业盛会,本届展会汇聚全球550余家头部展商,集中呈现了从工业级设备、高性能材料到全场景应用方案的全产业链创新成果&#x…...
Pixel Aurora Engine真实案例:用‘蒸汽朋克猫武士’生成整套游戏美术资源
Pixel Aurora Engine真实案例:用蒸汽朋克猫武士生成整套游戏美术资源 1. 项目背景与工具介绍 Pixel Aurora Engine(像素极光引擎)是一款基于AI扩散模型的高端像素艺术生成工具。它采用复古的8-bit游戏机风格界面,却能产出专业级…...
人工智能|大模型——模型——大模型蒸馏详解(定义/原理/关键技术/落地)
摘要大模型蒸馏(Model Distillation),即知识蒸馏(Knowledge Distillation),是一种将大型教师模型(如BERT、GPT-4o、DeepSeek-R1)的“隐含知识”高效迁移至轻量级学生模型(…...
MySQL
我目前正在学习SQL语句,我所了解到的MySQL其实是一堆服务器,在下载服务器的时候,可以选择下载一些客户端,MySQL会自带一些客户端,像类似于终端的小黑框,还有什么bench;我还是喜欢外观好看的客户端 !我学SQL语句目前学到了数据类型,有数值型的,字符型的,二进制型的,值得一提的是…...
GitHub功能多元拓展,korb工具革新REWE购物流程
【导语:GitHub提供了涵盖AI代码创作、开发者工作流、应用程序安全等多方面的丰富功能,同时推出不同规模和用例的解决方案。而korb命令行工具则为REWE超市购物带来新体验,可实现自动化购物流程。】GitHub:功能全面的开发者平台GitH…...
