直播预告!生鲜与零售商品识别系统产业实践与部署详解

生鲜零售作为民生消费的重要一环,在促进行业新消费升级的进程中有着至关重要的作用。在超市等无人零售场景中,目前结算方式主要有以下几种:

但是以上几种方法存在如下缺点:

  • 条形码方式:对于成品包装的商品较为成熟,但生鲜产品本身“无码可扫”;
  • RFID方式:所需的额外费用难以长期承担;
  • 生鲜称重方式:对于相同品种不同单价的商品无法很好区分,需要人工辨别商品品种,效率较低。

因此,选择一种既能大规模支持各种商品识别,又能方便管理,同时维护成本不高的识别系统,显得尤为重要。

针对以上的行业需求,飞桨联合Intel提供了一套基于飞桨图像分类开发套件PaddleClas和OpenVINO™工具套件的生鲜与零售商品识别系统,满足商品识别场景需要兼顾扩展性的要求。在此方案中,只需训练一套模型,在后续使用过程中,无需频繁重新训练模型, 仅需要在检索库中,配置少量有代表性的新增产品图像,就能够很好地解决新增商品问题,同时也无需添加辅助设备,极大降低了维护及使用成本。

项目链接

https://aistudio.baidu.com/projectdetail/6649316

本项目中,飞桨联合Intel建设了生鲜与零售商品识别系统产业实践范例,基于PP-ShiTuV2 Pipeline详解模型训练,新品种入库,以及如何基于Intel OpenVINO™快速部署,优化CPU推理任务性能,极致利用Intel x86硬件资源。

场景难度

  • 物体形状千差万别,如何找到待检测的商品?
  • 商品及生鲜品种繁多,如何准确识别对应种类?
  • 使用过程中,商品及生鲜品类迭代速度快,如何减少模型更新成本?

方案设计

如图所示,针对以上问题,我们使用图中的Pipeline以解决上述问题。整个Pipeline中,主要分为三部分:

主体检测

检测出待识别的商品,去掉冗余的背景信息,提高生鲜品识别的精度;

特征提取

将待识别的生鲜品图像进行提取特征;

检索模块

将待检索的特征与库中的生鲜品特征比对,得到待检索生鲜品的标签。图片

模型优化策略和效果

主体检测

主题检测是目前应用非常广泛的一种检测技术,它指的是检测出图片中一个或者多个主体的坐标位置,然后将图像中的对应区域裁剪下来进行识别。主体检测是识别任务的前序步骤,输入图像经过主体检测后再进行识别,可以过滤复杂背景,有效提升识别精度。考虑到检测速度、模型大小、检测精度等因素,最终选择 PaddleDetection 自研的轻量级模型 PicoDet-LCNet_x2_5 作为PP-ShiTuV2 的主体检测模型,PicoDet系列模型融合了ATSS、Generalized Focal Loss、余弦学习率策略、Cycle-EMA、轻量级检测 head等优化算法,此外为了更好地兼顾检测速度与效果,PicoDet-LCNet_x2_5将neck 中的 CSP module 换成了LCNet module。

特征提取

特征提取是图像识别中的关键一环,它的作用是将输入的图片转化为固定维度的特征向量,用于后续的向量检索。考虑到特征提取模型的速度、模型大小、特征提取性能等因素,最终选择 PaddleClas 自研的PPLCNetV2_base作为特征提取网络。PP-LCNetV2 模型是在 PP-LCNetV1 的基础上优化而来,主要使用重参数化策略组合了不同大小卷积核的深度卷积,并优化了点卷积、Shortcut等。相比 PP-ShiTuV1 所使用的 PPLCNet_x2_5, PPLCNetV2_base 基本保持了较高的分类精度,并节省了40%的推理时间。

模型部署

使用OpenVINO ™作为推理后端, 倍数级提升任务在CPU侧的处理速度。

采用通用性极高的x86的平台作为模型部署设备, 可充分利用并实现多任务负载,无需购置额外的加速卡设备,大大节省项目成本。

