行为分析(九):人形检测部分(二):YOLO系、RCNN系、SSD系、EfficicnetDet系、Transformer系目标检测模型对比

2023-11-10

将模型进行对比,试着描述一下不同系列模型的根本差异与各自的优缺点,会更有益记忆。
SSD论文:https://arxiv.org/pdf/1512.02325.pdf
YOLOv4论文:https://arxiv.org/pdf/2004.10934v1.pdf
EfficicnetDet论文:https://arxiv.org/pdf/1911.09070.pdf
DETR论文:https://ai.facebook.com/research/publications/end-to-end-object-detection-with-transformers

YOLO系和RCNN系的区别

这两个系的区别就应该是One-stage和Two-stage的区别

YOLO和SSD属于One-stage类型的算法,其主要思路就是均匀地在input image上不同位置进行密集抽样,抽样时可以采用不同尺度和长宽比,然后利用backbone CNN提取特征后直接进行分类和回归,整个过程只需要一步,所以优势在于速度快,但是均匀密集采样的一个重要缺点就是训练比较困难,这主要是因为正样本和负样本极度不均衡,导致模型准确度比较低。另外还有些模型各自的缺点之后再说。

RCNN、SSP-Net、Fast RCNN、Faster RCNN均属于Two-stage,都是利用选择性搜索算法(SS)或者利用backbone CNN获取特征图然后通过region proposal network获取anchor box,然后再分类和回归,Two-stage即先得到region proposal,然后再分类回归。另外还有些模型各自的缺点之后再说。

One-stage和Two-stage相比也可以说YOLO的缺点:虽然每个格子可以预测B个bounding box,但是最终只选择只选择IOU最高的bounding box作为物体检测输出,即每个格子最多只预测出一个物体。当物体占画面比例较小,如图像中包含畜群或鸟群时,每个格子包含多个物体,但却只能检测出其中一个。这是YOLO方法的天生缺陷。

YOLO系和SSD系的区别

YOLO系在上篇文章(行为分析(六):人形检测部分(一):YOLOv1-v5的学习笔记_是魏小白吗的博客-CSDN博客_yolov5提升精度)中我们已经详细的分析过了:将输入图像划分为S*S(最终feature map的大小)个grid cell,每一个cell预测B个bounding boxes,以及C个类别概率。训练过程中,ground truth的中心落在哪个grid cell中,那个grid cell就负责预测这个ground truth框。

SSD也是一种非常优秀的one-stage目标检测方法,One-stage算法就是目标检测和分类是同时完成的,其主要思路是利用CNN提取特征后,均匀地在图片的不同位置进行密集抽样,抽样时可以采用不同尺度和长宽比,物体分类与预测框的回归同时进行,整个过程只需要一步,所以其优势是速度快。但是均匀的密集采样的一个重要缺点是训练比较困难,这主要是因为正样本与负样本(背景)极其不均衡,导致模型准确度稍低。SSD论文中采用的主干网络是VGG网络:

watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5piv6a2P5bCP55m95ZCX,size_20,color_FFFFFF,t_70,g_se,x_16

文中给出SSD网络架构的同时也给出了YOLO和SSD基本结构的根本性不同:SSD 模型在基础网络的末端添加了几个特征层,用于预测不同尺度和纵横比的默认框的偏移量及其相关的置信度。通俗的理解就是:

第一,SSD提取了不同尺度的特征图来做检测,大尺度特征图可以用来检测小物体,而小特征图用来检测大物体(虽然这只是一种期望,但确实多尺度有一定道理)

第二,SSD采用了不同尺度和长宽比的先验框,在faster r-cnn中称为Anchors。YOLOv1(注意时间线,这时候对比的应该是v1版本)算法缺点是难以检测小物体,而且定位不准,但是对于这几点,SSD在一定程度上克服这些缺点

第三,这点上面没有提到但是要说一下,SSD相比于YOLOv1的小目标检测准确率要高些,但是YOLOv4的对小目标检测的准确率高出了SSD很多,这并不是说YOLO系列已经解决了小目标的检测这一缺陷。而是要将同时期base SSD的模型和base YOLO的模型相对比。比如将EfficinetDet和YOLOv3相比,YOLO对于小模型的检测仍然是稍逊一筹的,这是由YOLO的结构天生决定的。

EfficinetDet系的独特性

要说明一点,EfficinetNet应该是base SSD系的,理由如下

首先谷歌大脑提出了EfficientNets,然后提出了BiFPN,将其结合就诞生了EfficicnetDet

BiFPN是一个双向的、可加权的FPN:BiFPN是从 FPN 发展过来的原始的FPN实现的自顶向下(top-down)融合,所谓的BiFPN就是两条路线既有top-down也有down-top。在融合过程中,之前的一些模型方法没有考虑到各级特征对融合后特征的g共享度问题,即之前模型认为各级特征的贡献度相同,而本文作者认为它们的分辨率不同,其对融合后特征的贡献度不同,因此在特征融合阶段引入了weight。

watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5piv6a2P5bCP55m95ZCX,size_20,color_FFFFFF,t_70,g_se,x_16EfficientNets自然而然的就可以结合成一个目标检测网络EfficinetDet,结构如下

watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5piv6a2P5bCP55m95ZCX,size_20,color_FFFFFF,t_70,g_se,x_16

从 EfficinetDet我们可以验证上面提到的结论,EfficinetDet的确应该是属于SSD系的,突出的各尺度(各等级)特征的抽取和融合。不同的是EfficinetDet的backbone是EfficiNets以及BiFPN的加入

Transformer系与其他系

Transformer系与其他几个系相比,更多的是利用和突出Transformer这个backbone的特性与优势

DETR

基于Transformer的目标检测任务做的最出色的是Facebook的DETR

watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5piv6a2P5bCP55m95ZCX,size_20,color_FFFFFF,t_70,g_se,x_16

图2:DETR使用传统的CNN主干来学习输入图像的2D表示。该模型将其展平,并在将其传递到Transformer编码器之前用位置编码对其进行补充。然后,Transformer解码器将少量固定数量的学习位置嵌入作为输入,我们对这些位置嵌入进行查询,并额外处理编码器输出。我们将解码器的每个输出嵌入传递到一个共享前馈网络(FFN),该网络预测一个检测(类和边界框)或一个“无对象”类。

Prediction feed-forward networks (FFNs):最终的预测由一个具有RELU激活函数和隐维数的三层感知器和一个线性投影层来计算。FFN预测归一化中心坐标、长方体的高度和宽度。输入图像,并且线性层使用Softmax函数预测类别标签。由于我们预测了一组固定大小的N个边界框,其中N通常比图像中感兴趣的对象的实际数量大得多,所以使用附加的特殊类别标签∅来表示在槽内没有检测到对象。在标准的目标检测方法中,这个类扮演着类似于“背景”类的角色。

Toward Transformer-Based Object Detection

这是另外一种比较有趣的思路

watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5piv6a2P5bCP55m95ZCX,size_20,color_FFFFFF,t_70,g_se,x_16图 1:我们提出利用Vision Transformer主干,通过最终Transformer 层中的per-patch输出来执行对象检测。 通过在空间上重新解释这些输出,我们创建了一个特征图,自然地将自己作为检测模型的输入送入模型,模型产生类别预测并回归box的坐标。 由此产生的模型 ViT-FRCNN 实现了强大的性能,同时展示了基于Transformer模型的许多理想特性。

以下内容仅是突发奇想
YOLO系列或者说One-stage系列对于小目标检测的效果一直不太好,能否借鉴Transformer这种将一张大图片分割成很多的小图片,然后送入网络。可能会被问到一个问题:如果我们正好切割到了目标物体该怎么办?这个问题其实忽略了一个问题,我们将图片切分成N个patch送入网络去预测,是为了放大每个patch以便突出小物体,但是最后在预测阶段仍然是在整张图片上进行回归物体类别与box的坐标值也就是物体位置。

参考

链接1:SSD算法精度 - nanmi - 博客园
链接2:目标检测(YOLO,SSD,Efficientdet,RCNN系列)_不会写作文的李华的博客-CSDN博客_efficientdet和yolo
链接3:EfficientDet_ResneSt_YOLOV4_baidu_36557924的博客-CSDN博客_efficientdet和yolov4
链接4:ViT-FRCNN:面向基于Transformer的目标检测_Amusi(CVer)的博客-CSDN博客_vit目标检测
链接5:源码解析目标检测的跨界之星DETR(一)、概述与模型推断 - 简书

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

