Python 全栈体系【四阶】(四十三)

2024-05-15 11:44

本文主要是介绍Python 全栈体系【四阶】(四十三),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第五章 深度学习

九、图像分割

3. 常用模型

3.4 DeepLab 系列
3.4.1 DeepLab v1(2015)
3.4.1.1 概述

图像分割和图像分类不一样,要对图像每个像素进行精确分类。在使用CNN对图像进行卷积、池化过程中,会导致特征图尺寸大幅度下降、分辨率降低,通过低分辨率特征图上采样生成原图的像素分类信息,容易导致信息丢失,分割边界不精确。DeepLab v1采用了空洞卷积、条件随机场等技术,有效提升了分割准确率。在 Pascal VOC 2012 的测试集 IOU 上达到了 71.6%,排名第一。速度方面,在GPU设备下推理可达每秒8帧。

3.4.1.2 空洞卷积

Dilated/Atrous Convolution(中文叫做空洞卷积或者膨胀卷积) ,是在标准的 convolution map 里注入空洞,以此来增加感受野。以下是一个空洞卷积示例图:

在这里插入图片描述

空洞卷积示例图

在空洞卷积中,通过添加空洞,在不增加参数、不进行降采样的情况下,增加感受野。空洞卷积有两种理解,一是可以理解为将卷积核扩展,如图卷积核为 3*3 但是这里将卷积核变为 5*5 即在卷积核每行每列中间加0。二是理解为在特征图上每隔1行或一列取数与 3*3 卷积核进行卷积。当不填充空洞时,dilation rate为1,当填充1时,dilation rate为2,当填充2时,dilation rate为3。如下图所示:

在这里插入图片描述

不同膨胀率的空洞卷积

空洞卷积最初的提出是为了解决图像分割的问题而提出的,常见的图像分割算法通常使用池化层和卷积层来增加感受野(Receptive Filed),同时也缩小了特征图尺寸(resolution),然后再利用上采样还原图像尺寸,特征图缩小再放大的过程造成了精度上的损失,因此需要一种操作可以在增加感受野的同时保持特征图的尺寸不变,从而代替下采样和上采样操作。

3.4.1.3 条件随机场

条件随机场(Conditional random field,CRF)是给定一组输入随机变量条件下另一组输出随机变量的条件概率分布模型,其特点是假设输出随机变量构成马尔可夫随机场。

马尔科夫随机场是具有马尔科夫特性的随机场。马尔科夫性质指的是一个随机变量序列按时间先后关系依次排开的时候,第N+1时刻的分布特性,与N时刻以前的随机变量的取值无关。拿天气来打个比方。如果我们假定天气是马尔可夫的,其意思就是我们假设今天的天气仅仅与昨天的天气存在概率上的关联,而与前天及前天以前的天气没有关系。其它如传染病和谣言的传播规律,就是具有马尔可夫性质的。

3.4.1.4 网络结构

DeepLab v1使用VGG-16作为基础模型,为了更适合图像分割任务,做出了以下修改:

  • 将最后三个全连接层(fc6, fc7, fc8)改成卷积层
  • 将最后两个池化层(pool4, pool5)步长由2改成1
  • 将最后三个卷积层(conv5_1, conv5_2, conv5_3)的dilate rate 设置为2
  • 输出层通道数改为21(20个类别,1个背景)
3.4.1.5 能量函数

在这里插入图片描述

条件随机场对分割边沿的改善效果

DeepLab v1使用了全连接条件随机场(Fully-connected Conditional Random Field)来保证分类准确和位置准确。其能量函数:

E ( x ) = ∑ i θ i ( x i ) + ∑ i j θ i j ( x i , x j ) E(x)=\sum_i \theta_i(x_i) + \sum_{ij} \theta_{ij} (x_i, x_j) E(x)=iθi(xi)+ijθij(xi,xj)

训练的目标要最小化能量函数,函数第一项:

θ i ( x i ) = − l o g P ( x i ) \theta_i(x_i) = -logP(x_i) θi(xi)=logP(xi)

第一项用来保证分类的准确率,其中 x i x_i xi表示像素的标签值, P ( x i ) P(x_i) P(xi)表示DCNN的计算结果,准确率越高P(x)越接近1,该项值越小。函数第二项:

θ i j ( x i , x j ) = μ ( x i , x j ) ∑ m = 1 K w m . k m ( f i , f j ) μ ( x i , x j ) = 1 i f x i ≠ x j , o t h e r w i s e 0 \theta_{ij}(x_i, x_j) = \mu (x_i, x_j) \sum_{m=1}^{K} w_m.k^m(f_i, f_j) \\ \mu (x_i, x_j) = 1 \ \ if \ \ x_i \ne x_j,otherwise \ 0 θij(xi,xj)=μ(xi,xj)m=1Kwm.km(fi,fj)μ(xi,xj)=1  if  xi=xjotherwise 0

