1
雷锋网按:本文为雷锋字幕组编译的技术博客,原标题Releasing “Supervisely Person” dataset for teaching machines to segment humans,作者为Supervise.ly。
翻译 | 郭乃峤 汪宁 张虎 整理 | 凡江 吴璇
我们非常自豪地在这里宣布,Supervisely人像数据集正式发布。它是公开的并且免费,仅出于学术的目的。
要让AI全民共享, 我们不仅需要开源,还要一场强有力的“开放数据”运动。——吴恩达
我们当然同意他的看法,并让我们扩展一下这个想法。对于语义分割的人物,有很多深层神经网络的研究。但是,大多数情况下,收集数据要比开发和应用算法去运行数据更困难和昂贵。
这就是为什么我们需要专门设计的平台,这个平台可以覆盖全部的机器学习的工作流,从开发训练数据集到训练和部署神经网络。
几个例子来自"Supervisely人像数据集"
我们认为,我们的工作将会帮助开发者、研究者和商人们。为了更快地创建大型训练数据集,我们的工作不仅可以看作一个公开的数据集,而且可以被视为一套创新的方法和工具。
接下来,我们将介绍关于如何从头建立这个数据集,让我来展示一些有趣的事实:
数据集由5711张图片组成,有6884个高质量的标注的人体实例。
下面的所有步骤在Supervisely内部完成的,没有任何编码。
更重要的是,这些步骤是被我内部的注释器执行的,没有任何机器学习专业知识。数据科学家仅仅只是控制和管理这过程。
注释组由两名成员组成并且这整个过程只花了4天。
Supervisely 是包含数据科学的智慧机器学习平台。它允许数据科学家专注于真正的创新,并将日常工作留给其他人(是的,训练众所周知的神经网络架构也是一项常规工作)。
要解决的问题
在许多真实世界的应用中,人像检测是分析人类图像中的关键任务,在动作识别、自动驾驶汽车、视频监控、移动应用等方面均有使用。
我们在DeepSystems公司进行了内部研究,这让我们意识到人体检测任务缺乏数据。你会问我们:那COCO、Pascal、Mapillary 等公共数据集呢?为了回答这个问题,我会更好地向你展示几个例子:
几个来自COCO数据集的人类标注示例
大多数公共数据集中人体检测数据的质量不符合我们的要求,我们必须创建自己的数据集,并提供高质量的注释,我会告诉你我们是如何做到的。
步骤0:将公共数据集上传和准备,作为初始点来训练初始神经网络
将公共数据集上传到系统:PascalVoc,Mapillary。我们的“导入”模块支持大多数公共数据集,并将它们转换为统一的基于json-based的格式,称为Supervisely格式 :)
我们执行DTL(“数据转换语言”)查询以执行一些操作:合并数据集 - >跳过没有人物的图像 - >从图像裁剪每个人 - >按宽度和高度过滤它们 - >分割为训练/测试集。
合并,裁剪和过滤公共数据集后的原始数据
似乎有很多公开可用的数据,但我们在前面提到过,存在一些隐藏的问题:注释质量低,分辨率低等等。
因此,我们构建了第一个训练数据集。
步骤1:训练神经网络
我们将对 UNet-like 架构进行稍微定制
Unet_v2架构
损失= 二进制损失熵+(1 -随机数)。
该网络训练速度快,它非常准确,易于实施和定制。它允许我们进行大量的实验。Supervisely可以分布在集群中的多个节点上。
因此我们可以同时训练几个神经网络。同样所有的神经网络都支持我们平台上的多GPU训练。每个训练试验的输入分辨率为256 * 256,且都不超过15分钟。
步骤2:准备数据进行注释
我们没有收集未标记的图像,所以我们决定从网上下载它。我们在github上实现了这个项目,从而可以从优秀的照片库中下载数据 ,由Pexels完成(感谢他,这真的很酷的工作)。
因此,我们下载了大约15k的图片,其中包含与我们的任务相关的标签,并将其上传到Supervisely并通过DTL查询执行调整大小操作,因为它们具有超高分辨率。
步骤3:将神经网络应用于未标记的图像
过去的架构不支持实例分段。 因此我们没有使用Mask-RCNN,因为靠近物体边缘的分割质量很低。
这就是为什么我们决定做两步计划:应用Faster-RCNN(基于NasNet)来检测图像上的所有人,然后为每个人定界框应用分割网络来分割支配对象。 这种方法保证我们既模拟实例分割又准确地分割对象边缘。
应用模型和手动修正检测的3分钟视频
我们尝试了不同的分辨率:我们传递给NN的分辨率越高,它产生的结果就越好。 我们并不关心总推理时间,因为Supervisely支持分布在多台机器上的推理。 对于自动预标注任务来说,这已经足够了。
步骤4:手动验证和纠错
所有推断结果都会实时显示在仪表板中。 我们的操作员预览所有结果并使用几个标签标记图像:不良预测、预测纠正、良好预测。 这个过程是快速的,因为他们需要很少的键盘快捷键“下一个图像”和“分配标签图像”。
我们如何标记图像:左 - 不良预测,中 - 预测需要轻度手动校正,右 - 好预测。
标记为“不良预测”的图像被跳过。 进一步的工作继续是处理我们需要纠正的图像。
如何校正神经网络预测
手动校正所需的时间比从头开始的注释少得多。
步骤5:将结果添加到训练数据集并转到第1步
完成!
一些提示:
当我们应用仅对公共数据进行训练的NN时,“合适”图像(标记为“良好预测”和“预测正确”)的百分比约为20%。
经过树型快速迭代后,这个数字增加到70%。我们总共完成了6次迭代,最终的NN变得相当准确:-)
在训练之前,我们在物体边缘添加了小波段以平滑锯齿状边缘并执行多种增强:翻转,随机裁剪,随机角度旋转和颜色转换。正如您所看到的,即使您需要在图像上注释多个对象类,这种方法也适用于许多计算机视觉任务。
奖励
这个数据集帮助我们改进AI支持的注释工具 - 定制化的用它来检测人类。 在我们的最新版本中,我们添加了在系统内部训练NN的能力。 以下是基于类别的工具与其定制版本的比较。 它是可用的,你可以试试你的数据。
如何访问数据集
注册Supervisely,进入“Import” tab -> “Datasets library”。 点击“Supervisely Person”数据集,为新项目编写名称。 然后点击“three dots”按钮 - >“下载为json格式” - >“Start”按钮。 就这样, 总下载时间可能需要15分钟(~ 7 GB)。
如何下载结果
结论
看看没有任何ML背景的人如何完成所有这些步骤是非常有趣的。 我们作为深度学习专家节省了大量时间,我们的注释团队在注释速度和质量方面变得更加高效。
我们希望,Supervisely平台将帮助每个深度学习团队更快更轻松地制作AI产品。
让我列出我们在这项工作中使用的最有价值的Supervisely功能:
1. “Import”模块可以上传所有公共数据集
2. “Data Transformation Language”来操作,合并和增强数据集
3.“ NN”模块使用Faster-RCNN和UnetV2
3. “Statistics”模块自动从我们拥有的数据中获得有用的见解
4. “Annotation”就像Photoshop一样用于训练数据“协作”功能,允许将工作人员与注释团队相结合,为他们分配任务并控制整个过程。
雷锋网相关推荐 雷锋网
雷锋字幕组正在招募中
扫描下方二维码
备注“雷锋字幕组+姓名”加入我们吧
雷峰网原创文章,未经授权禁止转载。详情见转载须知。