点击我爱计算机视觉标星,更快获取CVML新技术


客座博文 / Harshita Diddee, Divyanshu Sharma, Shivani Jindal 与 Shivam Grover

保障用户数据的隐私对于机器学习至关重要。联邦学习 (Federated Learning) 的出现使得智能手机在共享所有预测数据的同时将所有训练数据保留在本地设备上,从而保护了用户隐私。我们应用这项技术来加持模型,让模型可以根据用户在智能手机拍摄的图像估算空气质量。

在印度德里,空气质量通常很差,而大多数居民已经对糟糕的空气质量指数(AQI)习以为常。我们面临的问题是:政府设立的空气质量指数(Air Quality Index, AQI)监测站的覆盖范围不到该市全部地区的 5%,这不足以使广大居民获得准确的实时空气质量估计。

为了解决这个问题,我们的方案是开发一款能够在廉价设备(比如手机)上运行的 AQI 估算应用,因此我们做出了 VisionAir 并以此参加了马可尼学会的印度 Celestini 计划。VisionAir 是一款 Android 应用程序,它以不会侵犯用户的隐私的方式,通过用户拍摄的图像来估计当地的 AQI。我们专门估计会对人体健康产生不利影响的空气颗粒物(PM 2.5)的值。在本文中,我们将介绍 VisionAir 项目的最新进展,包括我们利用联邦学习构建共享模型并开源新的数据集。

为了构建模型,我们制作并开源了一个大型的德里天空图像数据集,这些图像都是我们用手机拍摄收集的。先前的模型在使用图像分析估算空气质量(PM2.5)时并没有考虑用户的数据隐私(例如图像和地理标签位置)。相比之下,VisionAir 将模型部署在移动设备上进行推理和训练。VisionAir 通过使用 Java 的 Tensorflow API 实现了深度学习模型在 Android 设备上的训练。虽然在设备上进行训练可以保护隐私,但带来的局限是数据量的大幅减少,每个用户都只能在没有利用其他用户数据的情况下训练各自的模型。通过使用联邦学习 ,VisionAir 实现了在训练模型时利用来自多用户的众包输入持续改善模型性能,而不会损害任何用户的隐私。

深度学习模型

VisionAir 使用的神经网络将图像特征、气象数据和过去的 AQI 数据作为输入,以估计图像的PM 2.5。模型针对移动设备上的训练进行了优化,方法是仅将最相关的特征输入只有2个隐藏层的浅层神经网络中。用户拍摄的图像中的相关特征集包括雾度,对比度和从图像计算出的熵。有关详细信息,请参见我们的上一篇文章。

建立一个开源数据集

首先,我们需要采集数据,制作一个带有上述特征的图像数据集。为了更省力地在多个位置收集与时间相关的各种数据,我们构建了一个 Android 应用程序,该应用程序每5分钟自动捕获一次 HDR 和 非HDR 图像(请参阅此处的文档)。

带有相应标签的大型图像数据库:位置,拍摄时间以及与中央污染控制委员会(CPCB)的监测站的距离

我们的数据集捕获了大量的 HDR 图像,因为与非 HDR 图像相比,它们包含有关场景照明的更多信息,补偿了由于智能手机对图像的后处理而导致的信息丢失。这样模型就可以对多个智能手机拍摄的同一图像进行统一预测,甚至可以泛化到训练集未包含的手机机型。

VisionAir 数据集已经开源,您也可以在该领域进行进一步的研究。它由大约 4000 张非 HDR  和 1200 张 HDR 图像组成,并带有相应的图像特征:天气和时间数据。它还额外添加了其他气象参数,如:风速,风向,温度,湿度,降水,当日时刻。

为训练数据中的图像分配标签

根据拍摄图像的位置,将标签分配给图像的方式如下。如果在拍照位置半径1公里内有一个中央污染控制委员会(CPCB)的监测站,我们将使用 CPCB 监测站记录的 PM 2.5 AQI 读数作为该特定图像的标签。如果没有,我们将使用名为 AirVeda 的便携式精确传感器进行测量,传感器可为我们提供与该图像相对应的 PM 2.5 AQI 读数。在测量之前我们已经对 AirVeda 传感器进行了校准,校准方式是比对在同一天同一时刻同一位置的 CPCB 监测站读数和 AirVeda 传感器读数。

使用 TensorFlow 的 Java API 在设备上训练 VisionAir 模型

联邦学习维护模型的两个实例:在服务器上更新的全局模型和通过设备上训练更新的客户端模型。

全局模型

我们使用 TensorFlow 开发了 ML 模型以使用图像特征和 Python 中的其他气象参数来估计 AQI。该模型在 VisionAir 数据集中的 4000 张图像上进行了训练。我们导出了经过训练的模型的 Metagraph 和 Checkpoint 文件,并在 Android 应用程序中通过 Java API 使用该模型。元计算图文件包含模型体系结构,而检查点文件包含分配的权重。借助这两个文件,TensorFlow API for Java 中的 helper 函数能够在客户端设备上恢复模型的计算图。关于 VisionAir 设备端和联邦架构的代码详解,您可以参阅这里。

