http://write.blog.csdn.NET/postedit

在上一篇文章中,介绍了以region+proposal来检测的框架,这一系列速度和精度不断提高,但是还是无法达到实时。存在的主要问题为:速度不够快,主要原因是proposal比较多,特征进行分类的时候,相同区域的特征计算多遍,所以BGR大神有了最新作品,YOLO,故名思议,就是解决Faster-RCNN中proposal重复look的问题。这一些列代表作有YOLO和SSD.首先介绍YOLO.

0.YOLO【这一部分转载:http://blog.csdn.net/tangwei2014】

  1. 作者Joseph Redmon ∗ , Santosh Divvala ∗† , Ross Girshick ¶ , Ali Farhadi,文献[1]
  2. 优点,速度快(45fps,小模型快速版本为155fps),缺点,很明显对位置预测不够精确,对小物体效果不够理想。
  3. 做法,简单粗暴,网格划分为S*S个网格,对每个网格直接进行回归预测,最后NMS进行处理。

1. YOLO的核心思想

  • YOLO的核心思想就是利用整张图作为网络的输入,直接在输出层回归bounding box的位置和bounding box所属的类别。

  • 没记错的话faster RCNN中也直接用整张图作为输入,但是faster-RCNN整体还是采用了RCNN那种 proposal+classifier的思想,只不过是将提取proposal的步骤放在CNN中实现了。

2.YOLO的实现方法

  • 将一幅图像分成SxS个网格(grid cell),如果某个object的中心 落在这个网格中,则这个网格就负责预测这个object。
  • 每个网格要预测B个bounding box,每个bounding box除了要回归自身的位置之外,还要附带预测一个confidence值。 这个confidence代表了所预测的box中含有object的置信度和这个box预测的有多准两重信息,其值是这样计算的: 其中如果有object落在一个grid cell里,第一项取1,否则取0。 第二项是预测的bounding box和实际的groundtruth之间的IoU值。

  • 每个bounding box要预测(x, y, w, h)和confidence共5个值,每个网格还要预测一个类别信息,记为C类。则SxS个网格,每个网格要预测B个bounding box还要预测C个categories。输出就是S x S x (5*B+C)的一个tensor。 注意:class信息是针对每个网格的,confidence信息是针对每个bounding box的。

  • 举例说明: 在PASCAL VOC中,图像输入为448x448,取S=7,B=2,一共有20个类别(C=20)。则输出就是7x7x30的一个tensor。 整个网络结构如下图所示:

  • 在test的时候,每个网格预测的class信息和bounding box预测的confidence信息相乘,就得到每个bounding box的class-specific confidence score: 等式左边第一项就是每个网格预测的类别信息,第二三项就是每个bounding box预测的confidence。这个乘积即encode了预测的box属于某一类的概率,也有该box准确度的信息。

  • 得到每个box的class-specific confidence score以后,设置阈值,滤掉得分低的boxes,对保留的boxes进行NMS处理,就得到最终的检测结果。

