一些自己对EfficientDet的理解、总结以及实验

目录

1.EfficientDet网络结构

1.1 主干网络

1.2 BiFPN

1.3 输出端

2.实验及分析

2.1 实验平台

2.2 数据集介绍

2.3 评价指标

2.4 实验结果


1.EfficientDet网络结构

EfficientDet是在EfficientNet基础上提出来的目标检测模型,它将EfficientNet主干网络、级联的双向特征金字塔网络(bi-directional feature pyramid network,BiFPN)和联合缩放方法结合,可以快速高效完成目标检测,且检测准确率较高,同时网络参数量较之主流检测模型大幅减少,检测速度也得到了很大提升,是目前最先进的目标检测算法之一。EfficientDet是将EfficientNet的复合缩放思路进行延伸,把架构决策明确为了可拓展框架为不同的使用场景提供了D0-D7共8种模型,使用者可根据真实环境中软硬件的性价比与对精度和效率的实际需求,来对模型进行选择。EfficientDet D0-D7网络越来越深,输入分辨率也越来越大,精度越来越高的同时,计算量也越来越大。EfficientDet网络的整体架构如图1所示,是一个端到端的网络,以EfficientNet为主体网络,BiFPN作为特征网络接收来自主干网络的特征并对其进行双向特征融合,最后将融合特征送入分类和边框回归网络,输出目标的类别及位置信息实现目标检测。

图1 Efficientdet-d0算法网络结构图

1.1 主干网络

骨干特征提取网络对输入图片通过不断的下采样的得到P1-P7的特征层,P1、P2只是简单的下采样,不具有较高的语义信息,不参与后面的加强特征提取网络。而P3-P7称之为有效层,继续传入后面的加强特征提取网络进行特征提取。以Efficientnet-b0为例,网络架构如表1所示,Stage1是一个卷积核大小为3×3的普通卷积层,其中包含批量标准化(batch normalization, BN)和Swish激活函数。Stage2~Stage8都是在重复堆叠MBConv结构。Stage9由一个普通的1×1的卷积层,一个平均池化层和一个全连接层组成。如图3所示,MBConv正是Efficientnet的核心部分,总体的设计思路是倒转残差结构(inverted residuals),在3×3或者5×5深度可分离卷积结构前利用1×1卷积升维,在深度可分离卷积后增加了SENet(squeeze-and-excitation networks),最后利用1×1卷积降维后增加一个残差边。

表1 Efficientnet-b0的网络架构

图2 MBConv结构

1.2 BiFPN

BiFPN是从最初是从特征金字塔网络(feature pyramid network,FPN)发展过来的。最早的检测器只是在特征提取的最后一层进行类别和位置的预测,如图3中(a)所示,FPN首次通过自顶而下的方式将不同层融合在一起,实现了多尺度,它的出现验证了不同层之间特征融合的重要性。之后又出现了基于FPN改造生成的路径聚合网络(path aggregation network, PANet),他相比于FPN又增加了自底向上的路径,更好的保留了浅层特征信息。PANet充分结合了高层特征与低层特征,结构如图3中(b)所示,检测效果比FPN更好,但是也增加了计算量。上面的检测器均为手工设计,为了发现更好的FPN架构,Golnaz Ghaisi等人充分利用神经网络搜索技术(Neural architecture search with rein-forcement learning, NAS-FPN),使用强化学习训练了一个控制器来在给定的搜索空间中选择最好的模型结构。如图3中(b)所示,NAS-FPN不仅包含了自顶而下和自顶而上的连接结构,还可以跨范围地融合特性,通过将不同尺度的特征组合在一起来提升检测的准确率。BiFPN是在PANet的基础上结合NAS-FPN的思想进行设计。

如图3中(d)所示,BiFPN将EfficientNet中的P3-7的输入特征开始不断的做自顶而下以及自底而上的特征融合并加入以下优化:(1)删除那些只有一个输入边的节点。它将对旨在融合不同特征的特征网络贡献较小,这将导致简化的双向网络。(2)若原始输入与输出节点处于同一级别时,向它们之间增加一条额外的边,以便在不增加成本的情况下融合更多功能;(3)与PANet仅具有一个自上而下和一个自下而上的路径不同,BiFPN将每个双向(自上而下和自下而上)路径视为一个要素网络层,并重复相同的层多次以启用更多高级功能融合。同时引入类似注意力机制的可学习权重,使网络在训练过程中可以自动学习各层的重要性。

图3 不同的FPN结构

1.3 输出端