我们根据均方根误差(RMSE)衡量模型的性能,对 6 至 8 月在德里收集到的 2800 张训练图像和 700 张测试图像使用三个交叉验证集最终获得了无偏差结果。全局模型的 RMSE 为 9.05  ppm。根据印度 AQI 分类标准 ,6 月至 8 月的 AQI 典型范围为中等(101-200),这表明训练后模型输出的预测值可能与实际环境的真实值相差 9.05 ppm,这是可以接受的。我们将在其他月份收集更多的数据,以获得全年的数据分布。

客户端模型

全局模型会被推送到所有客户端设备上。我们使用 TensorFlow 的 Java API 在客户端设备上继续训练模型。用户在拍照评估当前空气质量时会带来新的数据,因此我们会在客户端设备上把模型训练几遍,然后把这些权重存为可用格式。每24小时,上述权重被发送到我们的联邦平均(Federated Averageing)服务器。该应用程序目前有大约100个用户。联邦平均算法的每次迭代,将上传 5 个客户端设备上权重文件至中间联邦平均服务器上。

VisionAir 中的联邦学习

在联邦学习中,客户端模型权重的改进会用于更新全局模型,从而提高了总体估计的准确度。

VisionAir 应用联邦学习

为了更新全局模型,我们使用本篇论文描述的算法对客户端设备模型的权重进行平均。因此,全局模型的新权重是多个客户端设备的平均贡献。结果是,全局模型的 AQI 预测能力能够适用于数据集未包含的新场景(新地点),并适应所有客户端设备观察到的共同模式(例如 AQI 的季节性变化)。

随后,将更新后的全局模型的 Checkpoint 文件作为新的客户端模型推送到客户端设备。我们不替换 Metagraph 文件,因为全局模型和客户端模型的体系结构保持不变。

使用联邦学习时注意调整超参数,以确保客户端模型的性能不低于全局模型。我们仍在通过调整 epoch,batch size 的大小以及在联合平均每次迭代的活跃用户数来改进模型性能。

联邦学习对于 VisionAir,一款提供隐私保护的 AQI 估计工具,具有重要意义。

致谢

我们感谢马可尼学会的印度 Celestini 计划,我们的导师 Aakanksha Chowdhery 博士(Google Brain)以及 Brejesh Lall 教授在印度技术学院的实验室提供的资金和支持 。

VisionAir 可在此处的 Google Play 商店中找到 。您可以访问我们的网站或博客,以随时了解我们正在进行的工作和结果。

如果您想详细了解 本文提及 的相关内容,请参阅以下文档。这些文档深入探讨了这篇文章中提及的许多主题:

  • 联邦学习
    https://ai.googleblog.com/2017/04/federated-learning-collaborative.html

  • VisionAir
    https://play.google.com/store/apps/details?id=com.airquality.VisionAir&hl=en&referrer=utm_source%3Dgoogle%26utm_medium%3Dorganic%26utm_term%3Dvisionair+app&pcampaignid=APPU_1_kgDWXbaoDcXjvgT_w5_wAw

  • 马可尼学会的印度 Celestini 计划
    http://marconisociety.org/celestini-program/

  • 空气颗粒物
    https://aidindia.org/airborne-particulate-matter-pm2-5-adverse-health-effects/

  • Java 的 Tensorflow API
    https://tensorflow.google.cn/install/lang_java

  • 联邦学习
    https://tensorflow.google.cn/federated/federated_learning

  • HDR
    https://www.learnopencv.com/high-dynamic-range-hdr-imaging-using-opencv-cpp-python/

  • 此处
    https://github.com/android/camera-samples/tree/master/HdrViewfinder

  • VisionAir 数据集
    https://vision-air.github.io/feature.html

  • 中央污染控制委员会
    http://moef.gov.in/about-the-ministry/organisations-institutions/boards/central-pollution-control-board/

  • AirVeda
    https://www.airveda.com/

  • 这里 / 博客
    https://medium.com/visionair/visionair-using-federated-learning-to-improve-model-performance-on-android-11c6c8014cf4

  • 印度 AQI 分类标准
    http://www.indiaenvironmentportal.org.in/files/file/Air%20Quality%20Index.pdf

  • 本篇论文
    https://arxiv.org/abs/1602.05629

  • 网站
    https://vision-air.github.io/


TF & PyTorch学习群

学习交流TensorFlow、PyTorch深度学习框架的使用,欢迎加入52CV-TF & PyTorch群,扫码添加CV君拉你入群,如已为CV君其他账号好友请直接私信,

(请务必注明:框架):

喜欢在QQ交流的童鞋可以加52CV官方QQ群:805388940。

(不会时时在线,如果没能及时通过还请见谅)


长按关注我爱计算机视觉

