当前位置: 首页 > 编程日记 > 正文

最新单步目标检测框架,引入双向网络,精度和速度均达到不错效果

作者 | Tiancai Wang等

译者 | 路一直都在

出品 | AI科技大本营(ID:rgznai100)

one-stage的目标检测方法因其具有实时性强、检测精度高等特点,近年来受到广泛关注。目标检测包括分类和定位两个子任务,通常来说,one-stage目标检测有通用的策略:利用一个经过ImageNet预训练的backbone完成分类任务,利用一个自上而下的特征金字塔表示形式处理尺度变化问题。

与常见的策略相反,最近的工作已经证明了从零开始训练的好处,以减少分类和定位之间的任务差距,特别是在高重叠阈值的情况下。然而,与基于微调的检测模型相比,从零开始训练的检测模型需要的训练时间要长得多,不能满足实时的要求。

本文设计了一个one-stage检测框架,它结合了微调预训练模型和从零开始训练的优点。该框架包括一个预训练过的标准backbone网络,一个轻量级的从零开始训练的辅助网络。此外,作者认为通常使用的自顶向下的金字塔表示只关注于将高级语义从顶层传递到底层,因此在检测框架中引入了一个双向网络,它可以有效地传递中低层次和高层次的语义信息。

在COCO和UAVDT上的实验表明,以经典的VGG作为backbone,本文提出的方法相比baseline在AP指标上分别提高了7.4%和4.2%。在COCO测试集上,固定300×300输入,本文提出的以ResNet为backbone的检测器在单级推理方面超过了现有的单级检测方法,AP达到了34.3 ,在一个Titan X GPU上时间为19毫秒,同时兼顾了精度和速度。

引文

one-stage和two-stage目标检测框架

由于深度神经网络尤其是卷积神经网络在计算机视觉中的广泛应用,诸如目标识别,检测,分割,跟踪等很多视觉任务都取得了很好的发展。目标检测包括对目标的分类和定位两个任务,主流的检测框架可以大致分为两类:one-stage系列和two-stage系列。two-stage系列的代表算法有Faster R-CNN,首先选择出所有的候选区域,然后针对每个候选区域进行分类和回归,有效的提升了目标检测的正确率,但是这种先筛选后检测的策略,在速度上的表现不是很好,于是针对实时的要求,one-stage目标检测框架被提出,代表性算法YOLO,SSD等通过直接回归的策略,有效的提升了检测速度,但是准确性相比two-stage系列要略逊一筹。

小目标检测的难点

近来的one-stage探测器的目标是获得与two-stage相近的检测精度。尽管在大中型目标上效果较好,但这些探测器在小目标上的性能却低于预期。例如,当使用一个500×500的输入时,使用RetinaNet在COCO数据集上, AP为47,但在小目标上,AP只有 14。小目标检测是一个具有挑战性的问题,它既需要精确描述对象的低层/中层信息,也需要区分目标对象与背景或其他对象类别的高级语义信息。

预训练网络的利弊

主流的one-stage目标检测框架的通用策略是:利用一个经过ImageNet预训练的backbone完成分类任务。然后利用检测目标的数据集进行微调,从而达到快速收敛的效果。但是目标检测中的分类任务和定位任务之间仍然存在较大差异,尤其是在目标框重叠阈值高的情况下。在ICCV2019Kaiming He的最新论文中,也对利用ImageNet进行预训练然后fine-tune这种模式进行了思考,并且认为从零开始训练检测模型,有助于精确定位。但是另一方面,与典型的基于微调的网络相比,从零开始训练非常深的网络需要的训练时间要长得多。

本文引入一个新的检测框架,优势互补,将预训练和从零开始学习的优点结合起来,组成了一个标准网络,该网络使用一个预训练的backbone和一个从零开始训练的辅助网络。辅助网络为标准的预训练网络提供低/中级信息的补充,有利于中小目标的检测。

