Day 17 - YOLO 相关概念说明

如果不说明一下 YOLO 的运作概念,对于如何调整 YOLO 参数将会是一筹莫展,所以今天就来说明一下影像辨识的基础概念一直到 YOLO 的运作概念

人工智慧、机器学习与深度学习

影像识别其实是深度学习的一种应用,而深度学习是机器学习的一个子集,机器学习则是包含在人工智慧这个大范围内。人工智慧当初的发想是希望透过计算机来取代人类的许多能力,可以包含五感,如视觉、听觉、嗅觉、味觉和触-压觉五种感官的感知,在透过大脑的思考来进行判断,广义上可以这样思考。而机器学习则势将这样的想法具体化成

  • 监督式学习:已经知道答案(标签),然后透过演算法来训练机器来学习如何从特征中找出答案,因为知道答案,所以比较容易评估演算法的表现。
  • 非监督式学习:不知道答案,所以我们就透过演算法想办法凑出答案,常见的作法就是聚类 (clustering)。
  • 强化学习:透过摸索、试误,并根据环境的回馈,来找出最佳答案。

这些学习的目的都是为了让机器可以协助人类进行判断,进而找出最佳答案,那现在问题来了,什么是答案?简单来分,答案有两种,比方说,明天会不会下雨,可以说 80% 会下雨,或是说会下雨,专业一点的说法是一种是离散,一种是类别。

以下以 BMI 的标准来想像所谓的机器学习,假设我们不知道 BMI 的公式,而我们的到这样一张表格,体重状况就是的答案(标签)也就是我们要预测的目标,而 体重身高性别年纪,就是特征,现在就是要透过这些特征来找出第四笔资料应该是什么内容?很明显的,这就是一个监督式机器学习,而且是属于类别形的判断。机器学习的过程希望找出一个函数(模型),让我们将体重身高性别年纪等特征输入进去后,可以得到一个结果,可能是就是正常、过重或过轻。

体重状况 体重 身高 性别 年纪
正常 70 178 50
过重 77 165 40
过轻 45 170 30
60 168 50

于是就有人想出,那能不能把整个判断式想成以下这个方程式,那问题就变得很简单,就是只要找出权重值就好。

hw(x)=w0x0+w1x1+⋯+wdxd=∑i=0Dwdxdh_w(x)=w_0 x_0 + w_1 x_1 + \dots + w_d x_d=\sum_{i=0}^{D} w_d x_dhw​(x)=w0​x0​+w1​x1​+⋯+wd​xd​=∑i=0D​wd​xd​
其中:

  • x0,x1,…,xdx_0, x_1, \dots, x_dx0​,x1​,…,xd​为特征,DDD为特征的总数,以这个例子来说就是4
  • w0,w1,…,wdw_0, w_1, \dots, w_dw0​,w1​,…,wd​为权重参数
  • hw(x)h_w(x)hw​(x)代表判别式,用于根据传入的特征预测输出结果
  • x0x_0x0​称为偏置项(intercept term/bias term),一般设置为1即可

面对上面这样的问题,很明显的我们需要做很多资料前处理的动作,比方说把男、女,转换成数值,当然,输出的结果(体重状况)也应该是个数值。这就是一个很典型的机器学习的例子,找出特征,处理标签等等的,相信有很多人都可以发现,年纪似乎不是 BMI 计算的数值内容,性别也不是,这就是所谓特征的相关性的问题,特征与标签相关性的问题,把所有搞机器学习的人搞疯了,因为要进行机器学习之前必须先找出特征,这导致很多机器学习的研究停滞不前了。后来,竟然有人想说,那是不是可以建立一个模型,让这个模型自己找出资料的特征,于是深度学习就出现了。透过一连串神奇的操作后,特征就自己跑出来了,而常见的技术就是 CNN, DNN。

关键名词解释

训练模型

卷积神经网路(Convolutional Neural Network, CNN):是 YOLO 应用的主要技术,透过 CNN 先找出符合的物体,之后再判断哪一区域有符合的物体,且机率最高,即将该区域以方框标注。以下大致描述一下 CNN 的内容。

