https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBUi-G7WDQP5RK20G9PioqDgmKs-OGdrZUVv-OCsNwdHEo7SS2YmnV1P3egXrHU3J26l3pFNiQYZvxuav_HE7FhgVs62LJClZm08j9ySLuq_kHuCjdSImB936c9mqr_vxJIvU0uB4AVKw/s1600/0_AZaB7fy1qAAVgN_i.png
由 Prerna Khanna 、Tanmay Srivastava 和 Kanishk Jeet 撰写的客座文章
像德里这样的特大城市会遭受空气污染,尤其是在冬季,我们也看到了诸如“
德里清晨寒冷,空气质量持续严重 ”这样的头条新闻出现在报纸首页。冬季的空气质量差会导致雾霾,雾霾会限制户外活动并引发健康问题。
使用移动设备估算 PM 2.5
作为工程专业的学生,我们努力将科技用于社会公益。解决空气污染问题的关键第一步是让公民能够衡量他们呼吸的空气质量。
这可以通过污染传感器来实现——虽然大规模部署可能很昂贵。我们的目标是设计一种可靠且廉价的空气质量估算解决方案,让任何拥有智能手机的人都能使用。
像
基于图像分析的颗粒物污染估算 这样的研究表明,机器学习可以有效地利用相机图像来估算空气质量,尽管以前的工作通常仅限于从少数静态相机获取的图像。
我们的目标是开发一个基于 Android 的移动应用程序,利用智能手机相机图像提供本地、实时的空气质量估算。来自
马可尼学会 的
Celestini 项目印度 激励了我们,并在德里理工学院提供了实习机会和开发项目的资源。
VIDEO
我们决定专注于预测空气质量中的“PM 2.5”,即直径小于 2.5 微米的颗粒物。为了可视化结果,我们预测 PM 2.5 值并将它们映射到颜色梯度上
空气质量指数 (AQI) 规模 。这是每个国家政府设定的标准尺度。然后根据 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 分割估算的。
天空的梯度: 现在天空可能由于云层覆盖而显得灰暗,因此为了考虑这种可能性,我们加入了此特征。梯度是通过创建天空区域的掩码,然后计算该区域的拉普拉斯算子来计算的。
熵、均方根对比度: 这些特征也告诉我们图像中包含的细节。如果是一个污染日,图像会失去细节。均方根对比度定义为图像像素强度的标准差。以下是均方根对比度的公式
其中 Iij 是大小为 M×N 的图像中 (i,j) 像素处的强度,avg(I) 是图像中所有像素的平均强度。因此,对比度与 PM 2.5 成反比。为了估计熵,使用了以下公式
其中 pi 是像素强度等于 i 的概率,M 是图像的最大强度。随着 PM 浓度的增加,图像会越来越失去细节,图像熵会降低。因此,它与 PM 2.5 成反比
湿度 :通过我们的研究,我们得出结论,在潮湿的日子里,污染水平会上升,因为 PM 2.5 会吸收水分并降低能见度。
天空线模型 最初,当应用程序发布时,人们很好奇他们是否能够使用它来预测他们房屋内外的 AQI。我们的模型能够预测图像是否包含至少 50% 的天空线,并通过使用二元分类器来接受天空线图像。
我们使用
迁移学习 创建了这个分类器,并在我们的标记数据集上使用
TensorFlow Hub 对模型进行了重新训练。该数据集包含两个类别:500 张包含 50% 天空线的图像和 540 张不包含天空线(或包含不到 50% 天空线)的图像。这包括房间、办公室、花园、室外场景等的图像。我们使用了
MobileNet 0.50 架构,在对 100 个看不见的样本进行测试时,实现了 95% 的准确率。
TF for Poets 在图像重新训练方面很有帮助。
重新训练后的模型的混淆矩阵如下
左:包含>50%天空线的图像。右:包含<50%天空线的图像
每个用户的自定义模型 我们意识到每个用户都需要一个自定义的 ML 模型,因为每部智能手机的相机规格都不同。为了训练这样的模型,我们从每个用户那里收集图像。
我们决定将来自两个模型的结果结合起来,一个基于图像的模型和一个使用气象参数的时序模型。使用气象参数的时序模型有助于提高推理准确率,并在基于图像的机器学习模型正在训练时为用户提供一些结果,而基于图像的机器学习模型则有助于我们针对特定用户定制模型;从而通过减少估计误差来提高推理准确率。
为了为每个用户创建一个小型训练数据集,会从 7 张图像中提取特征并用于训练。这些图像必须是连续 7 天的图像,其中一半覆盖天空,没有直接光源,例如太阳。从图像中提取特征后,它们被用于训练回归模型。该模型是线性的,因为所有图像特征或多或少地与 PM 2.5 值线性成比例。
创建训练数据集和模型后,将创建第二组用于测试的图像。一旦数据集拥有 7 天不同日期的图像特征,测试就开始了。如果 7 天不同日期的训练 RMSE 小于 5,则模型被冻结并发送到 ML Kit,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 模型托管在云端和设备上。我们遵循了这个
文档 。
未来的道路 我们打算在未来进行以下改进,以改进应用程序
生成夜间拍摄的照片结果。
将可达范围扩展到其他主要城市。
使模型在各种天气条件下更加健壮。
我们启动这个项目的目的是提高人们对污染严重程度的认识。我们希望随着时间的推移,我们都会被激励采取措施减少降低空气质量的活动。
最后,我们要感谢 Aakanksha Chowdhery 博士(谷歌)和 Brejesh Lall 教授(印度理工学院德里分校)在整个旅程中对我们的指导。我们感谢
马可尼学会 通过 Celestini 项目印度提供的财务和学习支持,为我们提供了一个绝佳的平台来制作这个应用程序的原型。没有他们的指导和支持,我们就无法完成它。
您可以通过访问我们的
网站 和
YouTube 上的演示视频来关注这个项目。该应用程序在 Play 商店中以
Air Cognizer 的名称提供。