OpenMMlab实训营(一)

1.计算机视觉

用计算机实现人的视觉功能——对客观世界的三维场景的感知、识别和理解。
实际上就是对图片影像的特征进行提取以获取信息。从易到难包括图像分类,图像检测、实例分割。

2.OpenMMlab

2.1介绍

OpenMMLab是一个适用于学术研究和工业应用的开源算法体系,涵盖了计算机视觉的许多研究课题,于2018年10月启动。主要包括2部分:开源项目和开放数据集。

2.2框架

部署框架: mmdeploy
算法框架:mmdetection,mmclassification,mmsegmentation(本课程主要学习)等20多个算法库。
视觉基础库MMCV:公用底层模块、图像接口
训练框架:pytorch
在这里插入图片描述

3.机器学习

机器学习::从数据中学习经验,以解决特定问题。
应用:人脸识别,机器翻译,语音识别,强化学习
关键词提取、统计,形成词频向量。用词频向量代表一个文本,称为特征。
将空间划分成不同的区域就可以对事物进行分类。所形成的分类器分为线性分类器和非线性分类器。在遇到一些问题例如异或问题只能使用非线性分类器来解决。通常将分类器参数求解过程叫做训练
流程:训练——验证——应用。
采用机器学习的方法解决实际问题通常需要3个步骤:
1.训练
我们需要采集一些数据,标注它们的类别,从中选取一部分用于训练分类器,得到一个可以用于分类的分类器。
2.验证
从采集、标注的数据中另外选取一部分,测试所得分类器的分类精度
验证所用的数据不能和训练重合,以保证分类器的泛化性能:在一部分数据上训练的分类器可以在其余的数据上表现出足够的分类精度
3.应用
将经过验证的分类器集成到实际的业务系统中,实现对应的功能在应用阶段,分类器面对的数据都是在训练、验证阶段没有见过的

4.神经网络

4.1神经元

神经网络的最基本的构成元素是神经元,如下图所示。
在这里插入图片描述

权重weight:
·连接线上的值,即图中的w, w2,… ,wa。不同的权值,输出结果不同
偏置值bias:
·输入x1,Xo,… ,xa进行加权求和之后,需要加上一个偏置值b
可学习参数:需要基于数据确定需要调整这些参数,使得精度最大

4.2神经网络的训练

训练目标:找到一组比较好可学习的参数值,使得损失函数L最小。
我们一般通过梯度下降算法来求解这些最优参数值
梯度下降算法目标:寻找损失函数曲面L(w)的谷点
过程
1:随机选取找一个起始点w(o)
2:寻找下降最快的方向,即负梯度方向√wL(wo)),并前进一步
3:重复 Step 2直到不能再下降
神经网络训练流程:1、计算样本损失2、计算样本损失梯度3、根据梯度信息更新参数
在这里插入图片描述

5.卷积神经网络

5.1 卷积和特性

卷积的理解:所谓两个函数的卷积,本质上就是先将一个函数翻转,然后进行滑动叠加。详细见https://blog.csdn.net/piglite/article/details/105575822?spm=1001.2014.3001.5506这篇文章。
局部连接:像素局部相关 (依卷积核大小)
共享权重:平移不变性 (卷积核的参数共享)

5.2 结构

在这里插入图片描述
1.输入层:该层要做的处理主要是对原始图像数据进行预处理。
2.卷积层:用卷积核去“卷”图像,这个“卷”字可以理解为提取图像的特征。不同的卷积核在对图像分别进行卷积后可以得到不同的特征图(feature map)。
3.激活层:卷积神经网络在卷积后需要激活,把卷积层输出结果做非线性映射就是激励层的作用。激活函数是用来加入非线性因素的,因为线性模型的表达能力不够。
4.池化层:池化层夹在连续的卷积层中间, 用于压缩数据和参数的量,减小过拟合。简而言之,如果输入是图像的话,那么池化层的最主要作用就是压缩图像。下采样层也叫池化层。
5.全连接层:在整个卷积神经网络中起到“分类器”的作用。换句话说,就是把特征整合到一起(高度提纯特征),方便交给最后的分类器或者回归。
6.输出层:输出一个向量,分别是每类的概率。

6.课后提问

在这里插入图片描述
平移是一种几何变换,表示把一幅图像或一个空间中的每一个点在相同方向移动相同距离。比如对图像分类任务来说,图像中的目标不管被移动到图片的哪个位置,得到的结果(标签)应该是相同的,这就是卷积神经网络中的平移不变性。

卷积+池化=平移不变性
卷积可以是把卷积层看做一个特征提取器,计算的时候卷积核在图片上滑过,卷积神经网络的不变形就是不管这个特征在图片的哪个位置,都会被卷积核给遍历到。
最大值左右偏移一个像素不会影响池化后的结果,比如最大池化,它返回感受野中的最大值,如果最大值被移动了,但是仍然在这个感受野中,那么池化层也仍然会输出相同的最大值。

在这里插入图片描述
一般都是在epoch结束的时候算loss并验证精度,每个mini batch算一次,
可以在config里设置用iteration迭代的,这样算一个batch就可以得到一次loss并验证精度,但是loss大多数时候是在下降的,不太可能每个batch之后就验证,计算量太大了,所以都是间隔很多个iteration或者若干个epoch验证一次。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值