SPPnet笔记

SPPnet笔记论文:SpatialPyramidPoolinginDeepConvolutionalNetworksforVisualRecognitionMotivationR-CNN等神经网络都要求输入图片是固定尺寸,比如R-CNN要求输入图片是224×224,这样就限制了其他长宽比和其他尺寸的输入图片。不同长宽比和不同尺寸的输入图片是有意义的,首先,图片数据都不是同一尺寸的,他们大小…

大家好,又见面了,我是你们的朋友全栈君。

论文:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

Motivation

R-CNN等神经网络都要求输入图片是固定尺寸,比如R-CNN要求输入图片是224×224,这样就限制了其他长宽比和其他尺寸的输入图片。不同长宽比和不同尺寸的输入图片是有意义的,首先,图片数据都不是同一尺寸的,他们大小不一,长宽比不同。第二,调整图片的长宽比可以有助于识别图中物体,调整图片的尺寸可以帮助学习器学习太大或太小的物体。

在R-CNN中,输入的图片是裁剪的区域,或者把区域缩放成目标大小,如下图所示:
crop and warp
裁剪区域可能只包含物体的部分区域(如左上图),缩放区域导致物体变形(如右上图),这些都可能会影响识别和检测。

Innovation

卷积网络要求固定尺寸输入图片的原因在于全连接层要求固定输入,卷积层和池化层并没有这种要求。作者结合图像处理的图像金字塔算法,提出了空间金字塔池化层,使得神经网络能够接收任何尺寸的输入图片。空间金字塔池化层把任意大小的feature map转换成固定长度的特征向量,从而能够传输给全连接层。

下图是空间金字塔池化网络的结构:
spatial pyramid pooling network structure
上部分是传统网络的结构,下部分是空间金字塔池化网络结构,可以看到空间金字塔池化层可以避免裁剪和缩放输入图片。

Adavantage

  • SPP可以生成一个固定长度的输出,忽视输入大小,而滑动窗体池化层不能。
  • SPP使用多级别空间bins,而滑动窗体池化使用一个窗体大小。多级别池化对物体变形有很好的鲁棒性。
  • 因为输入尺寸的灵活性,SPP可以池化不同尺寸提取的特征。

Spatial Pyramid Pooling Layer

空间金字塔池化层结构:
Spatial Pyramid Pooling Layer structure

空间金字塔池化层位于卷积层与全连接层之间,替代原来最后一个池化层。空间金字塔池化层可以有几个等级,上图有{1, 2, 4}个等级,分别把feature map分成1,4,16个bin,每个bin进行池化,作者使用最大池化。上图的池化操作产生21个bin,把这21个bin输出拼接在一起,然后输出21×256大小的特征(256是feature map的通道数)。

设最后卷积层输出的feature map为 a × a a \times a a×a,一个金字塔等级为n,有 n × n n \times n n×n个bin,那么这等级的池化窗口大小为 ⌈ a / n ⌉ \lceil a/n \rceil a/n,步长为 ⌊ a / n ⌋ \lfloor a/n \rfloor a/n

下图一个具体的池化例子:
an example 3-level pyramid pooling
上部分表示不同级别金字塔的池化操作,下部分表示之后全连接层。

Multi-size training

作者使用caffe训练SPPnet网络,但是caffe不支持多尺寸图片输入,为了实现多尺寸训练,作者实现两个网络,一个网络输入224×224大小的图片,另一个网络输入180*180大小的图片。这两个网络共享参数。训练时,在一个网络中训练一个epoch,然后切换到另外一个网络训练一个epoch。

Object Detection

把空间金字塔池化层加入到R-CNN中,使得R-CNN能够接收任意输入图片。为了加快R-CNN的运行,输入网络的是整张图片,计算出最后的feature map。然后从feature map中提取候选区域的特征向量进行分类和定位,如下图所示。
Pooling features from arbitrary windows on feature maps

