【光电智造】YOLO系列的演进,从v1到v7

今日光电 2023-03-24 18:00
今日光电
       有人说,20世纪是电的世纪,21世纪是光的世纪;知光解电,再小的个体都可以被赋能。欢迎来到今日光电!



----与智者为伍 为创新赋能----

作者:Maxim Ivanov

编译:ronghuaiyang

转自:AI公园

导读

经典再回顾,本文介绍v1到v3。


如果你需要速度快的目标检测器,那么 YOLO 系列的神经网络模型实际上是当今的标准。

解决检测问题还有很多其他优秀的模型,但我们不会在这篇综述中涉及它们。

目前,已经写了相当多的文章来分析 YOLO 各个版本的功能。本文的目的是对整个家族进行比较分析。我们想看看架构的演变,这样我们就可以更好地了解检测器是如何发展,哪些发展提高了性能,也许还可以想象事情的发展方向。

在YOLO出现之前,检测图像中目标的主要方法是使用各种大小的滑动窗口按顺序穿过原始图像的各个部分,以便分类器给出图像的哪个部分包含哪个目标。这种方法是合乎逻辑的,但非常慢。

一段时间之后,出现了一个特殊的部分,它暴露了感兴趣的区域 —— 一些假设,图像上可能有有趣的东西。但是这些感兴趣区域还是太多,有数千个。最快的算法,Faster R-CNN,平均在0.2秒内处理一张图片,每秒5帧。总的来说,在出现一种全新的方法之前,速度不容乐观。

有什么新奇之处?

在以前的方法中,原始图像的每个像素可以被神经网络处理数百甚至数千次。每次这些像素都通过相同的神经网络传递,经过相同的计算。是否可以做一些事情以免重复相同的计算?

事实证明,这是可能的。但为此,我们不得不稍微重新表述问题。如果说以前它是一个分类任务,那么现在它变成了一个回归任务。

YOLO aka YOLOv1

让我们考虑第一个 YOLO 模型,也称为 YOLOv1。

作者

Joseph Redmon, Santosh Divvala, Ross Girshick, Ali Farhadi

主要论文

“You Only Look Once: Unified, Real-Time Object Detection”, publication date 2015/06

代码库

除了基于darknet框架的官方实现之外,在其他通用框架上还有大量各种流行的实现。

  1. https://pjreddie.com/darknet/yolov1/
  2. https://github.com/thtrieu/darkflow, 2.1k forks / 6k stars, GPL-3.0 license
  3. https://github.com/gliese581gg/YOLO_tensorflow, 670 forks / 1.7k stars, non-commercial license
  4. https://github.com/hizhangp/yolo_tensorflow, 455 forks / 784 stars
  5. https://github.com/nilboy/tensorflow-yolo, 331 forks / 780 stars
  6. https://github.com/abeardear/pytorch-YOLO-v1, 214 forks / 473 stars, MIT license
  7. https://github.com/dshahrokhian/YOLO_tensorflow, 22 forks / 42 stars

性能比较

Pascal VOC 2007上的实时系统。YOLO是有记录以来最快的Pascal VOC检测检测器,其准确性仍然是任何其他实时检测器的两倍。

结构

在结构上,YOLO 模型由以下部分组成:

  1. input ― 输入图像被馈送到的输入层
  2. backbone — 输入图像以特征形式编码的部分。
  3. neck — 这是模型的其他部分,用于处理按特征编码的图像
  4. head — 生成模型预测的一个或多个输出层。

该网络的第一个版本基于GoogLeNet的架构。卷积层接MaxPool层级联,最后以两个全连接层的级联作为结束。

此外,作者训练了Fast YOLO架构的更快版本,包含更少的卷积层(9而不是24)。两个模型的输入分辨率均为 448x448,但网络主要部分的预训练通过分辨率为 224x224 的分类器训练。

在此结构中,原始图片被划分为 S x S 单元格(在原始 7 x 7 中),每个单元格预测 B 个边界框,这些 bbox 中存在目标的置信度,以及 C 类的概率。每条边的单元格数是奇数,因此图像的中心有一个单元格。这比偶数具有优势,因为照片的中心通常有一个主要目标,在这种情况下,主要的预测是在中心单元格中进行的。在区域数量为偶数的情况下,中心可能位于四个中央区域中的某个位置,这降低了网络的置信水平。

置信度值表示模型对给定 bbox 包含某个目标的置信度,以及 bbox 预测其位置的准确度。事实上,这是IoU存在物体概率的乘积。如果单元格中没有目标,则置信度为零。

每个 bbox 由 5 个数字组成:x、y、w、h 和置信度。(x, y)为单元格内 bbox 中心的坐标,w 和 h为 bbox相对于整个图片尺寸的归一化的宽度和高度,即归一化从 0 到 1 的值。置信度是预测的 bbox 和GT框之间的 IoU。每个单元格还预测目标类的 C 个条件概率。每个单元格仅预测一组类别,而不考虑 bbox的数量。

因此,在一次前向中,预测了 S×S×B个包围框。他们中的大多数框的置信度都很低,但是,通过设置一定的阈值,我们可以去除其中的很大一部分。但最重要的是,(与竞争对手相比)检测率提高了几个数量级。这是非常合乎逻辑的,因为所有类别的所有 bbox 现在只需一次预测。对于不同的实现,原始文章给出了从 45 到 155 的FPS。尽管与以前的算法相比,mAP的准确性仍然有所下降,但在某些问题中,实时检测更为重要。

得到检测框

由于与物体中心相邻的单元格也可以产生bbox,从而导致框过多,因此有必要选择其中最好的。为此,使用NMS技术,其工作原理如下。此类的所有 bbox,置信度低于给定阈值的那些将被丢弃。对于其余部分,执行IoU的成对比较过程。如果两个框的 IoU > 0.5,则丢弃置信度较低的框。否则,两个框都会保留在列表中。因此,类似的框被抑制了。

损失函数是组合的,具有以下形式:

第一项是目标中心坐标的损失,第二项是框尺寸的损失,第三项是目标的类损失,如果目标不存在,则第四项是类的损失,第五项是在框中找到某个目标的概率。

需要 lambda 系数来防止置信度变为零,因为大多数单元格中没有目标。1(obj,i) 表示的中心是否出现在单元格 i 中,1(obj,i,j) 表示单元格 i 中的第 j 个 bbox 负责此预测。

优势

高速

  • 比当时的竞争对手更好的泛化能力,在另一个领域进行测试(训练是在ImageNet上进行的)显示出更好的性能。
  • 图像背景部分的误报更少。

局限性

  • 每个单元格 2 个 bbox 和一个类目标的限制。这意味着一堆小物体的识别度较低。
  • 原始图像的几个连续下采样导致精度不高。
  • 损失的设计方式是,它对大框和小框的错误具有同样惩罚。作者试图通过取尺寸大小的根来补偿这种影响,但这并没有完全消除这种影响。

YOLOv2 / YOLO9000

作者

Joseph Redmon, Ali Farhadi

主要论文

“YOLO9000: Better, Faster, Stronger”, publication date 2016/12

代码仓库

  1. https://pjreddie.com/darknet/yolov2/
  2. https://github.com/experiencor/keras-yolo2, 795 forks / 1.7k stars, MIT license
  3. https://github.com/longcw/yolo2-pytorch, 417 forks / 1.5k stars
  4. https://github.com/philipperemy/yolo-9000, 309 forks / 1.1k stars, Apache-2.0 license

性能比较

Pascal VOC 2007的检测框架。YOLOv2 比以前的检测方法更快、更准确。它还可以以不同的分辨率运行,以便在速度和准确性之间轻松权衡。每个 YOLOv2 条目实际上是具有相同权重的相同训练模型,只是以不同的大小进行评估。所有计时信息均在 Geforce GTX Titan X 上测试。

