dropout算法(计算机视觉——典型的目标检测算法(OverFeat算法)(二))

:暂无数据 2026-09-15 15:10:06 1

dropout算法(计算机视觉——典型的目标检测算法(OverFeat算法)(二))

大家好,今天小编来为大家解答以下的问题,关于dropout算法,计算机视觉——典型的目标检测算法(OverFeat算法)(二)这个很多人还不知道,现在让我们一起来看看吧!

本文目录

计算机视觉——典型的目标检测算法(OverFeat算法)(二)

【嵌牛导读】目标检测在现实中的应用很广泛,我们需要检测数字图像中的物体位置以及类别,它需要我们构建一个模型,模型的输入一张图片,模型的输出需要圈出图片中所有物体的位置以及物体所属的类别。在深度学习浪潮到来之前,目标检测精度的进步十分缓慢,靠传统依靠手工特征的方法来提高精度已是相当困难的事。而ImageNet分类大赛出现的卷积神经网络(CNN)——AlexNet所展现的强大性能,吸引着学者们将CNN迁移到了其他的任务,这也包括着目标检测任务,近年来,出现了很多目标检测算法。

【嵌牛鼻子】计算机视觉

【嵌牛提问】如何理解目标检测算法——OverFeat

【嵌牛正文】

一、深度学习的典型目标检测算法

深度学习目标检测算法主要分为 双阶段检测算法 和 单阶段检测算法 ,如图1所示。
双阶段目标检测算法先对图像提取候选框,然后基于候选区域做二次修正得到检测结果,检测精度较高,但检测速度较慢;单阶段目标验测算法直接对图像进行计算生成检测结果,检测速度快,但检测精度低。

1、双阶段目标检测算法

双阶段目标检测方法主要通过选择性搜索(Selective Search)或者Edge Boxes等算法对输入图像选取可能包含检测目标的候选区域(Region Proposal),再对候选区域进行分类和位置回归以得到检测结果。

1.1 OverFeat 算法

《OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks》

Sermanet 等改进AlexNet 提出 OverFeat 算法。该算法结合AlexNet通过多尺度滑动窗口实现特征提取功能,并且共享特征提取层,应用于图像分类、定位和目标检测等任务。

关键技术:

1、FCN( 全卷积神经网络 )

对于一个各层参数结构都设计好的网络模型,要求输入图片的尺寸是固定的(例如,Alexnet要求输入图片的尺寸为227px*227px)。如果输入一张500*500的图片,希望模型仍然可以一直前向传导,即一个已经设计完毕的网络,可以输入任意大小的图片,这就是FCN。

FCN的思想在于:

1、从卷积层到全连接层,看成是对一整张图片的卷积层运算。

2、从全连接层到全连接层,看成是采用1*1大小的卷积核,进行卷积层运算。
如上图所示,绿色部分代表卷积核大小。假设一个CNN模型,其输入图片大小是14*14,通过第一层卷积后得到10*10大小的图片,然后接着通过池化得到了5*5大小的图片。像但是对于像素值为5*5的图片到像素值为1*1的图片的过程中:

(1)传统的CNN:如果从以前的角度进行理解的话,那么这个过程就是全连接层,我们会把这个5*5大小的图片,展平成为一维向量进行计算。

(2)FCN:FCN并不是把5*5的图片展平成一维向量再进行计算,而是直接采用5*5的卷积核,对一整张图片进行卷积运算。

二者本质上是相同的,只是角度不同,FCN把这个过程当成了对一整张特征图进行卷积,同样,后面的全连接层也是把它当做是以1*1大小的卷积核进行卷积运算。

当输入一张任意大小的图片,就需要利用以上所述的网络,例如输入一张像素为16*16的图片:
根据上图,该网络最后的输出是一张2*2的图片。可见采用FCN网络可以输入任意大小的图片。同时需要注意的是网络最后输出的图片大小不在是一个1*1大小的图片,而是一个与输入图片大小息息相关的一张图片。

Overfeat就是把采用FCN的思想把全连接层看成了卷积层,在网络测试阶段可以输入任意大小的图片。

2、offset max-pooling

简单起见,不用二维的图像作为例子,而是采用一维作为示例:

如上图所示,在X轴上有20个神经元,并且选择池化size=3的非重叠池化,那么根据之前所学的方法应该是:对上面的20个神经元,从1位置开始进行分组,每3个连续的神经元为一组,然后计算每组的最大值(最大池化),19、20号神经元将被丢弃,如下图所示:

或者可以在20号神经元后面,添加一个数值为0的神经元编号21,与19、20成为一组,这样可以分成7组:……,

,最后计算每组的最大值。

如果只分6组,除了以1作为初始位置进行连续组合之外,也可以从位置2或者3开始进行组合。也就是说其实有3种池化组合方法:

A、△=0分组:;

B、△=1分组:;

C、△=2分组:;

对应图片如下:

以往的CNN中,一般只用△=0的情况,得到池化结果后,就送入了下一层。但是该文献的方法是,把上面的△=0、△=1、△=2的三种组合方式的池化结果,分别送入网络的下一层。这样的话,网络在最后输出的时候,就会出现3种预测结果了。

