目录

 3.4实验与结果分析(Experiment and Result Analysis)

3.4.1实验环境 

3.4.2评价指标

3.4.3实验结果

 4基于空间注意力的轻量化矿山目标检测方法( Lightweight Mining Object Detection Method Based on Spatial Attention)

4.1引言(Introduction)

4.2相关知识(Relevant Knowledge)

4.2.1注意力机制

4.2.2激活函数层

4.3注意力机制模块改进(Improved Attention Mechanism Module)

4.4网络模型整体结构设计(Overall Structure Design of Network Model)

4.5实验与结果分析(Experiment and Result Analysis)

4.5.1实验设置

4.5.2 VOC2012数据集对比实验

4.5.3矿山目标检测数据集对比试验

5基于联邦学习的矿山目标检测数据共享(Mining Object Detection Data Sharing Based on Federated Learning)

5.1引言(Introduction)

5.2矿山目标检测联邦数据集(Data Set Establishment)

5.2.1数据集扩充说明

5.2.2数据集构成分析

5.3联邦学习模型训练方案(Federal Learning Model Training Program)

5.3.1联邦训练流程

5.3.2联邦学习模型聚合算法

5.4实验结果与分析(Experiment and Result Analysis)

5.4.1数据扩充实验

5.4.2非中心化模型训练实验

6矿山生产场景实时目标检测系统设计与实现(Design and Implementation of Real-time Object Detection System in Mine Production Scene)

6.1引言(Introduction)

6.2系统需求分析(System Requirements Analysis)

6.3系统架构(System Architecture)

6.4硬件平台搭建(Hardware Platform Construction)

6.5功能设计与实现(Function Design and Implementation)

知识拓展

基于YOLOV8的边缘计算和联邦学习的矿山目标检测

1. 安装依赖

2. 导入必要的库


本文篇幅较长,分为上下两篇,上篇详见基于边缘计算和联邦学习的矿山目标检测

 

 3.4实验与结果分析(Experiment and Result Analysis)

3.4.1实验环境 

为了设计适用于边缘端的矿山目标检测模型,本文以矿山目标检测数据集和
基于边缘计算的矿山目标检测架构为基础,模拟边缘端实验环境如上图3-6所示。 硬件上,选择NVIDIA Jetson TX2(TX2)作为边缘计算设备。TX2配置了256 个CUDA核心,峰值算力为1.5 TFLOPs,足以满足处理至少1路高清监控视频 的需要。模拟矿山企业服务器的计算机核心计算部件为NVIDIA GTX 2080Ti图 形处理单元(Graphics Processing Unit,GPU),其搭配了4352个CUDA核心, 峰值算力达13.4 TFLOPs。2080Ti和TX2在适用于不同计算需求的任务,分别以
他们为基础组成的矿山企业服务器和边缘计算设备的具体性能、功耗、成本等方
面对比如表3-2所示。软件上,在本章实验中,矿山企业服务器操作系统为 Windows 10,使用Python编程语言和PyTorch深度学习框架实现矿山目标检测
模型和部署。 

3.4.2评价指标


(1)精度评价指标
目标检测任务需要检测出给定图像中待检测目标的位置和类别属性。对于类 别预测来说,很容易通过分类准确率来衡量目标检测方法性能。对于位置预测来 说,预测位置与目标实际位置之间的差异即可表示目标检测方法的性能,通常使
用IoU(Intersection of Union,IoU)来量化这种差异,如图3-7所示。 

应为最大值1。但是实际做到预测框和真实框的完全吻合比较困难,当两个框能 够有一定重合程度就已经达到了目标检测的目的。在实验中,取IoU值为0.5作 为阈值区分预测框的有效性,即认为IoU值大于0.5的预测框是正确预测。 

由于位置和类别两种标签都有正确和错误两种预测,只有当位置和类别都预 测正确才是正确预测,一种标签预测错误即为误检,另外还有漏检的情况。通常
将目标检测模型输出的检测框分为以下3类来衡量目标检测效果。
·正确检测框TP(True Positive):预测框IoU值大于0.5,预测框正确预测
位置,并且类别预测正确。
·误检框FP(False Positive):预测框IoU值不大于0.5或预测类别错误。 ·漏检框FN(False Negative):待检测图像中存在的目标,但是没有对应
的预测框。
基于以上3类的检测结果,通过准确率P(Precision)和召回率R(Recall) 来量化目标检测算法的检测效果。准确率P表示正确检测框占所有预测结果的比 率,即TP与TP、FP之和的比值,计算如式3-2所示: 

仅通过准确率无法衡量目标检测算法的好坏,因为准确率仅仅包含给出的预 测结果的准确率,无法确认漏检情况。如果最坏情况,检测结果只有一个预测值,
那该算法只有100%和0%两种准确率。需要用召回率R表示正确检测框占所有 真实目标框的比率,即TP与TP、FN之和的比值,计算如式3-3所示: 

(2)速度评价指标
采取的检测速度评价指标为FPS,FPS为每秒传输处理图像帧数。FPS值大 于30即可认为达到了实时检测。设备和数据相同情况下,FPS值越大代表检测
算法运行速度越快,意味着目标检测模型算法复杂度越低。 

3.4.3实验结果


(1)深层目标检测模型对比实验
目前基于深度学习的目标检测领域中优秀的目标检测网络模型有:
YOLO-v4、Faster R-CNN和SSD300等,虽然这些深层模型性能优越,但是超出
了一般的边缘计算设备的计算和存储能力,难以在应用于矿山目标检测任务的边 缘端。为选择在矿山场景下性能更优的网络模型进行轻量化改进,将这三种深层 目标检测模型部署在矿山企业服务器中,测试它们在矿山目标检测数据集的精
度,选择综合性能较好的进行后续优化设计,实验结果如下图3-7和表3-2所示。

P-R曲线综合了准确率和精确度,曲线越靠近右上方,说明模型的准确度和 召回率越高,模型性能也就越好。由图3-8可以看出,对于不同的召回率区间, Faster R-CNN精度最高,YOLO-v4整体上稍差于Faster R-CNN,SSD300几乎全面落后于另外两种网络模型。

 由表3-3的实验结果可以看出,Faster R-CNN的模型过大,实时性能比较差, SSD300的精度相对Faster R-CNN和YOLO-v4的精度过低。
