目标检测算法图解:一文看懂RCNN系列算法

在生活中,经常会遇到这样的一种情况,上班要出门的时候,突然找不到一件东西了,比如钥匙、手机或者手表等。这个时候一般在房间翻一遍各个角落来寻找不见的物品,最后突然一拍大脑,想到在某一个地方,在整个过程中有时候是很着急的,并且越着急越找不到,真是令人沮丧。但是,如果一个简单的计算机算法可以在几毫秒内就找到你要找的物品,你的感受如何?是不是很惊奇!这就是对象检测算法(object detection)的力量。虽然上述举的生活例子只是一个很简单的例子,但对象检测的应用范围很广,跨越多个不同的行业,从全天候监控到智能城市的实时车辆检测等。简而言之,物体检测是强大的深度学习算法中的一个分支。

在本文中,我们将深入探讨可以用于对象检测的各种算法。首先从属于RCNN系列算法开始,即RCNN、 Fast RCNN和 Faster RCNN。在之后的文章中,将介绍更多高级算法,如YOLO、SSD等。

1.解决对象检测任务的简单方法(使用深度学习)

下图说明了对象检测算法是如何工作。图像中的每个对象,从人到风筝都以一定的精度进行了定位和识别。


下面从最简单的深度学习方法开始,一种广泛用于检测图像中的方法——卷积神经网络(CNN)。如果读者对CNN算法有点生疏,建议阅读此文。

这里仅简要总结一下CNN的内部运作方式:

首先将图像作为输入传递到网络,然后通过各种卷积和池化层处理,最后以对象类别的形式获得输出。

对于每个输入图像,会得到一个相应的类别作为输出。因此可以使用这种技术来检测图像中的各种对象。

  • 1.首先,将图像作为输入;

  • 2.然后,将图像分成不同的区域;

  • 3.然后,将每个区域视为单独的图像;
  • 4.将所有这些区域传递给CNN并将它们分类为各种类别;
  • 5.一旦将每个区域划分为相应的类后,就可以组合所有这些区域来获取具有检测到的对象的原始图像:

使用这种方法会面临的问题在于,图像中的对象可以具有不同的宽高比和空间位置。例如,在某些情况下,对象可能覆盖了大部分图像,而在其他情况下,对象可能只覆盖图像的一小部分,并且对象的形状也可能不同。

基于此,需要划分大量的区域,这会花费大量的计算时间。因此,为了解决这个问题并减少区域数量,可以使用基于区域的CNN,它使用提议方法选择区域。

2.基于区域的卷积神经网络

2.1 RCNN的思想

RCNN算法不是在大量区域上工作,而是在图像中提出了一堆方框,并检查这些方框中是否包含任何对象。RCNN 使用选择性搜索从图像中提取这些框。

下面介绍选择性搜索以及它如何识别不同的区域。基本上四个区域形成一个对象:不同的比例、颜色、纹理和形状。选择性搜索在图像中识别这些模式,并基于此提出各种区域。以下是选择性搜索如何工作的简要概述:

  • 首先, 将图像作为输入:

  • 然后,它生成初始子分段,以便获得多个区域:

  • 之后,该技术组合相似区域以形成更大的区域(基于颜色相似性、纹理相似性、尺寸相似性和形状兼容性):

  • 最后,这些区域产生最终的对象位置(感兴趣的区域);

下面是RCNN检测对象所遵循的步骤的简要总结:

  • 1.首先采用预先训练的卷积神经网络;
  • 2.重新训练该模型模型——根据需要检测的类别数量来训练网络的最后一层(迁移学习);
  • 3.第三步是获取每个图像的感兴趣区域。然后,对这些区域调整尺寸,以便其可以匹配CNN输入大小;
  • 4.获取区域后,使用SVM算法对对象和背景进行分类。对于每个类,都训练一个二分类SVM;

最后,训练线性回归模型,为图像中每个识别出的对象生成更严格的边界框;