这里有一个问题,就是如何确定原图的候选区域位置映射到卷积后feature map的位置。假设卷积和池化操作padding的大小为 ⌊ p / 2 ⌋ \lfloor p/2 \rfloor p/2,其中p为过滤器的大小。原图中点 ( x , y ) (x, y) (x,y)经过映射后在feature map的位置为 ( x ′ , y ′ ) (x', y') (x,y),映射关系为 ( x , y ) = ( S x ′ , S y ′ ) (x, y) = (Sx', Sy') (x,y)=(Sx,Sy)。这里S是所有步长的乘积(所有卷积和池化的步长)。假设某个候选区域在原图的左上角坐标为 ( x , y ) (x, y) (x,y),在feature map中的坐标为 ( ⌊ x / S ⌋ + 1 , ⌊ y / S ⌋ + 1 ) (\lfloor x/S \rfloor + 1, \lfloor y/S \rfloor + 1) (x/S+1,y/S+1)。假设某个候选区域在原图的右下角坐标为 ( x , y ) (x, y) (x,y),在feature map中的坐标为 ( ⌈ x / S ⌉ − 1 , ⌈ y / S ⌉ − 1 ) (\lceil x/S \rceil – 1, \lceil y/S \rceil – 1) (x/S1,y/S1)。如果padding大小不是 ⌊ p / 2 ⌋ \lfloor p/2 \rfloor p/2,还需要计算偏移量。

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/131382.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月12日 下午1:46
下一篇 2022年6月12日 下午1:46


相关推荐

  • charles乱码怎么解决_微信抓包乱码

    charles乱码怎么解决_微信抓包乱码前言当使用Charles抓包时,发现数据都是乱码,这时需要安装证书解决办法1.点击charles窗口,点击左上角Help->SSLProxying→InstallCharles

    2022年8月6日
    6
  • 教你在PyCharm编辑器中添加库

    教你在PyCharm编辑器中添加库文章目录前面的话关于此文的起因原来是这样 正文 第 1 步点击 File 第 2 步点击 Settings 第 3 步选择 ProjectInter 看到右边的列表了吗 这里显示你已安装的库第 4 步点击最右面的加号第 5 步找到上面的输入框第 6 步输入你要安装的库 比如我的 requests 库 第 7 步如果你输的库名正确 且在 Python 库存中有这个需要安装的库 那么右面会直接弹出相关信息 这时点

    2026年3月27日
    2
  • Java 中哈希码的说明「建议收藏」

    Java 中哈希码的说明「建议收藏」在Java中,哈希码代表对象的特征。例如下面代码对象根据HashCode由此可得出str1!=str2,str1==str3哈希码产生的依据:哈希码并不是完全唯一的,它是一种算法,让同一个类的对象按照自己不同的特征尽量的有不同的哈希码,但不表示不同的对象哈希码完全不同。也有相同的情况,看程序员如何写哈希码的算法。1:Object类的hashCode.返回对象的内存地址经过处理后的结构,由于每个对象的内存地址都不一样,所以哈希码也不一样。2:String类的hashCode.根据String类包含的字符串的

    2025年7月23日
    4
  • 【愚公系列】2022年5月 ASP.NET Core下Worker Service构建系统服务实现任务调度

    【愚公系列】2022年5月 ASP.NET Core下Worker Service构建系统服务实现任务调度使用vs2019创建WorkerService程序首先nuget安装Microsoft.Extensions.Hosting.Windows在Program中添加UseWindowsService()publicclassProgram{publicstaticvoidMain(string[]args){CreateHostBuilder(args).Build().Run();}

    2022年7月11日
    22
  • 自动伽马校正_python 拟合

    自动伽马校正_python 拟合对lena.jpg进行伽马校正(c=1c=1c=1,g=2.2g=2.2g=2.2)!伽马校正用来对照相机等电子设备传感器的非线性光电转换特性进行校正。如果图像原样显示在显示器等上,画面就会显得很暗。伽马校正通过预先增大RGB的值来排除显示器的影响,达到对图像修正的目的。由于下式引起非线性变换,在该式中,xxx被归一化,限定在[0,1][0,1][0,1]范围内。ccc是常数,ggg为伽马变量(通常取2.22.22.2):x′=c Iingx’=c\{I_{in}}^gx′

    2026年3月5日
    9
  • 什么是数据安全,为什么需要数据安全,怎么才能实现数据安全?

    什么是数据安全,为什么需要数据安全,怎么才能实现数据安全?WHAT何为数据安全?数据安全指的是用技术手段识别网络上的文件、数据库、帐户信息等各类数据集的相对重要性、敏感性、合规性等,并采取适当的安全控制措施对其实施保护等过程。与边界安全、文件安全、用户行为安全等其他安全问题相同,数据安全并非是唯一一种能提升信息系统安全性的技术手段,也不是一种能全面保障信息系统安全的技术手段。它就是一种能够合理评估及减少由数据存储所带来的安全风险的技术方式。数据安全…

    2022年5月22日
    34

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号