APP下载

基于深度卷积神经网络的水面漂浮物分类识别*

2021-10-15鲍佳松黄细霞卢占标

传感器与微系统 2021年10期
关键词:漂浮物水面卷积

鲍佳松,黄细霞,姬 克,卢占标

(航运技术与控制工程交通行业重点实验室(上海海事大学),上海 201306)

0 引 言

水域环境的治理一直以来深受重视,就我国南部水域,由于水面漂浮物诸如水葫芦、塑料制品以及金属制品的存在,生态破坏、水质污染以及航道堵塞等问题显得尤为严重[1]。随着全国垃圾分类政策的提出,精准识别水面漂浮物并进行分类回收变得尤为重要。

现阶段用来检测识别水面漂浮物的方法主要包括人工识别、遥感检测[2]和利用机器视觉识别。邓磊等人[3]采用BP神经网络构建分类器,将输入图像的边缘,灰度与纹理作为特征,设计了漂浮塑料瓶和树枝的判别模型。但是由于人工提取如梯度、颜色和纹理的浅层特征,容易受水面环境影响,不能完全表征目标的特定信息。而随着深度学习的兴起,卷积神经网络(convolutional neural network,CNN)[4]可将原始图像数据作为输入,避免了传统识别算法中的数据预处理过程,尤其是解决了传统神经网络多层次的局部最优以及梯度弥散等缺点[5]。李宁等人[6]使用的基于AlexNet网络模型,经过小样本的微调(fine-tuning)后实现对塑料袋与塑料瓶的识别;雷李义等人[7]提出了一个包含水草和落叶的小型漂浮物数据集,在预训练好的Faster-RCNN和SSD等模型上进行微调并取得一定的识别效果。上述文献表明CNN可用于识别水面漂浮物,但这些模型的网络结构较为复杂。

针对现有模型的网络结构复杂,模型训练困难等问题,基于深度卷积神经网络(deep convolutional neural network,DCNN),本文提出了用于水面漂浮物识别的模型。首先通过CCD相机采集水面漂浮物的图像,借助python对图像数据进行扩充,制作训练集与测试集,最后在Tensorflow的框架下设计网络模型,通过训练后在测试集上进行模型的验证。

1 基于DCNN的漂浮物识别模型原理与结构

DCNN在解决图像分类问题方面上被证明有较好的效果,在MNIST数据集和CIFART数据集中分类精度显著提升[8]。它能将图像数据中学习简单的局部特征(例如边缘和曲线),然后组合成更加复杂的特征(例如角和形状),最终组合成一个完整的对象。而DCNN的核心则是将稀疏连接、权值共享和空间下采样结合起来,从而获得一定程度内的位移、尺度、形变的不变特征,具有很强的鲁棒性。因此在以上背景下,利用DCNN进行建模有利于克服水域环境的复杂因素,对漂浮物进行高维特征的提取。

1.1 卷积层计算

CNN中,卷积层通过卷积运算提取原图像的特征数据,使得特征信号增强同时降低噪声[9]。卷积层的操作如下所示

(1)

1.2 池化层计算

池化(pooling)层又称下采样(subsampling)层,利用图像局部相关性原理,对上一层特征图的相邻矩形区域进行聚合统计,起到二次特征提取作用。常见的池化方法有均值采样、最大池化(max pooling)采样、重叠(overlapping)采样、均方采样、归一化(normalization)采样、随机(stochastic)采样和形变约束采样[10]。其中常用的是最大池化采样。卷积神经网络的线性采样过程如下所示

(2)

式中 subsampling(·)为采样函数。

1.3 全连接层计算

将得到的一系列特征图按像素取出,排成一个向量,与全连接层所有的神经元互相连接,其过程如下所示

(3)

1.4 目标函数

在目标函数的选择上,由于输入标签为位矢量,将交叉熵函数(cross-entropy loss function)作为目标损失函数,整个训练过程以目标函数最小化为目标。损失函数如下所示

(4)

其中,pi为SoftMax层的输出概率,其定义式如下

(5)

式中fu为Xi属于第u类标签的得分。

1.5 权值更新计算

(6)

(7)

式中 ∂L/∂zl+1(i)为目标函数L关于全连接层输出的梯度;al(i)为全连接神经网络的权值。

(8)

(9)

式中yl(i,j)为卷积层的输出;xl(j)为卷积层的输入。