将BiFPN层得到的五层有效特征层传输过ClassNet+BoxNet就可以获得预测结果。以EfficientDet D0为例,ClassNet采用3次64通道的卷积和1次num_anchors*num_classes的卷积,num_anchors指的是该特征层所拥有的先验框数量,num_classes指的是网络一共对多少类的目标进行检测。BoxNet采用3次64通道的卷积和1次num_anchors*4的卷积,num_anchors指的是该特征层所拥有的先验框数量,4指的是先验框的调整情况。其中:num_anchor*4的卷积用于预测该特征层上每一个网格点上每一个先验框的变化情况。num_anchors*num_classes的卷积用于预测该特征层上每一个网格点上每一个预测框对应的种类。

2.实验及分析

2.1 实验平台

本次实验的操作系统为windows10,CPU型号为CPU 为 Intel Xeon Silver 4210R 主频 2.4 GHz,运行内存为64GB。GPU型号为NVIDIA 3090,显存大小为8GB,内存大小为24GB。模型训练环境是基于Pytorch深度学习框架,编程语言为Python3.8,使用CUDA 11.3.1和CUDNN 8.2.1对GPU进行加速。

2.2 数据集介绍

模型在以下自制数据集中进行训练。

实验数据集面向低空飞行的弱小飞机目标检测应用,通过外场实地拍摄和数据准备加工,提供了一套以一架或多架固定机翼无人机目标为探测对象的算法测试数据集。包含有22个数据段,每个红外数据段的原始数据为视频格式,在数据预处理阶段将每个数据段的视频格式数据转换为8bit位深的windows位图格式的多文件的图像序列。数据集获取场景涵盖了天空、地面等背景以及多种场景,图像尺寸为256*256,共计16177帧图像、16944个目标,每个目标对应一个标注位置,每段数据对应一个标注文件。

2.3 评价指标

使用目标检测领域常用的平均精度(average precision, AP)、平均精度均值(mean average precision, mAP)来评价算法的检测效果,其中AP反映了单一类别的检测效果,其计算公式为

式中:p(r)表示某个召回率r对应的查准率p的值,即p(r)表示两者的映射关系。查准率p和召回率r的计算公式如下:

式中:表示正样本被预测正确的数量,表示负样本被预测为正样本的数量,表示正样本被预测为负样本的数量。根据不同的召回率r计算出对应的查准率p,而AP为不同的召回率和查准率围成的曲线面积。平均精度均值mAP为每类AP的平均值,可以反映模型整体的检测性能。

2.4 实验结果

对于数据地/空背景下红外图像弱小飞机目标检测跟踪数据集,用了YoloV5s、Centernet、Retinanet以及SSD-300进行训练对比。由表1可以看出EfficientDet D0比其余模型的参数量和计算量小很多,但是精度远不如YoloV5s、Centernet和SSD-300,与Retinanet相差无几。

表1 不同算法检测结果比较

Model

AP/%

Params(M)

GFLOPs

EfficientDet D0

48.49

3.69

2.37

YoloV5s

73.91

7.18

16.7

Centernet

59.58

32.7

3.8

Retinanet

47.02

36.4

58.2

SSD-300

58.51

23.7

35.2

对于空中背景下不同飞行姿态的红外飞机图像数据集,用了Faster R-CNN、SSD300、SSD500、YOLOv3和EfficientDet D0进行对比。由表2可以看出EfficientDet D0的平均预测精度要优于Faster R-CNN和SSD-300,但是和SSD-500和YOLOv3还有一定差距。但是和其他几种算法相比,EfficientDet D0的Params和FLOPs明显小,对于不同网络而言,处理每张图片所需的FLOPs是不同的,所以同一硬件处理相同图片所需的FLOPs越小,相同时间内,就能处理更多的图片,速度也就越快,所以EfficientDet D0具有较好的实时性。

表2 不同算法检测结果比较

Model

mAP/%

Params(M)

GFLOPs

EfficientDet D0

79.70

3.69

2.37

Faster R-CNN

72.90

88.0

SSD-300

78.88

23.7

35.2

SSD-500

86.20

YOLOv3

90.80

61.5

154.9

