一种基于实景图像的低能见度识别算法

2022-07-14 10:44刘冬韡穆海振贺千山王亚东武雪沁
应用气象学报 2022年4期
关键词:气象站能见度梯度

刘冬韡 穆海振 贺千山 史 军 王亚东 武雪沁

1)(上海市生态气象和卫星遥感中心, 上海 200030) 2)(上海市气象信息与技术支持中心, 上海 200030) 3)(上海市气象与健康重点实验室, 上海 200030)

引 言

能见度是一种气象光学视程,白天是指人从天空背景中能看到和辨认目标物(黑色、大小适度)的最大水平距离,夜间是指能看到和确定出一定强度灯光发光点的最大水平距离,是常规气象观测项目之一[1]。一般出现能见度低于1000 m的天气时,气象部门需要对外发布预警信息。低能见度对高速公路、轮渡、民航等交通出行有重要影响[2-4],甚至可以造成重大交通事故,因此及时监测和提前预报低能见度对交通安全具有重要的意义。

低能见度天气现象往往具有空间分布不均匀的特点,空间差异明显[5-7]。现有能见度观测主要依靠能见度仪,由于其价格昂贵、维护成本高从而导致观测站点稀少,因此能见度仪器观测密度难以满足低能见度事件(如团雾)的监测需要[8]。随着现代城市的发展,常规布设的视频摄像头越来越多。利用这些视频监控数据提取能见度信息一方面可以提高能见度数据采集密度,另一方面也能够节约能见度仪的建设成本,进而为城市运行和交通管理提供更加精细的数据支持。

目前利用视频图像解析能见度比较常见的方法是识别锁定固定距离目标物[9-10]。陈钊正等[11]通过对带有标定距离信息的特定图像区域的亮度值进行拟合估算能见度。李勃等[12]利用道路关注域中各像素的能见度对比度值与其设定阈值的关系确定人眼可分辨像素,能见度值被认定为人眼能够分辨的最远像素点的距离。也有研究将图像暗原色去雾的方法应用于图像能见度检测中[13-16],以图像中带有距离信息的目标物作为检测点或提取特定区域信息估算图像的大气透射率进而求取能见度。然而,上述方法均需要辅助信息或人工设置阈值实现能见度的估算。虽然这类方法精度较高,但操作复杂,即使视频摄像头出现少量抖动或移位也将影响其识别精度,不适合城市大规模视频设备站网的能见度提取。

近年机器学习和神经网络技术逐渐成熟,在气象预报和防灾减灾方面已有大量应用[17-23],也有学者将其用于图像的能见度识别。石玉立等[24]采用机器学习算法建立能见度数值与图像特征的关系模型,结果表明图像梯度和对比度特征能够反映能见度大小。苗开超等[25]构建AlexNet卷积神经网络对道路开展能见度分级估测,该方法无需确定特定目标物距离,直接对原始图像进行向量化处理并通过主成份法降维,具有更强的适用性和容错性,其白天准确率可达80%以上,但该方法主要针对高速公路场景。本文在对原始视频图像进行信息提取的基础上,借助简单卷积神经网络技术提出一种适用于大部分视野开阔场景的低能见度识别算法,以期实现低能见度天气的智能监测。

1 数据和方法

1.1 数 据

选取的实景图像场地位于上海洋山港气象站附近。洋山港气象站位于30.6°N,122.1°E,面朝洋山深水港码头,海拔高度为4.6 m。该处视频视野可覆盖远处地平线,由远及近的景物层次分明,包括天际线、大海、海岛、轮船、码头集装箱、龙门吊、房屋、气象观测场等(图1),本文所用时间均为北京时。视频采集设备为海康威视视频DS-2DE4220-AE型,采集图像分辨率为1920×1080像素。设备架设于洋山港气象站东面小山坡上,距离观测场边缘34.4 m,海拔高度为55.2 m。本文以该点视频为例说明算法实现过程。文中用于对比的能见度仪为洋山港气象站安装的Vaisala公司生产的前向散射能见度仪(DNQ1型),观测范围为0~30000 m,每分钟采集1次。

图1 2021年1月16日14:00洋山港气象站视频场景景物分布Fig.1 Distribution of video scene scenery at Yangshan Port Weather Station at 1400 BT 16 Jan 2021

为了便于研究,参照气象视程障碍天气现象中雾的分类等级进行标签划分[26],分类时不区分由雾、霾或降水造成的低能见度,能见度等级名称仅代表其所处的能见度范围,不特指一种天气现象(表1)。在建立训练样本集时按照能见度等级开展图像分类,将附近的洋山港气象站能见度仪采集数据转换到对应等级,对同时刻图像进行初步分类,并对初步分类结果进行质量控制,调整明显划分错误的分类。