综上所述,在检测不同尺度的目标(尤其是小目标)时,需要低级/中级信息和高级语义信息。当前探测器通常使用自顶向下的金字塔特征表示,其中来自顶层或后一层的高层信息被融合到底层或前一层语义上较弱的高分辨率特征。尽管这种自顶向下的特征金字塔表示可以提高性能,但它只向前面的层注入了高级语义信息。此外,这种金字塔代表是由许多层以一层一层的方式融合而成。在本文中,作者认为高层信息与前一层,低层/中层信息与后一层的融合是多尺度目标检测的关键。

方法

网络结构

整体的网络结构如下图所示,由三部分组成:(1)标准的SSD网络结构作为backbone(2)从零开始训练的轻量级网络(LSN)(3)双向网络

1)标准SSD网络

将预训练的SSD网络作为backbone,SSD网络的结构如下图所示,在本文中,选取conv4_3,F C_7, conv8_2, conv9 _2, conv10 _2, and conv11 _2作为骨干网特征,使用不同分辨率的层来执行独立的预测。

2)轻量级辅助网络(LSN)

LSN网络与SSD特征层紧密相连,用于构造低层/中层特征表示,称为LSN特征。

如下图所示,现有的特征提取策略是:从主干网络中提取特征,在多个卷积块和最大池化层的重复堆叠中提取特征,以此产生语义信息丰富的特征。这种特征提取方式有利于图像分类任务,因为分类任务要求的是平移不变性的即目标位置发生变化,最后输出的类别信息也应该一致。但是在目标检测任务中,由于不仅仅有分类的要求,还需要进行目标的定位,因此更需要准确的轮廓信息,而特征中的低层,中层特征正是包含这种轮廓边缘信息,对于目标检测十分重要。

为了弥补主干网络在提取特征过程中的损失,本文提出了LSN特征提取方案。如下图所示,首先经过一个较大的下采样率进行池化操作,将输入图片的size调整到SSD中第一层的输入size,然后被送入到一个轻量级的连续操作LSO(Light-weight-serial operations)中去,LSO包括卷积层,BN层,ReLU层等结构。

需要注意的是,LSN是参数是随机初始化的。它遵循类似于标准SSD的金字塔特征层次结构

其中,n是特征金字塔的层数。

下图是LSN的具体结构,输入图片I首先经过一个降采样(DS)操作,得到与标准SSD网络第一层相同的尺寸,然后,利用降采样后的图片It生成初始的LSN特征 :

其中, φint(0)表示连续操作,包括1个3x3卷积,1个1x1卷积。然后,初始的卷积用来生成中间卷积 Sint,第K层的特征由第K-1层特征作为输入:

其中,k=(1,...,n),φint(k)表示一个3x3卷积。当k=1时,(k-1)层的特征就是上文的初始特征。最后,在第K层的中间特征上加入1x1卷积,产生LSN网络在第k层上在最终特征

其中 φtrans(k)表示1x1卷积,用来进行升降维,使得特征维度跟SSD中的特征维度匹配。下图是LSN网络的整体结构图

3)双向网络

与传统的FPN结构相比,有几个不同点:

1)双向网络中的自底向上方案以级联的方式将前一层的特征传播到后一层

2)FPN中的top-down通路通过级联操作逐层融合了许多CNN层。在双向网络的top-down通路,预测层通过独立的并行连接进行融合,而不是逐层逐层的级联/顺序融合。

双向网络,顾名思义,由两个方向(自底向上,自上而下)的网络构成。通过两个方向的通路,双向网络在检测网络中同时传递低层和高层语义信息。

自底向上的网络

下图是bottom-up网络的结构示意,结合backbone和来自LSN特征,将不同层次的特征以前级联的方式进行前向传播,得到前向特征。将此任务称为自底向上的特征传播,用B表示。

第K层前向特征可以通过下式计算得到:

