Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >CVPR2020 夜间目标检测挑战赛冠军方案解读

CVPR2020 夜间目标检测挑战赛冠军方案解读

作者头像
小白学视觉
发布于 2020-09-22 07:29:01
发布于 2020-09-22 07:29:01
2.1K0
举报

本文转载自52cv

在 CVPR 2020 Workshop 举办的 NightOwls Detection Challenge 中,来自国内团队深兰科技的 DeepBlueAI 团队斩获了“单帧行人检测”和“多帧行人检测”两个赛道的冠军,以及“检测单帧中所有物体”赛道的亚军。

竞赛的主要目的是进行夜间行人或物体检测,是许多系统,尤其是自动驾驶汽车安全可靠的关键之一。众所周知,熊猫智能公交车是深兰科技自动驾驶核心产品,自2019年获得了广州、长沙、上海、武汉的自动驾驶测试牌照后,今年5月又成功摘得深圳智能网联汽车道路测试牌照。此次冠亚军方案,将与白天行人检测结合,打造适用于不同天气条件的全天候行人检测系统,并有望在熊猫智能公交上进行应用,为其安全行驶保驾护航。

深兰科技坚持以“人工智能,服务民生”为理念,响应国家政策号召,深刻洞察民众痛点和需求,致力于把高质量的人工智能产品和解决方案带给更多的社会大众,以匠心研发的熊猫智能公交车将作为智能城市公共交通领域的“新基建”,用于提升公众出行新体验。

以下将为大家介绍 DeepBlueAI 团队的解决方案。

NightOwls 检测挑战赛简介

检测 RGB 摄像机拍摄的夜间场景图片中的行人,是一个非常重要但是未被充分重视的问题,当前最新的视觉检测算法并不能很好地预测出结果。官方 baseline 在 Caltech(著名行人检测数据集)上的 Miss Rate(越小越好)可以达到 7.36%,但在夜间行人数据集上却只能达到 63.99%。

夜间行人检测是许多系统(如安全可靠的自动驾驶汽车)的关键组成部分,但使用计算机视觉方法解决夜间场景的检测问题并未受到太多关注,因此 CVPR 2020 Scalability in Autonomous Driving Workshop 开展了相应的比赛。

NightOwls Detetection Challenge 2020 共有三个赛题:单帧行人检测(该赛题与 2019 年相同)、多帧行人检测,以及检测单帧中所有物体(包括行人、自行车、摩托车三个类别):

  • Pedestrian Detection from a Single Frame (same as 2019 competition)
  • Pedestrian Detection from a Multiple Frames
  • All Objects Detection (pedestrian, cyclist, motorbike) from a Single Frame

赛题介绍

夜间行人数据集示例

Track 1: Pedestrian detection from a single frame

该任务只要求检测行人(对应 Ground truth 中 category_id = 1 的行人类别),且所用算法只能将当前帧用作检测的输入,该题目与 ICCV 2019 NightOwls 挑战赛相同。

Track 2: Pedestrian detection from multiple frames

该任务的要求与任务 1 相同,都是只检测行人,但是该任务允许使用当前帧以及所有先前帧 (N, N-1, N-2, …) 来预测当前帧的行人。

这两个任务的数据集由 279000 张全注释的图片组成,这些图片来源于欧洲多个城市黎明和夜间的 40 个视频,并涵盖了不同的天气条件。

模型效果评估使用的是行人检测中常用的指标Average Miss Rate metric,但是仅考虑高度 > = 50px 的非遮挡目标。

Track 3: All Objects Detection (pedestrian, cyclist, motorbike) from a Single Frame

该任务要求检测出帧里所有在训练集中出现过的类别,包括自行车、摩托车,并且不允许使用视频序列信息。

赛题难点

这次比赛的主要难点包含以下几个方面:

  • 运动模糊和图像噪点

与常规检测数据集不同,该竞赛考虑到实际驾驶情况,所用数据是在车辆行进过程中采集的,所以当车速较快或者有相对运动的时候会产生持续的运动模糊图像。并且由于摄像头是普通的RGB相机,因此在光线较弱的环境下收集的图片质量大幅度下降,这也是影响模型效果的主要原因。

  • 对比度差异大,色彩信息少

这是由于收集数据主要来自于夜间环境所导致的必然结果,所以在进行数据增强的时候需要谨慎,不同增强方式会造成较大的影响。

  • 不同的数据分布

