解决⾃动驾驶中计算机视觉的⽬标检测问题

news2025/1/15 23:31:14

来源:投稿 作者:cairuyi01
编辑:学姐 

最近读了《Object detection with location-aware deformable convolution and backward attention filtering》,这是⼀篇2019年刊登在CVPR上的CV论⽂。与解决普适性的CV任务不同,作者CHEN ZHANG和JOOHEE KIM希望解决的是⾃动驾驶中计算机视觉的⽬标检测问题,如何检测距离摄像头较远的交通参与者,以及如何检测到互动的交通参与者。

这篇论⽂究竟想解决什么样的问题

⾸先,我们来看⼀个典型的交通场景,如上图,有⼀个架设在⾃动驾驶⻋辆上的摄像头,从摄像头的⻆度来看,会看到路⾯上的各种道路使⽤者和交通参与者,典型的类别包括了:⾏⼈,⾃⾏⻋,汽⻋。对于(a)和(b),我们发现本篇论⽂建议的模型,它能⽐Faster R-CNN多检测出了⾏⼈背后的⾃⾏⻋,以及两辆距离较远的汽⻋。对!参考图即便⽤⼈眼也较难发现的⽬标,论⽂建议的模型也检测出来了,这有什么意义?

  • 汽⻋在⾼速⾏驶,这⼀秒距离还⽐较远的交通参与者,在下⼀秒可能就在⾯前了

汽⻋在⾼速地⾏驶,在城市道路上⾮拥堵时,会以时速约40-60KM前进,这意味着,这⼀秒距离还⽐较远的交通者,在下⼀秒就会来到⾯前了。要避免交通事故的发现,我们必须提前检测到他的存在。⽽当交通参与者距离摄像头较远时,往往他的外观都会⽐较⼩。

  • 交通参与者之间存在互动,被遮挡的交通参与者容易造成漏检的情况

交通参与者在道路上总是运动着的,他们的⼀些交互和互动往往会导致交通状况的不确定性。试想⼀下,前⽅距离很近的两辆⻋正在⾏驶,此时因为他们局部重叠⽽造成漏检。在下⼀个时刻,被漏检的⻋辆忽然打灯切线更换⻋道,这就很容易造成事故,因为你⼀直追踪的⽬标并未与你发⽣相对位置的变动,⽽现在忽然多出来⼀个⽬标,并且⽴⻢出现在了⾯前。

⽽这辆漏检的汽⻋,被前⻋遮挡后只有局部的外观能被看到。再如,斑⻢线上的⾏⼈指示灯正在由⻩转红,道路指示灯正在由红转绿,计算机视觉检测到三五个⾏⼈的⼈群已经基本静⽌,于是准备发动⻋辆。此时,被⼈群遮挡的⾃⾏⻋忽然驶出,冲到了道路上。悲剧的是,由于⼀直没有感知到⾃⾏⻋的存在,突如其来的交通情况极其容易造成事故。⽽这辆被⼈群遮挡的⾃⾏⻋,往往是在那三五⼈群间隙中只露出了局部外观。

  • 检测需求和⾯临的问题

上⽂谈及的两个检测需求,⽬标都⽐较⼩,他们要么远离摄像头,要么被其他交通参与者遮挡了只露出了局部的外观。要检测到他们,就需要在较⾼分辨率的特征图中进⾏,这样才能保证有⾜够的空间信息。

但,这是⼀个两难的问题:

1)在深度神经⽹络中,较⾼层级的特征图具备更丰富的语义,更容易归纳⽬标的特征,易于分类,但是,它过低的分辨率⼜会导致⼩⽬标在特征图上消失,难以作出有效定位。这样⼀来,简单地使⽤⾼层级的特征图并不能满⾜检测需求。

2)如果我们使⽤浅层的特征图,那么空间信息是⾜够了,对定位带来了帮助,但是粗糙的特征提取⼜使得分类任务难以被满⾜。再者,我们并不能保证测试集和训练集中背景内容具备同质性,于是,更⼤的受视野才能有⾜够的上下信息帮助感知⽬标的存在与否。这样⼀来,简单地使⽤浅层级的特征图并不能满⾜检测需求。

那么,如何是好呢?

下⾯,我们来看看作者在论⽂中建议的模型是如何解决这些局限性,满⾜检测需求的。

  • 作者使⽤的baseline⽹络

作者使⽤的是Faster R-CNN作为baseline⽹络的,它由以下的⼏个部分组成:

