赛题解读 | 如何基于 Flink + AI 解决疫情防控难题?
7月22日,万众瞩目的第二届 Apache Flink 极客挑战赛正式发布。在疫情防控的背景下,第二届 Flink 极客挑战赛要求参赛队伍利用大数据技术 + AI 算法技术来帮助解决防控遇到的挑战。为了能更好地让选手理解赛题以及提高成绩,本文主要从以下几个方面来对赛题进行解读:
赛题数据
赛题任务
赛题技术
赛题 demo 解析
赛题优化点
赛题评分指标
赛题数据
选手在本地会有四份数据集,分别是用于训练的历史行动数据集和标签数据集,以及用于评测的确诊病例数据集和实时行动数据集。
历史行动数据集代表在一片区域内的历史数据,包括有已确诊病例和未确诊数据,该数据集中可能有多条不同的数据都代表用例。
备注:该数据为模拟数据。
其格式为:
uuid |
face_id |
device_id |
feature_data |
1 |
face_id_1 |
device_id_1 |
1 2 3 4… |
2 |
face_id_2 |
device_id_2 |
2 3 4 5… |
… |
… |
… |
… |
n |
face_id_n |
device_id_n |
face_id_n |
其中每行包括 uuid,face_id,device_id 和 feature_data,分别代表自增 id,人脸 id,摄像头 id,和人脸特征向量。列之间以";"分隔,人脸特征向量中的元素之间以空格分割,维度为 512 维。
标签数据集反映了在历史行动数据集中,不同的 face_id 与其所属类别(人)之间的关系。
其格式为:
face_id |
p_id |
face_id_1 |
0 |
face_id_2 |
0 |
… |
… |
face_id_n |
n |
其中每行包括 face_id 和 p_id,face_id 可以在历史行动数据集中查到相应记录,p_id 代表该条 face_id 对应数据所属于的类别(人),列之间以";"分隔。
确诊病例数据集代表该小区住户中已经被确诊患病的病例,该数据集中可能有多条数据都代表同一个人,而且该数据集中的每个确诊病例住户在历史行动数据集中都出现过一次或者多次;
确诊病例数据集的格式为:
face_id |
feature_data |
face_id_1 |
1 2 3 4… |
face_id_2 |
2 3 4 5… |
… |
… |
face_id_n |
n1 n2 n3 n4… |
实时行动数据集代表小区中不同摄像头实时拍摄到的住户,该数据集中可能多条数据都代表同一个人,而且该数据集中出现的每一个人都在历史行动数据集中出现过一次或者多次;
实时行动数据集的格式为:
face_id |
device_id |
feature_data |
face_id_1 |
device_id_1 |
1 2 3 4… |
face_id_2 |
device_id_2 |
2 3 4 5… |
… |
… |
|
face_id_n |
device_id_n |
n1 n2 n3 n4… |
评测机上的数据集均存放在环境变量 ENV_HOME 的下级目录 data_set 中,可通过如下 Python 代码获取:
历史行动数据集:os["ENV_HOME"] + /data_set/training_data.csv
确诊病例数据集:os["ENV_HOME"] + /data_set/first_test_file.csv
实时数据集:存放在 Kafka 的 tianchi_read_example 的 topic 中。
选手在本地开发的时候,可以通过自行设置环境变量 ENV_HOME 进行调试。
赛题任务
选手需要完成的任务有两个,按顺序进行。
1.对确诊病例数据集中的每一条数据,选手需要从历史行动数据集中找出与该条数据同属于一个类(人)所对应的所有记录,并输出找到的每条记录对应的 face_id。
要求输出的 CSV 文件格式为:
face_id |
near_face_id |
face_id_1 |
face_id_1’ |
face_id_1 |
face_id_2’ |
face_id_1 |
face_id_3’ |
…... |
…... |
face_id_n |
face_id_n1’ |
face_id_n |
face_id_n2’ |
face_id_n |
face_id_n3’ |
如上图所示,假设 face_id_1 为确诊病例数据集中的某一条数据的 face_id,则face_id_1’,face_id_2’,face_id_3’为历史行动数据集中与 face_id_1 同属于一个类(人)的 face_id;列之间以”;”分隔。
要求在评测机上输出的文件路径为:
TASK_ID = os.environ["TASK_ID"]
os["ENV_HOME"] + /output/{}/first_result.csv.format(TASK_ID)
选手在本地开发的时候,可以通过自行设置环境变量 TASK_ID 进行调试。
2.对实时行动数据集的每一条数据,选手要判断该条数据的类别(人),并输出该条数据的 device_id 和类别。
要求输出的格式为:
face_id |
device_id |
p_id |
face_id_1 |
device_id_1 |
1 |
face_id_2 |
device_id_2 |
1 |
face_id_3 |
device_id_3 |
2 |
…... |
…... |
|
face_id_n |
device_id_n |
m |
如上图所示,face_id 和 device_id 为实时行动数据集中的数据,pid 为经过算法逻辑后判断该条数据所属的类别,要求选手从 Kafka 读取实时数据并输出到 Kafka 的 TIANCHI_WRITE_EXAMPLE topic 中。
赛题技术
在解题的时候,选手需要使用到的技术有 Cluster Serving,Proxima,Flink AI Flow。Cluster Serving 提供了模型预测的功能,相关文档请查阅:
https://github.com/Litchilitchy/analytics-zoo/blob/state/docs/docs/ClusterServingGuide/QuickStart_CN.md?spm=5176.12281978.0.0.239550c1i2aQVD&file=QuickStart_CN.md
Proxima 提供了向量快速检索的功能,有内置高性能的聚类算法,相关文档请查阅:
https://tianchi-competition.oss-cn-hangzhou.aliyuncs.com/531800/proxima-doc0814.pdf?spm=5176.12281978.0.0.239550c1i2aQVD&file=proxima-doc0814.pdf
Flink AI Flow 提供了实现端到端的工作流功能,相关 API 说明请查阅:
https://tianchi-competition.oss-cn-hangzhou.aliyuncs.com/531800/ai_flow/api.md?spm=5176.12281978.0.0.239550c1i2aQVD&file=api.md
大赛更多赛题解读及相关技术应用直播请见【Flink 大赛特辑】系列直播:
https://flink-learning.org.cn/developers/flink-training-course3/
赛题 demo 解析
本次赛题注重算法和工程的结合,解答赛题大概要经过以下几个阶段:模型训练,模型预测,构建索引,离线检索相似向量,在线检索相似向量并判定类别。
模型训练:训练数据集中的向量数据都是 512 维的,可以考虑对向量数据做一个降维映射,选出有用 feature,去除噪音 feature,提高后续相似度匹配的准确率。在 demo 里,在模型训练阶段,训练了一个 autoencoder 模型,用以将向量数据从 512 维提取成 128 维。
模型预测:为了最大化利用 Flink 处理数据的速度,demo 中设置了 100 个并行度进行模型的预测,并由此生成了 100 个预测结果文件。为了全量的构建索引,需将 100 个预测结果文件合并成一个文件进行索引文件的构建。
构建索引:基于合并后的预测结果文件,利用 proxima 构建索引,可以得到索引文件。
离线检索相似向量:利用 proxima 和构建好的索引文件可以快速检索确诊病例数据集中的每条数据的最相似的 k 个向量。在 demo 中,选取的 k 值为 20。
在线检索相似向量并判定类别:利用 proxima 和构建好的索引文件,基于实时行动数据集,选手要判断该数据集中每条数据所属的类别(人)。
赛题优化点
模型训练:业界存在较多的向量数据预处理方法,demo 中选取了 autoencoder 作为模型来进行数据预处理。选手可以考虑其他方法或者继续优化 autoencoder 来提高模型的性能。注意,这里的模型训练指的是非监督的模型训练,标签文件只提供了 20 个类别(人)的数据,实际上并不止 20 个类别,选手可以基于提供的标签文件来进行模型性能的检测。
离线检索相似向量:proxima 有多种内置的聚类算法和检索算法,也可以开发自定义的插件,选手可以结合不同场景更换聚类算法或者检索算法;此外,demo 中 k 的选值为 20,选手可以设定不同的 k 值并编写自己的逻辑来确定每条确诊病例数据的相似向量。
在线分类:同样,选手可以考虑不同的聚类算法和检索算法以及开发自定义的插件;demo 中在线分类逻辑里,选取的 k 值是 1。选手可以设置不同的 k 值,并且基于不同的 k 值重新编写在线分类的逻辑;此外,实效性也是考察的一个因素,选手在实现高质量的分类逻辑时,也要避免耗时的操作。
赛题评分指标
评测指标由两个部分组成。
对于第一个任务,我们会计算选手输出的每条确诊病例的相似 face_id 与真实的face_id 之间的相似度:
accuary =∑((common-num)/(user-answer-list) ⋅(common-num)/(real-answer-list))
假设有标准答案:
face_id;face_id1
face_id;face_id2
face_id;face_id3
face_id;face_id4
face_id;face_id5
face_id;face_id6
face_id;face_id7
face_id;face_id8
face_id;face_id9
face_id;face_id10
….
….
假设有选手答案:
face_id;face_id1’
face_id;face_id2’
face_id;face_id3’
face_id;face_id4’
face_id;face_id5’
….
….
假设同一个 face_id 下,选手答案中的 face_id2’= 标准答案中的 face_id2,face_id4’ = 标准答案中的 face_id4,则选手正确输出了 2 个答案,则对于该 face_id,分数为 = (2 / 10) * (2 / 5) = 0.08,最后会对所有的 face_id 做加权平均;
对于第二个任务,选手会输出 500 毫秒时间处理范围内每条实时数据对应的 device_id 和其所属类别,测评程序会将选手输出为同一个类别的数据组合在一起构建成同一个类别的组合,并与真实属于同一个类别进行对比。
以上是对此次 Apache Flink 极客挑战赛赛题突破与优化角度的分享,希望有助于解决大家在参赛过程中遇到的难题。更多大赛详情及报名请点击「阅读原文」,30W奖金等你们拿!
福利来了
Apache Flink 极客挑战赛
万众瞩目的第二届 Apache Flink 极客挑战赛来啦!本次大赛全面升级,重量级助阵嘉宾专业指导,强大的资源配置供你发挥创意,还有 30w 丰厚奖金等你带走~聚焦 Flink 与 AI 技术的应用实践,挑战疫情防控的世界级难题,你准备好了么?
(点击图片可了解更多大赛信息)
戳我报名!
赛题解读 | 如何基于 Flink + AI 解决疫情防控难题?相关推荐
- 基于SSM的校园疫情防控系统的设计与实现
word完整版可点击如下下载>>>>>>>> 基于SSM的校园疫情防控系统的设计与实现.rar_基于ssm的疫-互联网文档类资源-CSDN下载内容包括详 ...
- 基于Java毕业设计校园疫情防控管理系统源码+系统+mysql+lw文档+部署软件
基于Java毕业设计校园疫情防控管理系统源码+系统+mysql+lw文档+部署软件 基于Java毕业设计校园疫情防控管理系统源码+系统+mysql+lw文档+部署软件 本源码技术栈: 项目架构:B/S ...
- java计算机毕业设计基于vue框架的疫情防控知识在线答题系统设计与实现源程序+mysql+系统+lw文档+远程调试
java计算机毕业设计基于vue框架的疫情防控知识在线答题系统设计与实现源程序+mysql+系统+lw文档+远程调试 java计算机毕业设计基于vue框架的疫情防控知识在线答题系统设计与实现源程序+m ...
- Python基于百度OCR的疫情防控截图自动分析检查
通过腾讯文档收集人员信息,下载后,使用Python基于百度OCR对填报的疫情防控截图信息进行识别和统计分析,5分钟搞定每天人工1小时的检查工作量,提高效率,还提高准确率. 前言 疫情期间,各地.各单位 ...
- 计算机毕业设计之java+springboot基于vue的校园疫情防控系统
项目介绍 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息.为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代, ...
- 计算机毕业设计-基于SSM的校园疫情防控管理系统-JavaWeb校园疫情防控管理系统
项目介绍 核心功能点: 一:个人健康信息上报功能 用于汇报每日体温.健康状况.打卡所在地 二:学生健康档案 用于统一管理学生的健康信息,可及时增删改查 三: 出入校园申请 用于提交进出校园的申请,管理 ...
- 【原创】基于JavaWeb的社区疫情防控管理系统(疫情防控管理系统毕业设计)
项目介绍:后端采用Jsp+Servlet.前端使用的是Bootstrap的一个网站模板.开发一个在线的社区疫情防控管理系统.从角色的划分,包括用户.社管员.管理员.功能模块上包括了社区公告发布.高风险 ...
- 【计算机毕业设计】基于微信小程序的社区疫情防控系统
毕设帮助.源码交流.技术解答,联系方式见文末 小程序社区疫情防控系统的设计主要是对系统所要实现的功能进行详细考虑,确定所要实现的功能后进行界面的设计,在这中间还要考虑如何可以更好的将功能及页面进行很好 ...
- 基于微信小程序社区疫情防控系统
基于微信小程序社区疫情防控系统 小程序社区疫情防控系统的设计主要是对系统所要实现的功能进行详细考虑,确定所要实现的功能后进行界面的设计,在这中间还要考虑如何可以更好的将功能及页面进行很好的结合,方便用 ...
- 基于微信小程序社区疫情防控系统 uniapp
小程序社区疫情防控系统的设计主要是对系统所要实现的功能进行详细考虑,确定所要实现的功能后进行界面的设计,在这中间还要考虑如何可以更好的将功能及页面进行很好的结合,方便用户可以很容易明了的找到自己所需要 ...
最新文章
- nvm 解决nodejs无法全局/usr/bin/node问题
- Android PowerImageView实现,可以播放动画的强大ImageView
- 在Visual Studio 2005中安装Qt 4.3.2
- iapp启动图代码_代码神器:拒绝重复编码,这款IDEA插件了解一下.....
- java excel导出(基于注解)
- MapReduce如何使用多路输出
- 学习 Qt 编程的好书推荐
- 最好用的切图工具——firework
- 计算机硬盘型号怎么看,硬盘编号怎么看
- 糗百网站服务器正在升级中,网站紧急升级中
- 纳米机器人驱动技术提速十万倍
- 【FinE】期权定价的二叉树方法(1)
- js 删除QQ空间的说说
- 林燕妮: 一见杨过误终生
- 三款新品重磅齐发!汉高亮相2021中国国际纺织面料及辅料(秋冬)博览会
- Human Pose Estimation姿态估计调研
- 2021年度训练联盟热身训练赛第一场 A.Weird Flecks, But OK (最小覆盖圆)
- 广告点击流量实时统计
- android mp4 to gif,mp4转gif的android手机软件
- 熵编码算法Range encoding工程原理和实现
热门文章
- css改火狐滚动条样式_自定义滚动条,可解决火狐滚动条默认样式修改不了问题...
- 论文笔记_S2D.38_2018-CVPR_DORN_用于单目深度估计的深度有序回归网络
- 计算机视觉中,目前有哪些经典的目标跟踪算法?
- 即插即用 | 超越CBAM,全新注意力机制,GAM不计成本提高精度(附Pytorch实现)...
- CVPR2021目标检测和语义分割论文分类汇总 | 源码 |
- 单线程+异步协程的简单爬虫模型
- Ehcache 3.7文档—基础篇—XML Configuration
- 生产者与消费者 代码实现 java
- FreeBSD下面安装PostgreSQL。
- HDU 1429--胜利大逃亡(续)【BFS amp;amp; 状态压缩】