一方面,YOLO-v4中使用SPPNet加强特征提取,显著增加了感受野,分离 出最重要的上下文,并且几乎不降低网络计算速度。另一方面,YOLO-v4中使用PAN特征融合结构、Mosaic等数据增强,使得YOLO-v4在本文研究的数据
清晰度不高、数据量相对不充足的矿山目标检测数据集中的综合性能更优。
YOLO-v4在精度上比Faster R-CNN略低,实时性能较高,更容易轻量化,本文 选择YOLO-v4作为边缘端矿山目标检测模型的主网络开展后续研究。
(2)YOLO-v4轻量化方案对比实验
本章测试了YOLO-v4官方的轻量化版本YOLO-v4-Tiny在矿山目标检测数
据集上的性能,由于过于简化的设计,在矿山场景低质量图片上的检测精度偏低。
为设计更优的轻量化YOLO-v4网络,使用ShuffleNet-v2、MobileNet-v3和 SqueezeNet替代YOLO-v4中的骨干网络CSPDarknet-53检验不同轻量化网络结 构在矿山目标检测数据集的综合性能,实验结果如图3-9和表3-3所示。

图3-9为YOLO-v4和4种轻量化方案在矿山目标检测数据集的P-R曲线, YOLO-v4-MobileNet-v3的性能仅次于YOLO-v4。为了更好量化综合性能指标, 对比不同轻量化方案的精度指标mAP值和速度指标FPS值,以对比它们的精度 和速度,如表下3-4所示。 

分析上表3-4可以看出,替换YOLO-v4-MobileNet-v3在矿山目标检测数据 集中精度指标mAP值最高,实时性能最好的是模型大小仅为23M的 YOLO-v4-Tiny。MobileNet系列使用1×1的深度可分离卷积代替3×3卷积大量 降低了网络参数量。同时,MobileNet-v3的bneck结构中加入SE模块,使用了 通道注意力机制。矿山中图像多存在照度不均匀等情况,MobileNet-v3中的注意
力机制能够在特征不明显的图像的特征提取更加有效,精度上优于其他轻量化网 络设计。
(3)轻量化结果对比实验
从上表3-5可以看出,MobileNet-v3在几个轻量化结构种精度损失最少,为 了更好对比MobileNet-v3结构降低计算量的效果,本章增加了实验对比速度最 快的YOLO-v4-Tiny和精度最高YOLO-v4原版两种算法的参数量、计算量,详 细数据对比如下表3-5所示。 

 如上表3-5实验结果所示,YOLO-v4-MobileNet-v3模型参量约为 YOLO-v4-Tiny的两倍,总参数量为10.8M,约为YOLO-v4的1/6。 YOLO-v4-MobileNet-v3与YOLO-v4-Tiny的计算量几乎相同,约为YOLO-v4的 1/9。
综合以上三组实验结果,本章设计的YOLO-v4-MobileNet-v3轻量化目标检
测模型在参数量和计算量得到了大幅度的缩减,可应用在边缘端矿山目标检测环
境。在矿山目标检测数据集上的检测精度指标mAP值相对于YOLO-v4-Tiny提 高了1.2%。

 4基于空间注意力的轻量化矿山目标检测方法( Lightweight Mining Object Detection Method Based on Spatial Attention)

4.1引言(Introduction)


在上一章本文设计了YOLO-v4-MobileNet-v3轻量化目标检测模型,在矿山 目标检测数据集上中精度较高,相对于YOLO-v4-Tiny目标检测精度指标mAP 值提升了1.2%。YOLO-v4-MobileNet-v3大大降低了模型的参数量和计算量,使 YOLO-v4能够部署在边缘计算设备中,适应于边缘端矿山目标检测任务。考虑
矿山图像中存在照度不均、目标模糊等情况,为强化目标检测网络模型的特征提
取能力,本章对YOLO-v4-MobileNet-v3进一步改进,在保证实时性能的情况下
提高其在矿山目标检测任务中的精度。
本章结构安排如下:第4.1节介绍了本章的研究背景和目的;第4.2节介绍 了改进内容的相关原理;第4.3节详细介绍了空间注意力机制的具体实现方法; 第4.4节基于空间注意力机制改进YOLO-v4-MobileNet-v3提出了 YOLO-v4L-SA,阐述了整体网络结构和改进细节;第4.5节在与第三章相同边缘
端矿山目标检测环境中进行实验,对比分析了改进模型的有效性、精度提升和实
际检测效果;第4.6节总结本章主要工作内容。

4.2相关知识(Relevant Knowledge)

4.2.1注意力机制


在计算机视觉、自然语言处理等领域,模仿人类的注意力机制,有效提高模 型精度的同时一定程度上减少了模型参数。目前,在计算机视觉领域运用较为广 泛的注意力机制主要有:空间注意力、通道注意力机制。

2014年,Mnih V等人[81]提出RAM(Recurrent Attention Model,RAM),它
通过循环预测重要区域并更新整个网络将注意力问题转换为序列决策过程,实现
了深度神经网络与注意力机制的结合。后来,Gregor K[82]和Xu K[83]等人分别采
用类似策略实现图片生成和图片摘要生成。 

CNN在处理图像数据中,缺乏旋转不变性、缩放不变性和翘曲不变性等重 要图像数据特点。为了在使CNN专注于重要区域的同时实现这些属性,2016 年,Jaderberg等人[84]提出了空间变换网络(Spatial Transformer Networks,STN),
使用显式程序来学习平移、缩放、旋转和其他更一般的扭曲的不变性,使网络关 注与任务最相关的区域,即空间注意力机制。
Hu J等人[73]在SENet中首次提出了通道注意力机制。在SENet中使用压缩 和激励(Squeeze-and-Excitation,SE)模块收集全局信息、捕获通道关系和提高网 络表示能力。SE模块由压缩模块(Squeeze)和激励(Excitation)两个模块组成, Squeeze模块通过全局平均池化层收集全局空间信息。Excitation模块通过使用全
连接层和非线性激活层捕获通道关系并输出注意力向量。然后,通过乘以注意力
向量中的相应元素来缩放输入特征的每个通道。SE模块一方面抑制不重要通道, 另一方面突出重要通道的作用。而且SE模块的计算资源需求很低,可以在每个 残差单元之后添加SE模块。

