APP下载

基于SSD算法的超市收银系统开发*

2019-06-10孙璐阳

通信技术 2019年5期
关键词:商品信息计价卷积

孙璐阳

(山东科技大学,山东 青岛 266590)

0 引 言

目前绝大多数超市收银大多以收银员使用扫码枪逐一扫码方式结算,这种方式浪费了大量的时 间[1],超市流量大时很容易造成“长队”现象,引起客户不满。为了解决这一现象,论文基于单点多框预测(Single Shot MultiBox Detector,SSD)深度学习算法[2],采用同时检测多个目标的图像识别方法来替代逐一扫码这种方式,可有效节省时间,降低“排长队”现象的发生。

1 总体设计方案

本系统主要由商品信息采集模块、商品检测模块、上位机计价模块三部分组成。

商品信息采集模块中,通过摄像头采集检测区域内商品的图像信息,并将信息汇聚到商品检测模块,以完成检测;在商品检测模块中,对采集到商品图像进行预处理以及图像处理后,与事先训练好的模型进行匹配,将识别后的结果送至上位机计价模块;上位机计价模块通过查询数据库,展示识别出的商品信息,并实现计价、结算、清零等功能。系统结构图如图1所示。

图1 系统结构

本系统基于PYNQ-Z2(基于Python生产力的Zynq-Z2系列,Python Productivity for Zynq-Z2)开发板进行开发,PYNQ-Z2开发板是Xilinx支持 PYNQ开源框架的第二代最新开发平台。PYNQ-Z2可以使用Python进行编程,并且提供了基于Web访问的Jupyter Notebook在线编辑工具。运行在先进精简指令集微处理器(Advanced RISC Machine,ARM)上的嵌入式Linux系统为PYNQ提供了软件基础平台,Python环境、Jupyter Notebook工具都在其上。

2 详细设计方案

2.1 商品信息采集模块

由于PYNQ既包含ARM处理器又包含现场可编程门阵列(Field-Programmable Gate Array,FPGA)。商品信息采集既可以通过ARM来实现,也可以通过FPGA来实现。由于ARM端已经对USB接口支持,而市面上的摄像头大多采用USB接口,所以图像采集部分通过ARM端来实现将降低系统开发的难度,且USB具有即插即用的特点,便于系统硬件的连接[3]。

将摄像头接至开发板的USB接口,在ARM端的Linux上配置好Linux环境,调用OpenCV的库函数,由ARM驱动USB接口进行指定区域内商品的图像采集和视频流输入。设计框图如图2所示。

图2 商品信息采集模块设计框图

2.2 商品检测模块

2.2.1 设计思路

这部分包含PYNQ和上位机两部分,在PYNQ上进行图像的预处理[4];在上位机上执行图像处理和识别。图像预处理包括通道顺序、图像尺寸、图像格式调整。准备阶段主要包括:商品图片数据集收集、标准视觉物体分类(Visual Object Classes,VOC)数据集制作、VOC转TFRecord格式、选择预训练模型、模型训练。

系统运行阶段主要包括:调用训练好的模型文件、调用模型商品检测。设计框图如图3所示。

图3 商品检测模块设计框图

2.2.2 SSD识别算法

本系统选用的是SSD(Single Shot MultiBox Detector)物体检测模型[5]。SSD物体检测模型是基于单个前向传播CNN网络(卷积神经网络),产生一系列固定大小的边界框,以及每一个边界框中包含物体实例的可能性。在预测期间,网络针对每个默认框中的每个存在对象类别生成分数,并且对框进行调整以更好地匹配对象形状,之后,对分数进行非极大值抑制(Non-maximum Suppression)得到最终的预测结果。另外,网络组合来自具有不同分辨率的多个特征图的预测,以适应处理各种尺寸的对象。在SSD结构中,以VGG-16作为基础网络,在基础网络之后添加额外的卷积层作为辅助结构,产生多尺度特征图检测:将卷积特征层添加到截断的基础末尾。这些层尺寸逐渐减小,得到多个尺度检测的预测值。检测的卷积模型对于每个特征层是不同的。

