蒋朝平 蔡卫峰
(南京理工大学自动化学院 南京 210094)
近年来,深度学习在计算机视觉领域取得了突破性进展,特别是深度无监督学习已成为图像识别领域重要的研究方向[6~7]。相比于传统方法手动提取特征,卷积网络可以自动提取特征,并具有较好的泛化能力。本文提出了一种有效的视频背景图像提取算法,该算法采用卷积自动编码器自动提取输入图像的特征,将图像的前景当作噪声处理,通过重建图像获得视频的背景信息。
卷积自编码器[8]使用卷积层代替了传统自编码器的全连接层,结合了传统自编码器的无监督学习方式和卷积神经网络的卷积和池化操作。卷积自动编码器包含编码器和解码器,编码器对输入数据进行卷积和下采样,找出数据中的局部特征,并采用权值共享减少参数计算量,解码器进行逆向还原,常规卷积自动编码器具有卷积层、下采样层、上采样层、反卷积层,示意图如图1所示。
图1 卷积自编码网络示意图
2.2.1 卷积自动编码器背景图像提取模型
Pathak等[9]提出一种卷积编码器修补网络,可根据周围环境生成缺失图像的内容,在卷积自编码器中,丢失的图像被视为噪声,受此启发,本文采用编解码网络将输入图像的前景视为噪声,编码器将输入图像表示为潜在的特征向量(潜在特征向量会从输入图像中提取最有用的信息),再使用解码器从表示的特征向量中恢复背景图像,从而重构背景图像。本文采用的编码器具有两个卷积层,每层卷积层又采用最大池化方式降低维度,最后采用全连接层生成20维向量来表示原输入图像,解码器具有一个全连接层和两个反卷积层,重构出和原图像同尺寸的背景图像,其网络结构如图2所示。本文在编码器和解码器的每一层最后都添加了非线性激活函数,非线性函数可以提取比PCA等常用线性变换更有用的特征,使模型具有更强的学习能力,编码器的卷积层使用relu(x)激活函数,解码器的第一层采用relu(x)激活函数,第二层采用sigmoid(x)激活函数,激活函数的图形和公式如图3所示。
图2 卷积自编码网络结构图
图3 本文使用的激活函数
2.2.2 模型参数
本文采用的输入图像为单通道灰度图,大小为460*320,共有250张图像参与训练和5张图像参与测试。编码部分的卷积层包含32个卷积核,步长为1,填充方式为SAME,共产生32张映射图,池化层采用最大池化,步长为2,保留图像最有意义的特征,全连接层将图像编码成20维向量;解码部分采用Un-pooling(反池化)[10]扩充特征图,该方法基于tf.nn.conv2d_transpose()函数,使用s×s的内核替换特征图中s×s的左上角的元素,其余值置为0,相比于上采样方法,该方法使用了Max-pooling的位置信息,避免将内容直接复制来扩充特征图,实现方式如图4所示(考虑到Max-pooling采用的核为2×2,故Un-pooling的核大小也为2×2)。反卷积采用5×5的卷积核,步长为1,填充方式SAME。
图4 Un-pooling
2.2.3 SSIM损失函数
可见,在淹水期间,各处理水稻株高的生长速率与对照相比,淹水天数增多,株高增高越快。分蘖期淹水处理之后,各处理水稻株高和节间的生长速率与对照相比,淹水天数增多,增长速率减慢,最终表现为成熟期水稻的株高和节间变得越矮越短。一方面原因是适度淹水条件影响下促进了水稻的抗逆反应,水稻通过伸长水面上的茎叶等途径获取氧;另一方面原因是淹水促进了“乙烯”的产生,间接促进根、干和叶的生长,以及提高节间细胞分裂,以往的研究中亦有类似结论的报道[9-10]。但当淹水深度和淹水时间不断增加,逐渐超过水稻的耐受限度时,其后期生长能力下降致使成熟期水稻株高的降低。
损失函数用于计算网络的输入图像和网络的重构图像之间的相似性。Zhao等[11]通过图像超分辨率、联合去噪等实验得出结论:L2损失函数由于基于像素比较差异,没有考虑人类视觉感知,也未考虑人的审美观,峰值信噪比指标高,并不代表图像质量好,故本文未采用L2损失函数优化自动编码器。Zhou等[12]提出结构相似性指数用来评估两幅图像之间的误差,该损失函数考虑了亮度、对比度和结构行指标,即考虑了人类的视觉感知,本文采用SSIM损失函数进行优化,从而减小输入图像和重构图像的误差。
首先假设亮度未离散信号,则平均亮度如式(1)中μx所示,亮度比较函数l(x,y)是μx和μy的函数,如式(2)所示。
其中,C1=(k1L)2,是用来维持稳定的常数。离散信号对比度估计可表示为式(3),对比度比较函数c(x,y)是σx和σy比较的结果,如式(4)所示。
其中,C2=(k2L)2,是用来维持稳定的常数,σx2是x的方差,是y的方差,再将信号除以标准差,使得比较的两个信号具有单位标准差,即归一化信号,如式(5)所示:
s(x,y)是基于归一化信号得到的两张图像间的结构比较函数,如式(6)所示。
将三部分合起来,可表示出整体的相似性度量,如式(8)所示。
将亮度比较函数l(x,y)、对比度比较函数c(x,y)、结构性比较函数s(x,y)和组合函数f(·)代入式(8)可得SSIM函数的表达式,如式(9)所示。
结构相似性的范围为0~1,当两张图像完全相同时,SSIM的值为1。结构相似性指数从图像组成的角度将结构信息定义为独立于亮度、对比度并反映结构的属性,作为本文自动编码器的损失函数,可构建精准的背景图像。
本文采取卷积自动编码器提取视频背景图像,将某一监控视频场景的250帧单通道图像输入卷积网络,卷积网络将输入图像降维至20维向量表示,将前景图像视作噪声,再通过解码重构,选用SSIM损失函数,降低重构损失,提取视频背景图像。
基于卷积自动编码器的实验环境包括硬件设备和软件配置两部分,测试所用硬件配置为Intel Core i7-8700 CPU,GPU为NVIDIA GeForce GTX 1060(显存为6G),内存为16GB。文章的软件环境为Window10 64bit,CUDA Toolkit 9.0,OpenCV 3.4,Python 3.6与Tensorflow 1.12.0。
本次实验采用数据集为UCSD数据集[13]和Avenue数据集[14]。UCSD数据集通过固定在学校某位置的摄像机拍摄人行道获得,数据记录了不同场景人群的运动模式,包含行人、卡车、滑板、自行车、碾压草坪等。从每个场景记录的视频大约为200帧,UCSDPed1数据集拍摄了行人走向和远离摄像机的运动场景,UCSDPed2数据集拍摄了行人平行与摄像机运动的场景。在Avenue数据集中,每段视频的时长在一分钟到两分钟之间,包括人在楼梯和地铁入口之间行走、奔跑、闲逛等场景。
UCSD异常数据集(包含Ped1和Ped2两个场景),采用.tif格式图像序列记录每个场景,需要将.tif格式转换为.jpg格式,Avenue数据集使用.avi格式的视频文件存储每个拍摄场景,需要从原视频中提取每一帧转换成.jpg格式,再将所有的图像调整为460×320大小并转换为灰度图像以降低维数。
本文从Ped1、Ped2和Avenue数据集中随机挑选250张图像作为训练集,另准备5张图像作为测试集。图5为Avenue的实验结果,其中图5(a)为训练集图像,图5(b)为选择的测试图像,图5(c)是灰度处理后的测试图像,图5(d)为重构的背景图像。图6和图7分别为Ped1和Ped2的实验结果,图像排列方式同图5(训练时间为34min)。
图5 Avenue数据集实验结果
图6 Ped1数据集实验结果
图7 Ped2数据集实验结果
图8(a)、图8(b)、图8(c)分别为Avenue数据集、Ped1数据集、Ped2数据集训练的损失值。对于不同场景,训练损失下降速度略有不同,但一般训练5次左右,即可达到稳定值,表明对于不同视频场景,模型稳定性较好。
图8 三种数据集训练损失
3.4.1 基于不同损失函数
本文将SSIM损失函数和MSE损失函数分别进行实验,实验结果如图9所示,图9(a)两张背景提取图像结果相差不大,但图9(b)与图9(c)结果对比发现,基于MSE损失函数提取的结果存在重影、前景遗留的现象,基于SSIM损失函数提取结果则无前景遗留和重影的问题。
图9 基于不同损失函数结果对比
3.4.2基于不同提取方法
本文将基于卷积自动编码器背景提取方法与基于SVD背景提取方法[15]对比,实验结果如图10所示。图10(a)对比可以发现,基于SVD方法背景提取存在模糊现象,图10(b)与图10(c)对比发现基于SVD方法提取的背景存在前景对象的残影,精度不够高,本文方法提取的背景更为清晰。
图10 基于不同提取方式结果对比
本文结合深度学习的优势,使用卷积自动编码器提取固定场景的监控视频背景图像,相比于传统方式提取背景,卷积自动编码器具有更强的泛化能力,对于不同场景,提取的背景无残影、重影、模糊等问题,但是采用深度学习的方式提取视频背景图像需要较高的硬件成本,需要一定的训练时间,从实验结果看,采用灰度图像进行和低分辨率图像可大大较少训练时间,满足日常监控视频背景图像提取的需求。