其中,Sk是LSN在第K层得到的特征,Ok代表主干网络得到的特征,Wk-1表示一个3x3卷积块,包括卷积层和BN层,fk-1是前一层输出特征,在本层作为一个输入, φk表示一组连续操作,包括ReLu,3x3卷积。⊗和⊕分别表示元素相乘和元素相加。

最后,自底向上网络各层次的前向传播特征表示为一个前向特征金字塔:

自上而下的网络

为了进一步将高级语义信息从后一层注入到前一层,引入了自上而下的网络。如下图所示,该网络将所有后续层的所有特性连接到当前层,它通过网络中独立的并行连接来传递高级语义。

最后,自上而下网络各层次的后向传播特征表示为一个后向特征金字塔:

具体操作上,首先引入几个1x1卷积块来降低前向传播金字塔Fp中的特征维度。以第K层为例,降维后的所有高层特征叠加,获得最终预测需要的特征bk

其中,Wi是一个1x1卷积块,用来降维;Wmk是一个1x1卷积块,用来融合所有来自高层的特征;µk是上采样操作;γk是一个3x3卷积块,用来融合所有前向特征;∑表示特征维度叠加。

这里需要注意一点,在自上而下的网络中,如果本身处于特征中的最高层,就不需要融合任何底层特征。这意味着最高层的前向特征被直接用作预测。

实验

1)数据集

MS COCO:80类别,共包含160K图像数据

UAVDT dataset:车辆类别包括轿车、卡车和公共汽车。数据集包含从100个视频序列中选择的80k带注释的帧

2)实验结果

如下表所示,在COCO测试集上,SSD在大目标检测上的AP有43.3,但是在小目标的检测上,SSD的AP骤减到6.2,而本文提出的方法,在使用相同的VGG情况下,AP相比SSD总体提升了6.7%。更重要的是,与SSD框架相比,本文的检测器在小目标上实现了两倍以上的检测性能提升。

虽然基于two-stage的网络可以获得更高的精度,但是它们的计算开销很大,通常需要较大的输入分辨率,并且处理图像的时间通常超过100毫秒。例如,Cascade R-CNN的AP达到42.8,但是处理图像需要141ms。本文的检测器具有速度和精度的良好平衡。

3)消融实验

分别实验检测网络中SSD,LSN,bi-directional对性能的影响。结果如下所示,可以看到,LSN,bi-directional都对性能有提升,当组合在一起时,提升最大。

4)检测效果

下图是本文检测器在COCO和UAVDT数据集上的检测结果,可以看到,本文的方法对小目标的检测性能提升十分明显。

结论

本文提出了一种one-stage的目标检测方法,该方法由标准SSD网络、轻量级随机初始化网络(LSN)和双向网络三部分组成。

LSN是从零开始训练的,产生的特征用来补充主干网络得到的特征。双向网络的设计目的是在检测网络中同时传递中低层次和高层次的语义信息。在COCO和UAVDT数据集上的实验结果表明,本文提出的方法达到了精度和速度的良好均衡。

论文链接:

http://openaccess.thecvf.com/content_ICCV_2019/html/Wang_Learning_Rich_Features_at_High-Speed_for_Single-Shot_Object_Detection_ICCV_2019_paper.html

代码链接:

https://github.com/vaesl/LRF-Net

(*本文为AI科技大本营投稿文章,转载请微信联系 1092722531)

精彩推荐

开幕倒计时6天|2019 中国大数据技术大会(BDTC)即将震撼来袭!豪华主席阵容及百位技术专家齐聚,十余场精选专题技术和行业论坛,超强干货+技术剖析+行业实践立体解读。6.6 折票限时特惠(立减1400元)倒计时 3 天,学生票仅 599 元!