行为分析(九):人形检测部分(二):YOLO系、RCNN系、SSD系、EfficicnetDet系、Transformer系目标检测模型对比 的相关文章

  • 高内聚与低耦合实现小记

    总所周知 实际软件开发中要实现高内聚 低耦合的设计原则 c语言和c 不同 c语言面向过程 c 面向对象 真正的项目中 要对业务升级 原来的业务函数需要保留 要保证老的功能继续维持 不能直接删除 这时候 c语言面向过程 通常使用回调的方法 c
  • 为什么面试狂问Redis,阿里面试官把我问到哑口无言…

    Redis在国内各大公司都很热门 比如新浪 阿里 腾讯 百度 美团 小米等 Redis也是大厂面试最爱问的 尤其是Redis客户端 Redis高级功能 Redis持久化和开发运维常用问题探讨 Redis复制的原理和优化策略 Redis分布式
  • Delegate总结

    关于Delegate已经写了很多 现总结如下 一 一条线是观察delegate从 net framework 1 1 到目前为止4 5的变迁 例如如果你用delegate来模拟事件 你需要自己 Add member to the invoc
  • 辅助信息服务器,我开启了辅助核算 要去哪里增加新的辅助信息?

    亲 您好 亿企代账提供三种辅助核算 应收账款 预收账款科目启用 客户 核算 应付账款 预付账款科目启用 供应商 核算 库存商品 原材料等科目启用 存货 核算 如果需要增加辅助信息 可按以下两种方法操作 方法一 在 设置 辅助设置 客户 处添
  • vue函数定义的多种写法

    vue定义方法 methods a e c alert aaa a e c alert aaa a function e c alert aaa 在JS中箭头函数根据是否书写大小括号可分为以下四种情况 不省略 const fun value
  • RocketMQ Rebalance流程分析

    这节介绍Rebalance流程 在介绍Consumer消费消息流程前 先介绍Rebalance得流程 该过程涉及到Consumer的启动 之前介绍过 Topic是一个逻辑概念 Topic下可以划分多个Queue以增加Consumer消费的并
  • react+antd+vscode的运行环境搭建

    初学者 在学着做一个前端项目 有时候要换新电脑 或者重装系统 前端代码就不能用了 解决时候总是忘记还遇到麻烦 记录一下 按步骤来吧 也不知道对不对 先这样用着 1 下载vscode 就去官网下就完事 好像点下载会根据电脑的系统版本位数啥的下
  • 接口测试&管理续集

    今天应大家需要 接着谈app端数据返回层面的用例设计方法 第二部分给大家安利一个 接口管理平台 以帮助大家解决接口文档维护 接口测试数据Mock 接口自动化测试等问题 希望对小伙伴们有用 言归正传 进入今天的话题 一 用例设计 查漏补缺 数
  • Python网络爬虫之js逆向之远程调用(rpc)免去抠代码补环境简介

    点击上方 Python共享之家 进行关注 回复 资源 即可获赠Python学习资料 今 日 鸡 汤 折戟沉沙铁未销 自将磨洗认前朝 大家好 我是黑脸怪 这篇文章主要给大家介绍jsrpc 方便大家日后在遇到JS逆向的时候派上用场 前言 jsr
  • Unity编辑器拓展(一)实现快速制作书本效果插件

    目录 前言 自定义窗口实现使用的方法 效果演示 前言 Unity自定义书本编辑器窗口 书本功能实现参考教程 Unity代码实现翻书效果 自定义窗口实现使用的方法 EditorWindow GetWindow EditorGUILayout
  • 数据库学习(6)MySQL数据库DDL——索引

    MySQL数据库DDL 索引 创建索引 添加与删除索引 索引的使用原则 数据排序的好处 一旦数据排序之后 查找的速度就会翻倍 现实世界跟程序世界都是如此 创建索引 CREATE TABLE 表名称 INDEX 索引名称 字段 注 排序方法为
  • ToDesk远程控制

    实现远程控制有多简单 https www todesk com download htmlhttps www todesk com download htmlhttps www todesk com download html 电脑浏览器打
  • vue-pdf使用+分页预览+第一查看正常,第二次查看空白解决方案

    重点提示 全网通用pdf查看的功能都是使用vue pdf这个插件 除了各种坑外 最致命的一点就是 它的npm包有一个Bug 在第一次查看之后 再次查看 页面会空白并报错 Error during font loading Failed to
  • jsp、freemarker、velocity、thymeleaf页面方案分析

    1 概述 在java领域 表现层技术主要有三种 1 jsp 2 freemarker 3 velocity 4 thymeleaf 2 jsp 优点 1 功能强大 可以写java代码 2 支持jsp标签 jsp tag 3 支持表达式语言
  • Kattis Doors

    Problem open kattis com problems doors vjudge net contest 183886 problem B Reference 点到线段的最短距离算法 Meaning 有两个球 Alex 和 Bob
  • FastDFS性能调优 know how

    FastDFS性能调优 本篇文章转载于FastDFS作者 余庆 大佬的 FastDFS分享与交流 公众号 众所周知 软件性能调优不是一撮而就的事情 它是一个反复磨合的过程 下面介绍FastDFS 几个性能调优相关的重要参数 供大家参考 1
  • React官网API模块知识点整理(三)

    react版本 16 13 1 1 React 顶层 API React Component React Component 是使用 ES6 classes 方式定义 React 组件的基类 React PureComponent Reac
  • formatter function (value,row,index){ } 参数的含义

    datagarid的formatter属性 formatter function value row index if value 1 return 提交 else if value 99 return 完成 else return 保存
  • 【python爬虫】爬取链家二手房数据

    相信大家买房前都会在网上找找资料 看看行情 问问朋友 今天就带大家扒一扒 链家二手房 的数据 一 查找数据所在位置 打开链家官网 进入二手房页面 选取某个城市 可以看到该城市房源总数以及房源列表数据 二 确定数据存放位置 某些网站的数据是存

随机推荐