SSD:Single Shot MultiBox Detector

Intro

SSD是一套one-stage算法实现目标检测的框架,速度很快,在当时速度超过了yolo,精度也可以达到two-stage的精度,可以与faster rcnn媲美,这套算法里用到了与faster rcnn的anchor相似的概念-default box,也解决了多尺度问题对one-stage的影响-对不同大小的feature map进行滑窗分类,使得不同尺度的feature map的分类器对原图目标尺度更加敏感。

one-stage和two-stage的算法区别主要在于,two-stage算法在区域提取的时候做分类是前景和背景,只有两个分类,然后再拿去给第二个专门用来分类的网络去学习分类具体类别;而one-stage算法直接在区域提取的时候给分类结果(这其中其实还设计到训练的时候default boxes 的label与ground truth label匹配的问题),我认为这是最大的不同。

Model

模型的结果其实很容易理解,就是在vgg16后面开始一边对每个feature map直接做分类,一边继续压缩feature map的size,然后继续做分类,以此类推。最后把所有的detection结果做nms。

文章先介绍了SSD作为多尺度检测器是通过对feature map的不同尺度进行的,而怎么做这个检测呢?利用类似于anchor的方法,在不同尺度的feature map上用3*3卷积核滑窗,这样每个卷积核作用得到一个结果,而对每个feature map cell,作者又安排了一组对应的default boxes,这些default boxes在size上有所不同,比例是预先设计好的。每个cell安排(c+4)*k个卷积核,c表示类别,4表示offset,k表示default boxes种类,这样,对每个default box而言,有不同的卷积核负责算类别概率、与bounding box的偏移值。因此,对于一个m*n的feature map而言,输出的结果有m*n*k*(c+4)个。作者也说了,他们设计的default boxes其实是类似于anchor boxes的,这点毋庸置疑。

Training

之前说过,训练很重要的一点是label的对应,因此作者在这里首先讲了匹配的策略。先从每个default box开始,把每个default box匹配一个与之重叠度最高的ground truth,这里重叠度用的jaccard算法,其实跟iou是一样的,交集比上并集,然后还没完,又从ground truth出发,让每个ground truth能够对应与之jaccard重叠度大于0.5的default boxes,然后把小于0.5的去除。这样减少了训练的数量,大大简化了训练。举个例子,一套简单题,一个同学在班上分数最高,他肯定就是这个班最强的人了,但是他只有五十分,你说选他还是不选他,菜鸡!当然不选了。

上面建立了从default box到ground truth box在空间上的映射,然后提出loss:

这里又通过p将空间映射在类别上细分。我们知道每个default box的预测有(c+4)个值,所以对于l,只需要说明是第几个参与训练的default box和第m个位置预测,m当然是在那4个中选,至于你安排哪几个预测位置,完全看你自己。两者经过smooth L1函数运算完,再看看类别对应上没有,显然对应上了这个值就应该是1,以此来最小化loss。分类的loss是所有正例分类概率的-log乘上匹配值,显然匹配上了是1,如果每匹配上,就是所有正例概率-log之和,加上负样本预测背景的概率-log,就是全预测0就是背景,即对0的预测概率,显然概率越高loss越小。

然后是hard negative mining,在经过matching之后,其实大多数default box是负样本,这就导致了正负样本极度不均衡,然后就把一些负样本变正呗,把iou高的变正,保证正负样本比例位1:3.

最后是数据增强,增强选项包括:

  1. 直接用原图
  2. sample a patch(实在不知道咋翻译但是会意就好了)使得iou是0.1 0.3 0.5 0.7 或者0.9
  3. 随机sample a patch(不用保证是上面的0.1 0.3 0.5 0.7 0.9)

实验部分到后面统一做,直接把看过的都用mxnet写一遍吧。希望有一天买得起GPU,不用天天看书而无法正儿八经跑项目和比赛。真心想参加比赛!!