4.2.2激活函数层


在神经网络结构中,如果使用线性激活函数,那么无论网络结构中有多少层, 做的都是线性运算,最后一层得到的结果是输入层的线性组合。而这种线性组合, 用一层隐藏层就可以表示,那么多层的网络结结构并没有意义。为了让神经网络 能够逼近任意的非线性函数,加入非线性的映射关系,即非线性激活函数。以
Sigmoid、ReLU为例,两个都是常用的非线性激活函数,函数表达式分别为式 4-2和4-3。Sigmoid将输入特征压缩到了(0,1)区间。ReLU则把小于0的值置为 零,大于0的值不变。

由图4-1函数图像可知,Sigmoid输入值接近0时,梯度较大,两侧梯度接 近为0。ReLU的梯度则在输入小于0时全为0,输入大于0时全为1。
另外,从函数表达式还可以看出,Sigmoid的计算量明显较大,常用做二分 类任务中。ReLU因为计算简单,且梯度不易消失,在较多的卷积网络中被使用。
不同的非线性激活函数有着不一样的计算复杂度和梯度变化特性,影响着神经网 络的特征提取能力,所以选择合适的非线性激活函数对于神经网络模型的改进有 着重要作用。

4.3注意力机制模块改进(Improved Attention Mechanism Module)


MobileNet-v3使用bneck模块堆叠组成了轻量化的特征提取网络,bneck结
构中使用深度可分离卷积代替标准卷积,同时还使用网络结构搜索、缩减通道数 量等参数压缩方法压缩特征提取网络参数量和计算量。为减小参数大幅度压缩的
网络模型在特征提取能力上的损失,MobileNet-v3在部分bneck结构加入通道注
意力机制,通过提高显著特征通道的权重提高模型检测精度。
煤矿中监控设备拍摄的图像中,照度不均匀等因素造成图像中目标成像模糊 的现象较为常见。空间注意力机制能够让目标检测网络模型更加关注图像空间维 度上清晰且显著区域特征,忽略照度等因素产生的非显著区域特征。
MobileNet-v3通过在关键层的bneck结构加入通道注意力机制提高目标检测精
度,本文在此基础上加入空间注意力机制,进一步提高网络模型对关键特征的关
注度,提出SA-bneck结构,如图4-2所示。

空间注意力机制是通过抑制图像空间区域上无关紧要区域的权重、增强重要 权重来提高网络模型的性能。网络模型训练过程中调整权重的参数可以表示不同 空间区域的重要程度,本文采用模型训练过程中的批量正则化的权重信息实现来
空间注意力机制。使用上图4-2中3×3逐通道卷积层后BN(Batch Normalization, BN)层的缩放因子(scaling factor)[85]实现像素正则化。BN层中的缩放因子衡 

4.4网络模型整体结构设计(Overall Structure Design of Network Model)


MobileNet-v3中关键层bneck结构中加入SE模块关注重要通道信息来提高 网络模型对图像不同特征的分辨能力。本章4.3节提出的PNSAM通过衡量空间 维度像素重要性实现空间注意力机制,为了提高骨干网络对照度不均图片的空间
注意力,本节使用基于PNSAM空间注意力机制的SA-bneck结构改进 YOLO-v4-MobileNet-v3网络结构,提出基于空间注意力的轻量化目标检测模型 YOLO-v4L-SA,具体网络结构如下图4-4所示。

如图4-4所示,YOLO-v4L-SA整体结构分为三部分。第一部分为特征图提
取骨干网络部分,第二部分为特征融合部分,第三部分负责特征预测网络部分。
骨干网络部分由1个卷积层和8个SA-bneck结构和7个bneck,本章设计的 SA-bneck结构为对MobileNet-v3中bneck结构的改进,保留MobileNet-v3中使 用1个3×3卷积和1个1×1卷积组合的轻量化设计,加入PNSAM模块增强了 基于SE模块的注意力机制。图像经过骨干网络的处理生成3组不同尺度特征图。 特征融合部分把最深层特征图经过SPPNet进行加强特征提取生成新的特征图,
用于本级特征融合和进一步上采样用于上一级特征融合,这样加强特征融合的特 征图能够用于每一层的特征预测网络。而且特征融合结构部分上采样和下采样的
结合进一步优化了特征融合效果。经过特征融合网络最终生成3组有效特征图,
分别输入对应尺度的特征预测网络完成预测。
改进得到的YOLO-v4L-SA目标检测网络模型骨干网络中各层详细信息如下 表4-1所示。本章提出的骨干网络共16层,在7层、13层和16层分别输出52×52×40、26×26×80和13×13×160特征图。3种特征图送入SPPNet和后续 结构经过进一步特征提取和特征融合。由于Mish激活函数增加计算量,而且其 光滑的特性在深层特征提取种更有效,与MobileNet-v3相同,在1-7层使用ReLU 作为激活函数避免Mish激活函数带来的计算量。 

如图4-5和式4-7所示,MobileNet-v3使用的h-swish(hard version of swish, h-swish)激活函数是对MobileNet-v2中ReLU6的进一步改进,目的是进一步降
低非线性激活函数的计算复杂度,方便量化计算。与此同时,损失了一部分梯度。 

YOLO-v4中的Mish激活函数图像如图4-6所示,函数表达式如式4-8所示, 其有下界无上界的性质与h-swish、ReLU6类似。相对MobileNet-v3中使用的 h-swish激活函数和ReLU6激活函数,Mish激活函数更加光滑,泛化能力更好, 有助于提高精度。同时,YOLO-v4的目标检测实验中证明Mish激活函数优于 swish[66]。所以,本文的改进的YOLO-v4L-SA的骨干网络使用YOLO-v4中的 Mish激活函数作非线性变化。

Io U通常用来计算目标检测中的损失函数计算,如式4-10所示,它是数值1 与预测框A和真实框B之间交并比的差值。当预测框与真实框没有重叠时,Io U损失将不会提供梯度变化。 

4.5实验与结果分析(Experiment and Result Analysis)

