计算机视觉中的细节问题(三)

参考   计算机视觉中的细节问题 - 云+社区 - 腾讯云

目录

(1)、目标检测中NMS使用在哪步?

(2)、epoch、batch size和iterations之间的关系

(3)PASCAL VOC文件中的Main文件

(4)、什么是潜变量?

(5)、L2范数

(6)、小批量梯度下降

(7)、目标检测中anchor和proposal的区别

(8)、静态多尺度的缺点

(9)、TensorFlow里“滑动平均模型”中“影子变量”的理解

(10)、为什么现在大家喜欢用3*3小卷积?


(1)、目标检测中NMS使用在哪步?

非最大抑制(NMS)主要用于基于深度学习的目标检测模型输出的后处理,从而去除冗余的检测框,获得正确的检测结果。示意图如下:

                                           

(2)、epoch、batch size和iterations之间的关系

在深度学习中,epoch、batchsize和iterations是在训练模型时,一定用到的一些概念。那么分别是什么意思呢?
首先,为什么会用到以上概念,是因为“梯度下降”,也就是寻求曲线的一个最小值。其次,梯度下降是迭代的,它是一个需要多次计算的结果来求得最优解。

  • epoch

一个epoch指代所有的数据送入网络中完成一次前向计算及反向传播的过程。在训练模型时,一般会设置多个epoch,比如epoch=50、100、600,甚至等于6000。这么做是因为在寻求最优解时,将数据送入网络进行一次迭代是不够的,一般是需要进行多轮的迭代才会收敛。同时,深度学习中,训练模型时的数据量一般来说是比较大的,也就是说一个epoch是比较大的,计算机一般无法负荷,所以这时,一般会分成几个比较小的batches,每次送入网络一部分数据。

  • batch size

经上面所述,batch就是每次送入网络中训练的一部分数据,batch size就是每个batch中训练样本的数量。所以,至于batch size取多大合适,这取决于设备和运行效率,根据实际情况来进行实际的选择。

  • iterations

iterations就是完成一次epoch所需的batch个数。比如,训练集一共有5000个数据,batch size为500,则iterations=10,epoch是等于1(因为一个epoch是所有数据融入网络中完成一次前向计算及反向传播的过程)。


(3)PASCAL VOC文件中的Main文件


在这里主要考察Main文件夹。


Main文件夹下包含了20个分类的***_train.txt、***_val.txt和***_trainval.txt。
这些txt中的内容都差不多如下:
前面的表示图像的name,后面的1代表正样本,-1代表负样本。
_train中存放的是训练使用的数据,每一个class的train数据都有5717个。
_val中存放的是验证结果使用的数据,每一个class的val数据都有5823个。
_trainval将上面两个进行了合并,每一个class有11540个。
需要保证的是train和val两者没有交集,也就是训练数据和验证数据不能有重复,在选取训练数据的时候 ,也应该是随机产生的。

(4)、什么是潜变量?

潜变量是指不能被直接精确观测或虽能被观测但尚需通过其它方法加以综合的指标。

(5)、L2范数

对两个向量的L2范数为空间的距离:

||\vec{a},\vec{b}||=\sqrt{\sum_{n=1}^n(a_i-b_i)^2}

(6)、小批量梯度下降

小批量梯度下降,是对批量梯度下降以及随机梯度下降的一个折中办法。其思想是:每次迭代 使用 ** batch_size** 个样本来对参数进行更新。

(7)、目标检测中anchor和proposal的区别

首先我们需要知道anchor的本质是什么,本质是SPP(spatial pyramid pooling)思想的逆向。而SPP本身是做什么的呢,就是将不同尺寸的输入resize成为相同尺寸的输出。所以SPP的逆向就是,将相同尺寸的输出,倒推得到不同尺寸的输入。

                                  

接下来是anchor的窗口尺寸,这个不难理解,三个面积尺寸(128^2,256^2,512^2),然后在每个面积尺寸下,取三种不同的长宽比例(1:1,1:2,2:1).这样一来,我们得到了一共9种面积尺寸各异的anchor。示意图如下:

                                  

至于这个anchor到底是怎么用的,这个是理解整个问题的关键。