每个添加的特征层(或可选的基础网络的现有特征层)可以使用一组卷积滤波器产生固定的预测集合[6]。对于具有p个通道的大小为m×n的特征层,使用3×3×p卷积核卷积操作,产生类别的分数或相对于默认框的坐标偏移。在每个应用卷积核运算的m×n大小位置处,产生一个输出值。边界框偏移输出值是相对于默认框测量,默认框位置则相对于特征图产生。

SSD训练时需要建立真实标签和默认框之间的对应关系。位置损失(loc)和置信损失(conf)加权求和得到总体目标损失函数,如式(1)所示:

其中,N是先验框的正样本数量。这里 Xpij∈{1,0}为一个指示参数,当Xpij时表示第i个先验框与第j个ground truth匹配,并且ground truth的类别为p。c为类别置信度预测值。l为先验框的所对应边界框的位置预测值,而g是ground truth的位置参数。对于位置误差,其采用Smooth L1 loss,定义如式(2)、式(3)、式(4)所示:

2.2.3 模型训练

本部分工作主要包括:商品图片数据集收集、标准VOC数据集制作、VOC转TFRecord格式、选择预训练模型、模型训练。

商品图片数据集获取的主要方式是下载网络数据集以及超市实拍图片。创建标准VOC格式数据集,并且在获得图像数据集之后,通过注释工具创建VOC格式的数据集。VOC格式如下:

<annotation verified=”no”>

<folder>JPEGImages</folder>

<filename>image_10</filename> //文件名

<path>G:photosgoods_photosVOCdevkitJPEGImagesimage_10.jpg</path>

<source>

<database>Unknown</database>

</source>

<size> //文件大小属性

<width>780</width>

<height>520</height>

<depth>3</depth>

</size>

<segmented>0</segmented>

<object> //图片中的物体

<name>cup</name>

<pose>Unspecified</pose>

<truncated>0</truncated>

<Difficult>0</Difficult>

<bndbox> //物体位置

<xmin>424</xmin>

<ymin>371</ymin>

<xmax>490</xmax>

<ymax>468</ymax>

</bndbox>

</object>

</annotation>

VOC转TFRecord格式,TFRecord文件格式在图像识别中具有很好的应用效果,此格式最大的优点是每幅输入图像和与之关联的标签放在同一个文件中。TFRecord文件是一种二进制文件,其不对数据进行,所以可以被快速加载到内存中,因此它适合于大量的数据流,是作为深度学习理想的文件输入格式。使用SSD模型进行训练,训练完成后提取模型文件。

本系统利用python脚本文件create_pascal_tf_record.py将VOC格式的数据转换成TFRecord格式的数据文件。流程如图4所示。

2.3 上位机计价模块设计

本部分采用PYQT进行设计实现,主要包括连接数据库、展示识别结果、展示识别出的商品信息、计价、清零等功能。

考虑到由于物品检测区域有限,有时不能一次性检测完全顾客的商品。所以在设计的过程中,将“清零”按钮作为一次计价过程结束。

流程图如图5所示。

图4 流程图

图5 计价模块流程

商品的相关信息存储于数据库中。商品有唯一编号(id)、商品名(name)、品牌(brand)、生产商(producer)、价格(price)、折扣(discount)。

数据库详细设计如表1所示。

表1 数据库详细设计

3 结 语

系统利用深度学习技术,在超市商品结算时可对对多个目标商品同时检测、同时结算。为超市收银系统提供了一种新方案,在一定程度上提高了收银效率,节省了顾客排队等待的时间,使顾客能有良好的购物体验。目前本系统的商品识别准确率还有待提高。后续将逐步优化系统结构以及识别算法,以提升系统的准确性、实时性及实用性。

猜你喜欢

商品信息计价卷积
工程量清单计价模式下的工程预结算审核
基于3D-Winograd的快速卷积算法设计及FPGA实现
工程造价计价模式和造价控制分析
建筑工程预结算中的定额与清单计价应用
卷积神经网络的分析与设计
从滤波器理解卷积
备战双十一
基于傅里叶域卷积表示的目标跟踪算法
电子商务背景下商品信息检索问题研究
加强医院采购管理工作的思考与实施