cgx0 2019-01-09
提到视觉搜索 Visual Search,也许你会和图片搜索联想在一起,但其实视觉搜索比图片搜索的搜索边界更宽。静态图片受广角限制、镜头主体选择的局限性、拍摄模糊等问题影响,相比视频将过滤掉很多有价值的信息。
因此,视觉搜索不停留于图片搜索,它需要包含对移动视频场景的动态搜索,对用户识别主体相关信息的主动反馈。
视觉搜索应用也因为人们的需要而呈爆发增长:
(摘自:中国社会科学网《国内主流移动视觉搜索工具的比较研究》)
2017 年下半年,百度确定了 Lens 技术研发方向和思路,用了半年进行核心模型和算法的攻坚验证。
2018 年 3 月份,启动百度 Lens 技术在简单搜索 APP、百度 APP 中百度识图(相机)入口落地的计划。经过不断的技术优化,目前新版本在基础实时交互技术和通用认知形态两个维度达到稳定阶段。
AI 发展到现在,视觉搜索已经能适用于各种场景,如:儿童认知,辨认动植物;扫汽车了解型号价格;吃饭时看菜品热量等等。集众多功能于一身,百度识图已经实现了对超过 300+ 分类的物品识别。
另外值得一提的还有众多 APP 都喜欢的热点场景,如 AR 实时翻译:
作为 K12 教育赛道的明星产品功能:拍照搜题。【百度 app 上的多题识别目前还在小范围推广中,没有覆盖全部用户,可以在搜索浏览器的百度识图入口内体验】
还有商品搜索,改变消费者发现产品和信息方式。国内有阿里和京东的搜图找同款。今年 5 月,Google Lens 宣布推出服装款式视觉搜索系统 Style Match。7 月,Snapchat 和亚马逊强强联合,推出视觉搜索功能,扫一扫即可在亚马逊购买相关商品。而据报道,2018 年 Pinterest 视觉搜索增长 140%。
在集成了 Lens 技术的百度识图最新版本中,人工介入程度很少,不需要人工按下拍照按钮,物体在毫秒内就能被主动检测到。同时 Lens 技术反馈物体的相关信息到画面中,实现边浏览边得到反馈的实时视频化搜索体验。
有了 lens 技术之后,移动场景的浏览式识别体验会像下面这样:
https://v.qq.com/x/page/b08185vqkdj.html
让视觉搜索走近我们的一个重要因素是交互体验。
手机最初的交互是通过按击键盘,间接操控屏幕上的文本信息。iphone 问世后,屏幕上的多点触控技术的突破,将人机交互升级为直接操控屏幕信息,更为重要的是可以操控图片,从文本到图片的信息载体升级使得人机交互出现很多新的可能。多点触控的阶段虽然拓展了人机交互的维度,但依然以超控应用或网页内虚拟内容为主,对人们眼前的真实世界却无法碰触。我们希望,更进一步,让人们的眼睛和手指,透过 5 寸的屏幕,延伸到眼前的大千世界,从人和手机屏幕上虚拟图片的交互升级为人和身边世界的交互。
依赖手机摄像头硬件升级、手机端侧本地计算能力加强,和 AI 模型和算法的效果攻坚,百度 Lens 技术实现了人和世界物体进行信息交换的第一步,更多的操控可能将以此为基础被不断探索成为现实,并让人们的生活方式进入一个新时代。
新发布的百度识图,百毫秒内可视化反馈给用户检测到的画面内物体位置和所属分类,准确率均在 90% 以上。百度 Lens 技术由纯 C++ 实现的跨平台运行库,核心库大小仅几百 KB,几乎可以嵌入任何支持深度学习模型运行的终端平台,例如智能硬件、一些智能摄像头、无人驾驶汽车等等。对于未来,视觉专家设想的是,智能设备不会只在我们的口袋里,而是会出现在更多更便携的终端设备中。
集成 Lens 技术的视觉搜索工具 - 百度识图在视觉 AI 领域的里程碑意义在于:
1. 从行为层面,它将深度强化人眼视觉理解能力,改变人类认知事物的习惯并为未来的智能眼镜奠定坚持基础。借助 Lens 技术真正实现边走边看,不间断浏览,同时 Lens 依托百度大脑,为每个实物提供精准、深度的信息介绍。
2. 从技术层面,它首次实现了类人眼的对实时视频流数据的感知和认知能力。百度 Lens 技术可以嵌入到 Android/IOS 系统部署,在移动端和智能硬件中运行。以此为基础,实时和离线、通用和定制的视频流信号处理上的效率将不断提升,真正实现“看完”即处理完成。
终极目标是突破人眼视觉极限。
技术难点
为了突破人眼视觉极限,需要解决哪些核心的技术问题呢?
问题 1:基于深度学习的检测模型既要运行的快又要效果好,同时需要从性能强劲的云端服务器迁移到小小的终端手机上运行。常规的检测模型,为了保证较好的检测效果往往采用复杂的模型部署在云端计算,速度相对较慢且易受网速影响。而为了较快的响度速度,但手机的计算性能和云端服务器相差 10 倍以上,在移动端只能部署相对简单的模型(例如人脸检测 MTCNN 模型每阶段只有 3~4 层卷积),用来完成特定类别物体的检测,例如只检测人脸。此外,我们在研究中观察到,检测模型的分类分支更多的作用是辅助检测框的计算,而自身的输出准确性和置信度却往往比较低甚至不可用,这将导致无法对物体完成分类。
技术突破:构建紧凑卷积骨干网络,结合定制优化的 YoLo 检测网络结构,构成轻量级移动端检测模型。同时模型运行在百度自研的移动端深度学习预测框架 Paddle-mobile 上,作为百度深度学习平台 PaddlePaddle 组织下的项目,致力于嵌入式平台的深度学习预测,针对嵌入式手机等平台的计算芯片做了大量优化,目前支持 ios,android,linux-arm,fpga 等平台的编译和部署,服务于百度内外众多 APP 产品。为保证检测效果,融合了 ImageNet、CoCo、VOC 等 8 种开源数据集和自建数据,在千万级标注框训练数据上,按照不同标注质量分多个阶段迭代 finetune 模型。同时,针对 Proposal 分类分支效果不佳的问题,为 Proposal 分类增加了独立的分类网络结果。
采用独立分类网络的移动端单帧通用物体检测模型
最终,实现覆盖百余种类别通用物体的检测,速度领先行业同类技术近 20 倍,检测召回率超出 30%。
问题 2:基于深度学习的物体检测模型,对图像画面上微小变化十分敏感,连续图像的检测结果稳定性极差,包括物体状态变化(时有时无)、物体尺度变化(时大时小)、物体位置变化(时左时右)。该问题在学术领域的研究较少,2016 年首篇定义视频检测稳定性指标的论文出现,但有效解决该问题并能在移动端高效运行的方法,在我们可查的范围内尚未发现。而造成该问题的根本原因是以卷积神经网络(CNN)为基础的 AI 方法天然存在的,如果没有新的学习方法出现,仅依靠当前 CNN 网络几乎无法根本解决。
在图像上物体的微小平移、尺度、姿态变换,都导致 CNN 输出变化剧烈
同时,这个问题带来的后续问题却十分严重,在普通用户产品上,会导致动画标记在画面内物体上时隐时现,画面变得杂乱,用户无法获得连续稳定的体验而弃用产品。在特殊场景例如无人驾驶汽车上,车辆前方行人检测状态的变化,很可能导致误判前方无人而加速行驶,最终导致车祸。
技术突破:我们提出了一种移动端基于视觉跟踪的连续帧多目标检测方法专利,有效的解决了该问题。在连续帧数据上,将代表物体检测稳定性指标的帧错误率从 16.7% 降低到 2%,大幅度提升了检测结果的稳定性。
基于视觉跟踪的连续帧多目标检测方法
连续帧检测稳定性优化前后效果对比(左 - 优化前,右 - 优化后)
问题 3:在手机静止或移动过程中,为使人眼感觉反馈信息是“真的“静止放置在对应物体上,需要保证反馈信息和物体的相对位置变化,始终保持在肉眼可分辨的范围内,一般偏差在 3~5 个像素内,一旦超出这个值,人眼会明显感觉反馈信息是虚拟渲染在手机屏幕上,而非真实放置在物体上。传统的视觉目标跟踪算法,通常关注的核心问题是跟踪成功率,即移动中跟踪算法得到的框位置和真实物体位置的重叠面积是否在指定阈值之上,若小于则认为跟踪失败已经丢失物体位置。相关研究也主要集中在复杂、目标被遮挡的场景中,如何保证较高的跟踪成功率。在跟踪成功的情况下,会关注跟踪偏移情况,但仅作为跟踪算法性能的衡量指标之一,而不是必须严格解决的问题。因此传统的经典跟踪算法例如 CF 系列算法,都不能满足我们的场景需求。
技术突破:采用 SLAM(Simultaneous Localization and Mapping)技术解决跟踪位置偏移问题。SLAM 技术主要用来解决一个机器人在未知的环境中移动,如何通过对环境的观测确定自身的运动轨迹,同时构建出环境三维地图。迁移到手机摄像头场景中,希望能够通过有限的手机移动后,定位手机在环境中的位姿,同时基于构建出的环境三维地图,将虚拟信息放置在指定的 3D 坐标上,最终实现对物体的极小偏移误差下的跟踪。在 SLAM 的具体实现上,我们采用 VIO(Visual Inertial odometry)方案,并对 VIO 在环境构建中特征点的筛选结合物体检测 BoundingBox 进行了优化,精简了后端优化的过程,减少计算量的同时,也解决了 VIO 在优化过程中过滤特征点导致特征点不稳定的情况。同时,考虑到手机摄像头的场景更多是开放空间,不同于机器人运动的封闭场景存在回环,因此也精简了 Loop Detection 和 Global Optimization 部分。最终保证极小跟踪位置偏移条件下,跟踪性能达到 100FPS。
问题 4: 人眼会对视野内的物体先产生初步通用认知,例如左前方有辆汽车。当注意力集中到特定汽车时,再由具体认知识别是宝马 320 或者奔驰 C200。生活中的大部分物体都停留在初步通用认知阶段,而不会进入到具体认知阶段。因此,技术实现上需要在具体认知前,先实现初步的通用认知阶段,即通用物体粗分类。该过程需要在移动端运行保证低延时响应的同时,效果上能以较高准确率覆盖常见的物体。然而,通用的物体分类有两个核心难题,首先世界万物种类繁多层出不穷,新事物也在不断产生,几乎无法用一套有限的类别集合完全覆盖表示;其次,即使在某个单一类别中,例如毛绒玩具,从手掌大小到与人齐高,从八爪鱼到小熊,形态差异极大,深度学习模型在学习中很难取得较高的分类准确率。同时,物体粗分类同样面临检测模型的稳定性问题,即肉眼感觉变化不大的两张图像中的物体,粗分类结果却差异很大。
技术突破:针对类别覆盖问题,我们几乎覆盖了常见的开源数据集包括 ImageNet、Open Image 等等,整理了涵盖办公、家庭生活、商场、超市、户外园区和街道等主要生活场景的 300+ 类别,包含千万级物体局部图数据。为了缓解识别稳定性问题,通过人工拍摄收集了几千段手机拍摄视频,对视频中连续图像进行人工标注。解决类内形态差异大的问题,采用多层 Loss+Center Loss 尽可能提升模型对类内预测的效果。最终实现分类准确率 90% 以上,远超行业同类技术效果,同时性能上移动端计算仅需几十 ms。
问题 5:人眼在接收到视觉信号后,由大脑完美的调度控制发现、跟踪和认知环节实现无缝衔接。在 Lens 技术实现时如何模拟大脑一样自然的调度机制是决定整体效果是否足够自然高效的关键问题。
技术突破:在技术实现上,Lens 技术考虑了非常多的因素,包括用户注意力判断、注意力集中时的选帧算法、跟踪和检测算法的调度切换策略。
注意力判断我们提出了一种依靠 IMU 和视觉特征的方法解决。手机端 IMU 传感器测量单元误差较大,只用来判断剧烈加速运动。精细的注意力判断依赖连续视觉画面计算的位移和尺度变化特征。
触发检测时的第一帧图像质量直接决定物体发现的效果,往往受到光照、清晰度、物体位置等噪声影响而变差。通过采集模拟用户注意力从变化到稳定场景,并依靠人工标注构建最佳帧训练数据集,通过 CNN 模型拟合人工标注的过程,选取最佳帧输入到后续计算过程。
为了节省计算量,调度算法会实时的根据跟踪算法的状态、注意力判断策略的输出,及时调整连续帧检测模型的计算。
通过这些精细的组合调度算法,百度 Lens 的耗电量控制在 2%/10min 以内,满足移动端部署对能耗的要求。
最终,物体的发现感知、连续跟踪、粗粒度语义理解,以及根据用户行为和视觉场景动态组合和调度以上模型的 multi-task planning 算法,整体构成感知计算模块,可以支持在 IOS、Android 以及服务器等多种平台部署。
未来从交互方式上,百度识图会在当前视觉信号的基础上,融入语音和文本信号,真正实现多模态的人机交互,用更自然更符合人类习惯的方式提升交互效率。
在部署载体上,除了手机,将继续攻坚在 IOT 系统中摄像头和可穿戴设备上的深度学习预测框架、计算速度、计算功耗等难题;并依托 5G 与边缘计算,进一步提升速度体验,拓广模型识别能力,让类人眼能力在生活中无处不在。
在应用场景上,也将不断探索新的垂直场景下的深度满足,并结合记忆能力,打造全球最好的视觉助理,例如基于实景文字识别的办公和生活视觉助理等。同时,也将探索新的视觉娱乐边界,甚至是基于实景视觉的游戏,一起皆有可能。
另外,百度表示会将已经成熟的 AI 能力不断赋能内、外部产品,同时,也将开放基础的百度 Lens 技术赋能给开发者,一起搭建开放的技术和产品生态。
(文章版权归极客邦科技 InfoQ 所有,未经许可不得转载。)