CN114202652A - 一种基于Dish-YOLO的菜品识别方法和系统 - Google Patents
一种基于Dish-YOLO的菜品识别方法和系统 Download PDFInfo
- Publication number
- CN114202652A CN114202652A CN202111479887.3A CN202111479887A CN114202652A CN 114202652 A CN114202652 A CN 114202652A CN 202111479887 A CN202111479887 A CN 202111479887A CN 114202652 A CN114202652 A CN 114202652A
- Authority
- CN
- China
- Prior art keywords
- dish
- model
- identification
- picture
- dinner plate
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/217—Validation; Performance evaluation; Active pattern learning techniques
- G06F18/2178—Validation; Performance evaluation; Active pattern learning techniques based on feedback of a supervisor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/08—Payment architectures
- G06Q20/20—Point-of-sale [POS] network systems
- G06Q20/208—Input by product or record sensing, e.g. weighing or scanner processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/02—Marketing; Price estimation or determination; Fundraising
- G06Q30/0283—Price estimation or determination
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q50/00—Systems or methods specially adapted for specific business sectors, e.g. utilities or tourism
- G06Q50/10—Services
- G06Q50/12—Hotels or restaurants
Abstract
本发明公开了一种基于Dish‑YOLO的菜品识别方法和系统,属于图像识别领域。本发明包含菜品识别模块、辅助结算及数据集更新模块和模型训练及云存储模块三部分,先通过菜品识别模块对餐盘图片进行碗碟区域的定位和单菜品图片的菜品识别,再通过辅助结算及数据集更新模块对菜品识别结果和计价结果进行人工审核并更新云端训练数据集,最后通过模型训练及云存储模块对菜品识别模型进行云端训练并同步更新至餐厅本地端。本发明通过先定位再识别的菜品识别方法,结合辅助结算和云端训练,实现了传统手动收银结算模式和菜品自动识别结算模式的深度融合,使菜品智能识别结算系统具有更强的实用性和容错性。
Description
技术领域
本发明属于图像识别领域,具体涉及一种基于Dish-YOLO的菜品识别方法和系统。
背景技术
餐饮行业的传统收银工作具有菜品种类多难以识记、工作重复度高的问题,改革势在必行。近年来,随着工业智能化的快速发展,餐饮行业的也逐步在走向智能化的道路,逐步出现了众多的菜品智能识别的解决方案。菜品智能识别可以极大的减少收银员结算时间,提高了工作效率,减少了排队和等待的时间,进而提升盈利水平。从目前来看,解决方案主要包括两类:
第一类,在碗碟中添加芯片,利用射频技术来识别碗碟进而区分菜品的方式。该解决方案主要通过射频技术将不同菜品对应的价格信息输入餐盘的芯片中,通过读取芯片中的信息来区别不同的菜价。例如中国专利号CN 109345737 A,专利名称:智能餐饮结算系统及方法和介质,该专利利用射频技术将不同价格类别菜品对应的子分类编码信息输入到盛菜餐盘的芯片中,通过读取到的子分类器编码信息还原对应的菜品价格信息。该解决方法属于间接识别菜品的方法,需要对碗碟额外添加芯片,成本高,灵活性差,且芯片在高温清洗过程中易损坏或腐蚀。
第二类,直接使用菜品本身的特征进行识别的方式。该方法直接利用菜品的图片,使用机器学习和深度学习的方法对菜品进行训练,得到不同菜品的特征,进而通过识别直接获得菜品的价格信息。例如中国专利号CN 111128341 A,专利名称:一种基于深度学习的菜品识别APP,利用菜品的训练集和测试集进行模型的训练,调用训练好的模型对菜品进行识别,并显示识别结果。该方法训练模型所需要的训练集固定,不能根据不同的使用用户来生成专属的识别模型,且因为环境改变而导致的光线变化等因素也会导致识别结果的不准确。
发明内容
为解决上述方案中存在的诸多问题,提供一种可以实际使用到各种不同环境餐厅的菜品智能识别结算解决方案,本发明提出了一种基于Dish-YOLO的菜品识别方法和系统,将传统手动收银结算模式和菜品自动识别结算模式进行深度融合,使菜品智能识别结算系统具有更强的实用性和容错性。
本发明所采用的具体技术方案如下:
第一方面,本发明提供了一种基于Dish-YOLO的菜品识别方法,其包括:
餐厅本地端获取待识别的餐盘图片,所述餐盘图片中含有目标顾客所选购的一个或多个以碗碟形式盛放并置于餐盘上的菜品,利用经过训练的Dish-YOLO模型对所述餐盘图片中的每个菜品进行碗碟区域的定位,进而提取所述餐盘图片中每个菜品的单菜品图片;再将所述餐盘图片中每个菜品的单菜品图片分别输入经过训练的菜品识别模型中,识别得到所述餐盘图片中所包含的所有菜品,形成菜品识别结果;按照预设的菜品单价,对所述餐盘图片中所包含的所有菜品进行计价,形成计价结果;所述Dish-YOLO模型采用改进的YOLOv3模型,由YOLOv3模型通过舍弃52*52尺度层但保留13*13和26*26两个尺度层后重新分配锚点框得到;
餐厅本地端获取所述餐盘图片的菜品识别结果以及计价结果,将其发送给本地的人工审核端并接收人工审核端下发的核验指令,若收到核验正确指令则进入支付环节,若收到核验错误指令则接收人工审核端的更改数据,并基于人工审核端更改后的菜品识别结果和计价结果进入支付环节;将每一轮进入支付环节的所述餐盘图片以及菜品识别结果更新至所述菜品识别模型的云端训练数据集中;
当餐厅本地端收到针对新菜品录入的餐盘图片后将其发送至云端,在云端利用所述经过训练的Dish-YOLO模型对餐盘图片中的新菜品进行目标定位,提取出新菜品的单菜品图片再生成标注后的训练样本并加入所述菜品识别模型的云端训练数据集中;所述菜品识别模型的云端训练数据集出现更新后,在云端重新利用更新后的训练数据集对菜品识别模型进行训练更新网络参数,并在训练完毕后通知餐厅本地端更新同步。
作为上述第一方面的优选,所述Dish-YOLO模型在每个餐厅本地端投入使用前,预先利用由该餐厅本地端上传的图片数据集进行训练,且该图片数据集中包含不同的餐盘图片,每张餐盘图片中均包含以碗碟形式盛放并置于餐盘上的菜品,所有餐盘图片中的菜品应当涵盖该餐厅所售的所有菜品,且该图片数据集需经过数据增强扩大样本量。
作为上述第一方面的优选,所述Dish-YOLO模型中,共设置16个锚点框,分别为(12,46)、(16,111)、(22,76)、(39,72)、(22,166)、(30,113)、(75,79)、(33,198)、(49,148)、(40,282)、(57,327)、(291,53)、(64,205)、(94,294)、(135,154)和(194,310),每一个尺度分别借助锚点框预测8个目标边框。
作为上述第一方面的优选,所述Dish-YOLO模型和所述菜品识别模型的训练均在云端服务器中进行,训练完毕的模型保存于云端服务器中,供餐厅本地端下载。
作为上述第一方面的优选,所述菜品识别模型为VGG16网络模型。
第二方面,本发明提供了一种基于Dish-YOLO的菜品识别系统,其包括:
菜品识别模块,用于在餐厅本地端获取待识别的餐盘图片,所述餐盘图片中含有目标顾客所选购的一个或多个以碗碟形式盛放并置于餐盘上的菜品,利用经过训练的Dish-YOLO模型对所述餐盘图片中的每个菜品进行碗碟区域的定位,进而提取所述餐盘图片中每个菜品的单菜品图片;再将所述餐盘图片中每个菜品的单菜品图片分别输入经过训练的菜品识别模型中,识别得到所述餐盘图片中所包含的所有菜品,形成菜品识别结果;按照预设的菜品单价,对所述餐盘图片中所包含的所有菜品进行计价,形成计价结果;所述Dish-YOLO模型采用改进的YOLOv3模型,由YOLOv3模型通过舍弃52*52尺度层但保留13*13和26*26两个尺度层后重新分配锚点框得到;
辅助结算及数据集更新模块,用于在餐厅本地端获取所述餐盘图片的菜品识别结果以及计价结果,将其发送给本地的人工审核端并接收人工审核端下发的核验指令,若收到核验正确指令则进入支付环节,若收到核验错误指令则接收人工审核端的更改数据,并基于人工审核端更改后的菜品识别结果和计价结果进入支付环节;将每一轮进入支付环节的所述餐盘图片以及菜品识别结果更新至所述菜品识别模型的云端训练数据集中;
模型训练及云存储模块,用于接收餐厅本地端针对录入的新菜品上传的餐盘图片,在云端利用所述经过训练的Dish-YOLO模型对餐盘图片中的新菜品进行目标定位,提取出新菜品的单菜品图片再生成标注后的训练样本并加入所述菜品识别模型的云端训练数据集中;所述菜品识别模型的云端训练数据集出现更新后,在云端重新利用更新后的训练数据集对菜品识别模型进行训练更新网络参数,并在训练完毕后通知餐厅本地端更新同步。
作为上述第二方面的优选,所述Dish-YOLO模型在每个餐厅本地端投入使用前,预先利用由该餐厅本地端上传的图片数据集进行训练,且该图片数据集中包含不同的餐盘图片,每张餐盘图片中均包含以碗碟形式盛放并置于餐盘上的菜品,所有餐盘图片中的菜品应当涵盖该餐厅所售的所有菜品,且该图片数据集需经过数据增强扩大样本量。
作为上述第二方面的优选,所述Dish-YOLO模型中,共设置16个锚点框,分别为(12,46)、(16,111)、(22,76)、(39,72)、(22,166)、(30,113)、(75,79)、(33,198)、(49,148)、(40,282)、(57,327)、(291,53)、(64,205)、(94,294)、(135,154)和(194,310),每一个尺度分别借助锚点框预测8个目标边框。
作为上述第二方面的优选,所述Dish-YOLO模型和所述菜品识别模型的训练均在云端服务器中进行,训练完毕的模型保存于云端服务器中,供餐厅本地端下载。
作为上述第二方面的优选,所述菜品识别模型为VGG16网络模型。
本发明相对于现有技术而言,具有以下有益效果:
1)本发明提出的菜品识别方法准确率高,训练时间短。本发明抛弃了常用的OneStage的方法,虽然One Stage方法具有检测速度快的优点,但是其训练时间长、识别精度差,不适用于菜品识别场景。本发明选用先定位再识别的方法,其中定位模型只需要在使用初期采集数据集训练一次,便可长期使用;分类识别模型可以根据每日菜谱实时训练,其训练时间仅需10~15分钟,且准确率能达到94%左右。
2)本发明的菜品识别方法中,模型的数据集可以实现自动更新,受环境因素的影响小。本发明可在菜品识别的同时自动保存菜品图片,由辅助结算及数据集更新模块将其添加到训练数据集中。在环境因素(如光线)改变时,可将菜品的最新环境信息加入到训练集中进行训练,削弱环境变化对菜品识别准确率的影响。
3)本发明提出的菜品识别方法具有更高的适用性和实用性。本发明采用传统收银方式和菜品图片识别相结合的方式,即弥补了传统收银系统的繁重的识记菜品编码的缺陷,又增加了菜品识别方法的容错性,因此本发明的方法和系统具有更强的实用性。
附图说明
图1为基于Dish-YOLO的菜品识别方法和系统的流程图;
图2为Dish-YOLO模型的原始图片样本样例;
图3为Dish-YOLO模型的图片样本标注样例;
图4为Dish-YOLO网络结构图;
图5为餐厅本地端中识别结果供人工审核时的UI界面示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明的具体实施方式做详细的说明。在下面的描述中阐述了很多具体细节以便于充分理解本发明。但是本发明能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似改进,因此本发明不受下面公开的具体实施例的限制。本发明各个实施例中的技术特征在没有相互冲突的前提下,均可进行相应组合。
在本发明的一个较佳实施例中,提供了一种基于Dish-YOLO的菜品识别方法,该方法建立在餐厅本地端和云端服务器之上,其中餐厅本地端是指实际售卖菜品的餐厅中安装的客户端,而云端服务器则通过有线或者无线网络与餐厅本地的客户端建立通信连接,以此来传递数据。餐厅本地端的常见载体是带有摄像头和上位机的自动结算设备,摄像头用于拍摄顾客取菜后的餐盘得到餐盘图片,而上位机则通过下位机获取餐盘图片,并通过显示屏幕为餐厅管理人员提供进行审核、修改、控制等操作的交互界面。
如图1所示,该基于Dish-YOLO的菜品识别方法包括如下1)~3)所示的流程,每个子流程可以通过相应的功能模块来实现具体的执行功能。下面分别对子流程1)~3)进行详细描述。
1)通过菜品识别模块对餐盘图片进行碗碟区域的定位和单菜品图片的菜品识别:
对于目标顾客取菜后的餐盘,餐厅本地端通过摄像头获取餐盘区域的图像作为待识别的餐盘图片,在该餐盘图片中含有目标顾客所选购的一个或多个以碗碟形式盛放并置于餐盘上的菜品。利用经过训练的Dish-YOLO模型对餐盘图片中的每个菜品进行碗碟区域的定位,得到每一个菜品的碗碟区域定位框,进而根据定位框提取该餐盘图片中每个菜品的单菜品图片。再将餐盘图片中每个菜品的单菜品图片分别输入经过训练的菜品识别模型中,识别得到该餐盘图片中所包含的所有菜品,形成菜品识别结果。此菜品识别结果中包含了餐盘图片中每一个定位框中的菜品分类结果。当识别得到餐盘图片中所包含的所有菜品后,即可按照预设的每种菜品的菜品单价,对餐盘图片中所包含的所有菜品进行计价,形成计价结果。为了便于进行后续的展示和分析,该计价结果中应当包含菜品种类、单价、数量、单菜品总价这几个单项信息,以及由单项信息汇总形成的目标顾客的所有选构菜品的总价。
需要特别说明的是,本发明中的Dish-YOLO模型是以YOLOv3模型为基础进行改进的。通过对大量的待识别的餐盘图片的分析发现,待识别菜品区域往往占整张图像的占比大小要普遍高于十分之一,属于YOLOv3的中、大型目标尺度,极少用到小型目标的尺度。因此本发明中对YOLOv3模型进行改进,舍弃YOLOv3的52*52尺度层,只保留13*13和26*26两个尺度层,并且为了适应于尺度层数量的变化,本发明还在较小特征图给大目标分配更为准确的锚点框,最终将改进后的模型命名为Dish-YOLO。最终的Dish-YOLO模型结构如图4所示。
由于将YOLOv3的3个尺度修改为2个尺度后,需要对锚点框进行重新确定,具体可以以最终的定位效果为依据进行优化。本实施例中取16个锚点框,分别为(12,46)、(16,111)、(22,76)、(39,72)、(22,166)、(30,113)、(75,79)、(33,198)、(49,148)、(40,282)、(57,327)、(291,53)、(64,205)、(94,294)、(135,154)、(194,310)。在每个尺度上的每一个单元格借助8个锚点框预测8个目标边框。
该Dish-YOLO模型在每个餐厅本地端投入使用前,需要预先利用由该餐厅本地端上传的图片数据集进行训练。且为了保证Dish-YOLO模型定位的可靠性,该图片数据集中包含不同的餐盘图片,每张餐盘图片中均包含以碗碟形式盛放并置于餐盘上的菜品,该图片数据集中的所有餐盘图片中的菜品应当涵盖该餐厅所售的所有菜品以及盛放菜品所使用的碗碟类型。而且为了保证Dish-YOLO模型的定位鲁棒性,该图片数据集需经过数据增强扩大样本量,数据增强的方式可以包括图像旋转、缩放、平移、亮度调整、对比度调整等等。在实际测试中,该Dish-YOLO模型相对于原始的YOLOv3模型能够更好的适用于餐盘图片中的餐盘区域定位,提高了定位的准确率。
另外,在本发明中可以采用任意可行的分类模型作为菜品识别模型,常见的是卷积神经网络等多分类器。本实施例中,菜品识别模型采用VGG16网络模型,其具体网络结果属于现有技术,对此不再赘述。
上述Dish-YOLO模型和VGG16网络模型的具体训练方法可采用现有技术来实现,对此不作限定。
实际测试发现,通过采用先定位再识别的方式,该VGG16网络模型可以根据每日菜谱实时训练,其训练时间仅需10~15分钟,且最终的菜品识别准确率能达到94%左右。
2)通过辅助结算及数据集更新模块对菜品识别结果和计价结果进行人工审核并更新云端训练数据集:
餐厅本地端获取上述1)步骤得到的餐盘图片的菜品识别结果以及计价结果,将其发送给本地的人工审核端。在人工审核端处,餐厅管理人员可以通过设备屏幕直接查看菜品识别结果以及计价结果,并快速核对其与顾客的实际取餐结果是否匹配,然后通过设备屏幕确认是否进入支付环节。该确认操作将对应生成核验指令并发送给辅助结算及数据集更新模块,若收到核验正确指令则进入支付环节,若收到核验错误指令则接收人工审核端的更改数据,并基于人工审核端更改后的菜品识别结果和计价结果进入支付环节。上述设备屏幕确认操作可以通过在设备屏幕的UI界面上提供相应的按钮来实现,例如设置确认支付和修改两类按钮,点击确认支付按钮可以直接进入支付环节,而点击修改按钮,则可以对餐盘图片中的菜品识别结果进行修改,并按照修改后的菜品识别结果重新生成计价结果。由此,将传统手动收银结算模式和菜品自动识别结算模式进行了深度融合,使菜品智能识别结算系统具有更强的实用性和容错性。当菜品识别结果的准确率不断上升后,管理人员仅需要简单核对即可进行支付,大大节省了手动输入菜品所需的时间。
另外,为了尽可能提高菜品识别结果的准确率,辅助结算及数据集更新模块中还需要将每一轮最终进入支付环节的餐盘图片以及菜品识别结果更新至菜品识别模型的云端训练数据集中。需注意的是,如果菜品识别模型识别得到的菜品识别结果经过了人工审核端的修改,则上传云端的应当是经过人工修改后的菜品识别结果,以保证准确度。
3)通过模型训练及云存储模块对菜品识别模型进行云端训练并同步更新至餐厅本地端:
当餐厅本地端收到针对新菜品录入的餐盘图片后将其发送至云端,在云端利用前述经过训练的Dish-YOLO模型对餐盘图片中的新菜品进行目标定位,提取出新菜品的单菜品图片再生成标注后的训练样本并加入菜品识别模型的云端训练数据集中。需注意的是,餐厅对于新菜品的录入会存在于该餐厅首次使用本发明方法的时候以及餐厅对菜品进行更新的时候,因此每当餐厅本地端收到新菜品的图片后,都需要在投入使用前重新训练VGG16网络模型作为菜品识别模型,以便于该模型可以识别新的菜品。
另外,不论是新菜品的录入,还是辅助结算及数据集更新模块对已有菜品的样本数据进行了上传扩充,云端训练数据集都会出现更新。当菜品识别模型的云端训练数据集出现更新后,都需要在云端重新利用更新后的训练数据集对菜品识别模型进行训练更新网络参数,并在训练完毕后通知餐厅本地端更新同步。当然,这种模型的重训练更新不一定是实时的,除非是需要录入新的菜品并立即投入使用,否则模型的重训练更新可以在累积了一定量的新样本后进行一次重训练和更新,以节省计算资源,避免餐厅本地端的更新过于频繁。
由此,Dish-YOLO模型和菜品识别模型的训练均在云端服务器中进行,训练完毕的模型保存于云端服务器中,供餐厅本地端下载。餐厅本地端无需进行模型训练,仅需要更新模型的参数即可,因此大大降低了对于餐厅本地端相关设备的性能要求,节省硬件和运行成本。一般而言,除非餐厅中的菜品盛放方式或者碗碟形式发生了重大变化,否则Dish-YOLO模型可以长期复用,无需更新,但菜品识别模型需要不断更新保证其准确率。
本发明采用菜品识别为主,识别出错时手动更改进行辅助的思路,可以大大节省餐厅的收银所需时间。与上述实施例中基于Dish-YOLO的菜品识别方法对应的是,本发明还可以进一步提供一种基于Dish-YOLO的菜品识别系统,该系统中包含了菜品识别模块、辅助结算及数据集更新模块和模型训练及云存储模块,菜品识别模块用于实现上述的子流程1),辅助结算及数据集更新模块用于实现上述的子流程2),模型训练及云存储模块用于实现上述的子流程3)。
总体而言,三个模块之间进行信息互通,彼此依存,在使用过程中能够不断迭代更新,逐渐优化使用体验。菜品识别模块主要负责对顾客购买的菜品进行识别并完成计价工作,将计价的结果交付给辅助结算模块;在菜品识别的同时,自动采集新的菜品图片,交付给辅助结算及数据集更新模块。而辅助结算及数据集更新模块主要对图片识别模块得到的识别结果和计价结果进行核验,如果识别成功没有出错则直接进入支付环节,如果发现识别错误的情况则进行手动更改,并将最终的结果用于支付环节;同时期将识别结果图片自动上传至对应菜品的识别模型数据集中,自动更新菜品识别模型数据集,进一步提高菜品识别的准确率。另外,模型训练及云存储模块负责进行菜品图片的录入,制作菜品识别模型数据集,餐厅可随时选择参与训练的菜品更新菜品分类模型。同时该模块将辅助结算及数据集更新模块新得到的菜品图片与之前的菜品图片训练集进行融合,重新进行模型训练,增加菜品识别模型的鲁棒性和健壮性,进而不断地提高图片识别的准确率。
为了使本领域技术人员更好的理解本发明的具体实现,下面通过一个具体实例来展示上述1)~3)所示的Dish-YOLO的菜品识别方法以及系统的构建和使用过程。
实施例
在本实例中,展示了上述1)~3)所示的Dish-YOLO的菜品识别方法以及系统的构建和使用过程,具体包括如下步骤:
一、餐厅模型训练及云存储模块的初始化构建
步骤1.1定位模型数据集的制作与数据预处理
在本实例中,新开餐厅s需手动输入的餐盘图片数据表示编号为s的店铺用于定位训练的第i张图片),使用LabelImg标注工具对图片中的菜品区域进行标注得到与目标检测不同的是,本方法将所有菜品标注为同一类,即类别bowl。如图1所示为其中一个原始的餐盘图片样本,而该图片样本经过标注,即可形成如图2所示的标注样本。
将用于Dish-YOLO定位模型训练的原始图片数据和标注框信息作为输入数据集,首先将传入的图像padding为416*416大小,然后将图像在水平或者垂直方向上平移-0.2倍~0.2倍,对图像进行随机的缩小或者放大0.2倍,将图像进行随机的翻转,得到镜像图像。通过上述这几种方法对输入数据集进行增强处理。
步骤1.2Dish-YOLO网络模型的搭建、训练与保存;
本实例的定位模型基于YOLOv3模型进行改进,舍弃YOLOv3的52*52尺度层,只保留13*13和26*26两个尺度层,在较小特征图给大目标分配更为准确的锚点框,将改进后的模型命名为Dish-YOLO。且本实施例将YOLOv3的3个尺度修改为2个尺度后,需要对锚点框进行重新确定,取16个锚点框,分别为(12,46)、(16,111)、(22,76)、(39,72)、(22,166)、(30,113)、(75,79)、(33,198)、(49,148)、(40,282)、(57,327)、(291,53)、(64,205)、(94,294)、(135,154)、(194,310)。在每个尺度上的每一个单元格借助8个锚点框预测8个目标边框。最终的Dish-YOLO模型结构如图4所示。
将输入数据输入到Dish-YOLO中开始训练模型,计算网络准确率。计算准确率时使用测试集的形式,将其输入到训练好的神经网络中,根据测试集中每个样本预测值和真实值是否一致来统计准确率。当测试集损失值在50个epoch中变化不再超过0.05时,认为符合模型训练的要求,则保存模型,命名为Dish-YOLOModel(s),否则继续训练。
定位模型Dish-YOLOModel(s)用于餐盘图片中单个菜品位置的定位,当餐厅的餐具形状、餐具大小固定不变时,该定位模型即可长期使用,不需要经常更新。
步骤1.3菜品识别模型数据集的制作与数据预处理
1.制作数据集:本实例中菜品识别模型的训练数据集首先来自于餐厅输入的餐盘图片,用表示第i类菜品中的第j张图片。首先使用步骤1.2得到的定位模型Dish-YOLOModel(s)定位到餐盘图片中单个菜品的餐盘区域的位置,得到菜品的位置信息top,bottom,left,right,分别表示菜品位置的上、下、左、右的坐标值,根据坐标信息将菜品裁剪出来,得到图片对得到的进行数据增强操作得到菜品识别模型的训练集Dish(i)train,并从得到的训练集Dish(i)train中随机选出20%的图片作为测试集Dish(i)test。
另外,对于新餐厅而言其菜品识别模型的训练数据集仅包含餐厅输入的餐盘图片
如果辅助结算及数据集更新模块在订单结算后上传了新的餐盘图片,亦可将这两部分菜品数据进行融合,得到菜品识别数据集,用于进行菜品识别模型的训练。
2.数据集预处理:将得到的Dish(i)train图片等比例缩放成224*224大小,并对边缘进行边缘填充,然后对图像进行翻转,改变图像对比度和亮度等操作进行数据增强。
步骤1.4菜品识别模型的训练与保存
1.加载训练数据,对图像数据进行处理,生成模型需要的输入和输出数据格式。输入数据为训练集Dish(i)train,对图像数据统一除以255归一化处理,保证数据值在0~1之间,之后将图像转换成512*512的数值矩阵,输入到VGG16网络中进行训练。根据输入的图像特征,选择合适的超参数搭建卷积神经网络模型,训练神经网络。损失函数使用categorical_crossentropy,公式为:
2.开始训练模型,计算网络准确率。使用测试集的形式,将其输入到训练好的神经网络中,根据测试集中每个样本预测值和真实值是否一致来统计准确率。当测试集损失值在12个epoch中变化不再超过0.05时,我们认为符合要求,则保存模型,否则继续训练。得到的模型根据店铺标识s和训练版本标识m命名为VGGModel(s)m。
二、菜品识别模块的使用
菜品识别模块首先需要从模型训练及云存储模块中下载训练好的Dish-YOLOModel(s),同时检测到VGGModel(s)m模型有更新时会提示餐厅人员进行下载。定位模型Dish-YOLOModel(s)和菜品识别模型VGGModel(s)m是菜品识别模块工作的基础。
菜品识别模块用于和顾客进行交互,采集获取当前场景中餐盘菜品图像数据。当采集到餐盘中的餐盘图片数据后,会进入菜品识别流程,具体步骤如下:
步骤2.1菜品定位
使用训练得到的Dish-YOLOModel(s)模型,对需要识别的图片进行定位,得到每一个菜品的top,bottom,left,right位置信息,并根据位置信息裁剪得到单个菜品的单菜品图片。
步骤2.2菜品识别
对步骤2.1得到的单菜品图片利用对应的菜品识别模型VGGModel(s)m进行识别,得到菜品的识别结果。
三、辅助结算及数据集更新模块流程
若遇到因环境突变、用餐人员餐盘位置放置不正确导致的识别图片采集不合理等不确定因素,可能导致的识别结果出错的问题,本实例中对此提供了相应的辅助结算功能。同时,在每次结算完成后还可以将采集得到的识别图片添加到对应的图片识别数据集中进行融合,使图片识别数据集可以包含时间跨度更广的数据,极大的降低因环境变化对识别准确率的影响。该模块具体流程如下:
3.1结果核验与结算。本发明深度融合了传统收银方式和餐盘图片识别收银方式,首先对步骤2.2中的菜品识别结果进行展示,让收银人员对识别结果进行核验,如果出现识别错误则进行手动更改,直至结果没有错误时可进行支付。在本实例中,如图2所示,在设备屏幕上提供UI界面作为人工审核端,其展示了餐盘图片中的所有单菜品的定位框以及对对应菜品类别的识别结果,同时根据单价、数量列出了计价结果。在该界面中,提供了确认进入付款的选择按钮以及修改按钮。若收银人员确认该菜品识别结果和计价结果后,核验正确,则点击顾客所需的付款方式进入付款流程,若核验结果错误,则使用设备屏幕上人工审核端的修改功能对识别结果进行即时更改,更正每一个单菜品图片对应的菜品分类,然后进入支付流程。
3.2图片收集与数据集自动更新。在结算时自动将该订单收集到的餐盘图片进行存储并添加到菜品识别数据集中进行训练,得到更新后的菜品识别模型VGGModel(s)m+1,使数据集可以包含时间跨度更广的图片数据,可以很好地解决因为环境因素改变导致的识别准确度下降的问题。
本实例中的Dish-YOLO的菜品识别方法以及系统在实际运营过程中,能够准确识别菜品并快速进行计价,极大地减少了收银结算时间,提高了工作效率,减少了排队和等待的时间,进而提升了餐厅的智能化水平。
以上所述的实施例只是本发明的一种较佳的方案,然其并非用以限制本发明。有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型。因此凡采取等同替换或等效变换的方式所获得的技术方案,均落在本发明的保护范围内。
Claims (10)
1.一种基于Dish-YOLO的菜品识别方法,其特征在于,包括:
餐厅本地端获取待识别的餐盘图片,所述餐盘图片中含有目标顾客所选购的一个或多个以碗碟形式盛放并置于餐盘上的菜品,利用经过训练的Dish-YOLO模型对所述餐盘图片中的每个菜品进行碗碟区域的定位,进而提取所述餐盘图片中每个菜品的单菜品图片;再将所述餐盘图片中每个菜品的单菜品图片分别输入经过训练的菜品识别模型中,识别得到所述餐盘图片中所包含的所有菜品,形成菜品识别结果;按照预设的菜品单价,对所述餐盘图片中所包含的所有菜品进行计价,形成计价结果;所述Dish-YOLO模型采用改进的YOLOv3模型,由YOLOv3模型通过舍弃52*52尺度层但保留13*13和26*26两个尺度层后重新分配锚点框得到;
餐厅本地端获取所述餐盘图片的菜品识别结果以及计价结果,将其发送给本地的人工审核端并接收人工审核端下发的核验指令,若收到核验正确指令则进入支付环节,若收到核验错误指令则接收人工审核端的更改数据,并基于人工审核端更改后的菜品识别结果和计价结果进入支付环节;将每一轮进入支付环节的所述餐盘图片以及菜品识别结果更新至所述菜品识别模型的云端训练数据集中;
当餐厅本地端收到针对新菜品录入的餐盘图片后将其发送至云端,在云端利用所述经过训练的Dish-YOLO模型对餐盘图片中的新菜品进行目标定位,提取出新菜品的单菜品图片再生成标注后的训练样本并加入所述菜品识别模型的云端训练数据集中;所述菜品识别模型的云端训练数据集出现更新后,在云端重新利用更新后的训练数据集对菜品识别模型进行训练更新网络参数,并在训练完毕后通知餐厅本地端更新同步。
2.如权利要求1所述的基于Dish-YOLO的菜品识别方法,其特征在于,所述Dish-YOLO模型在每个餐厅本地端投入使用前,预先利用由该餐厅本地端上传的图片数据集进行训练,且该图片数据集中包含不同的餐盘图片,每张餐盘图片中均包含以碗碟形式盛放并置于餐盘上的菜品,所有餐盘图片中的菜品应当涵盖该餐厅所售的所有菜品,且该图片数据集需经过数据增强扩大样本量。
3.如权利要求1所述的基于Dish-YOLO的菜品识别方法,其特征在于,所述Dish-YOLO模型中,共设置16个锚点框,分别为(12,46)、(16,111)、(22,76)、(39,72)、(22,166)、(30,113)、(75,79)、(33,198)、(49,148)、(40,282)、(57,327)、(291,53)、(64,205)、(94,294)、(135,154)和(194,310),每一个尺度分别借助锚点框预测8个目标边框。
4.如权利要求1所述的基于Dish-YOLO的菜品识别方法,其特征在于,所述Dish-YOLO模型和所述菜品识别模型的训练均在云端服务器中进行,训练完毕的模型保存于云端服务器中,供餐厅本地端下载。
5.如权利要求1所述的基于Dish-YOLO的菜品识别方法,其特征在于,所述菜品识别模型为VGG16网络模型。
6.一种基于Dish-YOLO的菜品识别系统,其特征在于,包括:
菜品识别模块,用于在餐厅本地端获取待识别的餐盘图片,所述餐盘图片中含有目标顾客所选购的一个或多个以碗碟形式盛放并置于餐盘上的菜品,利用经过训练的Dish-YOLO模型对所述餐盘图片中的每个菜品进行碗碟区域的定位,进而提取所述餐盘图片中每个菜品的单菜品图片;再将所述餐盘图片中每个菜品的单菜品图片分别输入经过训练的菜品识别模型中,识别得到所述餐盘图片中所包含的所有菜品,形成菜品识别结果;按照预设的菜品单价,对所述餐盘图片中所包含的所有菜品进行计价,形成计价结果;所述Dish-YOLO模型采用改进的YOLOv3模型,由YOLOv3模型通过舍弃52*52尺度层但保留13*13和26*26两个尺度层后重新分配锚点框得到;
辅助结算及数据集更新模块,用于在餐厅本地端获取所述餐盘图片的菜品识别结果以及计价结果,将其发送给本地的人工审核端并接收人工审核端下发的核验指令,若收到核验正确指令则进入支付环节,若收到核验错误指令则接收人工审核端的更改数据,并基于人工审核端更改后的菜品识别结果和计价结果进入支付环节;将每一轮进入支付环节的所述餐盘图片以及菜品识别结果更新至所述菜品识别模型的云端训练数据集中;
模型训练及云存储模块,用于接收餐厅本地端针对录入的新菜品上传的餐盘图片,在云端利用所述经过训练的Dish-YOLO模型对餐盘图片中的新菜品进行目标定位,提取出新菜品的单菜品图片再生成标注后的训练样本并加入所述菜品识别模型的云端训练数据集中;所述菜品识别模型的云端训练数据集出现更新后,在云端重新利用更新后的训练数据集对菜品识别模型进行训练更新网络参数,并在训练完毕后通知餐厅本地端更新同步。
7.如权利要求6所述的基于Dish-YOLO的菜品识别系统,其特征在于,所述Dish-YOLO模型在每个餐厅本地端投入使用前,预先利用由该餐厅本地端上传的图片数据集进行训练,且该图片数据集中包含不同的餐盘图片,每张餐盘图片中均包含以碗碟形式盛放并置于餐盘上的菜品,所有餐盘图片中的菜品应当涵盖该餐厅所售的所有菜品,且该图片数据集需经过数据增强扩大样本量。
8.如权利要求6所述的基于Dish-YOLO的菜品识别系统,其特征在于,所述Dish-YOLO模型中,共设置16个锚点框,分别为(12,46)、(16,111)、(22,76)、(39,72)、(22,166)、(30,113)、(75,79)、(33,198)、(49,148)、(40,282)、(57,327)、(291,53)、(64,205)、(94,294)、(135,154)和(194,310),每一个尺度分别借助锚点框预测8个目标边框。
9.如权利要求6所述的基于Dish-YOLO的菜品识别系统,其特征在于,所述Dish-YOLO模型和所述菜品识别模型的训练均在云端服务器中进行,训练完毕的模型保存于云端服务器中,供餐厅本地端下载。
10.如权利要求6所述的基于Dish-YOLO的菜品识别系统,其特征在于,所述菜品识别模型为VGG16网络模型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111479887.3A CN114202652A (zh) | 2021-12-06 | 2021-12-06 | 一种基于Dish-YOLO的菜品识别方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111479887.3A CN114202652A (zh) | 2021-12-06 | 2021-12-06 | 一种基于Dish-YOLO的菜品识别方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114202652A true CN114202652A (zh) | 2022-03-18 |
Family
ID=80650753
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111479887.3A Pending CN114202652A (zh) | 2021-12-06 | 2021-12-06 | 一种基于Dish-YOLO的菜品识别方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114202652A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116189358A (zh) * | 2023-02-24 | 2023-05-30 | 南京市商朝时代电子有限公司 | 一种具有菜品视觉识别功能的智能收款机系统及收款机 |
-
2021
- 2021-12-06 CN CN202111479887.3A patent/CN114202652A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116189358A (zh) * | 2023-02-24 | 2023-05-30 | 南京市商朝时代电子有限公司 | 一种具有菜品视觉识别功能的智能收款机系统及收款机 |
CN116189358B (zh) * | 2023-02-24 | 2023-12-12 | 南京市商朝时代电子有限公司 | 一种具有菜品视觉识别功能的智能收款机系统及收款机 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107103005A (zh) | 问答语料的收集方法及装置 | |
CN109830072A (zh) | 基于视觉识别的计价和收银装置、控制系统及方法 | |
CN111311316B (zh) | 商户画像的刻画方法、装置、电子设备、验证方法及系统 | |
CN111428599A (zh) | 票据识别方法、装置和设备 | |
CN107194835B (zh) | 一种酒店前台接待机器人系统 | |
CN111680603A (zh) | 一种菜品检测和识别方法 | |
CN112560754A (zh) | 票据信息的获取方法、装置、设备及存储介质 | |
CN109615290A (zh) | 用于获得送达地址的方法、装置、系统及介质 | |
CN111695747A (zh) | 智能派工方法、装置及计算机可读储存介质 | |
CN114202652A (zh) | 一种基于Dish-YOLO的菜品识别方法和系统 | |
CN111444792A (zh) | 票据识别方法、电子设备、存储介质及装置 | |
CN110046085A (zh) | 识别终端设备上显示的应用程序控件的方法及装置 | |
CN111178845A (zh) | 一种基于网络服务平台的数据标注系统及方法 | |
CN112270533A (zh) | 一种数据处理方法、装置、电子设备以及存储介质 | |
CN109857499B (zh) | 基于windows系统收银软件屏幕金额获取的通用方法 | |
CN116092231A (zh) | 票证识别方法、装置、终端设备以及存储介质 | |
CN110580505A (zh) | 一种基于餐盘识别的智慧收银方法 | |
CN109255290A (zh) | 菜单识别方法、装置、电子设备及存储介质 | |
CN109544134B (zh) | 便捷支付服务方法和系统 | |
CN110209575A (zh) | 测试文档生成方法、装置、电子设备及存储介质 | |
CN115761457A (zh) | 商品识别方法、装置、电子设备及计算机可读介质 | |
US20210374752A1 (en) | Information processing system, server, and computer readable recording medium | |
CN108132883A (zh) | 一种软件测试数据分析方法、装置、系统及存储介质 | |
CN109343852A (zh) | 一种操作界面帧图片的显示方法及装置 | |
CN116166889B (zh) | 酒店产品筛选方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |