计算机视觉

【CV中的Attention机制】融合Non-Local和SENet的GCNet

烈酒焚心 提交于 2020-05-08 10:21:33
前言: 之前已经介绍过SENet和Non Local Neural Network(NLNet),两者都是有效的注意力模块。作者发现NLNet中attention maps在不同位置的响应几乎一致,并结合SENet后,提出了Global Context block,用于全局上下文建模,在主流的benchmarks中的结果优于SENet和NLNet。 GCNet论文名称为:《 GCNet: Non-local Networks Meet Squeeze-Excitation Networks and Beyond 》,是由清华大学提出的一个注意力模型,与SE block、Non Local block类似,提出了GC block。为了克服NL block计算量过大的缺点,提出了一个Simplified NL block,由于其与SE block结构的相似性,于是在其基础上结合SE改进得到GC block。 SENet中提出的SE block是使用全局上下文对不同通道进行 权值重标定 ,对通道依赖进行调整。但是采用这种方法,并没有充分利用全局上下文信息。 捕获长距离依赖关系 的目标是对视觉场景进行全局理解,对很多计算机视觉任务都有效,比如图片分类、视频分类、目标检测、语义分割等。而NLNet就是通过 自注意力机制 来对长距离依赖关系进行建模。 作者对NLNet进行试验

OpenCV+VS开发环境配置

