CBNet(AAAI 2020)论文解析

news/2024/7/27 8:50:18/文章来源:https://blog.csdn.net/ooooocj/article/details/136632264

paper:CBNet: A Novel Composite Backbone Network Architecture for Object Detection

official implementation:GitHub - VDIGPKU/CBNet_caffe: Composite Backbone Network (AAAI20)

背景

一般来说,在基于CNN的目标检测模型中,用于提取检测对象基本特征的骨干网络通常是为图像分类任务设计的,并在ImageNet数据集上进行预训练。如果一个骨干网能够提取出更多的表示特征,那么检测模型相应地也会表现得更好。换句话说,一个更强大的backbone可以带来更好的检测性能。

但通过设计一个新的更强大的骨干网络并在ImageNet上预训练来获得更好的检测性能,代价很大。并且由于几乎所有现有的骨干网络最初都是针对分类任务设计的,直接使用它们提取基本特征进行目标检测可能只能得到次优的性能。

本文的创新点

本文提出了一种新的方法,通过聚合多个相同的backbone来构建一个更强大的针对目标检测的骨干网络,称为复合骨干网络(Composite Backbone Network, CBNet),显著提高了各种检测模型的性能。

方法介绍

Architecture of CBNet

CBNet的结构由 \(K(K\ge2)\) 个相同backbone组成。为了简便起见,K=2的情况称为Dual-Backbone(DB),K=3的情况称为Triple-Backbone(TB)

如图1所示,CBNet包含两种backbone,Lead Backbone \(B_{K}\) 和Assistant Backbones \(B_1,B_2,...,B_{K-1}\)。每个backbone包含 \(L\) 个stage(通常L=5),每个stage包含若干个卷积层。backbone的第 \(l\) 个stage实现一个非线性变换 \(F^{l}(\cdot)\)。

在传统的只有一个backbone的网络中,第 \(l\) 个stage以前一个 \(l-1\) stage的输出(记为 \(x^{l-1}\))作为输入,可以表示为

而在CBNet中,我们利用Assistant Backbones \(B_1,B_2,...,B_{K-1}\) 来增强Lead Backbone \(B_{K}\) 的特征,通过迭代的以前一个backbone的输出作为下一个backbone输入的一部分的方式。具体而言,backbone \(B_{K}\) 的第 \(l\) 个stage的输入是 \(B_{K}\) 前一个 \(l-1\) stage的输出(记为 \(x^{l-1}\))和并行的前一个backbone \(B_{K-1}\) 的下一个stage的输出(记为 \(x^{l}_{K-1}\))的融合,表示如下

 

其中 \(g(\cdot)\) 表示复合连接,包括一个1x1卷积和BN层用来减少通道以及一个上采样操作。这种连接将前一个backbone中相邻的更高一层stage的特征输入到下一个backbone中,因此称为Adjacent Higher-Level Composition(AHLC)。

对于目标检测任务,只有Lead Backbone的 \(x^{l}_{K}(l=2,3,...,L)\) 输入到RPN或检测head中。而Assistant Backbone每个stage的输出只输入到相邻下一个backbone中。此外,CBNet中的骨干可以采用各种骨干结构,并可以直接用单个backbone的预训练模型进行初始化。

Other possible composite styles

Same Level Composition(SLC)一种直观简单的连接是直接融合同一个stage的特征,表示如下 

图3b展示了K=2时的SLC的结构。

Adjacent Lower-Level Composition(ALLC)与AHLC相反,另一种直观的连接方式是将前一个骨干相邻低一级stage的输出特征输入到下一个backbone中,表示如下

 

注意这里论文中的式子有问题,应该是 \(x^{l}_{k}=F^l_k(x^{l-1}_{k}+g(x^{l-2}_{k-1})),l\ge2\)

图3c展示了K=2时的ALLC的结构。

Dense Higher-Level Composition(DHLC)在DenseNet中,每一层到连接到后续所有层从而在一个stage中构建dense connection。受此启发,我们在CBNet中也可以使用密集连接,表示如下

 

如图3d所示,当K=2时,我们聚合Assistance backbones中所有higher-level的特征,并添加到Lead Backbone中前一个stage的输出中。 

实验结果

如表2所示,其中Single表示原始的单个backbone结构,DB表示K=2的CBNet,TB表示K=3的CBNet。可以看到,CBNet显著提高了baseline的精度,无论是在目标检测任务的 \(AP_{bbox}\) 还是在实例分割的 \(AP_{mask}\) 指标上。

