反向传播

语义分割丨PSPNet源码解析「训练阶段」

依然范特西╮ 提交于 2020-04-22 04:53:02
引言 之前一段时间在参与语义分割的项目,最近有时间了,正好把这段时间的所学总结一下。 在代码上,语义分割的框架会比目标检测简单很多,但其中也涉及了很多细节。在这篇文章中,我以PSPNet为例,解读一下语义分割框架的代码。搞清楚一个框架后,再看别人的框架都是大同小异。 工程来自 https://github.com/speedinghzl/pytorch-segmentation-toolbox 框架中一个非常重要的部分是evaluate.py,即测试阶段。但由于篇幅较长,我将另开一篇来阐述测试过程,本文关注训练过程。 整体框架 pytorch-segmentation-toolbox |— dataset 数据集相关 |— list 存放数据集的list |— datasets.py 数据集加载函数 |— libs 存放pytorch的op如bn |— networks 存放网络代码 |— deeplabv3.py |— pspnet.py |— utils 其他函数 |— criterion.py 损失计算 |— encoding.py 显存均匀 |— loss.py OHEM难例挖掘 |— utils.py colormap转换 |— evaluate.py 网络测试 |— run_local.sh 训练脚本 |— train.py 网络训练 train.py 网络训练主函数

深度学习中的激活函数之 sigmoid、tanh和ReLU

