Air Cognizer:使用 TensorFlow Lite 预测空气质量
文 / Prerna Khanna、 Tanmay Srivastava 和 Kanishk Jeet
印度德里等大城市可能会遭受空气污染,且在冬季尤为严重。翻开报纸,“在德里寒冷的早晨,空气质量依旧很糟糕” 等头版头条屡见不鲜。冬季空气质量差会引发雾霾,从而限制市民的户外活动并诱发健康问题。
使用移动设备评估 PM 2.5
作为工科生,我们力求通过技术造福社会。若要解决空气污染问题,首要一步便是让市民能够测量所吸入空气的质量。
污染传感器有助实现这一目的,但大规模部署这类设备的成本十分高昂。我们的目标是设计一种可靠而又廉价的空气质量评估解决方案,让每位智能手机用户均可享用此服务。
基于图像分析的颗粒污染评估等研究表明,通过相机拍摄的图像,我们可以有效利用机器学习来评估空气质量,尽管先前的研究通常仅局限于少数静态相机拍摄的图像。
我们的目标是开发一款基于 Android 的移动应用,以便利用智能手机所拍摄的图像提供本地的实时空气质量评估。来自马可尼学会的 Celestini Project India 给予我们很大启发,并为我们提供了德里印度理工学院的实习机会和项目开发所需的资源。
我们决定依据 “PM 2.5” 或直径小于 2.5 微米的颗粒来预测空气质量,这也是我们的研究重点。为了直观呈现结果,我们在空气质量指数 (AQI) 等级表中以不同颜色绘制了 PM 2.5 的预测值。这是各个国家 / 地区的政府制定的标准等级表,之后的预警便会根据此 AQI 值显示。
使用 TensorFlow Lite 预测空气质量
我们开发的应用采集了手机相机拍摄的图像,并在设备端使用 TensorFlow Lite 对其进行处理,以此得到 AQI 估值。开发应用前,我们在云端训练了一种 AQI 评估模型。在 Android 应用中,使用 Firebase ML Kit 即可自动下载该模型。
以下便是该系统的详细描述
移动应用。该应用用于采集图像和预测 AQI 等级,同时负责在设备端处理图像
TensorFlow Lite 用于在较小二进制数下(带宽受限时,这会对下载速度产生重要影响)为训练好的机器学习模型提供设备端推理
Firebase。从图像中提取的参数(如下所述)会发送至 Firebase。每当新用户使用该应用时,均会为其创建唯一 ID。这可用于以后为不同地理位置的用户定制机器学习模型
亚马逊弹性云计算 (Amazon EC2)。利用这些参数和从地理位置中测出的 PM 值,我们便可在此处训练模型
ML Kit。训练好的模型托管于 ML Kit 上,并会自动载入设备,然后使用 TensorFlow Lite 运行
两种模型
下面,我们将更详细地介绍如何通过图像分析来预测 AQI。为构建该应用,我们训练了两种基于图像的机器学习模型:第一种模型根据用户上传照片的特征来预测 AQI,第二种模型则会筛除不包含天空区域的图像。
AQI 模型
对于用户上传的照片,我们使用以下特征预测 AQI。我们利用传统的图像处理技术提取这些特征,并通过线性模型进行融合。第二种模型(稍后讨论)会直接处理图像,这在深度学习中十分常见。
透射率:此特征描述的是场景衰减与经空气颗粒反射后进入手机相机的光量。可用如下方程式描述:
其中,I 是观察到的模糊图像,t 是从场景到相机的透射率,J 是场景亮度,A 是大气光的颜色矢量。
我们借助暗通道的概念找到了单张模糊图像的透射率,此概念假设在所有户外图像中,至少有一条颜色通道存在强度为零或极低值的像素。对于无雾图像 J,暗通道为:
其中,Jc 是 J 的一条颜色通道,而 Ω(x) 则是以 x 为中心的局部斑块。我们可根据天空或最亮区域估测大气光,继而通过以下方程式得出透射率:
其中,Ic(y)/A 是经大气光 A 归一化后的模糊图像,右侧第二项为归一化模糊图像的暗通道。
天空蓝度:此特征有些类似于我们对污染日的感知标准。若天空是灰色,我们便认为受到了污染。天空蓝度通过 RGB 分割估算得出。
天空梯度:天空可能会因云层遮盖而呈现灰色,考虑到这种可能性,我们加入此项特征。通过制作天空区域的掩膜并计算该区域的拉普拉斯算子,我们便能计算出天空梯度。
熵,均方根 (RMS) 对比度:这两种特征也能提供图像中包含的细节。若空气受到污染,图像便会丢失细节。RMS 对比度被定义为图像像素强度的标准差,可用如下方程式表示:
其中,Iij 是大小为 M×N 的图像在 (i,j) 像素处的强度,avg(I) 是图像内所有像素的平均强度。由此可看出,对比度与 PM 2.5 成反比关系。可使用如下方程式估算熵:
其中,pi 是像素强度等于 i 的可能性,而 M 则为图像的最大强度。随着 PM 浓度的增加,图像会逐渐丢失细节,图像的熵也会随之减小。由此可看出,熵与 PM 2.5 成反比关系
湿度:经研究推断,由于 PM 2.5 能够吸收水分并降低能见度,潮湿天气的污染程度会上升。
天际线模型
在我们最初发布这款应用时,人们很好奇是否能用其预测室内外的 AQI。我们的模型能预测出一张图像中是否至少包含 50% 的天空区域,并可利用二元分类器接受这些图像。
我们使用迁移学习创建该分类器,并通过 TensorFlow Hub 在标记的数据集上重新训练模型。此数据集包含以下两类图像:天空区域达到 50% 的 500 张图像,不包含天空区域(或天空区域小于 50%)的 540 张图像。这些图像中的场景包括房间、办公室、花园和室外场景等。我们使用 MobileNet 0.50 架构并对 100 个未曾见过的样本进行测试,精度达到 95%。TF for Poets 有助于我们重新进行图像训练。
模型经过重新训练后,其混淆矩阵如下所示:
左侧:天空区域大于 50% 的图像。右侧:天空区域小于 50% 的图像
为每位用户自定义模型
我们意识到,每位用户均需要一种自定义 ML 模型,因为每部智能手机的相机规格各有不同。为训练这种模型,我们采集了每位用户所拍摄的图像。
我们决定结合两种模型的结果,一种是基于图像的模型,另一种则是使用气象参数的时间模型。使用气象参数的时间模型有助于实现更高的推理精度,并在训练基于图像的机器学习模型时为用户提供一些结果,而基于图像的机器学习模型可帮助我们针对特定用户自定义模型,从而通过减少估测误差来提高推理精度。
为给每位用户创建一个小型训练数据集,我们提取了 7 张图像的特征并将其用于训练。这些图像必须是连续 7 日拍摄的图像,其中半数图像需包含天空,且没有直接光源(如太阳)。提取完图像特征后,我们会用这些特征来训练回归模型。该模型是线性的,因为所有图像特征或多或少都与 PM 2.5 值成线性比例关系。
创建完训练数据集和模型后,还需创建用于测试的第二组图像。一旦数据集包含这 7 日所摄图像的特征,测试即会开始。如果 7 日的训练均方根误差 (RMSE) 小于 5,此模型便会被冻结并将发送至 ML Kit(可在应用中下载)。如果 RMSE 未小于 5,则可收集更多训练数据。
图像特征与 PM 2.5 的关系
气象参数
我们还根据最近位置的 AQI 历史记录,使用基于气象数据的时间模型来预测 AQI,而且时间模型可为基于图像的模型提供补充,以此提高推理精度。我们从政府网站收集了德里 2015 年至 2017 年的气象数据集,并利用 LASSO 优化进行岭回归,从而选出影响 PM 2.5 等级的关键参数。所选择的关键参数包括:前一小时的 PM 2.5 浓度、NO2、SO2、O3 等不同气体的浓度,以及露点。然后,我们对数据进行分割,以作训练和测试之用。我们使用 2015 年 1 月 至 2017 年 1 月的数据进行训练,而对 2017 年 1 月至 2017 年 6 月的数据进行测试。我们在数据集上的精度最终达到 90%。
此折线图表示 3 种模型分别在 21 天内得出的 RMS 误差值
此 Codelab 有助我们在在 Android 上使用 TFLite。接下来,我们要面临的挑战是为每位用户托管基于自适应图像的模型。为解决此问题,我们通过 Firebase ML Kit 找到了一个有趣的解决方案。该方案支持在云端和设备端托管自定义与自适应 ML 模型,具体操作请参见 此文档。
注:此文档 链接
https://firebase.google.com/docs/ml-kit/android/use-custom-models展望未来
未来,我们打算对此应用作出以下改进:
基于夜间拍摄的照片生成结果
将适用地范围扩展至其他重要城市
使模型在各种天气条件下均具有鲁棒性
我们开展此项目的目的在于提高人们对污染毒性级别的认识。我们希望随着时间的推移,大家都能积极行动起来,共同减少会降低空气质量的活动。
最后,我们要感谢 Aakanksha Chowdhery 博士 (Google) 和 Brejesh Lall 教授(德里印度理工学院)对我们的全程指导。同时,也要感谢马可尼学会通过 Celestini Program India 为我们提供财务与学习支持,并为我们提供一个绝佳平台来制作此应用的原型。若没有以上指导和支持,我们也无法圆满完成项目。
如需关注此项目,请访问我们的 网站 和 YouTube 上的演示视频。这款应用名为 Air Cognizer,已可从 Play 商店获取。
注:网站 链接
http://bit.ly/Air_Cognizer
更多 AI 相关阅读: