在附录中,我们收集整理了中山大学电子与通信工程学院智能光电感知课题组所承担的部分研究课题。作为智能光电感知技术的一些实际应用,这些应用案例一方面可以帮助我们加深对前面章节中所介绍的相关基础理论的理解;另一方面,也可以作为有趣的研究课题,促使我们在此基础上进一步开展深入的研究和探索。
A.1 基于YOLO的目标检测
目标检测是计算机视觉领域核心问题之一[1]。目标检测任务是找出图像中所有感兴趣的目标,并确定它们的类别和位置。物体有不同的外观、形状和姿态,加上光照、遮挡等因素干扰,因此,目标检测是一个较有挑战性的问题。通常,目标检测包括面两项任务[2]:
•分类:判断出目标的类别,这是一个分类问题。
图A.1目标检测算法的发展脉络。
目标检测算法主要分为基于手工标注特征的传统算法和基于深度学习的算法两种[100][121][122]。相比于手工标注特征的传统算法,基于深度学习的算法检测速度更快,检测精度更高。基于手工标注特征的目标检测算法主要有V iola-Jones、HOG和DPM。2012年,卷积神经网络的兴起将目标检测领域推向了新的台阶[3]。基于深度学习的算法可根据是否有锚框(Anchor)分为基于锚框的(Anchor-Based)算法和无锚框(Anchor-free)算法。基于锚框的方法根据适用场景和数据集的特点预定义先验框,然后通过分类、回归的方法将预定义框生成物体边界框,可细分为双阶段(Two-stage)算法和单阶段(One-stage)算法。双阶段算法首先生成候选区域,再对候选区域进行微调,常见的算法有R-CNN系列等。单阶段算法通过神经网络获取图像特征,直接生成物体的边界框,常见的算法有YOLO系列、SSD系列等。单阶段算法运行更快,可达到实时性,但精度比双阶段算法低。无锚框算法直接预测图像中各像素属于待检测物体的概率和物体的边界框信息,算法泛化能力更强,对小目标的检测精度更高,但对于通用目标检测精度低于基于锚框的算法,常见的算法有CornerN et、CenterN et等。目标检测算法的发展脉络如图A.1所示。
图A.1目标检测算法的发展脉络。
目标检测算法主要分为基于手工标注特征的传统算法和基于深度学习的算法两种[100][121][122]。相比于手工标注特征的传统算法,基于深度学习的算法检测速度更快,检测精度更高。基于手工标注特征的目标检测算法主要有V iola-Jones、HOG和DPM。2012年,卷积神经网络的兴起将目标检测领域推向了新的台阶[3]。基于深度学习的算法可根据是否有锚框(Anchor)分为基于锚框的(Anchor-Based)算法和无锚框(Anchor-free)算法。基于锚框的方法根据适用场景和数据集的特点预定义先验框,然后通过分类、回归的方法将预定义框生成物体边界框,可细分为双阶段(Two-stage)算法和单阶段(One-stage)算法。双阶段算法首先生成候选区域,再对候选区域进行微调,常见的算法有R-CNN系列等。单阶段算法通过神经网络获取图像特征,直接生成物体的边界框,常见的算法有YOLO系列、SSD系列等。单阶段算法运行更快,可达到实时性,但精度比双阶段算法低。无锚框算法直接预测图像中各像素属于待检测物体的概率和物体的边界框信息,算法泛化能力更强,对小目标的检测精度更高,但对于通用目标检测精度低于基于锚框的算法,常见的算法有CornerN et、CenterN et等。目标检测算法的发展脉络如图A.1所示。
图A.2 YOLOv1每个边界框有5个预测值,分别为x,y,w,h和置信度。
本小节对YOLO算法进行简单介绍,A.2小节为YOLOv5在计算机上的实际操作过程介绍,A.3小节对其他目标检测算法进行简单介绍。YOLO算法在本书16.3小节、A.5小节、A.6小节都有相关应用,故作为独立小节列出。
A.1.1 YOLOv1简介
YOLOv1算法于2016年提出[61]。该算法将输入图像尺寸归一化为224×224,并划分为7×7网格。如果物体中心落入某个网格单元,该网格单元负责检测该物体。每个边界框有5个预测值:x,y,w,h和置信度。(x,y)坐标代表目标框中心相对于网格单元边界。w和h表示框宽度和高度,如图A.2所示。若该单元格中没有物体存在,那么置信度为0,否则,置信度等于预测框与真实框的交并比(IoU)[4]。
YOLOv1网络中的卷积层从图像中提取特征,全连接层预测输出位置和概率,最后一层使用Leaky-ReLU激活函数[5],最终输出7×7×30张量,网络结构[6]如图A.3所示。
图A.2 YOLOv1每个边界框有5个预测值,分别为x,y,w,h和置信度。
本小节对YOLO算法进行简单介绍,A.2小节为YOLOv5在计算机上的实际操作过程介绍,A.3小节对其他目标检测算法进行简单介绍。YOLO算法在本书16.3小节、A.5小节、A.6小节都有相关应用,故作为独立小节列出。
A.1.1 YOLOv1简介
YOLOv1算法于2016年提出[61]。该算法将输入图像尺寸归一化为224×224,并划分为7×7网格。如果物体中心落入某个网格单元,该网格单元负责检测该物体。每个边界框有5个预测值:x,y,w,h和置信度。(x,y)坐标代表目标框中心相对于网格单元边界。w和h表示框宽度和高度,如图A.2所示。若该单元格中没有物体存在,那么置信度为0,否则,置信度等于预测框与真实框的交并比(IoU)[4]。
YOLOv1网络中的卷积层从图像中提取特征,全连接层预测输出位置和概率,最后一层使用Leaky-ReLU激活函数[5],最终输出7×7×30张量,网络结构[6]如图A.3所示。
图A.3 YOLOv1网络结构。以上为网络结构图的一种画法,该画法突出各层卷积的尺寸变化,但忽略了部分细节(如激活函数、正则化方式等)。网络卷积层的顺序是从左到右。第一个长方体代表输入,在本算法中输入为224×224的图像,由于彩色图像有RGB三个维度,所以深度为3。后面各长方体代表前面经过卷积层后网络大小的变化,一个长方体对应着多个卷积层与池化层。以第一个为例,conv表示卷积层,7×7表示卷积核的大小,64表示卷积核深度为64。×2代表上面的卷积操作重复2次。Maxpool表示最大值池化,2×2表示卷积核大小,-s-2表示步长为2(如果省略了-s-,即步长为1)。Avgpool表示全局平均值池化。倒数第二层的矩形表示全连接层,也可画成长方体1×1×4096,FC表示全连接层。最右边的长方体代表输出,在该图中为7×7×30的张量。后面的网络结构同理。
在训练期间,优化了损失函数[7],如图A.4所示。
A.1.2 YOLOv2简介
YOLOv2于2016年提出[62],相比YOLOv1做了如下改进:
1.批标准化[8]。
2.提高分类器的分辨率。将图像尺寸归一化到448×448,相比YOLOv1尺寸为224×224有更高的分辨率。
3.带锚框卷积。YOLOv2移除了全连接层,使用锚框来预测边界框;取消了池化层,使卷积层输出分辨率更高。
4.维度聚类。YOLOv2在训练集边界框上进行k-m eans聚类。
5.直接位置预测。每个边界框预测5个坐标:tx,ty,tw,th和to。若图像左上角偏移量为cx和cy,边界框先验宽度和高度为pw,ph,如图A.5所示。该预测方法比YOLOv1的方法更加稳定。
图A.3 YOLOv1网络结构。以上为网络结构图的一种画法,该画法突出各层卷积的尺寸变化,但忽略了部分细节(如激活函数、正则化方式等)。网络卷积层的顺序是从左到右。第一个长方体代表输入,在本算法中输入为224×224的图像,由于彩色图像有RGB三个维度,所以深度为3。后面各长方体代表前面经过卷积层后网络大小的变化,一个长方体对应着多个卷积层与池化层。以第一个为例,conv表示卷积层,7×7表示卷积核的大小,64表示卷积核深度为64。×2代表上面的卷积操作重复2次。Maxpool表示最大值池化,2×2表示卷积核大小,-s-2表示步长为2(如果省略了-s-,即步长为1)。Avgpool表示全局平均值池化。倒数第二层的矩形表示全连接层,也可画成长方体1×1×4096,FC表示全连接层。最右边的长方体代表输出,在该图中为7×7×30的张量。后面的网络结构同理。
在训练期间,优化了损失函数[7],如图A.4所示。
A.1.2 YOLOv2简介
YOLOv2于2016年提出[62],相比YOLOv1做了如下改进:
1.批标准化[8]。
2.提高分类器的分辨率。将图像尺寸归一化到448×448,相比YOLOv1尺寸为224×224有更高的分辨率。
3.带锚框卷积。YOLOv2移除了全连接层,使用锚框来预测边界框;取消了池化层,使卷积层输出分辨率更高。
4.维度聚类。YOLOv2在训练集边界框上进行k-m eans聚类。
5.直接位置预测。每个边界框预测5个坐标:tx,ty,tw,th和to。若图像左上角偏移量为cx和cy,边界框先验宽度和高度为pw,ph,如图A.5所示。该预测方法比YOLOv1的方法更加稳定。
图A.4 YOLOv1的损失函数。YOLO算法的损失包括三个部分:位置误差、置信度误差和分类误差。该损失函数在三个方面都采用了均方误差,对权重系数进行了平衡。值得一提的是,该算法对边界框宽度和高度不是直接相减,而是取平方根后再相减,使大框小偏差没有小框小偏差那么重要。
图A.4 YOLOv1的损失函数。YOLO算法的损失包括三个部分:位置误差、置信度误差和分类误差。该损失函数在三个方面都采用了均方误差,对权重系数进行了平衡。值得一提的是,该算法对边界框宽度和高度不是直接相减,而是取平方根后再相减,使大框小偏差没有小框小偏差那么重要。
图A.5 YOLOv2预测5个坐标,比YOLOv1的方法更加稳定。
6.细粒度特征。添加passth rough层,通过将相邻特征堆叠到不同通道以连接高分辨率和低分辨率特征,如图A.6所示。
7.多尺度训练。原始YOLO使用448×448输入分辨率。随着锚框增加,YOLOv2将分辨率更改为416×416。
图A.5 YOLOv2预测5个坐标,比YOLOv1的方法更加稳定。
6.细粒度特征。添加passth rough层,通过将相邻特征堆叠到不同通道以连接高分辨率和低分辨率特征,如图A.6所示。
7.多尺度训练。原始YOLO使用448×448输入分辨率。随着锚框增加,YOLOv2将分辨率更改为416×416。
图A.6 passth rough层,那个+号是拼合(Concatenation),不是数值相加。
图A.6 passth rough层,那个+号是拼合(Concatenation),不是数值相加。
图A.7 Darknet-19的网络结构。其中,Softm ax是一种多分类方法,从多个选项中获得唯一选择,是分类问题的最后一步。在本图中的conv 3×3也可以写作conv 32×3×32,但系数32在相对应的长方体上有,故可省略。
8.D arknet-19。Darknet-19网络结构如图A.7所示。使用网络中的网络[9],平均池化层[10]进行预测。
9.分类训练。使用了传统的数据增强方法[11],如图A.8所示。
图A.7 Darknet-19的网络结构。其中,Softm ax是一种多分类方法,从多个选项中获得唯一选择,是分类问题的最后一步。在本图中的conv 3×3也可以写作conv 32×3×32,但系数32在相对应的长方体上有,故可省略。
8.D arknet-19。Darknet-19网络结构如图A.7所示。使用网络中的网络[9],平均池化层[10]进行预测。
9.分类训练。使用了传统的数据增强方法[11],如图A.8所示。
图A.8传统的数据增强方法,分为光度畸变和几何畸变。该图中,模糊处理、色彩扰动、改变对比度、改变亮度、加噪声属于光度畸变范畴;裁剪、旋转、缩放、翻转属于几何畸变范畴。
图A.8传统的数据增强方法,分为光度畸变和几何畸变。该图中,模糊处理、色彩扰动、改变对比度、改变亮度、加噪声属于光度畸变范畴;裁剪、旋转、缩放、翻转属于几何畸变范畴。
图A.9使用W ord Tree层次结构来组合数据集。
10.分层分类。YOLOv2通过从ImageNet中建立分层树以简化问题。
11.用W ord Tree组合数据集。用WordTree以合理的方式将多个数据集组合在一起,如图A.9所示。
A.1.3 YOLOv3简介
YOLOv3于2018年提出[63],较之于YOLOv2,YOLOv3做了一些改进,总结如下:
1.YOLOv3使用Logistic回归预测每个边界框的目标分数。
2.YOLOv3使用多标签分类预测边界框可能包含的类,在训练过程中使用二元交叉熵损失(BCE)进行类别预测。
3.使用D arknet-53进行特征提取,其网络结构如图A.10所示。
图A.9使用W ord Tree层次结构来组合数据集。
10.分层分类。YOLOv2通过从ImageNet中建立分层树以简化问题。
11.用W ord Tree组合数据集。用WordTree以合理的方式将多个数据集组合在一起,如图A.9所示。
A.1.3 YOLOv3简介
YOLOv3于2018年提出[63],较之于YOLOv2,YOLOv3做了一些改进,总结如下:
1.YOLOv3使用Logistic回归预测每个边界框的目标分数。
2.YOLOv3使用多标签分类预测边界框可能包含的类,在训练过程中使用二元交叉熵损失(BCE)进行类别预测。
3.使用D arknet-53进行特征提取,其网络结构如图A.10所示。
图A.10 Darknet-53的网络结构。其中Residual表示残差网络,详细可参考A.3.2.9小节。其中3×3-s-2在表述上可以省略-s-,直接写作3×3-2,也可以写作3×3/2。
图A.10 Darknet-53的网络结构。其中Residual表示残差网络,详细可参考A.3.2.9小节。其中3×3-s-2在表述上可以省略-s-,直接写作3×3-2,也可以写作3×3/2。
图A.11 YOLOv3的网络结构。上图是画神经网络的另一种方法,该方法突出神经网络的构造细节,但忽略各层输出尺寸。其中,CONV表示卷积,BN表示批归一化,Leaky ReLU是激活函数,上采样是矩阵尺寸变大的过程,Concat表示拼合,矩阵尺寸不变但通道数增加,ADD表示增加,矩阵尺寸和通道数均不变,但各数值相加。Zero padding指在矩阵的边缘用0填充。
YOLOv3的主干[12]为Darknet-53,最终网络结构如图A.11所示。
虽然YOLOv3相比过去的版本精度有所提高,但速度也变慢了。作者在发布YOLOv3的同时也发布了一个轻量级的T iny YOLOv3,其网络结构如图A.12所示。
图A.11 YOLOv3的网络结构。上图是画神经网络的另一种方法,该方法突出神经网络的构造细节,但忽略各层输出尺寸。其中,CONV表示卷积,BN表示批归一化,Leaky ReLU是激活函数,上采样是矩阵尺寸变大的过程,Concat表示拼合,矩阵尺寸不变但通道数增加,ADD表示增加,矩阵尺寸和通道数均不变,但各数值相加。Zero padding指在矩阵的边缘用0填充。
YOLOv3的主干[12]为Darknet-53,最终网络结构如图A.11所示。
虽然YOLOv3相比过去的版本精度有所提高,但速度也变慢了。作者在发布YOLOv3的同时也发布了一个轻量级的T iny YOLOv3,其网络结构如图A.12所示。
图A.12 T iny-YOLOv3的网络结构。
图A.12 T iny-YOLOv3的网络结构。
图A.13新颖的数据增强方法,包括Random Erase、MixUp、Cu tMix和Mosaic方法。
图A.13新颖的数据增强方法,包括Random Erase、MixUp、Cu tMix和Mosaic方法。
图A.14 SAM(空间注意机制)与YOLOv4中使用的修正后SAM的示意图。
A.1.4 YOLOv4简介
YOLOv4于2020年提出[64],在YOLOv3基础上进行了如下改进:
1.使用了新颖的数据增强方法,如Mosaic数据增强,如图A.1.4。
2.通过遗传算法选择最佳超参数。
3.修改一些现有方法,使YOLOv4适合有效的训练和检测:空间注意机制(SAM)、路径聚合网络(PAN)和交叉迭代小批量归一化(Cm BN)。SAM和修正后SAM如图A.1.4所示,PAN和修正后PAN如图A.1.4所示。
YOLOv4使用:
图A.14 SAM(空间注意机制)与YOLOv4中使用的修正后SAM的示意图。
A.1.4 YOLOv4简介
YOLOv4于2020年提出[64],在YOLOv3基础上进行了如下改进:
1.使用了新颖的数据增强方法,如Mosaic数据增强,如图A.1.4。
2.通过遗传算法选择最佳超参数。
3.修改一些现有方法,使YOLOv4适合有效的训练和检测:空间注意机制(SAM)、路径聚合网络(PAN)和交叉迭代小批量归一化(Cm BN)。SAM和修正后SAM如图A.1.4所示,PAN和修正后PAN如图A.1.4所示。
YOLOv4使用:
图A.15 PAN(路径聚合网络)与YOLOv4中使用的修正后PAN的示意图。
图A.15 PAN(路径聚合网络)与YOLOv4中使用的修正后PAN的示意图。
图A.16 CSP(跨级部分连接)的示意图。
•骨干BoF [13]:Cu tMix、Mosaic、D rop B lock、标签软化。
•骨干BoS [14]:Mish激活、跨级部分连接(CSP)、多输入加权残差网络(MiWRC)。CSP操作如图A.16所示。
•检测器BoF:CIoU、Cm BN、DropBlock、Mosaic、自我对抗训练(SAT)、消除网格敏感度、使用多个锚点、余弦退火调度器、遗传算法获得最佳超参数、随机训练形状。
•检测器BoS:Mish激活、空间金字塔池化(SPP)、SAM块、PAN块、DIoU非极大值抑制(NMS)。
最终,YOLOv4的骨干为CSPDarknet-53,颈部为SPP和PAN,头部为YOLOv3;其网络结构如图A.17所示。
YOLOv4-Tiny是YOLOv4的轻量化版本,具有更简单的网络结构和更少的参数,如图A.1.4所示。
图A.16 CSP(跨级部分连接)的示意图。
•骨干BoF [13]:Cu tMix、Mosaic、D rop B lock、标签软化。
•骨干BoS [14]:Mish激活、跨级部分连接(CSP)、多输入加权残差网络(MiWRC)。CSP操作如图A.16所示。
•检测器BoF:CIoU、Cm BN、DropBlock、Mosaic、自我对抗训练(SAT)、消除网格敏感度、使用多个锚点、余弦退火调度器、遗传算法获得最佳超参数、随机训练形状。
•检测器BoS:Mish激活、空间金字塔池化(SPP)、SAM块、PAN块、DIoU非极大值抑制(NMS)。
最终,YOLOv4的骨干为CSPDarknet-53,颈部为SPP和PAN,头部为YOLOv3;其网络结构如图A.17所示。
YOLOv4-Tiny是YOLOv4的轻量化版本,具有更简单的网络结构和更少的参数,如图A.1.4所示。
图A.17 YOLOv4的网络结构。
图A.17 YOLOv4的网络结构。
图A.18 YOLOv4-T iny的网络结构。
A.1.5 YOLOv5简介
YOLOv5于2020年提出,其神经网络分为4个部分:输入、主干、颈部和头部。
•输入:Mosaic数据增强、图像自适应、瞄框自适应。
•主干:Focus结构和CSP结构,Focus结构如图A.19所示,CSP结构与YOLOv4中有介绍,如图A.16所示。
•颈部:特征金字塔网络(FPN)和PAN结构。FPN在A.3.3.5中有介绍,CSP结构与YOLOv4中有介绍,如图A.1.4所示。
•头部:使用GIoU作为边界框损失函数,并采用NMS。
YOLOv5s的结构如图A.20所示。
图A.18 YOLOv4-T iny的网络结构。
A.1.5 YOLOv5简介
YOLOv5于2020年提出,其神经网络分为4个部分:输入、主干、颈部和头部。
•输入:Mosaic数据增强、图像自适应、瞄框自适应。
•主干:Focus结构和CSP结构,Focus结构如图A.19所示,CSP结构与YOLOv4中有介绍,如图A.16所示。
•颈部:特征金字塔网络(FPN)和PAN结构。FPN在A.3.3.5中有介绍,CSP结构与YOLOv4中有介绍,如图A.1.4所示。
•头部:使用GIoU作为边界框损失函数,并采用NMS。
YOLOv5s的结构如图A.20所示。
图A.19 Focus操作的示意图。
图A.19 Focus操作的示意图。
图A.20 YOLOv5s的网络结构。
图A.20 YOLOv5s的网络结构。
图A.21 YOLO-Nano的网络结构。
A.1.6 YOLO拓展框架简介
YOLO N ano于2019年提出[65]。该模型结构通过人与机器协同设计模型架构大大提升了性能,其网络框架如图A.21所示。
图A.21 YOLO-Nano的网络结构。
A.1.6 YOLO拓展框架简介
YOLO N ano于2019年提出[65]。该模型结构通过人与机器协同设计模型架构大大提升了性能,其网络框架如图A.21所示。
图A.22 YOLObile网络中的B lock-punched剪枝示意图。
图A.22 YOLObile网络中的B lock-punched剪枝示意图。
图A.23 YOLOF的网络结构。
YOLOb ile于2020年提出[66]。该框架通过压缩编译、协同设计减小模型的大小,并提升模型在移动设备上的运行速度。针对任何内核大小,提出了B lock-punched剪枝方案,如图A.22所示。
YOLOF于2021年提出[67]。该算法对单阶段目标检测中的FPN进行了重新思考,并指出FPN的成功之处在于它对目标检测优化问题的分而治之解决思路而非多尺度特征融合。该算法引入了一种方式替换复杂的FPN优化问题,从而可以仅仅采用一级特征进行检测。YOLOF有两个关键性模块D ilated Encoder与Un iform Match ing,它们对检测带来了显著的性能提升。YOLOF的网络框架如图A.23所示。
YOLOX于2021年提出[68],是对YOLO系列算法的改进。将YOLO检测器切换为无锚框,并且采用解耦头和领先的标签分配策略。YOLOX解耦头如图A.24所示,网络如图A.25所示。
图A.23 YOLOF的网络结构。
YOLOb ile于2020年提出[66]。该框架通过压缩编译、协同设计减小模型的大小,并提升模型在移动设备上的运行速度。针对任何内核大小,提出了B lock-punched剪枝方案,如图A.22所示。
YOLOF于2021年提出[67]。该算法对单阶段目标检测中的FPN进行了重新思考,并指出FPN的成功之处在于它对目标检测优化问题的分而治之解决思路而非多尺度特征融合。该算法引入了一种方式替换复杂的FPN优化问题,从而可以仅仅采用一级特征进行检测。YOLOF有两个关键性模块D ilated Encoder与Un iform Match ing,它们对检测带来了显著的性能提升。YOLOF的网络框架如图A.23所示。
YOLOX于2021年提出[68],是对YOLO系列算法的改进。将YOLO检测器切换为无锚框,并且采用解耦头和领先的标签分配策略。YOLOX解耦头如图A.24所示,网络如图A.25所示。
图A.24 YOLOX解耦头的示意图。
图A.24 YOLOX解耦头的示意图。
图A.25 YOLOX的网络结构。
A.1.7 交并比(IoU)介绍
IoU计算预测框和真实框的交集和并集的比值[69]。定义为:
图A.25 YOLOX的网络结构。
A.1.7 交并比(IoU)介绍
IoU计算预测框和真实框的交集和并集的比值[69]。定义为:
图A.26 IoU的计算过程的示意图。
图A.26 IoU的计算过程的示意图。
图A.27 GIoU的计算过程的示意图。
其中,Bgt代表真实框[15],B代表预测框,如图A.26所示。IoU的缺点有以下两点:
1.当预测框和真实框不相交,即|B∩Bg t|=∅时,不能判断B和Bgt距离远近,此时损失函数均为0。
2.当预测框和真实框大小确定时,如果|B∪Bg t|确定,其IoU值相同,IoU不能反映两个框如何相交。
GIoU[16]充分利用IoU的优点,克服IoU的缺点[70]。定义为:
图A.27 GIoU的计算过程的示意图。
其中,Bgt代表真实框[15],B代表预测框,如图A.26所示。IoU的缺点有以下两点:
1.当预测框和真实框不相交,即|B∩Bg t|=∅时,不能判断B和Bgt距离远近,此时损失函数均为0。
2.当预测框和真实框大小确定时,如果|B∪Bg t|确定,其IoU值相同,IoU不能反映两个框如何相交。
GIoU[16]充分利用IoU的优点,克服IoU的缺点[70]。定义为:
其中,C代表含预测框和真实框的最小外接矩形框,如图A.27所示。
相比IoU,GIoU能够更好地评价,如图A.28所示。
GIoU仍然存在局限性。当真实框包含预测框时,GIoU退化为IoU,无法区分其相对位置关系。好的目标框回归损失函数应该考虑三个重要的几何因素:重叠面积、中心点距离、边框长宽比。IoU和GIoU均只考虑了重叠面积这一因素,未考虑中心点距离和长宽比。
D IoU [17]的提出考虑了中心点距离[71],定义如下:
其中,C代表含预测框和真实框的最小外接矩形框,如图A.27所示。
相比IoU,GIoU能够更好地评价,如图A.28所示。
GIoU仍然存在局限性。当真实框包含预测框时,GIoU退化为IoU,无法区分其相对位置关系。好的目标框回归损失函数应该考虑三个重要的几何因素:重叠面积、中心点距离、边框长宽比。IoU和GIoU均只考虑了重叠面积这一因素,未考虑中心点距离和长宽比。
D IoU [17]的提出考虑了中心点距离[71],定义如下:
图A.28 GIoU相比IoU的优势。(a)中两张图表示预测框与真实框不相交的例子,IoU均为0,但(a-1)的偏离比(a-2)更大,理应分数更低,使用GIoU准则即可达到此效果;(b)中三张图为预测框和真实框大小和并集大小固定时的例子,IoU均为0.1429,但(b-1)的GIoU比(b-2)和(b-3)大。GIoU可以在一定程度上克服IoU的缺点。
图A.28 GIoU相比IoU的优势。(a)中两张图表示预测框与真实框不相交的例子,IoU均为0,但(a-1)的偏离比(a-2)更大,理应分数更低,使用GIoU准则即可达到此效果;(b)中三张图为预测框和真实框大小和并集大小固定时的例子,IoU均为0.1429,但(b-1)的GIoU比(b-2)和(b-3)大。GIoU可以在一定程度上克服IoU的缺点。
图A.29 D IoU计算过程的示意图。
图A.29 D IoU计算过程的示意图。
图A.30 D IoU相比GIoU的优势。从这组图中可以看出,真实框包含预测框且预测框的面积大小相同时,GIoU无法判断出偏离程度。但预测框偏中心,如图(b),理应相比预测框靠边的,如图(a)更准确,在D IoU评判标准中,(b)相比(a)有更好的评价。D IoU相比GIoU引入了中心点距离这一因素,有效克服了GIoU在真实框包含预测框无法区分其相对位置的缺点。
图A.30 D IoU相比GIoU的优势。从这组图中可以看出,真实框包含预测框且预测框的面积大小相同时,GIoU无法判断出偏离程度。但预测框偏中心,如图(b),理应相比预测框靠边的,如图(a)更准确,在D IoU评判标准中,(b)相比(a)有更好的评价。D IoU相比GIoU引入了中心点距离这一因素,有效克服了GIoU在真实框包含预测框无法区分其相对位置的缺点。
其中,ρ2(b,bgt)表示预测框中心点(b)和真实框中心点(bgt)的欧氏距离,c指最小外界矩形框(C)的对角线长度,如图A.29所示:
相比GIoU,DIoU能够更好地评价,如图A.30所示。边框长宽比也是重要的几何因素,因此提出了C IoU [18]函数,即在DIoU的基础上加上一影响因子αv,把预测框长宽比拟合目标框的长宽比也考虑进去[72],定义如下:
其中,ρ2(b,bgt)表示预测框中心点(b)和真实框中心点(bgt)的欧氏距离,c指最小外界矩形框(C)的对角线长度,如图A.29所示:
相比GIoU,DIoU能够更好地评价,如图A.30所示。边框长宽比也是重要的几何因素,因此提出了C IoU [18]函数,即在DIoU的基础上加上一影响因子αv,把预测框长宽比拟合目标框的长宽比也考虑进去[72],定义如下:
图A.31 CIoU相比D IoU的优势。在这组图中,真实框和预测框的面积相同,且预测框均在真实框正中心的位置,但真实框和预测框的长宽比不一定相同,此时使用DIoU也无法区分。CIoU相比D IoU还增加了边框长宽比这一因素,使评价更加完善。
图A.31 CIoU相比D IoU的优势。在这组图中,真实框和预测框的面积相同,且预测框均在真实框正中心的位置,但真实框和预测框的长宽比不一定相同,此时使用DIoU也无法区分。CIoU相比D IoU还增加了边框长宽比这一因素,使评价更加完善。
其中,α是一个trade-oあ参数,v衡量长宽比的一致性,定义如下:
其中,α是一个trade-oあ参数,v衡量长宽比的一致性,定义如下:
相比DIoU,CIoU能够更好地评价,如图A.31所示。
A.2 关于YOLOv5的实际操作
YOLOv5由Ultralyrics公司于2020年6月10日在GitHub平台发布[19],提供了4种神经网络模型,分别为YOLOv5s、YOLOv5m、YOLOv5l和YOLOv5x。YOLOv5s模型最简单,训练速度最快,但精度最低,YOLOv5m、YOLOv5l和YOLOv5x模型越来越复杂,训练速度越来越慢,精度也越来越高。本小节,我们对YOLOv5的实际操作过程进行简单介绍[20]。
相比DIoU,CIoU能够更好地评价,如图A.31所示。
A.2 关于YOLOv5的实际操作
YOLOv5由Ultralyrics公司于2020年6月10日在GitHub平台发布[19],提供了4种神经网络模型,分别为YOLOv5s、YOLOv5m、YOLOv5l和YOLOv5x。YOLOv5s模型最简单,训练速度最快,但精度最低,YOLOv5m、YOLOv5l和YOLOv5x模型越来越复杂,训练速度越来越慢,精度也越来越高。本小节,我们对YOLOv5的实际操作过程进行简单介绍[20]。
图A.32 YOLO数据集制作的流程图。
A.2.1 YOLO数据集制作
YOLO数据集制作过程包括数据搜集、数据预处理、数据标注、数据清洗、数据划分。如图A.32所示。
1.数据搜集。通过视频或网络搜集一些含待检测目标的图片。
2.数据预处理。筛除坏数据,统一格式,并统一重命名为编号。
3.数据标注。使用LabelImg [21]软件给数据打标签。LabelImg工作界面如图A.33所示,操作十分简单。拖动鼠标,将目标框起来,然后选择目标名称,之后选择保存的路径即可[22]。
4.数据清洗。将无目标的图片删除,确保图片和标签一一对应。
5.数据划分。将以上数据集划分成训练集和验证集。一般来说,训练集与验证集比例为3:1到5:1较为合适。
A.2.2 YOLOv5模型训练
YOLOv5模型训练的硬件环境为GPU(如NVIDIA GTX 2080Ti+CUDA 10.1)或CPU(如Intel Core i7-8550U CPU 1.80GHz),操作系统为W indows或Ubuntu,软件为Python+Anaconda+Pytorch。
图A.32 YOLO数据集制作的流程图。
A.2.1 YOLO数据集制作
YOLO数据集制作过程包括数据搜集、数据预处理、数据标注、数据清洗、数据划分。如图A.32所示。
1.数据搜集。通过视频或网络搜集一些含待检测目标的图片。
2.数据预处理。筛除坏数据,统一格式,并统一重命名为编号。
3.数据标注。使用LabelImg [21]软件给数据打标签。LabelImg工作界面如图A.33所示,操作十分简单。拖动鼠标,将目标框起来,然后选择目标名称,之后选择保存的路径即可[22]。
4.数据清洗。将无目标的图片删除,确保图片和标签一一对应。
5.数据划分。将以上数据集划分成训练集和验证集。一般来说,训练集与验证集比例为3:1到5:1较为合适。
A.2.2 YOLOv5模型训练
YOLOv5模型训练的硬件环境为GPU(如NVIDIA GTX 2080Ti+CUDA 10.1)或CPU(如Intel Core i7-8550U CPU 1.80GHz),操作系统为W indows或Ubuntu,软件为Python+Anaconda+Pytorch。
图A.33 LabelIm g的工作界面。
在W indows中Anaconda Prompt或Ubuntu中YOLOv5-master文件夹对应的命令行窗口中输入如下代码,开始模型训练。中括号里的各参数均为缺省,可以根据训练的需要来输入,如下所示。
>>python t rain.py[-h查看帮助]
[--weights权重文件路径,默认为yolov5s.pt]
[--c fg配置文件路径,默认为yolov5s.yaml]
[--data数据集文件,默认为coco.yaml]
[--hyp超参数文件,默认为hyp.scratch.yaml]
[--epochs训练周期数,默认为300]
[--batch-size小批量大小,默认为16]
[--img-size分别设置训练集和测试集中图片的归一化大小,默认值为640×640]
[--rect是否进行矩形训练,可减去冗余信息,加速模型推理,默认为false]
[--resume是否在最近训练的那个模型基础上继续训练,默认为false]
[--nosave是否只保存最后一个训练周期获得的权重文件,默认为false]
[--notest是否只在最后一个训练周期结束后才进行测试,默认为false]
[--noautoanchor是否不使用自适应锚框,默认为false(使用自适应锚框)]
[--evolve是否对超参数进行进化(利用遗传算法寻找最优超参数),默认为false]
[--cache-images是否对图片进行缓存(以便更好地进行训练),默认为false]
[--image-weights是否在下一轮训练中对不好的图片加权重,默认为false]
[--mul t i-scale是否对图片的尺寸进行缩放变换,默认为false]
[--single-cls是否使用单类别数据集,默认为false,即使用多类别数据集]
[--adam是否使用Adam优化器,默认为false,则使用SGD优化器]
[--sync-bn是否使用多GPU进行分布式训练,默认为false]
[--l inear-l r是否对学习率进行线性调整,默认为false,通过余弦调整学习率]
[--label-smoothing是否对标签进行平滑处理,可防止过拟合情况,默认为false]
[--exist-ok预测结果保存位置,默认为false,在新命名的文件夹中保存]
[--device用于设置运行设备,如CPU、GPU编号等,默认为所有GPU/CPU]
[--project训练结果保存路径,默认为runs/t rain]
[--name训练结果文件名,默认为exp]
训练结束后,在对应路径中找到训练得到的神经网络权重和相关日志,该权重可进行相应的目标检测。
A.2.3 YOLOv5目标检测
在W indows中Anaconda Prompt或Ubuntu中命令行中输入如下代码,开始目标检测。中括号里的各参数均为缺省,可以根据训练的需要来输入,如下所示。
>>python detect.py[-h查看帮助]
[--weights目标检测使用的权重文件,默认为yolov5s.pt]
[--source目标检测的来源,可以为文件/文件夹/网址/摄像头,默认为data/images,如
果来源为摄像头,则会对摄像头视线范围内进行目标检测]
[--img-size输入网络的图像尺寸,不会改变输入输出的图像尺寸,默认为640×640]
[--conf-thres置信度阈值,只有大于设定值时才会显示目标检测结果,默认为0.25]
[--iou-thres NMS阈值,只有大于设定值时才会显示目标检测结果,默认为0.45]
[--device用于设置运行设备,如CPU、GPU编号等,默认为所有CPU/GPU]
[--view-img是否显示实时检测结果,默认为false,t rue则为实时显示视频检测结果]
[--save-txt是否保存结果的txt文件,默认为false,t rue则导出检测框到txt中]
[--save-conf是否保存置信度,默认为false,t rue则导出置信度到txt中]
[--c lasses目标检测的类别编号,默认为所有编号]
[--agnost ic-nms是否激活NMS,默认为false]
[--augment是否进行数据增强,默认为false]
[--update是否把网络中一些不必要的部分去掉,默认为false]
[--project目标检测结果保存路径,默认为detect/t rain]
[--name目标检测结果文件名,默认为exp]
[--exist-ok目标检测结果保存位置,默认为false,在新命名的文件夹中保存]
目标检测结束后,检测结果将会保存在相应的路径中,图片或视频将会加上目标检测的框,在A.5小节和A.6中有相关实例的介绍。
图A.33 LabelIm g的工作界面。
在W indows中Anaconda Prompt或Ubuntu中YOLOv5-master文件夹对应的命令行窗口中输入如下代码,开始模型训练。中括号里的各参数均为缺省,可以根据训练的需要来输入,如下所示。
>>python t rain.py[-h查看帮助]
[--weights权重文件路径,默认为yolov5s.pt]
[--c fg配置文件路径,默认为yolov5s.yaml]
[--data数据集文件,默认为coco.yaml]
[--hyp超参数文件,默认为hyp.scratch.yaml]
[--epochs训练周期数,默认为300]
[--batch-size小批量大小,默认为16]
[--img-size分别设置训练集和测试集中图片的归一化大小,默认值为640×640]
[--rect是否进行矩形训练,可减去冗余信息,加速模型推理,默认为false]
[--resume是否在最近训练的那个模型基础上继续训练,默认为false]
[--nosave是否只保存最后一个训练周期获得的权重文件,默认为false]
[--notest是否只在最后一个训练周期结束后才进行测试,默认为false]
[--noautoanchor是否不使用自适应锚框,默认为false(使用自适应锚框)]
[--evolve是否对超参数进行进化(利用遗传算法寻找最优超参数),默认为false]
[--cache-images是否对图片进行缓存(以便更好地进行训练),默认为false]
[--image-weights是否在下一轮训练中对不好的图片加权重,默认为false]
[--mul t i-scale是否对图片的尺寸进行缩放变换,默认为false]
[--single-cls是否使用单类别数据集,默认为false,即使用多类别数据集]
[--adam是否使用Adam优化器,默认为false,则使用SGD优化器]
[--sync-bn是否使用多GPU进行分布式训练,默认为false]
[--l inear-l r是否对学习率进行线性调整,默认为false,通过余弦调整学习率]
[--label-smoothing是否对标签进行平滑处理,可防止过拟合情况,默认为false]
[--exist-ok预测结果保存位置,默认为false,在新命名的文件夹中保存]
[--device用于设置运行设备,如CPU、GPU编号等,默认为所有GPU/CPU]
[--project训练结果保存路径,默认为runs/t rain]
[--name训练结果文件名,默认为exp]
训练结束后,在对应路径中找到训练得到的神经网络权重和相关日志,该权重可进行相应的目标检测。
A.2.3 YOLOv5目标检测
在W indows中Anaconda Prompt或Ubuntu中命令行中输入如下代码,开始目标检测。中括号里的各参数均为缺省,可以根据训练的需要来输入,如下所示。
>>python detect.py[-h查看帮助]
[--weights目标检测使用的权重文件,默认为yolov5s.pt]
[--source目标检测的来源,可以为文件/文件夹/网址/摄像头,默认为data/images,如
果来源为摄像头,则会对摄像头视线范围内进行目标检测]
[--img-size输入网络的图像尺寸,不会改变输入输出的图像尺寸,默认为640×640]
[--conf-thres置信度阈值,只有大于设定值时才会显示目标检测结果,默认为0.25]
[--iou-thres NMS阈值,只有大于设定值时才会显示目标检测结果,默认为0.45]
[--device用于设置运行设备,如CPU、GPU编号等,默认为所有CPU/GPU]
[--view-img是否显示实时检测结果,默认为false,t rue则为实时显示视频检测结果]
[--save-txt是否保存结果的txt文件,默认为false,t rue则导出检测框到txt中]
[--save-conf是否保存置信度,默认为false,t rue则导出置信度到txt中]
[--c lasses目标检测的类别编号,默认为所有编号]
[--agnost ic-nms是否激活NMS,默认为false]
[--augment是否进行数据增强,默认为false]
[--update是否把网络中一些不必要的部分去掉,默认为false]
[--project目标检测结果保存路径,默认为detect/t rain]
[--name目标检测结果文件名,默认为exp]
[--exist-ok目标检测结果保存位置,默认为false,在新命名的文件夹中保存]
目标检测结束后,检测结果将会保存在相应的路径中,图片或视频将会加上目标检测的框,在A.5小节和A.6中有相关实例的介绍。
图A.34传统目标检测算法的基本流程。
A.3 常用目标检测算法介绍
本小节对除了YOLO算法外的其他目标检测算法进行简单介绍。
A.3.1 基于手工标注特征的传统算法
基于手工标注特征的传统算法流程如图A.34所示。
1.输入:待进行目标检测的图片。
2.候选框:通过滑动窗口生成候选框。
3.特征提取:对窗口的局部图像信息进行特征提取,可分为底层特征、中层特征、高层特征3大类。底层特征指来源于图片本身的特征,如颜色、纹理、形状等,如方向梯度直方图(HOG)特征。中层特征指基于底层特征进行机器学习后挖掘得到的特征,如主成分分析(PCA)特征。高层特征指对底层和中层特征的进一步挖掘得到的语义特征,如人物的性别等。
4.分类器判定或背景:对候选区域提取出的特征进行分类。
5.非极大值抑制算法(Non-Maximum Suppression,简称NMS):指抑制不是极大值的元素。在目标检测中,经过特征提取、分类识别后,每个边界框都有一个置信度分数,可能会导致很多窗口之间存在包含或大部分交叉的情况,这时需要利用NMS选取邻域里分数最高的框作为目标框,删除分数不是最高的窗口。其步骤如下:
(a)对所有检测到的候选框置信度得分进行排序。
(b)选出得分最高的候选框,计算每个候选框与最大得分值的IoU值,删除大于设定的阈值的候选框。
(c)对所有没处理过的框,再一次进行(a)、(b)操作。
(d)对筛选过程不断迭代,到只剩下一个框为止。
经典NMS使用IoU,其变体还有DIoU-NMS和Soft-NMS。
图A.34传统目标检测算法的基本流程。
A.3 常用目标检测算法介绍
本小节对除了YOLO算法外的其他目标检测算法进行简单介绍。
A.3.1 基于手工标注特征的传统算法
基于手工标注特征的传统算法流程如图A.34所示。
1.输入:待进行目标检测的图片。
2.候选框:通过滑动窗口生成候选框。
3.特征提取:对窗口的局部图像信息进行特征提取,可分为底层特征、中层特征、高层特征3大类。底层特征指来源于图片本身的特征,如颜色、纹理、形状等,如方向梯度直方图(HOG)特征。中层特征指基于底层特征进行机器学习后挖掘得到的特征,如主成分分析(PCA)特征。高层特征指对底层和中层特征的进一步挖掘得到的语义特征,如人物的性别等。
4.分类器判定或背景:对候选区域提取出的特征进行分类。
5.非极大值抑制算法(Non-Maximum Suppression,简称NMS):指抑制不是极大值的元素。在目标检测中,经过特征提取、分类识别后,每个边界框都有一个置信度分数,可能会导致很多窗口之间存在包含或大部分交叉的情况,这时需要利用NMS选取邻域里分数最高的框作为目标框,删除分数不是最高的窗口。其步骤如下:
(a)对所有检测到的候选框置信度得分进行排序。
(b)选出得分最高的候选框,计算每个候选框与最大得分值的IoU值,删除大于设定的阈值的候选框。
(c)对所有没处理过的框,再一次进行(a)、(b)操作。
(d)对筛选过程不断迭代,到只剩下一个框为止。
经典NMS使用IoU,其变体还有DIoU-NMS和Soft-NMS。
图A.35 V iola-Jones算法的基本流程。
图A.35 V iola-Jones算法的基本流程。
图A.36 Haar特征的提取算子。
6.输出:对输入图片的目标检测结果。
以下是3种具有代表性的传统目标检测算法,分别为Viola-Jones算法、HOG算法和DPM算法,每种方法都有以上过程,但实现每个过程时采用的方法可能不一样。
A.3.1.1 Viola-Jones算法
V iola-Jones算法于2001年提出,是非常经典的目标检测算法,适用于检测正面的人脸图像,但对于侧脸图像的检测鲁棒性较差[73]。Viola-Jones算法流程如图A.35所示:
1.利用Haar特征描述人脸特征[74]。Haar特征是纹理特征的一种,种类包括边缘、线性、中间和对角线特征,如图A.36所示。Harr特征考虑某一特定位置相邻的矩形区域,把每个矩形区域像素相加然后再相减。我们需要将单一像素编程矩形区域,所以要先对每个矩形区域求和(积分图像),然后利用上面的算子进行运算,得到Haar特征。
2.建立积分图像,并利用该图像快速获取几种不同的矩形特征。对于图像中的任何一点,该点的积分图像等于位于该点的左上角的元素之和,即:
图A.36 Haar特征的提取算子。
6.输出:对输入图片的目标检测结果。
以下是3种具有代表性的传统目标检测算法,分别为Viola-Jones算法、HOG算法和DPM算法,每种方法都有以上过程,但实现每个过程时采用的方法可能不一样。
A.3.1.1 Viola-Jones算法
V iola-Jones算法于2001年提出,是非常经典的目标检测算法,适用于检测正面的人脸图像,但对于侧脸图像的检测鲁棒性较差[73]。Viola-Jones算法流程如图A.35所示:
1.利用Haar特征描述人脸特征[74]。Haar特征是纹理特征的一种,种类包括边缘、线性、中间和对角线特征,如图A.36所示。Harr特征考虑某一特定位置相邻的矩形区域,把每个矩形区域像素相加然后再相减。我们需要将单一像素编程矩形区域,所以要先对每个矩形区域求和(积分图像),然后利用上面的算子进行运算,得到Haar特征。
2.建立积分图像,并利用该图像快速获取几种不同的矩形特征。对于图像中的任何一点,该点的积分图像等于位于该点的左上角的元素之和,即:
其中,I表示积分图像,f表示原来的图像,x,y,x′,y′表示像素的位置。通过积分图像,我们可以计算一张图像上任意一个矩形区域的像素和。积分图像满足如下关系:
其中,I表示积分图像,f表示原来的图像,x,y,x′,y′表示像素的位置。通过积分图像,我们可以计算一张图像上任意一个矩形区域的像素和。积分图像满足如下关系:
图A.37积分图像计算过程。
图A.37积分图像计算过程。
图A.38 HOG算法的基本流程。
图A.38 HOG算法的基本流程。
对于一个矩形ABDC,A(x1,y1),B(x2,y1),C(x1,y2),D(x2,y2),如图A.37所示,利用积分图像我们可以得到:
对于一个矩形ABDC,A(x1,y1),B(x2,y1),C(x1,y2),D(x2,y2),如图A.37所示,利用积分图像我们可以得到:
3.利用A daBoost训练分类器,选出小特征。
4.建立级联分类器。引入检测级联,提高计算速度。
5.非极大值抑制(NMS)。
Viola-Jones算法思路简单,但计算量大,时间复杂度高。
A.3.1.2 HOG算法
HOG[23]是一种能对物体进行检测的基于形状描述特征的描述算子。HOG算法于2005年提出,的基本思想是利用梯度信息能很好地反映图像目标的边缘信息并通过局部梯度大小将图像局部的外观和形状特征化。一些研究者利用梯度HOG特征并结合其他特征对人体进行检测,得到了较好的结果[75]。其整体流程如图A.38所示。
3.利用A daBoost训练分类器,选出小特征。
4.建立级联分类器。引入检测级联,提高计算速度。
5.非极大值抑制(NMS)。
Viola-Jones算法思路简单,但计算量大,时间复杂度高。
A.3.1.2 HOG算法
HOG[23]是一种能对物体进行检测的基于形状描述特征的描述算子。HOG算法于2005年提出,的基本思想是利用梯度信息能很好地反映图像目标的边缘信息并通过局部梯度大小将图像局部的外观和形状特征化。一些研究者利用梯度HOG特征并结合其他特征对人体进行检测,得到了较好的结果[75]。其整体流程如图A.38所示。
图A.39 DPM算法的示意图。
1.图像预处理:将彩色图像转成灰度图像,采用Gamm a修正法对输入图像进行颜色空间归一化。
2.计算图像中各像素的梯度。
3.将图像划分成小的单元格。
4.统计每个单元格的梯度直方图,形成每个单元格的描述符号。
5.将每几个单元格组成块,每个块内所有单元格的特征描述符号串联起来得到块的HOG特征描述符号。
6.将图像内各块HOG特征的描述符号串联起来,得到该图像的HOG特征描述符号,这也是最终可供分类使用的特征向量。
7.通过SVM[24]判别出目标类别。
A.3.1.3 DPM算法
DPM[25]算法于2008年提出,是传统目标检测方法的巅峰之作,本质上是“整体HOG+组件HOG+SVM+滑动窗”进行目标识别,其识别效果非常好。其大体思路与HOG一致,先计算梯度方向直方图,然后用SVM训练得到物体的梯度模型[76]。采用了HOG特征,并对HOG特征进行了一些改进,如图A.39所示。
DPM是传统目标检测算法的SOTA [26],连续获得VOC 2007,2008,2009三年的目标检测冠军。其运算速度较快,能够适应物体形变,但无法适应大幅度旋转,稳定性较差。
A.3.1.4 传统目标检测算法的缺点
基于手工提取特征的传统目标检测算法,缺点主要有:区域选择策略没有针对性,时间复杂度高、鲁棒性较差等等。
在DPM算法提出后的几年,目标检测技术停滞不前。然而,随着深度学习的发展和计算机算力的不断提升,有一个惊奇的发现:如果卷积神经网络能够在理论上拟合任何函数,那为什么不能将其引入目标检测流程呢?2012年,A lexNet在ImageNet分类任务取得巨大成功,为目标检测的发展提供了一条未曾设想的道路。之后,Girshick等于2013年提出了R-CNN [27]算法,是第一个成功将深度学习应用到目标检测的算法。自此,目标检测领域开始以前所未有的速度发展。下一节主要介绍一些用于目标检测的经典模型。
A.3.2 目标检测的经典模型
A.3.2.1 LeNet
LeNet诞生于1994年,用于检测手写体识别数据集(MNIST),其基本结构如图A.40所示。该网络利用卷积、池化等操作提取特征,最后使用全连接层进行分类[77]。该网络可谓卷积神经网络的鼻祖。
A.3.2.2 AlexNet
A lexNet于2012年横空出世,使用了8层神经网络,以绝对优势赢得了ImageNet 2012图像识别挑战赛冠军[78]。该网络有5个卷积层和3个池化层,如图A.41所示。与LeNet类似,但相比使用了更多卷积层和更大的参数空间来拟合ImageNet数据集,并取得了较好的结果,是浅层神经网络和深度神经网络的分界线。
A.3.2.3 NIN
网络中的网络(Network in Network,NIN)于2013年提出[79]。其核心思想非常简单,即在卷积后面再跟一个1×1卷积核对图像进行卷积,能有效合并卷积特征,减少网络,提升网络的局部感知区域。如图A.43所示,左侧为普通卷积神经网络中的卷积层,右侧为NIN提出的多层感知机卷积层[28](MLPconv)。YOLOv2算法中用到了NIN。
图A.39 DPM算法的示意图。
1.图像预处理:将彩色图像转成灰度图像,采用Gamm a修正法对输入图像进行颜色空间归一化。
2.计算图像中各像素的梯度。
3.将图像划分成小的单元格。
4.统计每个单元格的梯度直方图,形成每个单元格的描述符号。
5.将每几个单元格组成块,每个块内所有单元格的特征描述符号串联起来得到块的HOG特征描述符号。
6.将图像内各块HOG特征的描述符号串联起来,得到该图像的HOG特征描述符号,这也是最终可供分类使用的特征向量。
7.通过SVM[24]判别出目标类别。
A.3.1.3 DPM算法
DPM[25]算法于2008年提出,是传统目标检测方法的巅峰之作,本质上是“整体HOG+组件HOG+SVM+滑动窗”进行目标识别,其识别效果非常好。其大体思路与HOG一致,先计算梯度方向直方图,然后用SVM训练得到物体的梯度模型[76]。采用了HOG特征,并对HOG特征进行了一些改进,如图A.39所示。
DPM是传统目标检测算法的SOTA [26],连续获得VOC 2007,2008,2009三年的目标检测冠军。其运算速度较快,能够适应物体形变,但无法适应大幅度旋转,稳定性较差。
A.3.1.4 传统目标检测算法的缺点
基于手工提取特征的传统目标检测算法,缺点主要有:区域选择策略没有针对性,时间复杂度高、鲁棒性较差等等。
在DPM算法提出后的几年,目标检测技术停滞不前。然而,随着深度学习的发展和计算机算力的不断提升,有一个惊奇的发现:如果卷积神经网络能够在理论上拟合任何函数,那为什么不能将其引入目标检测流程呢?2012年,A lexNet在ImageNet分类任务取得巨大成功,为目标检测的发展提供了一条未曾设想的道路。之后,Girshick等于2013年提出了R-CNN [27]算法,是第一个成功将深度学习应用到目标检测的算法。自此,目标检测领域开始以前所未有的速度发展。下一节主要介绍一些用于目标检测的经典模型。
A.3.2 目标检测的经典模型
A.3.2.1 LeNet
LeNet诞生于1994年,用于检测手写体识别数据集(MNIST),其基本结构如图A.40所示。该网络利用卷积、池化等操作提取特征,最后使用全连接层进行分类[77]。该网络可谓卷积神经网络的鼻祖。
A.3.2.2 AlexNet
A lexNet于2012年横空出世,使用了8层神经网络,以绝对优势赢得了ImageNet 2012图像识别挑战赛冠军[78]。该网络有5个卷积层和3个池化层,如图A.41所示。与LeNet类似,但相比使用了更多卷积层和更大的参数空间来拟合ImageNet数据集,并取得了较好的结果,是浅层神经网络和深度神经网络的分界线。
A.3.2.3 NIN
网络中的网络(Network in Network,NIN)于2013年提出[79]。其核心思想非常简单,即在卷积后面再跟一个1×1卷积核对图像进行卷积,能有效合并卷积特征,减少网络,提升网络的局部感知区域。如图A.43所示,左侧为普通卷积神经网络中的卷积层,右侧为NIN提出的多层感知机卷积层[28](MLPconv)。YOLOv2算法中用到了NIN。
图A.40 LeNet的网络结构。该图比较详细地描述了神经网络模型的结构。输入为手写体识别数据集(MN IST)中的图片,大小为32×32,由于是灰度图,故深度为1。里面包括了3个卷积层和2个池化层,卷积核大小决定了下一层输出的大小,卷积核深度决定了下一层输出的深度。最下面的一行表示常见的描述形式。
图A.40 LeNet的网络结构。该图比较详细地描述了神经网络模型的结构。输入为手写体识别数据集(MN IST)中的图片,大小为32×32,由于是灰度图,故深度为1。里面包括了3个卷积层和2个池化层,卷积核大小决定了下一层输出的大小,卷积核深度决定了下一层输出的深度。最下面的一行表示常见的描述形式。
图A.42线性卷积层与MLPconv层的比较,MLPconv中的全连接层增大了感受野。中间的全连接层也可以看作是尺寸为1×1×深度的网络,可以画成长方体的形式。左侧中间的长方体不是输入或输出,而是左侧长方体到右侧长方体用到的卷积核。
图A.43的基本结构和A lexNet完全相同,但A lexNet中的各线性卷积层均改为了MLPconv层,在测试中取得了比A lexNet更好的成绩。
图A.42线性卷积层与MLPconv层的比较,MLPconv中的全连接层增大了感受野。中间的全连接层也可以看作是尺寸为1×1×深度的网络,可以画成长方体的形式。左侧中间的长方体不是输入或输出,而是左侧长方体到右侧长方体用到的卷积核。
图A.43的基本结构和A lexNet完全相同,但A lexNet中的各线性卷积层均改为了MLPconv层,在测试中取得了比A lexNet更好的成绩。
图A.43一个使用了MLPconv的模型,基本结构与A lexNet完全相同,但每一层都加了1×1卷积核,以提升网络的局部感知区域。
图A.43一个使用了MLPconv的模型,基本结构与A lexNet完全相同,但每一层都加了1×1卷积核,以提升网络的局部感知区域。
图A.44 Incep tion模块的网络结构。
A.3.2.4 Inception V1模块
为了提取更高维特征,一般会进行更深层卷积,但随之带来了网络变大的问题。Inception模块于2014年提出,借鉴了NIN中的MLPconv的思想,提出可以让网络变宽,在保证模型质量的前提下减少参数个数,提取高维特征[80]。朴素的Inception V1模块如图A.44(a)所示,通过1×1卷积以聚集信息,再进行表尺度的特征提取和池化,得到多个尺度的信息,最后将特征进行叠加输出,如图A.44(b)所示。
A.3.2.5 GoogLeNet
GoogLeNet于2014年提出,主要利用Inception V1模块叠加形成,取得了ILSVRC-2014比赛分类项目冠军[80]。其神经网络模型如图A.45所示。值得一提的是,GoogLeNet虽然是Google团队开发,但拼写时L为大写,是为了向卷积神经网络鼻祖LeNet致敬。
A.3.2.6 VGG
VGG于2014年提出,取得了ILSVRC-2014比赛分类项目第二名,仅次于GoogLeNet[81]。VGG可以看作A lexNet的加深版,由卷积层和全连接层叠加而成,但使用的都是3×3的小尺寸卷积核。VGG有16层和19层两个版本,结构如图A.46所示。
图A.44 Incep tion模块的网络结构。
A.3.2.4 Inception V1模块
为了提取更高维特征,一般会进行更深层卷积,但随之带来了网络变大的问题。Inception模块于2014年提出,借鉴了NIN中的MLPconv的思想,提出可以让网络变宽,在保证模型质量的前提下减少参数个数,提取高维特征[80]。朴素的Inception V1模块如图A.44(a)所示,通过1×1卷积以聚集信息,再进行表尺度的特征提取和池化,得到多个尺度的信息,最后将特征进行叠加输出,如图A.44(b)所示。
A.3.2.5 GoogLeNet
GoogLeNet于2014年提出,主要利用Inception V1模块叠加形成,取得了ILSVRC-2014比赛分类项目冠军[80]。其神经网络模型如图A.45所示。值得一提的是,GoogLeNet虽然是Google团队开发,但拼写时L为大写,是为了向卷积神经网络鼻祖LeNet致敬。
A.3.2.6 VGG
VGG于2014年提出,取得了ILSVRC-2014比赛分类项目第二名,仅次于GoogLeNet[81]。VGG可以看作A lexNet的加深版,由卷积层和全连接层叠加而成,但使用的都是3×3的小尺寸卷积核。VGG有16层和19层两个版本,结构如图A.46所示。
图A.45 GoogLeNet的网络结构。
图A.45 GoogLeNet的网络结构。
图A.46 VGG的网络结构,包括VGG-16和VGG-19。
A.3.2.7 Inception V2
Inception V2于2015年提出[82]。相比Inception V1,有如下改进:
1.引入BN层对中间特征进行标准化。
2.将Inception V1中5×5的卷积分解为两个3×3卷积运算,如图A.47所示;将n×n的卷积分解为1×n和n×1两个卷积,如图A.48所示;将卷积分解后计算速度得到了提升。
3.扩展模型的宽度,有效解决表征性瓶颈问题。
A.3.2.8 Inception V3
Inception V3于2015年提出[83],相比Inception V2,有如下改进:
图A.46 VGG的网络结构,包括VGG-16和VGG-19。
A.3.2.7 Inception V2
Inception V2于2015年提出[82]。相比Inception V1,有如下改进:
1.引入BN层对中间特征进行标准化。
2.将Inception V1中5×5的卷积分解为两个3×3卷积运算,如图A.47所示;将n×n的卷积分解为1×n和n×1两个卷积,如图A.48所示;将卷积分解后计算速度得到了提升。
3.扩展模型的宽度,有效解决表征性瓶颈问题。
A.3.2.8 Inception V3
Inception V3于2015年提出[83],相比Inception V2,有如下改进:
图A.47分两步完成5×5卷积。
图A.47分两步完成5×5卷积。
图A.48 Incep tion模块。
1.不直接使用Maxpool进行下采样,因为会导致信息损失较大。一个可行方案是线性卷积增加特征通道数量,然后进行池化,但是计算量较大。作者设计了另外一种方案,可以通过两个并行的分支,一个池化层,另一个卷积层,最后两者结果拼合在一起,可在较小的计算量同时避免瓶颈层。如图A.49所示。
2.使用了RMSProp优化器。
图A.48 Incep tion模块。
1.不直接使用Maxpool进行下采样,因为会导致信息损失较大。一个可行方案是线性卷积增加特征通道数量,然后进行池化,但是计算量较大。作者设计了另外一种方案,可以通过两个并行的分支,一个池化层,另一个卷积层,最后两者结果拼合在一起,可在较小的计算量同时避免瓶颈层。如图A.49所示。
2.使用了RMSProp优化器。
图A.49 Incep tion V 3不直接使用Maxpool进行下采样。
3.分解了7×7卷积。
4.辅助分类器使用了BN。
5.使用了标签软化。
A.3.2.9 ResNet
残差网络(Deep Residual Network,或简称ResNet)于2015年由何恺明团队提出[84]。ResNet-152在ILSVRC和COCO 2015竞赛中取得了5项第一,解决了深度网络难训练的问题。ResNet的提出是卷积神经网络历史上的一项里程碑事件。
增加网络层数后网络将以更加复杂的特征模式提取,理论上可以取得更好的结果。但实验发现深度网络出现了退化问题,当网络深度增加到一定程度时,网络准确度出现饱和,甚至下降。在CIFAR-10实验中,56层网络的效果比20层网络的效果还要差,如图A.50所示。需要注意的是,这不是过拟合问题,因为56层网络训练集误差也比20层网络更高。深层网络存在梯度消失或梯度爆炸的问题,使得深度学习模型很难训练。
图A.49 Incep tion V 3不直接使用Maxpool进行下采样。
3.分解了7×7卷积。
4.辅助分类器使用了BN。
5.使用了标签软化。
A.3.2.9 ResNet
残差网络(Deep Residual Network,或简称ResNet)于2015年由何恺明团队提出[84]。ResNet-152在ILSVRC和COCO 2015竞赛中取得了5项第一,解决了深度网络难训练的问题。ResNet的提出是卷积神经网络历史上的一项里程碑事件。
增加网络层数后网络将以更加复杂的特征模式提取,理论上可以取得更好的结果。但实验发现深度网络出现了退化问题,当网络深度增加到一定程度时,网络准确度出现饱和,甚至下降。在CIFAR-10实验中,56层网络的效果比20层网络的效果还要差,如图A.50所示。需要注意的是,这不是过拟合问题,因为56层网络训练集误差也比20层网络更高。深层网络存在梯度消失或梯度爆炸的问题,使得深度学习模型很难训练。
假设有一个浅层网络,通过向上堆积新层来的建立深层网络,一个极端情况就是新增加的层什么都不学习,完全复制浅层网络的特征(称为恒等映射)。在这种情况下,深层网络至少和浅层网络性能一样,不会变差。因此,肯定是因为目前的训练方法存在问题,使得深层网络很难去找到一个好参数。这让作者灵感爆发,提出了残差学习来解决模型退化问题。对于一个堆积层结构,当输入为x时,学习到的特征为H(x),我们希望能学习到残差F(x)=H(x)x,这样原始的学习特征应该为F(x)+x。之所以这样,是因为残差学习相比原始特征直接学习更容易。当残差为0时,堆积层仅仅做了恒等映射,至少网络结构不会下降,但实际上残差不会是0,这也使得堆积层在输入特征基础上学习到了新的特征。残差学习的结构如图A.51(a)所示。
假设有一个浅层网络,通过向上堆积新层来的建立深层网络,一个极端情况就是新增加的层什么都不学习,完全复制浅层网络的特征(称为恒等映射)。在这种情况下,深层网络至少和浅层网络性能一样,不会变差。因此,肯定是因为目前的训练方法存在问题,使得深层网络很难去找到一个好参数。这让作者灵感爆发,提出了残差学习来解决模型退化问题。对于一个堆积层结构,当输入为x时,学习到的特征为H(x),我们希望能学习到残差F(x)=H(x)x,这样原始的学习特征应该为F(x)+x。之所以这样,是因为残差学习相比原始特征直接学习更容易。当残差为0时,堆积层仅仅做了恒等映射,至少网络结构不会下降,但实际上残差不会是0,这也使得堆积层在输入特征基础上学习到了新的特征。残差学习的结构如图A.51(a)所示。
图A.50具有20层和56层的普通网络的CIFAR-10上的训练误差(左)和测试误差(右)。该图摘自[84]。
图A.50具有20层和56层的普通网络的CIFAR-10上的训练误差(左)和测试误差(右)。该图摘自[84]。
ResNet网络参考了VGG-19网络,并在其基础上进行了修改,并引入了残差单元。ResNet直接使用步长为2的卷积进行下采样,并且用全局平均池化层替换了全连接层。ResNet的一个重要设计原则为,当特征图大小降低一半时,特征图的数量增加一倍,以保持网络层的复杂度。ResNet中有两种残差单元,如图A.51(b)所示。
ResNet网络包括ResNet-16、ResNet-34、ResNet-50、ResNet-101、ResNet-152五种,如图A.51所示。A.3.2.10 Inception V4
Inception V4于2016年提出,将前面的Inception架构和残差连接结合起来[85]。主要有以下改进:
ResNet网络参考了VGG-19网络,并在其基础上进行了修改,并引入了残差单元。ResNet直接使用步长为2的卷积进行下采样,并且用全局平均池化层替换了全连接层。ResNet的一个重要设计原则为,当特征图大小降低一半时,特征图的数量增加一倍,以保持网络层的复杂度。ResNet中有两种残差单元,如图A.51(b)所示。
ResNet网络包括ResNet-16、ResNet-34、ResNet-50、ResNet-101、ResNet-152五种,如图A.51所示。A.3.2.10 Inception V4
Inception V4于2016年提出,将前面的Inception架构和残差连接结合起来[85]。主要有以下改进:
图A.51 ResNet的网络结构,包括ResNet-16/34/50/101/152。
图A.51 ResNet的网络结构,包括ResNet-16/34/50/101/152。
图A.52 Incep tion V 4中stem模块的网络结构。
1.引入了新的stem模块,如图A.52所示。
2.基于新的stem提出了3种新的Inception模块,如图A.53所示。
图A.52 Incep tion V 4中stem模块的网络结构。
1.引入了新的stem模块,如图A.52所示。
2.基于新的stem提出了3种新的Inception模块,如图A.53所示。
图A.53 Incep tion V 4中3个模块的网络结构。
图A.53 Incep tion V 4中3个模块的网络结构。
图A.54 Incep tion V 4的2个缩减块的网络结构。
3.引入了2种专用的缩减块以改变网格尺寸,如图A.54所示。
4.最终的网络结构如图A.55所示。
A.3.2.11 Darknet
Darknet是YOLO算法的作者搭建出来的深度学习框架,包括Darknet-19和Darknet-53。DarkNet-19是YOLOv2的基本框架,如图A.7所示。DarkNet-53是YOLOv3的基本框架,如图A.10所示。
图A.54 Incep tion V 4的2个缩减块的网络结构。
3.引入了2种专用的缩减块以改变网格尺寸,如图A.54所示。(www.xing528.com)
4.最终的网络结构如图A.55所示。
A.3.2.11 Darknet
Darknet是YOLO算法的作者搭建出来的深度学习框架,包括Darknet-19和Darknet-53。DarkNet-19是YOLOv2的基本框架,如图A.7所示。DarkNet-53是YOLOv3的基本框架,如图A.10所示。
图A.55 Incep tion V 4的完整网络结构。
图A.55 Incep tion V 4的完整网络结构。
图A.56(左)带批归一化和ReLU的标准卷积层,(右)深度可分离卷积,卷积层后跟批归一化与ReLU。
A.3.2.12 MobileNet
MobileNet于2017年提出,是一种体积较小、计算量较少、适用于移动设备的卷积神经网络[86]。主要创新点在于用深度可分离卷积代替普通卷积,以减少参数的数量,同时也会使特征丢失,导致精度下降。MobileNet基于深度级可分离卷积构建的网络,其实这种结构最早是出现在Incep tion V 3中,它是将标准卷积拆分成了深度卷积和逐点卷积。深度卷积和标准卷积不同。对于标准卷积,其卷积核是用在所有的输入通道上;对于深度卷积,针对每个输入通道采用不同的卷积核,如图A.56所示。逐点卷积是采用1×1的卷积核的普通卷积。
图A.56(左)带批归一化和ReLU的标准卷积层,(右)深度可分离卷积,卷积层后跟批归一化与ReLU。
A.3.2.12 MobileNet
MobileNet于2017年提出,是一种体积较小、计算量较少、适用于移动设备的卷积神经网络[86]。主要创新点在于用深度可分离卷积代替普通卷积,以减少参数的数量,同时也会使特征丢失,导致精度下降。MobileNet基于深度级可分离卷积构建的网络,其实这种结构最早是出现在Incep tion V 3中,它是将标准卷积拆分成了深度卷积和逐点卷积。深度卷积和标准卷积不同。对于标准卷积,其卷积核是用在所有的输入通道上;对于深度卷积,针对每个输入通道采用不同的卷积核,如图A.56所示。逐点卷积是采用1×1的卷积核的普通卷积。
图A.57 1×1卷积滤波器,称为深度可分离卷积中的逐点卷积。
标准卷积核:设输入特征维度为DF×DF×M,M为通道数。标准卷积核的参数为DK×DK×M×N,DK为卷积核大小,M为输入的通道数,N为输出的通道数。卷积后输出维度为:DF×DF×N。卷积过程中每个卷积核对图像区域进行DF×DF次扫描,每次扫描的深度为M(Channel),每个通道需要DK×DK次加权求和运算,所以理论计算量(FLOPs)为:N×DF×DF×M×DK×DK。
深度卷积:设输入特征维度为DF×DF×M,M为通道数。卷积核的参数为DK×DK×1×M。输出深度卷积后的特征维度为:DF×DF×M。卷积时每个通道只对应一个卷积核(扫描深度为1),所以FLOPs为:M×DF×DF×DK×DK。
逐点卷积:输入为深度卷积后的特征,维度为DF×DF×M。卷积核参数为1×1×M×N。输出维度为DF×DF×N。卷积过程中对每个特征做1×1的标准卷积,FLOPs为:N×DF×DF×M。
图A.57 1×1卷积滤波器,称为深度可分离卷积中的逐点卷积。
标准卷积核:设输入特征维度为DF×DF×M,M为通道数。标准卷积核的参数为DK×DK×M×N,DK为卷积核大小,M为输入的通道数,N为输出的通道数。卷积后输出维度为:DF×DF×N。卷积过程中每个卷积核对图像区域进行DF×DF次扫描,每次扫描的深度为M(Channel),每个通道需要DK×DK次加权求和运算,所以理论计算量(FLOPs)为:N×DF×DF×M×DK×DK。
深度卷积:设输入特征维度为DF×DF×M,M为通道数。卷积核的参数为DK×DK×1×M。输出深度卷积后的特征维度为:DF×DF×M。卷积时每个通道只对应一个卷积核(扫描深度为1),所以FLOPs为:M×DF×DF×DK×DK。
逐点卷积:输入为深度卷积后的特征,维度为DF×DF×M。卷积核参数为1×1×M×N。输出维度为DF×DF×N。卷积过程中对每个特征做1×1的标准卷积,FLOPs为:N×DF×DF×M。
深度卷积和逐点卷积FLOPs为:M×DF×DF×DK×DK+N×DF×DF×M,相比普通卷积,计算量仅为倍。
深度卷积和逐点卷积FLOPs为:M×DF×DF×DK×DK+N×DF×DF×M,相比普通卷积,计算量仅为倍。
A.3.3 基于锚框的双阶段目标检测算法
双阶段目标检测算法又称为基于候选区域的目标检测算法,通过显式的候选区域将检测问题转化为对生成的候选区域内局部图片的分类问题。主要分为两个阶段:
1.框出候选区域:从图片中找出目标可能存在的位置,输出一系列边界框,这些边界框被称为候选区域(Region of Proposal)或感兴趣区域(Regions of Interest,或简称RoI)。
A.3.3 基于锚框的双阶段目标检测算法
双阶段目标检测算法又称为基于候选区域的目标检测算法,通过显式的候选区域将检测问题转化为对生成的候选区域内局部图片的分类问题。主要分为两个阶段:
1.框出候选区域:从图片中找出目标可能存在的位置,输出一系列边界框,这些边界框被称为候选区域(Region of Proposal)或感兴趣区域(Regions of Interest,或简称RoI)。
图A.58 R-CNN算法的示意图。
图A.58 R-CNN算法的示意图。
图A.59 SPPNet算法的示意图。
2.预测:预测候选区域中是否存在目标以及目标类别。
A.3.3.1 R-CNN
R-CNN于2013年提出,首次将深度学习技术应用到目标检测,识别效果相比传统算法有了飞跃性的提升[87]。该算法从一组对象候选框中选择性搜索,选择可能的对象框,然后将选出对象框中的图像缩放到某一规定尺寸,放入卷积神经网络中提取特征,最后将提取出的特征送入SVM分类器。基本结构如图A.58所示。
A.3.3.2 空间金字塔池化网络(SPPNet)
SPPNet于2014年提出,构建了一种空间金字塔池化层(Spatial Pyram id Pooling,或简称SPP)[88],将图像分成若干尺度图像块,然后对每一块提取的特征融合,兼顾多个尺度特征,如图A.59所示。
SPP网络在全连接层之前,生成固定尺度的特征表示,无论输入图片尺寸如何,避免了卷积特征图的重复计算,如图A.60所示。
A.3.3.3 Fast R-CNN
Fast R-CNN于2015年提出,是R-CNN和SPPNet的改进版,其基本结构如图A.61所示[89]。Fast R-CNN可同时训练检测器和边框回归器。CNN提取图像特征,返回感兴趣区域(RoI)池化层。通过RoI池化层,保证每个区域的尺寸相同,最后这些区域的特征,传递到全连接层的网络中进行分类,并用Softm ax和线性回归层返回边界框。
图A.59 SPPNet算法的示意图。
2.预测:预测候选区域中是否存在目标以及目标类别。
A.3.3.1 R-CNN
R-CNN于2013年提出,首次将深度学习技术应用到目标检测,识别效果相比传统算法有了飞跃性的提升[87]。该算法从一组对象候选框中选择性搜索,选择可能的对象框,然后将选出对象框中的图像缩放到某一规定尺寸,放入卷积神经网络中提取特征,最后将提取出的特征送入SVM分类器。基本结构如图A.58所示。
A.3.3.2 空间金字塔池化网络(SPPNet)
SPPNet于2014年提出,构建了一种空间金字塔池化层(Spatial Pyram id Pooling,或简称SPP)[88],将图像分成若干尺度图像块,然后对每一块提取的特征融合,兼顾多个尺度特征,如图A.59所示。
SPP网络在全连接层之前,生成固定尺度的特征表示,无论输入图片尺寸如何,避免了卷积特征图的重复计算,如图A.60所示。
A.3.3.3 Fast R-CNN
Fast R-CNN于2015年提出,是R-CNN和SPPNet的改进版,其基本结构如图A.61所示[89]。Fast R-CNN可同时训练检测器和边框回归器。CNN提取图像特征,返回感兴趣区域(RoI)池化层。通过RoI池化层,保证每个区域的尺寸相同,最后这些区域的特征,传递到全连接层的网络中进行分类,并用Softm ax和线性回归层返回边界框。
图A.60 SPP结构的示意图。
图A.60 SPP结构的示意图。
图A.61 Fast R-CNN算法的示意图。
A.3.3.4 Faster R-CNN
Faster R-CNN于2016年提出,是第一个端到端,最接近于实时性能的深度学习检测算法,其基本结构如图A.62所示[90]。该系统先通过CNN生成图像特征映射,应用区域候选网络返回候选目标(Ob ject Proposal)和相应分数。应用RoI池化层,将所有候选区域修正到同样尺寸。最后,将建议传递到全连接层,生成目标边界框。
A.3.3.5 特征金字塔网络(FPN)
特征金字塔网络(Feature Pyram id Networks,FPN)是2017年Lin在Faster R-CNN的基础上进一步提出的,如图A.3.3.5所示[90]。
在FPN技术出现之前,大多数检测算法的头部都位于网络的最深层,虽然说最深层的特征具备更丰富的语义信息,更有利于物体分类,但更深层的特征图由于空间信息的缺乏不利于物体定位,这大大影响了目标检测的定位精度。
图A.61 Fast R-CNN算法的示意图。
A.3.3.4 Faster R-CNN
Faster R-CNN于2016年提出,是第一个端到端,最接近于实时性能的深度学习检测算法,其基本结构如图A.62所示[90]。该系统先通过CNN生成图像特征映射,应用区域候选网络返回候选目标(Ob ject Proposal)和相应分数。应用RoI池化层,将所有候选区域修正到同样尺寸。最后,将建议传递到全连接层,生成目标边界框。
A.3.3.5 特征金字塔网络(FPN)
特征金字塔网络(Feature Pyram id Networks,FPN)是2017年Lin在Faster R-CNN的基础上进一步提出的,如图A.3.3.5所示[90]。
在FPN技术出现之前,大多数检测算法的头部都位于网络的最深层,虽然说最深层的特征具备更丰富的语义信息,更有利于物体分类,但更深层的特征图由于空间信息的缺乏不利于物体定位,这大大影响了目标检测的定位精度。
图A.62 Faster R-CNN算法的示意图。
图A.62 Faster R-CNN算法的示意图。
图A.63特征金字塔网络(FPN)的网络结构图。
图A.63特征金字塔网络(FPN)的网络结构图。
图A.64基于二进制掩膜的目标检测算法的示意图。
FPN提出了一种具有横向连接的自上而下的网络架构,用于在所有具有不同尺度的高底层,都构筑出高级语义信息。FPN的提出极大地促进了检测网络精度的提高,特别是对于一些待检测物体尺度变化大的数据集有非常明显的效果。此后,FPN成为了各大网络(分类,检测与分割)提高精度最重要的技术之一。
A.3.4 基于锚框的单阶段目标检测算法
A.3.4.1 基于二进制掩膜的目标检测算法
论文[92]发表于2013年,是一种对单阶段算法的早期尝试。算法采用A lexNet作为主干,将网络最后一层替换成回归层,通过回归预测目标的二进制掩膜并提取目标边界框,如图A.64所示。
图A.64基于二进制掩膜的目标检测算法的示意图。
FPN提出了一种具有横向连接的自上而下的网络架构,用于在所有具有不同尺度的高底层,都构筑出高级语义信息。FPN的提出极大地促进了检测网络精度的提高,特别是对于一些待检测物体尺度变化大的数据集有非常明显的效果。此后,FPN成为了各大网络(分类,检测与分割)提高精度最重要的技术之一。
A.3.4 基于锚框的单阶段目标检测算法
A.3.4.1 基于二进制掩膜的目标检测算法
论文[92]发表于2013年,是一种对单阶段算法的早期尝试。算法采用A lexNet作为主干,将网络最后一层替换成回归层,通过回归预测目标的二进制掩膜并提取目标边界框,如图A.64所示。
图A.65 Overfeat算法的示意图。
图A.65 Overfeat算法的示意图。
图A.66 SSD的网络结构图。
A.3.4.2 Overfeat
Overfeat算法发表于2013年,也是一种对单阶段目标检测的早期尝试[93]。该算法针对分类、定位、检测3个不同任务将主干的最后一层替换成不同的分类或回归层,如图A.65所示。
A.3.4.3 SSD
SSD算法[29]于2015年提出,结合了Faster-CNN算法和YOLO v1算法的优点[94]。与YOLO v1相比,SSD使用不同分辨率的特征层,显著提高了对小尺度目标的检测能力,如图A.66所示。SSD系列还有2015年提出的FSSD、2017年提出的DSSD、2017年提出的RSSD。
A.3.4.4 RetinaNet
单阶段检测算法推理速度快,但精度上与双阶段比还是不足[87]。一个重要原因是,单阶段检测生成的候选框内容类别不均衡。RetinaNet于2017年提出,如图A.67所示,基于标准交叉熵损失改进得到焦点损失(Focal Loss)。焦点损失可以使算法根据候选框中的内容自动调节正负样本对损失的贡献度,使算法更关注于低置信度的样本,从而减少类别不均衡对算法精确度的影响。
图A.66 SSD的网络结构图。
A.3.4.2 Overfeat
Overfeat算法发表于2013年,也是一种对单阶段目标检测的早期尝试[93]。该算法针对分类、定位、检测3个不同任务将主干的最后一层替换成不同的分类或回归层,如图A.65所示。
A.3.4.3 SSD
SSD算法[29]于2015年提出,结合了Faster-CNN算法和YOLO v1算法的优点[94]。与YOLO v1相比,SSD使用不同分辨率的特征层,显著提高了对小尺度目标的检测能力,如图A.66所示。SSD系列还有2015年提出的FSSD、2017年提出的DSSD、2017年提出的RSSD。
A.3.4.4 RetinaNet
单阶段检测算法推理速度快,但精度上与双阶段比还是不足[87]。一个重要原因是,单阶段检测生成的候选框内容类别不均衡。RetinaNet于2017年提出,如图A.67所示,基于标准交叉熵损失改进得到焦点损失(Focal Loss)。焦点损失可以使算法根据候选框中的内容自动调节正负样本对损失的贡献度,使算法更关注于低置信度的样本,从而减少类别不均衡对算法精确度的影响。
图A.67 RetinaNet的网络结构图。
A.3.5 无锚框目标检测算法
基于锚框的目标检测算法存在以下4点不足:
1.锚框的设计依赖于先验知识;
2.训练过程需要大量计算交并比,造成冗余计算;
3.基于锚框生成的训练样本中正负样本失衡,影响检测精度;
4.对异常物体的检测精度较差。
针对基于锚框的目标检测算法的缺陷,研究者们提出了无锚框目标检测算法。这类算法移除了预设锚框的过程,直接预测物体的边界框。相比之下,无锚框目标检测算法存在3点优点:
1.锚框的参数从数据中学习而来,鲁棒性强;
2.训练过程无需大量重复计算交并比,节省训练时间;
3.可以避免训练过程中样本失衡的问题。
A.3.5.1 CornerNet
CornerNet于2018年提出,是无锚框目标检测算法的鼻祖,其基本结构如图A.68所示[96]。该算法通过对左上角点和右下角点的位置对边界框进行定位。模型与Hourglass作为主干网络,分别对左上角点和右下角点进行预测,同时对热力图(Heatmap)、嵌入(Embeddings)和偏移量(Oあsets)进行预测,微调角点位置产生更为紧密的边界框。同时,CornerNet通过Corner pooling池化层,有助于获得更精确的定位。将目标检测转成检测两个点的坐标,无需设计锚框。
图A.67 RetinaNet的网络结构图。
A.3.5 无锚框目标检测算法
基于锚框的目标检测算法存在以下4点不足:
1.锚框的设计依赖于先验知识;
2.训练过程需要大量计算交并比,造成冗余计算;
3.基于锚框生成的训练样本中正负样本失衡,影响检测精度;
4.对异常物体的检测精度较差。
针对基于锚框的目标检测算法的缺陷,研究者们提出了无锚框目标检测算法。这类算法移除了预设锚框的过程,直接预测物体的边界框。相比之下,无锚框目标检测算法存在3点优点:
1.锚框的参数从数据中学习而来,鲁棒性强;
2.训练过程无需大量重复计算交并比,节省训练时间;
3.可以避免训练过程中样本失衡的问题。
A.3.5.1 CornerNet
CornerNet于2018年提出,是无锚框目标检测算法的鼻祖,其基本结构如图A.68所示[96]。该算法通过对左上角点和右下角点的位置对边界框进行定位。模型与Hourglass作为主干网络,分别对左上角点和右下角点进行预测,同时对热力图(Heatmap)、嵌入(Embeddings)和偏移量(Oあsets)进行预测,微调角点位置产生更为紧密的边界框。同时,CornerNet通过Corner pooling池化层,有助于获得更精确的定位。将目标检测转成检测两个点的坐标,无需设计锚框。
图A.68 CornerNet算法的示意图。
图A.68 CornerNet算法的示意图。
图A.69 CenterNet算法的示意图。
A.3.5.2 CenterNet
CenterNet于2019提出,其基本结构如图A.69所示[97]。它摒弃了左上角和右下角两关键点,而是直接检测目标的中心点,其他特征如大小、位置、方向,都可以使用中心点位置图像特征进行回归,可谓真正意义上的无锚框。该算法在精度和召回率上都有很大提高,同时该网络还提出两个模块:级联角池化模块和中心池化模块,进一步丰富了左上角和右下角收集的信息。
A.3.5.3 FSAF
FSAF网络提出了一种FSAF模块用于训练特征金字塔中的无锚框分支,让每一个对象都自动选择最合适的特征,如图A.70所示[98]。在该模块中,锚框的大小不再决定选择哪些特征进行预测,使得锚点的尺寸成为了无关变量,实现了模型自动化学习选择特征。
A.4 智慧工地暴力行为识别
图A.69 CenterNet算法的示意图。
A.3.5.2 CenterNet
CenterNet于2019提出,其基本结构如图A.69所示[97]。它摒弃了左上角和右下角两关键点,而是直接检测目标的中心点,其他特征如大小、位置、方向,都可以使用中心点位置图像特征进行回归,可谓真正意义上的无锚框。该算法在精度和召回率上都有很大提高,同时该网络还提出两个模块:级联角池化模块和中心池化模块,进一步丰富了左上角和右下角收集的信息。
A.3.5.3 FSAF
FSAF网络提出了一种FSAF模块用于训练特征金字塔中的无锚框分支,让每一个对象都自动选择最合适的特征,如图A.70所示[98]。在该模块中,锚框的大小不再决定选择哪些特征进行预测,使得锚点的尺寸成为了无关变量,实现了模型自动化学习选择特征。
A.4 智慧工地暴力行为识别
图A.70 FSAF的网络结构图。
建筑行业作为国家经济支柱产业之一,能吸纳大量劳动力就业,对推动经济发展具有重要作用。然而,建筑行业劳工具有从业人员数量多,平均受教育程度低的特点,同时,在建筑工地场景下存在较多容易作为武器的生产工具,如:砖头、铁锤、铁杆等,导致暴力事件时有发生。工地一旦发生暴力事件,容易造成严重的人身伤害事故。据调研,自2015年以来,全国每年工地事故与死亡人数逐年上升。究其原因,一方面是近年来伴随我国城市化率不断提升的背景下建筑业发展迅猛,施工工地数量与人员需求不断提升,另一方面则是由于施工人员安全意识薄弱、管理人员监管不到位和发生事故后伤员未能得到及时救助等。基于以上原因,我们需将实时安全监测系统应用于建筑施工现场监控中,以预防危险情况发生时造成的进一步人身财产损失。本小节探索一种智慧工地暴力行为识别方法[30]。
A.4.1 工地暴力行为识别需求分析
由于施工管理方需要对工地监控视频场景下的暴力行为进行识别,经过工地现场考察以及目标识别应用的经验,发现必须要满足以下四点需求。
1.需要结合时序信息对暴力行为进行识别与报警,因为暴力行为的动作发生是连贯的,仅凭目标识别方法对单帧动作进行识别容易产生误判,所以需要图片序列的上下文信息对暴力行为进行识别。比如,在视频中捕捉到一个人在挥动锤子击打,而另外一个人由于摄像头的视角透视关系似乎站在了前者挥动锤子的击打位置,那么仅凭目标识别无法判断是否有暴力行为,而加入了上下文信息,网络则可以接收到后者是否被前者击打的动作序列,从而判断是否发生暴力行为。因此,需要在获取空间特征的同时结合获取时序信息对暴力行为进行识别。
2.在工地场景下,由于监控摄像头一般与识别对象处于中远距离,且当暴力行为发生时容易发展成群体暴力。面对暴力行为发生时的“群体”与“小目标”这两个特征,基于人体骨架的暴力行为识别模型会因为识别骨架过多或骨架识别失效从而导致识别失效的情况。相比之下,使用图像特征提取模块将一张2维3通道图像信息提取成1维特征序列信息更为有效。
3.工地暴力行为发生时,有多种可能产生的情况如:双人扭打、械斗、群体斗殴等。而在工地场景中重体力劳动较多,包括但不限于敲击钉子、砸破墙体、锤击地桩等。此类行为的识别容易与暴力行为产生混淆,因此这对工地场景下的暴力行为识别模型的泛化能力提出了较高的要求。
4.由于在工地应用场景中,需要在单个服务器中对多个摄像头的视频流同时进行部署应用。这要求模型的算力消耗不能过高,否则不能满足实时性要求且会降低其他模块的识别速度,因此模型需要具有轻量化的特点。
A.4.2 研究思路
针对工地应用场景,可以从两个角度满足其暴力行为识别需求。
1.模型角度。将暴力行为检测模型分为空间特征提取模块与时域特征提取模块。其中,空间特征提取模块用于提炼单张图像的信息特征,降低时域特征提取模块处理的数据量;时域特征提取模块则是对空间特征提取模块输出的特征序列进行时序上的信息提取,即提取空间特征序列的上下文信息变化,进而判断是否为暴力行为,该判断可表示为暴力行为发生概率。
2.数据角度。通过多种数据收集方式建立工地暴力行为数据集,需要注意的是,负样本要包含多样的工地日常施工情况,降低模型误判的可能性。收集的数据集中视频长短不一,其中大部分视频并不是全程包含暴力行为,故需要对数据集进行切片,使得模型更容易学习到暴力行为发生时的特征信息。
综上所述,本文使用轻量化的时域—空间特征提取模型,在工地场景下进行暴力行为识别,如图A.71所示。最终,通过模型指标测试结果以及检测效果,展示模型能否满足工地场景的应用需求。
图A.70 FSAF的网络结构图。
建筑行业作为国家经济支柱产业之一,能吸纳大量劳动力就业,对推动经济发展具有重要作用。然而,建筑行业劳工具有从业人员数量多,平均受教育程度低的特点,同时,在建筑工地场景下存在较多容易作为武器的生产工具,如:砖头、铁锤、铁杆等,导致暴力事件时有发生。工地一旦发生暴力事件,容易造成严重的人身伤害事故。据调研,自2015年以来,全国每年工地事故与死亡人数逐年上升。究其原因,一方面是近年来伴随我国城市化率不断提升的背景下建筑业发展迅猛,施工工地数量与人员需求不断提升,另一方面则是由于施工人员安全意识薄弱、管理人员监管不到位和发生事故后伤员未能得到及时救助等。基于以上原因,我们需将实时安全监测系统应用于建筑施工现场监控中,以预防危险情况发生时造成的进一步人身财产损失。本小节探索一种智慧工地暴力行为识别方法[30]。
A.4.1 工地暴力行为识别需求分析
由于施工管理方需要对工地监控视频场景下的暴力行为进行识别,经过工地现场考察以及目标识别应用的经验,发现必须要满足以下四点需求。
1.需要结合时序信息对暴力行为进行识别与报警,因为暴力行为的动作发生是连贯的,仅凭目标识别方法对单帧动作进行识别容易产生误判,所以需要图片序列的上下文信息对暴力行为进行识别。比如,在视频中捕捉到一个人在挥动锤子击打,而另外一个人由于摄像头的视角透视关系似乎站在了前者挥动锤子的击打位置,那么仅凭目标识别无法判断是否有暴力行为,而加入了上下文信息,网络则可以接收到后者是否被前者击打的动作序列,从而判断是否发生暴力行为。因此,需要在获取空间特征的同时结合获取时序信息对暴力行为进行识别。
2.在工地场景下,由于监控摄像头一般与识别对象处于中远距离,且当暴力行为发生时容易发展成群体暴力。面对暴力行为发生时的“群体”与“小目标”这两个特征,基于人体骨架的暴力行为识别模型会因为识别骨架过多或骨架识别失效从而导致识别失效的情况。相比之下,使用图像特征提取模块将一张2维3通道图像信息提取成1维特征序列信息更为有效。
3.工地暴力行为发生时,有多种可能产生的情况如:双人扭打、械斗、群体斗殴等。而在工地场景中重体力劳动较多,包括但不限于敲击钉子、砸破墙体、锤击地桩等。此类行为的识别容易与暴力行为产生混淆,因此这对工地场景下的暴力行为识别模型的泛化能力提出了较高的要求。
4.由于在工地应用场景中,需要在单个服务器中对多个摄像头的视频流同时进行部署应用。这要求模型的算力消耗不能过高,否则不能满足实时性要求且会降低其他模块的识别速度,因此模型需要具有轻量化的特点。
A.4.2 研究思路
针对工地应用场景,可以从两个角度满足其暴力行为识别需求。
1.模型角度。将暴力行为检测模型分为空间特征提取模块与时域特征提取模块。其中,空间特征提取模块用于提炼单张图像的信息特征,降低时域特征提取模块处理的数据量;时域特征提取模块则是对空间特征提取模块输出的特征序列进行时序上的信息提取,即提取空间特征序列的上下文信息变化,进而判断是否为暴力行为,该判断可表示为暴力行为发生概率。
2.数据角度。通过多种数据收集方式建立工地暴力行为数据集,需要注意的是,负样本要包含多样的工地日常施工情况,降低模型误判的可能性。收集的数据集中视频长短不一,其中大部分视频并不是全程包含暴力行为,故需要对数据集进行切片,使得模型更容易学习到暴力行为发生时的特征信息。
综上所述,本文使用轻量化的时域—空间特征提取模型,在工地场景下进行暴力行为识别,如图A.71所示。最终,通过模型指标测试结果以及检测效果,展示模型能否满足工地场景的应用需求。
图A.71工地场景下暴力行为识别需求解决思路。
A.4.3 工地暴力行为识别检测运行框架的总体设计
本文研究的实时工地暴力行为检测框架如图A.72所示。首先,对工地现场监控摄像头生成的连续帧进行打包得到“帧包”,打包帧数可选。其次,将帧包中的每一帧输入RepVGG网络进行空间特征提取。在图中的第三阶段,为了让Transformer编码器学习帧序列的时间信息,对每一帧进行位置嵌入。然后,Transformer编码器提取帧序列的时域特征。下图展示了Transformer编码器单位组成细节,K个堆叠的编码器单位组成最终的Transformer编码器。最后,如果检测到暴力行为,系统会向施工现场管理人员发出警报,他们及时采取行动。
在本文工作中,暴力行为检测模型首先会将训练视频以28帧图像序列作为一份进行打包,生成帧包。然后,将帧包中的每帧图像输入RepVGG网络进行空间特征信息提取,输出得到包含28个1维向量序列。在输入Transformer编码器前,模型会对RepVGG输出的特征向量序列进行固定位置编码,以保证Transformer网络学习时序特征信息。
A.4.4 Transformer编码器的实现
与基于Transformer的双向编码器表示(Bidirectional Encoder Representation from Transformers,或简称BERT)网络的处理方法相似,本文在每份序列帧的开头加入分类标记,以标记这份序列帧是否包含暴力行为,分类标记在训练网络开始时会在0至1之间进行随机初始化,不需要直接给出。而在训练模型时,数据集给出的暴力行为视频片段标记为1,非暴力行为视频片段标记为0。
图A.71工地场景下暴力行为识别需求解决思路。
A.4.3 工地暴力行为识别检测运行框架的总体设计
本文研究的实时工地暴力行为检测框架如图A.72所示。首先,对工地现场监控摄像头生成的连续帧进行打包得到“帧包”,打包帧数可选。其次,将帧包中的每一帧输入RepVGG网络进行空间特征提取。在图中的第三阶段,为了让Transformer编码器学习帧序列的时间信息,对每一帧进行位置嵌入。然后,Transformer编码器提取帧序列的时域特征。下图展示了Transformer编码器单位组成细节,K个堆叠的编码器单位组成最终的Transformer编码器。最后,如果检测到暴力行为,系统会向施工现场管理人员发出警报,他们及时采取行动。
在本文工作中,暴力行为检测模型首先会将训练视频以28帧图像序列作为一份进行打包,生成帧包。然后,将帧包中的每帧图像输入RepVGG网络进行空间特征信息提取,输出得到包含28个1维向量序列。在输入Transformer编码器前,模型会对RepVGG输出的特征向量序列进行固定位置编码,以保证Transformer网络学习时序特征信息。
A.4.4 Transformer编码器的实现
与基于Transformer的双向编码器表示(Bidirectional Encoder Representation from Transformers,或简称BERT)网络的处理方法相似,本文在每份序列帧的开头加入分类标记,以标记这份序列帧是否包含暴力行为,分类标记在训练网络开始时会在0至1之间进行随机初始化,不需要直接给出。而在训练模型时,数据集给出的暴力行为视频片段标记为1,非暴力行为视频片段标记为0。
图A.72实时工地暴力行为检测运行框架。
图A.72实时工地暴力行为检测运行框架。
图A.73 Transform er编码器组成结构。
如图A.72右侧所示,输入的Transformer编码器单元中由多头自注意力机制层与前馈神经网络块堆叠组成,在每个块前应用层归一化,并在每个块的前后使用残差结构,以防止训练时梯度消失问题。以上组成一个编码器单元,单元数K可选,取决于所需要的Transformer编码器网络深度,最终组成Transformer编码器,如图A.73所示。
对于输入序列S∈R N×D中的所有元素,需要计算序列中所有值的加权和得到对应的v。而注意力权重A是基于输入序列中每个元素之间的相似性以及对应的q和k相似性而得到的。而多头注意力机制则是在QKV(Query、Key、Value)自注意力机制上的扩展,即将n个自注意力机制模块并行化,并将输出进行拼接。
图A.73 Transform er编码器组成结构。
如图A.72右侧所示,输入的Transformer编码器单元中由多头自注意力机制层与前馈神经网络块堆叠组成,在每个块前应用层归一化,并在每个块的前后使用残差结构,以防止训练时梯度消失问题。以上组成一个编码器单元,单元数K可选,取决于所需要的Transformer编码器网络深度,最终组成Transformer编码器,如图A.73所示。
对于输入序列S∈R N×D中的所有元素,需要计算序列中所有值的加权和得到对应的v。而注意力权重A是基于输入序列中每个元素之间的相似性以及对应的q和k相似性而得到的。而多头注意力机制则是在QKV(Query、Key、Value)自注意力机制上的扩展,即将n个自注意力机制模块并行化,并将输出进行拼接。
此外,在Transformer编码器中应用了层归一化。与批归一化不同,层归一化直接从隐藏层内神经元的总输入估计归一化统计数据,因此归一化不会在训练案例之间引入任何新的依赖关系。它适用于RNN模型,并提高了几个现有RNN模型的训练效率和泛化性能。层归一化的计算公式如下:
此外,在Transformer编码器中应用了层归一化。与批归一化不同,层归一化直接从隐藏层内神经元的总输入估计归一化统计数据,因此归一化不会在训练案例之间引入任何新的依赖关系。它适用于RNN模型,并提高了几个现有RNN模型的训练效率和泛化性能。层归一化的计算公式如下:
其中H表示一层中隐藏单元的数量。在层归一化下,一层中的所有隐藏单元共享相同的归一化项µ和σ,但不同的训练数据具有不同的归一化项。与批归一化不同,层归一化对小批量大小无任何限制。
A.4.5 已有暴力行为数据集调研
根据标注方法,目前暴力行为的视频数据集可分为两大类:数据集中视频片段为被统一剪辑为帧数相同的,与未被处理的。经过剪辑的数据集中都是统一为几秒长的视频片段,每个视频片段都对应一个是否为暴力行为的标注。而未剪辑的数据集中的视频时长长短不一,且普遍帧数大于120帧。此外,有的数据集以时间戳的形式对视频中的暴力行为进行标注。表A.1展示了本文构建的工地暴力行为数据集与以前的数据集的比较。
Nievas等提出了两个用于暴力检测行为的视频数据集,即Movies Fights和Hockey Fights。Movies Fights数据集只有200段电影打斗片段,数量较少。在Hockey Fights数据集中,虽有总计1000个视频比赛的片段。但场景单一,缺乏多样性。这两个数据集均为视频与注释对应。
表A.1已有公开的暴力行为数据集对比。
其中H表示一层中隐藏单元的数量。在层归一化下,一层中的所有隐藏单元共享相同的归一化项µ和σ,但不同的训练数据具有不同的归一化项。与批归一化不同,层归一化对小批量大小无任何限制。
A.4.5 已有暴力行为数据集调研
根据标注方法,目前暴力行为的视频数据集可分为两大类:数据集中视频片段为被统一剪辑为帧数相同的,与未被处理的。经过剪辑的数据集中都是统一为几秒长的视频片段,每个视频片段都对应一个是否为暴力行为的标注。而未剪辑的数据集中的视频时长长短不一,且普遍帧数大于120帧。此外,有的数据集以时间戳的形式对视频中的暴力行为进行标注。表A.1展示了本文构建的工地暴力行为数据集与以前的数据集的比较。
Nievas等提出了两个用于暴力检测行为的视频数据集,即Movies Fights和Hockey Fights。Movies Fights数据集只有200段电影打斗片段,数量较少。在Hockey Fights数据集中,虽有总计1000个视频比赛的片段。但场景单一,缺乏多样性。这两个数据集均为视频与注释对应。
表A.1已有公开的暴力行为数据集对比。
Hassner等提出了Crowd Violence数据集,旨在识别人群密集场景中的暴力行为。视频长度在26帧到161帧之间。该数据集的特点是多数为体育赛场或游行示威等人员密集场景,然而图像质量较低。
相比于仅使用红绿蓝三通道图像识别暴力行为,Yun等首次使用RGB-d图像的形式提出了暴力行为数据集。该数据集包括八种双人交互行为,包括接近、远离、推、踢、拳击、交换物品、拥抱和握手。双人交互行为使用微软Kinect传感器记录。此外,该数据集提供交互时的人体骨架图数据。
以上展示的三个暴力行为数据集主要由单个场景拍摄的视频、演员表演的视频和从电影中剪辑的视频片段组成。为了使训练的模型更实用,Sultani等提出了UCF-Crime数据集,其中包含由监控摄像头记录的1900个视频。这个数据集被设计用来检测13种异常行为,包括虐待、逮捕、纵火、袭击、交通事故、入室盗窃、爆炸、打斗、抢劫、射击、偷窃、入店行窃和故意破坏。虽然该数据集中的视频时间较长,从1分钟到10分钟不等,然而暴力行为标注只在单个视频层面,因此导致了从长视频中学习暴力行为需要高昂的硬件成本。
以上几个暴力行为数据集,都或多或少具有以下几个缺点:图像质量差、视频数量不足、视频时间长但标注没有细化到时间戳层面。此外,以上几个数据集并没有包含工地场景下的暴力行为。因此,本文收集并构建了工地环境下的暴力行为数据集。
A.4.6 数据采集及处理
为了使得工地暴力行为检测更具实用性与鲁棒性,本文构建了针对工地环境的暴力行为检测数据集。该数据集有两种主要收集途径:1)视频网站:如优酷、腾讯视频、西瓜视频和YouTube检索收集相关视频;2)聘请演员在工地场景下拍摄暴力行为视频。最终,我们总共收集了1974段暴力行为视频片段与1811段非暴力行为视频片段,总计3785段视频片段,收集的部分视频图像如图A.4.6所示。
Hassner等提出了Crowd Violence数据集,旨在识别人群密集场景中的暴力行为。视频长度在26帧到161帧之间。该数据集的特点是多数为体育赛场或游行示威等人员密集场景,然而图像质量较低。
相比于仅使用红绿蓝三通道图像识别暴力行为,Yun等首次使用RGB-d图像的形式提出了暴力行为数据集。该数据集包括八种双人交互行为,包括接近、远离、推、踢、拳击、交换物品、拥抱和握手。双人交互行为使用微软Kinect传感器记录。此外,该数据集提供交互时的人体骨架图数据。
以上展示的三个暴力行为数据集主要由单个场景拍摄的视频、演员表演的视频和从电影中剪辑的视频片段组成。为了使训练的模型更实用,Sultani等提出了UCF-Crime数据集,其中包含由监控摄像头记录的1900个视频。这个数据集被设计用来检测13种异常行为,包括虐待、逮捕、纵火、袭击、交通事故、入室盗窃、爆炸、打斗、抢劫、射击、偷窃、入店行窃和故意破坏。虽然该数据集中的视频时间较长,从1分钟到10分钟不等,然而暴力行为标注只在单个视频层面,因此导致了从长视频中学习暴力行为需要高昂的硬件成本。
以上几个暴力行为数据集,都或多或少具有以下几个缺点:图像质量差、视频数量不足、视频时间长但标注没有细化到时间戳层面。此外,以上几个数据集并没有包含工地场景下的暴力行为。因此,本文收集并构建了工地环境下的暴力行为数据集。
A.4.6 数据采集及处理
为了使得工地暴力行为检测更具实用性与鲁棒性,本文构建了针对工地环境的暴力行为检测数据集。该数据集有两种主要收集途径:1)视频网站:如优酷、腾讯视频、西瓜视频和YouTube检索收集相关视频;2)聘请演员在工地场景下拍摄暴力行为视频。最终,我们总共收集了1974段暴力行为视频片段与1811段非暴力行为视频片段,总计3785段视频片段,收集的部分视频图像如图A.4.6所示。
图A.74工地暴力行为数据特征示意图。
图A.75展示了工地暴力行为数据集的数据特征分布情况。首先,工地的施工任务繁重,施工工具如锤子、铁锹和砖头等具有一定的危险性,因此一旦发生暴力行为,这些施工工具容易成为施暴者的武器,导致严重人身伤害。本文收集的暴力行为视频中,有20.41%为发生在工地施工现场的持械暴力行为。其次,由于施工人员组成复杂,他们大部分会以利益、工种、地域等因素形成小团体,当小团体之间发生纠纷时,容易以两个人的暴力行为作为导火索发展成群体暴力行为。因此在本文的数据集中,群体暴力行为较多,占65.2%。此外,由于网络搜集的大部分工地暴力行为视频为手机拍摄,导致视频画面抖动较多,因此聘请了演员装扮成施工工人在工地拍摄暴力行为视频。拍摄过程中,将工地暴力行为以群体暴力与双人暴力两类为主题进行拍摄。其中,拍摄了211段群体暴力行为视频,532段双人暴力行为视频。此外,拍摄了775段单人、多人的非暴力行为视频作为负样本,其中内容以抽烟、闲聊和使用手机为主。同时,从网络上收集了1036段非暴力视频,其中一部分内容是从施工工地暴力行为视频中的非暴力片段中提取的,另一部分为普通的施工视频,包含搬运、打桩、拆迁等行为,在未进行训练与标注的情况下容易被识别成暴力行为。因此,此类负样本能有效提高工地场景暴力行为识别的鲁棒性。
由于从网络中收集的暴力行为视频在时长上存在差异,且视频中也包含非暴力行为。因此,为切合训练网络并严格区分暴力行为与非暴力行为,本文将暴力行为视频与非暴力行为视频以28帧为一段进行切割,有781段暴力行为视频中的非暴力行为视频片段,本文将其归类于非暴力行为视频。有利于提升其识别鲁棒性与分类准确率。
图A.74工地暴力行为数据特征示意图。
图A.75展示了工地暴力行为数据集的数据特征分布情况。首先,工地的施工任务繁重,施工工具如锤子、铁锹和砖头等具有一定的危险性,因此一旦发生暴力行为,这些施工工具容易成为施暴者的武器,导致严重人身伤害。本文收集的暴力行为视频中,有20.41%为发生在工地施工现场的持械暴力行为。其次,由于施工人员组成复杂,他们大部分会以利益、工种、地域等因素形成小团体,当小团体之间发生纠纷时,容易以两个人的暴力行为作为导火索发展成群体暴力行为。因此在本文的数据集中,群体暴力行为较多,占65.2%。此外,由于网络搜集的大部分工地暴力行为视频为手机拍摄,导致视频画面抖动较多,因此聘请了演员装扮成施工工人在工地拍摄暴力行为视频。拍摄过程中,将工地暴力行为以群体暴力与双人暴力两类为主题进行拍摄。其中,拍摄了211段群体暴力行为视频,532段双人暴力行为视频。此外,拍摄了775段单人、多人的非暴力行为视频作为负样本,其中内容以抽烟、闲聊和使用手机为主。同时,从网络上收集了1036段非暴力视频,其中一部分内容是从施工工地暴力行为视频中的非暴力片段中提取的,另一部分为普通的施工视频,包含搬运、打桩、拆迁等行为,在未进行训练与标注的情况下容易被识别成暴力行为。因此,此类负样本能有效提高工地场景暴力行为识别的鲁棒性。
由于从网络中收集的暴力行为视频在时长上存在差异,且视频中也包含非暴力行为。因此,为切合训练网络并严格区分暴力行为与非暴力行为,本文将暴力行为视频与非暴力行为视频以28帧为一段进行切割,有781段暴力行为视频中的非暴力行为视频片段,本文将其归类于非暴力行为视频。有利于提升其识别鲁棒性与分类准确率。
图A.75工地暴力行为数据集的数据特征分布情况。
为提升训练数据量,以增强模型鲁棒性,在视频切割同时,本文使用了水平镜像翻转的方法对视频数据进行增强。最终扩充了一倍的暴力行为视频数据,即由原来的3785段视频数据扩充至7570段。
为评估基于工地场景下的暴力行为识别模型,本文使用2种被广泛采用的基准数据集进行评估,并用10折交叉验证法对模型进行验证,以避免训练过程中网络对数据集过拟合,保证基准数据集对模型的有效评估。此外,针对工地暴力行为数据集,本文利用10折交叉验证法将本文的模型与其他优秀的模型进行对比。
A.4.7 实验设置
本文使用主流的两种基准数据集对基于Transformer的工地暴力行为检测模型进行评估:Hockey Fights和Violent Flows。这两个数据集分别对应了暴力行为发生时的两类典型情况:双人暴力行为与群体暴力行为,因此普遍被其他暴力行为检测模型作为性能测试基准。
Hockey Fights的主要收集内容为冰球比赛打架斗殴片段,包含1000个来自美国国家冰球联盟的比赛实况视频剪辑。其中,500段视频剪辑被标注为斗殴,另外500段被标注为非斗殴。每段视频固定帧数为43帧,图像分辨率为360×288。由于两类视频中的行为都发生在相同的场景,因此可以判断出模型是否检测出比赛视频中的暴力场景。图A.76给出了该数据集的一些示例。
图A.75工地暴力行为数据集的数据特征分布情况。
为提升训练数据量,以增强模型鲁棒性,在视频切割同时,本文使用了水平镜像翻转的方法对视频数据进行增强。最终扩充了一倍的暴力行为视频数据,即由原来的3785段视频数据扩充至7570段。
为评估基于工地场景下的暴力行为识别模型,本文使用2种被广泛采用的基准数据集进行评估,并用10折交叉验证法对模型进行验证,以避免训练过程中网络对数据集过拟合,保证基准数据集对模型的有效评估。此外,针对工地暴力行为数据集,本文利用10折交叉验证法将本文的模型与其他优秀的模型进行对比。
A.4.7 实验设置
本文使用主流的两种基准数据集对基于Transformer的工地暴力行为检测模型进行评估:Hockey Fights和Violent Flows。这两个数据集分别对应了暴力行为发生时的两类典型情况:双人暴力行为与群体暴力行为,因此普遍被其他暴力行为检测模型作为性能测试基准。
Hockey Fights的主要收集内容为冰球比赛打架斗殴片段,包含1000个来自美国国家冰球联盟的比赛实况视频剪辑。其中,500段视频剪辑被标注为斗殴,另外500段被标注为非斗殴。每段视频固定帧数为43帧,图像分辨率为360×288。由于两类视频中的行为都发生在相同的场景,因此可以判断出模型是否检测出比赛视频中的暴力场景。图A.76给出了该数据集的一些示例。
图A.76 Hockey Fights数据集示例。
图A.76 Hockey Fights数据集示例。
图A.77 V iolent Flow s数据集示例。
Violent Flows的主要收集内容为群体暴力行为。该数据集包含246段来自YouTube的视频,呈现不同场景下的暴力行为。其中,数据集包含五组视频片段,对应五种场景。在每一组中,视频被标注为两类:暴力与非暴力。在实验中,本文将这五组视频合并成两类,其中123段视频被标注为暴力行为,余下的视频被标注为非暴力行为。每段视频的分辨率为320×240像素,帧数从26帧到161帧不等。图A.77中给出了该数据集的一些示例。
模型的部署平台为Python 3.7,使用深度学习框架Pytorch 1.7,并搭配CUDA 10.2显卡加速驱动。对于每个视频片段帧数固定的Hockey Fights数据集,实验设置的时间步参数为40,这样能有效地读到所有视频片段的图片帧。而对于视频片段帧数不固定的数据集,本文以最少帧数(26帧)为基准,对数据集中所有视频进行切片,并设置学习时间步为26帧,从而能完整地学习到所有暴力与非暴力行为视频片段内容。对于本文构建的工地暴力行为数据集,设置的时间步为28帧。在输入至模型学习前,所有的视频画面会被统一进行预处理,重塑为宽高为180×120像素的画面。
对于模型训练参数,本文使用的优化器为SGD优化器,设置的初始学习率为1×10-3,每经过5轮训练学习率缩小至原来的0.1倍,经过多次训练实验发现模型在以1×10-3的学习率学习至第五轮时损失值波动不再下降,因此利用固定步长学习率衰减方法将学习率衰减,使得模型更容易收敛。损失函数为二分类交叉熵(B inary C ross Entropy,BCE)损失函数。10折交叉验证法每一折的训练轮数为10轮。由于显存限制,每批训练视频数batch size为8个。
A.4.8 消融实验
在本小节中,本文针对不同空间特征提取模型与不同时域特征提取模型进行了一系列的消融实验。本文将七个模型组合在Hockey Fights数据集上进行测试,数据集按照7:3分成训练集与测试集,并使用相同的损失函数与训练参数,不使用预训练模型,每个模型在训练集上训练20轮,且每一轮训练完成后在测试集进行测试得到准确率。结果如表A.2所示,RepVGG-A0+Transformer在做到参数量小和训练显存占用小的同时,准确率最高。此外,由RepVGG-B1和RepVGGB2g4作为空间特征提取的模型结果可以得出,RepVGG特征提取网络深度对准确度几乎没有影响。而将RepVGG与ResNet和VGG作为主干网络进行对比,RepVGG作为主干网络的性能均优于ResNet与VGG。下面将分别展示各个网络的训练细节与对比。
表A.2 RepVGG-A 0+Transform er与其他模型对比。
图A.77 V iolent Flow s数据集示例。
Violent Flows的主要收集内容为群体暴力行为。该数据集包含246段来自YouTube的视频,呈现不同场景下的暴力行为。其中,数据集包含五组视频片段,对应五种场景。在每一组中,视频被标注为两类:暴力与非暴力。在实验中,本文将这五组视频合并成两类,其中123段视频被标注为暴力行为,余下的视频被标注为非暴力行为。每段视频的分辨率为320×240像素,帧数从26帧到161帧不等。图A.77中给出了该数据集的一些示例。
模型的部署平台为Python 3.7,使用深度学习框架Pytorch 1.7,并搭配CUDA 10.2显卡加速驱动。对于每个视频片段帧数固定的Hockey Fights数据集,实验设置的时间步参数为40,这样能有效地读到所有视频片段的图片帧。而对于视频片段帧数不固定的数据集,本文以最少帧数(26帧)为基准,对数据集中所有视频进行切片,并设置学习时间步为26帧,从而能完整地学习到所有暴力与非暴力行为视频片段内容。对于本文构建的工地暴力行为数据集,设置的时间步为28帧。在输入至模型学习前,所有的视频画面会被统一进行预处理,重塑为宽高为180×120像素的画面。
对于模型训练参数,本文使用的优化器为SGD优化器,设置的初始学习率为1×10-3,每经过5轮训练学习率缩小至原来的0.1倍,经过多次训练实验发现模型在以1×10-3的学习率学习至第五轮时损失值波动不再下降,因此利用固定步长学习率衰减方法将学习率衰减,使得模型更容易收敛。损失函数为二分类交叉熵(B inary C ross Entropy,BCE)损失函数。10折交叉验证法每一折的训练轮数为10轮。由于显存限制,每批训练视频数batch size为8个。
A.4.8 消融实验
在本小节中,本文针对不同空间特征提取模型与不同时域特征提取模型进行了一系列的消融实验。本文将七个模型组合在Hockey Fights数据集上进行测试,数据集按照7:3分成训练集与测试集,并使用相同的损失函数与训练参数,不使用预训练模型,每个模型在训练集上训练20轮,且每一轮训练完成后在测试集进行测试得到准确率。结果如表A.2所示,RepVGG-A0+Transformer在做到参数量小和训练显存占用小的同时,准确率最高。此外,由RepVGG-B1和RepVGGB2g4作为空间特征提取的模型结果可以得出,RepVGG特征提取网络深度对准确度几乎没有影响。而将RepVGG与ResNet和VGG作为主干网络进行对比,RepVGG作为主干网络的性能均优于ResNet与VGG。下面将分别展示各个网络的训练细节与对比。
表A.2 RepVGG-A 0+Transform er与其他模型对比。
图A.78展示了使用不同深度的RepVGG作为主干网络的训练过程,可以看到,三个模型在第1轮训练完成后均有80%以上的准确率,且均在第4轮训练后达到较高的准确率并开始震荡收敛,学习速度很快,在学习速度上没有明显区别。
图A.78展示了使用不同深度的RepVGG作为主干网络的训练过程,可以看到,三个模型在第1轮训练完成后均有80%以上的准确率,且均在第4轮训练后达到较高的准确率并开始震荡收敛,学习速度很快,在学习速度上没有明显区别。
图A.78不同模型深度的主干网络RepVGG训练对比。
图A.79(a)展示了分别采用RepVGG-A 0、ResNet-101和VGG19作为主干网络的训练过程,可以看到,整体上RepVGG-A0作为主干网络的训练效果最优,收敛后准确率震荡幅度较小。ResNet-101作为主干网络时的识别效果优于VGG19作为主干网络的模型,但其准确率震荡幅度大于后者。
图A.79(b)展示了不同时域特征提取模型训练过程,可以看到,Transformer时域特征提取效果最好,收敛速度快。而BiLSTM作为时域特征提取模型时在学习速度与稳定性方面均优于LSTM。这是合理的,因为BiLSTM由两个LSTM组成,其中一个顺序接收时序信息,另一个逆序接收时序信息。相比于LSTM,BiLSTM有效地增加了网络可用信息量,提升了上下文的学习能力。
以上的实验结果显示,在时域特征与空间特征提取的模型组合中,RepVGG-A0与Transformer的组合是最优的,它兼顾了小参数量的同时,仍然保持了收敛速度快、稳定的特点。
A.4.9 实验结果
图A.78不同模型深度的主干网络RepVGG训练对比。
图A.79(a)展示了分别采用RepVGG-A 0、ResNet-101和VGG19作为主干网络的训练过程,可以看到,整体上RepVGG-A0作为主干网络的训练效果最优,收敛后准确率震荡幅度较小。ResNet-101作为主干网络时的识别效果优于VGG19作为主干网络的模型,但其准确率震荡幅度大于后者。
图A.79(b)展示了不同时域特征提取模型训练过程,可以看到,Transformer时域特征提取效果最好,收敛速度快。而BiLSTM作为时域特征提取模型时在学习速度与稳定性方面均优于LSTM。这是合理的,因为BiLSTM由两个LSTM组成,其中一个顺序接收时序信息,另一个逆序接收时序信息。相比于LSTM,BiLSTM有效地增加了网络可用信息量,提升了上下文的学习能力。
以上的实验结果显示,在时域特征与空间特征提取的模型组合中,RepVGG-A0与Transformer的组合是最优的,它兼顾了小参数量的同时,仍然保持了收敛速度快、稳定的特点。
A.4.9 实验结果
图A.79不同模型训练结果的对比分析
在本节中,本文将利用10折交叉验证法,验证工地暴力行为识别检测模型在工地暴力行为数据集、Hockey Fights数据集和Violent Flows数据集中的性能表现。首先,将工地暴力行为数据集按照正负样本比例随机分成10份。其次,将这10份数据集中的每一份轮流当作测试集,并将其他9份数据集作为训练集进行训练,此为10折交叉验证中的1折。每折的训练轮数为10轮。如图A.80所示为工地暴力行为识别检测模型在10折交叉验证中每一折的准确率结果,对于准确率结果,使用3阶趋势线进行拟合,得到准确率在10轮训练中的走势。工地暴力行为识别检测模型在训练速度快的同时,收敛速度也很快。其中,特征提取网络RepVGG-A0采用ImageNet预训练模型。最终,模型在10轮训练后的平均准确率为92.4%。
图A.79不同模型训练结果的对比分析
在本节中,本文将利用10折交叉验证法,验证工地暴力行为识别检测模型在工地暴力行为数据集、Hockey Fights数据集和Violent Flows数据集中的性能表现。首先,将工地暴力行为数据集按照正负样本比例随机分成10份。其次,将这10份数据集中的每一份轮流当作测试集,并将其他9份数据集作为训练集进行训练,此为10折交叉验证中的1折。每折的训练轮数为10轮。如图A.80所示为工地暴力行为识别检测模型在10折交叉验证中每一折的准确率结果,对于准确率结果,使用3阶趋势线进行拟合,得到准确率在10轮训练中的走势。工地暴力行为识别检测模型在训练速度快的同时,收敛速度也很快。其中,特征提取网络RepVGG-A0采用ImageNet预训练模型。最终,模型在10轮训练后的平均准确率为92.4%。
图A.80工地暴力行为识别检测模型10折交叉验证过程。
工地暴力行为识别检测模型在Hockey数据集与Violent数据集的10折交叉验证中均达到了100%的最优准确率。且根据数据显示,相比于BiLSTM与LSTM,具有并行计算优势的Transformer在GPU加速的情况下学习速度更快,该模型在Hockey数据集与Violent-Flows数据集的每轮训练耗时分别只有32s与14s,而LSTM训练耗时分别为50s与27s。BiLSTM最慢,分别为62s与39s。如果在更大的数据集中进行训练,三者的耗时差距将会更大。
由表A.3可以看出,暴力行为检测模型在以双人暴力为主题的Hockey Fights基准数据集与以群体暴力为主题的Violent-Flows基准数据集中都有十分优秀的识别准确率,其中在工地暴力行为数据集上的准确率为92.4%,在本文收集的工地暴力行为数据集中表现最优。虽然在Hockey Fights数据集中,3D ConvNet表现更好,但在Violent-Flows数据集中的群体暴力检测方面,暴力行为检测模型有更优秀的表现。之所以如此,根据以上实验对比可以推断是因为工地暴力行为数据集中均有群体暴力与双人暴力场景,从Violent-Flows上的表现可以推断出3D ConvNet在群体暴力中的检测效果不如本文研究的模型。鉴于3D ConvNet的参数量更高,可以得知本文研究的模型在暴力行为训练方面的效能更高,更有利于工地应用场景的部署。
表A.3 RepVGG-Transform er与其他方法在暴力行为基准检测数据集上准确度的比较。
图A.80工地暴力行为识别检测模型10折交叉验证过程。
工地暴力行为识别检测模型在Hockey数据集与Violent数据集的10折交叉验证中均达到了100%的最优准确率。且根据数据显示,相比于BiLSTM与LSTM,具有并行计算优势的Transformer在GPU加速的情况下学习速度更快,该模型在Hockey数据集与Violent-Flows数据集的每轮训练耗时分别只有32s与14s,而LSTM训练耗时分别为50s与27s。BiLSTM最慢,分别为62s与39s。如果在更大的数据集中进行训练,三者的耗时差距将会更大。
由表A.3可以看出,暴力行为检测模型在以双人暴力为主题的Hockey Fights基准数据集与以群体暴力为主题的Violent-Flows基准数据集中都有十分优秀的识别准确率,其中在工地暴力行为数据集上的准确率为92.4%,在本文收集的工地暴力行为数据集中表现最优。虽然在Hockey Fights数据集中,3D ConvNet表现更好,但在Violent-Flows数据集中的群体暴力检测方面,暴力行为检测模型有更优秀的表现。之所以如此,根据以上实验对比可以推断是因为工地暴力行为数据集中均有群体暴力与双人暴力场景,从Violent-Flows上的表现可以推断出3D ConvNet在群体暴力中的检测效果不如本文研究的模型。鉴于3D ConvNet的参数量更高,可以得知本文研究的模型在暴力行为训练方面的效能更高,更有利于工地应用场景的部署。
表A.3 RepVGG-Transform er与其他方法在暴力行为基准检测数据集上准确度的比较。
图A.81部署模型的可视化监控场景案例。
图A.81为模型对(监控场景下)暴力行为的识别案例。所使用的暴力行为检测模型在本文研究的工地暴力行为数据集中进行30轮的训练,使用SGD优化器,学习率为1×10-3,20轮训练后学习率设置为1×10-4训练10轮,损失函数为二分类交叉熵损失函数,每批训练视频数为8。图中第一行为取自监控视频中的截图,每个视频中都包含了从争吵到打斗再到被拉开的过程。图中第二行为暴力行为识别的可视化,每小格代表所取得序列帧中存在暴力行为的概率,概率越高,则灰度值越高。可以看到,在工地暴力行为数据集中训练的暴力行为检测模型对在暴力行为做到了有效识别。此外,该模型对每28帧连续图像的平均处理时间为2.1×10-2秒,满足实时识别的需求。
A.4.10 工作小结
首先,我们调研分析了工地场景下实现有效暴力行为检测的需求,针对该需求,从数据和模型两个角度提出了解决方案。调研了目前存在的暴力行为数据集,总结了现有的暴力行为数据集的优点与不足,并发现目前没有基于工地场景下的暴力行为数据集。因此,通过网络关键词搜索以及拍摄录制工地暴力行为视频的方式进行了数据的收集,最终构建了工地暴力行为检测数据集,该数据集包含了多种暴力行为情景:双人、群体、徒手、械斗,以及多种视频长宽比例,此外通过大量使用工地现场作业视频以及普通监控视频作为负样本,保证了数据集的正负样本数目平衡。其次,我们设计并研究了基于Transformer的暴力行为识别模型,通过消融实验展示了该模型在工地应用部署的优越性,在保持参数量小的同时仍具有优秀的识别效果。此外,采用10折交叉验证法将本文的模型与其他6个典型的暴力行为检测模型在三个数据集上进行实验对比,相比于LSTM作为时域特征提取网络,Transformer的学习速度更快,在双人暴力与群体暴力识别中表现更优秀,结果显示本文的模型在参数量、群体暴力检测和双人暴力检测上综合性能最优。最后,将训练后的模型应用于施工工地监控摄像头,进行部署测试,检测效果良好,且满足实时识别需求。
综上所述,本文研究的工地暴力行为检测模型能结合时序信息对工地场景下的多种暴力行为做到有效识别,得益于其低参数量的特性,相比于以往暴力行为检测模型,其训练速度与识别速度更快,模型更加轻量化,算力消耗更低,且识别准确率没有降低。模型能够满足群体、远景暴力识别需求,并能对数据集中的重体力劳动与暴力行为进行有效区分。
A.5 工地抽烟行为的智能检测
抽烟行为检测是智慧工地中工地安全检测的一个分支。除却抽烟行为本身给人体带来的危害,在工地这样一个蕴含了多种易燃易爆危险品、人员与重型机械仪器密集的场所里,抽烟带来的未熄灭的烟头、火星等危险成分,将严重威胁到工人的人身、工地的财产安全。虽然大部分工地内都禁止工人吸烟,但是,由于工人本身的压力以及成长环境、文化影响,工人抽烟的比例较高,而工地的人力监管又不可能每时每刻对工人进行监督,这就导致了部分工人偷偷吸烟的情况。为了解决这一问题,我们设计了一个基于机器视觉的抽烟行为智能检测系统,对工地等禁烟区内的抽烟行为进行实时监控[31]。
A.5.1 问题描述
图A.81部署模型的可视化监控场景案例。
图A.81为模型对(监控场景下)暴力行为的识别案例。所使用的暴力行为检测模型在本文研究的工地暴力行为数据集中进行30轮的训练,使用SGD优化器,学习率为1×10-3,20轮训练后学习率设置为1×10-4训练10轮,损失函数为二分类交叉熵损失函数,每批训练视频数为8。图中第一行为取自监控视频中的截图,每个视频中都包含了从争吵到打斗再到被拉开的过程。图中第二行为暴力行为识别的可视化,每小格代表所取得序列帧中存在暴力行为的概率,概率越高,则灰度值越高。可以看到,在工地暴力行为数据集中训练的暴力行为检测模型对在暴力行为做到了有效识别。此外,该模型对每28帧连续图像的平均处理时间为2.1×10-2秒,满足实时识别的需求。
A.4.10 工作小结
首先,我们调研分析了工地场景下实现有效暴力行为检测的需求,针对该需求,从数据和模型两个角度提出了解决方案。调研了目前存在的暴力行为数据集,总结了现有的暴力行为数据集的优点与不足,并发现目前没有基于工地场景下的暴力行为数据集。因此,通过网络关键词搜索以及拍摄录制工地暴力行为视频的方式进行了数据的收集,最终构建了工地暴力行为检测数据集,该数据集包含了多种暴力行为情景:双人、群体、徒手、械斗,以及多种视频长宽比例,此外通过大量使用工地现场作业视频以及普通监控视频作为负样本,保证了数据集的正负样本数目平衡。其次,我们设计并研究了基于Transformer的暴力行为识别模型,通过消融实验展示了该模型在工地应用部署的优越性,在保持参数量小的同时仍具有优秀的识别效果。此外,采用10折交叉验证法将本文的模型与其他6个典型的暴力行为检测模型在三个数据集上进行实验对比,相比于LSTM作为时域特征提取网络,Transformer的学习速度更快,在双人暴力与群体暴力识别中表现更优秀,结果显示本文的模型在参数量、群体暴力检测和双人暴力检测上综合性能最优。最后,将训练后的模型应用于施工工地监控摄像头,进行部署测试,检测效果良好,且满足实时识别需求。
综上所述,本文研究的工地暴力行为检测模型能结合时序信息对工地场景下的多种暴力行为做到有效识别,得益于其低参数量的特性,相比于以往暴力行为检测模型,其训练速度与识别速度更快,模型更加轻量化,算力消耗更低,且识别准确率没有降低。模型能够满足群体、远景暴力识别需求,并能对数据集中的重体力劳动与暴力行为进行有效区分。
A.5 工地抽烟行为的智能检测
抽烟行为检测是智慧工地中工地安全检测的一个分支。除却抽烟行为本身给人体带来的危害,在工地这样一个蕴含了多种易燃易爆危险品、人员与重型机械仪器密集的场所里,抽烟带来的未熄灭的烟头、火星等危险成分,将严重威胁到工人的人身、工地的财产安全。虽然大部分工地内都禁止工人吸烟,但是,由于工人本身的压力以及成长环境、文化影响,工人抽烟的比例较高,而工地的人力监管又不可能每时每刻对工人进行监督,这就导致了部分工人偷偷吸烟的情况。为了解决这一问题,我们设计了一个基于机器视觉的抽烟行为智能检测系统,对工地等禁烟区内的抽烟行为进行实时监控[31]。
A.5.1 问题描述
图A.82骨架时空图。
根据综合文献调研,我们将结合对抽烟手势的目标识别,引入人体姿态检测算法与时空序列卷积算法,研究一种基于人体姿态动作检测的(工地监控场景下的)抽烟实时监测系统。包括以下两个方面:
1.基于工地监控场景下的抽烟行为检测这一背景,需要检测算法有较为快速的反应,以满足监测系统的实时性与高效性。基于此,我们采用了YOLO算法。
2.除了检测速度的要求,监控画面下的抽烟检测有一个普遍性的问题,那便是烟头与烟雾的难测性。烟头因为尺寸小,在检测的网络传递过程中,会因为网络参数传递间的下采样而丢失了像素信息,进一步导致难以检测。烟雾同样有此问题,并且极易与监控画面的背景混淆。基于此,我们采用的是对人体上半身的人体姿态动作进行检测的方法,主要利用手腕骨骼点与脸部鼻子、双耳骨骼点的相对位置关系,用时空卷积神经网络训练:抽烟时上半身的姿态骨骼点特征,再基于YOLOv5检测出的识别目标进行联合判别检测,提高检测的精确性与鲁棒性。
基于上述的研究内容,我们的工作在于对应算法的数据集获取与处理,算法网络模型的训练,两种算法结合判断的整体代码框架,以及最终的程序检测界面设计、整体系统软件的落成。
A.5.2 基本算法简介
图A.82骨架时空图。
根据综合文献调研,我们将结合对抽烟手势的目标识别,引入人体姿态检测算法与时空序列卷积算法,研究一种基于人体姿态动作检测的(工地监控场景下的)抽烟实时监测系统。包括以下两个方面:
1.基于工地监控场景下的抽烟行为检测这一背景,需要检测算法有较为快速的反应,以满足监测系统的实时性与高效性。基于此,我们采用了YOLO算法。
2.除了检测速度的要求,监控画面下的抽烟检测有一个普遍性的问题,那便是烟头与烟雾的难测性。烟头因为尺寸小,在检测的网络传递过程中,会因为网络参数传递间的下采样而丢失了像素信息,进一步导致难以检测。烟雾同样有此问题,并且极易与监控画面的背景混淆。基于此,我们采用的是对人体上半身的人体姿态动作进行检测的方法,主要利用手腕骨骼点与脸部鼻子、双耳骨骼点的相对位置关系,用时空卷积神经网络训练:抽烟时上半身的姿态骨骼点特征,再基于YOLOv5检测出的识别目标进行联合判别检测,提高检测的精确性与鲁棒性。
基于上述的研究内容,我们的工作在于对应算法的数据集获取与处理,算法网络模型的训练,两种算法结合判断的整体代码框架,以及最终的程序检测界面设计、整体系统软件的落成。
A.5.2 基本算法简介
图A.83 ST-GCN的流程图。
人体姿态动作检测算法:姿态检测算法与时空序列卷积网络的配合,首先,通过前置的A lphaPose姿态检测算法计算出视频图像中的人体姿态骨骼点信息;其次,将这些信息通过连续的视频图像组成骨架时空图,输入到时空图卷积网络ST-GCN(Spatial TemporalGraph ConvolutionalNetworks)中;最后完成对视频中人体动作的检测。以下主要介绍联结A lphaPose与ST-GCN算法的骨架时空图。
骨架时空图是:以时空图形式表现的(经A lphaPose计算出的)人体动态骨架数据信息。我们将其用作(后续的)时空图卷积网络(ST-GCN)的输入数据。骨架时空图由节点和边组成。人体骨架中的骨骼关节点构成了骨架时空图中的节点。根据实际人体关节点之间的骨骼关系,将(每一张图像中)人体骨架上对应的两个关节点连成线,便是骨架时空图中的第一种边,用于描述同一时间不同骨架关节点之间的空间关系;之后,在一连串连续的图像中,每一个骨架关节点的移动轨迹,便构成了骨架时空图中的第二种边,用于描述同一骨架关节点在不同时间中的位置移动,也就是时间位移关系。
在图A.82中,我们可以直观地看出:在相同的时间刻度上,骨架关节点间的第一种边构成了人体骨架的形态;随着时间的推移,相同骨架关节点在相邻的单位时间刻度内就连成了第二种边。
如图A.83所示,利用骨架时空图,ST-GCN用传统卷积的方法将(A lphaPose对视频画面计算出的)人体骨骼点信息,通过采样函数与权重函数,整合时空节点的信息,用以计算出动作分类的分数,最终完成对人体姿态动作的检测。
基于ST-GCN的人体姿态动作检测算法,其最大的优点是:网络结构纯粹采用卷积层来设计,因此,相比传统算法的实现方式:通过CNN来学习空间特征“外加”通过LSTM来学习时间特征,ST-GCN将空间特征与时间特征的学习糅合在一个卷积网络里面,使其使用起来更加方便,训练所需的参数更少,训练速度更快。
A.5.3 模型训练及测试
图A.83 ST-GCN的流程图。
人体姿态动作检测算法:姿态检测算法与时空序列卷积网络的配合,首先,通过前置的A lphaPose姿态检测算法计算出视频图像中的人体姿态骨骼点信息;其次,将这些信息通过连续的视频图像组成骨架时空图,输入到时空图卷积网络ST-GCN(Spatial TemporalGraph ConvolutionalNetworks)中;最后完成对视频中人体动作的检测。以下主要介绍联结A lphaPose与ST-GCN算法的骨架时空图。
骨架时空图是:以时空图形式表现的(经A lphaPose计算出的)人体动态骨架数据信息。我们将其用作(后续的)时空图卷积网络(ST-GCN)的输入数据。骨架时空图由节点和边组成。人体骨架中的骨骼关节点构成了骨架时空图中的节点。根据实际人体关节点之间的骨骼关系,将(每一张图像中)人体骨架上对应的两个关节点连成线,便是骨架时空图中的第一种边,用于描述同一时间不同骨架关节点之间的空间关系;之后,在一连串连续的图像中,每一个骨架关节点的移动轨迹,便构成了骨架时空图中的第二种边,用于描述同一骨架关节点在不同时间中的位置移动,也就是时间位移关系。
在图A.82中,我们可以直观地看出:在相同的时间刻度上,骨架关节点间的第一种边构成了人体骨架的形态;随着时间的推移,相同骨架关节点在相邻的单位时间刻度内就连成了第二种边。
如图A.83所示,利用骨架时空图,ST-GCN用传统卷积的方法将(A lphaPose对视频画面计算出的)人体骨骼点信息,通过采样函数与权重函数,整合时空节点的信息,用以计算出动作分类的分数,最终完成对人体姿态动作的检测。
基于ST-GCN的人体姿态动作检测算法,其最大的优点是:网络结构纯粹采用卷积层来设计,因此,相比传统算法的实现方式:通过CNN来学习空间特征“外加”通过LSTM来学习时间特征,ST-GCN将空间特征与时间特征的学习糅合在一个卷积网络里面,使其使用起来更加方便,训练所需的参数更少,训练速度更快。
A.5.3 模型训练及测试
图A.84人体姿态动作数据集制作流程图。
首先,按照图A.84所示的流程制作数据集。从数值来看,YOLO训练的效果颇为理想。经过100轮训练后,Precision值已到了95%以上,边框损失与标签损失也都降到0.5%左右,这代表YOLO对数据集的标签训练几乎达到了上限效果。此时,决定最终检测效果的重要因素:数据集的多样性、泛用性与完备性,以及网络模型本身的结构。
预测框识别的目标设置为“人脸-手势”。当对工地抽烟的实地场景进行进一步的检测时,我们发现识别效果十分不理想,识别不出远距离的抽烟行为。为此,我们再度采集了相关的工地抽烟视频数据集,补充了667张图片数据,在已有训练模型的基础上进行迁移学习,其中用于训练的数据集全部是中远距离的监控画面。
基于YOLO的目标识别速度非常快,但是数据集标注耗时长、工作量大,此外,由于人体抽烟相对于整个监控画面属于小目标,容易导致模型精确率不高。为此,我们尝试引入人体动作检测技术,将目标检测与时空动作检测相融合,利用人体抽烟时的姿态信息来进一步提高对抽烟行为的检测精度。
对人体姿态动作的检测主要分为3部分,(1)人体姿态估计;(2)骨架时空图的生成;(3)是基于ST-GCN的动作识别。
我们采用A lphaPose检测来实现人体姿态识别。虽然A lphaPose检测算法可以“自底向上”地识别出多人的姿态骨架,但是,为了生成和维护后续的人体姿态骨架时空图,我们采用如下策略:首先,通过YOLO算法识别出人体的边界框,其次,在边界框内获取人体骨架信息,用作后续的骨架时空图维护。
图A.84人体姿态动作数据集制作流程图。
首先,按照图A.84所示的流程制作数据集。从数值来看,YOLO训练的效果颇为理想。经过100轮训练后,Precision值已到了95%以上,边框损失与标签损失也都降到0.5%左右,这代表YOLO对数据集的标签训练几乎达到了上限效果。此时,决定最终检测效果的重要因素:数据集的多样性、泛用性与完备性,以及网络模型本身的结构。
预测框识别的目标设置为“人脸-手势”。当对工地抽烟的实地场景进行进一步的检测时,我们发现识别效果十分不理想,识别不出远距离的抽烟行为。为此,我们再度采集了相关的工地抽烟视频数据集,补充了667张图片数据,在已有训练模型的基础上进行迁移学习,其中用于训练的数据集全部是中远距离的监控画面。
基于YOLO的目标识别速度非常快,但是数据集标注耗时长、工作量大,此外,由于人体抽烟相对于整个监控画面属于小目标,容易导致模型精确率不高。为此,我们尝试引入人体动作检测技术,将目标检测与时空动作检测相融合,利用人体抽烟时的姿态信息来进一步提高对抽烟行为的检测精度。
对人体姿态动作的检测主要分为3部分,(1)人体姿态估计;(2)骨架时空图的生成;(3)是基于ST-GCN的动作识别。
我们采用A lphaPose检测来实现人体姿态识别。虽然A lphaPose检测算法可以“自底向上”地识别出多人的姿态骨架,但是,为了生成和维护后续的人体姿态骨架时空图,我们采用如下策略:首先,通过YOLO算法识别出人体的边界框,其次,在边界框内获取人体骨架信息,用作后续的骨架时空图维护。
图A.85 A lphaPose姿态估计。
图A.85所示的是:经过姿态估计后得到的某一帧图像的15个人体骨骼点。骨架图只包含了空间信息,在此基础上,还需要连续记录该目标人体在每一帧图像中的骨骼点数据,进而得到骨架时空图的时间信息。为此,需基于YOLO识别出的每一个人体框,建立一个跟踪器,其有如下三个功能:
1.跟踪器的创建:对于新出现的人体识别目标,初始化一个存储骨骼点信息的序列,指定序列编号;
2.跟踪器的更新:随着视频画面的更新,对每一个已存在序列进行信息更新。该更新基于YOLO与A lphaPose姿态估计,运用了卡尔曼滤波进行预测,逐帧进行信息序列的更新;
3.跟踪器的终止:当跟踪器基于YOLO识别与卡尔曼滤波判断目标已消失后,清除骨骼点信息序列。
在目标人体存在的这段时间里,每一个跟踪器都维护了一个骨架时空图,之后,再将骨架时空图输入到ST-GCN模型中,将10帧连续的图像信息作为数据元进行预测,即可得到最终的预测结果。
我们对ST-GCN模型的训练如图A.86所示。子图A.86(a)中的Loss为二分类交叉熵损失函数,子图A.86(b)中accuracy是准确率。
图A.85 A lphaPose姿态估计。
图A.85所示的是:经过姿态估计后得到的某一帧图像的15个人体骨骼点。骨架图只包含了空间信息,在此基础上,还需要连续记录该目标人体在每一帧图像中的骨骼点数据,进而得到骨架时空图的时间信息。为此,需基于YOLO识别出的每一个人体框,建立一个跟踪器,其有如下三个功能:
1.跟踪器的创建:对于新出现的人体识别目标,初始化一个存储骨骼点信息的序列,指定序列编号;
2.跟踪器的更新:随着视频画面的更新,对每一个已存在序列进行信息更新。该更新基于YOLO与A lphaPose姿态估计,运用了卡尔曼滤波进行预测,逐帧进行信息序列的更新;
3.跟踪器的终止:当跟踪器基于YOLO识别与卡尔曼滤波判断目标已消失后,清除骨骼点信息序列。
在目标人体存在的这段时间里,每一个跟踪器都维护了一个骨架时空图,之后,再将骨架时空图输入到ST-GCN模型中,将10帧连续的图像信息作为数据元进行预测,即可得到最终的预测结果。
我们对ST-GCN模型的训练如图A.86所示。子图A.86(a)中的Loss为二分类交叉熵损失函数,子图A.86(b)中accuracy是准确率。
图A.86人体姿态动作训练结果
图A.86人体姿态动作训练结果
图A.87数据集制作中的错误样本
由图A.86可知,训练结果的loss值较大,最后收敛在30%,这与姿态骨骼点随空间视角的变化有关,也与训练数据集中姿态点不全、下半身被遮挡、(背过身时)姿态估计点的“突变”有关。此外,在训练时出现损失值峰值与准确率低谷现象,也就是说,在训练集中存在一些“错误”的训练样本。在数据集制作的过程中,人体的骨骼点姿态是由YOLO算法与A lphaPose算法自动生成的,由于工地数据集的图像背景复杂,在制作数据集的过程中,出现了YOLO错误识别的现象,例如:图A.87中的车尾轮廓被错误地识别为人体,进而导致骨骼点预测错误。
图A.88给出了人体姿态动作模型的检测效果。程序在跟踪框的上方显示出:估计出人体动作类别及其置信度。与YOLO模型(只有“抽烟”这一种标签类别)不同,人体姿态动作估计模型总共包含4个类别:Normal(正常未抽烟)、Hand_up(抬手)、Smoking(抽烟)与Hand_down(放手)。之所以分出这四个类别,是因为动作检测不同于目标检测,其时空双序列的特性决定了:当模型检测特定的动作类别时,动作的时间变化性也是一个重要指标。因此,为了保证模型训练类别区分的清晰程度,动作类别应尽量划分得细致。对于抽烟行为,可以划分为三个阶段:抬手、抽烟、放手。这样的划分不仅有利于模型准确率的提升,也有利于(后续的)认知算法对抽烟行为的进一步分析。
图A.87数据集制作中的错误样本
由图A.86可知,训练结果的loss值较大,最后收敛在30%,这与姿态骨骼点随空间视角的变化有关,也与训练数据集中姿态点不全、下半身被遮挡、(背过身时)姿态估计点的“突变”有关。此外,在训练时出现损失值峰值与准确率低谷现象,也就是说,在训练集中存在一些“错误”的训练样本。在数据集制作的过程中,人体的骨骼点姿态是由YOLO算法与A lphaPose算法自动生成的,由于工地数据集的图像背景复杂,在制作数据集的过程中,出现了YOLO错误识别的现象,例如:图A.87中的车尾轮廓被错误地识别为人体,进而导致骨骼点预测错误。
图A.88给出了人体姿态动作模型的检测效果。程序在跟踪框的上方显示出:估计出人体动作类别及其置信度。与YOLO模型(只有“抽烟”这一种标签类别)不同,人体姿态动作估计模型总共包含4个类别:Normal(正常未抽烟)、Hand_up(抬手)、Smoking(抽烟)与Hand_down(放手)。之所以分出这四个类别,是因为动作检测不同于目标检测,其时空双序列的特性决定了:当模型检测特定的动作类别时,动作的时间变化性也是一个重要指标。因此,为了保证模型训练类别区分的清晰程度,动作类别应尽量划分得细致。对于抽烟行为,可以划分为三个阶段:抬手、抽烟、放手。这样的划分不仅有利于模型准确率的提升,也有利于(后续的)认知算法对抽烟行为的进一步分析。
图A.88人体姿态动作模型检测效果示例
图A.88人体姿态动作模型检测效果示例
图A.89联合判定函数的图形。
A.5.4 “目标+动作”联合检测模型
通过对YOLO目标检测模型和人体姿态动作模型的性能分析,我们知道:YOLO模型精确率低、召回率高,而人体姿态动作模型精确率高、召回率低,两个模型间存在着互补。YOLO模型(由于小目标导致的)在目标特征提取方面的不足,可以由人体姿态相对稳定清晰的信息来弥补;另一方面,人体姿态动作在目标细节特征提取方面的不足,也可以由YOLO的泛化特征提取能力来弥补。
基于上面的分析,我们提出了一种结合静态目标检测与姿态动作检测的综合检测方法,来提高模型的检测性能[?]。具体地说,就是通过设计一个简单的联合判定公式,来综合YOLO模型与人体姿态动作模型的检测置信度,从而获得一个更为准确的联合置信度。设YOLO模型预测的置信度为X,人体姿态动作预测的置信度为Y,那么,“目标+动作”联合判定模型的输出置信度设为:图A.89中给出了式(A.19)在X∈[0,1]和Y∈[0,1]时的图形。“目标+动作”联合判定模型的输出式(A.19)具有如下性质:
图A.89联合判定函数的图形。
A.5.4 “目标+动作”联合检测模型
通过对YOLO目标检测模型和人体姿态动作模型的性能分析,我们知道:YOLO模型精确率低、召回率高,而人体姿态动作模型精确率高、召回率低,两个模型间存在着互补。YOLO模型(由于小目标导致的)在目标特征提取方面的不足,可以由人体姿态相对稳定清晰的信息来弥补;另一方面,人体姿态动作在目标细节特征提取方面的不足,也可以由YOLO的泛化特征提取能力来弥补。
基于上面的分析,我们提出了一种结合静态目标检测与姿态动作检测的综合检测方法,来提高模型的检测性能[?]。具体地说,就是通过设计一个简单的联合判定公式,来综合YOLO模型与人体姿态动作模型的检测置信度,从而获得一个更为准确的联合置信度。设YOLO模型预测的置信度为X,人体姿态动作预测的置信度为Y,那么,“目标+动作”联合判定模型的输出置信度设为:图A.89中给出了式(A.19)在X∈[0,1]和Y∈[0,1]时的图形。“目标+动作”联合判定模型的输出式(A.19)具有如下性质:
表A.4模型性能对比
表A.4模型性能对比
1.归一性:自变量X与Y都是取值范围为[0,1]的实数,因变量O也是取值范围为[0,1]的实数;当X与Y为0时,O为0;当X与Y为1时,O为1。
2.连续性:式(A.19)是一个连续的函数,处处可微。此外,当X为1、Y为1时,梯度为0;当X为0、Y为0时,梯度也为0。
3.单调性:随着自变量X与Y的增大,因变量O也随之增大。因此,当YOLO判定的置信度与人体姿态动作判定的置信度增大时,联合判定置信度也相应地增大。
4.非线性:当X与Y的值从1开始下降时,O的下降速率由慢变快再变慢。这符合预测系统的置信度要求:当两个独立的检测模式置信度都极高或极低时,其对应的联合判定置信度接近饱和,变化速率趋于0;当两个独立检测模式的置信度在一半左右时,其对应的联合判定置信度在未饱和的情况下变化速率快。注意,当YOLO模型置信度为0.5、人体姿态动作模型置信度也为0.5时,联合判定置信度是0.5。
此外,当X=0,Y=1时,联合判定模型的输出O=0.68;反之,当X=1,Y=0时,联合判定模型的输出O=0.32。这是根据实际测试结果得出的工程经验结果,由于YOLO目标的精确率低,容易将未抽烟的人脸识别为抽烟的目标,因此,我们选择适度降低YOLO置信度的权重,从而使得当YOLO检测出抽烟目标而人体动作姿态模型未检测出抽烟时,联合判定输出的置信度较低。在这里,我们选择用:两个模型的精确率之比,来作为两者的权重之比。
表A.4中给出了三种方法的性能对比,包括:YOLO模型、人体姿态动作模型、“目标+动作”联合检测模型。我们可以直观地看出,联合检测模型的应用,使得检测精度(相较于两种单独的模型)有了全方位的提升。
1.归一性:自变量X与Y都是取值范围为[0,1]的实数,因变量O也是取值范围为[0,1]的实数;当X与Y为0时,O为0;当X与Y为1时,O为1。
2.连续性:式(A.19)是一个连续的函数,处处可微。此外,当X为1、Y为1时,梯度为0;当X为0、Y为0时,梯度也为0。
3.单调性:随着自变量X与Y的增大,因变量O也随之增大。因此,当YOLO判定的置信度与人体姿态动作判定的置信度增大时,联合判定置信度也相应地增大。
4.非线性:当X与Y的值从1开始下降时,O的下降速率由慢变快再变慢。这符合预测系统的置信度要求:当两个独立的检测模式置信度都极高或极低时,其对应的联合判定置信度接近饱和,变化速率趋于0;当两个独立检测模式的置信度在一半左右时,其对应的联合判定置信度在未饱和的情况下变化速率快。注意,当YOLO模型置信度为0.5、人体姿态动作模型置信度也为0.5时,联合判定置信度是0.5。
此外,当X=0,Y=1时,联合判定模型的输出O=0.68;反之,当X=1,Y=0时,联合判定模型的输出O=0.32。这是根据实际测试结果得出的工程经验结果,由于YOLO目标的精确率低,容易将未抽烟的人脸识别为抽烟的目标,因此,我们选择适度降低YOLO置信度的权重,从而使得当YOLO检测出抽烟目标而人体动作姿态模型未检测出抽烟时,联合判定输出的置信度较低。在这里,我们选择用:两个模型的精确率之比,来作为两者的权重之比。
表A.4中给出了三种方法的性能对比,包括:YOLO模型、人体姿态动作模型、“目标+动作”联合检测模型。我们可以直观地看出,联合检测模型的应用,使得检测精度(相较于两种单独的模型)有了全方位的提升。
图A.90程序框图
根据上面的分析,我们完成了一个针对工地抽烟行为的智能检测系统。图A.5.4中给出了系统程序的框图。当然,我们可以对联合判定公式(A.19)做经验性修改,从而进一步提升系统的检测结果。
A.6 双模态钢轨缺陷快速检测
随着我国铁路运行向着高速、大密度和重载列车的方向发展,如何切实高效的保障铁路运行安全是正面临的严峻考验[32]。
钢轨是铁路轨道的基本承重结构,用于引导机车车辆行驶,同时为车轮的滚动提供最小阻力的接触面。受到重载、疲劳磨损以及外界环境影响,钢轨表面产生的擦伤、掉块、凹陷、划痕、裂纹等缺陷会给铁路运行安全造成重大安全隐患。如果不及时修复或更换钢轨,将发生严重的列车事故,从而造成更大的人员伤亡和经济损失。
我们从实际应用的角度出发,将YOLOv4-Tiny改进为一种基于钢轨表面双模态图像的轻量级钢轨表面缺陷检测方法,称为:Parallel-YOLOv4-Tiny,可部署在小型边缘计算设备上,在综合检测车上实现钢轨表面缺陷的快速采集和检测。
A.6.1 数据采集系统概述
图A.90程序框图
根据上面的分析,我们完成了一个针对工地抽烟行为的智能检测系统。图A.5.4中给出了系统程序的框图。当然,我们可以对联合判定公式(A.19)做经验性修改,从而进一步提升系统的检测结果。
A.6 双模态钢轨缺陷快速检测
随着我国铁路运行向着高速、大密度和重载列车的方向发展,如何切实高效的保障铁路运行安全是正面临的严峻考验[32]。
钢轨是铁路轨道的基本承重结构,用于引导机车车辆行驶,同时为车轮的滚动提供最小阻力的接触面。受到重载、疲劳磨损以及外界环境影响,钢轨表面产生的擦伤、掉块、凹陷、划痕、裂纹等缺陷会给铁路运行安全造成重大安全隐患。如果不及时修复或更换钢轨,将发生严重的列车事故,从而造成更大的人员伤亡和经济损失。
我们从实际应用的角度出发,将YOLOv4-Tiny改进为一种基于钢轨表面双模态图像的轻量级钢轨表面缺陷检测方法,称为:Parallel-YOLOv4-Tiny,可部署在小型边缘计算设备上,在综合检测车上实现钢轨表面缺陷的快速采集和检测。
A.6.1 数据采集系统概述
图A.91线结构光三维测量原理图
我们的研究工作首先需要构建:基于多源传感器构建的数据采集系统,该系统安装在综合检测车下方,用于实时采集钢轨表面数据。在此基础之上,我们进一步设计构建了:双模态钢轨表面缺陷图像数据集的组织架构。
本研究中,我们建立的双模态钢轨表面缺陷图像数据集是根据线结构光三维测量原理采集的。线结构光轮廓测量技术的透视投影几何模型如图A.91所示。一套线结构光轮廓测量组件由线激光器、镜头和相机组成。线结构光入射到被测物表面,被调制成反映被测物轮廓信息的光条,由相机拍摄该光条得到被测物的激光断面图像。对该图像进行光条中心提取得到光条中心像素坐标,结合光条中心的像素坐标和系统标定参数,便可计算出被测物实际轮廓。结合扫描运动可以等间距获取被测物轮廓数据,从而实现对整个被测物的三维测量。
基于线结构光三维测量原理,由3D相机、机器视觉镜头和线性激光器组成线结构光三维测量系统。如图A.92所示,线结构光的光刀平面垂直入射到钢轨表面,由3D相机获取钢轨等部件的激光截面图像。然后,对钢轨等间距扫描得到一系列钢轨轮廓数据,并根据实际采样间隔等间距排列钢轨轮廓数据,得到钢轨的三维点云数据。最后,同时对三维点云数据进行处理从而得到双模态图像,其中包含钢轨表面的灰度强度图像和相应的深度图像。强度图像包含丰富的钢轨表面纹理信息,而相应的深度图像包含钢轨表面的三维信息。
图A.91线结构光三维测量原理图
我们的研究工作首先需要构建:基于多源传感器构建的数据采集系统,该系统安装在综合检测车下方,用于实时采集钢轨表面数据。在此基础之上,我们进一步设计构建了:双模态钢轨表面缺陷图像数据集的组织架构。
本研究中,我们建立的双模态钢轨表面缺陷图像数据集是根据线结构光三维测量原理采集的。线结构光轮廓测量技术的透视投影几何模型如图A.91所示。一套线结构光轮廓测量组件由线激光器、镜头和相机组成。线结构光入射到被测物表面,被调制成反映被测物轮廓信息的光条,由相机拍摄该光条得到被测物的激光断面图像。对该图像进行光条中心提取得到光条中心像素坐标,结合光条中心的像素坐标和系统标定参数,便可计算出被测物实际轮廓。结合扫描运动可以等间距获取被测物轮廓数据,从而实现对整个被测物的三维测量。
基于线结构光三维测量原理,由3D相机、机器视觉镜头和线性激光器组成线结构光三维测量系统。如图A.92所示,线结构光的光刀平面垂直入射到钢轨表面,由3D相机获取钢轨等部件的激光截面图像。然后,对钢轨等间距扫描得到一系列钢轨轮廓数据,并根据实际采样间隔等间距排列钢轨轮廓数据,得到钢轨的三维点云数据。最后,同时对三维点云数据进行处理从而得到双模态图像,其中包含钢轨表面的灰度强度图像和相应的深度图像。强度图像包含丰富的钢轨表面纹理信息,而相应的深度图像包含钢轨表面的三维信息。
图A.92安装在综合检测车下的3D测量数据采集系统(1:线结构激光器,2:镜头,3:相机,4:三维测量模块,5:钢轨)
A.6.2 数据集概述
我们在以下实验中使用的数据集是上方所建立的双模态钢轨表面缺陷图像数据集。通过数据采集系统,对三维点云数据进行采集和处理,同时获得双模态图像,其中包含轨道表面的灰度强度图像和相应的深度图像。双模态图像具有不同的特征,即强度图像包含纹理信息,深度图像包含钢轨表面的三维信息。
在双模态钢轨表面缺陷图像数据集中,共有400个灰度图像和400个相应的深度图像,涉及四类典型缺陷(即磨损、异物、划痕和剥落)。数据集中的一些示例图像如图A.93所示。
数据集的整体图像按0.7:0.15:0.15的比例划分为训练集、验证集和测试集。因此,在这些轨道图像中,训练集包含280个灰度图像和(对应的280个)深度图像,验证集中包含60个灰度图像和(对应的60个)深度图像,测试集中包含其他图像。
A.6.3 Parallel-YOLOv4-Tiny轻量级检测方法
YOLOv4-Tiny是YOLOv4的轻量化版本,具有更简单的网络结构和更低的参数,并使用两个特征层进行分类和回归预测。因此,Tiny版本的YOLOv4算法是移动嵌入式设备开发中的一种可行方案,更好地适配了边缘AI设备以实现更高的速度。基于本文所构建的双模态数据采集系统以及双模态钢轨表面缺陷数据集,我们对YOLOv4-Tiny进行了改进,采用并行特征处理策略,称为Parallel-YOLOv4-Tiny。
图A.92安装在综合检测车下的3D测量数据采集系统(1:线结构激光器,2:镜头,3:相机,4:三维测量模块,5:钢轨)
A.6.2 数据集概述
我们在以下实验中使用的数据集是上方所建立的双模态钢轨表面缺陷图像数据集。通过数据采集系统,对三维点云数据进行采集和处理,同时获得双模态图像,其中包含轨道表面的灰度强度图像和相应的深度图像。双模态图像具有不同的特征,即强度图像包含纹理信息,深度图像包含钢轨表面的三维信息。
在双模态钢轨表面缺陷图像数据集中,共有400个灰度图像和400个相应的深度图像,涉及四类典型缺陷(即磨损、异物、划痕和剥落)。数据集中的一些示例图像如图A.93所示。
数据集的整体图像按0.7:0.15:0.15的比例划分为训练集、验证集和测试集。因此,在这些轨道图像中,训练集包含280个灰度图像和(对应的280个)深度图像,验证集中包含60个灰度图像和(对应的60个)深度图像,测试集中包含其他图像。
A.6.3 Parallel-YOLOv4-Tiny轻量级检测方法
YOLOv4-Tiny是YOLOv4的轻量化版本,具有更简单的网络结构和更低的参数,并使用两个特征层进行分类和回归预测。因此,Tiny版本的YOLOv4算法是移动嵌入式设备开发中的一种可行方案,更好地适配了边缘AI设备以实现更高的速度。基于本文所构建的双模态数据采集系统以及双模态钢轨表面缺陷数据集,我们对YOLOv4-Tiny进行了改进,采用并行特征处理策略,称为Parallel-YOLOv4-Tiny。
图A.93数据集中包含灰度图像和深度图像,并且总是“成对”出现。
如上所述,我们采用了并行特征处理策略来改进YOLOv4-Tiny,如图A.6.3所示。由于双模态钢轨表面缺陷数据的数据特点,我们认为对于双模态钢轨表面缺陷图像,分别使用主干网络进行特征提取可以增强模型的特征提取能力和泛化能力,提高精度。
A.6.4 实验结果与分析
本节内容针对A.6.2小节所建立的钢轨表面缺陷双模态图像数据集进行了一系列实验,以评估Parallel-YOLOv4-Tiny的效果。
本实验的编译环境为W indows10。实验服务器配备了具有8GB内存的NVIDIA RTX 2060 Super图形处理单元(GPU)。Parallel-YOLOv4-Tiny算法基于Python语言,使用了Keras、Tensorf low、Opencv、Num py等第三方工具库。此外,CUDA还用于加速训练。训练输入的批量大小设置为16。我们采用了Adam优化算法,最大训练轮次Epoch设置为100轮,初始学习率设置为0.001。当训练轮次达到最大训练轮次的一半时,每训练10轮,学习率下调10倍。训练参数中,批量大小由训练设备的内存容量所决定,学习率变化是遵从目前流行的图像分类网络的训练配置。
图A.93数据集中包含灰度图像和深度图像,并且总是“成对”出现。
如上所述,我们采用了并行特征处理策略来改进YOLOv4-Tiny,如图A.6.3所示。由于双模态钢轨表面缺陷数据的数据特点,我们认为对于双模态钢轨表面缺陷图像,分别使用主干网络进行特征提取可以增强模型的特征提取能力和泛化能力,提高精度。
A.6.4 实验结果与分析
本节内容针对A.6.2小节所建立的钢轨表面缺陷双模态图像数据集进行了一系列实验,以评估Parallel-YOLOv4-Tiny的效果。
本实验的编译环境为W indows10。实验服务器配备了具有8GB内存的NVIDIA RTX 2060 Super图形处理单元(GPU)。Parallel-YOLOv4-Tiny算法基于Python语言,使用了Keras、Tensorf low、Opencv、Num py等第三方工具库。此外,CUDA还用于加速训练。训练输入的批量大小设置为16。我们采用了Adam优化算法,最大训练轮次Epoch设置为100轮,初始学习率设置为0.001。当训练轮次达到最大训练轮次的一半时,每训练10轮,学习率下调10倍。训练参数中,批量大小由训练设备的内存容量所决定,学习率变化是遵从目前流行的图像分类网络的训练配置。
图A.94 Parallel-YOLOv4-T iny的系统架构。
A.6.4.1 损失函数实验
我们基于双模态数据集对分别应用上述损失函数的Parallel-YOLOv4-Tiny进行训练,并在测试集上评估其对平均精度m AP(mean Average Precision)的影响。
表A.5不同损失函数实验结果
图A.94 Parallel-YOLOv4-T iny的系统架构。
A.6.4.1 损失函数实验
我们基于双模态数据集对分别应用上述损失函数的Parallel-YOLOv4-Tiny进行训练,并在测试集上评估其对平均精度m AP(mean Average Precision)的影响。
表A.5不同损失函数实验结果
不同损失函数的结果如表A.5所示。从表中可以看出,具有CIOU损失函数的Parallel-YOLOv4-Tiny的最佳m AP为92.07,比IoU损失函数高3.12%,比GIoU损失函数高1.23%,比DIoU损失函数高1.00%。因此,在我们提出的Parallel-YOLOv4-Tiny中,我们采用CIoU损失函数作为边界框回归损失。
A.6.4.2 对比实验
如本章第A.6.3节所述,我们通过采用并行主干网络策略分别提取双模态图像特征来改进YOLOv4-Tiny。这一策略能有效提高对双模态钢轨表面缺陷的特征提取效果。为了验证并行处理策略的有效性,我们在相同的数据集上进行了原始YOLOv4-Tiny算法训练和测试的实验。我们分别将原始YOLOv4-Tiny算法应用于仅强度图像输入(YOLOv4-Tiny-Intensity)、仅深度图像输入(YOLOv4-Tiny-Depth)以及融合双模态图像输入(YOLOv4-Tiny-Fusion)。
表A.6对比实验结果
不同损失函数的结果如表A.5所示。从表中可以看出,具有CIOU损失函数的Parallel-YOLOv4-Tiny的最佳m AP为92.07,比IoU损失函数高3.12%,比GIoU损失函数高1.23%,比DIoU损失函数高1.00%。因此,在我们提出的Parallel-YOLOv4-Tiny中,我们采用CIoU损失函数作为边界框回归损失。
A.6.4.2 对比实验
如本章第A.6.3节所述,我们通过采用并行主干网络策略分别提取双模态图像特征来改进YOLOv4-Tiny。这一策略能有效提高对双模态钢轨表面缺陷的特征提取效果。为了验证并行处理策略的有效性,我们在相同的数据集上进行了原始YOLOv4-Tiny算法训练和测试的实验。我们分别将原始YOLOv4-Tiny算法应用于仅强度图像输入(YOLOv4-Tiny-Intensity)、仅深度图像输入(YOLOv4-Tiny-Depth)以及融合双模态图像输入(YOLOv4-Tiny-Fusion)。
表A.6对比实验结果
实验统计结果总结在表A.6中。我们可以看到:Parallel-YOLOv4-Tiny的性能明显优于原始YOLOv4-Tiny算法的方法,其m AP值相较原始方法中最优的YOLOv4-Tiny-Intensity还高了7.95%。表A.6中的结果显示出原始YOLOv4-Tiny算法方法虽然具有一定的速度优势,但其m AP精度差,准确率不能令人满意,而我们的Parallel-YOLOv4-Tiny方法的m AP精度有巨大的提升,并且同时其运行速度已经大大满足了实际应用的要求。
此外,如表A.6所示,YOLOv4-Tiny-Fusion方法的性能最差,其m AP精度值仅有21.19。由此,我们可以分析出,当双模态图像直接融合并一起输入到特征提取网络中时,不同模态图像的特征提取会相互干扰,无法有效提取体征,导致更差的结果。这一实验结果同时也进一步证明了我们的方法Parallel-YOLOv4-Tiny在双模态图像特征提取中的有效性和先进性。
A.6.5 工作小结
通过对YOLOv4-Tiny算法进行改进,提出了一种双模态钢轨表面缺陷图像的Parallel-YOLOv4-Tiny方法。Parallel-YOLOv4-Tiny采用并行特征处理策略进行双模态图像特征提取。然后,分别融合不同层次的特征,进一步进行缺陷检测。我们进行了一系列的实验来证明我们的方法Parallel-YOLOv4-Tiny的有效性和先进性。实验表明,采用CIOU损失函数的Parallel-YOLOv4-Tiny算法在单个GPU上以88 FPS的速度获得92.07的m AP,其性能明显优于原始的YOLOv4-Tiny算法。
A.7 本书总结
通过本章中的应用案例,我们再次看到了光电感知的核心思想:
光电感知=成像+视觉
这是本书最核心的内容。此外,我还要强调两个重要的认知。第一个是Berthold K.P.Horn教授1981年在下图中给出的机器视觉定义:
实验统计结果总结在表A.6中。我们可以看到:Parallel-YOLOv4-Tiny的性能明显优于原始YOLOv4-Tiny算法的方法,其m AP值相较原始方法中最优的YOLOv4-Tiny-Intensity还高了7.95%。表A.6中的结果显示出原始YOLOv4-Tiny算法方法虽然具有一定的速度优势,但其m AP精度差,准确率不能令人满意,而我们的Parallel-YOLOv4-Tiny方法的m AP精度有巨大的提升,并且同时其运行速度已经大大满足了实际应用的要求。
此外,如表A.6所示,YOLOv4-Tiny-Fusion方法的性能最差,其m AP精度值仅有21.19。由此,我们可以分析出,当双模态图像直接融合并一起输入到特征提取网络中时,不同模态图像的特征提取会相互干扰,无法有效提取体征,导致更差的结果。这一实验结果同时也进一步证明了我们的方法Parallel-YOLOv4-Tiny在双模态图像特征提取中的有效性和先进性。
A.6.5 工作小结
通过对YOLOv4-Tiny算法进行改进,提出了一种双模态钢轨表面缺陷图像的Parallel-YOLOv4-Tiny方法。Parallel-YOLOv4-Tiny采用并行特征处理策略进行双模态图像特征提取。然后,分别融合不同层次的特征,进一步进行缺陷检测。我们进行了一系列的实验来证明我们的方法Parallel-YOLOv4-Tiny的有效性和先进性。实验表明,采用CIOU损失函数的Parallel-YOLOv4-Tiny算法在单个GPU上以88 FPS的速度获得92.07的m AP,其性能明显优于原始的YOLOv4-Tiny算法。
A.7 本书总结
通过本章中的应用案例,我们再次看到了光电感知的核心思想:
光电感知=成像+视觉
这是本书最核心的内容。此外,我还要强调两个重要的认知。第一个是Berthold K.P.Horn教授1981年在下图中给出的机器视觉定义:
自此之后,机器视觉才成为了一门严谨的学科。另外一个重要的认知是:图像是关于场景的信号测量结果!注意,图像并不一定是我们眼睛直接看到的结果。例如,对于图A.95中给出的例子,
自此之后,机器视觉才成为了一门严谨的学科。另外一个重要的认知是:图像是关于场景的信号测量结果!注意,图像并不一定是我们眼睛直接看到的结果。例如,对于图A.95中给出的例子,
图A.95在半径为1(个长度单位)的圆形区域内,只存在一个点P,使得X射线无法透过这个点;除此之外,X射线都能够几乎毫无衰减地透过去。我们的任务是确定这个点的位置。(a)当X射线扫描圆形区域时,在“X射线接收器”中,只有与P点位置对应的“X射线接收器”接收不到“X射线能量”,其他的接收器都能接收到“X射线能量”。(b)后向投影的实现过程为:首先,根据X射线扫描结果ck,l所对应的直线参数θ和rθ,将ck,l的值“加在”直线rθ=x cosθ+y sinθ经过的所有点(x,y)T上。
图A.95在半径为1(个长度单位)的圆形区域内,只存在一个点P,使得X射线无法透过这个点;除此之外,X射线都能够几乎毫无衰减地透过去。我们的任务是确定这个点的位置。(a)当X射线扫描圆形区域时,在“X射线接收器”中,只有与P点位置对应的“X射线接收器”接收不到“X射线能量”,其他的接收器都能接收到“X射线能量”。(b)后向投影的实现过程为:首先,根据X射线扫描结果ck,l所对应的直线参数θ和rθ,将ck,l的值“加在”直线rθ=x cosθ+y sinθ经过的所有点(x,y)T上。
图A.96机器狗爬楼梯实验。光电感知系统从场景中获取的描述信息,被用于智能体与环境之间的有效交互。
多年以后,你可能会忘记本书中的大部分内容。但是,希望您能记住上面两个核心的认知。总结起来:“图像”是一个测量信号,“描述”是一种抽象信息,也就是说,“成像”是一个信号测量过程;而“视觉”是一个信息提取过程。因此,
图A.96机器狗爬楼梯实验。光电感知系统从场景中获取的描述信息,被用于智能体与环境之间的有效交互。
多年以后,你可能会忘记本书中的大部分内容。但是,希望您能记住上面两个核心的认知。总结起来:“图像”是一个测量信号,“描述”是一种抽象信息,也就是说,“成像”是一个信号测量过程;而“视觉”是一个信息提取过程。因此,
光电感知系统被用来从场景中直接获取有用的描述信息,实现智能体与环境之间的有效交互,例如图A.96中的机器狗爬楼梯实验。正如Horn教授1986年在其经典著作《Robot Vision》中所指出的[1]:
•一个真正意义上的“通用”视觉系统,必须能处理视觉中的所有方面,并且,它能够被用来处理所有只需要视觉信息就能够解决的问题;此外,它还将具有探索物质世界的能力!这应该成为智能光电感知系统设计的“出发点”和“落脚点”。
【注释】
[1]本小节及后面两小节由中山大学电子与通信工程学院张源硕士整理完成。
[2]分类(C lassif ication)问题和回归(Regression)问题是机器学习领域的两个基本预测问题。简单来说,分类问题的输出为离散数据,是一种定性预测;回归问题的输出为连续数据,是一种定量预测。
[3]卷积神经网络(Convolutional Neural Network,或简称CNN)是一类包含卷积计算且具有深度结构的前馈神经网络,是深度学习的代表算法之一。卷积神经网络可以学习到非常鲁棒并具有表达能力的特征,故也可以被引入到目标检测流程中提取特征。基于深度学习的所有算法都使用了卷积神经网络,其创新性更多体现在网络结构、损失函数、性能计算方法等创新。卷积神经网络的结构主要包括输入层(Inpu t)、隐藏层(Hidden)和输出层(Output),隐藏层里面包含多层,根据结构可分为卷积层(Convolu tion)、池化层(Pooling)、全连接层(Fu ll Connection)等。由于篇幅限制,本书省略其详细介绍,之后仅对提及到的部分术语进行简单解释,感兴趣的读者可参考深度学习相关书籍。
[4]交并比(Intersection over Union,或简称IoU)是目标检测性能计算中非常重要的函数,在IoU的基础上还存在GIoU、D IoU、CIoU等变体,其原理将在A.1.7中介绍。
[5]激活函数(Activation Function)是神经网络的神经元上运行的函数,将神经元的输入映射到输出端,为神经元引入了非线性因素,使得神经网络在理论上可以逼近任何非线性函数。常见的激活函数有Sigm oid、tanh、ReLU、Leaky-ReLU等,在YOLOv4中使用的激活函数为Mish。
[6]我们可以用网络结构图直观表述卷积神经网络的网络结构,很多特定网络结构有它的名称,如YOLOv2的骨干网络名为Darknet-19,YOLOv3的骨干网络名为Darknet-53,等等。A.3.2小节对与目标检测相关的常见的网络结构进行介绍。
[7]损失函数(Loss Function)是评价模型的预测值和真实值的不一致程度,模型训练的过程也是使损失函数最小化的过程。损失函数一般由自己设定,其选择往往与模型的性能直接相关。常见的损失函数有均方误差(MSE)、二元交叉熵(BCE)等。
[8]批标准化(Batch Norm alization,或简称BN),通过调整和缩放激活来规范化输入层,加速网络收敛速度。在YOLOv4中提及到的交叉迭代批量归一化(CBN)和交叉迭代小批量归一化(Cm BN)、为BN的变体。
[9]网络中的网络(N IN)在本书A.3.2.3小节中有相关介绍。
[10]池化(Pooling)操作一般都是下采样,用某一位置相邻输出的总体统计特征代替网络在该位置的输出。常见的池化类型包括最大值池化(Maxpool)、均值池化(AveragePool)、L 2池化(矩形邻域内的2-范数)等。
[11]数据增强(Data Augm entation)指在不实质性增加数据的前提下,让有限的数据产生更多的价值,可以减少网络的过拟合现象,训练出泛化能力更强的神经网络。在目标检测中,传统的数据增强方法为光度畸变和几何畸变。光度畸变包括调整图像的亮度、对比度、饱和度、噪声和色彩;几何畸变包括随机缩放、平移、旋转、翻转等。YOLOv2主要使用了传统的数据增强方法。近年来,一些研究人员将重点放在模拟对象遮挡的问题上,常见的方法有Cu tOut、MixUp、CutMix、Mosiac和GAN(生成对抗网络)等,YOLOv4的模型训练中引入了一些新颖的数据增强方法。
[12]在基于深度学习的目标检测算法中,一般分为4个部分:输入(Input)、主干(Backbone)、颈部(Neck)和头部(Head)。输入指图像的输入端口;主干是网络的核心,用于提取特征;颈部用于进一步提升特征的多样性和鲁棒性②;头部指对提取特征机进行预测,获取网络输出。
[13]BoF(Bag of Freebies):只改变训练策略,不会在推理过程中增加额外计算开销,并能有效提高目标检测性能的技巧。如数据增强、正则化等。
[14]BoS(Bag of Specials):在推理过程中增加少量计算开销,但可以显著提升目标检测精确度的技巧。如改变激活函数、池化方法、网络结构等。
[15]在B g t中,gt的全拼为ground truth,是人工标注表示真实情况的框,可理解为评价交并比中的标准答案。
[16]GIoU的全称为Generalized Intersection over Union。
[17]D IoU的全称为D istance Intersection over Union。
[18]CIoU的全称为Com p lete Intersection over Union。
[19]YOLOv5开源网址:https://github.com/u ltralytics/yolov5。
[20]YOLOv5中还有细分版本,本小节使用2021年1月5日发布的YOLOv5-4.0进行实验,但之后还在2021年4月12日推出了YOLOv5-5.0,在2021年10月12日推出了YOLOv5-6.0,不同版本号的程序的神经网络和运行方法可能有略微不同。YOLOv5-4.0的源码可在https://github.com/u ltraly tics/yolov5/releases/tag/v4.0中下载。
[21]LabelIm g软件的下载地址为https://github.com/tzu talin/labelIm g/releases/tag/v1.8.1。它导出标签有XML格式或YOLO格式,制作YOLO数据集时使用YOLO格式,制作其他目标检测算法的数据集是使用XML格式。
[22]请注意,使用LabelIm g软件需要注意文件路径名中不能出现非ASCII字符,否则无法完成数据标注。若文件路径名有中文或特殊字符,需要将其改成英文字母。
[23]HOG全称为Histogram of O riented Grad ient,即方向梯度直方图。
[24]SVM全称为Support Vector Machine,即支持向量机,是一类按监督学习对数据进行二元分类的广义线性分类器。
[25]DPM全称为Deform ab le Parts Model,即可变形部件模型。
[26]SOTA全称为State-of-the-art,指特定任务中在当前表现得最好的算法或模型。
[27]R-CNN的全称为Regions w ith CNN featu res,区域卷积网络。
[28]多层感知机(Mu lti-Layer Percep ton,或简称MLP)即全连接神经网络。
[29]SSD全称为Single Shot Mu ltiBox Detector,意思是“单阶段多边框探测器”。
[30]本小节由中山大学电子与通信工程学院江伟弘硕士整理,参见:江伟弘,基于视觉感知的智慧工地安全监测技术研究,中山大学硕士学位论文,2021年12月。
[31]参见:章炫锐,基于机器视觉的抽烟行为智能检测,中山大学学位论文,2021年5月.
[32]参见:郑嘉俊,基于多源传感器的钢轨表面缺陷检测,中山大学硕士论文,2022年.
光电感知系统被用来从场景中直接获取有用的描述信息,实现智能体与环境之间的有效交互,例如图A.96中的机器狗爬楼梯实验。正如Horn教授1986年在其经典著作《Robot Vision》中所指出的[1]:
•一个真正意义上的“通用”视觉系统,必须能处理视觉中的所有方面,并且,它能够被用来处理所有只需要视觉信息就能够解决的问题;此外,它还将具有探索物质世界的能力!这应该成为智能光电感知系统设计的“出发点”和“落脚点”。
【注释】
[1]本小节及后面两小节由中山大学电子与通信工程学院张源硕士整理完成。
[2]分类(C lassif ication)问题和回归(Regression)问题是机器学习领域的两个基本预测问题。简单来说,分类问题的输出为离散数据,是一种定性预测;回归问题的输出为连续数据,是一种定量预测。
[3]卷积神经网络(Convolutional Neural Network,或简称CNN)是一类包含卷积计算且具有深度结构的前馈神经网络,是深度学习的代表算法之一。卷积神经网络可以学习到非常鲁棒并具有表达能力的特征,故也可以被引入到目标检测流程中提取特征。基于深度学习的所有算法都使用了卷积神经网络,其创新性更多体现在网络结构、损失函数、性能计算方法等创新。卷积神经网络的结构主要包括输入层(Inpu t)、隐藏层(Hidden)和输出层(Output),隐藏层里面包含多层,根据结构可分为卷积层(Convolu tion)、池化层(Pooling)、全连接层(Fu ll Connection)等。由于篇幅限制,本书省略其详细介绍,之后仅对提及到的部分术语进行简单解释,感兴趣的读者可参考深度学习相关书籍。
[4]交并比(Intersection over Union,或简称IoU)是目标检测性能计算中非常重要的函数,在IoU的基础上还存在GIoU、D IoU、CIoU等变体,其原理将在A.1.7中介绍。
[5]激活函数(Activation Function)是神经网络的神经元上运行的函数,将神经元的输入映射到输出端,为神经元引入了非线性因素,使得神经网络在理论上可以逼近任何非线性函数。常见的激活函数有Sigm oid、tanh、ReLU、Leaky-ReLU等,在YOLOv4中使用的激活函数为Mish。
[6]我们可以用网络结构图直观表述卷积神经网络的网络结构,很多特定网络结构有它的名称,如YOLOv2的骨干网络名为Darknet-19,YOLOv3的骨干网络名为Darknet-53,等等。A.3.2小节对与目标检测相关的常见的网络结构进行介绍。
[7]损失函数(Loss Function)是评价模型的预测值和真实值的不一致程度,模型训练的过程也是使损失函数最小化的过程。损失函数一般由自己设定,其选择往往与模型的性能直接相关。常见的损失函数有均方误差(MSE)、二元交叉熵(BCE)等。
[8]批标准化(Batch Norm alization,或简称BN),通过调整和缩放激活来规范化输入层,加速网络收敛速度。在YOLOv4中提及到的交叉迭代批量归一化(CBN)和交叉迭代小批量归一化(Cm BN)、为BN的变体。
[9]网络中的网络(N IN)在本书A.3.2.3小节中有相关介绍。
[10]池化(Pooling)操作一般都是下采样,用某一位置相邻输出的总体统计特征代替网络在该位置的输出。常见的池化类型包括最大值池化(Maxpool)、均值池化(AveragePool)、L 2池化(矩形邻域内的2-范数)等。
[11]数据增强(Data Augm entation)指在不实质性增加数据的前提下,让有限的数据产生更多的价值,可以减少网络的过拟合现象,训练出泛化能力更强的神经网络。在目标检测中,传统的数据增强方法为光度畸变和几何畸变。光度畸变包括调整图像的亮度、对比度、饱和度、噪声和色彩;几何畸变包括随机缩放、平移、旋转、翻转等。YOLOv2主要使用了传统的数据增强方法。近年来,一些研究人员将重点放在模拟对象遮挡的问题上,常见的方法有Cu tOut、MixUp、CutMix、Mosiac和GAN(生成对抗网络)等,YOLOv4的模型训练中引入了一些新颖的数据增强方法。
[12]在基于深度学习的目标检测算法中,一般分为4个部分:输入(Input)、主干(Backbone)、颈部(Neck)和头部(Head)。输入指图像的输入端口;主干是网络的核心,用于提取特征;颈部用于进一步提升特征的多样性和鲁棒性②;头部指对提取特征机进行预测,获取网络输出。
[13]BoF(Bag of Freebies):只改变训练策略,不会在推理过程中增加额外计算开销,并能有效提高目标检测性能的技巧。如数据增强、正则化等。
[14]BoS(Bag of Specials):在推理过程中增加少量计算开销,但可以显著提升目标检测精确度的技巧。如改变激活函数、池化方法、网络结构等。
[15]在B g t中,gt的全拼为ground truth,是人工标注表示真实情况的框,可理解为评价交并比中的标准答案。
[16]GIoU的全称为Generalized Intersection over Union。
[17]D IoU的全称为D istance Intersection over Union。
[18]CIoU的全称为Com p lete Intersection over Union。
[19]YOLOv5开源网址:https://github.com/u ltralytics/yolov5。
[20]YOLOv5中还有细分版本,本小节使用2021年1月5日发布的YOLOv5-4.0进行实验,但之后还在2021年4月12日推出了YOLOv5-5.0,在2021年10月12日推出了YOLOv5-6.0,不同版本号的程序的神经网络和运行方法可能有略微不同。YOLOv5-4.0的源码可在https://github.com/u ltraly tics/yolov5/releases/tag/v4.0中下载。
[21]LabelIm g软件的下载地址为https://github.com/tzu talin/labelIm g/releases/tag/v1.8.1。它导出标签有XML格式或YOLO格式,制作YOLO数据集时使用YOLO格式,制作其他目标检测算法的数据集是使用XML格式。
[22]请注意,使用LabelIm g软件需要注意文件路径名中不能出现非ASCII字符,否则无法完成数据标注。若文件路径名有中文或特殊字符,需要将其改成英文字母。
[23]HOG全称为Histogram of O riented Grad ient,即方向梯度直方图。
[24]SVM全称为Support Vector Machine,即支持向量机,是一类按监督学习对数据进行二元分类的广义线性分类器。
[25]DPM全称为Deform ab le Parts Model,即可变形部件模型。
[26]SOTA全称为State-of-the-art,指特定任务中在当前表现得最好的算法或模型。
[27]R-CNN的全称为Regions w ith CNN featu res,区域卷积网络。
[28]多层感知机(Mu lti-Layer Percep ton,或简称MLP)即全连接神经网络。
[29]SSD全称为Single Shot Mu ltiBox Detector,意思是“单阶段多边框探测器”。
[30]本小节由中山大学电子与通信工程学院江伟弘硕士整理,参见:江伟弘,基于视觉感知的智慧工地安全监测技术研究,中山大学硕士学位论文,2021年12月。
[31]参见:章炫锐,基于机器视觉的抽烟行为智能检测,中山大学学位论文,2021年5月.
[32]参见:郑嘉俊,基于多源传感器的钢轨表面缺陷检测,中山大学硕士论文,2022年.
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。