4.5.1实验设置


本章采用VOC2012公测数据集和3.2节建立的矿山目标检测数据集分别对 比YOLO-v4-Tiny、YOLO-v4-MobileNet-v3和YOLO-v4L-SA三种模型的实验结 果。矿山目标检测数据集标记格式与VOC2012一致,二者均按照6:2:2划分 为训练集、验证集和测试集。VOC2012数据集样本数量和目标类别相对较多,
在目标检测领域应用广泛,用于检验目标检测网络模型的有效性。矿山目标检测
数据集用于检验模型在煤矿场景中的实际检测效果。YOLO-v4-Tiny为YOLO-v4 精简版,YOLO-v4-MobileNet-v3为第三章中设计的综合性能较优、适用于边缘
端目标检测任务的轻量化模型。
模型训练阶段,在矿山企业服务器上使用训练集进行三种目标检测模型的训 练和验证集进行模型训练和参数调整,直至模型收敛。模型测试阶段,将训练阶
段得到的三种模型分别部署在边缘计算设备,使用测试集测试目标检测AP值。 

4.5.2 VOC2012数据集对比实验


模型测试阶段,YOLO-v4-Tiny、YOLO-v4-MobileNet-v3和YOLO-v4L-SA 在VOC2012数据集的检测的准确率、召回率和精度mAP值结果如下表4-3所示。 实验结果中可以看出,相对于YOLO-v4-MobileNet-v3网络模型,YOLO-v4L-SA 全类别检测精度mAP值提升了1.7%。相对于YOLO-v4-Tiny网络模型,全类别 检测精度mAP提升了3.2%。YOLO-v4L-SA网络模型检测的准确率和召回率全 面领先于YOLO-v4-Tiny和YOLO-v4-MobileNet-v3。
VOC2012数据集是目标检测领域被广泛使用的公开测试数据集,每个类别
的数据样本相对充足,包含了与“矿工”相似目标“行人”。对比实验结果说明 了本文提出的目标检测模型在普通目标检测任务中的有效性。

4.5.3矿山目标检测数据集对比试验


(1)检测精度定性分析
检测结果图对比:
矿山目标检测数据集部分图片数据目标检测实验结果如下图4-7所示。a、d 的光线等条件较好,待检测目标特征清晰,三种模型的检测结果几乎无差别。c 中的安全帽目标相对较小且环境中有粉尘,YOLO-v4-Tiny和 YOLO-v4-MobileNet-v3出现了漏检。b中井下灯光产生的光线相对较暗且照度不 均,远景处矿工头盔目标照度较暗,YOLO-v4-Tiny和YOLO-v4-MobileNet-v3 同样出现了漏检。e中巷道的光线较暗且有粉尘,图片中物体照度不均,目标成 像模糊,目标检测模型YOLO-v4-Tiny和YOLO-v4-MobileNet-v3都出现了误检。 虽然极少数检测结果如d中YOLO-v4L-SA模型漏检了一个远景遮挡严重的矿工
目标,但是总的来说三种目标检测模型中改进后模型的综合性能更好,更容易准 确检测照度不均等原因导致特征模糊的目标。 

特征提取阶段特征图对比:
为了验证空间注意力模块在提高检测精度方面的作用,对比YOLO-v4-Tiny、 YOLO-v4-MobileNet-v3和YOLO-v4L-SA三种模型特征提取阶段同一尺度特征 图,YOLO-v4L-SA的特征图的强响应区域在空间上更集中在目标特征区域。
如下图4-8所示,特征图2和特征图3中可以明显看出YOLO-v4L-SA特征
图的强相应区域在空间上更集中在待检测目标出现的区域,与像素正则化空间注
意力模块PNSAM强化显著区域权重的作用一致。这种空间上的集中在深层特征 图中表现的更明显,由于特征图1为浅层特征,且并未使用空间注意力机制,三
种网络模型的特征图基本一致。 

(2)检测精度定量分析
YOLO-v4-Tiny、YOLO-v4-MobileNet-v3和YOLO-v4L-SA三种网络模型在 矿山目标检测数据集的精度如下表4-4所示。由于数据集总量相对较小,三种模 型精度都偏低,尤其是数据量仅有97张图片的煤矸石精度最低。相对于在 VOC2012数据集上的实验结果,YOLO-v4L-SA在矿山目标检测数据集上精度提
升不够明显。

在矿山目标检测数据集上,矿工目标尺寸整体较大,特征受照度影响较小,
YOLO-v4-MobileNet-v3模型已经取得较高的检测精度,YOLO-v4L-SA的检测精 度仅提升了0.4%;安全帽类别目标尺寸偏小,受照度影响较大,YOLO-v4L-SA的检测精度提升明显,相对于YOLO-v4-MobileNet-v3模型精度指标AP值提高 了3.2%;煤矸石训练数据样本偏少,YOLO-v4L-SA相对于 YOLO-v4-MobileNet-v3模型检测精度AP值仅提高了0.2%。
整体来看,YOLO-v4L-SA相对于YOLO-v4-MobileNet-v3和YOLO-v4-Tiny 两种模型精度指标mAP值分别提高了1.2%和2.4%,说明了本章提出模型在矿
山场景目标检测任务中的有效性。 

5基于联邦学习的矿山目标检测数据共享(Mining Object Detection Data Sharing Based on Federated Learning)


5.1引言(Introduction)


