https://github.com/cv516Buaa/tph-yolov5
问询、帮助
https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?tab=BB08J2
“防火未燃”——渡船汽车火源和烟雾检测研究
2.1设计思路
- 获取数据集。由于在船舱内部的火源图像数据较少,通过百度AI Studio、Kaggle公开的火源数据集、爬取百度火源图片等作为数据集来源,通过数据清洗,最终获得训练集8268张,测试集1167张,验证集1166张共计10601张。
2.标注数据集。采用标注工具LabelImg对未标注数据集进行标注,对已标注但格式不同的数据集进行格式转换,共标记两个类别,分别是yanwu(烟雾)和fire(火)。
3.搭建模型。模型采用TPH-YOLOv5[10]算法为基础,该模型识别密集物体,小物体效果显著。
4.修改模型。算法引入轻量化模块Ghost模块[11],训练后的模型计算量参数量有效降低,加速模型推理。
5.训练模型。实验环境使用Ubuntu20.04操作系统,使用RTX5000显卡进行运算,显存大小为64GB,CPU配置为Intel@Xeon® Silver 4210R CPU @ 2.40GHz ×40,CUDA版本为10.1,Pytorch版本为1.10.1,Python语言环境为3.6.13。
6.目标检测。使用训练好的模型进行目标检测。
图3设计思路
2.2研究方法
2.2.1计算机视觉原理(Computational Vision)
计算机视觉就是给出一张二维图像,计算机视觉系统识别出图像中的对象及其特征,如形状、纹理、颜色、大小、空间排列等,从而尽可能完整地描述该图像。
图4计算机视觉原理
2.2.2卷积原理(Conv)
Conv 是从视觉皮层的生物学上获得启发的。视觉皮层有小部分细胞对特定部分的视觉区域敏感。Hubel 和 Wiesel 发现视觉皮层的神经元细胞(卷积核)会寻找特定特征,这在机器中同样适用。
图5卷积原理
3.创新特色
通过引入C3Ghost模块替代原有的C3模块,用线性变换替代了部分卷积,降低了模型的计算量和参数量,加快了推理速度,下面从TPH-YOLOV5、Ghost模块、GhostBottleneck、改进进行详细介绍。
3.1采用TPH-YOLOV5应用到火源检测
TPH-YOLOV5为解决航拍高速和低空飞行导致的密集小物体的检测较差问题,增加了一个预测head以适应检测小物体;用Transformer Prediction Head(TPH)[12]代替了原有预测头,用自注意力机制进行预测;融合了CBAM[13]找到密集物体的注意区域采用数据增强,多尺度测试,多模型融合,用额外的分类方式提高了模型精度。
图5 TPH-YOLOV5网络结构图
3.2引入轻量化模型
深度卷积神经网络通常引用由大量卷积组成的卷积神经网络,导致大量的计算成本。Google的MobileNet[14 ]和ShuffleNet [15 ]引入了深度可分离卷积操作,以使用较小的卷积核来构建有效的CNN,其余卷积层仍将占用大量内存和FLOPs,这些卷积层在提取特征图时通常会包含丰富甚至冗余的特征图,以保证对输入数据有全面的理解。轻量化卷积Ghost模块的引入用“廉价”卷积代替普通卷积,改进后的TPH-YOLOV5模型,参数量和计算量都有所降低,推理速度加快。
图6普通卷积
Ghost模块是Han等人在保证检测精度的基础上,减少传统卷积神经网络的计算量与参数量而提出的一种轻量化神经网络,模型主要思想是利用“廉价”的方式,通过线性变换操作代替部分产生冗余特征图的传统卷积操作。
图7 Ghost 模块
利用Ghost模块生成与普通卷积层相同数量的特征图,可以轻松地将Ghost模块替换卷积层,集成到现有设计好的神经网络结构中,减少计算成本。Ghost模块具有一个恒等映射(Identity)和(s-1)个线性运算,并且每个线性运算的平均内核大小为n/s·h’·w’·d·d。理想情况下,(s-1)个线性运算可以具有不同的形状和参数,但是特别是考虑到CPU或GPU的实用性,在线推理会受到阻碍。因此,在一个Ghost模块中采用相同大小的线性运算以高效实现Ghost模块。使用Ghost模块升级普通卷积的理论加速比和模型压缩比为
r_s=(n·h’·w’·c·k·k)/(n/s·h’·w’·c·k·k+(s-1)·n/s·h’·w’·d·d)
=(c·k·k)/(1/s·c·k·k+(s-1)/s·d·d)≈(s·c)/(s+c-1)≈s (1)
r_c=(n·c·k·k)/(n/s·c·k·k+(s-1)·n/s·d·d)≈(s·c)/(s+c-1)≈s (2)
r_s是理论加速比;r_c是模型压缩比,n是输出特征图的通道数:h^’ 、w^'分别为输出特征图的高、宽;c是输入的通道数;k·k卷积核大小;d·d是每一个线性操作的平均卷积核大小;s是所分的组数,s-1为Ghost的个数。
Ghost Bottleneck:利用Ghost模块的优势,专门为小型CNN设计的Ghost bottleneck(G-bneck)。如图8所示,Ghost bottleneck类似于ResNet中的基本残差块(Basic Residual Block),其中集成了多个卷积层和shortcut。Ghost bottleneck主要由两个堆叠的Ghost模块组成。
图8 Ghost bottleneck
由Ghost bottleneck组成的C3Ghost模块替换C3模块,利用“廉价”的方式获得和普通卷积相同的特征,降低了模型的参数量和计算量,加快了推理速度。
3.3火源和烟雾目标检测
改进后的模型在训练时只用了400个epoch,就可以准确的对火源和烟雾目标进行检测。模型的具体参数放到了补充材料里。因当前关于渡船的小火源目标检测较少,所以后期优化将重点放在火源小目标的获取和检测上,不断提高模型对小目标的检测精度。
图9火源和烟雾目标检测效果