下面是整个faster RCNN结构的示意图:

                                 

利用anchor是从第二列这个位置开始进行处理,这个时候,原始图片已经经过一系列卷积层和池化层以及relu,得到了这里的 feature:51x39x256(256是层数)。

在这个特征参数的基础上,通过一个3x3的滑动窗口,在这个51x39的区域上进行滑动,stride=1,padding=2,这样一来,滑动得到的就是51x39个3x3的窗口。

对于每个3x3的窗口,作者就计算这个滑动窗口的中心点所对应的原始图片的中心点。然后作者假定,这个3x3窗口,是从原始图片上通过SPP池化得到的,而这个池化的区域的面积以及比例,就是一个个的anchor。换句话说,对于每个3x3窗口,作者假定它来自9种不同原始区域的池化,但是这些池化在原始图片中的中心点,都完全一样。这个中心点,就是刚才提到的,3x3窗口中心点所对应的原始图片中的中心点。如此一来,在每个窗口位置,我们都可以根据9个不同长宽比例、不同面积的anchor,逆向推导出它所对应的原始图片中的一个区域,这个区域的尺寸以及坐标,都是已知的。而这个区域,就是我们想要的 proposal。所以我们通过滑动窗口和anchor,成功得到了 51x39x9 个原始图片的proposal。接下来,每个proposal我们只输出6个参数:每个 proposal 和 ground truth 进行比较得到的前景概率和背景概率(2个参数)(对应图上的 cls_score);由于每个 proposal 和 ground truth 位置及尺寸上的差异,从 proposal 通过平移放缩得到 ground truth 需要的4个平移放缩参数(对应图上的 bbox_pred)。所以根据我们刚才的计算,我们一共得到了多少个anchor box呢? 51 x 39 x 9 = 17900

(8)、静态多尺度的缺点

多尺度方法,比如FPN,其实在分类和回归问题上是存在矛盾的。对于分类任务来讲网络越深feature map越小越好,但是对于回归任务,网络越浅,feature map越大越好。比如在一幅图像中,同时形状较为复杂和形状较为简单,但是尺寸相近的目标,比如人和远处的车辆,对车辆来讲用更深的尺寸易于分类,但对人来讲使用较深的网络,可能会影响定位效果。

(9)、TensorFlow里“滑动平均模型”中“影子变量”的理解

variable的变量值改变之后,并不是直接给shadow_variable变量赋值的,而是shadow_variable以衰减率decay的程度保持原有值,再加上(1 - decay)部分新变量值variable,这样构成了新的影子变量shadow_variable。也就是说,每次提供一个新变量的时候,影子变量以衰减率decay变化,再加上(1 - decay)倍的新变量,共同构成新的影子变量。下次再提供一个新变量的时候,同样以这种方式生成新的影子变量。

(10)、为什么现在大家喜欢用3*3小卷积?

我们知道现在在构建CNN时大家喜欢用3*3的卷积,而不是早期的5*5,7*7等更大尺寸的卷积,如vgg系列网络中全部使用了3*3的卷积。那么你知道为什么这样做吗?这里既然用3*3卷积来替代更大尺寸的卷积,那么有一个前提,就是要保证两者具有同样大小的输出和感受野。两个3*3的卷积才能代替一个5*5的卷积;三个3*3的卷积才能代替一个7*7的卷积。以stride=1,padding=0我们来看看为何。我们首先看一下采用5*5卷积的方案。

「AI-1000问」为什么现在大家喜欢用3*3小卷积?

假设图像大小为n*n,采用5*5的卷积核其输出为(n-5)/1+1=n-4。我们再看一下采用3*3卷积的方案。

「AI-1000问」为什么现在大家喜欢用3*3小卷积?

同样图像大小为n*n,第一次卷积后输出为(n-3)/1+1=n-2,第二次卷积后输出为(n-2-3)/1+1=n-4。从上面的图可以看出,采用一个5*5卷积核和两个3*3卷积核,它们卷积后的输出是相同大小,输出的每一个像素的感受野也相等。

在这样的前提下,有什么好处呢?

  1. 网络层数增加了,这增加了网络的非线性表达能力。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340