该比赛的数据集涵盖了不同的城市和天气,之前常用的行人检测数据集一般未同时满足这两个条件。该数据具有多样性,且与常用数据集的数据分布存在较大差异。该比赛数据集与常用于训练预训练模型的数据集(如 COCO 数据集、OBJ365)的数据分布存在很大的不同,因此对基于常用数据集预训练的模型进行 fine-tune 的效果不如预期。

DeepBlueAI 团队解决方案

DeepBlueAI 团队在单帧行人检测和多帧行人检测两个赛道中取得了冠军成绩,在检测单帧中所有物体赛道中获得了亚军。

就检测器而言,该团队首先通过常规检测所累积的经验构造出一个 baseline:

Baseline = Backbone + DCN + FPN + Cascade + anchor ratio (2.44)

这些模块早已是各个比赛的「常客」,也被许多专业人士进行了比较透彻的分析,此处不再赘述。DeepBlueAI 团队进行了简单的实验,发现这些模块总是有用,进而将这套算法作为 baseline,加上一些行人检测的小 trick,如将 anchor ratio 改为 2.44、针对标注为 ignore 的目标在训练过程中 loss 不进行回传处理。

具体主要工作包含以下几个方面:

1. Double Heads

通过观察实验发现,baseline 将背景中的石柱、灯柱等物体检测为行人,这种情况大多和 head 效果不好有关。该团队基于此进行了实验,如 TSD [7]、CLS [8]、double head [9],并最终选择了效果好且性价比高的 double head 结构(如下图所示):

Double Heads 结构

通过对比实验可以发现:使用 FC-head 做分类、Conv-head 做回归,可以得到最好的效果。

分类更多地需要语义信息,而坐标框回归则更多地需要空间信息,double head 方法采用分而治之的思想,针对不同的需求设计 head 结构,因此更加有效。当然这种方法也会导致计算量的增加。在平衡速度和准确率的情况下,该团队最终选择了 3 个残差 2 个 Non-local 共 5 个模块。

2. CBNet [10]

合并功能更强大的 backbone 可提高目标检测器的性能。CBNet 作者提出了一种新颖的策略,通过相邻 backbone 之间的复合连接 (Composite Connection) 来组合多个相同的 backbone。用这种方式他们构建出了一个更强大的 backbone,称为「复合骨干网络」(Composite Backbone Network)。

当然这也带来了模型参数大小和训练时间的增加,属于 speed–accuracy trade-off。该团队也尝试过其他的改进方式,但最终还是选择了实用性更强的 CBNet,该方法不用再额外担心预训练权重的问题。

该团队选择了性价比较高的双 backbone 模型结构。

3. 数据增强

该团队发现 Pixel-level 的增强方式导致了性能结果大幅下降,因此没有在这个方向继续尝试。

而图像增强方式 Retinex,从视觉上看带来了图像增强,但是该方法可能破坏了原有图片的结构信息,导致最终结果没有提升。

于是,该团队最终选择了 Spatial-level 的增强方式,使得结果有一定的提升。

实验细节

1. 将 Cascade rcnn + DCN + FPN 作为 baseline;

2. 将原有 head 改为 Double head;

3. 将 CBNet 作为 backbone;

4. 使用 cascade rcnn COCO-Pretrained weight;

5. 数据增强;

6. 多尺度训练 + Testing tricks。

实验结果

下图展示了该团队使用的方法在本地验证集上的结果:

该团队将今年的成绩与去年 ICCV 2019 同赛道冠军算法进行对比,发现在不使用额外数据集的情况下,去年单模型在 9 个尺度的融合下达到 11.06,而该团队的算法在只用 2 个尺度的情况下就可以达到 10.49。

未来工作

该团队虽然获得了不错的成绩,但也基于已有的经验提出了一些未来工作方向:

1. 由于数据的特殊性,该团队尝试使用一些增强方式来提高图片质量、亮度等属性,使图片中的行人更易于检测。但结果证明这些增强方式可能破坏原有图片结构,效果反而降低。该团队相信会有更好的夜间图像处理办法,只是还需要更多研究和探索。

2. 在允许使用之前帧信息的赛道二中,该团队仅使用了一些简单的 IoU 信息。由于收集这个数据集的摄像头一直在移动,该团队之前在类似的数据集上使用过一些 SOTA 的方法,却没有取得好的效果。他们认为之后可以在如何利用时序帧信息方面进行深入的探索。