1)conv layers,使⽤诸如VGG,ResNet,MobileNet,GoogleNet,Inception ResNet等的backbone⽹络对图像进⾏特征的提取。

2)利⽤backbone提取的特征图,输⼊到Region Proposal Network(RPN),得到若⼲个的Region Proposal。

3)根据Region Proposal的坐标映射到第⼀步得到的特征图中,会得到⼀个个感兴趣的区域(ROI,Region of interesting)。这些区域会经由ROI Pooling统⼀为固定的⼤⼩尺⼨,放进后续的⽹络中进⾏分类预测和锚框回归,得到最终的检测结果。

在论⽂中,作者是以此作为baseline,并在这个基础上修改了backbone,以及加⼊了neck。

  • 对backbone的修改

设计思路

在论⽂中,作者是使⽤VGG16作为baseline的backbone,它可以被更换为上⽂提及的其他backbone。

在实验中,作者选择了VGG16和ResNet18,主要考虑了⾃动驾驶中⽬标检测往往对实时性有所要求。

VGG16的⽹络架构如上图,它在每⼀层卷积层中⽤标准的3*3卷积核进⾏卷积操作,逐⼀提取特征,每层输出的特征图⽤于下⼀层的输⼊。

由于上⽂提及的问题:

1)⽬标在互动过程中可能产⽣变形(⾏为的动作变化)。

2)⽬标产⽣遮挡,有意义的外观只是局部(露出的局部可能是不规整的)。

于是,采⽤标准的3*3卷积核采样会弱化了待检测⽬标的特征浓度,作者提出了Location-aware deformable convolution(位置感知的可变形卷积)。

  • 前置知识-Deformable convolutional(可变形卷积)

从上图中我们可以看到,(a)是标准的3*3卷积,与之相对的,(b)是可变形的卷积,采样的点可以根据需要进⾏偏移,按需进⾏采样。(c)和(d)是两种特殊情况,其中,(c)的变形⽅式使得采样相当于增⼤了受视野,⽽(d)的变形⽅式则是使得采样相当于进⾏旋转。

以两层卷积层的采样过程为例,标准33卷积采取固定的空间位置进⾏采样,⽽可变形的33卷积则是每层中根据感兴趣的空间位置进⾏了采样。诚然,在最后的特征图表征上,变形的3*3卷积得到的语义更加丰富。

具体的实现上,在input feature map之后进⾏可变形卷积之前会同时建⽴⼀个⽹络分⽀,这个分⽀会利⽤⼀个卷积层学习可变卷积核中每个采样点的位置偏移。值得注意的是,这个分⽀⽹络上的卷积层所采⽤的是与可变形卷积受视野⼀致的标准卷积核,换句话来说,如果可变形卷积核计划⽤膨胀率为1的3*3的卷积核。

综上所述,完成了⼀个可变卷积的过程。

Location-aware deformable convolution(位置感知的可变形卷积)在有了可变形卷积的前置知识后,下⾯我们来看看作者在论⽂中建议的位置感知的可变形卷积。看看他在可变形卷积的基础上做了那些改变,⼜起到了哪些作⽤。

学习偏移量的卷积层使⽤的卷积核,可以和位置感知的可变形卷积核有不同的受视野在input feature map之后进⾏可变形卷积之前所建⽴的⽹络分⽀上。

1)可变形卷积⽹络中,如果计划使⽤的可变形卷积核是膨胀率为1的33卷积核,那么学习偏移量的卷积核也必须是使⽤标准的33卷积核;

2)位置感知的可变形卷积⽹络中,虽然计划使⽤的可变卷积核是膨胀率为2的33卷积核,但是学习偏移量的卷积核依然可以随意选择⾃⼰的受视野,例如下图中,是使⽤标准的33卷积核。

由于位置感知的可变形卷积核本身和学习它的偏移量的卷积核在受视野上进⾏了解耦,于是,在学习偏移量的过程中可以更灵活,这促使了⽹络更容易得到最优解。

  • 在学习每个采样点的偏移量时,卷积运算的中⼼点以采样点为基础

在使⽤卷积核进⾏卷积运算学习偏移量时:

1)可变形卷积⽹络中,学习偏移量的卷积操作是以当前input feature map的输⼊样本点为中⼼的。

例如,假设当前坐标为(0,0),那么它的9个偏移量都是以(0,0)作为中⼼点进⾏卷积操作的。

2)位置感知的可变形卷积⽹络中,学习偏移量的卷积操作是以可变性卷积核的采样点为中⼼的。