特定的数据融合对于智能决策更有意义,但是在任何行业生产智能化的过程 中,企业间各种数据孤岛普遍存在。矿山企业间由于隐私、通信成本、通信延迟 等问题同样难以共享目标检测模型训练的样本数据。样本数据的标注需要花费较 多的人力、财力成本,考虑经济效益等综合因素,现有基于深度学习的矿山目标 检测的研究中,许多目标检测算法针对于特定企业自建数据集。在第四章的实验
中,改进的YOLO-v4L-SA模型在数据样本更加充足的公测数据集上精度的提升
比矿山目标检测数据集上精度的提升更加明显,数据样本偏少的煤矸石的检测精
度AP值过低。基于深度学习的算法在矿山企业实际应用中,极有可能存在类似
训练数据样本不足影响模型精度的问题。
针对以上问题,本文进一步采集了矿山目标检测中重要目标的图像数据,按
照数据源和数据特征把采集到的全部数据分为3个子数据集,代表联邦学习的三 个参与方,形成矿山目标检测联邦数据集。基于YOLO-v4L-SA目标检测模型,
探究联邦学习模型训练方案对矿山目标检测任务精度的提升作用。
本章结构安排如下:第5.2节本章基于第三章建立的数据集进行扩充,建立 了矿山目标检测联邦数据集;第5.3节阐述了利用矿山联邦数据集训练目标检测 模型的流程和模型聚合算法;第5.4节通过实验验证联邦学习扩充矿山目标检测
数据集提升目标检测模型精度的作用,并且对比了联邦学习非中心化模型训练方
式带来的精度损失;第5.5节总结本章主要工作内容。

5.2矿山目标检测联邦数据集(Data Set Establishment)


第三章建立的矿山目标检测数据集限于唐安煤矿采集图像样本,各种目标检 测模型对样本数量较少的煤矸石的检测效果较差。本章通过采集沁裕煤矿和网络 搜索获取了更多的矿业生产场景图像数据,筛选了其中用于矿山目标检测任务的 有效图像。经过同样数据标注方式,扩充了原有数据集图像的数量和类别,包括
唐安煤矿数据在内按照数据来源和数据特征把数据集分为3个子数据集,建立矿
山目标检测联邦数据集。以供联邦学习算法进行联邦学习训练,验证联邦学习在 矿山目标检测任务中的有效性。

5.2.1数据集扩充说明


在获取真实煤矿场景视频数据的基础上,筛选保留其中带有待检测主要目标 并且目标成像较为清晰的图片。所有采集图像数据和搜索得到图像数据中包含的
待检测目标主要包括:矿工、安全帽、煤矸石、运煤车(miner、helmet、gangue、 truck),在图片数量和类别上都得到了扩充。部分图片如图5-1所示,多渠道来 源的图像数据的采集设备可能不同,图像输入YOLO-v4L-SA模型会被统一处理 为416×416分辨率,不影响算法运行。

按照扩充图片数据包含待检测目标类别和数据来源划分子数据集2和子数 据集3。沁裕煤矿采集的图片筛选去掉部分了目标成像过于模糊图片。网络搜索
图片不仅抛弃了目标成像模糊的图片,部分年代久远、仿真图片也被筛选掉,保 留图片场景和待检测目标清晰的图片,子数据集具体情况如下。
子数据集2主要为沁裕煤矿采集图片,网络搜集图片作为补充: (1)沁裕煤矿采集的矿工、安全帽2种待检测目标图片; (2)网络搜索关键词为“井下矿工”的图片,包含矿工和安全帽2种待检
测目标类别;
(3)沁裕煤矿矿采集的煤矸石帽图片。 子数据集3主要为网络搜索露天煤矿数据:
(1)网络搜索关键词为“露天煤矿”包含矿工、安全帽和运煤车3种待检
测目标的图片;
(2)网络搜索关键词为“露天煤矿”的图片,包含矿工和安全帽2种待检
测目标的图片。为了区分数据来源,将唐安煤矿采集图片保持不变,作为子数据集1;沁裕 煤矿下获取的少量图片和网络搜索的井下煤矿图片为一组,组成子数据集2;通 过网络搜索获取露天煤矿视频和图片,经过筛选和整理形成子数据集3。三个子 数据集简要信息如表5-1所示: 

5.2.2数据集构成分析


矿山目标检测联邦数据集共由1706张图片,每个图片至少有一个待检测目 标,在单张图像中可能有多个待检测目标。待检测目标类别共4种,分别为:矿 工、安全帽、煤矸石、运煤车。图5-2直观地表示了三个子数据集中采集的图片
包含每种类别检测目标的数量。该数据集可以用于检验联邦学习目标检测算法在 矿山企业场景应用中面临的解决非独立同分布问题的能力。 

数据集中矿工、安全帽、煤矸石和运煤车4种待检测目标形成的目标框以正 方形、竖立的长方形为主,如图5-3所示。宽高比相对平衡,没有特别极限的宽
高比。 

5.3联邦学习模型训练方案(Federal Learning Model Training Program)


本章建立矿山目标检测联邦数据集的三个子数据集作为三个参与方,它们之 间的数据具有相互补充作用,将这三个子数据集中在一起可以起到扩充训练数据 量的效果。不考虑数据物理上相互隔离的情况下,可以通过云平台实现对三个参 与方数据的集中和模型训练。在当前矿山目标检测的各项研究中,多基于单一矿 业企业建立的目标检测数据集。采集场景中不常见目标和常见目标在自建自用的 数据集中难免存在偏重,即数据不平衡,部分种类数据样本可能过小。对于基于 深度学习的目标检测算法而言,样本量偏少的目标的检测性能不易提升。
以本章建立的矿山目标检测联邦数据集为基础,联邦学习不用集中各企业数 据样本,能够实现对数据特征的提取与利用,本文建立基于联邦学习的矿山目标 检测模型训练方案,通过扩充矿山目标检测数据集提升训练模型的性能。

5.3.1联邦训练流程


在联邦学习流程中有3个关键参数:每轮参与训练的客户端数量C(Client); E(Epoch)为每个客户端在每一轮利用其本地数据集模型训练的次数;用于客 户端更新的小批量大小B(Batch)。所有参数都控制着联邦学习的计算流程,需
要在联邦中心服务器中设置。 

基于联邦学习的矿山目标检测模型训练流程如图5-4所示,在Step1-4的联
邦学习训练过程中,不需要将每个矿区的数据集中在一起,聚合形成的全局模型 可以反应参与方利用本地数据训练的梯度信息。
Step1:在联邦学习中心服务器中初始化相关参数,下发初始化模型参数给
矿山联邦学习参与方。
Step2:各个参与方按照初始化设置开始本地模型训练。
Step3:参与方将本地训练完的梯度信息上传联邦中心服务器,联邦中心服 务器对各个参与方同一迭代轮次(Round)的梯度信息聚合生成新的全局模型。
Step4:到达训练终止条件,联邦中心服务器将模型参数下发至每个参与方。

