深度学习驱动的智能冰箱*

2019-01-17 06:32:38张卫山张元杰赵德海周杰韩
计算机与生活 2019年1期
关键词:服务端果蔬重量

张卫山,吕 浩,张元杰,徐 亮,赵德海,周杰韩

1.中国石油大学(华东)计算机与通信工程学院,山东 青岛 266580

2.北京科技大学 计算机与通信工程学院,北京 100083

3.澳大利亚国立大学 计算机科学学院,澳大利亚 堪培拉 ACT 0200

4.奥卢大学 信息技术与电子工程学院,芬兰 奥卢 FI-90014

1 引言

如今,越来越多的家电厂商纷纷推出了智能冰箱的概念产品,智能冰箱成为了家庭联网的新入口。本文认为智能冰箱真正的意义在于对冰箱内食品的掌控,如判断食品的新鲜度、食品的存储量等。这些功能在某种程度上都依赖于物体识别。智能冰箱的核心技术之一是对食品的有效识别,但冰箱内空间狭窄,存放的食品种类繁多且相互遮挡,不同的拍摄角度对识别结果也有影响。这些状况导致了在冰箱中进行物体识别的困难性,并且在该领域也缺少冰箱环境下的食品数据集。果蔬是冰箱中经常存放的食品,品种繁多且许多果蔬具有相似的特征,在冰箱中识别难度大。本文以冰箱中的果蔬识别为切入点,探究基于深度学习的智能冰箱的整体框架,并提高了冰箱内果蔬识别的准确率。

在果蔬识别方面,国内外学者已经做了一些工作。Bolle等[1]在1996年第一次提出Veggie vision的概念,并且开发了一套智能超市的果蔬识别系统。这个系统通过提取颜色、纹理和密度等特征可以识别任意数量和不同姿态的水果,但是这种方法对光线的变化较为敏感。Zawbaa等[2]通过水果的形状和颜色来识别水果的特征。Naskar等[3]提取了水果的颜色、形状和纹理,并用人工神经网络识别水果。Patel等[4]提出了一种基于多特征的水果识别算法。Arivazhagan等[5]提出了一种对颜色和纹理特征有效融合的方法来识别水果。上述方法大部分都将精力集中在提取果蔬的特征来提高识别的准确率,如提取颜色、纹理和形状等特征。但是有些果蔬具有相似的颜色、形状和纹理,如橙子和橘子,梨和黄元帅。当用这些方法去识别这类果蔬时,准确率难以得到保证。这些传统的果蔬识别方法难以应对冰箱的复杂场景,因此使用深度学习的方法来识别冰箱中的果蔬。

深度学习是近十年来人工智能领域取得的重要突破。它在语音识别、自然语言处理、计算机视觉、图像与视频分析、多媒体等诸多领域的应用上都取得了巨大成功。无论是在准确率还是在速度上都有巨大的优势,使用深度学习的方法可以应对冰箱复杂场景下的果蔬识别。尤其像SSD(single shot multibox detector)[6]等优秀的图像识别方法,为智能冰箱中的食物识别提供了可选的技术。

除此之外,近年来大数据的发展十分迅速,大数据在对数据的处理、存储和分析上有着巨大优势。例如,可以使用分布式处理框架Hadoop来分布式并行地处理,能够提高识别的速度;使用HBase来存储源数据,利用其在大数据存储上的优势,此外还可以在后期对数据进行数据挖掘。