表1 能见度分类标准Table 1 The standard for visibility classification

1.2 方 法

1.2.1 数据处理

本算法针对视频图像,需要选定合适的时间间隔从视频流中截取视频图像,并剔除视频点名称、位置、时间等无关信息。卷积神经网络是一种可以从样本中自动学习特征的方法[27],但在此应用中如果直接从原始图像中提取特征,干扰信息多,难以抓取其影响能见度识别的主要特征。根据定义,能见度是从背景环境中识别出目标物轮廓的最大距离,而与目标物本身的颜色与形状等关系不大,因此图像中最重要的信息是可以用于刻画图像边缘轮廓的梯度信息。除梯度信息外,图像中还包含饱和度、亮度、色相信息,这些信息常用于目标物的检测[28-29]。当出现低能见度天气现象时,视频画面中往往整幅图像亮度比较均匀,无法分辨天地交界处,画面呈灰白色调,图像饱和度低。能见度越低,梯度越小,色彩饱和度越低,图像亮度越均匀。考虑到一般视频摄像头为水平放置,远处景物一般出现在图片的上方,近处景物一般出现在图像下方,因此,对裁剪后的原始图像进行水平分块处理,提取各块的梯度、饱和度、亮度信息,重新组合成新的图像。由于不同季节植被颜色会变化,以洋山港气象站为例,春夏季节以绿色为主色调,秋冬季节以黄色为主色调,因此提取图像信息过程中未考虑色相的因素。具体图像处理过程如下:①将切割后的原始图像转化为梯度图,采用Sobel算子进行梯度转化[30]。②将梯度图自上而下分成256块。对每块中的像素点数值进行统计,分别统计像素值为0到255的像素数量。③生成256×256像素大小的数据矩阵A1,每行代表一块数据,每列从左到右代表梯度图中对应像素位置为0~255数值的数量。④将切割后的原始图像转化为HSV图像。H代表色调,S代表饱和度,V代表明度,对饱和度和明度均采用与梯度同样的方式,生成数据矩阵A2和A3。⑤将A1,A2,A33个矩阵合并成一幅256×256像素大小的RGB图像,A1,A2,A33个矩阵数据分别为新的图像的R,G,B通道数据。

采用opencv-python(V4.4.0)工具包进行图像处理,调用Sobel方法进行梯度转化,调用cvtColor方法将图像从RGB颜色空间转化为HSV颜色空间。

1.2.2 神经网络搭建

处理后的图像得到极大简化,是包含原始图像的梯度、饱和度和亮度信息的RGB图像。训练过程中只要区别水平条纹的长短和彼此之间的相互关系即可,因此这里设计的神经网络并不复杂。采用简单卷积神经网络,包括2个卷积层、2个最大池化层和2个全连接层,激活函数采用ReLU函数,每个卷积层的滤波器数量均为32个,采用Keras人工神经网络库搭建网络。Keras是由Python编写的开源人工神经网络库,可以进行深度学习模型的设计、调试、评估、应用和可视化[31]。用于神经网络搭建的软件工具版本为Python3.6.13及Keras2.1.6。

1.2.3 训练集的建立

训练集样本收集的是2019年9月—2020年12月的视频图像,每隔10 min采集1张图像。根据洋山港气象站能见度仪采集的数据进行初步分类,进行质量控制后,给图像打上标签区分能见度等级,共收集有效样本29668张。由于雾属于一种极端天气现象,出现频率较少,而大雾和强浓雾获取的样本量更少,因此原始训练集样本极其不平衡。为了保证各类样本均衡,需要对样本较少的类型个例进行调整。处理样本不均衡的方法一般包括欠采样法和过采样法,过采样法一般优于欠采样法[32]。欠采样法是去除占比多的部分样本,使得其与占比少的样本量级接近,但由于强浓雾的样本过少,这样会去除大部分有效样本,使总样本量过少,因而本算法采用过采样法。最简单的过采样法是直接复制少数样本,缺点是虽然引入了额外的训练数据,但没有给少数类型样本增加新信息,易造成过拟合。考虑到数据处理是根据水平分块进行统计,相近两个水平块的信息比较接近,调换临近图像中行的信息,对分类器而言,不会对各分类的主要特征抓取有过多的影响。因此采用从上到下、按照一定的间隔调换临近两行数据的方法扩展样例。每种类型的训练样本根据原有样本量,从上到下调整不同的间隔数进行扩展,使得每种类型的样本量更加均衡。表2为调整后的训练样本量,强浓雾未出现,分类时不予考虑。

