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

2019 年 4 月 10 日 谷歌开发者

文 / 鲍亮、曹麒,科沃斯机器人智能控制中心



背景

科沃斯作为国内家用机器人领导者,一直致力于为用户打造美好生活,让用户耗费更少的时间进行清洁工作。以扫地机器人行业为例,目前技术虽然已经相对成熟,但在某些情况下表现依然会让人诟病,比如推着鞋子到处跑,被电线、抹布等低矮物体卡死,因此在扫地机清扫前用户需先进行 “预清扫”(人工把鞋子、抹布归位,收拾好电线等),而我们则希望 通过视觉识别并规避这些障碍物,把人从 “预清扫” 中解放出来,提高用户体验


我们的识别目标物主要是充电座、垃圾桶、鞋子、柔性布类、地毯等,在开发过程中遇到了以下几个难点:数据缺乏、室内环境复杂、目标物形态各异而且柔性目标与小目标居多、家用量产芯片算力受限,这导致了很难用传统的机器视觉方法靠提特征来进行鲁棒地检测,因此决定采用深度神经网络。


团队基于 TensorFlow 开发了一款物体检测模型,目前有很多种深度学习框架,选择 TensorFlow 的原因如下:

  1. 它是一款主流成熟框架,文档资源丰富,论坛和社区活跃,开发者众多。

  2. TensorFlow 有一款工具 Object Detection API [1],里面实现了很多经典的物体检测和分割模型,利用它开发新模型很方便。

  3. TensorFlow 模型易于产品落地, TensorFlow Lite 让移动端部署变得方便快捷。


本文将大致介绍模型的开发过程,以及如何将模型应用到扫地机中。



数据采集

大量有效数据是进行深度学习最宝贵的资源。由于扫地机在地面工作,视角独特,很难从网上找到可用的公开数据集,因此我们首先人工采集了大量扫地机视角的家庭环境数据。不同时间地点采集的数据各不相同。比如,白天可以采集到阳光斜射造成的过曝、逆光等数据,而晚上则暗光图像更多,另外随着地理位置变化家庭环境的布置也差异很大。


图一:各个种类的数据分布


上图展示了数据分布情况,鞋子占了很大一部分,这也是目前识别精度比较高的类别。



数据增强

模型开发中数据增强非常重要,比如适当调整图像 Hue 值可以模拟各种颜色的地板、地毯等,让数据集成倍增加。 在 Object Detection API 中, 有一个 python 文件 [2] ,已经实现了很多数据增强方法,也可以根据需求自己实现新方法,还有一个对应的 protobuf 文件 [3] 定义了每种方法的超参数。为了调试方便团队开发了一款可视化工具,可以选择不同的数据增强函数,调整超参数并预览效果。


图二:数据增强可视化工具



网络设计

在物体检测任务中,无论是单阶段还是多阶段检测器,锚点框设计出现在了很多架构中。在开发过程中,我们依据不同物体的像素尺寸及其在 Feature Map 上的大小,按照有效感受野原则,设计了轻量级的特征提取网络及检测分支,利用多层 Feature Map 来检测不同尺度的物体。其中,为不同的类别定制化设计了特定的锚点框以匹配更多的正样本,从而保证了数据能够被充分有效训练。在锚点框的设计上,目前有很多方案来优化锚点框的尺寸和比例,YOLO 论文 [4] 运用了聚类的方法,我们选择用遗传算法 [5] 。优化后,不仅保证了每个锚点框匹配的平均正样本更多,而且锚点框的数量减少为原来的三分之一。图三、图四展示了锚点框优化前后平均每个框匹配到各类别物体的数量,优化前的锚点框在小目标(scale<50)和大目标(scale>250)的匹配数量非常少,而优化后小目标和大目标的匹配数量有明显的提升。


图三:锚点框优化前的平均匹配数量

图四:锚点框优化后的平均匹配数量

在 Loss 函数的设计上,参照 Focal Loss [6] 对不同的锚点框进行加权,相比原版只对 easy/hard example 进行加权,我们还加入了位置加权,让模型更关注学习近距离目标的特征,保证近距离目标的识别精度。


整个网络的设计和模型的训练都利用 Object Detection API 框架完成。训练完毕后,经过测试证明锚点框的设计对检测任务起到了非常关键的作用。另外,为了提高小目标的召回率,我们将后面的 Feature map 与前面 Feature map 进行了特征融合,模型精度又提高了 2%。


图五:模型效果演示


图六:模型不识别高于地面一定程度的物体



模型移植