联邦学习参与方在上传更新参数前,已经在本地进行了多次迭代,减少最终 全局模型收敛所需要的通信轮次。同时,在中心化模型训练中先进的随机梯度下
降(Stochastic Gradient Descent,SGD)在联邦学习中同样适用。

5.3.2联邦学习模型聚合算法


本文采用的FedAvg算法伪代码如下。其中w_{0}为服务器端网络模型的初始权 重;C为参与联邦学习系统的客户端个数;本地模型在接收新的全局模型后,经 过E次迭代再将本地模型权重上传至服务器端;B为小批量大小;T为总迭代轮
次。 

5.4实验结果与分析(Experiment and Result Analysis)


本章的实验中,联邦中心服务器使用阿里云轻量应用服务器2核2G,矿山 企业服务器硬件配置和与前一章中相同,操作系统为Ubuntu 18.04,使用Python 编程语言,YOLO-v4L-SA目标检测算法和FedAvg联邦学习模型聚合算法基于 百度PaddleFL深度学习框架实现。实验中,设置IoU阈值为0.5计算mAP;联邦学习系统的参与客户端个数C 为3;小批量大小B设为1。
第三章、第四章训练目标检测模型的数据集为子数据集1,联邦数据集在此 数据集上扩充了约1倍的图片。为保证测试集数据的一致性,设置了两组测试集。 原始测试集(测试集-origin)与前两章矿山目标检测数据集中测试集一致。扩充 测试集(测试集origin)中测试数据为扩充后的矿山目标检测联邦数据集中按比
例划分得到的测试数据。
如表5-2所示,两组对照实验分别使用了两组训练集和测试集设置。数据扩 充实验(a组)用于对比验证联邦学习算法扩充数据集的在检测精度上的作用, 测试集使用测试集-origin。非中心化模型训练(b组)用于对比验证联邦学习模 型训练效果与中心化模型训练方式之间的差异,测试集使用测试集-expand。 

5.4.1数据扩充实验


实验组中,联邦模型训练有3个参与方,模型聚合算法设置C=3。对照组a
的实验设置与第四章中实验设置相同。 

实验中,设置不同E值进行对比,实验训练过程部分数据如图5-5和图5-6 所示。图中可以看出,在1000轮次迭代时,模型接近收敛。较大的E值,即联 邦学习参与方在本地执行梯度下降(SGD)迭代训练的次数较多,在训练初期有 助于达到更高的mAP。但是两次模型聚合之间过多的本地训练轮次,模型会过 拟合本地数据,将减弱联邦学习模型聚合算法的作用。如图5-5所示,在约400 轮次之前,E值由6增加至10过程中,模型收敛得更快。但是最终收敛后的模 型精度有降低趋势。E值1增加至6过程,最终收敛精度并没有出现降低。综上 分析,通信轮数E设置为6时,模型收敛后的mAP更高,约为82.4%。
对照组a与实验组a的测试集一致,在联邦学习中E值设为6时,详细精度 如表5-3所示。 

如表4-6所示,实验组a(E-6)的精度整体高于对照组a,目标检测精度指 标mAP值比对照组a高2.5%。由于煤矸石的原始训练样本比较少,通过联邦学 习扩充了数据集后,在精度上提升最多,为11.8%。另外,比较特殊的是安全帽
的精度发生了明显退化,可能由于不同子数据集中安全帽的特征差别显著且目标 相对较小,对于安全帽来说测试集与不同子数据集的训练集差异性较大,性能相
对于对照组a精度有所下降。
该实验结果表明本文建立的基于联邦学习的矿山目标检测可以有效提高数
据不充分情况下的目标检测效果。在实验组和对照组a的对比中可以看出, FedAvg算法对参与联邦学习的客户端阶段性训练的参数进行加权平均,即可在
综合性能上得到明显提升。可以推测,通过更为合理的联邦学习模型聚合算法也 行可以更显著提升联邦学习效果。

5.4.2非中心化模型训练实验


在联邦学习的中,设置C=1且E=1,即对照组b,中心化的模型训练方式。
理论上最好的情况,联邦学习应该具有与将数据集中起来的中心化模型训练方式
相同的性能。但是在实际场景中,对于非独立同分布数据集,FedAvg算法很难
达到与中心化模型训练相同的效果。
本文建立的联邦学习方案的最优效果比中心化目标检测模型训练方案,每种
检测目标的AP值都有不同程度的下降。由于只有1个子数据集包含运煤车,联 邦学习效果最差,mAP分别计算了包含全类别的mAP(4)和包含前三种类别的 mAP(3),如表5-4所示

在表5-4中运煤车的精度下降幅度最大,煤矸石次之。主要因为包含运煤车 的子数据集只有子数据集3,有两个子数据集包含煤矸石数据。每个子数据集中
都包含的矿工和安全帽样本精度损失最少。
联邦学习的模型训练方式相对于中心化得到的模型的总体精度mAP(3)下降 了约3.9%,mAP(4)下降了约5.9%。由于运煤车数据样本小、且分布极不均衡, 精度偏低,导致mAP(4)精度损失明显,这是在中心化模型训练中同样存在的情
况。
联邦学习与中心化模型训练迭代训练mAP(3)变化曲线如图5-7所示,训练 过程损失值变化如下图5-8所示。 

总体实验结果表明,联邦学习非中心化的模型训练方式相对于传统中心化的 模型训练得到的矿山目标检测模型在精度上有所下降,对于数据样本分布更平衡 的数据精度下降更少。 

6矿山生产场景实时目标检测系统设计与实现(Design and Implementation of Real-time Object Detection System in Mine Production Scene)

6.1引言(Introduction)


在中心化的目标检测处理流程下,响应时间过长严重影响了深度学习技术在 矿山目标检测任务中的实际应用效果。基于计算机视觉的目标检测技术在矿山企 业中被不断应用,尤其是基于深度学习的目标检测技术在检测性能上不断提升。 在矿山生产场景应用基于深度学习的目标检测技术,实现实时的目标检测功能, 有助于实现更加安全的矿山企业生产过程管理。基于第三章和第四章研究的矿山 目标检测架构和的目标检测模型,本章设计开发了矿山生产场景实时目标检测系 统。
本章结构安排如下:第6.2节对矿山生产场景实时目标检测系统的设计开发 进行需求分析;第6.3节根据需求分析对开发系统进行整体上的架构设计;第6.4 节介绍开发实现系统的硬件设备;第6.5节详细介绍了系统的各个功能模块;第 6.6节总结本章主要工作内容。

