FSSD解读

2024-08-24 18:08
文章标签 解读 fssd

本文主要是介绍FSSD解读,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文是SSD的改进版,算是SSD+FPN思想的结合,FSSD: Feature Fusion Single Shot Multibox Detector

Motivation

我在上一篇SSD解读中也介绍了SSD的缺点,SSD虽然是从不同level的feature进行预测,ConvNets提取的特征随着level的增加语义越来越强,但是SSD却把它们当成一样的level,之前在上面去预测,不能充分地利用局部的细节特征和全局的语义特征。然而之前也说过定位和识别是矛盾,我们需要把细节特征(定位)和全局语义(识别)结合起来,所以本文就想着把浅层的细节特征和高层的语义特征结合起来(FPN也是这样的,但本文不和FPN完全一样,下面会介绍)

Approach

Feature Fusion

这里写图片描述

这张图在FPN里面也有一张类似的,
1. (a) image pyramid
2. (b) rcnn系列,只在最后一层feature预测
3. (c) FPN,语义信息一层传递回去,而且有很多相加的计算
4. (d) SSD,在各个level的feature上直接预测,每个level之间没联系
5. (e) 本文的做法,把各个level的feature concat,然后从fusion feature上生成feature pyramid

Architecture

这里写图片描述

  1. base model和SSD基本一致,只是在把Conv6_2的步长从2调到了1,这样conv7_2和Conv6_2一样也是10*10,因为论文中说他们认为小于10的feature 能够合并的信息量太少了(他们本来也merge了conv3 3,但是后面实验证明没什么用就去掉了)
  2. 把Conv4_3 FC7 Conv7_2这三层用1x1降维到256(和fpn一样),然后FC7 Conv7_2双线性插值到和Conv4_3一样大小的38x38,然后cat起来(是否加bn后面也有对比)成fusion feature,论文中也试了加起来效果会差点
  3. 如何从fusion feature生成feature pyramid也有多种方案

这里写图片描述

In (a), we only detect objects on the feature maps after the fusion feature map. In (b), the fusion feature map takes part in the object detection. 我猜测论文这句写反了

(a)是把fusion feature也用与预测了,(b)是不用fusion feature,(c)是把b中的简单的conv和relu换成了一个bottleneck效果更差了

这里写图片描述

Experiments

看到bn的作用,以及conv3_3并没有什么用,cat比sum好一些,但是我感觉实验不是十分完备,第2行和第3行只有conv3_3这个变量,没有它反而提高了,但是第5行初始化模型不一样加了Conv3_3也是最高,很蛋疼。而且最后一行的相加,是不是还得有一个没Conv3的cat,还有从vgg初始化开始。作者这是给自己挖一个坑,需要组合很多变量一一测试结果。

这里写图片描述

特别注意: GPU不同,刚开始我还以为它加了计算怎么速度还快了

这里写图片描述

这里是用1080 Ti测试SSD和FSSD,然后反推到FSSD在Titan X的速度

这里写图片描述

Qualitative

第1列SSD会重复检测一个物体的多个part,第2列SSD会把多个物体合并成一个物体。第3-6列SSD漏了很多小物体,而FSSD都能减少这3类错误。

这里写图片描述


参考:
lzx1413/PytorchSSD
amdegroot/ssd.pytorch

这篇关于FSSD解读的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1103220

相关文章

解读GC日志中的各项指标用法

《解读GC日志中的各项指标用法》:本文主要介绍GC日志中的各项指标用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、基础 GC 日志格式(以 G1 为例)1. Minor GC 日志2. Full GC 日志二、关键指标解析1. GC 类型与触发原因2. 堆

Java设计模式---迭代器模式(Iterator)解读

《Java设计模式---迭代器模式(Iterator)解读》:本文主要介绍Java设计模式---迭代器模式(Iterator),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录1、迭代器(Iterator)1.1、结构1.2、常用方法1.3、本质1、解耦集合与遍历逻辑2、统一

MySQL之InnoDB存储页的独立表空间解读

《MySQL之InnoDB存储页的独立表空间解读》:本文主要介绍MySQL之InnoDB存储页的独立表空间,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、独立表空间【1】表空间大小【2】区【3】组【4】段【5】区的类型【6】XDES Entry区结构【

MySQL主从复制与读写分离的用法解读

《MySQL主从复制与读写分离的用法解读》:本文主要介绍MySQL主从复制与读写分离的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、主从复制mysql主从复制原理实验案例二、读写分离实验案例安装并配置mycat 软件设置mycat读写分离验证mycat读

Python的端到端测试框架SeleniumBase使用解读

《Python的端到端测试框架SeleniumBase使用解读》:本文主要介绍Python的端到端测试框架SeleniumBase使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录SeleniumBase详细介绍及用法指南什么是 SeleniumBase?SeleniumBase

Nacos注册中心和配置中心的底层原理全面解读

《Nacos注册中心和配置中心的底层原理全面解读》:本文主要介绍Nacos注册中心和配置中心的底层原理的全面解读,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录临时实例和永久实例为什么 Nacos 要将服务实例分为临时实例和永久实例?1.x 版本和2.x版本的区别

C++类和对象之默认成员函数的使用解读

《C++类和对象之默认成员函数的使用解读》:本文主要介绍C++类和对象之默认成员函数的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、默认成员函数有哪些二、各默认成员函数详解默认构造函数析构函数拷贝构造函数拷贝赋值运算符三、默认成员函数的注意事项总结一

MySQL的ALTER TABLE命令的使用解读

《MySQL的ALTERTABLE命令的使用解读》:本文主要介绍MySQL的ALTERTABLE命令的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、查看所建表的编China编程码格式2、修改表的编码格式3、修改列队数据类型4、添加列5、修改列的位置5.1、把列

Linux CPU飙升排查五步法解读

《LinuxCPU飙升排查五步法解读》:本文主要介绍LinuxCPU飙升排查五步法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录排查思路-五步法1. top命令定位应用进程pid2.php top-Hp[pid]定位应用进程对应的线程tid3. printf"%

解读@ConfigurationProperties和@value的区别

《解读@ConfigurationProperties和@value的区别》:本文主要介绍@ConfigurationProperties和@value的区别及说明,具有很好的参考价值,希望对大家... 目录1. 功能对比2. 使用场景对比@ConfigurationProperties@Value3. 核