[对上述步骤进行图解分析](http://www.robots.ox.ac.uk/~tvg/publications/talks/Fast-rcnn-slides.pdf):

  • 首先,将图像作为输入:

  • 然后,使用一些提议方法获得感兴趣区域(ROI)(例如,选择性搜索):

  • 之后,对所有这些区域调整尺寸,并将每个区域传递给卷积神经网络:

  • 然后,CNN为每个区域提取特征,SVM用于将这些区域划分为不同的类别:

  • 最后,边界框回归(Bbox reg)用于预测每个已识别区域的边界框:

以上就是RCNN检测物体的全部流程。

2.2 RCNN的问题

从上节内容可以了解到RCNN是如何进行对象检测的,但这种技术有其自身的局限性。以下原因使得训练RCNN模型既昂贵又缓慢:

  • 基于选择性搜索算法为每个图像提取2,000个候选区域;
  • 使用CNN为每个图像区域提取特征;
  • RCNN整个物体检测过程用到三种模型:

    • CNN模型用于特征提取;
    • 线性svm分类器用于识别对象的的类别;
    • 回归模型用于收紧边界框;

这些过程相结合使得RCNN非常慢,对每个新图像进行预测需要大约40-50秒,这实际上使得模型在面对巨大的数据集时变得复杂且几乎不可能应用。

好消息是存在另一种物体检测技术,它解决了RCNN中大部分问题。

3.了解Fast RCNN

3.1Fast RCNN的思想

RCNN的提出者Ross Girshick提出了这样的想法,即每个图像只运行一次CNN,然后找到一种在2,000个区域内共享该计算的方法。在Fast RCNN中,将输入图像馈送到CNN,CNN生成卷积特征映射。使用这些特征图提取候选区域。然后,使用RoI池化层将所有建议的区域重新整形为固定大小,以便将其馈送到全连接网络中。

下面将其分解为简化概念的步骤:

  • 1.首先将图像作为输入;
  • 2.将图像传递给卷积神经网络,生成感兴趣的区域;
  • 3.在所有的感兴趣的区域上应用RoI池化层,并调整区域的尺寸。然后,每个区域被传递到全连接层的网络中;
  • 4.softmax层用于全连接网以输出类别。与softmax层一起,也并行使用线性回归层,以输出预测类的边界框坐标。

因此,Fast RCNN算法中没有使用三个不同的模型,而使用单个模型从区域中提取特征,将它们分成不同的类,并同时返回所标识类的边界框。

对上述过程进行可视化讲解:

  • 将图像作为输入:

  • 将图像传递给卷积神经网络t,后者相应地返回感兴趣的区域:

  • 然后,在提取的感兴趣区域上应用RoI池层,以确保所有区域具有相同的大小:

  • 最后,这些区域被传递到一个全连接网络,对其进行分类,并同时使用softmax和线性回归层返回边界框:

上述过程说明了Fast RCNN是如何解决RCNN的两个主要问题,即将每个图像中的1个而不是2,000个区域传递给卷积神经网络,并使用一个模型来实现提取特征、分类和生成边界框。

3.2Fast RCNN的问题

Fast RCNN也存在一定的问题,它仍然使用选择性搜索作为查找感兴趣区域的提议方法,这是一个缓慢且耗时的过程,每个图像检测对象大约需要2秒钟。

因此,又开发了另一种物体检测算法——Faster RCNN。

4.了解Faster RCNN

4.1. Faster RCNN的思想

Faster RCNN是Fast RCNN的修改版本,二者之间的主要区别在于,Fast RCNN使用选择性搜索来生成感兴趣区域,而Faster RCNN使用“区域提议网络”,即RPN。RPN将图像特征映射作为输入,并生成一组提议对象,每个对象提议都以对象分数作为输出。

以下步骤通常采用Faster RCNN方法:

1.将图像作为输入并将其传递给卷积神经网络,后者返回该图像的特征图;

2.在这些特征图上应用RPN,返回提议对象及其分数;

3.在这些提议对象上应用RoI池层,以将所有提案降低到相同的大小;

4.最后,将提议传递到全连接层,该层在其顶部具有softmax层和线性回归层,以对对象的边界框进行分类和输出;

这里简要解释一下RPN是如何运作的:

首先,Faster RCNN从CNN获取特征图并将它们传递到区域提议网络。RPN在这些特征图上使用滑动窗口,每个窗口生成不同形状和大小的k个方框( Anchor boxe):

方框是固定尺寸的边界箱,具有不同的形状和尺寸。对于每个方框,RPN预测两件事:

  • 预测锚是对象的概率;
  • 用于边界框回归器调整锚点以更好地适合物体的形状;

在有了不同形状和大小的边界框后,将其传递到RoI池层。对每个提案并对其进行裁剪,以便每个提案都包含一个对象。这就是RoI池层所做的事情,它为每个方框提取固定大小的特征图:

然后将这些特征图传递到全连接层,该层具有softmax和线性回归层,最终对对象进行分类并预测已识别对象的边界框。

4.2Faster RCNN的问题

上述讨论过的所有对象检测算法都使用区域来识别对象,且网络不会一次查看完整图像,而是按顺序关注图像的某些部分,这样会带来两个复杂性的问题:

  • 该算法需要多次通过单个图像来提取到所有对象;
  • 由于不是端到端的算法,不同的系统一个接一个地工作,整体系统的性能进一步取决于先前系统的表现效果。

5.总结

下表是总结了本文中介绍的所有算法

算法特征预测时间限制
CNN将图像分成多个区域,将每个区域分类为不同的类别-需要很多区域来准确预测,因此计算时间长
RCNN使用选择性搜索生成区域,从每个图像中提取大约2000个区域40-50秒每个区域分别传递给CNN的计算时间也很长,且使用三种不同的模型进行预测
Fast RCNN每个图像只传递一次到CNN,并提取特征图。在这些地图上使用选择性搜索来生成预测。将RCNN中使用的所有三种模型组合在一起2秒选择性搜索很慢,因此计算时间仍然很长
Faster RCNN用区域提议网络替换选择性搜索方法,使算法更快0.2秒对象提议需要时间,并且由于不同的系统一个接一个地工作,系统的性能取决于先前系统的表现效果


原文链接
本文为云栖社区原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/520267.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

不懂数据库的码农不是好程序员!

毋庸置疑,现在是“一切皆数”的时代,放眼目前炙手可热的大数据、人工智能等创新技术,如果没有数据加以支撑,一切的一切将毫无用武之地,更不必谈信息化、智能化and so on,而数据库作为存储和承载数据的重要场…

基于深度学习模型WideDeep的推荐

本实验选用数据为UCI开源数据集,仅用于学习,请勿商用) Wide&Deep推荐算法出自一篇论文《Wide&Deep Learning for RecommenderSystems》,Wide&Deep由两部分组成,分别是Wide和Deep。先来说wide,…