管天管地管空气!谷歌探索用CV估算空气质量相关推荐

  1. 数据探索(数据清洗)①—数据质量分析(对数据中的缺失值、异常值和一致性进行分析)

    Python介绍. Unix & Linux & Window & Mac 平台安装更新 Python3 及VSCode下Python环境配置配置 python基础知识及数据分 ...

  2. 谷歌YouTube算法团队:视频质量评价的集成池化方法

    点击我爱计算机视觉标星,更快获取CVML新技术 随着移动互联网的发展,视频成为信息消费越来越重要的形式(这从国内外的YouTube.抖音的发展可见一斑),而其中用户贡献内容(UGC)往往占很大比例. ...

  3. Pix2Seq:谷歌大脑提出 CV 任务统一接口!

    文 | 青豆 最近一个大趋势就是将各类任务统一在一个大一统框架下.大规模预训练语言模型已成功打通各类文本任务,使得不同的NLP任务上,都可以用这种统一的sequence生成框架作为基础模型,只需要通过 ...

  4. 读《探索需求-设计前的质量》有感三

    接下来是余下的两篇,在这两篇中,第四篇讲了明确期望,第五篇则讲了成功标准也就是对于成功的衡量标准. 在明确期望的工作中,我们多次运用了头脑风暴的方法,根据项目的内容列出我们所能想到的所有功能.属性. ...

  5. 还在呼吸致命空气?专业的斐讯空气检测仪,让你生活更健康!

    城市生活总是让人羡慕,殊不知背后付出的代价却是身体健康的不断消耗. 拥挤的交通.堵塞的人群,加班加点的工作,最可怕的还有成日的雾霾.雾霾,作为无形的健康杀手,一直潜伏在人们的身边,一遇到雾霾天人们就下 ...

  6. 谷歌AI一次注释了10%的已知蛋白质序列,超过人类十年研究成果

    来源:机器之心 本文约1800字,建议阅读5分钟 和 AlphaFold 不同,这次谷歌探索的是用深度学习给蛋白质打上功能标签. 蛋白质是组成人体一切细胞.组织的重要成分.机体所有重要的组成部分都需要 ...

  7. 谷歌如何利用人工智能重塑美国医疗行业?

    来源:网络大数据 谷歌正在押注未来医疗会变得数据结构化和人工智能化,它已经把 AI 运用到了疾病监测,新型数据基础设施和有潜力的保险等领域. 在这篇报告里,我们将探索谷歌医疗行业的众多布局和未来可能会 ...

  8. 谷歌发表“移动AR设计的最佳做法”

    本文英语原文由UX设计师 Alesha Unpingco 所作.52VR修正了原译文的翻译错误并作润饰编辑. 在过去数年中,许多人已经通过谷歌Cardboard.Daydream View,以及 Oc ...

  9. 基于主动学习和克里金插值的空气质量推测

    基于主动学习和克里金插值的空气质量推测 常慧娟, 於志文, 於志勇, 安琦, 郭斌 西北工业大学计算机学院,陕西 西安 710072 福州大学数学与计算机科学学院,福建 福州 350108    摘要 ...

最新文章

  1. matlab神经模糊推理系统
  2. 【深度学习】词的向量化表示
  3. gen文件下有两个R.java_gen目录无法更新,或者gen目录下的R.JAVA文件无法生成
  4. m3u:直播流的html接近下载
  5. 6 自定义控件之屏蔽控件的设计时属性
  6. Kdb+和Q语言使用-银行系统
  7. stm32f103c8t6单片机驱动台达伺服电机
  8. VMware虚拟机安装教程
  9. 基于AT89S52单片机的汽车LED尾灯控制器设计
  10. 国外全能免费主页空间
  11. apatch zipoutputstream 进行解压缩时提示:不可预料的压缩文件末端
  12. Excel 高级筛选实现多条件筛选数据
  13. ORACLE11g安装包及安装过程
  14. c语言报告对老师的致谢,论文致谢对老师的感谢-论文老师的致谢词怎么写?
  15. Hibiscus的脑机接口学习周报(2023/1/23~2023/1/29)
  16. 用Scheme打开网址方法
  17. Android 安卓实现Neumorphism(新拟物化)UI控件
  18. UltraEdit编辑器打开其他软件编辑文件时出现中文乱码的解决方法
  19. k2677场效应管参数引脚_场效应管参数
  20. 魔方网表CEO邵苏毅:无代码带来的一系列质变才是真正的革命

热门文章

  1. 在Service中发送广播被kill掉的Activity能不能收到?
  2. CentOs基础操作指令(运行级别)
  3. 设计模式学习笔记——原型(Prototype)框架
  4. go 语言ase ecb加密_Go技术日报(20201112)
  5. php前端路由权限,SaaS-前端权限控制
  6. 计算机应用基础基础系统,计算机应用基础试题库系统分析
  7. linux 6.4 能挂载最大多大硬盘,CentOS6.4的ext4文件系统如何实现挂载大于16TB的磁盘分区...
  8. python返回菜单_返回上一菜单
  9. 中兴上网卡 linux,电信3G无线上网卡中兴AC2726在Ubuntu 10.10安装使用成功
  10. Oracle 实验4 更新数据