本发明属于计算机图像识别技术,具体来说涉及一种基于卷积神经网络的用于识别菜品图像的技术方案。
背景技术:
由于图像的形成受到很多因素的影响,比如说拍摄角度、环境光线,原始图像的矩阵数据并不能被计算机分析,所以图像识别的第一步是特征提取,即将图像转化为一个固定长度的向量,该向量受外界条件影响应当是较小的。并且,不同于一般的图像识别问题,比如飞机和汽车,他们在外观上是有很大的结构性差异的,而对于菜品,存在大量结构相似的不同种类的菜品,比如土豆丝和豆芽。现有的基于局部描述子的特征提取方法无法捕捉到这种细致的差异,也无法应对同一菜品的丰富变化,从而识别精确度偏低,鲁棒性不够好。
技术实现要素:
本发明提供一种菜品识别技术,即给定一张图片,若是菜品,则输出其菜品类别。具体来说,本发明采用的技术方案如下:
一种菜品识别方法,其特征在于,所述方法包括以下步骤:1)获得web请求,服务器相应web请求,获取相应图像;2)保存图像,获取输入数据流,生成图像文件名并保存至磁盘;3)图像预处理,对输入的图像进行尺寸调整和归一化;4)使用预先训练的卷积神经网络进行处理,对图像上的物体进行检测及分类,如果没有检测到菜品则结束,如果检测到菜品,则结合分类结果,输出相应菜品信息。
在以上方法中,步骤3)预处理的步骤包括,使用OpenCV的cv2接口,将本地图像读取为一个Numpy的矩阵对象,将图像缩放和截取为224*224像素,并将图像的RGB通道分别减去104、117、123,获得归一化的图像文件。
进一步,步骤4)包括,使用5层卷积神经网络,卷积核依次为11×11、5×5、3×3、3×3、3×3,卷积核个数依次为96、256、384、384、256个,第一、二、五层卷积之后分别进行最大值池化,池化核2×2,第五层池化结果作为输入进行两层全连接,结果输出至Softmax层,输出节点数量为菜品的数量,每一维对应图片属于某个类别的概率。
更进一步,以上神经网络分别用于菜品的检测和识别,其中当检测时分类为菜品和背景,当识别菜品品类时输出概率最高的30个菜品品类,当两者都得到肯定结果时,输出更准确的菜品类别。
采用本发明的方案,能够实现菜品的实时检测与鉴别,输出更为准确的结果,避免在没有菜品的情况下输出让人觉得奇怪的结果,在有菜品的情况下输出更为精确的结果。
附图说明
图1是本发明的实现流程图。
具体实施方式
本发明的目的在于在给定一张图片的情况下,若其中包含菜品,则输出其菜品类别,若没有菜品则不输出结果。
菜品拍摄获得的图像会受到很多因素的影响,而且菜品本身具有复杂的特征,例如颜色、纹理、空间位置、形状等等,在不同的拍摄角度、环境光线等条件下,同样的菜品拍摄的图像会差异巨大。原始图像的矩阵数据并不能被计算机分析,所以图像识别的第一步是特征提取,即将图像转化为一个固定长度的向量