例如,假设当前坐标为(0,0),根据膨胀率为2的情况下,那么它的9个偏移量都是以对应(0,0)(-2,-2)(-2,0)(-2,2)(0,-2)(0,2)(-2,2)(0,2)(2,2)的9个采样点作为中⼼点进⾏卷积操作的。

  • 把位置感知的可变形卷积整合到VGG16中

位置感知的可变形卷积将被整合到VGG16的Conv3-3,Conv4-3,Conv5-3中。

在整合时,VGG16原来的标准3*3卷积是保留的,在此基础上,再添加⼀个位置感知的可变形卷积分⽀:

⾸先把标准3*3卷积分⽀的输出和位置感知的可变形卷积分⽀的输出按照通道进⾏拼接,然后,再使⽤⼀个1*1的卷积层将它们进⼀步融合。

由于后续的后向注意⼒过滤的需要,在VGG16常规的Conv5之后还添加⼀个Conv6的卷积层,在Pooling后,Conv6的feature map相⽐Conv5再缩⼩⼀倍。

⾄此,作者就对backbone⽹络的改造就完成了,他要解决的是⽬标与环境互动产⽣外观变形或局部被遮挡时导致外观不规整时,卷积能针对⽬标的空间位置有更灵活的采样,使得特征提取更有意义。

从作者的实验中,我们也可以 看到,采取位置感知的可变形卷积(Method B)要⽐标准卷积(Method C)和可变形卷积(Method A)有更⾼的检测准确率。

添加neck⽹络——后向注意⼒过滤(backward attention filtering)

设计思路

要进⾏⼩⽬标的检测,对⾼分辨率的特征图是有严重依赖的,因为只有特征图上有⾜够的空间信息,⼩⽬标才能被检测出来。不过,如果我们直接使⽤浅层的⾼分辨率特征图,它们虽然有⾜够的空间信息,但同时⼲扰的信息也多,这对于模型⽹络后续的分类预测和锚框回归也带来不少负⾯作⽤。

作者提出了⼀种后向注意⼒过滤的⽅法,他希望利⽤深层⽹络中富有语义的特征图作为过滤器对相对浅层的特征图进⾏过滤,把⼲扰的背景信息逐⼀滤除,留下当前分辨率特征图该有的⽬标信息。这样⼀来,每个分辨率的特征图送⼊后续的检测⼦⽹络,都能得到不错的,对应该分辨率的⽬标检测效果。

  • 后向注意⼒过滤的原理

建⽴过滤器

作者是使⽤深层的特征图作为基础进⾏滤波器的制作的。以Conv6为例,它的输出将被⽤作Conv5的过滤器。作为过滤器,作者需要:

1)把它的特征图取值范围映射到(0,1)之间,如此⼀来,后续与⽬标特征图进⾏相乘时,可以起到越接近0,⽬标特征图该处的特征被抹除,越接近1,⽬标特征图该处的特征被保留的作⽤。

2)Conv6的feature map相⽐Conv5缩⼩了⼀倍,于是,接下来还需要做⼀次upsample(上采样),使得滤波器特征图还原到与Conv5的feature map⼀样的⼤⼩,如此⼀来,后续的逐像素相乘才能⼀⼀对应。

进⾏过滤操作

作者利⽤滤波器特征图与⽬标特征图进⾏相乘,同时,⽬标特征图再做了⼀次skip,逐像素相加到相乘的结果之上。

加⼊skip的⽬的应该是借鉴了ResNet设计的思路,作为最后的学习保障,这个过滤层可以在学习⽆果时不起任何作⽤。这⼀选择交由模型⽹络⾃⾏决策。最后,整个后向注意⼒滤波的计算公式为:

  • 添加后向注意⼒过滤后的模型

可以看到,整个过滤的过程是从深层⽹络⼀步⼀步向浅层递进的。每次过滤后的特征图⼀⽅⾯会作为下⼀个浅层特征图过滤的过滤器,过滤三次后送进RPN进⾏锚框的⽣成,另外⼀⽅⾯也会送进ROI Pooling中,为最后⼀步的分类预测和锚框回归作准备。

  • head⽹络——接上Faster R-CNN的detector

后向注意⼒过滤之后,⽹络会把过滤后的特征图送进⼦检测⽹络中。

1)送⼊RPN⽹络的特征图,是三次过滤后的特征图,它拥有较⾼的分辨率,也就具备了⾜够的空间信息。在它的基础上进⾏锚框的⽣成将有利于把不同尺度的⽬标进⾏初定位。

