1.为啥会开发这个工具?
a) 当数据每天增加,采用文件夹的方式去管理越来越麻烦,数据团队与算法团队在数据沟通上花费的时间比较多,需要一个标准化的,可标注,训练,评估,测试的数据管理工具。
b) 算法产品在初期的时候,其效果由于数据量的问题,其准确率达不到理想情况。而需要数据的迭代产生比较大的效果
c)各个模型的横向比较,以及该模型优化的纵向比较。(包括准确率,显存占用,运行速度等)
d)新的图像识别产品的快速迭代(用现有的算法模型),目前是一个图像识别分析需求爆发的节点,各种各样的零星的小需求都会比较多,如何快速低成本地通过现有的公司的算法库,出一个简单实用的demo版本试用。
e)算法人员的成本相对高,希望其专注于算法模块的提升,降低其在其他方面的时间开销
f)整体算法产品效果评估的自动化。
2.整个工具希望达到的效果:
a)规范化图像算法开发落地
b)积累并沉淀算法团队的核心竞争力(结构化的数据以及可快速训练落地的模型库)
c)减少算法开发落地整个流程中不必要的时间开销。
3.工具的结构
整个分为3块内容,数据管理工具,算法库,算法产品化(形成SDK或者识别引擎)。

3.1数据管理工具:
功能:数据模块,算法模型的训练,算法产品的评估。
3.1.1数据模块:
数据模块主要有数据模板(主要确定该数据任务需要标注的内容),数据的存储,数据的标注(包括人工的标注以及识别引擎的自动标注)。
数据模块主要分为几个内容,1.数据模板管理,2.数据集,3.数据任务管理
3.1.1.1数据模板:
提供标注的格式,即该数据标注之后的结果形态 如下图所示


3.1.1.2数据集:
所有的原始数据(未标注过的数据)
里面分为数据集,数据组,数据单元。
数据集为统一功能的数据。例如卡口图片数据
数据组为不同地方,不同时间的数据,是数据集下的子集。例如杭州市10月11日卡口数据。
数据单元为每张图片,或者一段视频等。

3.1.1.3数据任务管理:
所有的数据结果。
其主要分为数据任务集以及数据任务还有数据结果。
数据任务集主要是确定该数据任务集的标注内容,是统一标注格式下的数据。
数据任务是任务集的子内容,是具体的一批数据的标注。
数据结果是最终的单张图片的结果

3.1.1.4标注:
人工标注,检查的界面


3.1.2数据训练:
我们采用以具体的实际功能作为主分类训练集,为了比较各个算法在同一个数据下面的优劣,我们做了训练组来区分不同的数据下作为子分类,将每一次训练作为单独的训练任务。
每次单独的训练任务采用jenkins的方式调用挑选的算法库的算法,生成训练模型并计算指标并将训练日志等相关内容打包到ftp作为记录。
3.1.3评测
针对已有的算法产品,使用数据集中的测试数据进行评估,形成评估报告。
3.2算法库
每个算法模块其是单独的某块功能,比如图像检测,识别,分类。
3.3算法产品化
将训练好的模型转换,优化形成配置文件,与识别引擎框架或者SDK的包组合形成可发布的版本。
其在不同平台上其优化的方式不一样,比如在Android平台浮点定点化,ncnn框架,在Linux平台下,tensorRT的优化。
4.整个图像算法工作流(可快速迭代):
a)根据需求新建数据模板(需要得到的图像分析结果)
b)创建项目对应的数据集
c)创建项目对应的任务集
d)现有的训练数据导入到数据集以及任务集中并生成相应的数据组以及任务
e)拆分算法模块
f)新建训练任务
g)挑选相对优秀的算法模型,整合成服务。
h)使用评估模块对于整体服务进行评估。
5.写在后面
目前这个工作流我了解了一下,其实好多大公司都有这个内容了,但很多都是不对外的。而我希望这个东西在年底的时候能够正式推出来,至少给很多小创业企业带来一点便利。
说一下我对于这个工具的希冀,我希望这个东西不仅仅只是工具,希望其能够慢慢成长为一个平台,数据算法交流交换的一个平台。
写在最后,目前上述的流程还没有完全完善,仅仅有数据管理以及数据训练,算法库的一小块内容,后面的评估以及算法产品化目前还没有完成,但是整个内容初步已经有个雏形了。在今天的日子还是感谢一下小武同学前段时间跟我一起慢慢折腾出这个半成品。
网友评论