表2 不同类型原有样本量和调整后样本量Table 2 The total number of original and modified samples in each category

1.3 比较验证方法

1.3.1 检验方法

为了检验算法效果,本文采用图像解析的能见度级别和自动气象站能见度仪的能见度级别进行对比验证。定义图像解析能见度的准确率R[33]:

R=Nr/Na×100%。

(1)

式(1)中,Nr为自动气象站能见度等级与模型分类结果一致的数量,Na为总样本量。

为了考察在不同能见度等级下算法的适用性,本文以自动气象站能见度仪数据的等级划分为标准,定义不同能见度等级下的准确率Rn:

Rn=Nnr/Nnz×100%。

(2)

式(2)中,Nnr为自动气象站能见度等级为n且模型分类结果也为n的数量,Nnz为自动气象站能见度数据等级为n的数量,n取0~4,分别代表5个能见度等级。

为了检验算法对有雾和无雾的区分能力,引入雾的查全率:

Rf=Nf/Na×100%。

(3)

式(3)中,Nf为模型分类结果也为雾(包含雾、大雾和浓雾)的数量且自动气象站能见度等级为雾,Na为自动气象站能见度等级为雾的数量。以同样方式引入非雾的查全率,非雾包括无雾及轻雾。

1.3.2 对比算法

采用AlexNet神经网络[25]进行对比。使用AlexNet网络时,不对图像进行前期处理。为了解决样本不平衡的问题,将训练样本中样本较少的2~4类图像进行简单复制,使其达到表2调整后的样本量。对调整后的样本集进行划分,随机选取80%为训练集,20%为测试集。

2 结果与分析

2.1 原始图像处理结果

图2为裁剪后白天和夜间原始图像和梯度图。由图2看到,白天能见度较好的时刻,梯度图中各景物轮廓大部分能够分辨,而夜间只有在灯光处景物轮廓才能分辨。在夜间天空和没有灯光处有许多分布均匀的梯度斑点,这是夜间图像的噪点导致。

在不同能见度等级下,白天新生成的典型图像如图3所示,夜间新生成的典型图像如图4所示。由图3可以看到,白天当能见度特别低时,如大雾或浓雾(图3d和图3e),整幅图像梯度几乎为零,每个分块的梯度像素值均较小,所以红色通道几乎均集中在图像左侧很小的区域,仅在底部区域由于离视频摄像头近,景物能分辨,其梯度数值分布区域较宽。同样,饱和度也表现出这种变化特征,而由于整幅图像亮度在雾的区域里变化较小,上下区域分布比较集中且连续。如能见度较好,天地交界处无论是亮度还是色彩饱和度的变化均比较明显,从上向下有明显的不连续和分层现象。不连续或分层现象出现越低往往能见度越差。当夏季对流性云出现时,天空有时也会出现梯度变化情况,但总体上天空和地物相比梯度变化不明显。在阳光较好时,能见度也较好,地物色彩较丰富,地面景物有阴影,因而梯度、色彩饱和度和亮度各个层次都有,分布范围比较宽。这个视频站点夜间图像自动变为灰度图,因此整幅图像的饱和度均为0。由图4可以看到,在夜间能见度较好的区域,梯度分布比较宽。亮度在有灯光的区域出现明显的分层现象。当出现大雾或浓雾时,与白天一样,亮度较为连续。此外,在夜景模式中,视频设备由于需要信号增益,往往出现很多噪点,特别是低能见度时,整个屏幕会出现多个噪点,如果用原始图像进行训练一般需要进行去噪处理[34],而使用本算法无需对图像去噪。但该方法也需要在图像中有固定区域的灯光出现,因为如果图像漆黑一片,人眼也无法分辨任何东西,通过神经网络训练自然也无法识别其变化特征。

图2 裁剪后白天和夜间原始图像和梯度图个例(a)白天原始图像,(b)白天梯度图,(c)夜间原始图像,(d)夜间梯度图Fig.2 Daytime and nighttime examples of cropped original images and gradient maps (a)daytime original image,(b)daytime gradient map,(c)nighttime original image,(d)nighttime gradient map

图3 白天不同能见度等级下处理后的典型图像(a)无雾,(b)轻雾,(c)雾,(d)大雾,(e)浓雾Fig.3 Typical images after processing at various levels of visibility during daytime(a)no fog,(b)light fog,(c)fog,(d)dense fog,(e)thick fog