结构特点

  1. 作者对模型的第一个版本进行了一些改进。

  2. 删除了 dropout,并在所有卷积层中添加了BN。

  3. 预训练为分辨率为 448x448 的分类器(YOLOv1 分辨率为 224x224),然后将最终网络缩小到 416x416 输入,以产生奇数个 13x13 单元。

  4. 删除了全连接层。相反,他们开始使用全卷积和锚框来预测bbox(如Faster RCNN)。这样可以减少空间信息的丢失(就像在 v1 中的全连接层中一样)。

  5. 删除了一个最大池化以增加特征的细节(分辨率)。在 v1 中,每张图片只有 98 个 bbox,使用 V2 中的锚点,结果有超过 1000 个 bbox,而 mAP 略有下降,但召回率显著增加,这使得提高整体准确性成为可能。

  6. 维度先验。bbox的大小和位置不是像FasterRCNN那样随机手动选择的,而是通过k-means聚类自动选择的。尽管在小bbox上使用具有欧氏距离的标准k均值,但检测误差更高,因此对于k均值,选择了另一个距离度量,1 - IoU(box,质心)。选择5个作为分组数目的折衷方案。测试表明,对于以这种方式选择的 5 个质心,平均 IoU 与 9 个锚点大致相同。

  7. 直接位置预测。最初,对于锚,与确定中心(x,y)坐标相关的网络训练存在不稳定性:由于网络权重是随机初始化的,并且坐标预测是线性的,大小是没有限制的。因此,我们没有预测相对于锚中心的偏移量,其中系数的正确范围是 [-1,1],而是决定预测 bbox 相对于单元格中心的偏移,范围 [0,1],并使用 sigmoid 来限制它。网络为每个单元格预测 5 个 bbox,每个 bbox 5 个数字:tx、ty、tw、th、to。bbox 的预测参数计算如下:

具有维度先验和位置预测的边界框。我们将框的宽度和高度预测为聚类质心的偏移量。我们使用 sigmoid 函数预测框相对于中心坐标的偏移。

  1. 细粒度特征。特征映射现在为 13x13。
  2. 多尺度训练。由于网络是全卷积的,因此只需更改输入图像的分辨率即可动态更改其分辨率。为了提高网络的鲁棒性,其输入分辨率每 10 批次更改一次。由于网络缩小了 32 倍,因此输入分辨率是从集合 {320, 352, ..., 608} 中选择的。网络的大小从 320x320 调整为 608x608。
  3. 加速。VGG-16作为v1的骨干,太重了,所以在第二个版本中使用了darknet-19:

训练分类器后,从网络中删除最后一个卷积层,添加三个具有 1024 个滤波器的 3x3 卷积层和一个具有检测所需输出数量的最终 1x1的卷积层。在 VOC 的情况下,它是 5 个 bbox,每个 bbox 有 5 个坐标,每个 bbox 有 20 个类,总共有 125 个滤波器。

  1. 分层分类。在 v1 中,这些类属于同一类目标并且是互斥的,而在 v2 中引入了 WordNet 树结构,这是一个有向图。每个类别中的类都是互斥的,并且有自己的softmax。因此,例如,如果图片显示已知品种网络的狗,则网络将返回狗和特定品种的类。如果是网络未知品种的狗,那么它只会返回狗的类别。因此,训练了 YOLO9000,它是具有 3 个先验的 v2,而不是 5 个和 9418 个目标类。

ImageNet vs WordTree上的预测。大多数 ImageNet 模型使用一个大的 softmax 来预测概率分布。使用WordTree,我们对共同下义词执行多个softmax操作。

使用 WordTree 层次结构合并数据集。使用WordNet概念图,我们构建了一个视觉概念的分层树。然后,我们可以通过将数据集中的类映射到树中的合成集来将数据集合并在一起。这是 WordTree 的简化视图,用于说明目的。

优势

  • 现在它不仅是速度方面的 SOTA,而且在 mAP 方面也是。
  • 现在可以更好地检测小物体。

YOLOv3

作者

Joseph Redmon, Ali Farhadi

主要论文

“YOLOv3: An Incremental Improvement”, publication date 2018/04

代码仓库

  1. https://pjreddie.com/darknet/yolo/, all-permissive license
  2. https://github.com/ultralytics/yolov3, 3.3k forks / 8.9k stars, GPL-3.0 license
  3. https://github.com/eriklindernoren/PyTorch-YOLOv3, 2.6k forks / 6.8k stars, GPL-3.0 license

性能比较

YOLOv3 的运行速度明显快于具有相当性能的其他检测方法。从M40或Titan X开始,它们基本上是相同的GPU。

结构

这是模型的增量更新,即没有根本上更改,只有一组改进技巧。

  1. 每个 bbox 的置信度得分,即给定 bbox 中存在目标的概率,现在也使用 sigmoid 计算。
  2. 作者从多类分类切换到多标签,所以我们摆脱了softmax,转而支持二进制交叉熵。
  3. 在三个尺度上对 bbox 进行预测,输出张量大小:N * N * (3 * (4 + 1 + num_classes))
  4. 作者使用k均值重新计算先验框,并在三个尺度上得到了9个bbox。
  5. 新的、更深、更准确的骨干/特征提取器Darknet-53。

  1. 在准确性方面,它与 ResNet-152 相当,但由于更有效地使用 GPU,它所需的操作减少了近 1.5 倍,产生的 FPS 提高了 2 倍。