推荐阅读

  • 字节跳动李航入选ACL Fellow,他曾这样看待机器学习

  • IEEE Fellow 2020名单揭晓!BDTC 2019重磅嘉宾周伯文、叶杰平、陈宝权上榜

  • 谁是当今最顶级的技术?SQL、Java、Python、C++ 皆上榜!

  • 自学编程、玩 vlog,90 后程序员们的冠军之路

  • 科技公司最爱的50款开源工具,你都用过吗?

  • 大厂面试为什么总考算法?如何避开算法面试?

  • 全球 43 亿 IPv4 地址宣告耗尽

  • 华为电脑终于又能搭载正版 Windows 系统了

  • 初级运营与高级运营的区别:只要一招,快速提升运营效果

    昨天Upbit交易所34万ETH被盗,居然是这个服务器被攻击了……

  • 你点的每个“在看”,我都认真当成了AI

相关文章:

基于Sentinel的Redis3.2高可用方案

默认情况下,Redis node和sentinel的protected-mode都是yes,在搭建集群时,若想从远程连接redis集群,需要将redis.conf和sentinel.conf的protected-mode修改为no,若只修改redis node,从远程连接sentinel后&am…

从YARN迁移到k8s,滴滴机器学习平台二次开发是这样做的

整理 | 夕颜出品 | AI科技大本营(ID:rgznai100)【导读】人工智能时代,机器学习已经渗透进每个领域,改变了这些领域的业务模式、技术架构以及方法论。随着深度学习技术近年来快速发展,高效、易用的机器学习平台对于互联…

最新 macOS Sierra 10.12.3 安装CocoaPods及使用详解

cocoapods官网:https://guides.cocoapods.org 一、什么是CocoaPods 每种语言发展到一个阶段,就会出现相应的依赖管理工具,例如 Java 语言的 Maven,nodejs 的 npm。随着 iOS 开发者的增多,业界也出现了为 iOS 程序提供…

libusb中的热插拔使用举例

以下为判断usb设备是插入还是拔出状态(热插拔)的测试代码&#xff1a; 在Windows下是不支持的&#xff0c;在Linux是支持的&#xff0c;下一个版本可能会支持Windows下的热插拔&#xff1a; #include <chrono> #include <thread> #include <iostream> #incl…

C++复制控制:拷贝构造函数

一、拷贝构造函数是一种特殊构造函数&#xff0c;具有单个形参&#xff0c;该形参&#xff08;常用const修饰&#xff09;是对该类类型的引用。与默认构造函数一样 &#xff0c;拷贝构造函数可由编译器隐式调用。拷贝构造函数应用的场合为&#xff1a; &#xff08;1&#xff0…

关于IOS获取本地通讯录信息(包含iOS9.0前后)

在ios开发当中&#xff0c;获取用户本地的通讯录功能愈加频繁的出现&#xff0c;七两自己也在自己公司的项目当中遇到的获取本地的通讯录信息的功能&#xff08;俗称“种子用户功能”&#xff0c;太可怕了&#xff09;。对此七两总结了自己使用本地通讯录时的注意点&#xff0c…

C和C++安全编码笔记:动态内存管理

4.1 C内存管理&#xff1a; C标准内存管理函数&#xff1a; (1).malloc(size_t size)&#xff1a;分配size个字节&#xff0c;并返回一个指向分配的内存的指针。分配的内存未被初始化为一个已知值。 (2).aligned_alloc(size_t alignment, size_t size)&#xff1a;为一个对象…

作为一名程序员,数学到底对你有多重要?

最近在知乎上看到一个贴子&#xff0c;看完后我沉默了.....沉思后想想&#xff0c;其实每个行业都会分等级&#xff0c;程序员也不例外&#xff01;说好听一点的叫工程师&#xff0c;普通一点的叫程序员&#xff0c;差一点的叫码农&#xff0c;更差的还会叫码畜&#xff0c;码奴…

经典SQL(sqlServer)

一、基础 1、说明&#xff1a;创建数据库CREATE DATABASE database-name 2、说明&#xff1a;删除数据库drop database dbname3、说明&#xff1a;备份sql server--- 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice disk, testBack, c:\mssql7backup\MyNwind_1.dat--- …

iOS UITextField输入框随键盘弹出界面上移

