精华内容
下载资源
问答
  • YOLOv1

    2020-03-01 21:35:44
    然后进行前背景分类,消除重叠框,进行边界框回归和分类,这个过程就十分繁琐,速度很慢,虽然准确率不错,但如果想要实现实时的目标检测就很难了,于是接下来就介绍一下速度较快的YOLOv1(you only look once)系列...

    之前提到的R-CNN,需要先找到可能包含物体的框,然后进行前背景分类,消除重叠框,进行边界框回归和分类,这个过程就十分繁琐,速度很慢,虽然准确率不错,但如果想要实现实时的目标检测就很难了,于是接下来就介绍一下速度较快的YOLOv1(you only look once)系列模型。

    首先来简单介绍一下YOLOv1的思想,我们先来想一下,我们看一幅照片的时候,是不是扫一眼,找到感兴趣的地方(目标),然后再从照片的某个位置开始看的,也就是说,其实人类确定目标和确定目标的范围是一个十分迅速且同时进行的过程。当然,回想一下faster R-CNN,其实它也是希望先找出region proposal,再分析region内保不包含目标,可是利用RPN找region的过程更像是学习大量的图片,记住了不同图像的目标可能出现在什么位置,然后遇到了一幅新图像,就去可能出现目标的区域验证一下,这样不是说不行,但是就麻烦耗时间了,所以R-CNN速度就慢了,但是我觉得它的这个方向还是可以借鉴的。

    那么YOLOv1是怎么做的呢,第一,最重要的是YOLOv1选择直接输出边界框的信息和分类结果,而不是先分析边界框再分析分类结果,把two stage变成了one stage,这是YOLOv1速度提升的原因,第二,既然YOLOv1的输出是同时输出边界框和分类结果,如果我们的分析对象还是整副图像,那么就要求模型具有十分厉害的特征提取能力,才能分析出一张图像具有多少个目标,每个目标在哪里了,所以YOLOv1就简化了一下,不让模型分析整幅图像,而是把图像分成了s*s个区域,一个一个区域进行分析。

    具体我们可以先看看YOLOv1的模型,再分析它是如何做到把图像分成s*s个区域的:

    在这里插入图片描述
    从上图我们可以看到,假设图像输入尺寸为448x448x3,最终特征图变成了7x7x30,通过卷积运算,就把图像分成了7x7个区域,每个区域用一个长度为30的特征向量表示,这时候,我们就可以利用这个特征向量,分析该区域的边界框和分类结果了,比如说,可以利用全连接层分析,最后输出边界框的左上角坐标xy,宽高wh,以及各个类别的概率值。

    上面这样做其实是还不够的,回想一下我们把图像分成了7x7个区域,那么每个区域都会预测出边界框以及分类结果,可是我们总不能把这49个结果都输出吧,所以模型还需要学会判断,到底哪个区域的输出是正确的,是包含目标的,就保留,其余的一律舍弃。怎么让模型学会识别呢,就是让计算每个区域的置信度,设置一个阈值,置信度超过阈值就保留这个区域的信息,低于阈值就舍弃。

    所以我们再来看看这个置信度是怎么计算的:

    confidence=Pr(class)IoUconfidence = Pr(class) * IoU

    Pr(class)就是目标落在区域内的概率,训练的时候,这个要么就是1要么就是0,后面的IOU则是预测的bounding box和真实的之间的IoU。

    现在再来考虑一个问题,一个目标可能比较大,占据了多个区域,假设每个区域预测一个边界框,然后这个目标占据了五个边界框,可能最终模型就会输出五个十分接近、重叠度很高的边界框,所以我们就需要非极大抑制,去除重复的边界框,然后就可以得到最终的输出了。

    最后我们再回顾一下YOLOv1,他把图像分成是s*s个区域再进行分析,每个区域可以预测多个边界框,但是只能分析一个目标类别,也就是说,假如一个区域内存在两个不同类别的目标,它是识别不出来的,这就意味着YOLOv1对小目标的识别效果并不好,所以后期也从这个问题出发进行改进。

    另一方面,虽然一开始说把图像分成s * s再进行分析,但其实因为卷积运算的特性,最后得到的s * s的区域之间也是相互联系而不是完全分隔开的,或者说,我们在分析某一个小区域的时候,也附带了整幅图像的信息,这就是YOLOv1最大的优点,正因为能利用全局信息,所以YOLOv1也更不容易在背景上预测出错误的目标信息。

    在github写的自然语言处理入门教程,持续更新:NLPBeginner

    展开全文
  • YOLOV1

    2019-03-19 20:44:44
    YOLOV1 YOLOV1模型 yolo —— You Only Live Once (1)YOLO v1不需要搜素候选框,直接实现端对端检测; (2)由于R-CNN系列的搜索候选框之间有重叠,为减少工作量,YOLO v1将全图划分成7*7的49个网格 输入...

    YOLOV1


    YOLOV1模型

    yolo —— You Only Live Once

    • (1)YOLO v1不需要搜素候选框,直接实现端对端检测;
    • (2)由于R-CNN系列的搜索候选框之间有重叠,为减少工作量,YOLO v1将全图划分成7*7的49个网格

    这里写图片描述

     

    • 输入图像为448*448*3的彩色图像,经过GoogLeNet的前20层进行卷积输出14*14*1024的特征图
    • 然后经过四个卷积层和2个全连接层,最后经过重新排序成一个7*7*30的矩阵(张量)
    • 如上图所示,经过层层卷积,输出的7*7*30的矩阵相当于将原图像划分成7*7=49个框,每个框由一个30维的向量构成
    • 30维向量,前10个特征分别预测了两个bbox(BoundingBox回归框),一个横向框,一个列向框,每个框5个特征。框后边接着类别,共20个类。特征分别是每个目标属于某个类的概率
    • 预测的两个框中,每个框的5个特征,分别是:(1)bbox中心x相对于grid cell(图中小红框)的坐标(2)bbox中心y相对于grid cell的y坐标(3)bbox的宽(4)bbox的高(5)是否存在目标,存在目标则为 1*IoU的值,否则 0*IoU的值
    • 预测的x,y,w,h的取值范围全都划到(0,1)开区间内,转换方式如下图所示
    • 对划分的7*7的49个单元格,都会存在一个30维的向量
    • 每个单元格只对单个目标负责,如果两个或多个目标的中心同时存在于一个单元格中,那么单元格中只保存概率最高的类别

     


    附代码

    YOLO作者开源代码请见 
    https://pjreddie.com/darknet/yolov1/ 
    Windows版可以参考链接,支持Visual Studio编译。 
    https://github.com/zhaolili/darknet


    文章中的两幅图均来自于https://blog.csdn.net/liuxiaoheng1992/article/details/81983280,引用链接讲的较详细,如果没有理解本文,可以前去仔细阅读。

    展开全文
  • yolov1

    2017-06-27 15:11:00
    yolov1 https://zhuanlan.zhihu.com/p/27515705 posted on 2017-06-27 15:11机器学习猪 阅...

     https://zhuanlan.zhihu.com/p/27515705

    posted on 2017-06-27 15:11 机器学习猪 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/zyore2013/p/7085340.html

    展开全文
  • 文章目录一,概述二,yolov1三,yolov2四,yolov3五,yolov4六,yolov5七,总结 一,概述 二,yolov1 三,yolov2 四,yolov3 五,yolov4 六,yolov5 七,总结

    相关资源:
    1,yolo进化史:从yolov1到yolov5之yolov2/yolo9000
    2,yolo进化史:从yolov1到yolov5之yolov3

    一,概述

    自2016年yolov1问世以来,yolo系列算法在物体检测领域一直是sort级别的,它最大的创新点在于将物体检测的两个步骤(1,检测目标位置 2,对目标进行分类)融合到了一起,相比于R-CNN系列算法将上述1,2分开的two-stage算法,yolo进化成了one-stage算法。one-stage虽然精度比two-stage算法低,但是速度很快,以精度换取了速度,达到了工业级应用的需求,尤其yolov3以后,在精度和速度之间都达到了一定水准。这篇先看yolov1。

    二,yolov1

    1,算法特性

    按照原论文中的内容,yolov1主要有3点特性:
    a,Yolov1速度很快,因为使用回归的方法,而且不用非常复杂的框架。
    b,Yolov1会基于整张图片信息进行预测,而其他滑窗式的检测框架,只能基于局部图片信息进行推理。
    c,Yolov1学到的图片特征更为通用。作者尝试了用自然图片数据集进行训练,用艺术画作品进行预测,Yolo的检测效果更佳。

    2,网络backbone,

    yolov1的backbone为VGG16,如下为网络结构图
    在这里插入图片描述
    输入图像大小为448 * 448,经过若干个卷积层与池化层,变为7 * 7 * 1024张量(上图中倒数第三个立方体),最后经过两层全连接层,输出张量维度为7 * 7 * 30,这就是Yolo v1的整个神经网络结构,和一般的卷积物体分类网络没有太多区别,最大的不同就是:分类网络最后的全连接层,一般连接于一个一维向量,向量的不同位代表不同类别,而这里的输出向量是一个三维的张量(7 * 7 * 30)。本质上来说没有什么特别,没有使用BN层,用了一层Dropout。除了最后一层的输出使用了线性激活函数,其他层全部使用Leaky Relu激活函数。网络结构没有特别的东西,不再赘述。

    3,网络输出7 * 7 * 30的含义,

    3.1,7 * 7的含义

    7 * 7是指图片被分成了7 * 7个格子,如下所示:
    在这里插入图片描述
    在Yolo中,如果一个物体的中心点,落在了某个格子中,那么这个格子将负责预测这个物体。这句话怎么理解,用上图举例,设左下角格子假设坐标为 [1,1],小狗所在的最小包围矩形框的中心,落在了 [2,3] 这个格子中。那么7 * 7个格子中,[2,3] 这个格子负责预测小狗,而那些没有物体中心点落进来的格子,则不负责预测任何物体。这个设定就好比该网络在一开始,就将整个图片上的预测任务进行了分工,一共设定7 * 7个按照方阵列队的检测人员,每个人员负责检测一个物体,大家的分工界线,就是看被检测物体的中心点落在谁的格子里。当然,是7 * 7还是9 * 9,是上图中的参数S,可以自己修改,精度和性能会随之有些变化。

    3.2 30的含义

    刚才设定了49个检测人员,那么每个人员负责检测的内容,就是这里的30(注意,30是张量最后一维的长度)。在Yolo v1论文中,30是由 (4 + 1) * 2 + 20得到的。其中4+1是矩形框的中心点坐标 [x,y] ,宽高 [w,h] 以及是否属于被检测物体的置信度 c;2的意思是一个格子共回归两个矩形框,每个矩形框分别产生5个预测值(x,y,w,h,c);20代表预测20个类别。这里有几点需要注意:1. 每个方格(grid) 产生2个预测框,2也是参数,可以调,但是一旦设定为2以后,那么每个方格只产生两个矩形框,最后选定置信度更大的矩形框作为输出,也就是最终每个方格只输出一个预测矩形框。2. 每个方格只能预测一个物体。虽然可以通过调整参数,产生不同的矩形框,但这只能提高矩形框的精度。所以当有很多个物体的中心点落在了同一个格子里,该格子只能预测一个物体。也就是格子数为7*7时,该网络最多预测49个物体。在强行施加了格点限制以后,每个格点只能输出一个预测结果,所以该算法最大的不足,就是对一些邻近小物体的识别效果不是太好,例如成群结队的小鸟。

    4,损失函数的含义

    看到这里读者或许会有疑问,Yolo里的每个格点,是怎么知道该预测哪个物体的?这就是神经网络算法的能力。首先拿到一批标注好的图片数据集,按照规则打好标签,之后让神经网络去拟合训练数据集。训练数据集中的标签是通过人工标注获得,当神经网络对数据集拟合的足够好时,那么就相当于神经网络具备了一定的和人一样的识别能力。

    神经网络结构确定之后,训练效果好坏,由Loss函数和优化器决定。Yolo v1使用普通的梯度下降法作为优化器。这里重点解读一下Yolo v1使用的Loss函数:

    在这里插入图片描述
    论文中Loss函数,密密麻麻的公式初看可能比较难懂。其实论文中给出了比较详细的解释。所有的损失都是使用平方和误差公式,暂时先不看公式中的 λcoord与 λnoobi ,输出的预测数值以及所造成的损失有:

    3.1 预测框的中心点[x,y] 。造成的损失是图五中的第一行。其中Ⅱobj/i j 为控制函数,在标签中包含物体的那些格点处,该值为 1 ;若格点不含有物体,该值为 0。也就是只对那些有真实物体所属的格点进行损失计算,若该格点不包含物体,那么预测数值不对损失函数造成影响。[x,y] 数值与标签用简单的平方和误差。

    3.2 预测框的宽高[w,h] 。造成的损失是图五的第二行。Ⅱobj/i j 的含义同上,也是使得只有真实物体所属的格点才会造成损失。这里对 [w,h] 在损失函数中的处理分别取了根号,原因在于,如果不取根号,损失函数往往更倾向于调整尺寸比较大的预测框。例如,20个像素点的偏差,对于800 * 600的预测框几乎没有影响,此时的IOU数值还是很大,但是对于30 * 40的预测框影响就很大。取根号是为了尽可能的消除大尺寸框与小尺寸框之间的差异。

    3.3 第三行与第四行,都是预测框的置信度C。当该格点不含有物体时,该置信度的标签为0;若含有物体时,该置信度的标签为预测框与真实物体框的IOU数值(IOU计算公式为:两个框交集的面积除以并集的面积)。

    3.4 第五行为物体类别概率P,对应的类别位置,该标签数值为1,其余位置为0,与分类网络相同。

    此时再来看 λcoord与 λnoobi,Yolo面临的物体检测问题,是一个典型的类别数目不均衡的问题。其中49个格点,含有物体的格点往往只有3、4个,其余全是不含有物体的格点。此时如果不采取点措施,那么物体检测的mAP不会太高,因为模型更倾向于不含有物体的格点。λcoord与 λnoobi的作用,就是让含有物体的格点,在损失函数中的权重更大,让模型更加“重视”含有物体的格点所造成的损失。在论文中, λcoord与 λnoobi 的取值分别为5与0.5。

    5,网络中的几个小技巧

    5.1 回归相对位置坐标(offset)代替直接回归坐标

    [x,y] 不直接回归中心点坐标数值,而是回归相对于格点左上角坐标的位移值。例如,第一个格点中物体坐标为 [2.5,3.6] ,这2个数值让神经网络暴力回归,有一定难度。所以这里的offset是指,既然格点已知,那么物体中心点的坐标一定在格点正方形里,相对于格点左上角的位移值一定在区间[0, 1)中。让神经网络去预测 [0.5,0.6] 会更加容易,在使用时,加上格点左上角坐标[2,3]即可。

    5.2 同一格点的不同预测框有不同作用

    前文中提到,每个格点预测两个或多个矩形框。此时假设每个格点预测两个矩形框。那么在训练时,见到一个真实物体,我们是希望两个框都去逼近这个物体的真实矩形框,还是只用一个去逼近?或许通常来想,让两个人一起去做同一件事,比一个人做一件事成功率要高,所以可能会让两个框都去逼近这个真实物体。但是作者没有这样做,在损失函数计算中,只对和真实物体最接近的框计算损失,其余框不进行修正。这样操作之后作者发现,一个格点的两个框在尺寸、长宽比、或者某些类别上逐渐有所分工,总体的召回率有所提升。

    5.3 使用非极大抑制生成预测框

    通常来说,在预测的时候,格点与格点并不会冲突,但是在预测一些大物体或者邻近物体时,会有多个格点预测了同一个物体。此时采用非极大抑制技巧,过滤掉一些重叠的矩形框。但是mAP并没有显著提升。

    5.4 推理时将 p * c作为输出置信度
    在这里插入图片描述
    在推理时,使用物体的类别预测最大值 p 乘以预测框的最大值 c,作为输出预测物体的置信度。这样也可以过滤掉一些大部分重叠的矩形框。输出检测物体的置信度,同时考虑了矩形框与类别,满足阈值的输出更加可信。

    6,与当时已有的算法对比

    在这里插入图片描述
    backbone同为VGG-16,Yolo比Faster R-CNN少了将近7点mAP,但是速度变为三倍,Fast Yolo和Yolo相比,少11点mAP,但是速度可以达到155张图片每秒。后续的Yolo v3中,准确率和速度综合再一次提升,所以v1的性能不再过多分析。

    下面重点看论文中的错误分析:

    在这里插入图片描述
    首先给出图中各个单词的含义:

    • Correct: correct class and IOU > .5
    • Localization: correct class, .1 < IOU < .5
    • Similar: class is similar, IOU > .1
    • Other: class is wrong, IOU > .1
    • Background: IOU < .1 for any object

    其中,Yolo的Localization错误率更高,直接对位置进行回归,确实不如滑窗式的检测方式准确率高。但是Yolo对于背景的误检率更低,由于Yolo在推理时,可以“看到”整张图片,所以能够更好的区分背景与待测物体。作者提到Yolo对于小物体检测效果欠佳,不过在v2与v3中都做了不少改进。

    三,参考资料

    1,yolov1原论文:You Only Look Once: Unified, Real-Time Object Detection
    2,Yolo三部曲解读-Yolov1

    展开全文
  • YOLOv1.rar

    2020-08-18 20:04:35
    里面有YOLOv1的原论文,YOLOv1作者做的PPT以及我自己对YOLOv1的解读,现在此和大家分享。
  • yolov1~yolov3

    2021-04-29 23:12:41
    yolov1~yolov3讲解(非常细致):https://www.bilibili.com/video/BV1yi4y1g7ro?from=search&seid=8497891809201029977
  • YOLOv1、YOLOv2和YOLOv3对比

    千次阅读 2020-06-06 10:04:22
    YOLOv1、YOLOv2和YOLOv3对比R-CNN系列YOLOv1结构目标输出网络训练YOLOv1的局限性和R-CNN系列的对比YOLOv2结构目标输出网络训练关于YOLO9000YOLOv3结构目标输出网络训练YOLOv3系统做过的不成功的尝试未来 YOLO深度...
  • 2.4 性能表现 三、巅峰之作:YOLOv3 3.1 简介 3.2 网络结构 3.3 改进之处 3.4 性能表现 四、大神接棒:YOLOv4 4.1 简介 4.2 网络结构 4.3 各种Tricks总结 4.4 改进方法 4.5 性能表现 一、开山之作:YOLOv1 1.1 简介 ...
  • YOLOv1-YOLOv4

    2021-03-24 20:20:35
    一、开山之作:YOLOv1 1.1 简介 在YOLOv1提出之前,R-CNN系列算法在目标检测领域独占鳌头。R-CNN系列检测精度高,但是由于其网络结构是双阶段(two-stage)的特点,使得它的检测速度不能满足实时性,饱受诟病...
  • YOLOv1到YOLOv3,目标检测的进化之路

    万次阅读 多人点赞 2018-06-04 18:11:14
    本文来自 CSDN 网站,作者 EasonApp。作者专栏: http://dwz.cn/7ZGrifYOLOv1这是继 RCNN,fast-RCNN 和 faster-...
  • 简述YOLOV1 YOLOV2 YOLOV3

    2019-04-26 17:48:31
    1 yolov1 (1)每个grid cell 预测 2 个BBOX。 (2) 输入图片(448 X 448 X 3) ——> 7 X 7 X 30 30 = (2 X 5 + 20) 5 —> (x, y, w, h, score) (3)不适于小目标和密集目标检测。 (4)Loss (5) ...
  • 带有Tensorflow 2的YOLOv1 为了易于实现,我没有实现与纸张完全相同的实现。 下面介绍的内容与本文的实现方式有所不同。 骨干网。 (我使用Xception代替了本文中提到的网络。) 学习率表(我使用了tf.keras....
  • YOLO系列:YOLOv1,YOLOv2,YOLOv3,YOLOv4,YOLOv5简介YOLO系列是基于深度学习的回归方法。RCNN, Fast-RCNN,Faster-RCNN是基于深度学习的分类方法。YOLO官网:https://github.com/pjreddie/darknet​github.comYOLO v...
  • yolov1模型文件

    2018-12-28 11:49:15
    yolov1模型文件,转为keras可以支持的h5文件,可以作为预训练权重
  • yolov1.cfg

    2020-04-29 11:16:42
    在进行目标检测学习过程中,跑典型的算法yolov1,需要加载神经网络中不同类型的层的配置参数包括batch_size, width,height,channel,momentum,decay,learning_rate等,需要这个配置文件
  • YOLOv1学习笔记

    2020-02-13 18:52:20
    YOLOv1学习笔记一、YOLOv1特点与性能二、YOLOv1的系统结构三、YOLOv1的优点四、YOLOv1的缺点五、YOLOv1的检测六、YOLOv1的网络结构七、YOLOv1的损失函数八、YOLOv1的测试过程参考 论文题目:You Only Look Once:...
  • YOLOV1到YOLOV3

    千次阅读 2019-08-14 13:38:00
    YOLOv1 YOLOv1把输入图片切分成s×s个grid cell,每个grid cell只预测一个物体。如图所示:黄色grid cell会预测中心坐标点落入其中的这个person物体。 注意这里的grid cell只是在图像上看起来是一个方格,实际是原...
  • YOLOv1到YOLOv3系列

    2019-02-21 15:55:31
    最近看了YOLO检测相关内容,找到一些讲解还不错的内容,记录保存一下。... YOLOv1 https://pjreddie.com/darknet/yolov1/ https://github.com/pjreddie/darknet https://arxiv.org/abs/1506.02640 YO...
  • yolov1 使用pytorch的yolo v1工具
  • Yolov1 参考资料链接:https://www.jianshu.com/p/cad68ca85e27 将一幅图像分成S*S个网格(grid cell),如果某个object的中心落在这个网格中,则这个网格就负责预测这个object。 个人理解:将图像分成S*S的网格...
  • YoLov1-YoLov3
  • yolov1-车辆位置检测

    2021-05-17 10:13:50
    1、含有车辆数据集:训练集8k张,测试集8k张。 2、keras实现yolov1框架。 3、源码,无调用函数,可以自己训练得到模型权重。
  • yolov1算法笔记.doc

    2020-04-14 16:39:22
    自己看完yolov1算法之后的做的一点小笔记,谢谢
  • yolov1总结

    2019-06-29 21:35:25
    https://blog.csdn.net/u014380165/article/details/72616238 ... Yolov1 流程图 假设输入图像 [1,3,448,448]–>backbone Net–>[1,2048,7,7]–>[1,B(1+4...
  • yolov1的tensorflow实现

    2018-08-07 16:02:30
    yolov1的tensorflow实现,我对其做了完整的注释,针对于入门的同学,下载即可运行
  • tiny_yolov1_voc

    2021-05-26 17:24:12
    利用tiny_yolov1模型对VOC2007数据集进行目标检测。 训练分为4轮,不断尝试调整学习率,最后val loss=71已经达到瓶颈。 检测效果大体上满意。
  • 深度学习: 从YOLOv1到YOLOv3

    千次阅读 2018-04-22 15:48:18
    YOLOv1到YOLOv3,YOLO系独树一帜,自成一派,是检测算法领域的一股清流。 YOLOv1 论文地址:You Only Look Once: Unified, Real-Time Object Detection 是one-stage系检测算法的鼻祖。即只通过一个stage就...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,045
精华内容 2,818
关键字:

yolov1