2)根据⽣成的Region proposal,提取不同分辨率特征图上对应的区域进⾏ROI Pooling,此时,不同层级的特征图拥有不同受视野的语义,在之后的分类预测和锚框回归中起到⾮常好的正⾯作⽤。

由上图我们可以看到,过滤了⼲扰信息后,RPN只需要⽣成更少的锚框,就能使得平均准确率⽐之前⾼,这也就意味着,此时模型中的RPN能⽣成质量更⾼的锚框。

最后,我们可以看到,作者把他建议的模型与当时的其他具有最佳性能的检测模型在PASCAL VOC2017测试集上进⾏了对⽐,其检测性能仅次于FPN,取得了⾮常有竞争⼒的结果。

⽽值得注意的是,作者建议的模型在运⾏性能上⾮常优秀,Runtime仅为0.22 sec(backbone VGG16)和0.14 sec(backbone ResNet18),为⾃动驾驶领域提供了⾼效运⾏的性能⽀持。

结论

在⾃动驾驶领域,交通参与者的检测是计算机视觉关⼼的话题。由于这些交通参与者者需要提前被感知,此时,他们因为远离摄像头⽽显得外观较⼩;同时,这些交通参与者可能因为互动⾏为或者被遮挡导致了外观的变形或不规整,⽽露出的外观也可能是较⼩的,这些都成为了⽬标检测中的难题。

作者建议的模型,通过使⽤位置感知的可变形卷积解决了⽬标与环境互动产⽣外观变形或局部被遮挡时导致外观不规整时,卷积能针对⽬标的空间位置有更灵活的采样,使得特征提取更有意义。同时,通过后向注意⼒过滤的⽅法,利⽤深层⽹络中富有语义的特征图作为过滤器对相对浅层的特征图进⾏过滤,把⼲扰的背景信息逐⼀滤除,留下当前分辨率特征图该有的⽬标信息。借此平衡了浅层特征图有⾜够空间信息但语义不强,⽽深层特征图有丰富语义但缺乏空间信息的问题,⼩⽬标的检测也能在逐层过滤中得到更⾼质量的检测。

最终,截⽌论⽂发表时,作者建议的模型在保证了运⾏性能的同时,检测性能上取得良好表现,其检测性能仅次于FPN,取得了⾮常有竞争⼒的结果。

220+篇AI必读论文🚀🚀🚀

关注下方《学姐带你玩AI》即可领取

码字不易,欢迎大家点赞评论收藏!

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

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

相关文章

SpringMVC如何优化Ajax技术

SpringMVC如何优化Ajax技术? AJAX Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。 AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。 Ajax 不是一种新的编程语言,而是一种用于创…

EIoU和Focal-EIoU Loss

1、论文 论文题目:《Focal and Efficient IOU Loss for Accurate Bounding Box Regression》 2、引言 CIoU Loss虽然考虑了边界框回归的重叠面积、中心点距离、高宽比。但是其公式中的v反映的是高宽的差异,而不是高宽分别与其置信度的真实差异。因此&…

蚂蚁智能内容合规审核产品探秘

随着互联网服务的不断深化,产品营销的形式从传统文本、长图文,增加到短视频、直播等新媒介形态,展现形式愈加丰富的同时,也为营销宣传内容合规审核带来了诸多难题。如何解决与日俱增的审核量与合规审核人员有限之间的矛盾&#xf…

【阶段三】Python机器学习31篇:机器学习项目实战:基于皮尔逊相关系数搭建电影智能推荐系统

本篇的思维导图: 项目背景 在当今这个大数据时代,智能推荐系统的应用越来越广泛,网上购物、在线观影、新闻推送的背后都有智能推荐系统算法的支持。人们经常会在视频平台上观看电影,有时明确想要观看某部电影,有时则仅仅是随机搜寻。如果视频平台能利用基于物品的…

DDOS攻击

把我掘金的文章同步一份过来 最近网上爆火的一款游戏 Goose Goose Duck (鹅鸭杀) 游戏官方在近日发布了一则公告,宣布由于服务器屡次遭受黑客攻击,该游戏服务器将暂时关服三天进行维护 遭到了DDOS攻击,背后原因,我们不做讨论&…

代码随想录算法训练营第十七天二叉树 java : . 110.平衡二叉树 257.二叉树的所有路径 404.左叶子之和