泪湿孤枕 提交于 2020-05-08 06:28:51
最近跑C程序,头文件中用到了OpenCV中的文件,找了很多篇OpenCV+VS的环境配置,发现如下这篇写的最为详细,特转载来自己的博客中留存,并附上原博客地址如下 OpenCV学习笔记(一)——OpenCV3.1.0+VS2015开发环境配置 摘要: 由于最近AR(增强现实)这个概念非常火爆,各种基于AR的应用及游戏逐渐面向大众,而在AR中最重要的两个技术就是跟踪识别和增强渲染,其中跟踪识别是通过OpenCV这个开源的计算机视觉库来实现的,所以我就想着研究一下这个库,这里是个人的学习笔记,不是什么权威的教程,如果你们有错误也麻烦帮我指出哈。 前言: 什么是OpenCV?可能还有人不清楚吧,简单地说,OpenCV——Open Source Computer Vision Library,即开源计算机视觉库,它是基于C语言和部分C++语言来开发,可用于计算机视觉、图像处理以及模式识别和跟踪。 一、准备工作: 1.下载OpenCV安装包: 到OpenCV的官网( http://opencv.org/ )下载最新版本的OpenCV安装包,由于OpenCV针对不同平台都有安装程序,所以我们只需要根据当前开发环境选择合适的平台版本即可,这里我们是在win7 64bit操作系统下进行开发,所以应该下载OpenCV for Windows: 我们选择了当前的最新版本3.1,下载完毕后

本科、硕士、博士的区别(终极版)

冷暖自知 提交于 2020-05-08 04:42:48
点击 上方“ 3D视觉工坊 ”,选择“星标” 干货第一时间送达 整理:公众号 @湾区Python 作者:湾区Python 本文转载自公众号 学术志 ,作者已授权,未经许可请勿二次转载。 本科生和研究生到底有何区别?硕士和博士又有什么不同?这是很多人都有的困惑,对于这个问题的说法也有很多版本,我们挑选了几个比较经典的版本,以期能和大家一同探讨。 学生版 红烧肉版 本科论文 第一章:红烧肉的定义和类型; 第二章:各种红烧肉区别和特点; 第三章:东坡红烧肉的具体特点; 第四章:烹制东坡红烧肉的主要问题和对策。 结论:东坡红烧肉可以更好吃。 硕士论文 第一章:关于猪肉做法的文献综述; 第二章:红烧肉做法的历史演变过程; 第三章:传统红烧肉制作和研究方式介绍和比较; 第四章:马克思剩余价值理论对红烧肉做法的启示; 第五章:剩余价值红烧肉的具体做法; 第六章:剩余价值红烧肉的创新之处和进一步研究建议。 结论:红烧肉很好吃,但是吃的过程中注意区分,剩余价值理论指导下的红烧肉做得会更符合社会主义实践发展。 博士论文 序言:历史中猪肉食谱的文献综述、理论意义和现实价值、不足和问题; 第一篇(第一章到第三章):猪是怎样养成的; 第二篇(第四章到第五章):猪的各个部分肉质的区分和作用; 第三篇(第六章到第七章):马克思理论不同发展阶段对红烧肉发展的影响和启示; 第四篇(第八章到第十章)

从零开始一起学习SLAM | 用四元数插值来对齐IMU和图像帧

删除回忆录丶 提交于 2020-05-07 21:59:35
视觉 Vs. IMU 小白:师兄,好久没见到你了啊,我最近在看IMU(Inertial Measurement Unit,惯性导航单元)相关的东西,正好有问题求助啊 师兄:又遇到啥问题啦? 小白:是这样的,现在VIO(Visual-Inertial Odometry,视觉惯性里程计)很火,我就想试试把IMU测量的信息和图像进行简单的融合,这样利用IMU测量的先验信息,可以给图像一个比较好的初值。。。 师兄:嗯嗯,这个思路没问题的啊,图像信息和 IMU 确实存在一定互补性,两者各有所长,取长补短。 小白:是滴,我也是这样想的,不过我采集了图像和IMU的数据后,发现IMU输出频率好高啊,远远大于图像帧率! 师兄:没错,IMU本身就是惯性传感器,用来测量角速度和加速度,对短时快速运动很敏感,因此帧率很高才能测量到,所以一般是100Hz以上。而我们图像传感器输出帧率一般比较低,15 - 60Hz 居多~ 小白:那就有问题了啊,我想要把IMU测量的值和图像估计的值进行对齐,这样我就能根据当前IMU输出的旋转量来作为图像预测的初值了,现在帧率差这么多,这个怎么对齐呢? 师兄:你是用什么来表达的旋转? 小白:四元数,我看网上都说用四元数好,不过不知道为啥(/尴尬) 四元数的优势 师兄:四元数确实在对姿态的描述具有独特的优势,非常适合用来表示空间中的旋转。这主要是因为几个原因: 1

从零开始一起学习SLAM | 掌握g2o顶点编程套路

妖精的绣舞 提交于 2020-05-07 21:59:13
<p style="text-align:center"> 点“计算机视觉life”关注,置顶更快接收消息! </p> 小白:师兄,上一次将的g2o框架《 从零开始一起学习SLAM | 理解图优化,一步步带你看懂g2o代码 》真的很清晰,我现在再去看g2o的那些优化的部分,基本都能看懂了呢! 师兄:那太好啦,以后多练习练习,加深理解 小白:嗯,我开始编程时,发现g2o的顶点和边的定义也非常复杂,光看十四讲里面,就有好几种不同的定义,完全懵圈状态。。。师兄,能否帮我捋捋思路啊 师兄:嗯,你说的没错,入门的时候确实感觉很乱,我最初也是花了些时间才搞懂的,下面分享一下。 g2o的顶点(Vertex) 从哪里来的? 师兄:在《g2o: A general Framework for (Hyper) Graph Optimization》这篇文档里,我们找到那张经典的类结构图。也就是上次讲框架用到的那张结构图。其中涉及到顶点 (vertex) 的就是下面 加了序号的3个东东了。 小白:记得呢,这个图很关键,帮助我理清了很多思路,原来来自这篇文章啊 师兄:对,下面我们一步步来看吧。先来看看上图中和vertex有关的第①个类: HyperGraph::Vertex,在g2o的GitHub上( https://github.com/RainerKuemmerle/g2o ),它在这个路径 g2o

从零开始一起学习SLAM | 点云到网格的进化

ε祈祈猫儿з 提交于 2020-05-07 21:28:39
点击公众号“计算机视觉life”关注,置顶星标更快接收消息! 本文编程练习框架及数据获取方法见文末获取方式 菜单栏点击“知识星球”查看「从零开始学习SLAM」一起学习交流 小白:师兄,师兄,你在 《从零开始一起学习SLAM | 给点云加个滤网》 、 《从零开始一起学习SLAM | 点云平滑法线估计》 中都提到了点云网格化,这个听起来高大上,不过到底是什么意思呢? 师兄:别急,是这样的:你看我们之前处理的都是一个个点,不管是滤波还是平滑,我们都是对一个个离散的空间点进行的处理,虽然你远看能看出物体的轮廓,但是拉近了看是一个个分散的空间点,是吧? 小白:是啊,这样不算是3D模型吧 师兄:嗯,这样的结果分辨率比较低,也没办法进行三维打印,点云网格化就是用点云生成网格,最后得到的是一个连续(相对于前面的离散点)的表面。如果再加上纹理贴图,就能得到和真实物体一样的三维模型了 什么是网格? 小白:师兄,你说了很多次网格,其实我还不知道网格到底是啥? 师兄:哦,忘记说这个最基本的概念了。网格主要用于计算机图形学中,有三角、四角网格等很多种。下面左图就是四角网格,右图是三角网格 不过,计算机图形学中的网格处理绝大部分都是基于三角网格的,三角网格在图形学和三维建模中使用的非常广泛,用来模拟复杂物体的表面,如建筑、车辆、动物等,你看下图中的兔子、球等模型都是基于三角网格的 小白:仔细看了下还真是

从零开始一起学习SLAM | 理解图优化,一步步带你看懂g2o代码

时间秒杀一切 提交于 2020-05-07 21:14:56
首发于公众号:计算机视觉life 旗下知识星球「从零开始学习SLAM」 这可能是最清晰讲解g2o代码框架的文章 理解图优化,一步步带你看懂g2o框架 小白:师兄师兄,最近我在看SLAM的优化算法,有种方法叫“图优化”,以前学习算法的时候还有一个优化方法叫“凸优化”,这两个不是一个东西吧? 师兄:哈哈,这个问题有意思,虽然它们中文发音一样,但是意思差别大着呢!我们来看看英文表达吧,图优化的英文是 graph optimization 或者 graph-based optimization,你看,它的“图”其实是数据结构中的graph。而凸优化的英文是 convex optimization,这里的“凸”其实是凸函数的意思,所以单从英文就能区分开它们。 小白:原来是这样,我看SLAM中图优化用的很多啊,我看了一下高博的书,还是迷迷糊糊的,求科普啊师兄 师兄:图优化真的蛮重要的,概念其实不负责,主要是编程稍微有点复杂。。 小白:不能同意更多。。,那个代码看的我一脸懵逼 图优化有什么优势? 师兄:按照惯例,我还是先说说图优化的背景吧。SLAM的后端一般分为两种处理方法,一种是以扩展卡尔曼滤波(EKF)为代表的滤波方法,一种是以图优化为代表的非线性优化方法。不过,目前SLAM研究的主流热点几乎都是基于图优化的。 小白:据我所知,滤波方法很早就有了,前人的研究也很深

从零开始一起学习SLAM | 掌握g2o边的代码套路

前提是你 提交于 2020-05-07 20:26:52
点“计算机视觉life”关注,置顶更快接收消息! 小白:师兄,g2o框架《 从零开始一起学习SLAM | 理解图优化,一步步带你看懂g2o代码 》,以及顶点《 从零开始一起学习SLAM | 掌握g2o顶点编程套路 》我都学完啦,今天给我讲讲g2o中的边吧!是不是也有什么套路? 师兄:嗯,g2o的边比顶点稍微复杂一些,不过前面你也了解了许多g2o的东西,有没有发现g2o的编程基本都是固定的格式(套路)呢? 小白:是的,我现在按照师兄说的g2o框架和顶点设计方法,再去看g2o实现不同功能的代码,发现都是一个模子出来的,只不过在某些地方稍微改改就行了啊 师兄:是这样的。我们来看看g2o的边到底是咋回事。 初步认识g2o的边 师兄:在《g2o: A general Framework for (Hyper) Graph Optimization》这篇文档里,我们找到那张经典的类结构图,里面关于边(edge)的部分是这样的,重点是下图中红色框内。 上一次我们讲顶点的时候,还专门去追根溯源查找顶点类之间的继承关系,边其实也是类似的,我们在g2o官方GitHub上这些 g2o/g2o/core/hyper_graph.h g2o/g2o/core/optimizable_graph.h g2o/g2o/core/base_edge.h 头文件下就能看到这些继承关系了

在VS2017(VC15)上配置opencv4.0.1环境

余生长醉 提交于 2020-05-07 16:28:53
在VS2017(VC15)上配置opencv4.0.1环境 转 https://blog.csdn.net/GoldenBullet/article/details/86016921 作为萌新最初听说到opencv,以为是一个集成开发环境IDE。后来因为毕设原因不得不去使用opencv,才了解到OpenCV是一个广受欢迎的开源计算机视觉库 ,它提供了很多函数,实现很多计算机视觉算法,从最基本的滤波到高级物体检测皆有涵盖。换言之,opencv只不过是一个写好的库,方便在编程的时候对视觉数据进行处理。 网上有各式各样的配置方式,但是大部分都没说每一步做法的原因 ,导致opencv版本不大一样的话,很多人就把所有教程都试个遍,结果还不一定配成功。我个人是很反感这种方式的,所以下文会解释做每一步的原因,了解了做每一步的必要性后,配置不同版本的opencv环境就游刃有余了。 一、下载opencv库 百度搜一下就能找到官网 https://opencv.org/ ,在releases选项页找到下载的地方。Documentation是程序相关说明文档,Sources是opencv的源码,Win pack与Sources的区别是,Win pack不仅包含了源码,还包含了利用源码编译后的库。 下载Win pack解压后得到文件目录如下: sources文件夹下的是源码,配置环境的话是用不上的

Object Detection R-CNN

怎甘沉沦 提交于 2020-05-07 13:06:17
3788字13图,预计阅读需要23分钟 红色华诞68周年 National Day of the People's Republic of China 作 者:张 旭 编 辑:李文臣 R-CNN提出于2014年,应当算是卷积神经网络在目标检测任务中的开山之作了,当然同年间还有一个overfeat算法,在这里暂不讨论。 在之后的几年中,目标检测任务的CNN模型也越来越多,实时性与准确率也越来越好,但是最为经典 的模型还是很值得学习的。 那么下面就正式开始吧 对于R-CNN模型,个人是这样理解,它其实是将4个应用于不同任务的已有的算法很好的结合了起来,最终在目标检测任务中取得了不错的效果,这种结合更像是偏向于工程的方法,而不是在算法上的一种突破,当然在后续的Fast-RCNN与Faster-RCNN中模型逐步完善并整合成为一个模型,但是在R-CNN中是没有的。 所以R-CNN由4个部分构成,它们分别是: 1 .区域建议算法(ss) 2 .特征提取算法(AlexNet) 3 .线性分类器(线性SVM) 4 .边界框修正回归模型(Bounding box) 区域建议算法 首先是区域建议(Region Proposal)算法,这个东西在CNN之前就已经有了,而且算法不止一种,ss(selective search)算法是比较著名的一个,此外还有EdgeBox,MSER,MCG等等算法