1.6 基于DCNN的漂浮物识别模型

为了降低环境因素对于模型的影响,该漂浮物识别模型采用卷积层与池化层交替设置的方式,卷积层中利用3×3卷积核进行卷积运算,使得特征数据增强,噪声数据减少;池化层利用最大池化对特征图进行子抽样,保留主要信息同时减少了数据处理总量。通过以上方式对原图像进行特征提取和组合,形成更加抽象的高层特征,最后形成对原图像的特征描述,通过SoftMax分类器进行判别。模型共10层深度,包括输入层(input),3层卷积层(conv1~conv3),3层池化层(maxpool1~maxpool3),2层全连接层(FC1~FC2)和SoftMax回归层。其网络层结构与参数如表1所示。

表1 网络层结构参数

2 实验结果与分析

2.1 数据集

本实验数据集利用CCD相机采集了水葫芦以及4种其他水面漂浮物的图片共计1 900张,其中水葫芦526张,浮萍340张,塑料袋280张,塑料瓶300张,金属罐454张。为使得网络的泛化能力更强,将数据集进行扩充,经过镜像、旋转(±30°和±60°)、随机裁剪、调整明暗度和添加噪声的操作将1 900张图像的数据集扩充为20 000张。部分数据集展示如图1所示,并且为了减少计算加速网络训练,将数据集所有图像分辨率调整为28×28大小。

图1 扩充后的数据集

对于训练集样本数量,分别按50 %,60 %,70 %,80 %的比例选出对应数量的样本进行训练,每个比例下的训练都进行20次,其中20次训练过程的精度记录如图2所示。

图2 不同比例下训练精度变化

图中呈现当训练集与测试集的比例为8︰2时,测试精度处于较好水平。通过计算20次训练的平均测试精度,如表2所示,该比例下模型较其他比例时能够取得较高的98.46 %的精度。因此,将该数据集80 %划为训练集,20 %划为测试集。

表2 训练精度记录

2.2 实验分析

实验使用的环境为Google公司开发的深度学习框架Tensorflow,编程语言Python,通过批量处理将原图像调整为大小28×28的输入图像,将其转为TFRecord的二进制格式便于深度学习模型的批量运算。实验所用计算机配置:CPU为Intel Core i7—8750H,运行内存为16 GB;GPU为NVIDIA GeForce GTX 1060,内存大小6 GB。实验时,先利用Python在TensorFlow环境中搭建出网络的数据流图,然后将训练数据输入到图中,启动数据流图,利用权值更新模块自动更新权值,待网络训练完毕后,将测试数据输入数据流图进行诊断。

超参数设定为:学习率(learning rate)为0.001、批大小(batchsize)为20、优化器参量ρ1与ρ2分别设置0.9与0.999,队列最大容量(capacity)为200,dropout值为0.5以及最大迭代次数iteration设为100.0K。在训练集与测试集8︰2的条件下进行测试,其训练精度与损失值变化曲线如图3。

图3 精度与损耗的训练曲线

实验结果表明在迭代次数达到50.0 K时模型的识别精度维持在95 %以上,损失函数值也稳定于0.1以内,将分类训练结果可视化,得到其混淆矩阵如图4所示。其总体精度也居于96 %以上,表明模型对于此数据集下的漂浮物具有良好的识别效果。

图4 DCNN模型的混淆矩阵

3 结束语

本文基于DCNN提出了一种水面漂浮物的识别模型,利用CCD相机采取的漂浮物图片,通过数据扩充建立训练集与测试集,在Tensorflow框架下设计了10层结构的模型,

通过实验验证该模型训练精度可达98.46 %,在模型复杂程度较低的情况下,能够达到理想的分类效果,为后续的漂浮物分类识别装置的研制打下基础。但训练集数据并未涵盖极端气候情况下的图像,因此,模型如何能够自动识别极端气候并对相应的输入图像进行调整还需要进一步研究。

猜你喜欢

漂浮物水面卷积
神秘的海上漂浮物
基于3D-Winograd的快速卷积算法设计及FPGA实现
三峡水库水面漂浮物对近坝段水体重金属的影响初探
水黾是怎样浮在水面的
从滤波器理解卷积
基于傅里叶域卷积表示的目标跟踪算法
创造足以乱真的水面反光
酷暑下的三峡清漂工
争夺水面光伏
杠杆式电动清漂装置