OpenCV实例(九)基于深度学习的运动目标检测(二)YOLOv2概述

基于深度学习的运动目标检测(二)YOLOv2&YOLOv3概述

  • 1.YOLOv2概述
  • 2.YOLOv3概述
    • 2.1 新的基础网络结构:
    • 2.2 采用多尺度预测机制。
    • 2.3 使用简单的逻辑回归进行分类

1.YOLOv2概述

对YOLO存在的不足,业界又推出了YOLOv2。YOLOv2主要通过以下方法对模型进行优化:

(1)使用Batch Normalization方法对模型中每一个卷积层的输入进行归一化,缓解梯度消失,加快收敛速度,减少了训练时间,同时提高了平均检测准确率。

(2)增加Anchors机制,借助训练集的边框标签值,使用k-means聚类的方法生成几种不同尺寸的Anchors。YOLOv2去掉了YOLO网络中的全连接层和最后一个池化层,以提高特征的分辨率;在最后一层卷积采样后使用Anchors机制,旨在提高IoU。训练时,在每个网格上预置Anchors,以这些Anchors为基准计算损失函数。

(3)提出一个新的基础网络结构:Darknet-19。Darknet-19是一个全卷积网络,相比YOLO的主体结构,它用一个average pooling层代替全连接层,有利于更好地保留目标的空间位置信息。

(4)采用优化的直接位置预测方法,根据设定的Anchors,在网络最后一个卷积层输出的特征图上,对每个网格进行边框预测,先预测tx、ty、tw、th、to这5个值,然后根据这5个值计算预测边框的位置信息和置信度。

通过以上改进,YOLOv2在平均检测准确率和训练检测速度方面较YOLO均有明显的提高。作为一个中间版本,我们了解即可。

2.YOLOv3概述

为了进一步提高性能,人们又提出了YOLOv3。相比前两个版本,YOLOv3在分类方法、网络结构方面做了较大改进,具体实现如下:

2.1 新的基础网络结构:

Darknet-53。Darknet-53共有75层,使用了一系列3×3、1×1的卷积,其中包括53层卷积层,其余为res层,借鉴ResNet(Residual Network,残差网络)的思想,采用跳层连接的方式进一步优化网络性能。Darknet-53的网络结构如图所示。

OpenCV实例(九)基于深度学习的运动目标检测(二)YOLOv2概述_第1张图片
在深度学习中,越是深层次的网络越容易出现梯度消失,导致网络退化,即使使用了Batch Normalization等方法,效果依然不太理想。2015年,Kaiming He等人提出ResNet,在当年的ILSVRC比赛中获得了冠军。ResNet的主要思想是在网络结构中增加了“直连通道”,将某层的原始输出直接传递到后面的层中,这种跳层连接结构能减少原始信息在传递过程中的损耗,在一定程度上缓解了深度神经网络中的梯度消失问题。ResNet的原理如图所示。

OpenCV实例(九)基于深度学习的运动目标检测(二)YOLOv2概述_第2张图片
在ResNet中,如果用xl和xl+1分别表示第l层的输入和输出,Wl表示第l层的权重,F表示该层的残差函数,则xl和xl+1之间的关系可以表示为:xl+1=xl+F(xl,Wl)。如果网络以这样的结构学习到第L层,以xL表示第L层的输入xL和xl之间的关系可表达为:

OpenCV实例(九)基于深度学习的运动目标检测(二)YOLOv2概述_第3张图片
从而求得在此反向传递过程中损失函数的梯度:

OpenCV实例(九)基于深度学习的运动目标检测(二)YOLOv2概述_第4张图片
从上面公式括号里的两项可以看出,1保证了梯度可以无损地传递,第二项的大小由网络权重决定,并且该项再小也不会导致梯度消失的问题。由此可见,ResNet对原始输入信息的学习更容易、更准确。

Darknet-53通过引入res层,将整个网络分成若干个小的ResNet结构单元,通过逐级对残差的学习来控制梯度的传播,以此来缓解训练中的梯度消失。

2.2 采用多尺度预测机制。

YOLOv3沿用了YOLOv2中的Anchors机制,使用k-means方法聚类出9种大小不同的Anchors。为了充分利用这些Anchors,YOLOv3进一步细化网格划分,将Anchors按大小平均分配给3种scale。

· scale1:在Darknet-53后添加6层卷积层,直接得到用以检测目标的特征图,维度为13×13×(B×5+C),对应最大的3种Anchors,适用于大目标检测。

· sale2:对网络第79层的输出进行上采样,生成26×26×(B×5+C)的特征图,同时与第61层输出的特征图合并,再进行一系列的卷积操作,最终得到的特征图对应3个中等大小的Anchors,适用于中目标检测。

· scale3:对网络第91层的输出进行上采样,生成52×52×(B×5+C)的特征图,先与第36层输出的特征图合并,再进行系列卷积,最终得到与3个最小的Anchors对应的特征图,适用于小目标检测。通过这样的改进,YOLOv3相比YOLOv2,在小目标检测效果上有了较为明显的提高。

2.3 使用简单的逻辑回归进行分类

分类损失函数采用了binary cross-entropy loss(二值交叉熵损失),而且不再使用softmax进行分类。在softmax分类中,得分最高的预测边框获得一个分类,但是在很多情况下(尤其是在对有遮挡或重叠的多目标检测时)softmax并不适合。

通过不断的改进与创新,YOLOv3使基于回归思想的YOLO系列模型的性能达到了一个峰值,最大限度地兼顾了检测的实时性和准确率,为危险物品的实时检测和跟踪、自动驾驶的环境信息采集等对实时性和准确率要求都较高的应用领域提供了非常有参考、研究价值的可靠模型。

你可能感兴趣的:(OpenCV,opencv,深度学习,目标检测)