技术标签: 计算机视觉 人工智能 目标检测(YOLO) 神经网络
本文来自公众号“AI大道理”。
这里既有AI,又有生活大道理,无数渺小的思考填满了一生。
SPP
对于一个CNN模型,可以将其分为两个部分:
前面包含卷积层、激活函数层、池化层的特征提取网络,下称CNN_Pre,
后面的全连接网络,下称CNN_Post。
许多CNN模型都对输入的图片大小有要求,实际上CNN_Pre对输入的图片没有要求,可以简单认为其将图片缩小了固定的倍数,而CNN_Post对输入的维度有要求。
SPP:空间金字塔池化,无论CNN_Pre输出的feature maps尺寸是怎样,都能输出固定的维度传给CNN_Post。
SPP的本质就是多层maxpool,只不过为了对于不同尺寸大小 a*a 的featur map 生成固定大小 n*n 的的输出。
那么 pool 的滑窗win大小,以及步长str都要作自适应的调整:
win=ceil(a/n)
str=floor(a/n)
ceil、floor分别表示上取整、下取整。
然后多个不同固定输出尺寸的 pool组合在一起就构成了SPP Layer。
通俗的讲,SPP就相当于标准通道层,不管任何大小的图像,都用一套标准的pool对图像进行池化,最后组合成一列相同大小的特征,作为全连接层的输入,这一组相同大小的特征是固定的,可以提前进行计算。
SPP优点:
(1)对于不同尺寸的CNN_Pre输出能够输出固定大小的向量。
(2)可以提取不同尺寸的空间特征信息,可以提升模型对于空间布局和物体变性的鲁棒性。
(3)可以避免将图片resize、crop成固定大小输入模型的弊端。
Yolo v3中的SPP
spp模块在yolov3的作用是多重感受野融合。
yolo v3基础网络:
yolov3-SPP网络:
借鉴了SPP-Net中的SPP模块,实现了不同尺度的特征融合。
和YOLOV3结构相比,在第一个预测特征层之前拆开了Convlutioanal Set,添加了SPP模块。
通过DarkNet输出的特征图大小是16*16*1024, 由于三个卷积层的步距为1,特征图的高宽不发生变化,通过三个卷积层以后,特征图的大小变为16*16*512,
通过SPP有四个分支,将其拼接维度扩大四倍->16*16*2048。
相对于普通版本的YOLOv3,SPP版在本在第五、六层卷积之间增加了一个SPP模块,这个模块主要是由不同的池化操作组成。
检测头前面的第5和第6卷积层之间集成SPP模块来获得YOLOv3-SPP,在Feature Map经过SPP module池化后的特征图重新cat起来传到下一层侦测网络中。
所以说,YOLOv3-SPP版本实际上只是增加了SPP 模块,该模块借鉴了空间金字塔的思想,通过SPP模块实现了局部特征和全局特征融合,丰富了特征图的表达能力,有利于待检测图像中目标大小差异较大的情况,所以对检测的精度上有了很大的提升。
Yolo v4中的SPP
SPP结构参杂在对CSPdarknet53的最后一个特征层的卷积里,在对CSPdarknet53的最后一个特征层进行三次DarknetConv2D_BN_Leaky卷积后,分别利用四个不同尺度的最大池化进行处理,最大池化的池化核大小分别为13x13、9x9、5x5、1x1(1x1即无处理)。
SPP能够极大地增加感受野,分离出最显著的上下文特征。
总结
SPP可以对于不同尺寸的图片输出固定大小的向量。
SPP可以提取不同尺寸的空间特征信息,可以提升模型对于空间布局和物体变性的鲁棒性。
——————
浅谈则止,细致入微AI大道理
扫描下方“AI大道理”,选择“关注”公众号
—————————————————————
—————————————————————
文章浏览阅读342次,点赞6次,收藏8次。党员之家服务系统小程序的功能已基本实现,主要包括首页、个人中心、学生管理、教师管理、任务信息管理、报名信息管理、任务排名管理、学习资料管理、每日打卡管理、交流信息管理、回复信息管理、积极分子管理、党员信息管理、交流论坛、系统管理等。论文主要从系统的分析与设计 、数据库设计和系统的详细设计等几个方面来进行论述,系统分析与设计部分主要论述了系统的功能分析、系统的设计思路,数据库设计主要论述了数据库的设计,系统的详细设计部分主要论述了几个主要模块的详细设计过程。
文章浏览阅读8.3k次,点赞5次,收藏12次。作为 admin 用户,请求认证令牌,输入如下命令openstack --os-auth-url http://controller:35357/v3 --os-project-domain-name default --os-user-domain-name default --os-project-name admin --os-username admin token issue报错Failed to discover available identity versions whe._caused by newconnectionerror('
文章浏览阅读4.5k次。可以在桌面安装云顷还原系统软件,利用软件中的网络对拷功能部署批量对拷环境,进行电脑教室软件的批量对拷安装与增量对拷安装。_教室电脑 一起装软件
文章浏览阅读3.1k次,点赞5次,收藏7次。原文链接:https://www.ikaze.cn/article/43写这篇博文的起因是,我在论坛宣传我开源的新项目YTask(go语言异步任务队列)时,有小伙伴在下面回了一句“为什么不用nsq?”。这使我想起,我在和同事介绍celery时同事说了一句“这不就是kafka吗?”。那么YTask和nsq,celery和kafka?他们之间到底有什么不同呢?下面我结合自己的理解。简单的分析一..._任务队列和消息队列
文章浏览阅读1.5k次。1,MyUtuils.kt将被调用的文件class MyUtils { fun show(info:String){ println(info) }}fun show(info:String){ println(info)}2,Java文件调用该类,ClientJava.javapublic class ClientJava { public static void main(String[] args) { /** _java 调用kt 对象
文章浏览阅读6.6k次,点赞4次,收藏4次。在进行UDP编程的时候,我们最容易想到的问题就是,一次发送多少bytes好? 当然,这个没有唯一答案,相对于不同的系统,不同的要求,其得到的答案是不一样的,我这里仅对 像ICQ一类的发送聊天消息的情况作分析,对于其他情况,你或许也能得到一点帮助: 首先,我们知道,TCP/IP通常被认为是一个四层协议系统,包括链路层,网络层,运输层,应用层. UDP属于运输层_最大请求报文大小
文章浏览阅读8.5k次,点赞2次,收藏11次。使用uni-ui UI框架实现表格加分页功能,uni-table 和uni-pagination 组件的使用示例加完整代码。_uniapp table
【代码】HTML5本地存储账号密码。
文章浏览阅读1.6k次。本小结通过transition的钩子函数实现小球半场动画头条-静敏的编程秘诀-vue教程合集知识点1:入场、出厂方法beforeEnter表示动画入场之前,此时,动画尚未开始,可以在beforeEnter中设置元素开始动画之前的起始样式enter表示动画开始之后的样式,这里可是设置小球完成动画之后的,结束状态enter(el,done)el:动画钩子函数的第一个参数:el,..._transition 钩子
主要梳理mybatis多表及动态使用
文章浏览阅读2.9w次,点赞98次,收藏777次。文章目录Qt 多线程操作2.线程类QThread3.多线程使用:方式一4.多线程使用:方式二5.Qt 线程池的使用Qt 多线程操作应用程序在某些情况下需要处理比较复杂的逻辑, 如果只有一个线程去处理,就会导致窗口卡顿,无法处理用户的相关操作。这种情况下就需要使用多线程,其中一个线程处理窗口事件,其他线程进行逻辑运算,多个线程各司其职,不仅可以提高用户体验还可以提升程序的执行效率。Qt中使用多线程需要注意:Qt的默认线程为窗口线程(主线程):负责窗口事件处理或窗口控件数据的更新;子线程负责后台的业_qt 多线程
【代码】GQA分组注意力机制。