//点击输入框界面跟随键盘上移 - (void)textFieldDidBeginEditing:(UITextField *)textField { CGRect frame textField.frame; int offSet frame.origin.y 70 - (self.view.frame.size.height - 216.0); //iphone键盘高度为216.iped键盘高度为352 [UIView beginAnimations:…

IEEE分享 | 机器学习在领英的规模化应用

人工智能和机器学习仍然是全球持续增长的领域之一&#xff0c;近年来涌现出越来越多本科生或者非人工智能专业出身的工程师&#xff0c;他们努力学习和使用技术来改进产品&#xff0c;几乎每天都有新的机器学习技术和框架发布。这篇文章将讨论领英如何规模化利用技术&#xff0…

GitHub/GitLab/Gitee中项目互拷贝后仍保留历史提交记录的方法

GitHub、GitLab、Gitee等在同一个网站中执行复制或拷贝一个已有项目到一个新项目比较简单&#xff0c;因为它们在每一个项目上都有一个Fork按钮&#xff0c;直接点击此Fork按钮即可&#xff0c;Fork后的新项目会保留原有项目的历史提交记录。但是如果不在同一个网站上进行此操作…

基于mimeTex的数学公式Webservice的部署和实现

通过Latex语法&#xff0c;实现生成数学公式的解决方案也很多。这里介绍一种方法&#xff0c;使用开源的mimeTex。该项目的官网地址如下&#xff1a;http://www.forkosh.com/mimetex.html网站主页有一个声明。如果你的服务器上已经安装了latex&#xff0c;那么推荐使用mathTex&…

对称加密算法AES之GCM模式简介及在OpenSSL中使用举例

AES(Advanced Encryption Standard)即高级加密标准&#xff0c;由美国国家标准和技术协会(NIST)于2000年公布&#xff0c;它是一种对称加密算法。关于AES的更多介绍可以参考&#xff1a;https://blog.csdn.net/fengbingchun/article/details/100139524 AES的GCM(Galois/Counte…

iOS UITextField清空按钮

extField.clearButtonModeUITextFieldViewModeWhileEditing; 就可以了&#xff0c;表明编辑输入框的时候启动一键清空按钮。另外&#xff0c;clearButtonMode还有三个属性&#xff1a; UITextFieldViewModeNever, 清空按钮永不出现 UITextFieldViewModeUnlessEditing, 不编…

腾讯“疯狂”开源

作者 | 马超责编 | 胡巍巍出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;近日&#xff0c;腾讯自研的万亿级分布式消息中间件TubeMQ正式开源&#xff0c;并捐赠给Apache基金会&#xff0c;成为基金会官方认可的Incubator项目。我们知道与TubeMQ功能类似的kafka是领…

[Android]开发摇一摇分歧表决器过程

心血来潮&#xff0c;走进Android&#xff0c;准备开发一个摇一摇分歧表决器&#xff08;PS&#xff1a;这个想法源自去年看的一个都市剧《约会专家》中主人公杭杭开发的分歧表决器APP&#xff09;。简述&#xff1a;摇一摇分歧表决器是一款Android App&#xff0c;通过将传统的…

C和C++安全编码笔记:整数安全

5.1 整数安全导论&#xff1a;整数由包括0的自然数(0, 1, 2, 3, …)和非零自然数的负数(-1, -2, -3, …)构成。 5.2 整数数据类型&#xff1a;整数类型提供了整数数学集合的一个有限子集的模型。一个具有整数类型的对象的值是附着在这个对象上的数学值。一个具有整数类型的对象…

8.3折特惠票仅剩3天!「2019 嵌入式智能国际大会」全日程大公开!

8.3折特惠票仅剩3天立即抢购&#xff1a;https://t.csdnimg.cn/otBk还有5天&#xff0c;大伙期待的「2019嵌入式智能国际大会」正式开幕了&#xff01;2019年12月6日-7日&#xff0c;我们在深圳市人才研修院见&#xff01;大会以“万物互联泛在智能”为主题&#xff0c;邀请30位…