Comparisions of different composite styles

表4展示了不同连接方式的性能。首先是SLC,效果比原始的单骨干还差,作者认为这可能是因为SLC结构会带来严重的参数冗余。因为CBNet中两个骨干同一stage提取的特征是相似的,因此SLC不能比使用单一主干学习更多的语义信息。也就是说,网络参数没有得到充分的利用,但给训练带来了很大的困难,导致结果更糟。

而ALLC的效果就更差了,作者推断,如果我们直接将之前主干的较低级(即较浅)特征添加到后续主干的较高层(即较深)特征中,后者的语义信息将受到很大的损害。相反,如果我们将前主干的深层次特征添加到后主干的浅层特征中,后者的语义信息可以得到很大的增强。

最后是ADLC,虽然相比原始单骨干效果得到了提升,但与AHLC相比,它使用了更多的复合连接,却并没有得到比AHLC更好的性能。作者推断,复合主干网络的成功主要在于相邻阶段之间的复合连接,而其他复合连接由于距离太远,并没有丰富太多的特征。

表3展示了CBNet和其它SOTA检测模型的对比

本文提出的CBNet的主要缺点是它会降低推理速度,因为它使用了更多骨干网络来提取特征,从而增加了计算复杂度。如表6所示, DB将FPN的AP提高了1.6%,但检测速度从8.1fps降低到了5.5fps。为了缓解这个问题,作者提出了一个CBNet的加速版本,如图5所示,删除了辅助骨干的两个前期的stage。如表6所示,加速版本显著提高了速度(5.5fps到6.9fps)同时又不会严重影响精度(AP从41.0到40.8)。

 

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

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

相关文章

JAVA-网络编程基础

JAVA-网络编程 01. 网络通信 概念:两台设备之间通过网络实现数据传输网络通信:将数据通过网络从一台设备传输给另一台设备java.net包下提供了一系列类或接口,供程序员使用,完成网络通信 02. 网络 概念:两台设备或…

【PLIO学习总结】laserMapping中的时间戳与状态更新逻辑

本文仅用于个人学习总结记录。如有错误,请批评指正。 0、PLIO简要思路 从PLIO的论文中,可以知道,完整的PLIO算法采用IMU和LiDAR数据同时作为“输入”,维护状态变量包括加速度和角速度。 同时,PLIO是一种distortion-…

300分钟吃透分布式缓存-21讲:Redis读取请求数据后,如何进行协议解析和处理?

Redis 协议解析及处理 协议解析 上一课时讲到,请求命令进入,触发 IO 读事件后。client 会从连接文件描述符读取请求,并存入 client 的 query buffer 中。client 的读缓冲默认是 16KB,读取命令时,如果发现请求超过 1GB…

keycloak18.0.0==前后端分离项目中使用,前端react后端springboot

配置keycloak 启动keycloak18 新建一个realm,名字叫test1 新建两个client,一个用于前端,一个用于后端 第一个 react http://localhost:8081/auth/realms/test1/react/ 第二个 backend-service 在两个client下分别创建role testRole backend-servic…

王道OnlineJudge 14

题目 二叉树层次建树就是一层一层的建树,从左到右。随着纵向层次的深入,结点的数量变化规律为:1→2→4→8→16→32。 先画图,然后看图可闭眼写代码 右边为辅助队列,有多少个二叉树结点,就有多少个辅助队…

构建高效可靠的消息队列系统:设计与实现

✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心哦!✨✨ 🎈🎈作者主页: 喔的嘛呀🎈🎈 目录 一、引言 二、设计目标 2.1、高可用性 1. 集群搭建 1.1 …

万字完整版【C语言】指针详解~

一、前言 初始指针(0):着重于讲解指针的概念、基本用法、注意事项、以及最后如何规范使用指针深入指针(1):讲解指针变量常见的类型,如何去理解这些类型、最后就是如何正确的使用深入指针&#…

详解MySQL的MVCC(ReadView部分解析C++源码)

文章目录 1. 什么是MVCC2. MVCC核心组成(三大件)2.1 MVCC为什么需要三大件 3. 隐藏字段4. undo log4.1 模拟版本链数据形成过程 5. Read View5.1 m_ids5.2 m_creator_trx_id5.3 m_low_limit_id5.4 m_up_limit_id5.5 可见性分析算法 6. MVCC流程模拟6.1 R…