本文提出了两种数据收集、数据处理和果蔬识别的架构。一种是使用RPi1)RPi是只有信用卡大小的基于ARM的微型电脑主板,它有丰富的输入输出接口,可以搭配各种传感器,打造个性化物联网解决方案。https://www.raspberrypi.org/搭载摄像头和称重传感器来收集图像和重量数据,再将收集到的数据发送到服务器,服务器使用HBase来存储元数据。在SSD上使用三种网络模型,利用BP神经网络融合了这三种模型后再结合重量数据对果蔬进行识别,将识别后的结果反馈给RPi,这种方法被称为云模式。另外一种架构是使用TX12)NVIDIA Jetson TX1基于Tegra®X1处理器打造,采用和超级计算机完全相同的Maxwell架构256核心GPU,可提供高达1TFlops的强大计算性能并完整支持NVIDIA®CUDA®技术,配合预装的Linux系统以及完善的NVIDIA开发工具,可为深度学习训练、全新智慧型设备开发提供完整支持。http://www.nvidia.com/object/jetson-tk1-embedded-dev-kit.html收集数据并识别图像,这种方法叫作本地模式,运行在离线的本地环境下。

本文的主要贡献如下:

(1)对于智能冰箱的体系结构,本文提出了两种智能冰箱的数据处理模式,一种是云模式,即冰箱内的果蔬由云端服务器来进行识别;另一种是本地模式,即冰箱内的果蔬在深度学习嵌入式开发板上完成识别。

(2)本文提出了一种新的冰箱内果蔬的识别方法,设计了一种基于多模型融合方法来提高冰箱内果蔬的识别速度和准确度。同时将冰箱内果蔬的重量信息与视觉信息相结合,从而达到更高的识别准确率,这是传统方法所不具备的。

(3)本文制作了冰箱环境下的果蔬数据集,包括22种不同的果蔬,每种果蔬的数量不同,采取了四种不同的拍摄角度以及两种不同的亮度。

本文组织结构如下:第2章介绍了基于深度学习的智能冰箱。第3章展示了基于数据融合的果蔬识别方法。第4章对上述方法进行了评估。相关工作、结论和展望在文章的末尾。

2 基于深度学习的智能冰箱

本章分为系统架构和系统实现两部分。在系统架构这一节,本文提出了两个模式的架构:一个是使用RPi和服务端集群的云模式架构;另一个是使用TX1的本地模式架构。本文着重阐述第一个模式,也就是云模式,并在第3章与本地模式进行性能比较。在系统实现这一节,本文也会着重阐述云模式的实现。

2.1 系统架构

本文使用RPi搭载摄像头和称重传感器,当RPi检测到称重传感器的重量变化后触发摄像头进行拍照。RPi将收集的图片、重量数据、时间信息和用户ID一同通过Socket发送到服务端集群中。在服务端,HBase用一张表来存储同一时间导入的图片、重量数据、时间信息和用户ID。HBase使用联合键的方式构建行键,将用户ID和时间信息进行结合。服务端使用果蔬识别模型来识别图片中的果蔬。识别后的结果存储在HBase中,并且将识别后的结果返回给RPi。将架构分为硬件层、通讯层、存储层和识别层,4层结构图如图1所示。

Fig.1 4 layered architecture using cloud mode图1 云模式的4层架构

硬件层:采用RPi作为硬件开发平台,RPi搭载ARM Cortex-A53 1.2 GHz 64-bit quad-core ARMv8 CPU,内存1 GB。RPi连接称重传感器和摄像头,4个称重传感器安装在钢化玻璃板上,钢化玻璃板放置在冰箱保鲜层中。当有果蔬放在钢化玻璃板上时,RPi将会接收称重传感器的数据。

通讯层:使用Socket通信协议进行数据传输。RPi作为Socket通信的客户端将数据发送给服务端,在服务端上完成识别后将数据反馈给RPi。

存储层:服务端由4台搭载NVIDIA1070、i76700K和16 GB内存的电脑组成,搭载了Hadoop和HBase的集群,数据的训练和测试都是在该服务端上实现的。服务端将数据存储到HBase中,在HBase中仅用一张表来维护原始数据,使用精确到秒的时间结合用户ID作为行健,表中只包含1个列簇,列簇中包含3列数据,图片的存储路径、重量数据和识别结果。

识别层:使用本文提出的果蔬识别模型,该模型是 SSD(ResNet[7])、SSD(VGG16)和 SSD(VGG19[8])三种模型融合后再结合重量信息得到的。在识别RPi发送过来的图片时,将识别模型放在Hadoop集群上分布式并行化地运行来识别图片。