图4 夜间不同能见度等级下处理后的典型图像(a)无雾,(b)轻雾,(c)雾,(d)大雾,(e)浓雾Fig.4 Typical images with various visibility levels after processing during nighttime(a)no fog,(b)light fog,(c)fog,(d)dense fog,(e)thick fog

2.2 算法训练结果及验证

对模型进行训练时,首先对样本集进行划分,随机选取80%为训练集,20%为测试集,结果表明:白天训练集和测试集准确率分别为96.95%和97.35%,夜间训练集和测试集准确率分别为96.14%和97.60%。这里测试集表现优于训练集,原因是训练集和测试集均为随机分配,同一天连续采集的视频图像经处理后分别归类在训练集和测试集中。一般同一天场景的光线、植被物候等条件比较接近,提取的特征也比较接近,因而训练后的模型测试时也有较好表现。

如果不对样本进行扩充,使用原有样本进行训练,同样随机选取80%为训练集,20%为测试集,白天训练集和测试集准确率分别为93.84%和93.77%,夜间训练集和测试集准确率分别为92.69% 和93.88%,但测试集白天和夜间雾的查全率为80.95%及89.13%,非雾的查全率分别为100%及99.78%。而采用扩展样本训练建立的模型,测试集白天和夜间雾的查全率均达到100%,非雾的查全率为99.87%及98.98%。由此可见,对样本进行扩充后训练,虽然增加了将非雾天气误判为有雾天气的概率,但出现雾时几乎无遗漏。

采用对比的AlexNet神经网络,白天训练集和测试集准确率分别为76.89%和76.93%,夜间训练集和测试集准确率分别为76.54%和77.82%。本研究算法准确率明显高于AlexNet神经网络方法。

为了验证模型的泛化能力,用其他时间段的视频图像进行检验,这里选择2021年1月1日—5月31日的视频图像进行测试,由于无雾的情况较多,因此无雾的图像只取部分用于测试,白天共选取2855张图像,总体测试准确率为87.99%。夜间共2902张图像,总体测试准确率为81.32%。

由表3可以看到,无雾和轻雾的识别准确率一般较高,雾的识别准确率均偏低。在夜间,大部分浓雾样例被识别为大雾等级,浓雾的识别准确率偏低。这是因为在夜间有灯光的地方才可以看到物体,其他地方漆黑一片,当雾的浓度达到一定级别后,视频图像中只是出现一片较弱的光,没有参考物,无法分辨出雾的浓度,因此容易误判为大雾,用人眼进行判别也容易出现同样偏差。白天识别错误的样本共343个,夜间识别错误的样本共541个,其分布见表4。

表3 不同能见度等级下的图像能见度识别准确率Table 3 Image visibility recognition accuracy at various degrees of visibility

表4 图像能见度等级识别错误样本分布Table 4 Failed recognition of image visibility level

在气象业务中,人们对于能见度较高的天气关注较少,如果出现能见度低于1000 m的视程障碍天气现象时,需要提醒业务人员注意,并发布预警信息。本研究模型如果能区分雾和非雾的天气,即可用于业务。因此将轻雾和无雾划归为一类,即属于不需要关注类型,将雾、大雾、浓雾划归为一类,即属于需要关注的类型。用能正确划分这两种类型的占比评估该模型的业务可用性。表4中,无雾判别为轻雾,或者轻雾判别为无雾,认为是正确的;同样,雾、大雾、浓雾分别划分为这3类天气中的其他两类,也认为是正确的,则得到白天识别准确率为96.18%,夜间识别准确率为96.14%。

2.3 错误样本分析

为了查找模型识别错误的原因,本文挑选了一部分识别错误个例。图5展示了能见度仪数据等级为雾但模型识别错误的4个个例,其中2021年5月13日20:30和2021年3月11日19:10的图像被模型识别为轻雾,2021年2月5日19:00和3月20日03:10的图像被模型识别为大雾。从5月13日20:30 的图像可以清楚地看到观测场的仪器设备,3月11日19:10的图像中观测场位置较为模糊,但是远处的3个龙门吊可以看出轮廓,而2月5日19:00 和3月20日03:10的图像中龙门吊无法清楚看到,观测场更为模糊,上半部分(远处景物)整体表现得更白,景物更模糊。从人眼角度很难确认这4张图像能见度处于同一个级别,但至少可以判断图5月13日20:30和3月11日19:10图像场景比2月5日19:00和3月20日03:10图像场景的能见度更高,这与模型识别能见度等级趋势是一致的。说明该模型可以代替人眼识别能见度等级。

