基于DeepLabv3+实现图像分割

目录

  • 1. 作者介绍
  • 2. DeepLabv3+算法
    • 2.1 DeepLabv3+算法介绍
    • 2.2 DeepLabv3+模型结构
  • 3. 实验过程基于DeepLabv3+实现图像分割
    • 3.1 VOC数据集介绍
    • 3.2 代码实现
    • 3.3 问题分析
  • 4. 参考连接

1. 作者介绍

吴天禧,女,西安工程大学电子信息学院,2023级研究生,张宏伟人工智能课题组
研究方向:模式识别与智能系统
电子邮件:230411046@stu.xpu.edu.cn

路治东,男,西安工程大学电子信息学院,2022级研究生,张宏伟人工智能课题组
研究方向:机器视觉与人工智能
电子邮件:2063079527@qq.com

2. DeepLabv3+算法

2.1 DeepLabv3+算法介绍

DeepLabv3+是一种先进的语义图像分割算法,它通过结合编码器-解码器架构和Atrous卷积来实现对图像中每个像素的精确分类。
该算法利用DeepLabv3作为编码器,有效地捕捉丰富的上下文信息,并通过一个简单而有效的解码器模块来细化分割结果,尤其是在物体的边界区域。Atrous卷积允许模型以任意分辨率提取特征,这为处理不同尺寸的物体提供了灵活性。
此外,DeepLabv3+还采用了Xception模型和深度可分离卷积技术,显著提高了计算效率,同时保持了分割精度。

2.2 DeepLabv3+模型结构

图 1 DeepLabv3+模型结构

图1展示了DeepLabv3+模型的结构,该模型结合了编码器-解码器结构的优势以及空间金字塔池化模块。(a)部分显示了空间金字塔池化(Spatial Pyramid Pooling, SPP)模块,它通过在不同比例的网格上进行池化操作来捕获多尺度上下文信息。(b)部分展示了编码器-解码器(Encoder-Decoder)结构,它能够通过逐步恢复空间信息来捕获更锐利的物体边界。©部分则展示了带有Atrous卷积的编码器-解码器结构,这是DeepLabv3+模型的核心,其中编码器模块包含了丰富的语义信息,而解码器模块则用于恢复详细的物体边界。Atrous卷积允许以任意分辨率提取特征,这为模型提供了灵活性。

在这里插入图片描述

图2详细展示了DeepLabv3+模型的编码器和解码器模块。编码器模块通过多尺度的Atrous卷积来编码多尺度上下文信息,而解码器模块则用于细化分割结果,尤其是在物体边界上。在该模型中,首先使用Atrous卷积提取特征,然后通过解码器模块逐步恢复图像的空间分辨率,以获得更精细的分割效果。

在这里插入图片描述

图3解释了深度可分离卷积的概念,这是一种减少计算复杂度的技术。(a)图展示了深度卷积(Depthwise Convolution),它对每个输入通道独立应用卷积核。(b)图展示了点卷积(Pointwise Convolution),它在深度卷积的输出上进行1x1的卷积,以组合不同通道的信息。©图展示了Atrous深度可分离卷积,这是在深度卷积中应用了Atrous卷积,允许模型以不同的采样率来捕获多尺度信息。

在这里插入图片描述

图4描述了对Xception模型的修改,使其更适合于语义图像分割任务。修改包括增加更多的层以捕获更深层次的特征,将所有最大池化操作替换为带有步长的深度可分离卷积,以及在每个3x3深度卷积后添加额外的批量归一化(Batch Normalization)和ReLU激活函数,这与MobileNet的设计相似。

3. 实验过程基于DeepLabv3+实现图像分割

3.1 VOC数据集介绍

PASCAL VOC挑战赛 (The PASCAL Visual Object Classes )是一个世界级的计算机视觉挑战赛,PASCAL全称:Pattern Analysis, Statical Modeling and Computational Learning,是一个由欧盟资助的网络组织。PASCAL VOC挑战赛主要包括以下几类:图像分类(Object Classification),目标检测(Object Detection),目标分割(Object Segmentation),行为识别(Action Classification) 等。

在这里插入图片描述
下面是数据集的展示,包括(a)图像分类与目标检测任务;(b)分割任务,注意,图像分割一般包括语义分割、实例分割和全景分割,实例分割是要把每个单独的目标用一种颜色表示(下图中间的图像),而语义分割只是把同一类别的所有目标用同一颜色表示(下图右侧的图片);(c)行为识别任务;(d)人体布局检测任务。

在这里插入图片描述

VOC数据集中主要包含20个目标类别,这个图展示了所有类别的名称以及所属大类。

在这里插入图片描述

3.2 代码实现