卷积神经网路由一个或多个卷积层 (Convolutional) 和顶端的全连通层 (full-connection)(对应经典的神经网路)组成,同时也包括关联权重和池化层(pooling layer)。这一结构使得卷积神经网路能够利用输入资料的二维结构。与其他深度学习结构相比,卷积神经网路在图像和语音辨识方面能够给出更好的结果。下图就是 YOLOv3 用来萃取特征的 darknet-53 的 53 层 CNN 网路,其中的 Residual 指的是残差层,主要是用来避免网路层数过多而造成的缺点。卷积神经网路(例如Alexnet、VGG网路)在网路的最后通常为 softmax 分类器。微调(fine-tuning)一般用来调整 softmax 分类器的分类数。例如原网路可以分类出 2 种图像,需要增加 1 个新的分类从而使网路可以分类出3种图像。微调可以留用之前训练的大多数参数,从而达到快速训练收敛的效果。例如保留各个卷积层,只重构卷积层后的全连接层与 softmax 层即可。


图 1、YOLOv3 的 darknet53

  • 卷积层:是一组平行的特征图(feature map),它通过在输入图像上滑动不同的卷积核并执行一定的运算而组成。
  • 池化层(Pooling):它实际上是一种非线性形式的降采样。
  • 激励层:线性整流层(Rectified Linear Units layer, ReLU layer),主要可以增强判定函式和整个神经网路的非线性特性,而本身并不会改变卷积层。
  • 完全连接层:最后,在经过几个卷积和最大池化层之后,神经网路中的进阶推理通过完全连接层来完成。

训练过程

  • 期 (epoch):1 个 epoch 等于使用训练集中的全部样本训练一次。
  • 批次尺寸 (batchsize):一次训练的样本数目。
  • 细分 (subdivisions):一次批次可以细分成几次放入记忆体内。
  • 迭代 (iteration):一个 iteration 等于使用 batchsize 个样本训练一次;

epoch=(全部训练样本/batchsize)/iteration

举个例子,训练集有 1000 个样本,batchsize = 10,那么训练完整个样本集(1次epoch)需要:100 次iteration。

1 = (1000 / 10) / 100

而通常在调整参数时,batchsize 是可以被调整的,考量的基础如下:

1.通过并行化提高记忆体利用率。
2.单次 epoch 的迭代次数减少,提高执行速度。
3.适当的 batchsize,可以使梯度下降方向准确度增加,训练震动的幅度减小。

但明显的是 batchsize 的大小是跟记忆体相关的。

成效评估

下图是根据 YOLOv3 的论文中撷取出来的图片,只能说这是给天才看的,我这个凡人实在无法想像,把关键线条画在图表的左边是什么意思,执行时间是负的吗?因此,又找了一张图,是 YOLOV4 的作者画出来的,比较人性化了,可以发现 YOLOV3 速度是够快,但精准度似乎有点差强人意,这是在 Nvidia V100 的 GPU 运算速度。现在我们需要理解的就是,何谓 mAP。


图 2、YOLOV3与多种影像辨识模型在微软的COCO资料集的效能表现


图 3、多种影像辨识模型在微软的COCO资料集的效能表现

预测结果可以细分为:

  • True:表示实际结果与预测结果一致(预测正确)。
  • False:表示实际结果和预测结果不一致(预测错误)。
  • Positive:表示预测为 1。
  • Negative:表示预测为 0。

上述各中情况将分别简写为:TP, FP, TN, FN。因此:

  • TP:模型预测结果为P(Positive, 1),实际结果为 1,预测正确 (True)。
  • FP:模型预测结果为P(Positive, 1),实际结果为 0,预测错误 (False)。
  • TN:模型预测结果为N(Negtive, 0),实际结果为 0,预测正确 (True)。
  • FN:模型预测结果为N(Negtive, 0),实际结果为 1,,预测错误 (False)。