图5 自动气象站能见度仪观测等级为雾时识别错误个例Fig.5 Examples of failed recognition when the visibility meter observation level is fog

3 模型应用

2021年4月13日清晨华中和华东地区受冷高压控制,上海地区晴空少云,西北风1~2级,辐射降温作用明显,上海地区普遍出现辐射雾。上海气象部门的能见度仪共有11台,主要安装在各个区县气象站,具体分布见图6中▲所示位置,在上海东北部即崇明东部、长兴岛和横沙岛附近没有安装能见度仪。为了弥补气象站点能见度仪数据不足,引入了4路公安系统监控视频图像,具体分布见图6中•所示位置,由北向南依次排列,分别为桃源村江边、东宝路中段、长江隧桥、南祝4个点。为了便于插值运算,需要从视频图像解析出能见度数据,具体做法是利用本研究所建模型得到能见度分类等级,在分类等级的能见度范围内通过整幅图像平均梯度拟合出能见度(单位:m)。通过Cressman插值[35]到0.01°×0.01°网格上,并绘制上海及周边地区能见度分布(图6),范围为30.5°~32.0°N, 120.8°~122.3°E。由于能见度仪设备安装比较稀疏且不均匀,上海东北部即崇明东部、长兴岛和横沙岛附近未安装,其附近没有能见度仪数据,由图6a可以看到,崇明东部、长兴岛及横沙岛以及浦东北部大部分处于郊区,未出现雾。图6b显示,加入4个公安系统监控视频图像解析的能见度数据后进行插值,这时上海东北部郊区出现雾,只有城区由于辐射降温较弱,未出现雾。因此使用视频图像后能见度数据更密,可以弥补上海东北部地区能见度数据稀疏的不足。

图6 2021年4月13日05:00能见度分布图(▲为能见度仪位置,•为视频设备位置)(a)仅用能见度仪数据,(b)能见度仪数据和4个站点视频图像能见度解析数据Fig.6 The visibility distribution at 0500 BT 13 Apr 2021(▲ is the visibility meter position,• is the video position) (a)using visibility meter data only,(b)using visibility meter data and 4 video images visibility analysis data

4 小 结

本研究提出一种实景图像能见度识别算法,该算法将实景图像进行水平分块,对每块的梯度、饱和度、亮度信息提取后形成新的图像,基于简单卷积神经网络进行训练,建立能见度识别模型,得到以下主要结论:

1) 通过对原始图像进行预处理,提取出包含原始图像水平分块中的梯度、饱和度、亮度信息,可以降低能见度识别的复杂度。

2) 按照雾的预报等级将能见度划分为无雾、轻雾、雾、大雾、浓雾5个级别进行测试,该模型白天总体的测试准确率为87.99%,夜间测试准确率为81.32%,优于直接采用AlexNet卷积神经网络的识别模型。

3) 以能分辨1000 m以下低能见度天气为标准划分,该模型在白天对低能见度天气的识别准确率为96.18%,夜间的识别准确率为96.14%。即该模型对实景图像识别的能见度可以作为自动气象站能见度观测的补充,在气象业务上有一定应用价值。

本研究建立的能见度识别模型表现出较好使用效果,但仍存在一些不足。算法建立在视频设备水平安装且具备开阔视野的假设之上,表现为图像中越靠近上面的景物距离摄像头位置越远,如果拍摄过程中有较大遮挡物,会造成图像上面景物距离拉近的假象,这时算法可能失效。针对这种情况将遮挡物进行垂直裁剪后再应用该算法可消除误判。由于该算法适用于水平安装的视频设备,因此在使用过程中需要进行筛选,将符合算法假设的摄像头纳入业务系统。为了实现全天候通用能见度识别模型,需要在样本量充足的条件下采用更大更深的网络或其他神经网络架构实现。数据是推动某一领域人工智能技术应用的重要因素,很多学者在建立针对特定应用领域的人工智能数据集[36-38]。通常获取和建立一个可靠数据集的成本很高,针对视频图像能见度识别的应用,建立大量不同场景下的能见度等级图像分类数据集也是亟待解决的问题。

猜你喜欢
气象站能见度梯度
珠峰上架起世界最高气象站
一个带重启步的改进PRP型谱共轭梯度法
一个改进的WYL型三项共轭梯度法
能见度仪在海陀山的应用
随机加速梯度算法的回归学习收敛速度
天津市东丽区低能见度事件特征分析
一个具梯度项的p-Laplace 方程弱解的存在性
心灵气象站
低能见度下高速公路主动诱导技术的应用
自动气象站异常记录分析及处理方法