6.2系统需求分析(System Requirements Analysis)


实现矿业生产过程中具有高可用性的实时目标检测不仅有利于矿山安全监 测,还进一步推动智能开采过程的发展与进步,为矿业生产少人化、无人化发展 做出贡献。
实现矿山企业安全管理需要对生产场景进行全面实时监控,并且实时检测出 场景中是否存在可能导致安全隐患的重要目标。在现有的矿山企业的视频监控体 系中部署基于深度学习的目标检测算法,有利于全面掌握重要目标的位置信息。 从而有效保障安全生产环境,同时提高工作效率,节约经济成本。矿山生产场景 实时目标检测系统的主要功能需求如下:
1.对边缘计算设备、监控设备等进行管理; 2.获取生产作业场景实时目标检测结果;
3.根据实时目标检测结果,形成目标检测记录,供即时查看或作为后续开展
分析的数据基础;
4.检测记录存储和查询,按照时间等信息进行查找;
5.可供采集带有重要目标的图像数据,用于更新目标监测模型的训练样本; 6.以在保证安全性的前提下分配多账号,兼容PC和移动设备登录系统。 

6.3系统架构(System Architecture)


图6-1为本文设计开发的矿山生产场景实时监测系统的分层架构图。分为数
据采集层、数据处理层、模型层、表现层。数据采集层主要为矿山中的监控设备, 数据处理层包含边缘计算设备、通信设备和目标检测算法,模型层包含企业服务
器和矿山目标检测数据集,表现层为PC浏览器。整体系统通过Docker容器来
组织和管理。 

系统架构中各层详细介绍如下。
数据采集层:该层为矿山企业中部署的监控设备,监控设备分布在重要监测 区域。采集的图像数据通过通信设备上传至数据处理层、模型层,为目标检测算 法等提供生产作业场景数据。
数据处理层:该层包括部署在靠近监控设备端的边缘计算设设备、传输监控 设备采集的视频数据的通信设备和目标检测算法。目标检测算法部署在边缘设备 中,通过通信设备接收通信设备采集的实时视频,对视频图像进行实时的目标检 测。
模型层:该层包括用于本地模型训练的服务器和数据集。企业服务器负责根 据采集的矿山目标检测数据在本地进行模型训练,训练一个可靠的矿山目标检测 模型,将模型部署至数据处理层的边缘计算设备。数据应用层:该层包括用于信息传输和网络请求的web服务器、传输视频 流的流媒体服务器。为了实现PC、移动终端等多设备兼容,采用Vue框架进行 响应式前端界面开发,后端采用Flask轻量级框架,结合mysql数据库搭建web 网站。采用Nginx+nginx-rtmp-module+OBS搭建流媒体服务器推送视频流。
表现层:该层基于PC、手机等设备浏览器提供人机交互界面。

6.4硬件平台搭建(Hardware Platform Construction)


矿山生产场景实时监测系统中边缘计算设备选用NVIDIA Jeston TX2开发 板,它可以满足部署前文提出的YOLO-v4L-SA目标检测网络模型的存储要求, 且能够实时检测至少1路高清视频。TX2可提供1.3 TOPS算力,平均耗能仅为 10W左右。
在第三章表3-1中已经介绍了该边缘计算设备的部分属性,其实物图如图 6-2所示。搭配NIDIA Pascal架构GPU,双核Denver64位CPU加四核A57 Complex。开发板主要包括1个外置19V AC电源适配器,1个HDMI(type-A) 接口,1个Micro USB接口和1个USB 3.0接口,1个千兆以太网口,1个摄像 头,核心板处贴有1个散热风扇,4个PCI-E接口。 

6.5功能设计与实现(Function Design and Implementation)


如图6-3所示矿山生产场景实时目标检测系统功能模块图,主要包括用户管
理模块、实时监测和检测记录模块。 

系统中各功能模块详细功能介绍如下。
一、用户管理模块:该模块负责管理用户账号和使用系统功能的权限,包含 注册登录和权限管理两项主要功能。
(1)注册登录功能,注册登录功能用于普通用户注册账号,登录系统查看
布控场景实时监测视频。用户注册时需输入正确授权码和姓名、工号等信息,如
图6-4所示。 

(2)权限管理功能,权限分为普通用户和管理员。普通用户仅具有实时监
测模块的实时查看功能,管理员可以使用系统所有模块和功能。二、实时监测模块:该模块负责管理设备和查看目标检测实时结果,包含设 备管理和实时查看两项主要功能。
(1)实时监测功能,实时查看功能用于显示布控场景的实时视频图像及目
标检测结果。检测场景查看功能负责实时显示经过目标检测算法标出重要目标框 的视频流,普通用户和管理员均可以查看。监测目标经过目标监测算法通过方框
标出,如图6-5所示。 

(2)设备管理功能,设备管理功能用于管理员管理边缘计算设备和监控设 备。管理员可以通过该模块传输目标检测模型至边缘计算设备,如图6-6所示。
开启记录模式,边缘计算设备将再实时目标监测的同时,记录监测的关键结 果。训练好的目标监测模型也可以通过“监测模型更新”通过网络传输至边缘计 算设备。 

三、检测记录模块:该模块负责查看和管理目标检测结果,包含记录浏览和 记录导出两项主要功能。
(1)记录浏览功能,记录浏览功能用于查看边缘计算设备检测到的目标相
关信息。记录模式下,当图像中出现检测目标时,边缘计算设备会保存带有检测记录的关键帧的相关数据传输至系统web服务器,为减小传输图片数据量,检 测出目标的连续视频帧,间隔0.25秒记录数据。
如图6-7和图6-8所示,用户可查看具体记录的图像。管理员和普通用户均
可通过此模块查看系统历史检测记录,可以按照时间范围和目标种类查找。 