考虑到在实际应用中,用户可能会担心隐私问题。因此提出了一种本地的处理方式,即使用TX1开发板,将识别模型放在TX1中运行,TX1直接采集数据并识别。架构图如图2所示。

Fig.2 Architecture of local mode图2 本地模式的架构

2.2 系统实现

钢化玻璃上安装的4个称重传感器,使用HX711模块进行A/D转换。摄像头使用720P高清广角摄像头,通过USB与RPi相连。RPi通过检测重量信息的变化触发摄像头进行拍照并对重量数据与前一次重量数据做差,记录最后一次的重量信息,将做差后的重量信息和图片通过Socket通信协议推送至服务端,服务端不仅接收图片和重量信息,还会接收时间信息和用户ID。

本文定义了Socket通信协议的发送格式,按照weight、imagestart、imagelength、image、timestart 和time的顺序定义发送格式。weight为RPi采集的重量信息,imagestart为读取image的标志,imagelength为image的长度,image为图片数据,timestart为读取时间信息的标志,time为时间信息。

Socketserver将接收的图片保存在服务器集群,使用HBase存储图片在本地的存储路径、时间信息、重量信息和用户ID。本文采用联合键作为行键,即行键由用户ID和时间信息组成。

将数据存入HBase的同时,使用训练好的果蔬识别模型进行识别。果蔬识别模型通过多模型数据融合的方式构建识别模型。通过果蔬识别模型识别图片中的果蔬,将识别结果通过Socket反馈给RPi并存储在HBase中。图3是系统实现的UML类图。

Fig.3 Class diagram of implemented system architecture图3 系统实现的UML类图

3 基于数据融合的果蔬识别方法

本文提出了一种数据融合的果蔬识别方法,它可以提高果蔬识别的精度。将图片分别放入基于ResNet、VGG16以及VGG19三种模型的SSD进行训练,再将三种模型使用BP神经网络融合,对输出结果融合重量数据,根据不同果蔬的重量范围进行判断,最终得到最优结果。

3.1 多模型融合方法

使用深度学习方法识别果蔬的方法有很多,如Faster R-CNN(regional convolutional neural network)[9]、YOLO(you look only once)[10]等都可以用来识别果蔬。但由于在冰箱的场景下会同时存在多种果蔬,为了达到一个较好的性能,本文选择了SSD。SSD能够在多尺度下来计算特征,然后评估在该尺度下的区域存在的概率以及相关offset,是一种遍历所有区域的方式。SSD获得的是图像中的矩形区域以及该区域所对应的类型以及类型的得分。它的优势是使用图像在各个scale下各个位置特征进行回归,既保证了速度,又保证了精度。

本文提出了一种多模型融合的果蔬识别方法,如图4所示。使用数据集分别训练基于ResNet、VGG16和VGG19的三种模型的SSD,三种模型的输出转换为向量作为BP神经网络的输入。VGG把网络分为5组,使用了3×3的过滤器,并把它们组合起来作为一个卷积序列进行处理。

Fig.4 Structure of multi-model fusion图4 多模型融合的结构

设这三种模型的输出分别是A、B、C,将它们作为BP神经网络的输入,采用只包含一个隐含层的三层前馈网络,如图5所示。BP神经网络的输入层节点数为3,隐含层节点数为10,输出层只有1个节点。隐含层和输出节点神经元采用线性传递函数,神经元状态Si和输出Ti之间的关系为一个线性变换关系,即

设X1、X2、X3分别为BP神经网络的输入,对应的输出为:

对于隐含层,第j个节点的输入:

第j个节点的输出:

对于输出层,第j个节点的输入:

第j个节点的输出:

Lji、和Mj、M2分别是连接权值和常数偏值。

Fig.5 Structure of neural network图5 神经网络的结构

3.2 数据融合的方法

