基于无人机视觉的河道漂浮垃圾分类检测技术研究
2021-10-20李德鑫闫志刚孙久运
李德鑫 闫志刚 孙久运
(中国矿业大学环境与测绘学院,江苏徐州221116)
传统河道漂浮垃圾分布情况调查主要通过人工巡河开展,不仅耗时耗力,且无法做到实时监测。随着信息技术和摄影技术的发展,利用无人机、无人船航拍河道的方式逐渐代替了人工巡检,开展了基于航拍影像和目标检测技术的河道漂浮垃圾识别的相关研究。
目前,较为有效的方法主要包括基于传统机器学习的目标检测技术和基于深度学习的目标检测技术。传统目标检测技术的实现流程为:图像分割,按目标的颜色、面积、纹理等在分割区域进行特征提取,利用分类器进行分类识别。如ALI等[1]利用采集影像时间与河道影像亮度之间的概率分布图设置阈值,来分割水面漂浮的木屑。左建军等[2]首先通过背景差法分割漂浮物区域,利用BP算法训练样本特征,然后将特征化数据输入分类器进行分类。基于传统机器学习的图像目标检测虽然取得了一定进展,但模型鲁棒性较差,且中间过程需要人为干预,端到端的深度学习目标检测算法应运而生。基于深度学习的目标检测算法可大致分为双阶段目标检测算法和单阶段目标检测算法两类。双阶段目标检测算法最具代表性的有 Fast R-CNN[3]、Faster R-CNN[4]、RFCN[5]和 Mask R-CNN[6],该系列算法检测精度虽高,但检测速度过慢,达不到实时性的效果,因此不适用于河道巡检这种大型工程。单阶段目标检测算法最具代表性的是YOLO系列[7-9]和SSD系列[10-11],因其省去了区域提取这一步骤,极大提高了检测速度,学者们开始将单阶段目标检测算法应用于河道漂浮物检测领域。雷李义等[12]基于SSD深度学习模型,在自制数据集上对比分析了各种特征提取网络,最终选择了性能较好的Resnet-50,实现了水面漂浮物的分类检测。魏莉莉[13]基于TensorFlow框架采用VGG网络提取特征,对河道漂浮物进行了分类识别。唐小敏等[14]基于SSD与Faster R-CNN深度学习模型,通过对比各特征提取网络,选择了基于ResNet-101特征提取网络的SSD深度学习模型,实现了河道漂浮物的分类检测。单阶段目标检测算法速度虽快,但在小目标检测精度以及多类别检测精度方面还有待提高。
本研究将YOLOv5s深度学习模型应用到河道漂浮垃圾分类检测领域,为河道治理提供决策依据。顾及到漂浮垃圾在无人机影像中占比较小以及类别不均衡等问题,对YOLOv5s算法的检测机理进行了深入剖析,通过对模型各模块进行针对性改进,降低了各类别目标检测精度之间的差异,提高了对小目标的检测精度。
1 检测算法原理
1.1 YOLO检测算法
YOLO(You Only Look Once)算法的提出,开创了目标检测算法的新纪元。其中,YOLOv1算法省去了穷举候选框这一步骤,检测速度相比双阶段目标检测算法有了很大的提升,能够达到实时性的效果,但是该算法对于小目标的检测精度并不理想。针对YOLOv1算法的不足,REDMON等[9]在兼顾实时性检测效果的同时,提升了多尺度目标检测精度。在一些公开数据集的测试上,YOLO系列的v4版本在检测精度和检测速度方面已经略优于其它单阶段目标检测算法[15]。YOLOv5在v4版本的基础上采用Pytorch框架,简化了代码,提升了在GPU中的运行速度。因此本研究基于YOLOv5s算法开展河道漂浮垃圾检测,该算法的网络结构如图1所示。
YOLOv5s将经过自适应缩放至608×608大小的图片划分为S×S个网格,然后通过以上模块中一系列的卷积、归一化、激活等操作,将特征提取到19×19、38×38、76×76 3个不同尺寸的特征图上来预测3种不同大小的目标。特征图共有3×( )1+4+B个通道,负责预测3种不同形状的目标。其中3代表锚框(Anchor box)个数,1代表锚框置信度(Confidence)(式1),4为先验锚框坐标相对于预测框坐标的偏移量(tx,ty,th,tw),B为目标类别总数。锚框置信度C公式为
式中,P(O)为目标中心点落在该网格中的概率,落在该网格中取1,否则,取0;I为真实框(GroundTruth Box)与预测框(Predict Box)之间的交并比(Intersec-tion Over Union,IOU),即两个框的交集面积与并集面积之比。
若目标中心点落在某个网格内,该网格则需要负责预测目标属于第i类的概率P(Ci|O)。将P(Ci|O)与置信度相乘便可得到该锚框的类别置信度,本研究用S表示。该乘积既预测了锚框属于某一类的类别,也包含了锚框的准确度。锚框的类别置信度计算公式为
对于锚框,若不加以抑制该模型最后将会在一幅图上产生( )76×76+38×38+19×19 ×3=22 743个预测框。通过计算每个锚框与该类别置信度最高锚框的交并比,若大于预先设定的阈值则舍弃该锚框,然后在剩下的框中选取一个最大的框,再删除其周围IOU大于阈值的框,如此反复迭代得到该目标的最终锚框,该过程称为非极大值抑制(Non-Maximum Suppression,NMS)。
最后通过梯度下降反复迭代计算锚框与真实框(Ground Truth)的LOSS函数,得到在LOSS取得最小值情况下每个锚框的类别得分和坐标偏移量,在此基础上用锚框的坐标偏移量去微调先验框得到预测框(Bounding Box),使得预测框不断接近真实框。损失计算包括边界框损失、置信度损失以及类别损失。置信度损失和类别损失采用的是二进制交叉熵损失函数(BCELoss)(式(3)),边界框损失采用的是GIoU损失函数(式(4))。
式中,LB为二进制交叉熵损失函数;P'为样本的预测值;y为样本真实类别,y=1表示是该类目标,y=0则表示不是该类目标。
式中,LG为GIoU损失函数;D为包围真实框与预测框的最小矩形面积;B为预测框;Bg为真实框。
1.2 YOLOv5s算法网络结构改进
相较于单阶段目标检测算法,YOLOv5s算法对在无人机影像中占比较小且存在类别不均衡的河道漂浮垃圾的检测精度还有待提高。针对YOLOv5s算法在检测小目标和类别不均衡目标方面的不足,本研究对数据增强预处理模块进行了优化,对SPP模块[16]以及损失函数模块做了改进,改进后的算法称为YOLOv5s-enhanced。
YOLOv5s算法中数据增强分为Mosaic增强[17]和图像增强[18-19]。Mosaic增强通过随机缩放、裁剪、排列等方式,最多将4幅影像拼接成1幅影像,来丰富图像的背景,进而提高算法的检测性能。图像增强主要包括图像的仿射、透视等,使算法能够感受同一目标的不同形态,来减弱算法的过拟合[20]。本研究将Mosaic增强模块改为最多可将9幅影像随机拼接成1幅影像,来提高模型对小目标的检测性能;另外,为了消除河道上阳光反射对河流漂浮物的影响,在图像增强模块对图像进行了直方图均衡化处理。图2显示了YOLOv5s算法与YOLOv5s-enhanced算法在训练过程中的数据增强效果(其中,“0”表示严重污染物,“1”表示中度污染物,“2”表示轻度污染物)。从图2中可以看出,由9幅随机影像拼接的图片能够进一步丰富图像背景,并相应地提高了单批次训练数据的数量(batch_size);另外,经直方图均衡化处理后的图像减弱了光照的影响,亮度变化单一,有利于提高模型的鲁棒性。
在SPP模块中,增加一个3×3大小的最大值池化滤波器,来提升模型的感受野,进而提高小目标的检测精度。为保证SPP模块输出通道数与CSP2_1模块输入通道数保持一致,现将SPP模块中第2卷积核的权重矩阵增加1/4个通道数的参数。改进前后的SPP模块结构对比如图3所示。
在YOLOv5s损失函数中,置信度和分类损失函数采用的是BCELoss,它给予每一类目标相同的权重值,不利于正负样本不均衡的河流漂浮物检测。本研究采用Focal损失函数来计算置信度和类别的损失,Focal损失函数式为
式中,Focal_Loss代表Focal损失函数;α和γ用来解决正负样本不均衡问题的两个协调参数。
2 实验设备与数据集
2.1 试验数据集制作
试验所用数据均来源于精灵四RTK大疆无人机对徐州奎河、废黄河的倾斜摄影。通过在不同时间段下,让无人机以不同姿态对河道进行摄影作业,来增加影像的时空多样性,从而保证算法训练结果的周密性。其中,无人机摄影作业时间为7∶00~19∶00,飞行高度为15~70 m,相机与水平方向夹角(相机姿态)有45°、60°和90°。图4展示了多样性数据集中的部分原始影像与局部放大图,各影像获取参数如表1所示。
对徐州市多条河道进行实地调查发现,河道中漂浮垃圾以农药袋和生活垃圾为主。依据《徐州市城市河道保洁质量标准》并结合徐州市水务局相关水质专家意见,本研究按照漂浮垃圾对水质的污染程度将其分为3类:严重污染物(农药袋)、中度污染物(生活垃圾袋)、轻度污染物(玻璃瓶、硬纸箱等其它垃圾)。
本研究共采集了河道无人机影像3 011幅,去除图像中没有河流区域以及质量较差的影像。最终利用标注工具Labelme对673幅影像进行了标注,共标注边界框2 952个,并将标注信息保存为Json格式文件。将标注后的影像按照8∶2划分训练集和测试集。表2展示了训练集和测试集中3类污染物的个数。图5展示了多样性数据集中的部分标注影像(影像获取参数见表1),其中严重污染物,中度污染物(生活垃圾袋)以及轻度污染物(玻璃瓶、硬纸箱等其它垃圾)分别由不同线框标注。
2.2 实验设备及参数设置
本研究在搭建的Pytorch深度学习框架上对自制的河道漂浮垃圾数据集进行训练和测试。用到的硬件设备主要有Intel(R)Core(TM)i7-8750H CPU@2.20 GHz型号的电脑CPU,NVIDIA GeForce GTX 1060型号的电脑GPU,三星DDR4 2667MHz 16GB的内存条,大疆Phantom4 RTK无人机。软件环境为Windows10操作系统,Python3.6编程语言,Pytorch1.7.1深度学习框架,Labelme图片标注工具。
训练阶段的超参数设置:梯度下降采用批量梯度下降法,一个批次(batch)为4,初始学习率设置为0.001,衰减系数设置为0.000 5,动量设置为0.937,Focal_Loss函数中的α设置为0.25,γ设置为2。
3 试验结果与分析
3.1 模型精度分析
在多分类任务中,一般采用类别均衡准确率(mean average precision,mAP)来反映模型检测精度(式(6))。考虑到数据集中各类别样本数量差异较大,传统的类别均衡准确率只能反映模型的总体检测精度,不能较好地反映各类样本检测精度之间的差别,本研究引入各类别均衡准确率的方差(smAP)来衡量模型性能,如式(7)所示。
式中,mAP为多个样本查准率和查全率曲线下面积的均值;mapi为数据集中各种类目标的类别均衡准确率;P为查准率;R为查全率;map为数据集总的类别均衡准确率。
本研究在测试集上对YOLOv5s和YOLOv5s-enhanced算法的性能进行了对比分析,结果如表3所示。
由表3可知,在本研究自制的河道漂浮垃圾数据集上,YOLOv5s-enhanced算法的mAP比YOLOv5s算法提高了3.47%;另外,YOLOv5s-enhanced算法的smAP为4.46%,YOLOv5s算法的smAP为10.4%,可见,YOLOv5s-enhanced算法对各类垃圾检测精度的差异有所下降,这是由于Focal_Loss函数中α、γ参数所起到的调和作用所致。
3.2 模型识别结果对比
分别使用YOLOv5s-enhanced算法和YOLOv5s算法对训练数据集开展训练,对两个训练好的深度网络模型,使用测试数据集进行了测试。图6展示了20 m无人机视角下河道漂浮垃圾的检测结果,低空飞行下漂浮垃圾占据了影像的较大部分,两种算法都能较好地识别垃圾。
图7展示了60 m无人机视角下河道漂浮垃圾的检测结果,高空飞行下漂浮垃圾在影像中占比较小,YOLOv5s-enhanced算法相较于YOLOv5s算法出现漏检的概率要低。
两种算法对无人机不同飞行高度、不同飞行角度、不同时间段下所采集河道影像的检测效果如图8所示。由图8可知,YOLOv5s-enhanced算法对高空无人机视角下的小目标检测精度总体上优于YOLOv5s算法。
4 结 语
基于YOLOv5s深度学习网络对河道无人机影像进行了漂浮垃圾的分类检测。首先通过RTK-无人机采集徐州市内废黄河、奎河等河流的影像,依据需求利用Labelme标注工具对影像中的河道漂浮垃圾按污染程度进行分类标注,建立了一个小型的河道漂浮垃圾数据集;针对单阶段目标检测算法在检测小目标、类别不均衡目标方面的不足,对YOLOv5s模型的数据增强、SPP以及损失函数等模块进行了针对性改进,其中,在SPP模块中增加了一个3×3的卷积核来进一步提升模型的感受野,从而提高小目标的检测精度;在损失函数模块中,取代二进制交叉熵函数,使用Focal_Loss函数计算置信度和类别损失,来解决正负样本不均衡问题;最后在测试集上对两种算法进行了性能测试,结果发现YOLOv5-enhanced模型提高了小目标的检测精度,另外模型的mAP比原始模型提高了3.47%。目前,该算法已经应用于RTK-无人机实时巡检系统,该系统通过读取RTK-无人机的实时位置,来分析河道漂浮物污染程度的位置分布。