Day 17 - YOLO 相关概念说明

Day 17 - YOLO 相关概念说明

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

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

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

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

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

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

体重状况体重身高性别年纪
正常7017850
过重7716540
过轻4517030
6016850

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

h w ( x ) = w 0 x 0 + w 1 x 1 + ⋯ + w d x d = ∑ i = 0 D w d x d h_w(x)=w_0 x_0 + w_1 x_1 + \dots + w_d x_d=\sum_{i=0}^{D} w_d x_d hw(x)=w0x0+w1x1++wdxd=i=0Dwdxd
其中:

  • x 0 , x 1 , … , x d x_0, x_1, \dots, x_d x0,x1,,xd为特征, D D D为特征的总数,以这个例子来说就是4
  • w 0 , w 1 , … , w d w_0, w_1, \dots, w_d w0,w1,,wd为权重参数
  • h w ( x ) h_w(x) hw(x)代表判别式,用于根据传入的特征预测输出结果
  • x 0 x_0 x0称为偏置项(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)。

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

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

物体侦测除了要判断影像中的所有物体各自属于哪个类别之外,还要找出物体的位置。可想而知模型的好坏不能只单靠准确率来做判断,因此我们需要其他评估方式来判定模型的物体侦测能力。
Intersection over Union (IoU)
I o U = A r e a o f O v e r l a p A r e a o f U n i o n IoU = \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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值