导航菜单

科沃斯机器人:AI扫地场景携手TensorFlow,共探室内场景

背景随着互联网在现代社会的迅速发展,人们的时间变得越来越宝贵。从经济学的机会成本角度来看,我们所做的每一件事都意味着放弃做其他事情的成本在增加。作为家用机器人的领导者,Cobos一直致力于给现代人一种新的生活方式,让用户花更少的时间清洁和享受智能生活。以清扫机器人行业为例,虽然清扫技术目前相对成熟,但其性能在某些情况下仍会受到批评,如推鞋、被电线、抹布等低物体卡住。因此,用户需要执行“预清洁”(手动整理房间、归还鞋子和抹布、整理电线等)。)在清扫清扫器之前。我们的目标是通过视觉识别这些目标,将人们从“预清洁”中解放出来。

我们的识别目标主要是充电座、垃圾桶、鞋子、软布、地毯等类别。在算法开发过程中,我们遇到了以下影响性能的棘手问题:数据缺乏、室内环境复杂、待检测目标形状不同、多为柔性目标和小目标、国内大规模生产芯片计算能力有限,这使得我们很难使用传统的机器视觉方法通过提取特征进行鲁棒检测,因此我们决定采用深度神经网络模型。我们的团队开发了一个基于张量流的物体检测模型。本文将介绍我们的开发过程以及如何将该模型应用于实际产品。

目前,市场上有许多深入的学习框架。我们选择TensorFlow来开发我们的模型。我们选择它有以下两个原因:

1。这是一个主流的成熟框架,论坛和社区非常活跃,许多流行的模型架构和运营商已经实现,这将大大缩短开发时间;此外,当发展遇到困难时,在互联网上更容易找到解决办法。

2。使用张量流开发的模型着陆产品非常方便。

我们将从数据和模型两个方面解释我们的开发过程。

一个熟练的女人没有米饭是无法烹饪的。大量有效的数据总是深入学习的最有价值的资源。在所有时间和地点收集数据已经贯穿了我们的整个项目。

一个熟练的女人没有米饭是无法烹饪的。大量有效的数据总是深入学习的最有价值的资源。在所有时间和地点收集数据已经贯穿了我们的整个项目。

由于清扫机器人主要在地面工作,视角独特,很难从互联网上找到公共数据集,所以我们从清扫机器人的角度手动收集了大量家庭环境数据。数据主要来自中国东部、南部、北部以及一些欧美地区。

当然,不同时期收集的数据也不同。例如,白天和晚上的数据有很大差异,这主要反映在环境光上。白天,可以收集过度曝光和斜射太阳光造成的背光等极端数据,而晚上,光线分布更加均匀,弱光图像更多。此外,由于季节和地理位置的不同,收集的数据也会有所不同,这主要反映了家庭环境和鞋类安排的差异。

收集数据后,标记数据时也应注意,这与一般公共数据集:

1的标记略有不同。由于室内地面透视,目标被异常遮挡和截断,所以遮挡和未标记目标的比例应慎重选择。此外,当标记时,柔性目标和非柔性目标应该被不同地对待,例如,柔性目标,例如电线等,当被截断时将变成多个目标。

2。由于芯片计算能力的限制,开发的轻量级模型需要兼顾精度和速度。当我们使用mAP来评估模型的效果时,我们将数据分为必须识别的目标和不能识别的目标。大多数必须识别的目标是远程目标。即使模型没有被识别,它也不会对机器产生很大的影响。因此,我们的模型只需要确定必要的目标,并尝试与非必要的目标兼容。这样,我们可以测量模型满足实际应用场景需求的极限能力,这对我们压缩模型的大小有很大的帮助。

图1:各种类型的数据分布

图1显示了我们数据类型的分布。从图中可以看出,鞋子占了