3. 该领域存在大量白天行人检测的数据集,因此该团队认为之后可以尝试 Domain Adaption 方向的方法,以充分利用行人数据集。

参考文献:

[1] Lin T Y , Dollár, Piotr, Girshick R , et al. Feature Pyramid Networks for Object Detection[J]. 2016.

[2] Dai J, Qi H, Xiong Y, et al. Deformable Convolutional Networks[J]. 2017.

[3] Cai Z , Vasconcelos N . Cascade R-CNN: Delving into High Quality Object Detection[J]. 2017.

[4] Xie S , Girshick R , Dollar P , et al. Aggregated Residual Transformations for Deep Neural Networks[C]// 2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). IEEE Computer Society, 2017.

[5] Bochinski E , Eiselein V , Sikora T . High-Speed tracking-by-detection without using image information[C]// 2017 14th IEEE International Conference on Advanced Video and Signal Based Surveillance (AVSS). IEEE, 2017.

[6] Henriques J F , Caseiro R , Martins P , et al. High-Speed Tracking with Kernelized Correlation Filters[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2015, 37(3):583-596.

[7] Song G , Liu Y , Wang X . Revisiting the Sibling Head in Object Detector[J]. 2020.

[8] Li A , Yang X , Zhang C . Rethinking Classification and Localization for Cascade R-CNN[J]. 2019.

[9] Wu, Y., Chen, Y., Yuan, L., Liu, Z., Wang, L., Li, H., & Fu, Y. (2019). Rethinking Classification and Localization in R-CNN. ArXiv, abs/1904.06493.

[10] Liu, Y., Wang, Y., Wang, S., Liang, T., Zhao, Q., Tang, Z., & Ling, H. (2020). CBNet: A Novel Composite Backbone Network Architecture for Object Detection. ArXiv, abs/1909.03625.

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小白学视觉 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Angular 结合 Git Commit 版本处理
上图表示的是每次提交的Git Commit的信息,当然,这里我是每次提交都记录,你可以在每次构建的时候记录。
Jimmy_is_jimmy
2022/03/30
1.1K0
Angular 结合 Git Commit 版本处理
Angular 2.x折腾记 :(1)初识Angular-cli[官方脚手架]及脱坑要点
  这个系列的进度有些跳跃性,我尽量直白点解释,但是我不是官方文档,直入主题!!!!
CRPER
2024/02/18
2110
Angular 2.x折腾记 :(1)初识Angular-cli[官方脚手架]及脱坑要点
Angular框架
AngularJS v2.x~v8.x官网:https://angularjs.io
张哥编程
2024/12/19
1140
Angular UI框架 Ng-alain @delon的脚手架的生成开发模板
前言 首先感谢下 cipchk基于 Ng-Zorror 框架上制作的ng-alain 。 之前很早就关注了 ng-alain,今天得空折腾了下。 折腾的时候发现官方文档有些坑,没有写清楚,所以我作为一
角落的白板报
2018/04/12
1.7K0
Angular UI框架  Ng-alain @delon的脚手架的生成开发模板
Angular 2 + 折腾记 :(1)初识Angular-cli[官方脚手架]及脱坑要点
这个系列的进度有些跳跃性,我尽量直白点解释,但是我不是官方文档,直入主题!!!!
CRPER
2018/08/28
1.9K0
Angular 2 + 折腾记 :(1)初识Angular-cli[官方脚手架]及脱坑要点
Angular CLI 常用终端操作命令
初始化创建项目时,自动添加了 <code> @angular/router </code> ,自动添加到package.json 文件中
用户1437675
2018/08/20
2.1K0
玩转 Angular 环境变量
对于 “程序猿” 来说,在日常开发过程中,我们经常要与不同的开发环境打交道。在实际的项目的开发过程中,一般至少会有两个环境:开发环境和线上环境,这是很简单的情形。但对于一些项目来说,仅有两个环境是不够,除了开发环境和线上环境之外,可能还会包含测试环境和预发布环境等等。
阿宝哥
2019/11/05
3.4K0
angular-cli.json配置参数解释,以及依稀常用命令的通用关键参数解释
一. angular-cli.json常见配置 { "project": { "name": "ng-admin", //项目名称 "ejected": false // 标记该应用是否已经执行过eject命令把webpack配置释放出来 }, "apps": [ { "root": "src", // 源码根目录 "outDir": "dist", // 编译后的输出目录,默认是dist/ "assets": [ // 记录资源文件夹
喝茶去
2019/04/16
1.7K0
Angular2入门体验
好的工具往往使得开发应用更快更简单,而不是任何模块都手动开发。angualr cli就是一个支持 创建工程,添加文件,对各种任务如测试、打包、部署等迭代。 本文的目的就是基于TypeScript开发构建一个angualr应用,使用angualr cli可以选择工程的风格。 在本章的 末尾,你可以理解CLI的开发以及开发完整应用的样例。 也可以通过这个链接直接下载源码。 第一步,配置环境变量 在开始开发前,需要安装nodejs。 点击这个网址,Nodejs安装文件下载 在命令行中,执行: sudo npm i
用户1154259
2018/04/17
1.7K0
使用Angular CLI进行Build (构建) 和 Serve
Build. Build主要会做以下动作: 编译项目文件并输出到某个目录 Build targets决定了输出的结果 bundling 打包 生产环境的build还会进行uglify和tree-shaking(把没用的代码去掉) ng build. 可以先看帮助: ng build --help 针对开发环境, 就是用命令 ng build. 默认情况下, 它的输出目录在.angular-cli.json文件里ourDir属性配置的, 默认是/dist目录. build之后会看见dist里面有这些文件: i
solenovex
2018/03/29
2.4K0
使用Angular CLI进行Build (构建) 和 Serve
angular 入门1
ng new helloworld --skip-install 然后使用 cnpm install 或者yarn install加速
路过君
2020/06/19
8730
Angular基础-搭建Angular运行环境
这篇文章介绍了在Angular项目中进行开发环境搭建的关键步骤。包括node.js安装和配置、安装Angular CLI工具、安装angular-router、创建Angular项目等步骤。这篇文章为读者提供了清晰的指南,帮助他们快速搭建Angular开发环境,为后续的项目开发奠定基础。
Damon小智
2024/05/02
2500
Angular基础-搭建Angular运行环境
用Angule Cli创建Angular项目
okaychen
2018/01/05
1.5K0
用Angule Cli创建Angular项目
Angular CLI 简介
如果您正在使用angular, 但是没有好好利用angular cli的话, 那么可以看看本文.
solenovex
2018/03/22
6.2K5
Angular CLI 简介
Angular-Cli脚手架介绍、安装并搭建项目
最简单的使用方式参照以下 StackBlitz 演示,也推荐 Fork 本例来进行 Bug Report,注意不要在实际项目中这样使用。
江一铭
2022/06/17
2.1K0
Angular-Cli脚手架介绍、安装并搭建项目
Angular Schematics 三部曲之 Add
因工作繁忙,差不多有三个月没有写过技术文章了,自八月份第一次编写 schematics 以来,我一直打算分享关于 schematics 的编写技巧,无奈还是拖到了年底。
叙帝利
2020/01/15
1.4K0
Angular Schematics 三部曲之 Add
Angular 实现类似微服务的效果
世间万物皆对象
2024/03/20
1350
angular入门教程_初学者织围巾简单教程慢动作
本课程是一个系列基础教程,目标是带领读者上手实战,课程以新版本 Angular 的 3 个核心概念作为主线:组件、路由、模块,加上业务开发过程中必须用到的特性:工具、指令、表单、RxJS、i18n、测试,一共分为 9 部分,34 篇文章。
全栈程序员站长
2022/11/01
3.4K0
angular入门教程_初学者织围巾简单教程慢动作
Angular开发实践(六):服务端渲染
Angular Universal Angular在服务端渲染方面提供一套前后端同构解决方案,它就是 Angular Universal(统一平台),一项在服务端运行 Angular 应用的技术。 标准的 Angular 应用会执行在浏览器中,它会在 DOM 中渲染页面,以响应用户的操作。 而 Angular Universal 会在服务端通过一个被称为服务端渲染(server-side rendering - SSR)的过程生成静态的应用页面。 它可以生成这些页面,并在浏览器请求时直接用它们给出响应。 它
laixiangran
2018/04/11
4.9K0
Angular开发实践(六):服务端渲染
Angular 中的请求拦截
在上一篇的文章 Angular 中使用 Api 代理,我们处理了本地联调接口的问题,使用了代理。
Jimmy_is_jimmy
2022/04/15
2.6K0
Angular 中的请求拦截
推荐阅读
相关推荐
Angular 结合 Git Commit 版本处理
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档