RabbitMQ非root用户安装(Linux环境)

文章目录一、用户操作1. 创建fismq用户并设置密码2. 给fismq用户设置目录权限二、Erlang 操作2.1. Erlang下载2.2. Erlang 上传并解压2.3. 验证rabbitmq依赖是否安装2.4. 安装rabbitmq依赖2.5. Erlang 编译、安装2.6. Erlang 配置环境变量2.7. Erlang 验证三、RabbitMQ3.1. Rab…

深度学习目标检测系列:faster RCNN实现|附python源码

目标检测一直是计算机视觉中比较热门的研究领域,有一些常用且成熟的算法得到业内公认水平,比如RCNN系列算法、SSD以及YOLO等。如果你是从事这一行业的话,你会使用哪种算法进行目标检测任务呢?在我寻求在最短的时间内构建最精确的模…

mysql冷热数据LRU_浅析MySQL的lru链表

一、简述传统的lru链表lru:least recently used相信大家对lru链表是不陌生的,它算是一种基础的数据结构吧,而且想必面试时也被问到过什么是lru链表,甚至是让你手写一个lru链表。想必你已经知道了mysql的buffer pool机制以及mysql组…

报应!GitHub上线围剿Python计划,已有4万人跟进,你呢?

人红是非多,最近Python就遇到了这样的问题。与国际技术社区上一片「形势大好」对比鲜明的是,国内技术圈却一直存在对Python,「力挺」和「吃瓜」两派阵营,针锋相对,最近就悄然上线一个争议性疑问:围剿Python…

生物智能与AI——关乎创造、关乎理解(上)

几百万年前,第一次人类智能的星火出现在非洲大陆,并且持续发展,最终在大约10万年前在智人的大脑中达到顶峰。作为现代人类,我们只能想象我们的古代祖先在窥视夜空时所经历的事情,以思考物理现实的本质,以及…

Spring Cloud Config 规范

Spring Cloud Config 规范 首先Spring Cloud 是基于 Spring 来扩展的,Spring 本身就提供当创建一个Bean时可从Environment 中将一些属性值通过Value的形式注入到业务代码中的能力。那Spring Cloud Config 要解决的问题就是: 如何将配置加载到 Environm…

RabbitMQ开机启动 Centos7环境

