摘要:本文将为初学者带详细分析如何进行YOLOv1 Testing的内容。

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. 老段带你学鸟哥Linux视频教程 包含基础班+提高班

    老段带你学鸟哥Linux视频教程 包含基础班+提高班,附带pdf文档. 目录结构如下: 目录:/-老段带你学鸟哥Linux视频教程 [.9G] ┣━━老段带你学鸟哥-服务器篇 [1009.4M] ┃ ...

  2. 我要带徒弟学写JAVA架构,引路架构师之路(Jeecg开源社区)

    带徒弟学JAVA架构(Jeecg社区)      Java程序员如何打破工作2,3年的瓶颈问题,如何更上一层楼?      太多的巧合,让我接触到了开源,通过JEECG与很多朋友交流后,让我有了帮助别 ...

  3. 【凯子哥带你学Framework】Activity界面显示全解析(下)

    咱们接着上篇继续讲,上篇没看的请戳:[凯子哥带你学Framework]Activity界面显示全解析(上) 如何验证上一个问题 首先,说明一下运行条件: //主题 name="AppThem ...

  4. 带你学C带你飞!

    C语言免费课程推荐:带你学C带你飞! 想学习C语言,首先就要了解什么是C语言: C语言是一门通用计算机编程语言,应用广泛.C语言的设计目标是提供一种能以简易的方式编译.处理低级存储器.产生少量的机器码 ...

  5. 手摸手带你学移动端WEB开发

    HTML常用标签总结 手摸手带你学CSS HTML5与CSS3知识点总结 手摸手带你学移动端WEB开发 好好学习,天天向上 本文已收录至我的Github仓库DayDayUP:github.com/Ro ...

  6. 一文带你读懂什么是vxlan网络

    一个执着于技术的公众号 一.背景 随着云计算.虚拟化相关技术的发展,传统网络无法满足大规模.灵活性要求高的云数据中心的要求,于是便有了overlay网络的概念.overlay网络中被广泛应用的就是vx ...

  7. 实战 | 一文带你读懂Nginx反向代理

    一个执着于技术的公众号 前言 在前面的章节中,我们已经学习了nginx基础知识: 给小白的 Nginx 10分钟入门指南 Nginx编译安装及常用命令 完全卸载nginx的详细步骤 Nginx 配置文 ...

  8. Istio是啥?一文带你彻底了解!

    原标题:Istio是啥?一文带你彻底了解! " 如果你比较关注新兴技术的话,那么很可能在不同的地方听说过 Istio,并且知道它和 Service Mesh 有着牵扯. 这篇文章可以作为了解 ...

  9. 一文带您了解5G的价值与应用

    一文带您了解5G的价值与应用 5G最有趣的一点是:大多数产品都是先有明确应用场景而后千呼万唤始出来.而5G则不同,即将到来的5G不仅再一次印证了科学技术是第一生产力还给不少用户带来了迷茫——我们为什么 ...

  10. 一文带你了解elasticsearch

    一文带你了解elasticsearch cxf2102100人评论160人阅读2019-07-02 21:31:36   elasticsearch es基本概念 es术语介绍 文档Document ...

随机推荐

  1. [ABC218F] Blocked Roads 题解

    Blocked Roads 题目大意 给定一张 \(n\) 个点,\(m\) 条边的无向图,每条边的边权均为 \(1\).对于每一个 \(i\in [1,m]\) 求出从点 \(1\) 到 \(n\) ...

  2. 一文详解贝叶斯优化(Bayesian Optimization)原理

    参考资料: Expected Improvement formula for Bayesian Optimisation 通俗科普文:贝叶斯优化与SMBO.高斯过程回归.TPE 理解贝叶斯优化 A T ...

  3. 10.7 多校联测 Day? 总结

    打了一场从头到尾稀里糊涂的比赛. 脑子完全不转. 开考看 T1,一开始连逆序对都没看出来.想着把不合法的点两两连边黑白染色(也是够离谱)然后也不知道干了啥(似乎很困),反正一个小时过去了. 就只看出来 ...

  4. 实用的命令行终端增强软件:Tabby

    还是那句话:出众的软件有很多,适合自己的才是最好的. 一.软件介绍 Tabby是一个开源免费软件,支持Windows.macOS和Linux系统.它提供了一个高度可定制的终端界面,可以通过多种方式添加 ...

  5. 一个基于Vue模型的表单生成器

    哈喽,我是老鱼,一名致力于在技术道路上的终身学习者.实践者.分享者! Vuetify Form Base是一个基于模型的表单生成器,目的是提供一个工具,以便以较少的努力从任何模型数据生成可编辑的表单, ...

  6. 记一次 .NET 某工厂无人车调度系统 线程爆高分析

    一:背景 1. 讲故事 前些天有位朋友找到我,说他程序中的线程数爆高,让我帮忙看下怎么回事,这种线程数爆高的情况找问题相对比较容易,就让朋友丢一个dump给我,看看便知. 二:为什么会爆高 1. 查看 ...

  7. 实时计算Flink+实时数仓Hologres

    阿里云培训:https://developer.aliyun.com/learning/course/807/detail/13885?accounttraceid=d2070f0a9edb471c9 ...

  8. 企业微信获取code

    String url="https://open.weixin.qq.com/connect/oauth2/authorize?appid="+AuthUtil.APPID   + ...

  9. 【python】Tkinter学习

    定义 python自带的可编辑的GUI界面,是一个图像窗口. Tkinter是使用python进行窗口视窗设计的模块. 标签-按钮 2.1.Lable&Button标签和按钮 定义window ...

  10. 07-Shell运算符

    1.算术运算符 1.1 expr命令 expr 是 evaluate expressions 的缩写,译为"求值表达式".Shell expr 是一个功能强大,并且比较复杂的命令, ...