3.YOLO的实现细节

  • 每个grid有30维,这30维中,8维是回归box的坐标,2维是box的confidence,还有20维是类别。 其中坐标的x,y用对应网格的offset归一化到0-1之间,w,h用图像的width和height归一化到0-1之间。

  • 在实现中,最主要的就是怎么设计损失函数,让这个三个方面得到很好的平衡。作者简单粗暴的全部采用了sum-squared error loss来做这件事。 这种做法存在以下几个问题: 第一,8维的localization error和20维的classification error同等重要显然是不合理的; 第二,如果一个网格中没有object(一幅图中这种网格很多),那么就会将这些网格中的box的confidence push到0,相比于较少的有object的网格,这种做法是overpowering的,这会导致网络不稳定甚至发散。 解决办法:

    • 更重视8维的坐标预测,给这些损失前面赋予更大的loss weight, 记为在pascal VOC训练中取5。
    • 对没有object的box的confidence loss,赋予小的loss weight,记为在pascal VOC训练中取0.5。
    • 有object的box的confidence loss和类别的loss的loss weight正常取1。
  • 对不同大小的box预测中,相比于大box预测偏一点,小box预测偏一点肯定更不能被忍受的。而sum-square error loss中对同样的偏移loss是一样。 为了缓和这个问题,作者用了一个比较取巧的办法,就是将box的width和height取平方根代替原本的height和width。这个参考下面的图很容易理解,小box的横轴值较小

  • [补充,个人觉得还有更好的选择,W,H归一化为相对变化,这样对不同大小的物体,w,同等对待],发生偏移时,反应到y轴上相比大box要大。

  • 一个网格预测多个box,希望的是每个box predictor专门负责预测某个object。具体做法就是看当前预测的box与ground truth box中哪个IoU大,就负责哪个。这种做法称作box predictor的specialization。

  • 最后整个的损失函数如下所示: 这个损失函数中:
    • 只有当某个网格中有object的时候才对classification error进行惩罚。
    • 只有当某个box predictor对某个ground truth box负责的时候,才会对box的coordinate error进行惩罚,而对哪个ground truth box负责就看其预测值和ground truth box的IoU是不是在那个cell的所有box中最大。
    • 每个predictor负责一个IoU最大的box,也负责一个物体,关于坐标以及分类的惩罚就是这样两项。
  • 其他细节,例如使用激活函数使用leak RELU,模型用ImageNet预训练等等,在这里就不一一赘述了。
  • 提升之处:proposal明显减少了,yolo是一个网络,参数也少。另外YOLO直接分成不重合的grids了,而rcnn中不同的anchor boxes是重合的。

4.YOLO的缺点

  • YOLO对相互靠的很近的物体,还有很小的群体 检测效果不好,这是因为一个网格中只预测了两个框,并且只属于一类

  • 对测试图像中,同一类物体出现的新的不常见的长宽比和其他情况是。泛化能力偏弱。

  • 由于损失函数的问题,定位误差是影响检测效果的主要原因。尤其是大小物体的处理上,还有待加强。

5.SSD,文献【2】

  • 简介: 由于YOLO简单粗暴的将图像进行网格划分,然后对每个网格进行处理,这样导致定位不精确等一些列问题。而基于region proposal却又定位较精确的优点,那么SSD就结合了YOLO和anchor进行检测,结果也是比yolo提高很多【72%mAP】,速度58fps. 它利用的是Faster中的anchor方法
  • 和faster的anchor不同之处在于,SSD在多个featureMap上进行处理,因为每一层featureMap的感受野不同。 faster是先提取proposal,然后在分类,而SSD值利用anchor直接进行分类和BBox回归。类似于YOLO在于只用了一个网络由于他是Yolo和anchor的结合,具体不再展开。
  • 下面给出SSD和YOLO网络比较:

文献:

 [1].You Only Look Once:Unified, Real-Time Object Detection[2].SSD:Single Shot MultiBox Detector

