【云+社区年度征文】AI算法落地之数据链

2020-12-14 17:25:46 浏览数 (1)

前言

机器学习之初,可以在各种开源数据集玩各种模型、玩各种参数,机器学习工程被称为“炼丹”。那时候,数据是规则,目标是明确,世界是如此简单和令人振奋。虽然也有一些杂音划耳而过,“机器学习算法的90%都是数据处理”,“数据清洗”、“数据增广”……直到自己进行AI算法解决实际工程问题,原来恩达老师讲的都是真的——算法工程的大部分实践都和数据“大泥巴”搅合在一起,数据要对齐、样本不平衡、数据标定等等。

笔者1年左右时间完成2个模型,算法开发满打满算1个月,大部分时间花在解决数据采集问题,其次数据标定上。在采集数据上,客串了部分的老本行嵌入式开发,Android开发、数据库设计。这篇文章希望能加强下AI算法实践中数据的重要性,对实践中的数据链构建有系统性的预见;如果在工程之初看到这方面文章,应该会顺畅很多。大部分工具链是笔者手搓的,有参考一些google数据pipeline思想,但是最大的不同点是:不像NLP等热点领域,数据集是现成的,笔者所面临问题域是AI的西部荒漠,需要自己定义数据,采集数据...当然由于大部分是笔者自己想当然的实现,一定不是最优的方案,如果有更好、或者其他相当的方案,请告知。

AI算法应用开发数据链

开门见山,先给个当前的数据链的系统框图,如下:

image.pngimage.png

数据流

模型开发的流程:

① 耳标嵌入式、采集APP、数据采集后台共同配合,完成数据采集,将数据保存到数据平台;

② 标定平台读取数据平台的采集数据,根据视频信息标注acc数据记录,回写标注数据到数据平台;

③ 算法平台读取标注数据,进行数据分析、样本抽取、数据集构建、模型设计&训练,完成模型开发。

模型验证的流程:

  1. 在原始采集数据记录上,运行开发的模型,将算法模型推断结果以合适的形式回写数据平台(使用TFList-Micro框架,其计算过程和嵌入式部署的计算过程完全一致);
  2. 数据标定平台可以读取标定值、算法结果统合显示,直观的方式显示算法效果,配合视频播放,主要用来说服老板;
  3. 模型转换为C语言实现、或者用tflite-micro框架到处tflite模型文件放入嵌入式实现,算法结果可以直观的有Android APP屏幕得到直观的反馈。
  • 备注:原始采集数据我称为“记录”,经过等长时序等转换为“样本”,详见我的另外一个技术博客。

主要模块/组件

主要构成从图中可以清晰了解:

1 嵌入式方面:

需要有采集、模型验证的开关接口,基于命令响应的。

2 Android APP:

同理需要配合嵌入式有采集、模型验证接口。

3 数据平台:

分为采集数据后台,数据展示后台,以数据库的数据存储为核心;数据采集后台和Android APP通信,接受采集的数据;数据展示后台相应数据标定前台数据接口。

4 数据标定,展示:

基于web访问的数据标注,需要实现视频的按帧播放和视频、acc数据的多标签标注功能;数据展示需要能接受多通道数据来源,多模式数据展示格式。

5 模型开发

数据分析、数据处理的工具链;生成用于训练的中间数据集。

主要难点

数据采集工具

最大的问题是时间对齐:最大的遗憾是未能推断基于蓝牙的类似NTP的时间同步(实在抽不出时间来自己实现),现在采集的数据和视频时间估计有1秒左右的差别,对与当前应用是合格的,但是技术上应该可以达到ms级别的误差。

其次是采集效率,未能推动自动化采集方案(泛用摄像头和嵌入式设备的时间同步基础上进行数据的连续采集);用手机进行数据采集效率太低:一需要人到现场,人手限制;二,有人在旁边,牲畜表现不自然,很难采集一些姿态;三,限于手机性能,每次智能采集4分钟(这里面应该可以提升),为了上传方面,画质也不好。没有做到技术允许的极致,颇为遗憾。

数据标定

需要人工标注,枯燥乏味;理想的是应该用算法预标注,然后人工调整;基于web的标注也响应有些迟钝,没有优化上传数据的时机。

其次,没有对标注格式统一的思考,扩展性不够。

结语

机器学习领域应用拓荒,自定义数据格式、采集工具,构建领域的数据链是需要的。笔者见识不广,如果有泛用的采集工具链、框架可以提高效率,还望告知。

0 人点赞