数据增强在模型开发中一直扮演着重要的角色。在对象检测应用编程接口中,有一个python文件[2],它实现了许多数据增强方法,还有一个相应的protobuf文件[3],它定义了每个方法的超级参数。为了便于调试,我们开发了一个可视化工具。图2显示了该工具的工作界面。开发人员加载图片、注释数据和经过训练的管道. config三个文件后,工作界面将被激活,工具将根据管道. config中的配置初始化数据增强功能,开发人员可以通过左上角的操作员列表选择所需的功能,相应的超级参数将在下面的参数表中详细显示。开发人员也可以拉动滚动条来调整超级参数的值,或者直接设置目标值,经过一系列调整后也可以直接恢复到默认值。预览效果将以类似幻灯片放映的方式呈现。当播放键运行时,该工具将持续生成渲染,并将它们临时保存在历史列表中,以便随时跳回。数据增强方法和参数可以在预览过程中实时调整。完成数据增强配置后,只需单击一下即可轻松导出修改后的pipeline.config文件。

图2:数据增强配置工具

我们还为我们的场景实现了一些数据增强方法。例如,适当调整色调会给我们的数据带来巨大的收益。我们可以模拟各种颜色的地板和地毯。然而,在现实世界中,有些东西通常只有一种颜色。如果你匆忙改变他们的色调,会产生相反的效果。因此,我们需要根据图片中对象的类型来执行不同的色调调整操作。

在对象检测任务中,无论是单相还是多相检测器,锚框都会出现在许多体系结构中。在开发过程中,我们根据不同对象的像素大小及其在特征图上的大小,根据有效感受野原理,设计了一个轻量级主干网络和检测模型,并利用多层特征图检测不同大小的对象。其中,针对不同的对象类别定制特定的锚帧,以获得更多的阳性样本,从而确保数据能够得到充分有效的训练。在锚杆框架的设计中,有许多优化方案来选择锚杆框架的尺寸和比例。本文采用[4],聚类方法,遗传算法[5]设计锚框架。调谐后,它不仅确保在训练阶段每个锚帧匹配有更多的平均正样本,而且将锚帧的数量减少到原始数量的三分之一,而不影响精度。图3和图4示出了锚帧优化前后每个帧匹配的对象的平均数量。在小目标(尺度50)和大目标(尺度250)中,优化前锚帧的匹配数量非常少,而优化后小目标和大目标的匹配数量明显增加。

图3:锚帧优化前的平均匹配数

图4:锚帧优化前的平均匹配数

整个模型构建过程是使用对象检测应用编程接口框架完成的,所以开发速度相对较快。模型开发完成后,我们继续使用对象检测应用编程接口进行模型训练。试验证明,锚架的设计在我们的试验任务中起着关键作用。此外,为了提高小目标的召回率,我们发现特征融合非常有用,所以我们融合了后特征图和前特征图的特征。实验表明,这改进了两点映射。

训练后的模型效果如图5和图6所示。

图5:模型影响演示

图6:模型在一定程度上不能识别高于地面的物体

最后,模型在训练后以pb格式保存。为了将模型导入到产品中,我们需要使用张量流精简库进行模型转换。Tensorflow Lite库主要针对Cpu端的加速计算(最新版本支持移动端Gpu)。与TensorFlow相比,它有三个优点:

1。重量轻。TF Lite可以生成非常小的链接库,这对嵌入式产品来说是致命的。

2。硬件加速是可能的。一些手机可以通过硬件加速

这里我们参考官方指南,首先将pb模型分为三个部分:预处理、中间部分和后处理。预处理主要负责图像预处理,包括尺寸归一化,中间部分主要是有线电视新闻网相关层,后处理负责优化检测结果输出,包括NMS等。其中,对于中间部分,我们使用Tensorflow Lite将其转换为Lite格式,这样整个模型就可以在清扫机器人的芯片上进行Cpu推理。然后我们尝试使用芯片上空闲的小Gpu将一些操作移植到Gpu上。这里我们用Opencl实现,最终冲击速度提高了30%。然后,在后处理中,我们为不同类型的目标设置了不同的NMS IOU阈值,例如,线的IOU阈值被设计得更大,以增加线的输出帧数并进一步提高召回率。

慢慢地,一个家庭智能伙伴诞生了。

Summary

以物体检测为例,介绍了Cobos是如何利用张量流、物体检测应用编程接口和张量流精简版(Tensorflow Lite)开发出业界首款人工智能视觉推理清扫机器人的。

以后,我们将继续探索人工智能在家用机器人中的应用,并将新技术点不断应用到产品中,让我们的用户能够享受到技术带来的便利。

科技让生活更美好~

文章转载自tensorflow微信公众号

作者:鲍亮,曹琦

Cobos机器人智能控制中心