yolov3在目标检测领域可以算得上是state-of-art级别的了,在实时性和准确性上都有很好的保证.yolo也不是一开始就达到了这么好的效果,本身也是经历了不断地演进的.

yolov1

测试图片

yolov1有个基本的思想,就是将图片划分为S*S个小格grid,每个grid负责一个目标.上图里的黄色框就是grid.蓝色框就是预测的object.蓝色点是object的中心,位于黄色框内.

每个grid只预测一个目标,这个就造成了yolo的一个缺陷,当多个目标的中心都落在同一个grid cell里的时候,却只能预测出来一个.比如上图左下角有9个圣诞老人,但是只预测出来5个.

反映到模型上,也就是说输入一个448*448*3图片,经过不断卷积,输出一个7*7*30的tensor. 这里的7*7就对应于上面说到的S*S.

那么这里的30怎么来的呢? 每一个grid cell预测2个框出来,每个框对应5个值,(x,y,w,h)和一个box confidence score.box confidence score反映了预测出来的box含有目标的可能性以及这个预测的box的准确性. yolov1预测出20个类别的概率. 所以30 = 2*5 + 20
我们用B指代每个cell预测出B个box,C指代每个cell预测出C个类别的概率.那么yolo的输出的tensor的shape则为(S,S,Bx5+C)

这就是yolo的核心思想了,构建一个CNN网络,得到一个(7,7,30)的tensor.

这样的话就得到了7*7*2个box,我们只保留box confidence score>某个值的box作为我们最终的预测box.

loss

损失函数分为3个部分

  • box位置错误
  • confidence错误(box确实包含目标的可能性错误)
  • 类别概率错误
    其实也就是衡量我们的这些预测值(x,y,w,h,confidence,classp1,classp2....)和真实值的差异

首先,我们预测出了B个box,我们只会用其中一个去计算loss.我们选取与ground-truth box的IOU最大的作为我们计算loss的box.ground-truth box怎么来,因为我们事先已经把数据标注好了,我们当然可以找到ground-truth box的中心位于某个grid cell内,如果有多个ground-truth box的中心都位于当前grid cell内,怎么办?计算每一个predict box和每一个ground-truth box的IOU,选取iou最大的作为相应的predict box,ground-truth box.这个方式带来的一个问题就是前面圣诞老人那个图说到的,当多个目标很密集,他们的中心都落在了同一个grid cell内的时候,yolov1只能检测出其中之一.

loss函数如下图所示:

loss函数的设计基于以下几种考虑

  1. 每一种loss都给相同的权重是不合适的,对于box位置错误给更多的权重,

    目标检测YOLO进化史之yolov1的更多相关文章

    1. 小白也能弄得懂的目标检测YOLO系列之YOLOv1网络训练

      上期给大家介绍了YOLO模型的检测系统和具体实现,YOLO是如何进行目标定位和目标分类的,这期主要给大家介绍YOLO是如何进行网络训练的,话不多说,马上开始! 前言: 输入图片首先被分成S*S个网格c ...

    2. 小白也能弄懂的目标检测YOLO系列之YOLOV1 - 第二期

      上期给大家展示了用VisDrone数据集训练pytorch版YOLOV3模型的效果,介绍了什么是目标检测.目标检测目前比较流行的检测算法和效果比较以及YOLO的进化史,这期我们来讲解YOLO最原始V1 ...

    3. [目标检测]YOLO原理

      1 YOLO 创新点: 端到端训练及推断 + 改革区域建议框式目标检测框架 + 实时目标检测 1.1 创新点 (1) 改革了区域建议框式检测框架: RCNN系列均需要生成建议框,在建议框上进行分类与回 ...

    4. 目标检测(五)YOLOv1—You Only Look Once:Unified,Real-Time Object Detection

      之前的目标检测算法大都采用proposals+classifier的做法(proposal提供位置信息,分类器提供类别信息),虽然精度很高,但是速度比较慢,也可能无法进行end-to-end训练.而该 ...

    5. 第四节,目标检测---YOLO系列

      1.R-CNN回顾 适应全卷积化CNN结构,提出全卷积化设计 共享ResNet的所有卷积层 引入变换敏感性(Translation variance) 位置敏感分值图(Position-sensiti ...

    6. 目标检测-yolo

      论文下载:http://arxiv.org/abs/1506.02640 代码下载:https://github.com/pjreddie/darknet 1.创新点 端到端训练及推断 + 改革区域建 ...

    7. 目标检测YOLO算法-学习笔记

      算法发展及对比: 17年底,mask-R CNN YOLO YOLO最大的优势就是快 原论文中流程,可以检测出20类物体. 红色网格-张量,在这样一个1×30的张量中保存的数据 横纵坐标中心点缩放到0 ...

    8. 【目标检测】YOLO:

      PPT 可以说是讲得相当之清楚了... deepsystems.io 中文翻译: https://zhuanlan.zhihu.com/p/24916786 图解YOLO YOLO核心思想:从R-CN ...

    9. 第三十五节,目标检测之YOLO算法详解

      Redmon, J., Divvala, S., Girshick, R., Farhadi, A.: You only look once: Unified, real-time object de ...

    随机推荐

    1. Windows Presentation Foundation (WPF) 项目中不支持xxx的解决

      一般Windows Presentation Foundation (WPF) 项目中不支持xxx都是由于没引用相应的程序集导致,比如Windows Presentation Foundation ( ...

    2. Tomcat CGIServlet enableCmdLineArguments远程代码执行_CVE-2019-0232漏洞复现

      Tomcat CGIServlet enableCmdLineArguments远程代码执行_CVE-2019-0232漏洞复现 一.漏洞描述 该漏洞是由于tomcat CGI将命令行参数传递给Win ...

    3. Vue杂谈

      <div id="app"> <input type="text" ref="input1"/> <butto ...

    4. 个人永久性免费-Excel催化剂功能第41波-文件文件夹相关函数

      对于日常办公过程中,每天面对的操作离不开文件.文件夹的操作,当然可以用资源管理器.Everything之类的管理软件来管理.但涉及到批量操作时,在Excel环境或许是个更好的方式,前面很多的内容中不断 ...

    5. 《VR入门系列教程》之9---谷歌纸盒

      谷歌纸盒---基于智能手机的廉价VR眼镜     如果用汽车来做类比,Oculus Rift和GearVR就是特斯拉和兰博基尼,它们物美但是价不廉.要是主机性能不好,那么几百美元的Oculus眼镜就是 ...

    6. Python学习6——再谈抽象(面对对象编程)

      1.对象魔法 在面对对象编程中,术语对象大致意味着一系列数据(属性)以及一套访问和操作这些数据的方法. 使用对象而非全局变量以及函数的原因有多个,而最重要的好处不过以下几点: 多态:可对不同类型的对象 ...

    7. git push 出现non-fast-forward的错误

      1.git push origin liu_0909:daily_liu_0909 出现non-fast-forward的错误,证明您的本地库跟远程库的提交记录不一致,即 你的本地库版本需要更新2.g ...

    8. JavaScript基础学习第六天

      目标: 能够使用对象的方式处理数据 ☞ 代码预解析: 1. 变量提升 :当程序中遇到定义变量后,就会将该变量的定义提升到当前作用域的开始位置,不包括变量的赋值 2. 函数提升:当程序中遇到函数的声明时 ...

    9. 第二章 javaScript操作BOM

      什么是BOM      BOM(Browser Object Model)即浏览器对象模型.      BOM提供了独立于内容 而与浏览器窗口进行交互的对象:      由于BOM主要用于管理窗口与窗 ...

    10. dz6.0的一个sql注入漏洞

      今天开始着手分析第一个漏洞,找了一上午靶机,发现一个含有成人内容的违法网站是用dz6.0搭的,今天就看看dz这个版本的洞了 问题函数位置:my.php第623行 if(is_array($descri ...