2016年年末,Amazon无人超市横空出世。在这家无人超市,店内的相机能够自动追踪你拿取的商品;完成购物后,你无需排队等候收银,只用直接走出超市。

自此之后,阿里和京东也已相继加入战局,先后推出无人超市体验店。一时间,无人超市的概念已实现了大规模普及。

无人超市的“黑科技”到底是什么呢?今天,文摘菌就为大家科普其中最重要的一环——基于计算机视觉技术的物体识别。

首先,让我们分析一下实现无人超市的两大难点。

难点一:把商品加入购物车

超市里的智能货架需要能够追踪到客户拿走了什么商品。我们可以用两个物品识别模型来实现这个功能,一个用来跟踪手部动作以获取被拿起的物品。另一个独立模型则用于检测货架的空间。请看下面的动画,同时使用两个模型可以大大降低误判。

难点二:自动结账

无人超市的需要解决的另一难点是,实现摄像头对物品的一次性识别,这样我们就不需要在结账的时候一件一件物品地扫描过机了。

直接通过购物车里的摄像头检测所买的物品,在你走出超市的那一刻就自动结帐。这个不要太酷哦!

为此,我们需要建立另一个识别模型,用以检测识别物品的种类以及数量。请看下面的动画(即使物品只有部分可见仍能被准确识别出来)。

好了,现在就让我们来具体实现这家无人超市吧。

1、收集数据

我们可以通过下载网上的公开数据集或者自己创建数据集两种方式来收集图片。这两种方法各有利弊。我一般是两种综合使用,比如手部的探测可以使用如Ego Hand数据集(印第安纳大学制作的第一人称视角的手势数据)这样的公开数据集。

这个数据集包含大量手的形状、肤色和动作的变化数据,在实际应用中非常有用。

另一个方面,对于在货架或者购物车里的物品,最好收集自己的数据,因为我们要确保图像数据是来自各个角度的。

在建模之前,建议对数据进行强化,比如使用图像处理库如PIL(Python Imaging Library)、OpenCV(跨平台计算机视觉库)对图片数据进行处理,以产生不同亮度、大小、旋转方向等的额外图片。这样处理能够生成大量新的样本让模型更加稳健。

对于物品检测模型,我们需要对目标物品加上带注释的方框。

我们可以使用 Python开发的labelimg(图片标注工具)来实现并且用Qt(Qt Company开发的跨平台C++图形用户界面应用程序开发框架)开发界面。

这是一个非常好用的工具,使用PascalVOC格式(图像识别和物品分类)创建注释可以很容易用Tensorflow Github里分享的代码生成TFRecord 文件(Tensorflow图像数据格式)。2、建模

在建模的时候你需要做的一个重大决定就是选择物品检测模型。在COCO数据集上训练过的最新模型如下:

识别速度和准确率之间总是效益相悖难两全的。个人认为对于实时的手部检测,最好使用SSD模型(Single Shot Detector单次激发检测)或者更快的RCNN(区域卷积神经网络)。而对于货架或者购物车里的物品我更愿意使用识别慢一点但准确度更高的模型如Faster RCNN Resnet(快速区域卷积神经网络残差网络)或者Faster RCNN Inception Resnet(快速区域卷积神经网络初始残差网络)。

3、测试和优化模型

在构建完第一个版本的无人超市后,你就要进入漫长的改进阶段了。没有模型是完美的,随着你的测试,你自会发现它的不如意之处。接着你就要用你的直觉来判断,这些不足是否能被消除,以使模型更精准:或许你应该使用另一个模型,又或许,根本没有模型能得到你期望的准确度。如果幸运的话,你只需要增加训练数据的样本量来提升模型的性能。

读完这篇文章,是不是觉得无人超市也没有想象中的那么神奇了呢?当然了,无人超市背后的技术远不止计算机视觉,无人超市的真正落地也依旧存在了各类技术难点——亚马逊的无人超市至今仍处于员工内测阶段;阿里和京东的无人超市虽然率先向公众开放,但顾客体验却也不敢恭维。如果你等不及无人超市的大规模落地,那就从这篇教程出发,自己先开上一家简易版的无人超市吧!

原文发布时间为:2017-12-26

本文作者:Priya Dwivedi

本文来自云栖社区合作伙伴“大数据文摘”,了解相关信息可以关注“大数据文摘”微信公众号

