一种基于YOLOv4-MobileNetv3和PyQt5的智能零售结算方法

文档序号:30450303发布日期:2022-06-18 01:45阅读:211来源:国知局
一种基于YOLOv4-MobileNetv3和PyQt5的智能零售结算方法
一种基于yolov4-mobilenetv3和pyqt5的智能零售结算方法
技术领域
1.本发明涉及计算机视觉与图像目标检测技术领域,具体涉及一种基于yolov4-mobilenetv3和pyqt5的智能零售结算方法。


背景技术:

2.零售行业是一国最重要的行业之一,随着手机支付和购物用户数量以及使用率的不断提高和数字化技术的不断发展,企业对数字化转型的意愿不断加强,未来我国智慧零售行业有望持续快速发展。许多行业分析师认为,智慧零售挑战与机遇并存,长期来看,借助5g、大数据、人工智能等新兴信息技术手段,智慧零售市场规模也将加速扩大。
3.当今的零售业属人力密集型行业,其中收银结算占有相当高的成本,主要消耗商家的人力成本和客户的时间成本,而市场中现有的大部分结算设备对客户群体有一定的使用门槛,这些都是零售业亟待解决的问题。近几年来随着人工智能的迅速发展,深度学习技术的逐渐成熟,人们渴望借助图像识别技术来实现零售业成本的降低,这也是零售业发展的大势所趋。
4.目前,计算机硬件的快速发展为深度学习提供了开发环境,深度学习作为机器学习一个重要的新研究领域,已成为计算机视觉领域的高效建模方法。本专利通过将现有的yolov4目标检测算法与面向移动端的轻量级网络mobilenetv3相结合,即可以达到良好的网络模型的检测分类精度,也能保持相对较高的计算速度,能够实现实时检测识别并一次性计算图像内商品总价金额的功能,在节省人力资源的同时又大大降低了时间成本。除此之外,为降低使用智能结算设备的难度,覆盖更广泛的客户群体,本专利使用pyqt5工具设计了一个用于智能零售结算的界面,具有人机交互功能并拥有良好的用户体验。


技术实现要素:

5.本发明的目的在于提供一种基于yolov4-mobilenetv3和pyqt5的智能零售结算方法,可以实现实时检测识别图像内的商品位置与种类、一次性计算总价并显示购物清单的功能,且具有一个拥有良好用户体验的人机交互界面。
6.为实现上述目的,本发明采用如下技术方案:
7.一种基于yolov4-mobilenet和pyqt5的智能零售结算方法,包括以下步骤:
8.步骤a:首先收集大量商品图片,收集到的图像中商品种类有35类,预处理后的图像共7055张,其中3621张多商品图像,3434张单商品图像,只对其中多商品图像进行数据增强,所述预处理包括旋转、滤波、增减亮度、添加噪声等一系列操作,然后对每张图片进行类别标注,生成xml标注文件并保存为训练集;
9.步骤b:确定yolov4算法选用的backbone为mobilenetv3-large网络,搭建基于mobilenetv3的实时商品检测分类网络的基础结构;
10.步骤c:构建yolov4和mobilenetv3相结合的神经网络模型,该网络是一个编码器-解码器架构,它能充分利用图像的多尺度特征,从而实现商品的检测和分类;
11.步骤d:用所述训练集训练搭建的神经网络模型,训练好的网络即会输出商品识别检测结果。
12.进一步的,所述步骤a具体步骤如下:
13.步骤a1:分别将原图像顺时针旋转90度、180度并保存;
14.步骤a2:将原图及旋转后的图片进行滤波、增加亮度、降低亮度、添加噪声这4项操作,使得多商品图像的数目扩大为原来的15倍;
15.步骤a3:使用labelimg可视化图像标定工具对所有图像进行标定,生成遵循pascal voc格式的xml标注文件,原图与标注所得xml文件生成训练神经网络所需数据集;
16.步骤a4:将所有数据集按比例分为训练集、验证集和测试集,并根据包含图片数据标注信息的xml文件生成训练模型需要的json文件。
17.进一步的,所述步骤b具体步骤如下:
18.步骤b1:使用pytorch框架搭建mobilenetv3网络,它是一个以深度可分离卷积核为基本结构的深度卷积神经网络,每一个深度可分离卷积核都由深度卷积核和点卷积核组成。mobilenetv3网络整体结构包括1个卷积核大小为3*3的卷积层、15个逆残差模块、3个卷积核大小为3*3的卷积层,且该网络无全连接层;
19.步骤b2:构建深度可分离卷积模块,所述的深度可分离卷积是一个可分解卷积的操作,包含depthwise卷积和pointwise卷积两部分。
20.进一步的,所述步骤c具体步骤如下:
21.步骤c1:对神经网络需要的超参数进行调优。调整超参数α卷积核个数的倍率,对比0.75和1两个值后,最终确定将其设置为1。设置学习率下降方式为exponentdecayscheduler,该方法为tf内置的一个生成动态减小学习率的函数,其公式如下:
[0022][0023]
将衰减率设为0.94。选取预测框所需的置信度confidence设置为0.5。非极大值抑制所需iou阈值为0.3,每张图预测框的数量最多不超过100个;
[0024]
步骤c2:输入数据经过特征提取网络mobilenetv3后将得到三个不同尺寸的特征图,大小分别为52
×
52
×
40,26
×
26
×
112以及13
×
13
×
160;
[0025]
步骤c3:根据提取到三个不同尺寸的特征图,调整通道为与原darknet53的三个特征图通道相同的通道数,得到三个有效特征图。对三个有效特征图进行卷积得到的结果一部分用于输出该特征图对应的预测结果,另一部分用于进行反卷积后与其他特征图进行结合,最终得到三个有效特征图的预测结果;
[0026]
步骤c4:将预先设置好的先验框调整到被划为s
×
s个grid cell区域的有效特征图上,根据yol0v4网络预测获取与先验框中心坐标相关的回归参数t
x
,ty,tw和th,计算预测的目标中心坐标计算公式是:
[0027]bx
=σ(t
x
)+c
x
[0028]by
=σ(ty)+cy[0029]
其中,t
x
,ty是yolov4网络预测的目标中心x,y坐标偏移量;c
x
,cy是目标中心所在网格左上角的x,y坐标;σ是sigmoid激活函数,将预测的偏移量限制在0-1区间内是预测的中心点不会超出对应范围,这样得到先验框的位置。计算先验框的宽高的计算公式是:
[0030][0031][0032]
其中,pw,ph为anchor模板的宽高,这样计算出先验框的宽与高,即得到一系列先验框的大小位置信息;
[0033]
步骤c5:将同一个目标的预测框按置信度从大至小进行排序,并将置信度最高的预测框分别与其余预测框计算iou,设两个检测框a1和a2,iou计算公式如下:
[0034][0035]
其作用是判断预测框和真实框的重合成度,若计算i0u结果不是最高且大于所述iou阈值0.3,则丢弃,多次重复以上操作筛选出最终预测框;
[0036]
步骤c6:根据得到的最终预测框的大小位置信息,根据中心点坐标及宽高计算预测框左上角点坐标,从而得出预测框在输出图片中的位置,并利用绘图函数将预测框,预测类别以及置信度绘制在输出图片上,得出最终结果。
[0037]
进一步的,步骤d具体步骤如下:训练搭建的神经网络,在训练前采用mosaic数据增强方法将四幅图像拼接至一张图像上,增加目标个数及数据的多样性;训练时的损失计算采用如下计算方式:
[0038]
l(o,c,o,c,l,g)=λ1l
conf
(o,c)+λ2l
cla
(o,c)+λ3l
loc
(l,g)
[0039]
其中λ1,λ2,λ3为平衡系数,l
conf
(o,c)为置信度损失,l
cla
(o,c)为分类损失,l
loc
(l,g)为定位损失,定位损失采用ciou损失。将每个epoch训练得到的权重文件全部保存,得到训练好的模型后,将测试数据送入模型,从而实现商品的检测及分类。
[0040]
本发明提供的针对采集到的图像的商品结算金额的计算显示方法,该方法包括:在标注数据时将商品对应金额标注在标签中,在预测测试数据后,读取经yolov4-mobilenetv1网络预测后得到的每个种类标签的第3至6位,将其从字符型转化为浮点型,并循环存入数组中,然后将最终得到的数组中所有元素求和,即得到所测图像中所有商品的结算金额,并将fps和结算金额一起显示在画面上。
[0041]
本发明提供的针对采集到的图像的商品购物清单显示方法,该方法包括:在经yolov4-mobilenetvl网络预测测试数据后,读取预测所得每个种类标签的第2至倒数第3位,将变量作为字符串循环存入数组中,即得到所测图像中所有商品的购物清单,将列表中的元素按序放入所述设计界面中的qlabel控件中。
[0042]
本发明提供的基于pyqt5的整体界面的设计方法,包括以下步骤:
[0043]
步骤1:整个设计界面包括7个用于显示布局文字的qlabel标签控件,3个用于显示实时图像以及识别结果的qlabel标签控件,10个用于显示购物商品清单的qlabel标签控件,1个用于显示计算金额的qlabel标签控件的qlabel标签控件以及3个qpushbutton按钮控件;
[0044]
步骤2:将7个用于显示布局文字的qlabel标签文件设置位置及内容,内容分别为:智能零售结算、实时图像、结算商品、识别结果、购物清单、计算和金额;
[0045]
步骤3:将3个用于显示实时图像以及识别结果的qlabel标签控件填充背景为白色并设置位置及大小,三者大小统一为481*361个像素;
[0046]
步骤4:将10个用于显示购物商品清单的的qlabel标签控件,将内容初始化为空,
等待网络得出检测结果,内容更新为商品清单;
[0047]
步骤5:将用于显示计算金额的qlabel标签控件内容置为“0.0”,等待网络得出检测结果,内容更新为计算得到的商品总计金额;
[0048]
步骤6:3个qpushbutton按钮控件大小置为100*30个像素,内容分别为“打开/关闭摄像头”,“点击结算”以及“确认结算”,按钮用来控制事件发生。
[0049]
本发明有与现有技术相比具有以下有益效果:
[0050]
一是使用yolov4算法,在实际应用中能够达到良好的检测精度且能保持相对较快的检测速度;二是将yolov4中的backbone由darknet53网络替换为面向移动端的轻量级网络mobilenetv3,保证网络性能的前提下大大减少了网络的计算参数;三是具有良好的人机交互设计界面,能够保证良好的用户体验。
附图说明
[0051]
图1智能零售结算方法的步骤流程图。
[0052]
图2mobilenet网络可分离卷积模块示意图。
[0053]
图3yolov4-mobilenetv3网络整体结构示意图。
[0054]
图4智能零售结算方法实时检测结果图。
[0055]
图5基于pyqt5设计的界面设计图。
[0056]
图6程序运行界面设计图。
具体实施方式
[0057]
下面结合实施例和附图详细说明本发明的技术方案,但保护范围不被此限制。
[0058]
实施例本发明的技术方案是提供一种基于yolov4-mobilenetv3和pyqt5的智能零售结算方法,分为四个部分,商品种类的识别检测、商品结算金额的计算、商品购物清单的显示和整体界面的设计,其具体流程如图1所示,包括如下步骤:
[0059]
1.商品种类的识别检测
[0060]
步骤1、收集大量商品图片,收集到的图像中商品种类有35类,预处理后的图像共7055张,其中3621张多商品图像,3434张单商品图像,只对其中多商品图像进行数据增强,所述预处理包括旋转、滤波、增减亮度、添加噪声等一系列操作,然后对每张图片进行类别标注,生成xml标注文件并保存为训练集,具体包括以下子步骤:
[0061]
(a)分别将原图像顺时针旋转90度、180度并保存;
[0062]
(b)将原图及旋转后的图片进行滤波、增加亮度、降低亮度、添加噪声这4项操作,使得多商品图像的数目扩大为原来的15倍;
[0063]
(c)使用labelimg可视化图像标定工具对所有图像进行标定,生成遵循pascal voc格式的xml标注文件,原图与标注所得xml文件生成训练神经网络所需数据集;
[0064]
(d)将所有数据集按比例分为训练集、验证集和测试集,并根据包含图片数据标注信息的xml文件生成训练模型需要的json文件。
[0065]
步骤2、确定yolov4算法选用的backbone为mobilenetv3-large网络,搭建基于mobilenetv3的实时商品检测分类网络的基础结构,具体包括以下子步骤:
[0066]
(a)使用pytorch框架搭建mobilenetv3网络,它是一个以深度可分离卷积核为基
本结构的深度卷积神经网络,每一个深度可分离卷积核都由深度卷积核和点卷积核组成。mobilenetv3网络整体结构包括1个卷积核大小为3*3的卷积层、15个逆残差模块、3个卷积核大小为3*3的卷积层,且该网络无全连接层;
[0067]
(b)构建深度可分离卷积模块,如图2所示,所述的深度可分离卷积是一个可分解卷积的操作,包含depthwise卷积和pointwise卷积两部分。
[0068]
步骤3、构建yol0v4和mobilenetv3相结合的神经网络模型,该网络是一个编码器-解码器架构,它能充分利用图像的多尺度特征,从而实现商品的检测和分类,它的整体结构如图3所示,具体包括以下子步骤:
[0069]
(a)对神经网络需要的超参数进行调优。调整超参数α卷积核个数的倍率,对比0.75和1两个值后,最终确定将其设置为1。设置学习率下降方式为exponentdecayscheduler,该方法为tf内置的一个生成动态减小学习率的函数,其公式如下:
[0070][0071]
将衰减率设为0.94。选取预测框所需的置信度confidence设置为0.5。非极大值抑制所需iou阈值为0.3,每张图预测框的数量最多不超过100个;
[0072]
(b)输入数据经过特征提取网络mobilenetv3后将得到三个不同尺寸的特征图;
[0073]
(c)根据提取到三个不同尺寸的特征图,对三个初始特征图进行卷积得到的结果一部分用于输出该特征图对应的预测结果,另一部分用于进行反卷积后与其他特征图进行结合,最终得到三个有效特征图的预测结果;
[0074]
(d)将预先设置好的先验框调整到被划为s
×
s个grid cell区域的有效特征图上,根据yolov4网络预测获取与先验框中心坐标相关的回归参数t
x
,ty,tw和th,计算预测的目标中心坐标计算公式是:
[0075]bx
=σ(t
x
)+c
x
[0076]by
=σ(ty)+cy[0077]
其中,t
x
,ty是yolov4网络预测的目标中心x,y坐标偏移量;c
x
,cy是目标中心所在网格左上角的x,y坐标;σ是sigmoid激活函数,将预测的偏移量限制在0-1区间内是预测的中心点不会超出对应范围,这样得到先验框的位置。计算先验框的宽高的计算公式是:
[0078][0079][0080]
其中,pw,ph为anchor模板的宽高,这样计算出先验框的宽与高,即得到一系列先验框的大小位置信息;
[0081]
(e)将同一个目标的预测框按置信度从大至小进行排序,并将置信度最高的预测框分别与其余预测框计算iou,设两个检测框a1和a2,iou计算公式如下:
[0082][0083]
其作用是判断预测框和真实框的重合成度,若计算iou结果不是最高且大于所述iou阈值0.3,则丢弃,多次重复以上操作筛选出最终预测框;
[0084]
(f)根据得到的最终预测框的大小位置信息,根据中心点坐标及宽高计算预测框左上角点坐标,从而得出预测框在输出图片中的位置,并利用绘图函数将预测框,预测类别
以及置信度绘制在输出图片上,得出最终结果。
[0085]
步骤4、用所述训练集训练搭建的神经网络模型,网络采用pytorch框架搭建,采用python编程语言实现,训练100个epoch,将每个epoch训练得到的权重文件全部保存,得到训练好的模型后,将测试数据送入模型,训练好的网络即会输出商品识别检测结果,如图4所示。
[0086]
2.商品结算金额的计算
[0087]
在标注数据时将商品对应金额标注在标签中,在预测测试数据后,读取经yolov4-mobilenetv1网络预测后得到的每个种类标签的第3至6位,将其从字符型转化为浮点型,并循环存入数组中,然后将最终得到的数组中所有元素求和,即得到所测图像中所有商品的结算金额,并将结算金额和实时检测fps一起显示在画面上。
[0088]
3.商品购物清单的显示
[0089]
在经yolov4-mobilenetv1网络预测测试数据后,读取预测所得每个种类标签的第2至倒数第3位,将变量作为字符串循环存入数组中,即得到所测图像中所有商品的购物清单,将列表中的元素按序放入所述设计界面中的qlabel控件中。
[0090]
4.整体界面的设计
[0091]
使用pyqt5工具进行界面设计,设计完成的界面如图5所示,当进行检测时,界面如图6所示,界面设计的具体步骤是:
[0092]
步骤1:整个设计界面包括7个用于显示布局文字的qlabel标签控件,3个用于显示实时图像以及识别结果的qlabel标签控件,10个用于显示购物商品清单的qlabel标签控件,1个用于显示计算金额的qlabel标签控件的qlabel标签控件以及3个qpushbutton按钮控件;
[0093]
步骤2:将7个用于显示布局文字的qlabel标签文件设置位置及内容,内容分别为:智能零售结算、实时图像、结算商品、识别结果、购物清单、计算和金额;
[0094]
步骤3:将3个用于显示实时图像以及识别结果的qlabel标签控件填充背景为白色并设置位置及大小,三者大小统一为481*361个像素;
[0095]
步骤4:将10个用于显示购物商品清单的的qlabel标签控件,将内容初始化为空,等待网络得出检测结果,内容更新为商品清单;
[0096]
步骤5:将用于显示计算金额的qlabel标签控件内容置为“0.0”,等待网络得出检测结果,内容更新为计算得到的商品总计金额;
[0097]
步骤6:3个qpushbutton按钮控件大小置为100*30个像素,内容分别为“打开/关闭摄像头”,“点击结算”以及“确认结算”,按钮用来控制事件发生。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1