Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

Prerna Khanna Tanmay Srivastava Kanishk Jeet作者高璇 淑婷参与

造福社会工科生:如何用机器学习打造空气检测APP?

大城市的空气污染早已不稀奇,「立霾」都被调侃为一个节气。为提高大家对空气污染的意识,提高环境保护的觉悟,来自印度的几个小哥哥利用机器学习设计了一款 APP 来检测空气质量。

像德里这样的大城市可能会遭受空气污染,尤其在冬季。如「清晨寒冷的德里,空气质量依然很糟糕」这样的标题常会出现在报纸头条。冬季空气质量差会导致雾霾产生,这会限制市民的户外活动,诱发健康问题。

使用手机评估 PM 2.5

作为工科生,我们努力用科技造福社会。解决空气污染问题的关键第一步是让市民能够自己监测空气质量。

这可以通过污染传感器实现,但是大规模部署该传感器成本高昂。我们的目标是设计一个可靠、价格公道的空气质量评估解决方案,让每个人可以直接用智能手机实现。

《Particle Pollution Estimation Based on Image Analysis》等研究表明,通过使用相机图像,可以有效地利用机器学习来评估空气质量,尽管以前的研究通常局限于静态相机的图像。

我们的目标是开发基于 Android 的移动应用程序,利用智能手机相机图像提供本地的实时空气质量评估。来自 Marconi Society 的 Celestini Project India 给了我们很大的启发,并为我们提供了在德里印度理工学院(IIT Delhi)实习的机会,以及开发所需的资源。

应用程序运行 demo

我们研究的重点是用「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。每当新用户使用该 APP 时,都会为其创建一个唯一的 ID。这可以用于以后为不同地理位置的用户定制机器学习模型。

  • Amazon EC2。我们使用这些参数和来自地理位置的 PM 值训练当前模型。

  • ML Kit。训练好的模型被托管至 ML Kit 上,并自动加载到设备上,然后使用 TensorFlow Lite 运行。

两个模型

下面将介绍关于如何分析图像以预测 AQI 的更多细节。我们训练了两个基于图像的机器学习模型来构建应用程序:第一个模型根据用户上传照片的特征预测 AQI,第二个模型过滤掉不包含天空区域的图像。

AQI 模型

我们利用以下特征根据用户照片预测 AQI。这些特征通过传统的图像处理技术提取,然后由线性模型结合。第二个模型(稍后讨论)直接处理图像,这在深度学习中很常见。

传输:描述场景衰减和经过空气粒子反射后进入手机摄像头的光量。公式如下:

其中 I 是观察到的模糊图像,t 是从场景到相机的传输,J 是场景亮度,A 是 airlight 颜色矢量。

利用暗通道的概念发现了单个模糊图像的传输,暗通道假设所有室外图像中至少有一个颜色通道存在为零或极低的像素。对于无雾图像 J,暗通道是:

其中 Jc 是 J 的颜色通道之一,Ω(x) 是集中在 x 附近的局部图像块。利用天空或最亮区域可以估计出 airlight,所以可以得到传输:

其中 Ic(y)/A 是由 airlight A 归一化的模糊图像,右边第二项是归一化模糊图像的暗通道。

天空蓝度:此特征有点类似于我们观察天空来判断污染。如果天空是灰色的,我们认为今天空气质量差。蓝度估计利用 RGB 分割来估算。

天空梯度:天空可能因云层覆盖而呈现灰色,因此考虑到这种可能性,我们加入该项特征。通过制作天空区域的掩模来计算梯度,然后计算该区域的拉普拉斯算子。

熵,RMS 对比度:这些特征告诉我们图像中包含的细节。如果有空气污染,图像会丢失细节。RMS 对比度被定义为图像像素强度的标准差。RMS 对比度的等式如下:

式中,Iij 是大小为 MxN 的图像像素 (i,j) 处的强度,avg(I) 是图像所有像素的平均强度。因此,对比度和 PM 2.5 成反比关系。可使用以下公式估算熵:

其中 pi 是像素强度等于 i 的概率,M 是图像的最大强度。随着 PM 浓度增加,图像逐渐失去其细节,并且图像熵降低。因此,它与 PM 2.5 成反比关系。

湿度:通过研究可知,空气越潮湿,污染程度越高,因为 PM 2.5 会吸收水分并降低能见度。