其中, μ ( x i , x j ) \mu(x_i, x_j) μ(xi,xj)表示只考虑标签不相同的两个像素点, k m ( f i , f j ) k^m (f_i, f_j) km(fi,fj)为一个高斯核函数,具体表示为:

w 1 e x p ( − ∣ ∣ p i − p j ∣ ∣ 2 2 σ α 2 − ∣ ∣ I i − I j ∣ ∣ 2 2 σ β 2 ) + w 2 e x p ( − ∣ ∣ p i − p j ∣ ∣ 2 2 σ γ 2 ) w_1 \ \ exp(-\frac{||p_i - p_j||^2}{2 \sigma_{\alpha}^2}-\frac{||I_i - I_j||^2}{2 \sigma_{\beta}^2}) + w_2 \ \ exp(-\frac{||p_i - p_j||^2}{2 \sigma_{\gamma}^2}) w1  exp(2σα2∣∣pipj22σβ2∣∣IiIj2)+w2  exp(2σγ2∣∣pipj2)

此函数主要由两个像素点的位置和颜色决定,位置为主、颜色为辅。该公式第一部分由位置(p表示)、颜色共同确定(I表示),第二项由位置确定, σ α , σ β , σ γ \sigma_\alpha, \sigma_\beta, \sigma_\gamma σα,σβ,σγ控制高斯核的比例。

在这里插入图片描述

条件随机场边沿精修效果
3.4.1.6 效果
  • 自对比试验

在这里插入图片描述

左表为采用不同策略下的IOU均值,其中,MSc表示多尺度融合,CRF表示条件随机场,LargFOV表大范围视野。右表为其它模型与该模型各种策略对比。

  • 与FCN-8s和TTI-Zoomout-16的效果对比

在这里插入图片描述

从上到下依次为原图、真实标记、被对比的模型分割效果、DeepLab-CRF分割效果。

3.4.2 DeepLab v2(2017)

DeepLab v2在DeepLab v1的基础上,主要引入了ASPP(Atrous Spatial Pyramid Pooling,膨胀空间金字塔池化)策略,在给定的输入上以不同采样率的空洞卷积并行采样,相当于以多个比例捕捉图像的上下文,从而获得更好的分割性能。ASPP原理如下图所示:

在这里插入图片描述

以下是PASCAL VOC 2012数据集上不同kernel size以及不同大小的膨胀率(atrous sampling rate)的实验对比:

在这里插入图片描述

以下是PASCAL VOC 2012数据集上分割效果展示:

在这里插入图片描述

以下是使用ResNet-101在PASCAL VOC 2012数据集上的实验对比:

在这里插入图片描述

其中,MSC表示多尺度输入最大融合,COCO表示采用在MS-COCO上预训练的模型,Aug表示通过随机缩放增加数据。以下是跟其它模型的对比:

在这里插入图片描述

以下是在Cityscapes数据集上的分割效果:
在这里插入图片描述

以下是分割失败的示例:

在这里插入图片描述

这篇关于Python 全栈体系【四阶】(四十三)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/991748

相关文章

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

nudepy,一个有趣的 Python 库!

更多资料获取 📚 个人网站:ipengtao.com 大家好,今天为大家分享一个有趣的 Python 库 - nudepy。 Github地址:https://github.com/hhatto/nude.py 在图像处理和计算机视觉应用中,检测图像中的不适当内容(例如裸露图像)是一个重要的任务。nudepy 是一个基于 Python 的库,专门用于检测图像中的不适当内容。该

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

HTML提交表单给python

python 代码 from flask import Flask, request, render_template, redirect, url_forapp = Flask(__name__)@app.route('/')def form():# 渲染表单页面return render_template('./index.html')@app.route('/submit_form',

Python QT实现A-star寻路算法

目录 1、界面使用方法 2、注意事项 3、补充说明 用Qt5搭建一个图形化测试寻路算法的测试环境。 1、界面使用方法 设定起点: 鼠标左键双击,设定红色的起点。左键双击设定起点,用红色标记。 设定终点: 鼠标右键双击,设定蓝色的终点。右键双击设定终点,用蓝色标记。 设置障碍点: 鼠标左键或者右键按着不放,拖动可以设置黑色的障碍点。按住左键或右键并拖动,设置一系列黑色障碍点

Python:豆瓣电影商业数据分析-爬取全数据【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】

**爬取豆瓣电影信息,分析近年电影行业的发展情况** 本文是完整的数据分析展现,代码有完整版,包含豆瓣电影爬取的具体方式【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】   最近MBA在学习《商业数据分析》,大实训作业给了数据要进行数据分析,所以先拿豆瓣电影练练手,网络上爬取豆瓣电影TOP250较多,但对于豆瓣电影全数据的爬取教程很少,所以我自己做一版。 目

【Python报错已解决】AttributeError: ‘list‘ object has no attribute ‘text‘

🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言一、问题描述1.1 报错示例1.2 报错分析1.3 解决思路 二、解决方法2.1 方法一:检查属性名2.2 步骤二:访问列表元素的属性 三、其他解决方法四、总结 前言 在Python编程中,属性错误(At