模仿Gitee实现站外链接跳转时进行确认

概述 如Gitee等网站,在有外部链接的时候如果不是同域则会出现一个确认页面。本文就带你看看这个功能应该如何实现。 效果 实现 1. 实现思路 将打开链接作为参数传递给一个中间页面,在页面加载的时候判断链接的域名和当前网站是否同域,同域…

Unity3d C#实现文件(json、txt、xml等)加密、解密和加载(信息脱敏)功能实现(含源码工程)

前言 在Unity3d工程中经常有需要将一些文件放到本地项目中,诸如json、txt、csv和xml等文件需要放到StreamingAssets和Resources文件夹目录下,在程序发布后这些文件基本是对用户可见的状态,造成信息泄露,甚至有不法分子会利用这些…

oracle linux7.9(centos7.9)安装nvidia GPU显卡驱动

一.业务场景 公司服务器配置了nvidia GPU显卡,安装的是oracle linux7.9操作系统,以下是安装GPU显卡驱动的操作。 二.GPU显卡驱动的前安装步骤 1.安装前的依赖软件的安装 yum -y install epel-release kernel-devel dkms gcc备注:利用unam…

MySQL通过SQL语句进行递归查询

这里主要是针对于MySQL8.0以下版本,因为MySQL8.0版本出来了一个WITH RECURSIVE函数专门用来进行递归查询的 先看下表格数据,就是很普通的树结构数据,通过parentId关联上下级关系 下面我们先根据上级节点id递归获取所有的下级节点数据&#x…

day02vue学习

day02 一、今日学习目标 1.指令补充 指令修饰符v-bind对样式增强的操作v-model应用于其他表单元素 2.computed计算属性 基础语法计算属性vs方法计算属性的完整写法成绩案例 3.watch侦听器 基础写法完整写法 4.综合案例 (演示) 渲染 / 删除 / 修…

【性能测试】移动测试md知识总结第1篇:移动端测试课程介绍【附代码文档】

移动测试完整教程(附代码资料)主要内容讲述:移动端测试课程介绍,移动端测试知识概览,移动端测试环境搭建,ADB常用命令学习主要内容,学习目标,学习目标,1. window安装andorid模拟器,学习目标。主流移动端自动…

springboot的maven多模块如何混淆jar包

springboot的maven多模块如何混淆jar包 一.简介二. 示例2.1 基本配置2.2 结果 三. 错误3.1 错误13.2 错误2 四. 参考文章 前言 这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。 作者:神的孩子都在歌唱 一.简介 …

【C语言】字符串函数上

👑个人主页:啊Q闻 🎇收录专栏:《C语言》 🎉道阻且长,行则将至 前言 这篇博客是字符串函数上篇,主要是关于长度不受限制的字符串函数(strlen,strcpy,strcat,strcm…

比特币创造历史新纪录

综合来源:coindesk and cointelegraph 编译:秦晋 3月11日,比特币在亚洲交易时段首次突破71,000美元,这个是比特币创造的价格新纪录。自1月11日比特币现货ETF在美国获批以来,比特币一直在稳步上涨。以太币突破4000美元。…

计算机基础:一些你必须知道的名词详解,必须要会的理论知识

软件测试 计算机基本特点 计算机硬件组成 内存储器和外存储器特点 计算机软件系统组成 常见的操作系统软件 编码 计算机数据计量单位 浏览器 图片类型 网页打开过程 客户端、服务器、请求和响应 dos 命令 软件测试 在规定的条件下对程序进行操作,以发现…

反无人机电子护栏:原理、算法及简单实现

随着无人机技术的快速发展,其在航拍、农业、物流等领域的应用日益广泛。然而,无人机的不规范使用也带来了安全隐患,如侵犯隐私、干扰航空秩序等。为了有效管理无人机,反无人机电子护栏技术应运而生。 目录 一、反无人机电子护栏…

wayland(xdg_wm_base) + egl + opengles 渲染使用纹理贴图的旋转 3D 立方体实例(十三)

文章目录 前言一、使用 stb_image 库加载纹理图片1. 获取 stb_image.h 头文件2. 使用 stb_image.h 中的相关接口加载纹理图片3. 纹理图片——cordeBouee4.jpg二、渲染使用纹理贴图的旋转 3D 立方体1. egl_wayland_texture_cube.c2. Matrix.h 和 Matrix.c3. xdg-shell-client-pr…