文章目录8.1. 创建启动脚本8.2. 赋予启动脚本可执行权限8.3. 加入开机启动并指定用户8.4. 赋予可执行权限8.5. 重启MQ服务器测试8.6. 查看MQ服务运行状态8.7. 浏览器验证MQ管控台8.1. 创建启动脚本 操作说明:使用fismq用户操作,使用root用户权限的地方我…

微信几亿人在线的点赞、取消点赞系统,用Redis如何实现?

戳蓝字“CSDN云计算”关注我们哦!作者 | solocoder责编 | 阿秃点赞功能大家都不会陌生,像微信这样的社交产品中都有,但别看功能小,想要做好需要考虑的东西还挺多的,如海量数据的分布式存储、分布式缓存、多IDC的数据一…

年度大盘点:机器学习开源项目及框架

我们先来看看Mybridge AI 中排名靠前的顶级开源项目,再聊聊机器学习今年都有哪些发展,最后探寻下新的一年中会有哪些有值得我们期待的事情。 顶级的开源项目 BERT BERT,全称为Bidirectional Encoder Representations from Transformers&am…

centos7以普通用户开机启动某个服务或者指定脚本

文章目录1. 执行命令格式规范2. 添加到/etc/rc.d/rc.local3. 赋予可执行权限扩展知识:开头添加这句 source /etc/profile 原因为 下面几点1. 执行命令格式规范 #开机切换到fismq用户执行/app/start.sh su fismq -c "/app/rabbitmq_server-3.8.3/sbin/start_ra…

Andrew Ng教你如何引领公司进入AI时代

AI(人工智能)技术就像100年前的电力一样,正准备改变每个行业。从现在到2030年,它将创造约13万亿美元的GDP增长。虽然它已经在谷歌,阿里巴巴,微软等领先的科技公司中创造了巨大的价值,但其他许多…

IBM Cloud Paks:云端追光者也!

作者:阿秃 现如今,“企业上云”已毫无争议。 据知名云管理服务商RightScale 发布的2019年全球云计算市场调查显示,在众多云平台中混合云的采用率比重最高,达到了惊人的58%。可以想见,市场对混合云的庞大需求正吸引越…

生物智能与AI——关乎创造、关乎理解(下)

无监督学习,迁移学习和工程设计 AI系统与人类学习之间的另一个主要差异在于AI系统所需的大量标记数据才可以达到人类级别的性能。例如,最近的语音识别系统在11940小时的语音训练后才能对齐转录。如果我们每天大声地听到另一个人类阅读文本两个小时&…

如何利用tcpdump抓包?

文章目录一、基本使用1. 安装tcpdump2. 使用方法二、案例实战2.1. 企业案例背景2.2. 抓包实战三、网卡接口获取3.1. centos7.x使用3.2. centos6.x使用一、基本使用 1. 安装tcpdump yum install tcpdump -y2. 使用方法 tcpdump -i 网卡接口 协议 -n 注:协议可以接…

Gartner 发布2019年超融合魔力象限:新增深信服一员!

近日,国际权威研究分析机构Gartner公布了2019全球《超融合基础设施魔力象限》报告。 报告显示国内仅有三家云计算厂商进入2019超融合基础设施魔力象限,分别是深信服、华为、华云数据。其中深信服超融合(sangfor aCloud)凭借技术优…

深度学习目标检测系列:一文弄懂YOLO算法|附Python源码

在之前的文章中,介绍了计算机视觉领域中目标检测的相关方法——RCNN系列算法原理,以及Faster RCNN的实现。这些算法面临的一个问题,不是端到端的模型,几个构件拼凑在一起组成整个检测系统,操作起来比较复杂&#xff0c…

Keepalived时主备负载均衡器都有VIP的问题:VRRP协议问题

文章目录一、企业案例背景二、异常现象三、分析结论解决思路3.1. 分析结论3.2. 解决思路四、SElinux 处理4.1. 查看SElinux的状态:4.2. 关闭SElinux五、Firewalld防火墙配置5.1. 开启vrrp 协议5.2. 重新启动防火墙5.3. 查看启动日志5.4. 虚拟ip验证5.5. 停止master节…

数据不足,如何进行迁移学习?

现在,人工智能的发展处于跳跃式阶段,我们也对AI在大型数据集的应用进展感到吃惊。更重要的是,那些我们没有跟踪的数十亿张照片或餐厅的评论并没有被遗漏掉:迁移学习技术让收集数据变得更加“容易”。另外,得益于PyTorc…