[论文理解]SSD:Single Shot MultiBox Detector的更多相关文章

  1. 论文笔记 SSD: Single Shot MultiBox Detector

    转载自:https://zhuanlan.zhihu.com/p/33544892 前言 目标检测近年来已经取得了很重要的进展,主流的算法主要分为两个类型(参考RefineDet):(1)two-st ...

  2. 深度学习论文翻译解析(十四):SSD: Single Shot MultiBox Detector

    论文标题:SSD: Single Shot MultiBox Detector 论文作者:Wei Liu, Dragomir Anguelov, Dumitru Erhan, Christian Sz ...

  3. SSD(Single Shot MultiBox Detector)的安装配置和运行

    下文图文介绍转自watersink的博文SSD(Single Shot MultiBox Detector)不得不说的那些事. 该方法出自2016年的一篇ECCV的oral paper,SSD: Si ...

  4. SSD: Single Shot MultiBox Detector

    By Wei Liu, Dragomir Anguelov, Dumitru Erhan, Christian Szegedy, Scott Reed, Cheng-Yang Fu, Alexande ...

  5. 机器视觉:SSD Single Shot MultiBox Detector

    今天介绍目标检测中非常著名的一个框架 SSD,与之前的 R-CNN 系列的不同,而且速度比 YOLO 更快. SSD 的核心思想是将不同尺度的 feature map 分成很多固定大小的 box,然后 ...

  6. 目标检测--SSD: Single Shot MultiBox Detector(2015)

    SSD: Single Shot MultiBox Detector 作者: Wei Liu, Dragomir Anguelov, Dumitru Erhan, Christian Szegedy, ...

  7. 【计算机视觉】目标检测之ECCV2016 - SSD Single Shot MultiBox Detector

    本文转载自: http://www.cnblogs.com/lillylin/p/6207292.html SSD论文阅读(Wei Liu--[ECCV2016]SSD Single Shot Mul ...

  8. SSD: Single Shot MultiBox Detector 编译方法总结

    SSD是一个基于单网络的目标检测框架,它是基于caffe实现的,所以下面的教程是基于已经编译好的caffe进行编译的. caffe的编译可以参考官网 caffe Installation Instal ...

  9. SSD: Single Shot MultiBox Detector论文阅读摘要

    论文链接: https://arxiv.org/pdf/1512.02325.pdf 代码下载: https://github.com/weiliu89/caffe/tree/ssd Abstract ...

随机推荐

  1. HTML5学习笔记(五)存储

    HTML5 web 存储,一个比cookie更好的本地存储方式.数据以 键/值 对存在, web网页的数据只允许该网页访问使用.加的安全与快速.可以存储大量的数据,而不影响网站的性能. 客户端存储数据 ...

  2. 第6章 图的学习总结(邻接矩阵&邻接表)

    我觉得图这一章的学习内容更有难度,其实图可以说是树结构更为普通的表现形式,它的每个元素都可以与多个元素之间相关联,所以结构比树更复杂,然而越复杂的数据结构在现实中用途就越大了,功能与用途密切联系,所以 ...

  3. 模板 - 动态规划 - 数位dp

    #include<bits/stdc++.h> using namespace std; #define ll long long ]; ll dp[][/*可能需要的状态2*/];//不 ...

  4. codevs 1086 栈(Catalan数)

    题目描述 Description 栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删除操作的线性表. 栈有两种最重要的操作,即pop(从栈顶弹出一个元素)和push(将一个元素进栈). ...

  5. 洛谷2105 k皇后

    P2105 K皇后 题目描述 小Z最近捡到了一个棋盘,他想在棋盘上摆放K个皇后.他想知道在他摆完这K个皇后之后,棋盘上还有多少了格子是不会被攻击到的. (Ps:一个皇后会攻击到这个皇后所在的那一行,那 ...

  6. 剑指Offer的学习笔记(C#篇)-- 不用加减乘除做加法

    题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 一 . 理解题目 这个题目可以让我们回归到小学,想想加法的竖式是怎么写的,哈哈,如果当时你不是那个竖式写错了, ...

  7. HE学业水平考试游记 By cellur925

    \(I'm\) \(back\). Day -2 今天高二全体学生开始了愉悦的长达两天半的自习2333. 第一天刚了最不会的地理必修一.以前没发现,其实真的挺有趣的233. 于是用了一天学习了一年的地 ...

  8. 消息中间件之ActiveMQ(非原创)

    文章大纲 一.消息中间件基础知识二.ActiveMQ介绍三.ActiveMQ下载安装(Windows版本)四.Java操作ActiveMQ代码实战五.Spring整合ActiveMQ代码实战六.项目源 ...

  9. for循环,递归,函数封装作业

    /******求100以内,所有的奇数和,求100以内,所有的偶数积*******/ // for循环方法   var sum=0; var sum1=1; for(var i=1;i<=100 ...

  10. katalon studio配置git与git项目创建

    katalon 是一款在2015年诞生的可以安装在windows.macOS.linux操作系统上,基于selenium 和 Appium 测试框架,并集成了这些框架的优点的自动化测试工具.关于这个工 ...