自古美人都是妖i 提交于 2020-04-14 13:14:32
【推荐阅读】微服务还能火多久?>>> 三种非线性激活函数sigmoid、tanh、ReLU。 sigmoid: y = 1/(1 + e -x ) tanh: y = (e x - e -x )/(e x + e -x ) ReLU:y = max(0, x) 在隐藏层,tanh函数要优于sigmoid函数,可以看作是sigmoid的平移版本,优势在于其取值为 [-1, 1],数据的平均值为0,而sigmoid的平均值为0.5,有类似数据中心化的效果。 但在输出层,sigmoid可能会优于tanh,原因在于我们希望输出结果的概率落在0~1之间,比如二元分类问题,sigmoid可以作为输出层的激活函数。 在实际情况中,特别是在训练深层网络时,sigmoid和tanh会在端值趋近饱和,造成训练速度减慢,故深层网络的激活函数多是采用ReLU,浅层网络可以采用sigmoid和tanh函数。 为弄清在反向传播中如何进行梯度下降,来看一下三个函数的求导过程: 1. sigmoid求导 sigmoid函数定义为 y = 1/(1 + e -x ) = (1 + e -x ) -1 相关的求导公式:(x n )' = n * x n-1 和 (e x ) ' = e x 应用链式法则,其求导过程为: dy/dx = -1 * (1 + e-x)-2 * e-x * (-1) = e-x * (1

VGG、ResNet、GoogleNet网络理论

笑着哭i 提交于 2020-04-13 23:37:17
【今日推荐】:为什么一到面试就懵逼!>>> 本文作者:馬立 分享嘉宾:白浩杰 文章整理:马立辉 内容来源:百度云智学院 导读: 计算机视觉领域涉及许多不同任务,对于图像分类任务,人类一直在追求更高的分类精度,期间衍生了许多有代表性的经典网络结构,今天就来做个探讨。 本篇文章主要包含以下内容: 1.计算机视觉任务 2 图像分类应用案例 3.经典网络结构 1. 计算机视觉任务 计算机视觉通常涉及以下几个任务:图像分类、目标检测、语义分割/实例分割、场景文字识别、图像生成、人体关键点检测、视频分类、度量学习。相对而言,前四个任务已经有比较成熟的技术,工业应用比较广泛。 ① 图像分类 图像分类任务,需要根据在图像信息中所反映的不同特征,把不同类别的目标区分开来。例如,在给定的不同图片中,分类任务需要能够把图片主体识别出来,如给定下面两张图,经过图像分类程序的识别,能够识别出图1是猫,图2是狗。 图1 图2 ② 目标检测 目标检测任务不仅仅要识别图片主体,还要把主体所在的位置用最小包围矩形进行标记。如图3,图中的主体是一位小朋友和他手中拿的小锤子,通过目标检测,把主体所在的位置用最小包围矩形标记了出来。 图3 ③ 语义分割/实例分割 语义分割是指我们按照像素级别的精度,把图片的每一个像素属于哪一个类别标注出来。比如图4(c),黄色区域归于背景,蓝色归于瓶子。 实例分割相比语义分割更加复杂

计算机视觉图像预处理中的 Zero-mean(零均值化) 和 Normalization(归一化)

狂风中的少年 提交于 2020-04-11 18:58:42
在训练神经网络前,往往要对原始图像数据进行预处理,中心化(Zero-centered及Mean-subtraction)和归一化(Normalization)。那么具体是什么意思呢? 1、零均值化/中心化 在训练神经网络前,预处理训练集数据,通常是先进行零均值化(zero-mean),即让所有训练图像中每个位置的像素均值为0,使得像素范围变成 [-128, 127],以0为中心。 零均值化:是指变量减去它的均值; 优点:在反向传播时加快网络中每层权重参数的收敛;还可以增加基向量的正交性。 2、归一化/标准化 不同的评价指标往往具有不同的量纲和量纲单位,这样无法对结果进行分析,难以对结果进行衡量,为了消除指标之间的量纲影响,需要对数据进行标准化处理,以使数据指标之间存在可比性。 归一化:是指变量减去它的均值,再除以标准差; 优点:归一化后加快了梯度下降求最优解的速度;并且有可能提高精度。 来源: oschina 链接: https://my.oschina.net/u/4260256/blog/3229516

计算机视觉图像预处理中的 Zero-mean(零均值化) 和 Normalization(归一化)

雨燕双飞 提交于 2020-04-11 18:54:19
在训练神经网络前,往往要对原始图像数据进行预处理,中心化(Zero-centered及Mean-subtraction)和归一化(Normalization)。那么具体是什么意思呢? 1、零均值化/中心化 在训练神经网络前,预处理训练集数据,通常是先进行零均值化(zero-mean),即让所有训练图像中每个位置的像素均值为0,使得像素范围变成 [-128, 127],以0为中心。 零均值化:是指变量减去它的均值; 优点:在反向传播时加快网络中每层权重参数的收敛;还可以增加基向量的正交性。 2、归一化/标准化 不同的评价指标往往具有不同的量纲和量纲单位,这样无法对结果进行分析,难以对结果进行衡量,为了消除指标之间的量纲影响,需要对数据进行标准化处理,以使数据指标之间存在可比性。 归一化:是指变量减去它的均值,再除以标准差; 优点:归一化后加快了梯度下降求最优解的速度;并且有可能提高精度。 来源: oschina 链接: https://my.oschina.net/u/4352371/blog/3229531

ICLR2020|Reformer,一种高效的Transformer

大城市里の小女人 提交于 2020-04-11 08:28:22
  本文介绍的是ICLR2020入选 Oral 论文《Reformer: The Efficient Transformer》,作者来自UC 伯克利和谷歌大脑。    作者 | 李光明    编辑 | 丛 末      论文地址:https://openreview.net/pdf?id=rkgNKkHtvB   Transformer是NLP中广为应用的成熟技术,在许多任务中取得了骄人的成绩,尤其是长序列文本上表现突出,但却极其耗费算力和内存资源,Transformer网络一层的参数量约0.5B,需要2G的内存空间,单层网络的Transformer在单台机器上尚可满足,但鉴于以下考虑,整个Transformer网络所需要的资源是惊人的:   一个N层的网络需要的内存资源要多于一层所需内存的N倍,因为同时需要存储激活结果,在反向传播时使用。   Transformer前馈全连接神经网络的宽度(神经单元数)要比attention激活的宽度(可理解为embedding的size)多,需要更多的内存消耗。   对一个长度为L的序列,Attention层的复杂度是,这对长序列文本处理是无法接受的。   针对上述问题,这篇文章通过下面几项技术解决上面提到的几个问题:   使用可逆残差层取代标准残差层,在训练阶段只需要存储一层的激活结果而不是N层(N是网络层数)(消除了网络中N的倍数)。  

VGG、ResNet、GoogleNet网络理论

两盒软妹~` 提交于 2020-04-11 02:46:08
本文作者:馬立 分享嘉宾:白浩杰 文章整理:马立辉 内容来源:百度云智学院 导读: 计算机视觉领域涉及许多不同任务,对于图像分类任务,人类一直在追求更高的分类精度,期间衍生了许多有代表性的经典网络结构,今天就来做个探讨。 本篇文章主要包含以下内容: 1.计算机视觉任务 2 图像分类应用案例 3.经典网络结构 1. 计算机视觉任务 计算机视觉通常涉及以下几个任务:图像分类、目标检测、语义分割/实例分割、场景文字识别、图像生成、人体关键点检测、视频分类、度量学习。相对而言,前四个任务已经有比较成熟的技术,工业应用比较广泛。 ① 图像分类 图像分类任务,需要根据在图像信息中所反映的不同特征,把不同类别的目标区分开来。例如,在给定的不同图片中,分类任务需要能够把图片主体识别出来,如给定下面两张图,经过图像分类程序的识别,能够识别出图1是猫,图2是狗。 图1 图2 ② 目标检测 目标检测任务不仅仅要识别图片主体,还要把主体所在的位置用最小包围矩形进行标记。如图3,图中的主体是一位小朋友和他手中拿的小锤子,通过目标检测,把主体所在的位置用最小包围矩形标记了出来。 图3 ③ 语义分割/实例分割 语义分割是指我们按照像素级别的精度,把图片的每一个像素属于哪一个类别标注出来。比如图4(c),黄色区域归于背景,蓝色归于瓶子。 实例分割相比语义分割更加复杂,不仅要求把哪一个像素属于哪一个类别标注出来

VGG、ResNet、GoogleNet网络理论

穿精又带淫゛_ 提交于 2020-04-10 03:03:20
本文作者:馬立 分享嘉宾:白浩杰 文章整理:马立辉 内容来源:百度云智学院 导读: 计算机视觉领域涉及许多不同任务,对于图像分类任务,人类一直在追求更高的分类精度,期间衍生了许多有代表性的经典网络结构,今天就来做个探讨。 本篇文章主要包含以下内容: 1.计算机视觉任务 2 图像分类应用案例 3.经典网络结构 1. 计算机视觉任务 计算机视觉通常涉及以下几个任务:图像分类、目标检测、语义分割/实例分割、场景文字识别、图像生成、人体关键点检测、视频分类、度量学习。相对而言,前四个任务已经有比较成熟的技术,工业应用比较广泛。 ① 图像分类 图像分类任务,需要根据在图像信息中所反映的不同特征,把不同类别的目标区分开来。例如,在给定的不同图片中,分类任务需要能够把图片主体识别出来,如给定下面两张图,经过图像分类程序的识别,能够识别出图1是猫,图2是狗。 图1 图2 ② 目标检测 目标检测任务不仅仅要识别图片主体,还要把主体所在的位置用最小包围矩形进行标记。如图3,图中的主体是一位小朋友和他手中拿的小锤子,通过目标检测,把主体所在的位置用最小包围矩形标记了出来。 图3 ③ 语义分割/实例分割 语义分割是指我们按照像素级别的精度,把图片的每一个像素属于哪一个类别标注出来。比如图4(c),黄色区域归于背景,蓝色归于瓶子。 实例分割相比语义分割更加复杂,不仅要求把哪一个像素属于哪一个类别标注出来

基础的神经网络与反向传播

邮差的信 提交于 2020-04-09 14:58:09
算法原理 概述: 算法通过构建多层网络解决单层感知机的非线性可分无法分割问题,通过梯度下降法更新网络中的各个权值向量,使得全局的损失函数极小化,从而实现对任意复杂的函数的拟合,这在分类问题中表现为它能将任意复杂的数据划分开,在回归问题中表现为它能拟合任意复杂的回归函数 其中梯度下降的核心是误差反向传播算法,这个算法大大减少了梯度下降法的计算量,是多层神经网络得以复苏的功臣,它使得当前层的梯度项能往后一层传播,从而快速求得后一层的梯度 问题1:神经网络是如何解决非线性可分无法分割问题的? pla模型可以看做是神经网络的一个神经元,我们知道,pla能对数据空间划分一个超平面,简单的实现分类任务。但是pla这种只会切一刀的模型无法解决异或问题。 而神经网路可以通过增加一个2节点的隐藏层,就相当于是放置了两个pla,这两个pla互相独立,各自能在数据空间划分一个超平面,对于异或问题,它们将二维空间划分为3到4个平面(图2的A、B、C、D四个平面),然后隐藏层到输出层再对这些平面做一次分割将其分成两类(图3的橙色与蓝色),从而解决了非线性可分的异或问题 问题2:如何理解神经网络强大的拟合能力? 说真的,我觉得神经网络比决策树抽象太多了,不容易理解,下面只是我的一些肤浅的认识 ① 对于分类问题 ,用空间切割的思想进行理解,通过上述异或问题的例子我们看到,通过增加节点数

VGG、ResNet、GoogleNet网络理论

妖精的绣舞 提交于 2020-04-08 03:13:06
本文作者:馬立 分享嘉宾:白浩杰 文章整理:马立辉 内容来源:百度云智学院 导读: 计算机视觉领域涉及许多不同任务,对于图像分类任务,人类一直在追求更高的分类精度,期间衍生了许多有代表性的经典网络结构,今天就来做个探讨。 本篇文章主要包含以下内容: 1.计算机视觉任务 2 图像分类应用案例 3.经典网络结构 1. 计算机视觉任务 计算机视觉通常涉及以下几个任务:图像分类、目标检测、语义分割/实例分割、场景文字识别、图像生成、人体关键点检测、视频分类、度量学习。相对而言,前四个任务已经有比较成熟的技术,工业应用比较广泛。 ① 图像分类 图像分类任务,需要根据在图像信息中所反映的不同特征,把不同类别的目标区分开来。例如,在给定的不同图片中,分类任务需要能够把图片主体识别出来,如给定下面两张图,经过图像分类程序的识别,能够识别出图1是猫,图2是狗。 图1 图2 ② 目标检测 目标检测任务不仅仅要识别图片主体,还要把主体所在的位置用最小包围矩形进行标记。如图3,图中的主体是一位小朋友和他手中拿的小锤子,通过目标检测,把主体所在的位置用最小包围矩形标记了出来。 图3 ③ 语义分割/实例分割 语义分割是指我们按照像素级别的精度,把图片的每一个像素属于哪一个类别标注出来。比如图4(c),黄色区域归于背景,蓝色归于瓶子。 实例分割相比语义分割更加复杂,不仅要求把哪一个像素属于哪一个类别标注出来