YOLOv1 Testing

进入testing阶段,我们已经得到98个bounding box和confidence还有Class probability map,接下来我们需要一些筛选bounding box的算法,我们开始引入NMS(Non-max suppression)非极大值抑制。

NMS非极大值抑制概述

非极大值抑制(Non-Maximum Suppression,NMS),顾名思义就是抑制不是极大值的元素,可以理解为局部最大搜索。这个局部代表的是一个邻域,邻域有两个参数可变,一是邻域的维数,二是邻域的大小。这里不讨论通用的NMS算法(参考论文《Efficient Non-Maximum Suppression》对1维和2维数据的NMS实现),而是用于目标检测中提取分数最高的窗口的。例如在行人检测中,滑动窗口经提取特征,经分类器分类识别后,每个窗口都会得到一个分数。但是滑动窗口会导致很多窗口与其他窗口存在包含或者大部分交叉的情况。这时就需要用到NMS来选取那些邻域里分数最高(是行人的概率最大),并且抑制那些分数低的窗口。

NMS在计算机视觉领域有着非常重要的应用,如视频目标跟踪、数据挖掘、3D重建、目标识别以及纹理分析等。

YOLOv1中Testing过程

上篇博客中,我们已经介绍了LOSS函数,并且给出了置信度计算公式以及Class概率公式(图中粉框圈出),并且为已知数值。如下方途中公式二者相乘并化简,即可得到图中等式右方结果。

1. 二者相乘得出20×1个score,对于98个bounding box都进行此运算,得到98×20个score。

2. 获取第一组class of scores,假设为dog的scores,如图中框1标出的。

3. 通过一个thresh的筛选,将score<0.2(概率太低)的值置为0。如框2标出的。

4. 将修改后的scores进行降序排列。如框3标注的。

5. 使用NMS将重叠的框去除。如框4标注的。

NMS在YOLOv1中实现过程

如下图,我们假设按降序排列好的scores中,bounding box 47的score最大为0.8,第二高的为bounding box 20的score,为0.5。

  1. 取score最大的一个bounding box,将他保留。
  2. 找到他下面一个非零框,即score为0.5的bounding box。
  3. 计算他们两个的IOU交并比,如果大于0.5,说明他们两个重合度非常高,将score较小的bounding box的值置为0.
  4. 再按顺序取下一个score,与score为0.8的bounding box计算交并比。如果交并比小于0.5就保留这个值。
  5. 当score=0.8的bounding box与其他bounding box都计算完毕后,取这些scores中比0.8小的最大的score,在进行上述操作,直到满足结束条件。
  6. 将第二到第二十个class也进行上述操作。
  7. 根据每个bounding box的score进行比较大小。取出这个bounding box中最大的数值。
  8. 如果有大于0的最大score,那么就画出这个score对应的框,并且把他当作这个class。直到遍历完所有的bounding box。