还没体验过无人超市?手把手教你用计算机识别技术自己开一家!相关推荐

  1. 还没理解微前端?手把手教你实现一个迷你版

    大厂技术  高级前端  Node进阶 点击上方 程序员成长指北,关注公众号 回复1,加入高级Node交流群 最近看了几个微前端框架的源码(single-spa[1].qiankun[2].micro- ...

  2. 手把手教你用python抢票_又没抢到票?手把手教你用python抢票回家过年…

    原标题:又没抢到票?手把手教你用python抢票回家过年- 最近朋友圈刷屏:我又没抢到票!哭! 憋急,教程在此,有人愿意尝试吗? 先看看如何快速查看剩余火车票? 作者 protream 原文:http ...

  3. 手把手教你申请计算机软件著作权(5)——— 信息补充(必看)

    #悬崖上的花,越芬芳越无常 这个博客是我手把手教你申请计算机软件著作权的第5篇,写这个的原因是我前四篇博客写完之后,我身边的一些人申请软著的时候来咨询我一些问题,我回答之后发现之前写的还有一些遗漏,若 ...

  4. 【玩转华为云】手把手教你利用ModelArts识别偶像的声音

    本篇推文共计2000个字,阅读时间约3分钟. 华为云-华为公司倾力打造的云战略品牌,2011年成立,致力于为全球客户提供领先的公有云服务,包含弹性云服务器.云数据库.云安全等云计算服务,软件开发服务, ...

  5. 【新】手把手教你申请计算机软件著作权——新系统填写申请表

    悬崖上的花,越芬芳越无常~ 之前其实是写过了完整的手把手教你申请软著系列的,但是天有不测风云,5月份完成的博客,到了8月底,软著登记的网站系统,居然改版了!!! 所以8.31号之后申请的软著,都需要在 ...

  6. 实战三:手把手教你实现物体识别

                                 实战三:手把手教你实现物体识别 一.基于Haad+Adaboost实现人脸识别 1.原理介绍(参考下面的博客文章) http://www.cn ...

  7. 手把手教你申请计算机软件著作权(2)—— 生成代码文件身份证明

    #今天也是咸鱼的一天~ 上一篇关于软著申请的博客手把手教你申请计算机软件著作权(1)里有说,要求提交一份代码的前三十页和后三十页.在这篇博客里,就详细叙述一下如何提交代码文件. 手把手教你申请软件著作 ...

  8. 岑崟:手把手教你走好从技术转管理的第一步

    岑崟 读完需要 10 分钟 速读仅需 1 分钟 前好买财富 系统运维部副总监 负责应用运维及 DevOps 运维平台研发和运营,推动运维团队从传统运维向 DevOps 转变. 本文根据岑崟老师在[de ...

  9. 手把手教你实现人脸识别,有手就行

    应用领域 金融领域.人脸识别当前在金融领域的应用最为广泛,当前国内金融领域监管要求严格,金融相关产品都需要实名认证,并且具有较高的安全性要求,活体识别,银行卡ocr识别,身份证ocr识别,人证对比等在 ...

最新文章

  1. 1-Swift中的Struct 和 Class
  2. Cassandra 单机入门例子——有索引
  3. 解决Linux下MySQL启动错误Starting MySQL.Manager of pid-file quit without updating file.[FAILED]...
  4. Spinner的使用方法
  5. c++面向对象三大特征封装、继承和多态知识总结
  6. 一些常被你忽略的CSS小知识
  7. linux常用命令和配置
  8. Objective-C(9)内存管理之ARC
  9. html图片怎么弄透明背景,如何使用CSS实现背景图像透明
  10. STC8G七彩数字时钟、GPIO设置、DS1302使用、热敏电阻测温、SM5166P和MBI5024控制数码管显示
  11. win10下SVN图标不显示
  12. 微信小程序:实现按钮点击事件
  13. noj [1480] 懒惰的风纪委Elaine (多重背包)
  14. python引入op模块 实现游戏后台挂机 阴阳师
  15. linux下repo文件的配置
  16. 【自用】ESP32-S3新板子 从零配置micropython环境(安装CH343驱动等)
  17. 联邦学习 Federated Learning 相关资料整理
  18. 利用jquery实现双向数据绑定,网友:哎呦不错哦!
  19. Hadoop常用命令集合
  20. 【Revit二次开发】模型中存储数据——参数和外部存储(Parameter, Schema and Entity)

热门文章

  1. https://www.yearbookchina.com
  2. 从事大数据征信行业,你必须知道这些
  3. 大数据之Python数据分析 实训 信用卡客户风险评价之一、处理信用卡数据异常值
  4. android之在app图标添加角标,Android之在app图标添加角标
  5. leetcode:32. 最长有效括号
  6. 为什么越来越多的人选择海外服务器?
  7. 传感器技术—霍尔传感器(学习笔记九 补充)
  8. (二)Pgcluu监控
  9. cydia java_使用Cydia Substrate Hook Android Java世界
  10. python29期完结2021年共367G