基于PP-ShiTu的零售商品结算系统设计与在Jetson Nano上部署推理使用
文章目录
- 第一章 作品概述
- 1.1 团队介绍
- 1.2 背景
- 1.3 简介
- 1.4 创新点与问题
- 1.5 发展前景
- 1.6 技术路线
- 第2章 技术方案
- 2.1 主体检测
- 2.2 特征提取
- 2.3 向量检索
- 2.4 模型部署推理
- 2.5 界面设计
- 2.6 硬件方面
- 2.6.1 环境配置
- 2.7 效果展示
- 总结
第一章 作品概述
本项目基于PP-Shitu + PyQt + Jetson Nano 4GB结合实际应用场景完成智慧零售商品终端结算系统,提供了全流程实现方法以及项目思路,从目标检测算法实现,界面设计到设备部署推理。本项目数据集来源于中国计算机设计大赛组委会,项目作品也是基于该比赛作品要求进行一定的阐述讲解。
1.1 团队介绍
程明源:成都信息工程大学本科在读韩鹏远:成都信息工程大学本科在读王 涛:成都信息工程大学本科在读
1.2 背景
智慧零售,也称“智慧新零售”,智慧零售的核心是围绕消费者而产生的购买行为、场景体验和生产设计中,融入数字智能化平台,优化企业资源分配和场景布局效益,模糊线上线下界线并实现线上营销精准化和线下门店高效化。
智能终端通常指带有微型计算机及嵌入式软件系统的终端设备,在硬件结构方面,智能终端通常采用计算机经典体系结构,由运算器、控制器、储存器、输入设备以及输出设备五大部分组成。
近年来,随着计算机技术、通信技术以及移动互联网技术的迅猛发展,智能终端产品不断推陈出新, 基于此,本项目对于现存的零售商店进行分析思考,探索进入智慧零售行业,实现自主购物交易,为新的技术品牌商及商超零售企业开始引进人工智能技术。
图 2 应用场景示意图(图片来自网络)
1.3 简介
基于目前智慧零售场景,结算平台方便客户进行自主购物结算,相较于智能货架其具有更广的应用场景,并且成本也低,相较于智能购物车,其结算方式更加灵活,在顾客并不需要购买大量物品时不用购物车也能进行结算工作,并且从技术方面在购物车中,物品的重叠覆盖,中途拿出等情况会大大增加结算难度,不便于落地实现,所以经过比较分析,选择设计视觉结算台来进行智慧零售的结算任务,其具有方便快捷,可拓展性强,应用场景广等特点。
图 3 智能终端结算系统
通过设计一款视觉结算台来实现商品的读取到单价/总价结算。该视觉结算平台具有摄像头、核心开发板、显示器。其中摄像头用于实时读取外界图像传入核心处理器,核心处理器中搭载有核心处理算法,经过处理过后将结果反馈显示在显示器上,此后客户便可以直接从显示器上观察到本次消费清单,以及进行接下来的消费结算。
1.4 创新点与问题
图 4 创新点与面临的问题
1.5 发展前景
图 5 智能终端发展历程
图 6 智能商用终端市场规模
从需求和发展规模上可以看出智能终端广阔的发展前景,竞争力也很强。
1.6 技术路线
零售行业转型中所涉及的货架陈列分析、智能结算、智能库存管理、智能货柜、电商平台等以图搜图的场景背后的核心技术都离不开商品识别算法,基于应用场景的一些严格的要求,基于PP-ShiTu设计出如下的技术路线。
图 7 技术路线
注:图2中的两处分类模型为同一个训练好的分类模型。
整体工作依据该方案准备两个模型,主体检测、图像分类模型。此外,设计界面进行结果可视化展示,消费结算。最后还需要在Jetson Nano上完成项目的部署工作。具体的实现方案见第2章技术方案
第2章 技术方案
PaddleClas团队开源的图像识别PP-ShiTu技术方案,主要由主体检测、特征学习和向量检索三个模块组成,是一个实用的轻量级通用图像识别系统。基于此技术方案,商超零售企业可实现大量商品的一键式智能化识别,大大提高识别效率,节省人工及时间成本。此外,当新品迭代更新时,PP-ShiTu无需重新训练模型,能够做到“即增即用”,完美解决上述痛点问题,大大提高了人工智能在商超零售行业的应用落地可能性。
识别任务项目链接: PP-ShiTu超市购物商品检测 该项目内对PP-ShiTuV1、PP-ShiTuV2都进行了实现,可以移步至该项目实现以下2.1-2.3部分。
下面将根据技术路线从主体检测、图像特征提取、向量检索三个重要方面进行阐述。
2.1 主体检测
该部分需要实现的效果是:在图像中找到可能是需要的主体的集合,也就是目标检测,不过是不需要分类的检测(其实是将所有主体标签都视为同一类),需要从图像中提取到主体的ROI图像,以便后续的分类识别。
无论是PP-ShiTuV1还是PP-ShiTuV2都是使用 PicoDet 来实现主体检测部分,PicoDet 由 PaddleDetection 提出,是一个适用于 CPU 或者移动端场景的目标检测算法。
官方提供的 主体检测模型 经过了大量公开数据集的训练,具备一定的目标提取能力,为了进一步提高模型的准确度以及应用能力,也可以使用本项目场景下的数据集对模型进一步的训练,采用 PaddleDetection(目标检测库) 来实现自定义的数据集训练。
图 8 官方模型PicoDet检测效果
当通过合适的threshold 与max_det_results(最大检测结果数量)限制,比如减小阈值(防止所需的目标得分过低时被过滤掉),这个时候就需要增大max_det_results出现上图的结果。该部分参考链接: 主体检测
2.2 特征提取
图 9 特征提取
这部分需要准备一个图像分类模型,可以采用官方提供的模型,也可以自己训练。该部分参考链接:特征提取、PaddleClas(图像分类库) 。
PP-ShiTuV2基于PP-ShiTuV1在该部分做出了改进,使得模型更加的轻量化,并且推理速度和精度都有所提升。V2当中使用的是基于PP-LCNetV1改进后的PP-LCNetV2。
对于PP-ShiTuV2 中使用的是PPLCNetV2_base,本项目基于该网络训练出针对于该项目的模型,训练100个epoch参数过程化可视化结果如下:
图 10 PPLCNetV2
PP-ShiTuV1 中使用的是PPLCNet_x2_5,训练100个epoch后的过程可视化如下:
图 11 PPLCNetV1
通过相同的数据集实验呢,V2当中改进后的模型相对于V1中的模型具有更高的精度达到了0.987,并且拟合速度也更快。
2.3 向量检索
向量检索技术在图像识别、图像检索中应用比较广泛。该部分需要实现的功能是:对于给定的查询向量,在上部分已经建立好的向量库中,与库中所有的待查询向量,进行特征向量的相似度或距离计算,得到相似度排序。该部分参考链接:向量检索
使用Faiss来实现该部分的功能,对于Faiss,是由FaceBook的AI团队针对大规模相似度检索问题开发的一个工具,使用C++编写,有python接口,对10亿量级的索引可以做到毫秒级检索的性能。其具有以下特点:
适配性好:支持 Windos、Linux、MacOS 系统
安装方便: 支持 python 接口,直接使用 pip 安装
算法丰富:支持多种检索算法,满足不同场景的需求
同时支持 CPU、GPU,能够加速检索过程
图 12 Faiss向量检索
目前 PaddleClas 中检索模块,支持如下三种检索算法
HNSW32: 一种图索引方法。检索精度较高,速度较快。但是特征库只支持添加图像功能,不支持删除图像特征功能。(默认方法)
IVF:倒排索引检索方法。速度较快,但是精度略低。特征库支持增加、删除图像特征功能。
FLAT: 暴力检索算法。精度最高,但是数据量大时,检索速度较慢。特征库支持增加、删除图像特征功能。
在本次的项目完成中,采用HNSW32作为检索算法,保持算法的精度与速度。
图 13 特征提取+向量检索
图 8 官方模型PicoDet检测效果 经过 特征提取+向量检索 操作便会获得如上的结果。
2.4 模型部署推理
基于**paddle inference** 原生库来加载模型进行推理,在Jetson Nano 4GB上分别对两个模型进行了实验,使用gpu,cpu线程数4,未使用模型加速,在61张测试集上计算mAP,情况如下:
模型 | 存储大小(M) | 平均推理速度 | mAP(IOU0.5:1:0.02) |
---|---|---|---|
PP-ShiTuV1 | 29 | 约500ms/张 | 0.695 |
PP-ShiTuV2 | 19 | 约400ms/张 | 0.738 |
在该部分对各阶段阈值的调节配合可以有效的提升mAP分数。
2.5 界面设计
根据应用场景,基于PYQT设计界面中包含了所有顾客需要知悉的购物清单,清单详细的介绍了本次消费情况,并且还设有一些特殊情况处理方法,比如顾客在结算过程中如果结算出错,或者某种物品不需要了等情况可以自主选择对本次结算进行重新结算。
图 14 界面
图 15 界面接口
提供了视频流输入(video)和本地图像导入(upload_image)接口,同时还设计提供了两个图像展示接口,用于输入和输出结果的图像查看,以及右侧的商品清单展示窗口。其中detect与模型推理进行绑定用于输入图像的推理。
2.6 硬件方面
硬件采用的是jetson nano4GB,该开发板是Nvidia在TX2和Xavier获得成功后推出的低配版GPU运算平台。
图 16 JetsonNano
图 17 基本配置
2.6.1 环境配置
根据技术方案以及需要设计实现的功能模块进行分析。已经在Linux系统上完成所有环境的配置,深度学习框架PaddlePaddle,和一些计算机视觉相关的库opencv,以及Faiss等主要的依赖库,其余的常用依赖库就不过多赘述。
基于Jetson nano进行环境配置。为了充分利用Jetson nano的性能,安装了CUDA从而能使用GPU对图像进行推理。我们可以看到配置如下图:
图 18 nano配置图
由于paddlepaddle-gpu的arm版本因为一些原因去掉了,但是在nvdia官网还是有安装教程,并且找到了可以用的whl安装文件:
#download the wheel
$ wget https://github.com/Qengineering/Paddle-Jetson-Nano/raw/main/paddlepaddle_gpu-2.0.0-cp36-cp36m-linux_aarch64.whl
#install
$ pip install *****.whl#安装以上下载的whl即可
通过安装whl来安装paddlepaddle-gpu,检查是否能使用gpu推理:
#终端进入python
import paddle
paddle.utils.run_check()
#出现以下界面则安装成功
图19 paddlepaddle-gpu安装情况检查
2.7 效果展示
下图为整个基于PP-Shitu实现的项目结合了QT界面设计在Jetson nano 边缘计算设备上推理效果展示。
图 20 检测结果展示
video内容展示
Jetson Nano 4GB 边缘计算设备部署智慧零售商品结算系统
总结
在本项目当中,使用PP-ShituV1与V2完成项目检测部分,其中V2的特征提取模型各方面具有更好的效果,最终也是采用的V2作为项目核心检测算法,对于多模型结合的目标检测还可以进行调参等方式进行推理结果优化,或者说自定义目标检测模型也会使得结果精度更高,对于界面的设计主要是对于结果可视化使得更加直观,也贴合应用场景,在硬件设备Jetson Nano上的部署由于arm架构所以暂不支持源码编译,可以直接通过下载arm架构下的wheel包来安装gpu版本的paddlepaddle,使用paddle inference即可在该设备上完成推理任务。
注:本项目数据集来源于 中国大学生计算机设计大赛组委会
基于PP-ShiTu的零售商品结算系统设计与在Jetson Nano上部署推理使用相关推荐
- 基于Mysql+JavaSwing的超市商品管理系统设计与实现
文章来源: 学习通http://www.bdgxy.com/ 目录 1.功能介绍 2.关键代码 2.1 主页功能 2.2 添加商品信息 2.3 数据库设计 商品表 前言: 随着小超市规模的发展不断扩大 ...
- 基于YOLOV5的数据集标注&训练,Windows/Linux/Jetson Nano多平台部署全流程
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者 | msnh2012 来源 | GiantPandaCV 编辑 | 极市平台 导读 本文将分wi ...
- 基于SpringBoot和Vue的商品秒杀系统设计与实现
目录 一.项目介绍 3 (一)项目背景及概况 3 (二)所选技术栈 3 二.功能介绍 3 (一)登录功能 4 (二)管理员功能 5 (三)买家用户功能 8 三.系统功能实现 10 (一)登录模块实现 ...
- 《基于关联规则算法的电子商务商品推荐系统设计与实现》 CSTPCD期刊
本文是对关联规则算法FP-Grown算法的改进,利用改进算法对商品进行智能推荐. 数据库:MySQL(上一篇论文用了mingodb,虽说可以提高效率,但是这个推荐算法还是需要用到关系型数据库) 编译环 ...
- 基于Jetson Nano的羽毛球自拾取系统设计(本科毕业设计)
目录 前言 一.移动平台 1.硬件简介 2.软件配置Rt Thread Nano 二.视觉部分 1.YOLOV4_tiny+OPENCV4.4(C++) 2.跟踪的思路 三.拾取部分 四.其它 前言 ...
- 【AI达人创造营第二期】基于Jetson nano的餐厅自助结账系统部署
基于Jetson nano的餐厅自助结账系统部署 一. 前言 二. 开发环境 2.1 硬件 2.2 软件 三. Jetson nano基础环境配置 3.1 镜像烧录 3.2 网络连接 3.3 更换镜像 ...
- 【AI创造营】基于PaddleHub与Jetson Nano的智能宠物看护助手
基于PaddleHub与Jetson Nano的智能宠物看护助手 一.效果展示 二.实现思路 1.训练一个适用于该需求的模型 2.使用PaddleHub预训练模型 三.数据采集 硬件部分 代码部分 四 ...
- 飞桨领航团AI达人创造营4-在Jetson Nano上基于python部署Paddle Inference(硬件部署)
在Jetson Nano上基于python部署Paddle Inference(硬件部署) 一.准备好一块新鲜出炉的Jetson nano,并配好基础的开发环境 1.基础配置方法 直接参考我多年来总结 ...
- 基于jetson nano和yolov5 的 车行人检测(一)
毕业设计ing,但中途要出去一波.做个记录,备忘. 基于jetson nano和yolov5 的 车行人检测. 目前已经做的工作: 1.数据集的制作,原本是用的老师给的自己拍的一些数据(含夜间),但效 ...
最新文章
- (转载)你好,C++(17)0.1*10不等于1.0——4.1.4 关系操作符4.1.5 逻辑操作符
- 只能选择分卷文件的第一部分_文件太大如何分块压缩?BetterZip简单搞定
- kalman滤波器公式的推导
- Android-Universal-Image-Loader 的使用说明
- 物联网现状及落地难点
- 韩顺平 php 聪明的小猫代码,聪明的小猫作文600字
- 去哪儿-13-city-vuex
- 【安全牛学习笔记】抓包嗅探
- webpack4.0各个击破(7)—— plugin篇
- 打开浏览器不是主页_浏览器首页被篡改!教你几个快速解决的方法
- 静态检查------SourceMonitor的学习和使用
- 【IntellJ IDEA】idea的Terminal窗口中文乱码 解决方法
- OpenGL学习一:OpenGL简介
- 什么是Ⅰ类、Ⅱ类、Ⅲ类银行账户?秒懂!
- 宏脉系统显示连接服务器失败,宏脉系统使用手册大全.doc
- 必看的经典金融书籍推荐zz
- 嵌入式系统硬件构成-基于ARM的嵌入式开发板介绍
- 实现lightbox效果
- Greedy 贪心算法
- numpy | 取矩阵非零元素