iOS点击空白收回键盘

//点击空白收回键盘 - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { [self.view endEditing:YES]; }

第一个net-mvc程序

结构 视图层 <% Page Language"C#" Inherits"System.Web.Mvc.ViewPage<dynamic>" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">…

iOS 储存用户信息设置封装 直接调用即可(部分是代码片段)

、、、、、、、、、、、、、、、、、、首先 定义 UserInfo #import <Foundation/Foundation.h> interface UserInfo : NSObject //用户id property (nonatomic, strong) NSString *userID; //用户名 property (nonatomic, strong) NSString *userName; //密码 propert…

ASN.1简介及OpenSSL中ASN.1接口使用举例

ASN.1(Abstract Syntax Notation One)是一套标准&#xff0c;是描述数据的表示、编码传输、解码的灵活的记法。它提供了一套正式、无歧义和精确的规则以描述独立于特定计算机硬件的对象结构。OpenSSL的编码方法就是基于该标准。ASN.1是一种结构化的数字对象描述语言&#xff0c…

谁是当今最顶级的技术?SQL、Java、Python、C++ 皆上榜!

【12月公开课预告】&#xff0c;入群直接获取报名地址12月11日晚8点直播主题&#xff1a;人工智能消化道病理辅助诊断平台——从方法到落地12月12日晚8点直播&#xff1a;利用容器技术打造AI公司技术中台12月17日晚8点直播主题&#xff1a;可重构计算&#xff1a;能效比、通用性…

将表里的数据批量生成INSERT语句的存储过程 增强版

原文:将表里的数据批量生成INSERT语句的存储过程 增强版将表里的数据批量生成INSERT语句的存储过程 增强版 有时候&#xff0c;我们需要将某个表里的数据全部或者根据查询条件导出来&#xff0c;迁移到另一个相同结构的库中 目前SQL Server里面是没有相关的工具根据查询条件来生…

通过OpenSSL的接口实现Base64编解码

对openssl genrsa产生的rsa私钥pem文件&#xff0c;使用普通的base64解码会有问题&#xff0c;如使用https://blog.csdn.net/fengbingchun/article/details/85218653 中介绍的方法&#xff0c;一是有可能不能从返回的结果中直接使用strlen来获得最终字符的大小&#xff0c;因为…

激辩:机器究竟能否理解常识?

【12月公开课预告】&#xff0c;入群直接获取报名地址12月11日晚8点直播主题&#xff1a;人工智能消化道病理辅助诊断平台——从方法到落地12月12日晚8点直播&#xff1a;利用容器技术打造AI公司技术中台12月17日晚8点直播主题&#xff1a;可重构计算&#xff1a;能效比、通用性…

Mac OS X 下Node.js开发环境的搭建

1.安装Xcode2.安装Homebrew 谷歌搜索Homebrew 复制命令行 打开终端 粘贴命令行 点击回车 安装 输入密码等2.安装Nodejs利用Homebrew安装nodejs打开终端 输入 &#xff1a;brew install nodejs 回车查询nodejs版本&#xff1a;node --version3.安装文档数据库 MongoDB打开终…

.NET 使用 MySql.Data.dll 动态库操作MySql的帮助类--MySqlHelper

.NET 使用 MySql.Data.dll 动态库操作MySql的帮助类--MySqlHelper 參考演示样例代码&#xff0c;例如以下所看到的&#xff1a; /// <summary>/// MySql 数据库操作类/// </summary>public class MySqlHelper{/// <summary>/// MysqlConnection/// </summ…

Instagram个性化推荐工程中三个关键技术是什么?

作者 | Ivan Medvedev&#xff0c;Haotian Wu&#xff0c;Taylor Gordon译者 | 陆离编辑 | Jane出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09; 【导语】近期&#xff0c;Facebook 在博客上分享了第一篇详细介绍 Explore 系统关键技术&#xff0c;以及 I…