(2)记录导出功能,记录导出功能实现导出检测记录,用于统计重要目标
信息或模型训练。
四、系统通过浏览器实现web端访问,方便手机等移动设备使用,手机访 问如图6-9所示。 

知识拓展

基于YOLOV8的边缘计算和联邦学习的矿山目标检测

1. 安装依赖


pip install ultralytics 
pip install torch torchvision matplotlib albumentations opencv-python 

2. 导入必要的库

 

import os 
import cv2
import numpy as np 
import torch 
import torch.nn  as nn 
from torch.utils.data  import Dataset, DataLoader 
from ultralytics import YOLO 
```
 
---
 
## 二、数据准备 
 
### 1. 数据集格式 
假设我们有一个小样本数据集,格式如下:
```
data/
├── train/
│   ├── images/
│   │   ├── img001.jpg  
│   │   └── ...
│   └── labels/
│       ├── img001.txt  
│       └── ...
└── val/
    ├── images/
    │   ├── img001.jpg  
    │   └── ...
    └── labels/
        ├── img001.txt  
        └── ...
```
 
### 2. 数据集配置文件(`data.yaml` )
```yaml
train: ./data/train/images/
val: ./data/val/images/
names:
  0: 'target_class'
```
 
---
 
## 三、模型定义与训练 
 
### 1. 加载预训练模型 
``````python 
# 加载YOLOv8模型 
model = YOLO('yolov8n.pt') 
```
 
### 2. 定义数据加载器
```python
class CustomDataset(Dataset):
    def __init__(self, data_dir, transform=None):
        self.data_dir  = data_dir 
        self.images  = []
        self.labels  = []
        self.transform  = transform 
        
        # 加载数据 
        for img_file in os.listdir(os.path.join(data_dir,  'images')):
            img_path = os.path.join(data_dir,  'images', img_file)
            label_path = os.path.join(data_dir,  'labels', img_file.replace('.jpg',  '.txt'))
            self.images.append(img_path) 
            self.labels.append(label_path) 
    
    def __len__(self):
        return len(self.images) 
    
    def __getitem__(self, idx):
        img_path = self.images[idx] 
        label_path = self.labels[idx] 
        
        # 读取图像 
        image = cv2.imread(img_path) 
        image = cv2.cvtColor(image,  cv2.COLOR_BGR2RGB)
        
        # 读取标签 
        with open(label_path, 'r') as f:
            labels = f.read().splitlines() 
        
        # 解析标签 
        bboxes = []
        for label in labels:
            parts = label.split() 
            class_id = int(parts[0]()[1]()[2]()[3]()[4]()
            bboxes = transformed['bboxes']
        
        # 转换为Tensor 
        image = transforms.ToTensor()(image)
        targets = {
            'boxes': torch.FloatTensor(bboxes),
            'labels': torch.LongTensor([bbox[[4]()  for bbox in bboxes])
        }
        
        return image, targets 
```
 
### 3. 训练配置 
``````python 
# 数据增强 
transform = A.Compose([
    A.Resize(width=640, height=640),
    A.HorizontalFlip(p=0.5),
    A.VerticalFlip(p=0.5),
    A.RandomBrightnessContrast(p=0.2),
    A.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
])
 
# 创建数据加载器
train_dataset = CustomDataset(data_dir='./data/train', transform=transform)
val_dataset = CustomDataset(data_dir='./data/val')
 
train_loader = DataLoader(
    train_dataset,
    batch_size=16,
    shuffle=True,
    num_workers=4,
    collate_fn=lambda batch: tuple(zip(*batch))
)
 
val_loader = DataLoader(
    val_dataset,
    batch_size=8,
    shuffle=False,
    num_workers=4,
    collate_fn=lambda batch: tuple(zip(*batch))
)
```
 
### 4. 模型训练 
```python
# 定义优化器和损失函数 
optimizer = torch.optim.Adam(model.parameters(),  lr=0.001)
criterion = model.loss  
 
# 训练循环 
for epoch in range(num_epochs):
    model.train() 
    total_loss = 0 
    
    for images, targets in train_loader:
        images = list(images)
        targets = [{k: v.to(device)  for k, v in t.items()}  for t in targets]
        
        optimizer.zero_grad() 
        outputs = model(images)
        loss = criterion(outputs, targets)
        loss.backward() 
        optimizer.step() 
        
        total_loss += loss.item() 
    
    avg_loss = total_loss / len(train_loader)
    print(f'Epoch [{epoch+1}/{num_epochs}], Loss: {avg_loss:.4f}')
    
    # 验证
    model.eval() 
    val_loss = 0 
    with torch.no_grad(): 
        for images, targets in val_loader:
            images = list(images)
            targets = [{k: v.to(device)  for k, v in t.items()}  for t in targets]
            
            outputs = model(images)
            loss = criterion(outputs, targets)
            val_loss += loss.item() 
    
    avg_val_loss = val_loss / len(val_loader)
    print(f'Validation Loss: {avg_val_loss:.4f}')
```
 
---
 
## 四、优化方向 
 
### 1. 数据增强 
- **混合数据增强**:结合多种数据增强技术(如随机裁剪、旋转、颜色抖动)以提高模型的泛化能力。
- **数据平衡**:对于小样本数据,可以使用过采样或欠采样技术平衡各类别样本。
 
### 2. 模型架构优化 
- **轻量化设计**:采用轻量化的模型架构(如MobileNet、EfficientNet)以适应边缘设备的资源限制。
- **多尺度预测**:引入多尺度特征金字塔网络(FPN)以提高小目标的检测精度。
 
### 3. 训练策略优化 
- **学习率调度**:使用学习率衰减策略(如CosineAnnealingLR)以加速收敛。
- **早停机制**:在验证集上设置早停机制以防止过拟合。
 
### 4. 联邦学习优化 
- **差分隐私**:在联邦学习过程中加入差分隐私机制以进一步保护数据隐私。
- **异步更新**:允许客户端在不同时间参与训练,提高系统的灵活性和鲁棒性。
 
### 5. 边缘设备部署 
- **模型压缩**:使用模型剪枝、量化等技术减小模型体积,提高推理速度。
- **实时推理优化**:针对边缘设备的硬件特点(如CPU、GPU)进行推理优化,确保实时性。
 

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