Skip to content

Latest commit

 

History

History
207 lines (152 loc) · 13.7 KB

README_CN.md

File metadata and controls

207 lines (152 loc) · 13.7 KB

GitHub Repo stars GitHub forks GitHub python os contributors
简体中文 | English | 启智OpenI | github

求求了,点个StarT_ZKW6KJ_X{% %P_AY$`( X

Star History Chart

😉近期更新😉

  • 发布训练代码:发布模型训练代码及实验结果,以便开发者进行适应性调参工作;
  • 代码bug修复: Pipeline部署方式下检索库更新后需重启服务;
  • 精度大幅提升:自采集数据集测试精度高达98.442%
  • 文档全面升级:Logo全面更新,提供PP-ShiTu模型训练及部署详细文档
  • 部署方式优化:预测速度提升65%,基于CPU整体流程控制在0.9s左右;
  • 产品功能升级:增加库存信息管理功能,提供一键式数据可视化分析平台。

🧁项目背景🧁

目前在零售行业的实际运营过程中,会产生巨大的人力成本,例如导购、保洁、结算等,而其中,尤其需要花费大量的人力成本和时间成本在识别商品并对其进行价格结算的过程中,并且在此过程中,顾客也因此而需要排队等待。这样一来零售行业人力成本较大、工作效率极低,二来也使得顾客的购物体验下降。

随着计算机视觉技术的发展,以及无人化、自动化超市运营理念的提出,利用图像识别技术及目标检测技术实现产品的自动识别及自动化结算的需求呼之欲出,即自动结账系统(Automatic checkout, ACO)。基于计算机视觉的自动结账系统能有效降低零售行业的运营成本,提高顾客结账效率,从而进一步提升用户在购物过程中的体验感与幸福感。

适用场景

袋鼯麻麻——智能零售结算平台致力于为大型线下零售体验店提供基于视觉的零售结算方案。

痛点问题

  1. 结算效率要求极高:在大型线下零售体验店购物场景中,若顾客购买的商品较多,采用传统的条形码结算,效率较低,顾客购物体验较差;
  2. 品类更新极快:像新零售这种行业,新品几乎都是按小时级别在更新,每增加新的产品都要辛辛苦苦重新训练模型,仅靠单一模型想要跟上步伐,着实望尘莫及;
  3. 不同商品相似度极高:比如同一种饮料的不同口味,就很可能拥有非常类似的包装。而且即便对于同一件商品,在不同情况下所获得的商品图像都往往存在相当大的差异
  4. 商品类别数以万计:根本没法事先把所有类别都放入训练集。

🍑实现功能🍑

袋鼯麻麻——智能零售结算平台”具体实现在零售过程中对用户购买商品的自动结算。即:利用PaddleClas团队开源的图像识别PP-ShiTu技术,精准地定位顾客购买的商品,并进行智能化、自动化的价格结算。当顾客将自己选购的商品放置在制定区域内时,“袋鼯麻麻——智能零售结算平台”能够精准地定位识别每一个商品,并且能够返回完整的购物清单及顾客应付的实际商品总价格。而当系统有新商品增加时,本系统只需更新检索库即可,无需重新训练模型。

本项目为轻量级通用图像识别系统PP-ShiTu提供了扎实的落地应用案例,对新零售行业中无人零售视觉化智能解决方案提供了非常好的基础和思路,尤其针对解决多类别、小样本、高相似和更新频繁的特殊图像识别场景痛难点提供了可参考的示范,极大地降低零售行业实际运营过程中巨大的人力成本,提升零售行业无人化、自动化、智能化水平。

🍎整体架构🍎

🐻技术路线🐻

袋鼯麻麻——智能零售结算平台 基于PaddleClas作为主要的功能开发套件,利用其开源的PP-ShiTu进行核心功能的开发,并通过PaddleInference将其部署于Jetson Nano,并基于QPT打包.exe打通Windows系统,开发一套符合实际应用需求的工业级智能零售结算平台。

PP-ShiTu是一个实用的轻量级通用图像识别系统,主要由主体检测、特征学习和向量检索三个模块组成。该系统从骨干网络选择和调整、损失函数的选择、数据增强、学习率变换策略、正则化参数选择、预训练模型使用以及模型裁剪量化8个方面,采用多种策略,对各个模块的模型进行优化,最终得到在CPU上仅0.2s即可完成10w+库的图像识别的系统。

整个图像识别系统分为三步(详情见PP-ShiTu训练模块):
(1)通过一个目标检测模型,检测图像物体候选区域;
(2)对每个候选区域进行特征提取;
(3)与检索库中图像进行特征匹配,提取识别结果。

对于新的未知类别,无需重新训练模型,只需要在检索库补入该类别图像,重新建立检索库,就可以识别该类别。

数据集介绍

【The first one】:Products-10K Large Scale Product Recognition Dataset

【The second one】:RP2K: A Large-Scale Retail Product Dataset for Fine-Grained Image Classification

袋鼯麻麻——智能购物平台基于上述两个数据集,结合爬虫,对此两种数据集进行适应性处理。

商品部分list

东古酱油一品鲜
东古黄豆酱750G
东鹏特饮罐装
中华(硬)
中华(软)
乳酸菌600亿_2
乳酸菌600亿_3
乳酸菌600亿原味
乳酸菌600亿芒果
乳酸菌600亿芦荟
...

目前处理后的数据集已在AIStudio开源。

消融实验

model num epoch batch size/gpu cards learning rate use cutout use ssld top1 recall 配置文件
PP_LCNet_x2_5 400 256/4 0.01 N N 98.189% 配置文件
PP_LCNet_x2_5 400 256/4 0.01 Y N 98.21% 配置文件
PP_LCNet_x2_5 400 256/4 0.005 N N 98.201% 配置文件
PP_LCNet_x2_5 400 256/4 0.005 Y N 98.29% 配置文件
PP_LCNet_x2_5 400 256/4 0.001 Y N 98.26% 配置文件
PP_LCNet_x2_5 400 64/4 0.005 Y Y 98.30% 配置文件
PP_LCNet_x2_5 400 64/4 0.0025 Y Y 98.37% 配置文件
PP_LCNet_x2_5 400 64/4 0.002 N Y 98.38% 配置文件
PP_LCNet_x2_5 400 64/4 0.002 Y Y 98.39% 配置文件

:

  1. 本实验均基于 GPU:Tesla V100* 4; CPU:Inter Xeon* 32; RAM:DDR4 128GB 进行训练并测试;
  2. 本实验均基于上述零售商品特征学习数据集进行训练和测试;
  3. 即将对RP2K等大型零售商品开源数据集进行评测。

🌍部署方式🌍

本项目已打通Jetson Nano、Windows、linux系统

  • Windows 端
    [本项目提供了较为简单的demo演示版本]

    使用QPT打包
    链接:https://pan.baidu.com/s/194ApbJuDJWyV7tv5sCaGsg 提取码:wy7i

    解压后运行启动程序.exe即可

  • Linux 端
    Download本项目代码后,进入client文件夹内,执行以下代码即可运行:

      python client.py
    
  • 图像识别部分部署详情请见PP-ShiTu部署

  • 微信小程序端 打开微信开发者工具,导入系统文件夹下AIContainer文件夹并运行,即可运行小程序端;

💃bilibili效果演示💃

  • 主界面

  • 端侧界面

  • 小程序界面

  • 大数据可视化分析界面

⛽️待完成⛽️

序号 完成度 优先级 分属类别 功能描述
1 已完成 ★★★★★ 小程序 添加库存信息显示,增添数据分析模块
2 在做了 ★★★★★ 小程序 初始功能上线
3 已完成 ★★★★★ 端侧 Jetson Nano的深度适配
4 规划中 ★★★★ 小程序 面向管理者及顾客的功能分离
5 已完成 ★★★★ web 基于 Tyadmin or 其他工具 关于web端信息管理系统的建立
6 规划中 ★★★ 小程序 接入PaddleOCR实现商品名称的自动录入
7 规划中 ★★ APP Android and IOS 客户端的打通部署

🚀开发团队🚀

职责 名单
PM 颜鑫
算法 颜鑫
端侧前端 颜鑫
小程序前端 沈晨
后端 杜旭东

☕来一杯咖啡☕

一杯咖啡提神醒脑,产品更新会更快更好!

图片

🌟特别鸣谢🌟

❤️欢迎共建❤️

我们非常欢迎您为"袋鼯麻麻——智能零售结算平台"贡献代码或者提供使用建议。无论您是提出存在bug、修复某个bug或者增加一个新功能,欢迎给我们提交Issue or Pull Requests。

引用

@software{ColugoMum2021,
  author = {Xin Yan, Chen Shen and XuDong Du},
  title = {{ColugoMum: Intelligent Retail Settlement Platform}},
  howpublished = {\url{https://github.com/thomas-yanxin/Smart_container}},
  year = {2021}
}