Main.py是一个用于图像分割的深度学习训练脚本。

  1. get_argparser() 函数定义了一个命令行参数解析器,允许用户在运行脚本时指定各种配置选项,如数据集路径、模型类型、训练选项、学习率、批大小等。
  2. validate() 函数执行模型的验证,计算指标(如IoU),并可选择保存验证结果和可视化样本。
  3. 主函数 main()
    设置数据集类别数(基于所选数据集);
    初始化可视化工具;
    设置GPU和随机种子;
    加载和初始化数据加载器;
    根据参数构建模型,并将其置于GPU上;
    设置优化器、学习率调度器和损失函数;
    如果提供了检查点文件,恢复训练状态;
    进入训练循环,包括前向传播、损失计算、反向传播和参数更新;
    在每个验证间隔执行验证,并根据验证结果更新最佳模型;
    使用Visdom可视化训练损失和验证指标。
  4. 训练循环:
    模型设置为训练模式;
    迭代训练数据加载器中的批次;
    执行前向传播,计算损失;
    执行反向传播,更新模型参数;
    在指定间隔打印损失并进行可视化;
    定期执行验证,并保存最佳模型。
  5. 检查点保存 save_ckpt() 函数负责保存当前模型的状态、优化器状态、学习率调度器状态和最佳验证分数到文件。
  6. 可视化
    如果启用,使用Visdom可视化训练损失和验证指标。
  7. 模型评估
    如果设置了–test_only ,模型将进行评估而不进行训练。

3.3 问题分析

python main.py --model deeplabv3plus_resnet50 --enable_vis --vis_port 28333 --gpu_id 0 --year 2012 --crop_val --lr 0.01 --crop_size 513 --batch_size 16 --output_stride 16

在这里插入图片描述
下载的voc数据集中没有2008_000942.png图,这个图应该在2012_aug中,但下载的voc2012中没有,训练时改成2012就可以了,测试也一样。

4. 参考连接

  1. Voc数据集
  2. DeepLabv3+论文
  3. 代码:VainF/DeepLabV3Plus-Pytorch: Pretrained DeepLabv3 and DeepLabv3+ for Pascal VOC & Cityscapes

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

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

相关文章

[线程与网络] 网络编程与通信原理(五): 深入理解网络层IP协议与数据链路层以太网协议

🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏:🍕 Collection与数据结构 (92平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 🧀Java …

基于java的CRM客户关系管理系统(五)

目录 第五章 系统的详细设计与实现 5.1 持久层设计 5.1.1 创建关系映射 5.1.2 与数据库的连接 5.1.3 Hibernate的ORM映射 5.1.4 Struts的配置文件 5.1.5 Spring 的配置文件 5.1.6 DAO层设计 5.2 逻辑业务层设计 5.2.1 业务逻辑类的实现 前面内容请移步 基于java的C…

超市管理系统设计1——基本功能设计

超市管理系统基础功能类设计 1. 概述 本设计文稿提供一个基础的超市管理系统,包含基本的功能设计。该系统将管理商品、顾客、员工和交易记录,不需要接入数据库,通过文件存储数据,并满足面向对象编程的基本要求(继承、…

FCCL:Learn from others and Be yourself in Heterogeneous Federated Learning

CVPR2022,通过在公开数据集上的logits相似性(同类相近、异类原理)来迁移客户端知识,通过上轮模型和初始模型延缓遗忘。 论文地址:openaccess code: 作者开源 贡献 提出了一种新颖的联邦学习方法,称为 FCCL(联邦互相关和持续学习)。 为异构联邦学习制定了一种简单有效…

面试题:说一下 http 报文都有哪些东西?

面试题:说一下 http 报文都有哪些东西? HTTP 是传输超文本(实际上除了 HTML,可以传输任何类型的文件,如视频、音频、文本等)的协议,是一组用于浏览器-服务器之间数据传输的规则。 HTTP 位于 OS…

摸鱼大数据——Hive函数14

14、开窗(开列)函数 官网链接:Window Functions - Apache AsterixDB - Apache Software Foundation 14.1 基础使用 开窗函数格式: 开窗函数 over(partition by 分组字段名 [order by 排序字段名 asc|desc] [rows between 开窗开始 and 开窗结束]) ​ partition b…

【问题随记】System policy prevents Wi-Fi scans,解决连接 WIFI 需要权限的问题

问题随记 System policy prevents Wi-Fi scans,每次打开我的开发板连接 wifi 都会出现下面的弹窗,这也阻挡了我的WIFI自动连接,然后就需要连上屏幕,输入 wifi 密码,这样才能进行 VNC、SSH 等一系列的连接。 问题解决 …

【运维项目经历|026】Redis智能集群构建与性能优化工程

🍁博主简介: 🏅云计算领域优质创作者 🏅2022年CSDN新星计划python赛道第一名 🏅2022年CSDN原力计划优质作者 🏅阿里云ACE认证高级工程师 🏅阿里云开发者社区专…

【SVG 生成系列论文(九)】如何通过文本生成 svg logo?IconShop 模型推理代码详解

SVG 生成系列论文(一) 和 SVG 生成系列论文(二) 分别介绍了 StarVector 的大致背景和详细的模型细节。SVG 生成系列论文(三)和 SVG 生成系列论文(四)则分别介绍实验、数据集和数据增…

2024码蹄杯初赛 拔河(非二分解法)

AK选手前来补充一发邪典(水数据)写法 题面: 简单来说就是给你一个序列,让你选择一段连续区间,使得这个区间平均值最大,同时区间长度大于等于F。 很显然对于区间求和直接用前缀和优化到O(1),但是…

jar包部署到服务器,修改jar包配置文件

jar包部署到服务器 打包项目1.jar包分离2.整体打包配置文件配置文件分离整体打包修改配置文件 打包项目 maven项目打包有两种&#xff0c;一是将自己的项目和依赖包分离&#xff0c;二是打包成一个jar包 1.jar包分离 需要在pom文件中引入依赖 <build><finalName&…

Docker基础篇之将本地镜像发布到私有库

文章目录 1. Docker Registry简介2. 将本地镜像推送到私有库 1. Docker Registry简介 Docker Registry是官方提供的工具&#xff0c;可以用于构建私有镜像仓库。 2. 将本地镜像推送到私有库 下载Docker Registry docker pull registry现在我们可以从镜像中看到下载的Regist…

【轻松搞定形象照】助你打造编程等级考试、竞赛专属二寸靓照,报名无忧,展现最佳风采!

更多资源请关注纽扣编程微信公众号 ​ 在数字化时代&#xff0c;拍照似乎变得轻而易举&#xff0c;但当我们需要一张特定规格的一寸照片时&#xff0c;事情就变得复杂起来。随着编程等级考试和各类信息学竞赛的日益临近&#xff0c;不少考生都为了一张符合要求的一寸照片而忙…

抽屉式备忘录(共25041字)

Sing Me to Sleep <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>与妖为邻的备忘录</title&g…

pytorch学习day4

一、卷积层&#xff08;Convolution Layers&#xff09; 卷积层是卷积神经网络&#xff08;CNN&#xff09;中的核心组件&#xff0c;用于提取输入数据的特征。它们通过应用卷积运算来捕捉局部的空间特征&#xff0c;非常适合处理图像和视频等具有空间结构的数据。 1. 卷积层的…

创建模拟器

修改模拟器默认路径 由于模拟器文件比较大&#xff0c;默认路径在C:\Users\用户名.android\avd&#xff0c;可修改默认路径 创建修改后的路径文件 D:\A-software\Android\AVD添加系统变量ANDROID_SDK_HOME&#xff1a;D:\A-software\Android\AVD重启Android Studio 创建模拟…

【机器学习】机器学习与大模型在人工智能领域的融合应用与性能优化新探索

文章目录 引言机器学习与大模型的基本概念机器学习概述监督学习无监督学习强化学习 大模型概述GPT-3BERTResNetTransformer 机器学习与大模型的融合应用自然语言处理文本生成文本分类机器翻译 图像识别自动驾驶医学影像分析 语音识别智能助手语音转文字 大模型性能优化的新探索…

【android 9】【input】【7.发送按键事件1——InputReader线程】

系列文章目录 本人系列文章-CSDN博客 目录 系列文章目录 1.简介 1.1发送流程介绍 1.2 时序图 2.普通按键消息发送部分源码分析 2.1 设备的监听 2.2 inputreader线程阻塞等待事件发生 2.3 按键事件的产生 2.4 EventHub::getEvents 2.5 InputReader::loopOnce 2.6 process…

丢失的数字 ---- 位运算

题目链接 题目: 分析: 解法一: 哈希表解法二: 高斯求和解法三:位运算 异或运算根据运算的性质, 相同的两个a异或 0 以示例一为例: 数组中有0,1,3, 缺失的数字是2, 那么只要我们将数组与0,1,2,3 异或, 就会得到2 代码: class Solution {public int missingNumber(int[] num…

【Redis】 Java操作客户端命令——集合操作与有序集合操作

文章目录 &#x1f343;前言&#x1f333;集合操作&#x1f6a9;sadd 和 smembers&#x1f6a9;srem 和 sismember&#x1f6a9;scard&#x1f6a9;sinter&#x1f6a9;sunion&#x1f6a9;sdiff &#x1f332;有序集合操作&#x1f6a9;zadd 和 zrange&#x1f6a9;zrem 和 zc…