前面所述是一维的情况,如果是2维图片的话,那么(△x,△y)就会有9种取值情况(3*3);如果我们在做图片分类的时候,在网络的某一个池化层加入了这种offset 池化方法,然后把这9种池化结果,分别送入后面的网络层,最后的图片分类输出结果就可以得到9个预测结果(每个类别都可以得到9种概率值,然后我们对每个类别的9种概率,取其最大值,做为此类别的预测概率值)。

算法原理:

文献中的算法,就是把这两种思想结合起来,形成了文献最后测试阶段的算法。

1、论文的网络架构与训练阶段

(1)网络架构

对于网络的结构,文献给出了两个版本——快速版、精确版,一个精度比较高但速度慢;另外一个精度虽然低但是速度快。下面是高精度版本的网络结构表相关参数:

表格参数说明:

网络输入:图片大小为221px*221px;

网络结构方面基本上和AlexNet相同,使用了ReLU激活,最大池化。不同之处在于:(a)作者没有使用局部响应归一化层;(b)然后也没有采用重叠池化的方法;(c)在第一层卷积层,stride作者是选择了2,这个与AlexNet不同(AlexNet选择的跨步是4,在网络中,如果stride选择比较大得话,虽然可以减少网络层数,提高速度,但是却会降低精度)。

需要注意的是把f7这一层,看成是卷积核大小为5*5的卷积层,总之就是需要把网络看成前面所述的FCN模型,去除了全连接层的概念,因为在测试阶段可不是仅仅输入221*221这样大小的图片,在测试阶段要输入各种大小的图片,具体请看后面测试阶段的讲解。

(2)网络训练

训练输入:对于每张原图片为256*256,然后进行随机裁剪为221*221的大小作为CNN输入,进行训练。

优化求解参数设置:训练的min-batchs选择128,权重初始化选择高斯分布的随机初始化:

然后采用随机梯度下降法,进行优化更新,动量项参数大小选择0.6,L2权重衰减系数大小选择10-5次方。学习率初始化值为0.05,根据迭代次数的增加,每隔几十次的迭代后,就把学习率的大小减小一半。

然后就是DropOut,这个只有在最后的两个全连接层,才采用dropout,dropout比率选择0.5。

2、网络测试阶段

在Alexnet的文献中,预测方法是输入一张图片256*256,然后进行multi-view裁剪,也就是从图片的四个角进行裁剪,还有就是一图片的中心进行裁剪,这样可以裁剪到5张224*224的图片。然后把原图片水平翻转一下,再用同样的方式进行裁剪,又可以裁剪到5张图片。把这10张图片作为输入,分别进行预测分类,在后在softmax的最后一层,求取个各类的总概率,求取平均值。

然而Alexnet这种预测方法存在两个问题:

一方面这样的裁剪方式,把图片的很多区域都给忽略了,这样的裁剪方式,刚好把图片物体的一部分给裁剪掉了;

另一方面,裁剪窗口重叠存在很多冗余的计算,像上面要分别把10张图片送入网络,可见测试阶段的计算量还是较大的。

Overfeat算法:

训练完上面所说的网络之后,在测试阶段不再是用一张221*221大小的图片了作为网络的输入,而是用了6张大小都不相同的图片,也就是所谓的多尺度输入预测,如下表格所示:

当网络前向传导到layer 5的时候,就利用了前面所述的FCN、offset pooling这两种思想的相结合。现以输入一张图片为例(6张图片的计算方法都相同),讲解layer 5后面的整体过程,具体流程示意图如下:

步骤一:

对于某个尺度的图片,经过前五层的卷积后得到特征图。上图中特征图的分辨率是20x23,256个通道。

步骤二:

对于该特征图,重复多次使用非重叠的池化,每次池化的偏置不同,有行偏置和列偏置。上图中偏置池化3次,偏置分别为为(0,1,2)。这就是offset pooling,也被称为fine stride。offset pooling得到的特征图的维度为6x7x3x3xD,其中6x7是特征图的分辨率,3x3是偏置池化的次数,D是通道数。上图中是以1维显示的。

步骤三:

池化后得到的特征图将被送入分类器。

步骤四:

分类器的输入是的5x5xD,输出是C(类别数)维向量。但是offset pooling后得到的特征图并不是5x5xD,比如上图中的特征图大小为6x7xD,因此分类器以滑动窗口的方式应用在特征图上,每个滑动窗口经过分类器输出一个C维向量。比如上图中输入的6x7xD的特征图最终得到2x3xC的输出,其中2x3是滑动窗口的个数。

步骤五:

而2x3xC只是一组偏置池化的输出,总的输出为2x3x3x3xC,将输出的张量reshape,得到6x9xC输出张量。最终输出分类张量为3d张量,即两个分辨率维度 x C维。

然后需要在后面把它们拉成一维向量,这样在一个尺度上,可以得到一个C*N个预测值矩阵,每一列就表示图片属于某一类别的概率值,并且求取每一列的最大值,作为本尺度的每个类别的概率值。