总体结构

不起作用的方法

  • BBOX 通过线性激活函数而不是logistic激活函数来协调位移预测。
  • focal loss — mAP 下降了 2 点。
  • 用于确定GT的双 IoU — 在 Faster R-CNN 中,IOU 有两个阈值,通过该阈值确定正样本或负样本(>0.7 正值,0.3-0.7 忽略,<0.3 负样本)

优势

  • 发布时的检测精度高于竞争对手
  • 发布时的检测率高于竞争对手

英文原文:https://medium.com/deelvin-machine-learning/the-evolution-of-the-yolo-neural-networks-family-from-v1-to-v7-48dd98702a3d

声明:部分内容来源于网络,仅供读者学习、交流之目的。文章版权归原作者所有。如有不妥,请联系删除。

来源:新机器视觉


申明:感谢原创作者的辛勤付出。本号转载的文章均会在文中注明,若遇到版权问题请联系我们处理。


 

----与智者为伍 为创新赋能----


【说明】欢迎企业和个人洽谈合作,投稿发文。欢迎联系我们
诚招运营合伙人 ,对新媒体感兴趣,对光电产业和行业感兴趣。非常有意者通过以下方式联我们!条件待遇面谈
投稿丨合作丨咨询

联系邮箱:uestcwxd@126.com

QQ:493826566