【华为云技术分享】小白学YOLO:一文带你学YOLOv1 Testing相关推荐

  1. 【华为云技术分享】三大前端技术(React,Vue,Angular)探密(下)

    [华为云技术分享]三大前端技术(React,Vue,Angular)探密(上) [Angular] Angular(通常被称为 "Angular 2+"或 "Angula ...

  2. 【华为云技术分享】“技术-经济范式”视角下的开源软件演进剖析-part 1

    前言 以互联网为代表的信息技术的迅猛发展对整个经济体系产生了巨大的影响.信息技术的发展一方面使知识的积累和传播更加迅速,知识爆炸性的增长:另一方面,使信息的获取变得越来越容易,信息交流的强度逐渐增加, ...

  3. 【华为云技术分享】“技术-经济范式”视角下的开源软件演进剖析-part 3

    4. 微观层面 4.1 个体动机 在开源软件发展之初, 商业组织的投入很少甚至没有, 完全是靠Richard Stallman 或者 linus Torvalds 这样的个人在努力推动开源软件艰难前行 ...

  4. 【华为云技术分享】直播回顾丨激发数据裂变新动能,HDC.Cloud云数据库前沿技术解读

    3月24日14:00-17:00,HDC.Cloud开发者沙龙系列云数据库专场直播线上开启,此次华为云数据库通过三场直播从NoSQL数据库新技术.数据库迁移.行业解决方案等方面对云端数据库进行深度解读 ...

  5. 【华为云技术分享】玩转云上数据湖,解析Serverless 技术落地

    摘要:本文主要介绍Serverless计算相关技术与其在华为云数据湖探索服务(后文简称DLI)中的技术落地. 导读 本文主要介绍Serverless计算相关技术与其在华为云数据湖探索服务(后文简称DL ...

  6. 【华为云技术分享】揭秘华为云DLI背后的核心计算引擎

    云湖湖导读:本文主要给大家介绍隐藏在华为云数据湖探索服务(后文简称DLI)背后的核心计算引擎--Spark.DLI团队在Spark之上做了大量的性能优化与服务化改造,但其本质还是脱离不了Spark的核 ...

  7. 【华为云技术分享】小白学YOLO:YOLOv3网络结构细致解析

    Yolov3 网络结构 在博客"Yolo发展历史及网络结构"中我们已经详细的解释了Yolov1的网络结构,并简要的提到了Yolov2与Yolov3对于网络结构的改进,本篇博客将详细 ...

  8. 华为python有必要学吗_【华为云技术分享】这个 Python 库有必要好好学学

    这里看一个最基本的例子,这里给到一个 User 的 Class 定义,再给到一个 data 数据,像这样: 1 class User(object):2 def __init__(self, name ...

  9. 【华为云技术分享】AI 开发路漫漫,什么才是真正的极客精神?

    摘要:AI开发看上去很美,实践起来却不是一件容易的事.一个聪明的开发者知道借助工具提升开发效率,一个智能的平台则会站在开发者的立场,为用户提供贴心服务. "理想很丰满,现实很骨感." ...

  10. 【华为云技术分享】华为专家亲述:如何转型搞 AI?

    前言 参考塞缪尔. 约翰逊(18 世纪英国文学评论家.诗人,著有<英语大辞典>.<莎士比亚集>)的思路,"当一个人厌倦了学习技术,那他肯定也厌倦了 IT 行业,因为只 ...

最新文章

  1. 希捷撤离 硬盘的那些风花雪月记忆
  2. 如何用C语言编写wav读取函数,C++读取WAV音频文件的头部数据的实现方法
  3. 深入Python(4):深拷贝和浅拷贝
  4. 图像降噪算法——中值滤波/均值滤波/高斯滤波/双边滤波
  5. 在Nginx上配置ThinkPHP项目
  6. 搞科研、学术的朋友注意了,停下手头的活,再忙也要看一下这个!
  7. Go获取年月第一天与最后一天 获取时间戳
  8. IDC Q1中国云服务报告:公有云IaaS市场增速持续高于全球
  9. c语言单链表中头结点的创立,一个关于C语言链表头结点的问题
  10. [010]Try块和异常处理
  11. Java编程:按照指定的字段顺序,将 Bean 转换为 Json
  12. SQL Server 搭建Northwind详细教程
  13. pythondocx更新目录_使用Python更新MS Word .docx文档的目录(目录)
  14. Windows Defender卸载
  15. java计算机毕业设计绿洲小区快递配送系统源代码+数据库+系统+lw文档
  16. 为什么说C++太复杂(复杂到哪了?)
  17. 达梦数据库管理工具使用
  18. 网易云音乐params和encSecKey参数生成代码
  19. 全志V3S零基础教程
  20. 8.25 欢乐emmm赛

热门文章

  1. java图片转字符_java实现图片转字符图(看的过去的亚子)
  2. python彩票结果分析_天啦噜!Python多线程居然是骗人的?
  3. 等额本息excel模板下载_格格技能——巧用EXCEL函数,算清各种收益利率
  4. pyspark读取csv_手把手实现 PySpark 机器学习项目回归算法
  5. python-opencv学习第二章
  6. [No0000197]Windows用户都应该知道的运行命令
  7. 从PRISM开始学WPF(七)MVVM(三)事件聚合器EventAggregator?
  8. Ionic Cordova 环境配置window
  9. IP trie树接口
  10. hdu 2586 How far away? (LCA模板)