最后一共用了6种不同尺度(文献使用了12张,另外6张是水平翻转的图片)进行做预测,然后把这六种尺度结果再做一个平均,作为最最后的结果。

从上面过程可以看到整个网络分成两部分:layer 1~5这五层称之为特征提取层;layer 6~output称之为分类层。

六、定位任务

用于定位任务的时候,就把分类层(上面的layer 6~output)给重新设计一下,把分类改成回归问题,然后在各种不同尺度上训练预测物体的bounding box。

神经网络dropout什么意思啊

dropout是指在深度学习网络的训练过程中,对于神经网络单元,按照一定的概率将其暂时从网络中丢弃。注意是暂时,对于随机梯度下降来说,由于是随机丢弃,故而每一个mini-batch都在训练不同的网络。

算法概述

我们知道如果要训练一个大型的网络,而训练数据很少的话,那么很容易引起过拟合,一般情况我们会想到用正则化、或者减小网络规模。

然而Hinton在2012年文献:《Improving neural networks by preventing co-adaptation of feature detectors》提出了,在每次训练的时候,随机让一半的特征检测器停过工作,这样可以提高网络的泛化能力,Hinton又把它称之为dropout。

关于dropout算法和计算机视觉——典型的目标检测算法(OverFeat算法)(二)的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

dropout算法(计算机视觉——典型的目标检测算法(OverFeat算法)(二))

本文编辑:admin

更多文章:


strncmp()(strncmp用法问题)

strncmp()(strncmp用法问题)

本篇文章给大家谈谈strncmp(),以及strncmp用法问题对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年9月22日 23:00

java语言基础实验报告(求JAVA的实验报告)

java语言基础实验报告(求JAVA的实验报告)

各位老铁们好,相信很多人对java语言基础实验报告都不是特别的了解,因此呢,今天就来为大家分享下关于java语言基础实验报告以及求JAVA的实验报告的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年9月22日 22:50

通配符怎么打出来excel(excel里,完成高级筛选条件的时候,通配符前面要加等号,可以等号前面的单引号是怎么打出来的)

通配符怎么打出来excel(excel里,完成高级筛选条件的时候,通配符前面要加等号,可以等号前面的单引号是怎么打出来的)

这篇文章给大家聊聊关于通配符怎么打出来excel,以及excel里,完成高级筛选条件的时候,通配符前面要加等号,可以等号前面的单引号是怎么打出来的对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

2026年9月22日 21:20

不四舍五入取整函数(excel取整不四舍五入)

不四舍五入取整函数(excel取整不四舍五入)

“不四舍五入取整函数”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看不四舍五入取整函数(excel取整不四舍五入)!

2026年9月22日 21:00

进制转换器c++(用C++输入一个十进制数,将其转换为二进制数输出)

进制转换器c++(用C++输入一个十进制数,将其转换为二进制数输出)

今天给各位分享用C++输入一个十进制数,将其转换为二进制数输出的知识,其中也会对用C++输入一个十进制数,将其转换为二进制数输出进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年9月22日 20:30

docker cp拷贝文件(怎么把docker镜像文件 复制到主机)

docker cp拷贝文件(怎么把docker镜像文件 复制到主机)

本篇文章给大家谈谈docker cp拷贝文件,以及怎么把docker镜像文件 复制到主机对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年9月22日 20:00

undermine反义词(颠覆的反义词)

undermine反义词(颠覆的反义词)

其实undermine反义词的问题并不复杂,但是又很多的朋友都不太了解颠覆的反义词,因此呢,今天小编就来为大家分享undermine反义词的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年9月22日 18:30

restful请求方式(下面哪几种属于ElasticSearch的RESTful请求方式())

restful请求方式(下面哪几种属于ElasticSearch的RESTful请求方式())

本篇文章给大家谈谈restful请求方式,以及下面哪几种属于ElasticSearch的RESTful请求方式()对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘

2026年9月22日 17:30

怎么在centos官网下载linux(请问centos在官网怎么下载,有好多个iso镜像,这些都要下载吗)

怎么在centos官网下载linux(请问centos在官网怎么下载,有好多个iso镜像,这些都要下载吗)

“怎么在centos官网下载linux”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看怎么在centos官网下载linux(请问centos在官网怎么下载,有好多个iso镜像,这些都要下载吗)!

2026年9月22日 15:40

ssl协议未开启修复(笔记本电脑开机后用360杀毒检查正常,用一段时间再查会有ssl协议未开启,处理后再查就没有了这个)

ssl协议未开启修复(笔记本电脑开机后用360杀毒检查正常,用一段时间再查会有ssl协议未开启,处理后再查就没有了这个)

大家好,关于ssl协议未开启修复很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于笔记本电脑开机后用360杀毒检查正常,用一段时间再查会有ssl协议未开启,处理后再查就没有了这个的知识点,相信应该可以解决大家的一些困惑和问题,

2026年9月22日 15:20

最近更新

strncmp()(strncmp用法问题)
2026-09-22 23:00:07 浏览:0
热门文章

yoga pro 14s carbon(yoga14s接口类型)
2026-07-03 17:50:01 浏览:5
标签列表