Skyline 模型

最开始发布应用程序时,人们好奇它是否能够用来预测室内外的 AQI。我们的模型能够预测图像是否包含至少 50%的天空区域,并且通过二元分类器接受超过 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 浓度,各种气体的浓度,如二氧化氮、二氧化硫、臭氧和露点。然后将数据分开进行训练和测试。我们使用 2015 年 1 月至 2017 年 1 月的数据进行训练。使用 2017 年 1 月至 2017 年 6 月的数据进行测试。我们在数据集上的准确率达到了 90%。

折线图表示 21 天内 3 个模型给出的 RMS 误差值

以下代码有助于我们在 Android 上使用 TFLite。下一个挑战是为每个用户托管基于自适应图像创建的模型。为了解决这个问题,我们通过 Firebase ML Kit 找到了一个有趣的解决方案。它允许自定义和自适应的 ML 模型托管在云端和设备上。

代码地址:https://codelabs.developers.google.com/codelabs/tensorflow-for-poets-2-tflite/#0

展望未来

我们打算在未来对此应用进行以下改进:

  • 生成夜间拍摄照片的结果。

  • 扩展到其它城市。

  • 使模型在各种天气条件下都具有鲁棒性。

  • 我们开展这个项目的目的是提高人们对污染的意识。我们希望随着时间的推移,大家都能积极采取措施,共同提高空气质量。

  • Air Cognizer 应用程序可以从 Play 商店中搜索获得。 


原文链接:https://medium.com/tensorflow/air-cognizer-predicting-air-quality-with-tensorflow-lite-942466b3d02e

工程TensorFlow Lite应用空气质量检测迁移学习
3
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

混淆矩阵技术

混淆矩阵也称误差矩阵,是表示精度评价的一种标准格式,用n行n列的矩阵形式来表示。具体评价指标有总体精度、制图精度、用户精度等,这些精度指标从不同的侧面反映了图像分类的精度。在人工智能中,混淆矩阵(confusion matrix)是可视化工具,特别用于监督学习,在无监督学习一般叫做匹配矩阵。矩阵的每一行表示预测类中的实例,而每一列表示实际类中的实例(反之亦然)。 这个名字源于这样一个事实,即很容易看出系统是否混淆了两个类。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

TensorFlow技术

TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google 相册和搜索,其中许多产品曾使用过其前任软件DistBelief。

准确率技术

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

映射技术

映射指的是具有某种特殊结构的函数,或泛指类函数思想的范畴论中的态射。 逻辑和图论中也有一些不太常规的用法。其数学定义为:两个非空集合A与B间存在着对应关系f,而且对于A中的每一个元素x,B中总有有唯一的一个元素y与它对应,就这种对应为从A到B的映射,记作f:A→B。其中,y称为元素x在映射f下的象,记作:y=f(x)。x称为y关于映射f的原象*。*集合A中所有元素的象的集合称为映射f的值域,记作f(A)。同样的,在机器学习中,映射就是输入与输出之间的对应关系。

迁移学习技术

迁移学习是一种机器学习方法,就是把为任务 A 开发的模型作为初始点,重新使用在为任务 B 开发模型的过程中。迁移学习是通过从已学习的相关任务中转移知识来改进学习的新任务,虽然大多数机器学习算法都是为了解决单个任务而设计的,但是促进迁移学习的算法的开发是机器学习社区持续关注的话题。 迁移学习对人类来说很常见,例如,我们可能会发现学习识别苹果可能有助于识别梨,或者学习弹奏电子琴可能有助于学习钢琴。

图像处理技术

图像处理是指对图像进行分析、加工和处理,使其满足视觉、心理或其他要求的技术。 图像处理是信号处理在图像领域上的一个应用。 目前大多数的图像均是以数字形式存储,因而图像处理很多情况下指数字图像处理。

MobileNets技术

MobileNet是专用于移动和嵌入式视觉应用的卷积神经网络,是基于一个流线型的架构,它使用深度可分离的卷积来构建轻量级的深层神经网络。通过引入两个简单的全局超参数,MobileNet在延迟度和准确度之间有效地进行平衡。MobileNets在广泛的应用场景中有效,包括物体检测、细粒度分类、人脸属性和大规模地理定位。

暂无评论
暂无评论~