根据上方情况,定义出以下的衡量指标:

  • 正确率:Accuracy=#TP+#TN#TP+#FP+#TN+#FNAccuracy=\frac{\#TP+\#TN}{\#TP+\#FP+\#TN+\#FN}Accuracy=#TP+#FP+#TN+#FN#TP+#TN​

    • 体现了预测正确的样本数占总样本数的比重
  • 精度:Precision=#TP#TP+#FPPrecision= \frac{\#TP}{\#TP+\#FP}Precision=#TP+#FP#TP​
    • 体现了预测为目标物且实际上也确实为目标物的比例。 Precision 有另一个名字称作 Positive predictive value (PPV),它反映 「误报」 程度:精度越高,误报越小。
  • 查全率:Recall=#TP#TP+#FNRecall = \frac{\#TP}{\#TP+\#FN}Recall=#TP+#FN#TP​
    • 体现了:实际为目标物也确实被预测为目标物的比例,可以得知模型找出目标物的能力。 Recall 也有另一个名字称作 Sensitivity。它反映 「漏报」 程度:查全率越高,漏报越少
  • F1Score=2PRP+RF1 Score = \dfrac{2 PR}{P+R}F1Score=P+R2PR​
    • 其中,P 为 Precision, R 为 Recall
    • 在针对 Validation Data 进行对比时,应选择 F1 Score 最大的那个判别式来作为最优解

物体侦测除了要判断影像中的所有物体各自属于哪个类别之外,还要找出物体的位置。可想而知模型的好坏不能只单靠准确率来做判断,因此我们需要其他评估方式来判定模型的物体侦测能力。
Intersection over Union (IoU)
IoU=AreaofOverlapAreaofUnionIoU = \dfrac{Area of Overlap}{Area of Union}IoU=AreaofUnionAreaofOverlap​

IoU 的概念还满简单的,就是评估预测的方块框 (bounding box) 与 真实的方块框 (ground-truth bounding box) 是否重叠的指标。一般情况下,如果预测的方块框被预测为确实有目标物存在,而且 IoU ≧ 0.5 (此 threshold 会依情况有所调整) 我们就认定此 bounding box 为 TP (True Positive),反之则为 FP (False Positive)。根据这个判断可以算出 Precision 跟 recall,而 AP (Average Precision) 就是计算 Precision-recall curve 底下的面积。详细的计算可以参考 mean Average Precision (mAP) — 评估物体侦测模型好坏的指标。


图 4、Average Precision的计算

mean Average Precision (mAP) 指的应该是当我们计算每一个类别的 AP 之后再作平均就会得到 mAP。以coco数据集来说,它有 80 个类别。

参考资料

  • 卷積神經網路,https://zh.wikipedia.org/wiki/卷積神經網路
  • (深度學習)ResNet之殘差學習,https://medium.com/@hupinwei/深度學習-resnet之殘差學習-f3ac36701b2f
  • 详解残差网络,https://zhuanlan.zhihu.com/p/42706477
  • Epoch, Batch size, Iteration, Learning Rate,https://medium.com/人工智慧-倒底有多智慧/epoch-batch-size-iteration-learning-rate-b62bf6334c49
  • 神經網路中Epoch、Iteration、Batchsize相關理解和說明,https://codertw.com/程式語言/557816/#outline__3
  • mean Average Precision (mAP) — 評估物體偵測模型好壞的指標,https://medium.com/curiosity-and-exploration/mean-average-precision-map-評估物體偵測模型好壞的指標-70a2d2872eb0
  • The Confusing Metrics of AP and mAP for Object Detection / Instance Segmentation,https://yanfengliux.medium.com/the-confusing-metrics-of-ap-and-map-for-object-detection-3113ba0386ef
  • YOLO v3 物件偵測~論文整理,YOLO v3 物件偵測~論文整理,https://medium.com/image-processing-and-ml-note/yolo-v3-物件偵測-論文整理-11ee909430c8
  • 目标检测|YOLOv2原理与实现(附YOLOv3),https://zhuanlan.zhihu.com/p/35325884
  • 目标检测|YOLO原理与实现,https://zhuanlan.zhihu.com/p/32525231

