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. c++中利用宏定义简化for循环使用

      话不多说,上方法 #define _for(i,a,b) for( int i=(a); i<(b); ++i) #define _rep(i,a,b) for( int i=(a); i< ...

    2. 「数据分析」Sqlserver中的窗口函数的精彩应用之数据差距与数据岛(含答案)

      上一篇介绍过数据差距与数据岛的背景,这里不再赘述,请翻阅上一文.此篇在Sqlserver上给大家演示1000万条记录的计算性能. 测试电脑软硬件说明 一般般的笔记本电脑,2017年7月,价格:4500 ...

    3. [leetcode] 87. Scramble String (Hard)

      题意: 判断两个字符串是否互为Scramble字符串,而互为Scramble字符串的定义: 字符串看作是父节点,从字符串某一处切开,生成的两个子串分别是父串的左右子树,再对切开生成的两个子串继续切开, ...

    4. [小米OJ] 2. 找出单独出现的数字

      解法一: map 1.45 ms #include <algorithm> #include <bitset> #include <cmath> #include ...

    5. 基于ng-zorro的ASP.NET ZERO前端实现之代码生成器

      上一篇介绍了集成ng-zorro的过程,本篇我们来看下如何用abp官方的生成器来生成前端代码. Abp官方提供了一个强大的代码生成器 ASP.NET Zero Power Tools,它的Visual ...

    6. java用最少循环求两个数组的交集、差集、并集

      import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.List ...

    7. 写这篇博客之前,我又忘了“==”和equals的区别。

      没错.嘟嘟又把==号和equals 的区别给忘掉了 ==号比较基本类型的时候比的是值,比较引用类型的时候比较的是地址.equals比较基本类型的时候.... 脑子里关于这道题的答案好模糊好没有安全感 ...

    8. JNDI总结(一)

      一.数据源的由来 在Java开发中,使用JDBC操作数据库的四个步骤如下:   ①加载数据库驱动程序(Class.forName("数据库驱动类");)   ②连接数据库(Conn ...

    9. python中if __name__ == '__main__' :main(()

      例如: if __name__ == '__main__': main() 如果运行的是主函数的话,执行下一句main() 如果作为模块被其他文件导入使用的话,我们就不执行后面的main()什么的. ...

    10. Angular JS 中 ng-controller 值复制和引用复制

      我们知道在使用ng-app或者ng-controller指令的时候,都会创建一个新的作用域($rootScope或者是$scope),并且在使用ng-controller指令创建的作用域会继承父级作用 ...