评论
  • 数字隔离芯片是一种实现电气隔离功能的集成电路,在工业自动化、汽车电子、光伏储能与电力通信等领域的电气系统中发挥着至关重要的作用。其不仅可令高、低压系统之间相互独立,提高低压系统的抗干扰能力,同时还可确保高、低压系统之间的安全交互,使系统稳定工作,并避免操作者遭受来自高压系统的电击伤害。典型数字隔离芯片的简化原理图值得一提的是,数字隔离芯片历经多年发展,其应用范围已十分广泛,凡涉及到在高、低压系统之间进行信号传输的场景中基本都需要应用到此种芯片。那么,电气工程师在进行电路设计时到底该如何评估选择一
    华普微HOPERF 2025-01-20 16:50 119浏览
  • 现在为止,我们已经完成了Purple Pi OH主板的串口调试和部分配件的连接,接下来,让我们趁热打铁,完成剩余配件的连接!注:配件连接前请断开主板所有供电,避免敏感电路损坏!1.1 耳机接口主板有一路OTMP 标准四节耳机座J6,具备进行音频输出及录音功能,接入耳机后声音将优先从耳机输出,如下图所示:1.21.2 相机接口MIPI CSI 接口如上图所示,支持OV5648 和OV8858 摄像头模组。接入摄像头模组后,使用系统相机软件打开相机拍照和录像,如下图所示:1.3 以太网接口主板有一路
    Industio_触觉智能 2025-01-20 11:04 192浏览
  • 临近春节,各方社交及应酬也变得多起来了,甚至一月份就排满了各式约见。有的是关系好的专业朋友的周末“恳谈会”,基本是关于2025年经济预判的话题,以及如何稳定工作等话题;但更多的预约是来自几个客户老板及副总裁们的见面,他们为今年的经济预判与企业发展焦虑而来。在聊天过程中,我发现今年的聊天有个很有意思的“点”,挺多人尤其关心我到底是怎么成长成现在的多领域风格的,还能掌握一些经济趋势的分析能力,到底学过哪些专业、在企业管过哪些具体事情?单单就这个一个月内,我就重复了数次“为什么”,再辅以我上次写的:《
    牛言喵语 2025-01-22 17:10 162浏览
  • 嘿,咱来聊聊RISC-V MCU技术哈。 这RISC-V MCU技术呢,简单来说就是基于一个叫RISC-V的指令集架构做出的微控制器技术。RISC-V这个啊,2010年的时候,是加州大学伯克利分校的研究团队弄出来的,目的就是想搞个新的、开放的指令集架构,能跟上现代计算的需要。到了2015年,专门成立了个RISC-V基金会,让这个架构更标准,也更好地推广开了。这几年啊,这个RISC-V的生态系统发展得可快了,好多公司和机构都加入了RISC-V International,还推出了不少RISC-V
    丙丁先生 2025-01-21 12:10 499浏览
  • 本文介绍瑞芯微开发板/主板Android配置APK默认开启性能模式方法,开启性能模式后,APK的CPU使用优先级会有所提高。触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。源码修改修改源码根目录下文件device/rockchip/rk3562/package_performance.xml并添加以下内容,注意"+"号为添加内容,"com.tencent.mm"为AP
    Industio_触觉智能 2025-01-17 14:09 194浏览
  • 故障现象 一辆2007款日产天籁车,搭载VQ23发动机(气缸编号如图1所示,点火顺序为1-2-3-4-5-6),累计行驶里程约为21万km。车主反映,该车起步加速时偶尔抖动,且行驶中加速无力。 图1 VQ23发动机的气缸编号 故障诊断接车后试车,发动机怠速运转平稳,但只要换挡起步,稍微踩下一点加速踏板,就能感觉到车身明显抖动。用故障检测仪检测,发动机控制模块(ECM)无故障代码存储,且无失火数据流。用虹科Pico汽车示波器测量气缸1点火信号(COP点火信号)和曲轴位置传感器信
    虹科Pico汽车示波器 2025-01-23 10:46 61浏览
  • 高速先生成员--黄刚这不马上就要过年了嘛,高速先生就不打算给大家上难度了,整一篇简单但很实用的文章给大伙瞧瞧好了。相信这个标题一出来,尤其对于PCB设计工程师来说,心就立马凉了半截。他们辛辛苦苦进行PCB的过孔设计,高速先生居然说设计多大的过孔他们不关心!另外估计这时候就跳出很多“挑刺”的粉丝了哈,因为翻看很多以往的文章,高速先生都表达了过孔孔径对高速性能的影响是很大的哦!咋滴,今天居然说孔径不关心了?别,别急哈,听高速先生在这篇文章中娓娓道来。首先还是要对各位设计工程师的设计表示肯定,毕竟像我
    一博科技 2025-01-21 16:17 151浏览
  •  万万没想到!科幻电影中的人形机器人,正在一步步走进我们人类的日常生活中来了。1月17日,乐聚将第100台全尺寸人形机器人交付北汽越野车,再次吹响了人形机器人疯狂进厂打工的号角。无独有尔,银河通用机器人作为一家成立不到两年时间的创业公司,在短短一年多时间内推出革命性的第一代产品Galbot G1,这是一款轮式、双臂、身体可折叠的人形机器人,得到了美团战投、经纬创投、IDG资本等众多投资方的认可。作为一家成立仅仅只有两年多时间的企业,智元机器人也把机器人从梦想带进了现实。2024年8月1
    刘旷 2025-01-21 11:15 633浏览
  •     IPC-2581是基于ODB++标准、结合PCB行业特点而指定的PCB加工文件规范。    IPC-2581旨在替代CAM350格式,成为PCB加工行业的新的工业规范。    有一些免费软件,可以查看(不可修改)IPC-2581数据文件。这些软件典型用途是工艺校核。    1. Vu2581        出品:Downstream     
    电子知识打边炉 2025-01-22 11:12 119浏览
  • 2024年是很平淡的一年,能保住饭碗就是万幸了,公司业绩不好,跳槽又不敢跳,还有一个原因就是老板对我们这些员工还是很好的,碍于人情也不能在公司困难时去雪上加霜。在工作其间遇到的大问题没有,小问题还是有不少,这里就举一两个来说一下。第一个就是,先看下下面的这个封装,你能猜出它的引脚间距是多少吗?这种排线座比较常规的是0.6mm间距(即排线是0.3mm间距)的,而这个规格也是我们用得最多的,所以我们按惯性思维来看的话,就会认为这个座子就是0.6mm间距的,这样往往就不会去细看规格书了,所以这次的运气
    wuliangu 2025-01-21 00:15 300浏览
  • Ubuntu20.04默认情况下为root账号自动登录,本文介绍如何取消root账号自动登录,改为通过输入账号密码登录,使用触觉智能EVB3568鸿蒙开发板演示,搭载瑞芯微RK3568,四核A55处理器,主频2.0Ghz,1T算力NPU;支持OpenHarmony5.0及Linux、Android等操作系统,接口丰富,开发评估快人一步!添加新账号1、使用adduser命令来添加新用户,用户名以industio为例,系统会提示设置密码以及其他信息,您可以根据需要填写或跳过,命令如下:root@id
    Industio_触觉智能 2025-01-17 14:14 142浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