最后,训练完成后模型被保存为 pb 格式,为了导入到扫地机中,需要利用 TensorFlow Lite 库进行模型转化。TensorFlow Lite 库主要是针对 CPU 端加速计算的(最新版已支持移动端 GPU),相比于 TensorFlow 它有三个优势:

  • 轻量级。TF Lite 能够生成很小的链接库,这对于嵌入式产品有着致命的诱惑力

  • 可硬件加速。有些手机可以通过 NNAPI( Android Neural Networks API )进行硬件加速

  • 依赖库少,跨平台方便,模型可以进一步精简


参照官方指导,将 pb 模型分解为前处理、中间部分、后处理三块,前处理主要负责图片的预处理包括尺寸归一化等,中间部分主要是 CNN 相关的操作,后处理则负责检测结果的输出优化包括 NMS 等。对于中间部分,先利用 TensorFlow Lite 转化为 Lite 格式,这样整个模型就可以利用 Lite 库在芯片 CPU 上进行推理加速了,然后我们尝试利用上了芯片上闲置的小型 GPU,用 OpenCL 将部分运算移植到 GPU 上进行,推理速度又提高了 30%,这样终于可以满足扫地机场景的最低延时要求了。后处理中,对于不同种类的目标物,设置不同的 NMS IoU 阈值,比如电线类的 IoU 阈值设计得大一点,以提高电线类的输出框个数,进一步提高召回率。


识别到目标后,再经过单目测算距离,扫地机就可以聪明地躲开这些障碍物了。慢慢的,一个家庭智能小伙伴诞生了。



总结

本文以物体检测为例,介绍了科沃斯如何利用 TensorFlow、Object Detection API 以及 TensorFlow Lite 来开发行业内首款 AI 视觉推理扫地机器人。


后续,我们会继续探究人工智能在家用机器人中的运用,不断将新的技术点应用到产品中,让我们的用户尽情享受科技带来的便利。


科技,让生活更美好~



参考文献

[1] https://github.com/tensorflow/models/tree/master/research/object_detection

[2] https://github.com/tensorflow/models/blob/master/research/object_detection/core/preprocessor.py (accessed at 19th Mar 2019)

[3] https://github.com/tensorflow/models/blob/master/research/object_detection/protos/preprocessor.proto (accessed at 19th Mar 2019)

[4] Redmon J., (2016), YOLO9000: Better, Faster, Stronger

[5] Sastry K., Goldberg D. and Kendall G., (n.d.), GENETIC ALGORITHMS

[6] Tsung-Yi Lin, Priya Goyal, Ross Girshick, Kaiming He, Piotr Dollár,Focal Loss for Dense Object Detection



更多 AI 相关阅读:



登录查看更多
0

相关内容

科沃斯家庭服务机器人专业智造者,创造了地面清洁机器人地宝、自动擦窗机器人窗宝、空气净化机器人沁宝、机器人管家亲宝,专业从事家庭服务机器人的研发、设计、制造和销售。
【天津大学】风格线条画生成技术综述
专知会员服务
31+阅读 · 2020年4月26日
TensorFlow Lite指南实战《TensorFlow Lite A primer》,附48页PPT
专知会员服务
69+阅读 · 2020年1月17日
KGCN:使用TensorFlow进行知识图谱的机器学习
专知会员服务
81+阅读 · 2020年1月13日
【斯坦福&Google】面向机器人的机器学习,63页PPT
专知会员服务
24+阅读 · 2019年11月19日
官方解读:TensorFlow 2.0 新的功能特性
云头条
3+阅读 · 2019年1月23日
TF Boys必看!一文搞懂TensorFlow 2.0新架构!
引力空间站
18+阅读 · 2019年1月16日
大伽「趣」说AI:腾讯云在多个场景中的AI落地实践
人工智能头条
4+阅读 · 2018年8月1日
教程 | 如何使用TensorFlow实现音频分类任务
机器之心
5+阅读 · 2017年12月16日
PyTorch vs. TensorFlow之一个月用户体验
深度学习世界
3+阅读 · 2017年10月21日
Arxiv
6+阅读 · 2020年2月15日
Arxiv
14+阅读 · 2020年1月27日
Arxiv
7+阅读 · 2018年4月24日
VIP会员
相关资讯
官方解读:TensorFlow 2.0 新的功能特性
云头条
3+阅读 · 2019年1月23日
TF Boys必看!一文搞懂TensorFlow 2.0新架构!
引力空间站
18+阅读 · 2019年1月16日
大伽「趣」说AI:腾讯云在多个场景中的AI落地实践
人工智能头条
4+阅读 · 2018年8月1日
教程 | 如何使用TensorFlow实现音频分类任务
机器之心
5+阅读 · 2017年12月16日
PyTorch vs. TensorFlow之一个月用户体验
深度学习世界
3+阅读 · 2017年10月21日
Top
微信扫码咨询专知VIP会员