EfficientDet实验笔记相关推荐

  1. 深度学习入门教程UFLDL学习实验笔记三:主成分分析PCA与白化whitening

     深度学习入门教程UFLDL学习实验笔记三:主成分分析PCA与白化whitening 主成分分析与白化是在做深度学习训练时最常见的两种预处理的方法,主成分分析是一种我们用的很多的降维的一种手段,通 ...

  2. 深度学习入门教程UFLDL学习实验笔记一:稀疏自编码器

     深度学习入门教程UFLDL学习实验笔记一:稀疏自编码器 UFLDL即(unsupervised feature learning & deep learning).这是斯坦福网站上的一篇 ...

  3. 考oracle ocm,Oracle数据库OCM考试系列教程与总结_OCM考试实验笔记

    oracle数据库OCM考试系列教程与总结_OCM考试实验笔记 以下包括OCM考试系列的文章,在以下各章节中基本的内容都已经涉及到,在这些文章中,将对之前的OCM考试系列文章进行汇总,对一些之前没提到 ...

  4. CS144 lab4 计算机网络实验 笔记

    CS144 lab4 计算机网络实验 笔记 介绍 本实验中,我们将组合TCP sender和TCP receiver实现一个完整的TCP connection TCP是全双工连接,所以两方可以同时接收 ...

  5. 【Packet Tracer 实验笔记5】

    [测试目的] 1.拓扑配置:交换机为各个VLAN提供统一的Trunk链路实现VLAN成员的跨交换机通信 2.实验目的:了解跨交换机VLAN的内部主机之间通信机制 3.测试方法:PC3 ----ping ...

  6. Cisco VTP protocol   实验笔记

    Cisco  VTP protocol    实验笔记 实验目标: 使用vtp(vlan trunk protocol 虚拟局域网中继协议)实现交换机之间相互传递vlan信息.实现vlan的统一配置及 ...

  7. 单片机实验笔记(汇编、Proteus仿真)(下)

    接上一条单片机实验笔记(汇编.Proteus仿真) 第五节课 第五节课 内容为驱动多位数码管.和驱动一位数码管大同小异. ORG 0000H LJMP MAINORG 0100H MAIN: MOV ...

  8. CVE 2013-2094 exploit 实验笔记

    CVE 2013-2094 exploit 实验笔记 1. links 2. 实验流程 2.1 安装ubuntu64 虚拟机 2.2 编译 2.6.38 内核 2.3 开始exploitation 3 ...

  9. 视频理解论文实验笔记2014-2022

    视频理解论文实验笔记 看了李沐团队的视频,其中关于视频理解的串讲(上集 下集)讲的太好了,按照他的顺序看了这些论文,并做了重点针对实验部分的笔记 文章目录 视频理解论文实验笔记 2D Base cvp ...

  10. ROS实验笔记之——Intel Realsense l515激光相机的使用

    最近实验室购买了Intel Realsense l515相机.本博文记录使用过程~ 驱动安装 先到官网安装驱动:https://github.com/IntelRealSense/realsense- ...

最新文章

  1. JMeter学习(十)内存溢出解决方法
  2. 《深入理解java虚拟机》笔记1——Java内存区域与Java对象
  3. php+json对象格式,PHP 创建对象来输出 JSON 格式
  4. 基于贝叶斯决策理论的分类器
  5. TRUNCATE vs DELETE命令
  6. 设计模式1——设计模式的原则
  7. 帝国CMS核心文件简要描述
  8. 「Vijos 1285」「OIBH杯NOIP2006第二次模拟赛」佳佳的魔法药水
  9. 【C012】Python - 基础教程学习(三)
  10. cassendra数据模型
  11. python实现语义分割_如何用PyTorch进行语义分割?一文搞定
  12. eclipse查看jar包源码(反编译)
  13. 亿图图示最新po解直装版(附教程)
  14. 计算机进制转换练习,二进制十进制八进制十六进制转换练习题.docx
  15. 腾讯微博qq说说备份导出工具_10年过去了,腾讯微博终于被判了死刑。。。
  16. 投影幕布jsp_发现篇:亿立投影幕布真实使用感受诉说不看后悔 | 智能扫地机器人评测...
  17. 某辆汽车有一个里程表,该里程表可以显示一个整数,为该车走过的公里数。然而这个里程表有个毛病:它总是从3变到5,而跳过数字4,里程表所有位(个位、 十位、百位等)上的数字都是如此
  18. 封装class,让className可以在IE8及其以下版本的浏览器中使用
  19. python split()函数
  20. 视频号的播放量和互动率、完播率密不可分

热门文章

  1. 本地差分隐私 随机响应_本地化差分隐私:如何面对非可信的世界
  2. relativePath
  3. 从0开始编写minecraft光影包(0)GLSL,坐标系,光影包结构介绍
  4. ccf---导弹防御系统
  5. Jzoj5444【NOIP2017提高A组冲刺11.2】救赎
  6. 河海大学计算机网络毕业设计,河海大学文件-河海大学毕业设计.doc
  7. 台式电脑添加共享计算机,台式电脑怎么设置wifi共享
  8. An illegal reflective access operation has occurred警告
  9. A JNI error has occurred, please check your installation and try again
  10. Python 爬取“微博树洞”详细教程