本项目的最终部署环境为:Intel x86平台设备。 考虑开发便捷性,本次示例使用python部署开发环境,该系统是商品检测、商品特征提取以及商品检索三大任务所构建的Pipeline,可以实现基于本地数据仓库的轻量化零售商品识别系统。在星河社区也提供了完整的使用示例与开发说明,可参考该教程快速学习,并针对实际项目进行开发和集成。

图片

精彩课程预告

为了让小伙伴们更便捷地应用范例教程,OpenVINO™软件开发工程师Ethan将于8月31日(周四)19:00为大家深度解析从数据准备、方案设计到模型优化部署的开发全流程,手把手教大家进行代码实践。

8.30海报.jpg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/97046.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WPF_布局基础

布局容器 Grid 定义由列和行组成的灵活的网格区域。 行 <Grid.RowDefinitions><RowDefinition/><RowDefinition/></Grid.RowDefinitions> 列 <Grid.ColumnDefinitions><ColumnDefinition/><ColumnDefinition/></Grid.ColumnDe…

指针与空间按钮的交互

文章目录 原理案例&#xff1a;“直线指针”和“点击按钮”的交互1、效果2、步骤 原理 指针不能直接和空间按钮交互&#xff0c;得借助一个中间层——分发器——它分发指针的进入、退出、选择事件&#xff0c;空间按钮自动监听这些事件 案例&#xff1a;“直线指针”和“点击…

HTTPS安全通信和SSL Pinning

随着互联网的迅速发展&#xff0c;网络通信安全问题日益凸显。在这一背景下&#xff0c;HTTPS作为一种加密通信协议得到了广泛应用&#xff0c;以保障用户的数据隐私和信息安全。本文将介绍HTTPS的基本原理、发展历程&#xff0c;以及与之相关的中间人攻击和防护方法。 1. HTT…

1.RTKLIB环境配置和调试

1.源码下载 下载链接&#xff1a;rtklib 注&#xff1a;2.4.2 p13为稳定版本&#xff08;标识p代表稳定版本&#xff09;&#xff0c;2.4.3 b34为最新实验版本&#xff08;标识b&#xff09;。点击2.4.3 b34 的Source Programs and Data 链接下载源码。 2.环境配置 **集成…

深度剖析java类和对象

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【JavaSE_primary】 在Java中&#xff0c;一切皆对象。 目录 一、类的定义和使用1.1类的定义格式1.2定义学生类 二、类的实例化三、this引…

《Flink学习笔记》——第九章 多流转换

无论是基本的简单转换和聚合&#xff0c;还是基于窗口的计算&#xff0c;我们都是针对一条流上的数据进行处理的。而在实际应用中&#xff0c;可能需要将不同来源的数据连接合并在一起处理&#xff0c;也有可能需要将一条流拆分开&#xff0c;所以经常会有对多条流进行处理的场…

基于Jenkins构建生产CICD环境(第三篇)

目录 基于Jenkins自动打包并部署docker环境 1、安装docker-ce 2、阿里云镜像加速器 3、构建tomcat 基础镜像 4、构建一个Maven项目 基于Jenkins自动化部署PHP环境 基于rsync部署 基于Jenkins自动打包并部署docker环境 1、安装docker-ce 在192.168.2.123 机器上&#x…

SQLI-labs-第三关

目录 知识点&#xff1a;单括号)字符get注入 1、判断注入点&#xff1a; 2、判断当前表的字段数 3、判断回显位置 4、爆库名 5、爆表名 6、爆字段名&#xff0c;以users表为例 7、爆值 知识点&#xff1a;单括号)字符get注入 思路&#xff1a; 1、判断注入点&#xff1…

HTML学习笔记02

HTML笔记02 页面结构分析 元素名描述header标题头部区域的内容&#xff08;用于页面或页面中的一块区域&#xff09;footer标记脚部区域的内容&#xff08;用于整个页面或页面的一块区域&#xff09;sectionWeb页面中的一块独立区域article独立的文章内容aside相关内容或应用…

测试理论与方法----测试流程的第四个步骤:执行测试,提出缺陷