将多模型融合后的输出再融合重量数据得到果蔬识别模型。本文对每一种果蔬构建了先验知识库,包括果蔬的名称、重量范围以及该果蔬的相似果蔬列表。根据果蔬识别模型识别出来的果蔬名称,找到它的重量范围,并根据该果蔬的重量进行判断,如果识别出的果蔬的重量并不符合该果蔬的重量特征,则继续用当前果蔬的重量与下一个概率且在相似果蔬列表里的果蔬的重量范围进行比较,直到结果最优为止。

实际生活中单个质量小而成群出现的果蔬无法直接用重量来衡量,如一串葡萄、一把香蕉、一把芹菜等。这些水果特征较为明显,不再需要融合重量数据就能达到满意的识别效果。具体的数据融合算法如算法1所示。

算法1数据融合

4 实验

为了验证本文方法的可行性,对整体流程进行了效率实验,对两种架构进行了对比。还对果蔬识别模型识别的准确率进行了实验,对比了5种方法的准确率。除此之外,为了确定在冰箱中摄像头安装的最合理位置,本文用不同角度的数据集分别放入本文提出的果蔬识别模型进行训练和识别,比较了4种角度识别的准确率。

4.1 实验配置

所有的实验都采用如表1的实验环境。由1070组成的集群都安装了Jdk1.8、OpenCV2.4.9、Hadoop2.6.4、HBase1.2.1和Caffe。TX1中安装了Jdk1.8、OpenCV-2.4.9和Caffe。

4.2 数据集

本文的数据集使用来自网络中的数据和自行采集的冰箱环境下的果蔬数据,比例约为1∶5。从数据集中随机抽取48 000张作为训练集,12 000张作为测试集。在制作数据集的过程中,考虑到了光线和摄像头拍摄角度对识别准确性的影响,并且设定了一些干扰物,如罐装、盒装等商品,除此之外数据集中还包含少量未作为统计对象的果蔬,由于这些果蔬在采集时数量较少,因此暂时也作为干扰物。在拍摄数据集时,对光线进行了控制,分为阴暗环境和明亮环境。使用了4种拍摄角度,分别为冰箱的4个角。还单独制作了4个数据集分别为不同角度下拍摄的数据,其中训练集都是12 000张图片,测试集3 000张图片。除此之外还考虑到拍摄的数据如果使用云模式来提供服务,则会涉及到用户的个人隐私。因此在拍摄时尽量让摄像头只能拍摄到冰箱内部的情况。图6展示了数据集中的一部分图片。

Table 1 Experimental environment表1 实验环境

Fig.6 Image from data set图6 数据集中包含的图片

4.3 实验结果比较与分析

4.3.1 云服务器和本地的果蔬识别效率对比

对比了云模式和本地模式识别的速度。RPi采集到数据发送到服务器用时460~490 ms,服务端识别后发送到RPi显示结果用时35~45 ms,总耗时520 ms。TX1收集并识别用时600 ms。效率对比如表2。

Table 2 Performance comparison表2 性能对比 ms

通过对比,本地模式在识别时花费的时间远高于云模式,云模式只需要40 ms左右,而本地模式需要600 ms,但云模式的网络损耗较大。通过实际测试600张完全相同的图片,本地模式和云模式的识别结果一致。

4.3.2 识别模型的识别准确率对比

首先分别使用基于ResNet、VGG16和VGG19模型的SSD识别测试集,然后使用模型融合的方法识别测试集,再用这4种方法的识别率与融合了重量数据的方法的识别率进行对比,本文的果蔬识别模型有着更好的表现。表3展示了不同识别模型的识别准确率对比。

Table 3 Recognition accuracy for different models表3 不同模型识别的准确率

表4展示了多模型融合识别方法和数据融合识别方法的识别准确率及高混淆种类和概率。数据融合识别方法的准确率要高于多模型融合识别方法的准确率。在多模型融合识别方法中橙子和橘子、梨和黄元帅混淆的概率很高。但在数据融合识别方法中,识别错误的概率有所下降,特别是橙子和橘子、梨和黄元帅的混淆概率。

