目标检测学习记录一:基础介绍

1. Two-Stage基本介绍、流程与常见算法

1.1Two-stage基本介绍

  • CNN卷积特征;
  • R. Girshick et al., 2014提出R-CNN到faster RCNN;
  • 端到端的目标检测(RPN网络);
  • 准确度高、速度相对one-stage慢;
    Two-stage的目标检测算法主要是通过一个完整的卷积神经网络来完成目标检测的过程,进行目标检测时用到的特征就是CNN的特征,也就是通过一个CNN来提取对候选区域目标的特征的描述;

1.2 Two-stage基本流程

在这里插入图片描述

1.3 Two-stage核心组件

  • 核心组件
    • CNN网络(主干网络);
    • RPN网络;
  • CNN网络设计原则
    • 从简到繁再到简的卷积神经网络;
    • 多尺度特征融合的网络;
    • 更轻量级的CNN网络;
  • RPN网络
    • 区域推荐(Anchor机制);
    • ROI Pooling;
      • 输入:特征图、rois(1x5x1x1)以及ROI参数;
      • 输出:固定尺寸的feature map;
    • 分类和回归;

2. 基于One-stage的目标检测算法

2.1 One-stage基本介绍

  • 使用CNN卷积特征;
  • 直接回归物体的类别概率和位置坐标值(无region proposal);
  • 准确度低、速度相对two-stage快;

2.2 One-stage基本流程

  • One-stage和Two-stage的区别就在于是否包含了候选区域推荐的过程;

    在这里插入图片描述

2.3 One-stage常见算法

在这里插入图片描述

2.4 One-stage的核心组件

  • One-stage的核心组件
    • CNN网络;
    • 回归网络;
  • CNN网络设计原则
    • 从简到繁再到简的卷积神经网络;
    • 多尺度特征融合的网络;
    • 更轻量级的CNN网络;
  • 回归网络
    • 区域回归(置信度、位置、类别);
    • Anchor机制(SSD);

3. One-stage与Two-stage优缺点对比

  • One-stage
    • 优点:
      • 速度快;
      • 避免背景错误,产生false positives;
      • 学到物体的泛化特征;
    • 缺点:
      • 精度低(定位、检出率);
      • 小物体的检测效果不好;
  • Two-stage
    • 优点:
      • 精度高(定位、检出率);
      • Anchor机制;
      • 共享计算量;
    • 缺点:
      • 速度慢;
      • 训练时间长;
      • 误报高;

4. SSD系列算法原理介绍

4.1 SSD系列算法介绍(主干网络、多尺度Feature Map预测)

  • SSD算法介绍:
    • Single Shot MultiBox Detector(One-stage方法);
    • Wei Liu在ECCV 2016提出;
    • 直接回归目标类别和位置;
    • 不同尺度的特征图上进行检测;
    • 端到端的训练;
    • 图像的分辨率比较低,也能保证检测的精度;

      在这里插入图片描述

  • 原理介绍

    在这里插入图片描述

    • 主干网络:
      • VGG、ResNet、MobileNets等,各种卷积神经网;
      • 将VGG最后两个FC改成卷积,并增加4个卷积层;
    • 多尺度Feature Map预测;
      • 不同层的feature map;
      • Prior box:类别概率和坐标(x,y,w,h);
    • Default bounding boxes的类别分数、偏移量;
      • 首先,SSD会包含一个主干网络,VGG16为SSD目标检测的主干网络,这里的主干网络主要作用到了第五层卷积,也就是第五个尺度上的第三个卷积层的输出结果。这里的输出结果也作为了下几个卷积层的输入,这里采用多尺度的feature map预测,也就是在进行预测的时候,会针对接下来的六个不同的尺寸来分别进行预测,这六个尺度分别包括上图的六个连线,也包含了6个feature map尺寸。19 * 19 到 10 *10通过下采样得到。最后通过NMS对检测结果进行分类和筛选。

4.2 Prior Box Layer、样本构造、损失函数介绍

  • Prior Box Layer:
    • m x n个cell (每个点都作为一个cell);
    • 每个cell上生成固定scale和aspect ratio的box(尺寸和长宽比例);
      • 假设一个feature map有m x n个cell,每个cell对应k个default box,每个default box预测c个类别score和4个offset;
      • ( c +4)* k * m * n个输出;
  • 构造样本
    • 正样本
      • 从GT box出发找到最匹配的prior box放入候选正样本集;
      • 从prior box集出发,寻找与GT box满足IOU>0.5的最大prior box放入候选正样本集;
    • 负样本
      • 难例挖掘;
      • 正负样本比: 1:3;
  • 难例挖掘

    在这里插入图片描述

  • 损失函数:
    • 分类loss + 回归loss;
    • 分类loss:Softmax Loss;
    • 回归loss:Smooth L1 loss;

      在这里插入图片描述

4.3 DSSD、DSOD算法

  • SSD系列算法优化及扩展

    在这里插入图片描述

  • DSSD
    • SSD算法对小目标不够鲁棒的最主要的原因是浅层feature map的表征能力不够强;
      • 加入上下文信息;
      • 更好的基础网络(ResNet)和Deconvolution层,skip连接来给浅层feature map更好的表征能力;

        在这里插入图片描述

  • DSOD
    • 2017年的ICCV2017;
    • DSOD可以从0开始训练数据,不需要预训练模型,而且效果可以和fine-tune的模型媲美;
    • SSD + DenseNet = DSOD;
      • 可以从零开始训练得到一个好的目标检测网络么;
      • 如果可以,设计这样的网络有没有什么原则可以遵循;
    • 预训练模型优点:
      • 开源模型多,可以直接将它们用于目标检测;
      • 可以快速得到:最终的模型,需要的训练数据也相对较少;
    • 预训练模型缺点:
      • 预训练模型大,参数太多,模型结构灵活性差,难以改变网络结构,计算量大,限制其应用场合;
      • 分类和检测任务的损失函数和类别分布式不一样的,优化空间存在差异;
      • 尽管微调可以减少不同目标类别分布的差异性,但是差异太大时,微调效果依然不理想;
    • DSOD设计原则
      • 基于候选区域提取的方法无法从零开始训练,不收敛,只有proposal-free方法可以从零开始训练并收敛(ROI Pooling);
      • DenseNet中更多的skip connections 实现supervised signals传递;
      • 增加dense blocks数量区别原先固定数量;
      • Stem Block优化(3个3 *3卷积层和1个2 *2最大池化层);
      • 6个尺度特征图进行目标检测,再融合(如何利用特征图);

4.4 FSSD、RSSD算法

  • FSSD设计原则
    • 借鉴了FPN的思想,重构了一组pyramid feature map,使得算法的精度有了明显的提升,速度也没有太降;
    • 把网络中某些feature调整为同一size再contact,得到一个像素层,以此层为base layer来生成pyramid feature map;
    • Feature Fusion Module;

      在这里插入图片描述

  • RSSD设计原则
    • rainbow concatenation方式(pooling加deconvolution)融合不同层的特征,在增加不同层之间feature map关系的同时也增加了不同层的feature map个数;
    • 这种融合方式不仅解决了传统SSD算法存在的重复框问题,同时一定程度上解决了small object的检测问题;

      在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340