8、执行测试—–>提交缺陷报告 测试流程&#xff1a;执行测试—–>提交缺陷报告 1、缺陷的概述&#xff08;回顾&#xff09; 结果角度&#xff1a;实际结果和预期结果不一致 需求角度&#xff1a;所有不满足需求或超出需求的&#xff0c;都是缺陷 2、缺陷的相关属性…

Glide分析和总结

1. Glide概述 Glide是一款图片处理的框架&#xff0c;从框架设计的角度出发&#xff0c;最基本要实现的就是 加载图片 和 展示。 它把一个图片请求封装成一个Request对象&#xff0c;里面有开启、暂停、关闭、清除网络请求、以及载体生命周期的监听等操作。然后通过RequestBu…

【Java基础增强】Stream流

1.Stream流 1.1体验Stream流【理解】 案例需求 按照下面的要求完成集合的创建和遍历 创建一个集合&#xff0c;存储多个字符串元素 把集合中所有以"张"开头的元素存储到一个新的集合 把"张"开头的集合中的长度为3的元素存储到一个新的集合 遍历上一步得…

ELK原理和介绍

为什么用到ELK&#xff1a; 一般我们需要进行日志分析场景&#xff1a;直接在日志文件中 grep、awk 就可以获得自己想要的信息。但在规模较大的场景中&#xff0c;此方法效率低下&#xff0c;面临问题包括日志量太大如何归档、文本搜索太慢怎么办、如何多维度查询。需要集中化…

CTFhub-文件上传-无验证

怎样判断一个网站是 php asp jsp 网站 首先&#xff0c;上传用哥斯拉生成 .php 文件 然后&#xff0c;用蚁剑测试连接 找到 flag_1043521020.php 文件&#xff0c;进去&#xff0c;即可发现 flag ctfhub{ee09842c786c113fb76c5542}

Android Native Code开发学习(三)对java中的对象变量进行操作

Android Native Code开发学习&#xff08;三&#xff09; 本教程为native code学习笔记&#xff0c;希望能够帮到有需要的人 我的电脑系统为ubuntu 22.04&#xff0c;当然windows也是可以的&#xff0c;区别不大 对java中的对象变量进行操作 首先我们新建一个java的类 pub…

(二十)大数据实战——Flume数据采集的基本案例实战

前言 本节内容我们主要介绍几个Flume数据采集的基本案例&#xff0c;包括监控端口数据、实时监控单个追加文件、实时监控目录下多个新文件、实时监控目录下的多个追加文件等案例。完成flume数据监控的基本使用。 正文 监控端口数据 ①需求说明 - 使用 Flume 监听一个端口&am…

python爬虫14:总结

python爬虫14&#xff1a;总结 前言 ​ python实现网络爬虫非常简单&#xff0c;只需要掌握一定的基础知识和一定的库使用技巧即可。本系列目标旨在梳理相关知识点&#xff0c;方便以后复习。 申明 ​ 本系列所涉及的代码仅用于个人研究与讨论&#xff0c;并不会对网站产生不好…

Ansible学习笔记6

stat模块&#xff1a;获取文件的状态信息&#xff0c;类似Linux的stat状态。 获取/etc/fstab文件的状态。 [rootlocalhost tmp]# ansible group1 -m stat -a "path/etc/fstab" 192.168.17.106 | SUCCESS > {"ansible_facts": {"discovered_inter…

Vector 动态数组(迭代器)

C数据结构与算法 目录 本文前驱课程 1 C自学精简教程 目录(必读) 2 Vector<T> 动态数组&#xff08;模板语法&#xff09; 本文目标 1 熟悉迭代器设计模式&#xff1b; 2 实现数组的迭代器&#xff1b; 3 基于迭代器的容器遍历&#xff1b; 迭代器语法介绍 对迭…

在css中设计好看的阴影

在css中设计好看的阴影 在本文中&#xff0c;我们将学习如何将典型的盒子阴影转换为更好看的的阴影。 统一角度 当我们想要一个元素有阴影时&#xff0c;会添加box-shadow属性并修改其中的数字&#xff0c;直到满意为止。 问题是&#xff0c;通过像这样单独创建每个阴影&…