Table 4 Recognition accuracy and confusion matrix of different fusion-strategy models表4 不同融合策略模型的识别准确率和混淆率

本文分别使用了4种拍摄角度拍摄的数据集来训练识别模型。通过对测试集的识别得到的准确率如表5所示。因为每种角度的数据集要比包含4种角度的数据集中的图片的数量少很多,准确率也比包含全部图片的数据集低。但是通过比较4种角度数据集的识别准确率可以找到最好的识别角度。通过比较,显然在冰箱的前端安装摄像头要比装在里面好。

Table 5 Accuracy of data sets with different angels表5 不同角度的数据集识别准确率

5 相关工作

Sa等[11]提出了一种新的使用深度卷积神经网络的水果识别方法。这篇本章将RGB和NIR(near infrared)结合,使用Faster R-CNN识别水果,在识别甜椒时准确率达到83%。考虑在后期的工作中使用Faster R-CNN和SSD作对比。

Pratap等[12]提出了一种基于形状、颜色和纹理的水果分类算法。使用人工神经网络来识别水果,准确率高达96%。但是这篇文章的数据集中仅包含5类水果。本文的数据集要比这篇文章的数据集更丰富,识别的难度也更大。

Tao等[13]提出了一种新颖的问题特征提取算法叫CCLBP(color completed local binary pattern)。这篇文章使用HSV(hue,saturation,value)颜色直方图和BIC(border/interior pixel classification)颜色直方图来提取图片的颜色特征。但是这篇文章没有考虑光线的影响。Ijjina等[14]提出了一种基于3D颜色直方图结合CNN的方法来对不同光照和不同视角的目标进行分类。但是测试图像仅包含一种目标和角度。本文提出的数据集包含4种不同的拍摄角度,并且考虑了光线的影响,水果的种类也更加丰富。

Zhang等[15]提出一种基于FSCABC(fitness-scaling chaotic artificial bee colony)的分类算法和FNN(feedforward neural network)的识别方法,准确率达到89.1%。Song等[16]提出一种识别和计数的方法,他们使用bag-of-words模型来识别单张图片,然后用一种新的方法来统计和识别多张图片。

Kwon等[17]提出了一种装备传感器的智能冰箱,可以区分和监控食品的状态。Sandholm等[18]提出了一种探索智能冰箱交互的实验环境。

与本文的工作相比,没有将智能冰箱结合大数据平台的方案。采用Zhang等[19]提出的云平台,将存储和处理模块应用在本文的应用中,并且本文的工作是实际智能冰箱运行时的真实环境和数据。

6 总结与展望

本文提出了两种数据收集、数据处理和果蔬识别的架构,并提出了一种果蔬识别的方法,设计了一种多模型融合并结合重量信息的数据融合算法。通过本文的识别模型,在识别具有相似颜色、形状以及纹理的果蔬时,大幅提高了识别的准确率。

现在也遇到了一些问题。由于使用TX1的成本很大,但是本文的识别模型过大,不能将模型放入RPi中进行果蔬识别。也会缩小果蔬识别模型的网络,使其能够在RPi这样的低成本开发板上使用。在后面的工作中会继续增加数据集的丰富度,将特殊情况的果蔬图片增加进去。

猜你喜欢
服务端果蔬重量
重量
文苑(2020年6期)2020-06-22 08:41:34
奇思妙想的果蔬们
童话世界(2019年26期)2019-09-24 10:57:56
清洗果蔬农残 你做对了吗
启蒙(3-7岁)(2018年8期)2018-08-13 09:31:14
云存储中基于相似性的客户-服务端双端数据去重方法
这些果蔬能保护呼吸道
基层中医药(2018年2期)2018-05-31 08:45:16
新时期《移动Web服务端开发》课程教学改革的研究
消费导刊(2018年8期)2018-05-25 13:19:48
在Windows Server 2008上创建应用
果蔬大作战
童话世界(2016年8期)2016-06-02 09:21:05
创新的重量
灰的重量
诗潮(2014年7期)2014-02-28 14:11:11