详解 Amazon Go 三大核心技术
12月5日,亚马逊发布 Amazon Go 震惊业界,我们第一时间研究了专利文件,并采访资深计算机视觉算法工程师,最终出文从2份专利文件,一窥Amazon Go到底藏了什么黑科技?
今天特地采访了无人零售商店创业者陈维龙为大家更加详细地解读 Amazon Go 以及无人零售商店项目。陈维龙毕业于中山大学,曾亲自参与并实施过多套类似的无人零售解决方案系统,对整个项目的流程化体系有着较深的认知和实践经验。
Amazon Go 系统构成
陈维龙把 Amazon Go 系统“拆分”为三部分:人/货架/进出口。其中硬件软件构成如下表:
布局如下图所示:
货架墙壁上安装多个摄像头,多种传感器埋在每层货架的底部或顶部。摄像头负责拍照,光幕/红外传感器负责制造一个水平面,如果用户的手穿过此面表示用户开始实施某种动作,提高图像分析效率。压力/红外传感器用来表示商品的位置和状态,为用户的行为提供数据。
利用这些数据进行深度学习,建立商品—动作—人的判别模型,提高系统反作弊/识别能力。
Amazon Go 的核心技术是什么?
陈维龙透露,其实 Amazon Go 的核心技术是反作弊/识别系统,不管它能提供多强大的商业功能,作为无人超市系统,反作弊/识别是它存在的第一要素。
在现有超市,通过便衣巡逻和监控摄像头识别顾客行为是否合法,例如是放在购物袋/车还是放在衣服里,将用户的行为规范到指定的范围,最后通过收银员识别商品和顾客的对应关系,成功解决了谁对什么商品干了什么,从而达成交易。
其中人防和机防是反作弊系统,负责解释顾客行为,从而保证商品与顾客的关系,而收银员负责确认商品和顾客关系。在 Amazon Go 中,系统也要解决谁对什么商品干了什么的问题。
接下来的内容分为大三块,详解 Amazon Go 是如何做的。
一、如何检测和识别顾客的行为:拿走或放回?
陈维龙指出,顾客购物行为非常丰富,从货架的角度来看,核心动作只有拿走或放回两种。
不论如何,商品被从货架拿走了,最大的可能就是被买走了,而被放回来就是你不需要了。如果能识别拿走或放回,那么就解决了核心问题。根据 Amazon Go 专利显示,它是这样做的:
• 采集用户的手进入货架平面前的图像。
• 采集用户的手离开货架平面后的图像。
• 两者对比,可以知道是拿出货物还是放入货物。
如果是拿起,进入前的手和进入后的手及手中的物品等特征是可区分的,这个特征与放入是相反的。简单说,如果是拿起,进入之前手是空的,没有商品的,离开后是手里有物品的。放入则相反。那么如何识别手呢?从形状和图片颜色(肤色)可以辨别。在货架前利用光幕或者红外形成一个平面,就可以知道用户的手到了那里。
除了图片分析,传感器也可以提供这样的数据。多种数据结合,可判断用户行为是拿走还是放回。
二、如何准确识别出被拿走的物品和被放回的物品?
我们知道,有了顾客动作,还要识别动作承受的商品,不然会出现张冠李戴的现象。陈维龙继续解释到,这部分分成两个步骤来处理:识别被拿走的物品和识别放回的物品。
识别被拿走的物品
• 因为物品是被雇员人工放置的,所以该物品可以直接标记到系统中,因此不用图像识别是何种物品(它已经被人工识别了)。用传感器表示它被拿走即可。
• 在某些情况下,商品可能没有被提起设置或者设置后被混乱了,那么此时需要图像识别该位置现有的商品与应该有的商品是否一致。例如,物品 A 被放在 B 物品处,如果只有上面提到的那种方式处理,就会被当成物品 B,不过这种情况较少。
• 如果是高置信度事件,可直接确认,更新(增加)物品清单,否则还有顾客协作确认的环节。
识别被放回的物品
• 在放回物品前,可以通过物品清单确定用户与物品的关系,这些物品的图片被储存在系统内。
• 检索图片,与被放回物品进行比较,识别物品。
• 高置信度即可判断物品正确,更新(删除)物品清单,否则还有顾客协作确认的环节。
• 被放回的物品会存在错放位置的情况,识别后通知雇员整理。
• 不管是拿走还是放回,如果是低置信度事件,会被系统记录分析。
对于正常的购物,在固定区域的商品种类单一,容易识别。对于被错放的物品,因为概率较少识别难度和计算量不会显著增加。但是对于故意作弊的行为,需要极大的计算资源识别。这个问题后面讨论。
三、对某商品进行了某动作的人是谁?
根据资料显示,Amazon Go 在进出口设置了“转移区”,类似现有超市的防盗门,此门可扫描用户二维码识别进出口的顾客。陈维龙解释到,这里问题的关键是 Amazon Go 需要实时识别“对某商品进行了某动作的人是谁”。
从问题可以发现,解决这个问题的关键还是要在货架上入手,因为任何人对商品实施动作的时候必须在货架前。关于这部分细节,Amazon Go 专利给出的解释是利用用户位置信息定位进行识别。
例如,张三站在货架 A 前,此时 A 货架商品被取走,那么就认定张三购买了商品。这里存在很大的隐患是张冠李戴问题,因为仅通过位置定位顾客,只要在此区域的用户都可能被当成购买者,从而形成商品和顾客一对多的关系。如果这个位置定位区域限制在足够小的区域,就能实现一一对应关系。
Amazon Go 使用的图像分析和音频分析。通过摄像头可检测用户及其方位,天花板或货架里的多个音频可根据时差分析用户位置。此外,天花板上的天线可用三角测量确定位置,用户手机 GPS 也能提供定位。
关于室内定位或拥挤区域定位问题,一般的定位技术是无法解决的。目前国外有 GPS 定位到毫米级别,但是费用极高,应用很少。iBeacon 技术也可以用于室内定位,可达到厘米级别,但是仅限于 IOS 设备。
总的来说,Amazon Go 反作弊/识别系统是通过“商品—识别动作—识别承受动作的商品—商品与用户清单/用户关联”进行运作的。
对 Amazon Go 反作弊/识别系统而言,它只需要知道哪些商品被拿走或放回了,并且知道是谁实施的,那么就知道是谁购买/放回了什么商品。最后在出口(转移区),顾客刷卡确认顾客与商品的关系即可。
商品识别问题讨论
此时有个疑问:故意作弊的行为,能识别动作,但是识别商品难度较大,因为大型超市商品种类有 10 万种,依据现有的水平是无法解决的。
陈维龙就这一问题给出以下解决方案:
• 限制特定种类商品。从亚马逊官方视频中看到超市商品种类与日常生活超市相比要少很多,而且形状规格等都比较统一。
• 限制开店区域和人群。在中高端市场,用户的可信度较高,超市防盗压力减少。视频中显示的商品也趋向中高端市场。
• 特殊人群跟踪。上面提高用户行为被系统判定为低置信度事件会被记录跟踪分析,这部分人群需要单独的技术限制和人工干预。
• 容忍作弊行为,加强非技术反作弊手段。虽然讨论的是高科技含量的东西,但是就目前阶段结合必要的人工手段能提到较好作用。
本文作者:佚名
来源:51CTO
详解 Amazon Go 三大核心技术相关推荐
- 深度丨详解 Amazon Go 三大核心技术
12 月 5 日,亚马逊发布 Amazon Go 震惊业界.雷锋网第一时间研究了专利文件,并采访资深计算机视觉算法工程师,最终出文从2份专利文件,一窥Amazon Go到底藏了什么黑科技? 今天雷锋网 ...
- java ee ssh三大框架知识点_详解JAVAEE——SSH三大框架整合(spring+struts2+hibernate)...
详解JAVAEE--SSH三大框架整合(spring+struts2+hibernate) 发布时间:2020-09-17 13:34:05 来源:脚本之家 阅读:64 作者:kent鹏 一.整合原理 ...
- 【超详解】JavaWeb三大组件讲解
文章目录 前言: 一.Servlet 二.Filter 三.Listener 总结 前言: JavaWeb三大组件指的是:Servlet.Filter.Listener,三者提供不同的功能,然而很多人 ...
- vue快速修改数组的某个值_详解vue组件三大核心概念
前言 本文主要介绍属性.事件和插槽这三个vue基础概念.使用方法及其容易被忽略的一些重要细节.如果你阅读别人写的组件,也可以从这三个部分展开,它们可以帮助你快速了解一个组件的所有功能. 本文的代码请猛 ...
- vue warning如何去掉_详解 vue 组件三大核心概念
前言 本文主要介绍属性.事件和插槽这三个vue基础概念.使用方法及其容易被忽略的一些重要细节.如果你阅读别人写的组件,可以从这三个部分展开,它们可以帮助你快速了解一个组件的所有功能. 本文的代码请猛戳 ...
- vue传递数组对象_详解vue组件三大核心概念
前言 本文主要介绍属性.事件和插槽这三个vue基础概念.使用方法及其容易被忽略的一些重要细节.如果你阅读别人写的组件,也可以从这三个部分展开,它们可以帮助你快速了解一个组件的所有功能. 本文的代码请猛 ...
- 面向对象(详解):三大特征【封装性、继承性、多态性】
目录 封装性 封装性的设计思想 Java规定的四种权限修饰符 继承性 继承性的好处 类继承语法规则 子类继承父类以后的特点 多态性(重要) 引用变量的两个类型 编译时类型 运行时类型 多态的应用举例 ...
- Mybatis二级缓存详解
Mybatis二级缓存 Mybatis相关全览 一.简介 二.一级缓存 1.入口 2.演示 案例一: 案例二: 3.总结 三.二级缓存 1.入口 2.如何开启二级缓存 cache-ref配置 cach ...
- Streamsets组件详解
Streamsets优化详解 一.Origin类组件详解 二.Processor类组件详解 三.Destination类组件详解 四.Executor类组件使用详解 一.Origin类组件详解 Ama ...
最新文章
- 企业网络带宽需求和跨地域网络连接的优化
- JS组件系列——封装自己的JS组件,你也可以
- 使用Spring Data Redis操作Redis(集群版)
- Silverlight中如何实现上下标的显示
- Python随机选择一部分训练样本作为测试样本
- 利用丁香园数据生成疫情分布地图(R语言)| 博文精选
- SpringBoot 2.1.5(38)---热部署(devtools)配置操作
- TP5解析html 回显到页面上
- linux rm后文件放哪里,怎样将Linux rm号令删除的文件放进渣滓箱
- python循环报数游戏_报数游戏python 解答
- Linq to sql 增删改查
- 如何使用Camtasia给视频打码
- matlab 结果导入excel,Matlab导入Excel文件中的数据的详细教程分享
- while循环实例C语言,实例之while循环
- LabVIEW:忽略自动错误处理
- 数值分析(12):Rung-Kutta法及单步法的收敛性和稳定性分析
- mysql写了代码如何看表_mysql之单表查询__我自己敲的代码
- 01 - AWS Organization
- mac下通过命令行查找文件
- 新论文 | 钢混组合梁多尺度BIM正向设计研究