Day 17 - YOLO 相关概念说明相关推荐

  1. YOLO系列文章汇总

    目录 1.论文笔记 2.数据集训练 3.代码实战 4.相关概念介绍 5.报错与解决方案 YOLOv4横空出世,我也已经写了有一系列有关于YOLO的文章,所以这篇文章,我把所有有关于YOLO的文章在这里 ...

  2. 基于深度学习的目标检测发展历程:deep_learning_object_detection

    目标检测论文从 2014-2018 模型表现表格 Detector VOC07 (mAP@IoU=0.5) VOC12 (mAP@IoU=0.5) COCO (mAP) Published In R- ...

  3. 50、ubuntu18.0420.04+CUDA11.1+cudnn11.3+TensorRT7.2/8.6+Deepsteam5.1+vulkan环境搭建和YOLO5部署

    基本思想:想学习一下TensorRT的使用,随笔记录一下: 链接:https://pan.baidu.com/s/1uFOktdF-bHcDDsufIqmNSA  提取码:k55w  复制这段内容后打 ...

  4. 视频教程-2020年软考网络规划设计师案例分析软考视频教程-软考

    2020年软考网络规划设计师案例分析软考视频教程 10年以上软考培训经验,线下培训学员过万人.培训过的课程有:网络规划设计师.网络工程师.信 息系统项目管理师.系统集成项目管理师.信息安全技术.网络技 ...

  5. 计算机视觉(十六):目标检测概述

    1 什么是目标检测 目标检测(Object Detection)的任务是找出图像中所有感兴趣的目标(物体),确定它们的类别和位置. 例子:确定某张给定图像中是否存在给定类别(比如人.车.自行车.狗和猫 ...

  6. Jetson Nano配置YOLOv5并实现FPS=25

    镜像下载.域名解析.时间同步请点击 阿里云开源镜像站 一.版本说明 JetPack 4.6--2021.8 yolov5-v6.0版本 使用的为yolov5的yolov5n.pt,并利用tensorr ...

  7. 目标检测相关论文和代码资源汇总

    目标检测相关论文和代码资源汇总 文章目录 目标检测相关论文和代码资源汇总 2014-2019模型汇总(红色为推荐必读篇): Performance table 性能表 2014论文及代码 2015论文 ...

  8. 【模型部署】Jetson Xavier NX(eMMC)部署YOLOv5-5.0

    文章目录 前言 NVIDIA Jetson Jetson Xavier NX 版本区别(SD | eMMC) 规格参数 Jetpack4.6.1环境搭建 烧录系统(OS) SSD启动 SSD分区 设置 ...

  9. jenson nano对YoloV5进行部署以及TensorRT加速

    部署是软件开发生命周期中非常重要的环节,它直接影响到系统的安全性.可用性和性能.因此,在进行部署前需要仔细检查和准备,确保软件能够在目标环境中顺利运行,并进行后期的监控和维护.那么今天这篇文章就来记录 ...

最新文章

  1. RunLoop 浅析
  2. 我们工作到底为了什么?
  3. 陶瓷气体放电管型号大全
  4. jquery对json 键值对或数组的增加、删除、遍历操作
  5. LeetCode算法入门- Remove Nth Node From End of List -day17
  6. java 文件大小统计工具类_Java获取文件大小,文件夹内文件个数的工具类
  7. Linux 解决文件删除,但并没有改变磁盘可用性
  8. xp系统从u盘启动计算机,手把手教你u盘安装XP系统步骤
  9. 计算机信息的应用安全中心在哪,怎么通过windows安全中心扫描出当前具有威胁的应用...
  10. 使用oligo软件包处理芯片数据
  11. 万和计算机学院,万和亿的换算(万和亿的换算计算器)
  12. 接口测试项目(非常值得练手)
  13. 教你低成本获取用户:利用数据精细化运营(附手绘图)
  14. python习题计算a+aa+aaa+aaaa的结果 lintcode题目
  15. struct dst_entry *dst
  16. PS如何修改图片上的文字
  17. 基于wireguard与NAT实现windows10代理服务器
  18. ArcGIS地物分类专题图制作
  19. starrtc的使用
  20. [投稿]房间声学原理与Schroeder混响算法实现

热门文章

  1. 新媒体人必知的KOL投放策略
  2. C++中如何使输出对齐
  3. 嵌入式文件服务器,嵌入式文件服务器
  4. ajax页面 js文件上传,jQuery插件ajaxfileupload.js实现上传文件
  5. 130 个相见恨晚的超实用网站,一次性分享出来
  6. 通过AD域验证登录Linux系统(Linux安装sssd加入Windows AD域)
  7. weblogic子服务器显示状态RESUMING,长期等待状态
  8. Token登录验证(附图)
  9. 在同一局域网中使用电脑访问手机内容
  10. 删除用户 userdel