文章目录前言Leetcode 110.平衡二叉树题目讲解思路Leetcode 257. 二叉树的所有路径题目讲解这道题涉及到了回溯Leetcode 404.左叶子之和题目讲解总结前言 选择一个简单的理念,矢志不渝地去执行(Take one simple idea and take it seriously 递归三部曲…

【Nginx】Nginx搭建高可用集群

1. KeepalivedNginx 高可用集群(主从模式)2. 配置高可用的准备工作3. 在两台服务器上安装keepalived4. 完成高可用配置(主从配置)5. 最终测试 1. KeepalivedNginx 高可用集群(主从模式) 2. 配置高可用的准备工作 需要两台服务器…

Revit如何将明细表导出为DWG格式【批量导出图纸】

一、Revit中怎样将明细表导出到DWG文件中 有时需要将Revit中生成的各种明细表导入到CAD中使用,但是在明细表视图中并没有导出成DWG格式的选项如图1所示,应该如何操作才能导出成CAD可识别文件呢? 方法一:将明细表通过导出为报表选项…

Java 核心技术卷 I 基础知识笔记(一)

Java 的基本程序设计结构 2.1 一个简单的 Java 应用程序 一个最简单的 Java 应用程序,它只发送一条消息到控制台窗口中:/*** This is the first sample program in Core Java Chapter 3* version 1.01 1997-03-22* author Gary Cornell*/ public class…

分享111个Java源码,总有一款适合您

Java源码 分享111个Java源码,总有一款适合您 源码下载链接:https://pan.baidu.com/s/1fycjYHA7y6r-IH8H7v5XKA?pwdag8l 提取码:ag8l 下面是文件的名字,我放了一些图片,文章里不是所有的图主要是放不下...&#xff…

网络编程学习记录

服务端首先是确定协议版本。首先定义一个结构体 WSADATA wsadata; 这个结构体是啥呢? 是Windows下得到广泛应用的、开放的、支持多种协议的网络编程接口。大家晓得了吧。 让我们看看这个结构体。 typedef struct WSAData {WORD wVersion; …

c++ socket之io复用模型 epoll进阶

服务器开发系列 文章目录服务器开发系列前言一、socket epoll介绍二、代码实现1. epoll client实现2. epoll server实现3. epoll client server验证总结前言 I/O复用模型:主要是指,一个线程可以同时监控多个系统IO、并且能够操作多个系统IO的一种技术模…

西瓜书第一章课后题答案(一)

1.1 针对西瓜分类分题进行讲解属性: 3个属性色泽:(青绿,乌黑,浅白)根蒂:(蜷缩,硬挺,稍蜷)敲声:(浊响,清脆&…

Docker网络network详解

一、概述 Docker容器每次重启后容器ip是会发生变化的。 这也意味着如果容器间使用ip地址来进行通信的话,一旦有容器重启,重启的容器将不再能被访问到。 而Docker 网络就能够解决这个问题。 Docker 网络主要有以下两个作用: 容器间的互联和…

【ROS2入门】理解 ROS 2 节点

大家好,我是虎哥,从今天开始,我将花一段时间,开始将自己从ROS1切换到ROS2,在上一篇中,我们依托Turtlesim演示节点来逐步展开,介绍了rqt工具,这一章,我们将围绕ROS2中主要…

jvm快速入门

1.JVM介绍 1.什么是jvm Java Virtual Machine(java二进制字节码运行环境) 好处: 一次编译,好处运行自动内存管理,垃圾回收机制数组下标越界检查多态 比较JVM\JRE\JDK jvm屏蔽java代码与底层操作系统的差异 JREJVM基…

基于 java springboot+layui仓库管理系统设计和实现

基于 java springbootlayui仓库管理系统设计和实现 博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码…

基于基于jsp+mysql+Spring+mybatis的SSM汽车保险理赔管理系统设计和实现

基于基于jspmysqlSpringmybatis的SSM汽车保险理赔管理系统设计和实现 博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐…

12图、网络、关联矩阵

第 12 讲 图、网络、关联矩阵 Graphs,networks,incidence matrices 本讲讨论线性代数在物理系统中的应用。 图和网络 Graphs & Networks “图”就是“结点”和“边”的一个集合。 边线上的箭头代表从结点流出的正方向。 关联矩阵(I…

独立开发变现周刊(第87期):靠写简历如何每年赚24万美元?

分享独立开发、产品变现相关内容,每周五发布。目录1、mall4cloud: 开源的微服务B2B2C电商商城系统2、restorePhotos:开源的老照片修复系统3、JSON Crack——开源、免费的JSON可视化应用程序4、靠写简历如何每年赚24万美元?1、mall4cloud: 开源…