模型压缩案例-SSDYou only look once相关推荐

  1. 对话腾讯AI Lab:即将开源自动化模型压缩框架PocketFlow,加速效果可达50%

    整理 | Jane 出品 | AI科技大本营 [导语]腾讯 AI Lab 机器学习中心今日宣布成功研发出世界上首款自动化深度学习模型压缩框架--PocketFlow,并即将在今年10-11月发布开源代 ...

  2. 关于NLP相关技术全部在这里:预训练模型、图神经网络、模型压缩、知识图谱、信息抽取、序列模型、深度学习、语法分析、文本处理...

    NLP近几年非常火,且发展特别快.像BERT.GPT-3.图神经网络.知识图谱等技术应运而生. 我们正处在信息爆炸的时代.面对每天铺天盖地的网络资源和论文.很多时候我们面临的问题并不是缺资源,而是找准 ...

  3. 【综述】闲话模型压缩之网络剪枝(Network Pruning)

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 来自 | CSDN 地址 | https://blog.csdn.net/jinz ...

  4. 【视频课】深度掌握模型剪枝+模型量化+知识蒸馏3大核心模型压缩技术理论!...

    前言 欢迎大家关注有三AI的视频课程系列,我们的视频课程系列共分为5层境界,内容和学习路线图如下: 第1层:掌握学习算法必要的预备知识,包括Python编程,深度学习基础,数据使用,框架使用. 第2层 ...

  5. 【知识星球】从SVM对偶问题,到疲劳驾驶检测,到实用工业级别的模型压缩技巧...

    欢迎大家来到<知识星球>专栏,本次发布这两天有三AI知识星球中专栏<AI 1000问>,<模型结构1000变>,<数据集>的知识便利贴. 作者& ...

  6. 详解预训练模型、图神经网络、模型压缩、知识图谱、信息抽取、序列模型、深度学习、语法分析、文本处理...

    NLP近几年非常火,且发展特别快.像BERT.GPT-3.图神经网络.知识图谱等技术应运而生.我们正处在信息爆炸的时代.面对每天铺天盖地的网络资源和论文.很多时候我们面临的问题并不是缺资源,而是找准资 ...

  7. 模型压缩高达75%,推理速度提升超20%,百度Paddle Lite v2.3正式发布

    如今,诸如计算机视觉.智能语音交互等基于深度学习的AI技术,在满足日常应用层面上已经非常成熟.比如,人脸识别闸机在机场.地铁.办公楼.学校等地方随处可见.什么都不用带,只要刷个脸就行,方便快捷又省事! ...

  8. 详解NLP技术中的:预训练模型、图神经网络、模型压缩、知识图谱

    NLP近几年非常火,且发展特别快.像BERT.GPT-3.图神经网络.知识图谱等技术应运而生. 我们正处在信息爆炸的时代.面对每天铺天盖地的网络资源和论文.很多时候我们面临的问题并不是缺资源,而是找准 ...

  9. 模型压缩与加速:Octave Convolution

      自AlexNet刷新了ImageNet比赛的最佳记录以来,神经网络的又一次高潮猛烈的到来了.一些列各种各样的网络层出不穷,图像/音频/文本等各种任务下都开始了神经网络一统天下的声音.然而神经网络虽 ...

最新文章

  1. IIS 6和IIS 7 中设置文件上传大小限制设置方法,两者是不一样的
  2. java中获取时间的方式,持续更新
  3. VB.NET 调用外部程序
  4. Oracle删库跑路
  5. Reporting Area and Available Characteristics
  6. Entity Framework4.0 (一)概述(EF4 的Database First方法)
  7. 国内程序员加班严重!听听外国网友怎么说。
  8. 360金融新任首席科学家:别指望AI Lab做成中台
  9. 关于软件开发的一些常识和思考
  10. 高铁:繁忙时限制上车补票
  11. 网页设计与制作(HTML+CSS)
  12. C语言递归函数求n!的两种写法---详细讲解
  13. 如何写出一篇高质量的数据分析报告?
  14. C#_根据银行卡卡号判断银行名称
  15. Spark :Web UI详解
  16. 用计算机制作演示文稿教案博客,《制作多媒体演示文稿》教学案例
  17. php zend guard php 7,zend guard php7最新版
  18. 二等水准测量记录数据_二等水准测量外业数据整理(往返测).doc
  19. [附源码]计算机毕业设计JAVA病历管理系统设计
  20. mysql5.7导出数据提示--secure-file-priv选项问题的解决方法

热门文章

  1. windows下配置mysql主从复制_Windows下MySQL主从复制的配置方法
  2. node中间件mysql_nodejs 中使用mysql数据有没有类似 mongoose 的中间件?
  3. 给孩子讲100个科学道理,不如带他做这些趣味实验!
  4. 通过R,让你的数据分析更简便!
  5. ftp服务器新建虚拟目录,ftp服务器 虚拟目录
  6. php定位和天气,基于thinkphp实现依据用户ip判断地理位置并提供对应天气信息的应用...
  7. 计算机控制系统期末判断题,计算机控制系统期末试题.doc
  8. 数字转字符函数_Excel之文本函数CONCATENATE/TEXT/LEFT/MID/RIGHT/FIND/LEN
  9. html让ul的li自动居中,css ul li导航菜单居中问题解决方法
  10. 小米8对一加6打开软件速度测试,买一加6还是小米8?小米8和一加6区别对比