一种基于深度学习的食品安全指标监测方法
文献发布时间:2023-06-19 12:02:28
技术领域
本发明涉及食品安全监测技术领域,特别是一种基于深度学习的食品安全指标监测方法。
背景技术
随着经济的发展,人们对食品安全正变得越来越重视。而食品安全中,食品的安全生产环节更是重中之重。目前针对食品安全生产的相关指标检测,如:工人服饰合规、食品添加剂摆放、老鼠等活体检测问题,主要都还是采用人工监测管控。该方式主要存在下述缺点:传统的人工监测用人成本高,且一般情况下监测人员活动范围小,容易疏漏、可视化差、问题无法回溯。
发明内容
本发明的目的在于,提供一种基于深度学习的食品安全指标监测方法。本发明具有监测范围广,监测效率高,追溯性好的特点。
本发明的技术方案:一种基于深度学习的食品安全指标监测方法,按下述步骤完成:
a.对现场采集数据按照食品安全指标进行数据标注,构建场景数据集;
b.利用场景数据集训练Faster-RCNN深度学习模型,构建目的识别模型;
c.利用目的识别模型对现场实时数据进行食品安全指标监测。
前述的基于深度学习的食品安全指标监测方法的步骤a中,所述的现场采集数据为视频数据。
前述的基于深度学习的食品安全指标监测方法的步骤a中,数据标注步骤具体如下:
a1.视频分割:将一个视频数据分割成一个以上的2000帧片段,并从中间隔选取10~20个作为采集片段;
a2.视频发布:将采集片段重新整理成视频片段,并导入vatic的内部数据库中生成视频片段——网页链接的序对;
a3.视频标注:通过视频片段——网页链接的序对调取视频片段,再通过vatic内部的算法,根据视频的前后帧关系,对视频片段进行标注;
a4.标注数据导出:利用python将已标注的视频片段的数据格式由txt格式转换为xml格式,并提取视频片段中已对应标注的图像文件构建场景数据集。
前述的基于深度学习的食品安全指标监测方法的步骤b中,目的识别模型的构建步骤具体如下:
b1.输入的来自场景数据集的图像文件经过缩放后,得到固定大小的图像;然后经过多层卷积层,包括13个卷积层,以及13个激活层和4个池化层,经过卷积计算后得到高层的抽象的feature map;
b2.RPN层对步骤b1中得到的高层的抽象的feature map进行学习,具体包括:使用一个n*n的滑动窗口,每个滑动窗口都映射到一个低位的特征;将所述高层的抽象的feature map输入到2个平行的全连接层中,其中一个全连接层为reg层,另一个为cls层;通过滑动窗口滑动,能够预测多个region proposals,将每个位置的最大可能建议的数量表示为k,则对于W*H大小的特征图,共有W*H*k个锚点;通过锚点与ground truth之间的IoU,用NMS对同一锚点进行筛选,学习reg层和cls层的参数,得到RPN网络;
b3.将原始的feature map和经过RPN输出的proposal boxes输入到ROI Pooling层,得到更高层的特征图,经过卷积和全连接层后,分别学习分类模型参数和预测模型参数;
b4.通过上述步骤构建得到完整的Faster-RCNN模型。
前述的基于深度学习的食品安全指标监测方法的步骤c中,具体监测步骤如下:
利用Faster-RCNN模型识别出现场实时数据中的人、工作服、食品添加剂、影响食品安全卫生的动物这些特征,以及相应特征对应的bounding box坐标边界;
当现场实时数据中所述影响食品安全卫生的动物出现频率超过预设标准时,食品安全指标不合格;
当现场实时数据中食品添加剂种类或使用量超过预设标准时,食品安全指标不合格;
当在现场实时数据中检测到人的bounding box和工作服之间的IoU的值为0,或人物边界内没有工作服,代表该工作人员没有穿工作服,食品安全指标不合格。
前述的基于深度学习的食品安全指标监测方法中,当场景数据集中需识别的某一特征的数据样本不足时,利用One-Shot learning中的Siamese网络对数据样本中该特征的相似图像进行平行学习,从而定义所述该特征与非该特征间编码差值,进而将识别该特征转变为识别除该特征外的其他特征。
前述的基于深度学习的食品安全指标监测方法中,食品安全指标监测经可视化绘制实时显示。
有益效果:与现有技术相比,本发明充分利用了大数据技术,通过运用Faster-RCNN深度学习模型对食品安全指标(食品安全指标包括食品生产中工作人员的工作服装规范、食品添加剂摆放规范,有无需要检疫的活体规范)进行识别检测,通过IoU算法,前后帧相关算法对数据进行处理,在数据量不足、数据场景复杂情况下,尽可能提升识别准确率和有效性,从而加大对食品生产过程环节的监管。
本发明提供了一套完整的标注系统,大大减少了前期数据处理相关的时间成本,并部署成web端,更加方便人员进行操作,也为后续模型进一步优化提供可能。此外,采用Faster-RCNN模型,通过模型加识别算法(即IoU算法),对检测数据做到了可视化功能,帮助系统操作人员快速、准确定位到食品生产人员的行为是否规范,即使没有及时识别,也可以将结果保存以供后续回溯。
综上,本发明提供一套前期数据处理标注的web服务,可以做到协同标注、检视,解决了视频标注过程中人员分散工作、视频标注工作量大等问题。
在实际应用中,本发明针对可能出现的场景数据集中某一特征数据样本(如:影响食品安全卫生的动物(如老鼠、蟑螂等)这一特征的数据样本)不足的情况,采用ont-shotLearning中Siamese网络的平行学习方法,将识别该特征转变为识别除该特征外的其他特征,有效解决了实际过程中可能出现的老鼠等特征样本不足的问题。
附图说明
图1是本发明流程示意图;
图2是数据标注流程图;
图3是Faster-RCNN模型图;
图4是RPN结构图;
图5是包含ROI pooling的结构图;
图6是回归窗口;
图7是IoU算法示意图;
图8是本发明可视化示意图。
具体实施方式
下面结合实施例对本发明作进一步的说明,但并不作为对本发明限制的依据。
实施例1。一种基于深度学习的食品安全指标监测方法,参见图1,按下述步骤完成,
a.对现场采集数据按照食品安全指标进行数据标注,构建场景数据集;
b.利用场景数据集训练Faster-RCNN深度学习模型,构建目的识别模型;
c.利用目的识别模型对现场实时数据进行食品安全指标监测。
步骤a中,所述的现场采集数据为视频数据。
步骤a中,数据标注,参见图2,步骤具体如下:
a1.视频分割:将一个视频数据分割成一个以上的2000帧片段,并从中间隔选取10~20个作为采集片段;
a2.视频发布:将采集片段重新整理成视频片段,并导入vatic的内部数据库中生成视频片段——网页链接的序对;Vatic是一个带有目标跟踪的半自动化视频标注工具;
a3.视频标注:通过视频片段——网页链接的序对调取视频片段,再通过vatic内部的算法,根据视频的前后帧关系,对视频片段进行标注;
a4.标注数据导出:利用python将已标注的视频片段的数据格式由txt格式转换为xml格式,并提取视频片段中已对应标注的图像文件构建场景数据集。
以下举例对所述的数据标注过程进行进一步说明:
数据的相关文件格式包括了avi、mp4、mpv等。数据标注具体可分为:视频分割;视频发布;视频标注;标注数据导出等步骤,下面给出具体含义:
视频分割:由于监控数据的格式保存时可能会出现不同的格式,且一般监控视频数据保存时往往是以小时(h)为单位进行保存,导致保存下来的视频很大。这样的数据不适合标注,因此,通过opencv加ffmepg的方式对视频进行分割,将视频分割成2000帧的小片段(约2min左右),由于一段监控视频中场景比较单一,为了减少冗余,每段监控选取10~20个片段即可,可以在分割过程中设置间隔,进而尽可能包含这段监控视频的全部特征。
视频发布:视频发布指的是通过vatic工具,将视频片段重新整理并导入vatic的内部数据库中。整理后,vatic给出了一组对应的网页链接。至此,视频发布生成了视频片段——网页链接的序对。
视频标注:现在工具主要是对图像进行标注,虽然视频可以理解成图像的序列,但是使用标注图像的方式标注视频会产生巨大的工作量。本发明中的视频发布指的是通过vatic工具,将分割的视频小片段生成对应的网页链接,链接中包含了这个小片段的所有信息。通过内部的算法,根据视频的前后帧关系,半自动的对视频进行标注,大大减少了标注的时间和用人成本。
标注数据导出:深度学习网络使用的数据和上述方法产生的数据格式可能不一致,本发明中通过python,提供了一种转换数据的方法,将导出的txt数据变成对应的xml数据,并提取对应的图像文件,供给模型训练。
步骤b中,目的识别模型的构建步骤具体如下:
b1.输入的来自场景数据集的图像文件经过缩放后,得到固定大小的图像;然后经过多层卷积层,包括13个卷积层,以及13个激活层和4个池化层,经过卷积计算后得到高层的抽象的feature map;
b2.RPN层对步骤b1中得到的高层的抽象的feature map进行学习,具体包括:使用一个n*n的滑动窗口,每个滑动窗口都映射到一个低位的特征;将所述高层的抽象的feature map输入到2个平行的全连接层中,其中一个全连接层为reg层,另一个为cls层;通过滑动窗口滑动,能够预测多个region proposals,将每个位置的最大可能建议的数量表示为k,则对于W*H大小的特征图,共有W*H*k个锚点;通过锚点与ground truth之间的IoU,用NMS对同一锚点进行筛选,学习reg层和cls层的参数,得到RPN网络;
b3.将原始的feature map和经过RPN输出的proposal boxes输入到ROI Pooling层,得到更高层的特征图(即前述的高层的抽象的feature map的递进),经过卷积和全连接层后,分别学习分类模型参数和预测模型参数;
b4.通过上述步骤构建得到完整的Faster-RCNN模型。
以下举例对所述的目的识别模型的构建进行进一步说明:
本发明采用Faster-RCNN深度学习模型训练目的识别模型,模型结果如下图3所示。Faster R-CNN模型现在是一个典型的基于深度学习的目标检测模型,现在介绍其中的几个主要概念:Region Proposal Network、ROI pooling、bounding box回归。
Region Proposal Network(RPN)
Faster-RCNN模型其核心部分是Region Proposal Network(以下简称RPN),RPN的核心思想是使用卷积神经网络直接产生region proposal,使用的方法本质上就是滑动窗口。RPN网络结构图如图4所示,假设给定600*1000的输入图像,经过卷积操作得到最后一层的卷积特征图(大小约为40*60),最后一层卷积层共有256个特征图(feature map)。在这个特征图上使用3*3的卷积核(滑动窗口)与特征图进行卷积,那么这个3*3的区域卷积后可以获得一个256维的特征向量。因为这个3*3的区域上,每一个特征图上得到一个1维向量,256个特性图即可得到256维特征向量。3*3滑动窗口中心点位置,对应预测输入图像3种尺度(128,256,512),3种长宽比(1:1,1:2,2:1)的region proposal,这种映射的机制称为锚(以下称之为anchor)。经过卷积一共产生了k=9个anchor。即每个3*3区域可以产生9个regionproposal。所以对于这个40*60的feature map,总共有约20000(40*60*9)个anchor,也就是预测20000个region proposal。后边接入到两个全连接层,即(分类层)Cls layer和(回归层)Reg layer分别用于分类和边框回归。cls layer包含2个元素,用于判别目标和非目标的估计概率。Reg layer包含4个坐标元素(x,y,h,w),用于确定目标位置。cls:正样本,与真实区域重叠大于0.7,负样本,与真实区域重叠小于0.3。Reg:返回区域位置。最后根据region proposal得分高低,选取前300个region proposal,作为Fast R-CNN的输入进行目标检测。
ROI pooling,参见图5,目标检测框架通常可以分为两个阶段:
(1)region proposal:给定一张输入image找出objects可能存在的所有位置。这一阶段的输出应该是一系列object可能位置的bounding box。这些通常称之为regionproposals或者regions of interest(ROI),在这一过程中用到的方法是基于滑动窗口的方式和selective search。
(2)final classification:确定上一阶段的每个region proposal是否属于目标一类或者背景。
这个框架存在的一些问题是:产生大量的region proposals会导致performanceproblems,很难达到实时目标检测。在处理速度方面是suboptimal。无法做到end-to-endtraining。这就是ROI pooling提出的根本原因,ROI pooling层能实现training和testing的显著加速,并提高检测准确率。该层有两个输入:
从具有多个卷积核池化的深度网络中获得的固定大小的feature maps;
一个表示所有ROI的N*5的矩阵,其中N表示ROI的数目。第一列表示图像index,其余四列表示其余的左上角和右下角坐标;
ROI pooling具体操作如下:
a.根据输入image,将ROI映射到feature map对应位置;
b.将映射后的区域划分为相同大小的sections(sections数量与输出的维度相同);
c.对每个sections进行max pooling操作;
d.这样我们就可以从不同大小的方框得到固定大小的相应的feature maps。值得一提的是,输出的feature maps的大小不取决于ROI和卷积feature maps大小。ROIpooling最大的好处就在于极大地提高了处理速度。
步骤c中,具体监测步骤如下:
利用Faster-RCNN模型识别出现场实时数据中的人、工作服、食品添加剂、影响食品安全卫生的动物这些特征,以及相应特征对应的bounding box坐标边界;影响食品安全卫生的动物包括老鼠、蟑螂等。
当现场实时数据中所述影响食品安全卫生的动物出现频率超过预设标准时,食品安全指标不合格;
当现场实时数据中食品添加剂种类或使用量超过预设标准时,食品安全指标不合格;
当在现场实时数据中检测到人的bounding box和工作服之间的IoU的值为0,或人物边界内没有工作服,代表该工作人员没有穿工作服,食品安全指标不合格。
以下举例对步骤c进行进一步说明:
bounding box(bbox)回归
对于窗口一般使用思维向量来表示,分别表示窗口的中心点坐标和宽高。对于图4-6,红色的框P代表原始的proposal,绿色的框代表目标的Ground Truth,我们的目标是寻找一种关系使得输入原始的窗口P经过映射得到一个跟真实窗口G更接近的回归窗口G′。
那么经过何种变换才能从图6中的窗口P变为G呢?下面给出一种思路:
Step1:先做平移(Δx,Δy),Δx=P
Step2:再做尺度缩放(S
由上述四个公式可以看出,我们需要学习d
检测结果是对每一个模型中的类别进行检测和识别。本文采用matplotlib库对结果进行绘制,并通过IoU算法原理对相关指标进行判断。
matplotlib绘制
绘制包括识别到的bbox以及对应的类别标签。例如,模型识别到了图像中包含人以及他所穿着的服装,则可以将人物的bbox绘制出来,模型还识别到了人物的衣服的bbox。考虑食品生产人员的衣着规范,相关人员必须穿着统一、规范的服装。如果检测见过中,人员只穿着了衣物,没有佩戴帽子,则是一个不合规范的行为。我们可以通过改变对应绘制框的颜色进行分辨。
IoU(Intersection over Union)算法
IoU是一种测量在特定数据集中检测相应物体准确度的一个标准。IoU是一个简单的测量标准,只要是在输出中得出一个预测范围(bounding box)的任务都可以用IoU来进行测量。IoU具体计算见图7。
IoU是两个区域重叠的部分除以两个区域的集合部分得出的结果,通过设定的阈值,与这个IoU计算结果比较。
当场景数据集中需识别的某一特征的数据样本不足时,利用One-Shot learning中的Siamese网络对数据样本中该特征的相似图像进行平行学习,从而定义所述该特征与非该特征间编码差值,进而将识别该特征转变为识别除该特征外的其他特征。
以影响食品安全卫生的动物中的老鼠为例,对One-Shot learning进行进一步说明:
针对老鼠数据集不足的情况,采用One-Shot learning方法,其基本思想如下:传统的深度学习模型往往需要大量的数据支持,而对于收集样本不足的时候,可以利用如下方法进行学习。假设我们现在只有10张老鼠的图像以及一系列其他物体的图像(比如老虎、狮子、猫等),One-Shot learning中的Siamese网络对2张相似的图像进行平行学习,得到2组特征,Siamese定义了2者之间的编码差值,这样问题从识别该物体是老鼠变成了该物体是除老鼠外的其他动物。另外一个例子,假设有A、B、C、D 4个人,我们要知道待识别的X是其中的A,可以通过对比X和B、C、D的编码值差,验证X不是B、C和D,从而达到X是A的结论。
食品安全指标监测经可视化绘制实时显示。
图像经过目的识别模型后,得到的是图像中物体的种类便签label以及相应的bounding box坐标边界和对应的识别概率。我们通过python的matplotlib库,对相应的bounding box进行可视化绘制,得到图像中实际的框,并对不同的结果(衣着规范与否、摆放位置规范与否、有无老鼠等)进行不同的显示。具体结果参见图8。
上述方法提供了一套完整的标注系统,大大减少了前期数据处理相关的时间成本,并部署成web端,更加方便人员进行操作,也为后续模型进一步优化提供可能。
此外,采用Faster-RCNN模型,这是一个高效的模型,通过模型加识别算法,对检测数据做到了可视化功能,帮助系统操作人员快速、准确定位到食品生产人员的行为是否规范,即使没有及时识别,也可以将结果保存以供后续回溯。
前述涉及的英文翻译如下:
所述的Faster-RCNN的中文意思为:更快的区域卷积神经网络;
所述的feature map的中文意思为:图像特征;
所述的reg层即为box-regression层,box-regression层的中文意思为:
边界框回归层;
所述的cls层即为box-classification层,box-classification层的中文意思为:边界框分类层;
所述的region proposals的中文意思为:(经过筛选后的)候选区域;
所述的ground truth的中文意思为:真值;
所述的IoU的中文意思为:交并比;
所述的NMS的中文意思为:非极大值抑制;
所述的RPN的中文意思为:候选区域生成网络;
所述的RPN的中文意思为:候选区域生成网络;
所述的proposal boxes的中文意思为:候选的边界框;
所述的ROI Pooling的中文意思为:感兴趣区域池化;
所述的bounding box的中文意思为:边界框;
所述的One-Shot learning的中文意思为:一次性学习;
所述的Siamese的中文意思为:孪生。
- 一种基于深度学习的食品安全指标监测方法
- 一种基于深度学习的高铁受电弓运行监测方法