这是用户在 2024-6-5 17:18 为 https://app.immersivetranslate.com/pdf/?file=emptyfile 保存的双语快照页面,由 沉浸式翻译 提供双语支持。了解如何保存?

A

CTA大学

. S

资质

, I

信息学

, 10, 1 (2018) 26–42

使用深度从图像中识别水果

学习

穆雷斯萨的霍里亚

数学与计算机学院

科学Mihail Kogg😍alniceanu,1宝贝-Bolyai大学

罗马尼亚

电子邮件:horea94@gmail.com

米哈伊·奥尔特安

精确科学学院和

工程学

Unirii,15-17"1918年12月1日"阿尔巴大学

茱莉亚

罗马尼亚

电子邮件:mihai.oltean@gmail.com

抽象。

在本文中,我们介绍了一个新的、高质量的、包含水果的图像数据集。我们还展示了一些训练神经网络来检测水果的数值实验的结果。我们通过提出一些可以使用这种分类器的应用程序来讨论我们选择在这个项目中使用水果的原因。

中文关键词:深度学习,物体识别,计算机视觉, f ruits数据集,图像处理

1

导言

本文的目的是提出一个包含受欢迎水果的图像的新数据集。该数据集被命名为水果-360,可以从参考文献[20]和[21]指向的地址下载。目前(截至2019.09.21)该集包含120种水果和蔬菜的82213张图像,一旦作者访问它们,它就会不断更新新水果和蔬菜的图像。鼓励读者从上述指定地址访问最新版本的数据集。

计算分类系统1998: I.2.6数学学科分类2010:68T45关键词和短语:深度学习、物体识别、计算机视觉

1

2

拥有高质量的数据集对于获得良好的分类器至关重要。大多数现有的图像数据集(例如,参见流行的CIFAR数据集[12])都包含对象和嘈杂的背景。这可能导致改变背景会导致对象分类不正确的情况。

作为第二个目标,我们已经训练了一个能够从图像中识别水果的深度神经网络。这是一个更复杂项目的一部分,其目标是获得一个分类器,可以从图像中识别出更广泛的对象阵列。这符合当前在增强现实领域工作的公司的趋势。在其年度I/O会议期间,谷歌宣布[19]正在开发一款名为Google Lens的应用程序,该应用程序将告诉用户有关手机摄像头指向的对象的许多有用信息。创建此类应用程序的第一步是正确识别对象。该软件已于2017年晚些时候作为Google Assistant和Google Photos应用程序的一项功能发布。目前对象的识别基于深度神经网络[35]。

这样的网络将在多个领域有许多应用,如自主导航、对象建模、控制过程或人机交互。我们最感兴趣的领域是创造一个自主机器人,它可以执行比普通工业机器人更复杂的任务。这方面的一个例子是一个机器人,它可以在商店的过道上进行检查,以识别不合适的物品或库存不足的货架。此外,这个机器人可以得到增强,能够与产品交互,这样它就可以自己解决问题。这项研究可以提供好处的另一个领域是自主水果收获。虽然已经有几篇关于这个主题的论文,但据我们所知,它们只关注几种水果或蔬菜。在本文中,我们试图创建一个可以对各种水果进行分类的网络,从而使其在更多场景中有用。

作为这个项目的开始,我们选择识别水果的任务有几个原因。一方面,水果有某些难以区分的类别,比如柑橘属,含有橙子和葡萄柚。因此,我们想看看人工智能能多好地完成分类任务。另一个原因是水果经常在商店里找到,所以它们是前面提到的项目的一个很好的起点。

本文的结构如下:在第一部分中,我们将很快讨论

3

使用深度学习进行水果识别获得了一些杰出的成就,随后介绍了深度学习的概念。在第二部分中,我们描述了Fruits-360数据集:它是如何创建的以及它包含了什么。在第三部分中,我们将介绍这个项目中使用的框架——TensorFlow[32]以及我们选择它的原因。在框架介绍之后,我们将详细介绍我们使用的神经网络的结构。我们还描述了使用的训练和测试数据以及获得的性能。最后,我们将以一些关于如何改进这个项目结果的计划来结束。源代码列在附录中。

2

相关工作

在本节中,我们回顾了以前使用神经网络和深度学习进行水果识别的几种尝试。

[28]中提出了一种从杂乱温室中的图像中识别和计数水果的方法。目标植物是具有复杂形状和不同颜色的辣椒,其果实类似于植物树冠。该应用程序的目的是在温室中生长的大型密集辣椒植物上定位和计数绿色和红色辣椒果实。本文使用的训练和验证数据由1000多种植物及其果实的28000张图像组成。定位和计数辣椒的方法分为两步:第一步,将水果定位在单个图像中,第二步,将多个视图结合起来,以提高水果的检测率。在单个图像中寻找胡椒果实的方法基于以下组合:(1)寻找兴趣点,(2)在兴趣点周围应用复杂的高维特征描述符,以及(3)使用所谓的词袋对补丁进行分类。

论文[25]提出了一种使用深度神经网络从图像中检测水果的新方法。为此,作者采用了基于更快区域的卷积网络。目标是创建一个神经网络,供可以收获水果的自主机器人使用。该网络使用RGB和NIR(近红外)图像进行训练。RGB和NIR模型的组合在两种不同的情况下完成:早期和晚期融合。早期融合意味着输入层有4个通道:3个用于RGB图像,1个用于NIR图像。后期融合使用2个独立训练的模型,通过从两个模型中获得预测并对结果进行平均来合并。结果是一个多模态网络

4

它获得了比现有网络更好的性能。

关于用于收获的自主机器人的主题,论文[1]展示了一个经过训练以识别果园中水果的网络。这是一项特别困难的任务,因为为了优化操作,必须使用跨越许多果树的图像。在这样的图像中,水果的数量可能很大,在杏仁的情况下,每张图像最多1500个水果。此外,由于图像是在外部拍摄的,因此在亮度、水果大小、聚类和视点方面存在很大的方差。与论文[25]中一样,该项目利用了基于快速区域的卷积网络,该网络在论文[24]中的详细视图中进行了介绍。与水果的自动收获相关,文章[22]介绍了一种从果园中检测成熟草莓和苹果的方法。论文还强调了现有方法及其性能。

在[11]中,作者编制了一份可用的最先进的机器人收获方法列表。他们还分析了这种方法并提出了改进它们的方法。

在[2]中,我们可以看到一种生成与经验图像高度相似的合成图像的方法。具体来说,本文介绍了一种在现实农业场景的植物部分级别上生成大规模语义分割数据集的方法,包括自动每个像素类和深度标记。这种合成数据集的一个目的是引导或预训练计算机视觉模型,然后在较小的经验图像数据集上进行微调。类似地,在论文[23]中,我们可以看到一个在合成图像上训练的网络,该网络可以计算图像中水果的数量,而无需实际检测它们在图像中的位置。

另一篇论文[4]使用两个在苹果“嘎拉”品种树图像上训练的反向传播神经网络来预测即将到来的季节的产量。对于这项任务,从图像中提取了四个特征:水果的总横截面积、水果数量、小水果的总横截面积和树叶的横截面积。

论文[10]分析了水果可探测性与图像拍摄时相机角度的关系。在此研究的基础上,得出结论,水果可探测性在正面视图和天顶角为60以上时最高。

在论文[27,37,15]中,我们可以看到一种基于颜色、形状和质地检测水果的方法。他们强调了正确分类不同物种的相似水果的困难。他们建议结合现有的方法,利用水果的质地、形状和颜色来检测感兴趣的区域

5

类似地,在[18]中,一种将水果的形状、大小和颜色、纹理与k近邻算法相结合的方法被用来提高识别的准确性。

最近的一项工作[36]提出了一种基于改进ChanVese水平集模型[3]并结合水平集思想和M-S模式[17]的算法,提出的目标是进行夜间绿葡萄检测,结合果实最小外接矩形原理和Hough直线检测的方法,计算出果梗的采摘点。

3

深度学习

在图像识别和分类领域,最成功的结果是使用人工神经网络[6,30],这些网络构成了大多数深度学习模型的基础。

深度学习是一类机器学习算法,它们使用包含非线性处理单元的多层[26]。每个级别都学习将其输入数据转换为稍微抽象和复合的表示[6]。深度神经网络已经成功地超越了其他机器学习算法。他们还在某些领域实现了第一个超人模式识别[5]。深度学习被认为是获得强人工智能的重要一步,这进一步加强了这一点。其次,深度神经网络——特别是卷积神经网络——已经被证明在图像识别领域取得了巨大的成果。

在本节的其余部分,我们将简要描述深度人工神经网络的一些模型以及一些相关问题的一些结果。

3.1

卷积神经网络

卷积神经网络(CNN)是深度学习模型的一部分。这样的网络可以由卷积层、池化层、ReLU层、全连接层和损耗层组成[34]。在典型的CNN架构中,每个卷积层后面都有一个整流线性单元(ReLU)层,然后是池化层,然后是一个或多个卷积层,最后是一个或多个全连接层。将CNN与常规神经网络区分开来的一个特征是考虑结构

6

在处理图像时。请注意,常规神经网络将输入转换为一维数组,这使得经过训练的分类器对位置变化不太敏感。

在MNIST[13]数据集上获得的最佳结果中,通过使用多列深度神经网络来完成。如论文[7]所述,它们每层使用多个映射,具有许多非线性神经元层。即使这种网络的复杂性使得它们更难训练,通过使用图形处理器和为它们编写的特殊代码。网络的结构使用赢家通吃的神经元,最大池化决定赢家神经元。

另一篇论文[16]进一步强调了卷积网络在计算机视觉领域获得了更好的精度的想法。在论文[29]中,详细描述了在CIFAR-10[12]上获得非常好的性能的全卷积网络。该论文建议用等效的卷积层替换池化和全连接层。这可能会增加参数的数量并增加特征间的依赖关系,但可以通过在网络中使用较小的卷积层来缓解这种情况,并充当正则化的一种形式。

在接下来的内容中,我们将描述CNN网络的每一层。

3.1.1

卷积层

卷积层以卷积运算命名。在数学中,卷积是对两个函数的运算,产生第三个函数,即原始函数之一的修改(卷积)版本。结果函数给出了两个函数逐点相乘的积分,作为原始函数之一被翻译量的函数[33]。

卷积层由构成内核的神经元组组成。内核的大小很小,但它们总是与输入具有相同的深度。来自内核的神经元连接到输入的一小块区域,称为感受野,因为在图像等高维输入的情况下,将所有神经元链接到所有先前的输出是非常低效的。例如,100 x 100图像有10000个像素,如果第一层有100个神经元,它将导致1000000个参数。不是每个神经元都有输入的全维度的权重,而是神经元持有内核输入维度的权重。内核在输入的宽度和高度上滑动,提取高级特征并生成二维激活图。给出了内核滑动的步幅

7

作为参数。卷积层的输出是通过堆叠生成的激活映射来完成的,激活映射又用于定义下一层的输入。

在大小为32 X 32的图像上应用卷积层会导致大小为28 X 28的激活图。如果我们应用更多的卷积层,大小将进一步减小,因此图像大小将大大减小,从而产生信息丢失和梯度消失问题。为了纠正这一点,我们使用填充。填充通过填充输入数据周围的常量来增加输入数据的大小。在大多数情况下,这个常量为零,因此操作被命名为零填充。“相同”填充意味着输出特征图与输入特征图具有相同的空间维度。这会尝试左右均匀填充,但如果要添加的列数为奇数,它会在右侧添加额外的列。

“有效”填充相当于没有填充。

步幅导致内核跳过图像中的像素,而不将它们包含在输出中。步幅决定了当使用更大的图像和更复杂的内核时卷积操作如何与内核一起工作。当内核滑动输入时,它使用步幅参数来确定要跳过多少位置。

ReLU层或整流线性单元层应用激活函数max(0, x)。它不会减小网络的大小,但会增加其非线性特性。

3.1.2

池化层

池化层一方面用于减少表示的空间维度,并减少网络中的计算量。池化层的另一个用途是控制过拟合。最常用的池化层具有大小为2 x 2的过滤器,步幅为2。这有效地将输入减少到其原始大小的四分之一。

3.1.3

全连接层

全连接层是来自规则神经网络的层。来自全连接层的每个神经元都链接到前一层的每个输出。卷积层后面的操作与全连接层中的操作相同。因此,可以在两者之间进行转换。

8

3.1.4

损耗层

损失层用于惩罚网络偏离预期输出。这通常是网络的最后一层。存在各种损失函数:softmax用于从多个析取类中预测一个类,sigmoid交叉熵用于预测多个独立概率(从[0,1]区间)。

3.2

递归神经网络

另一种深度学习算法是递归神经网络[16]。该论文以递归卷积网络的形式提出了对流行卷积网络的改进。在这种架构中,相同的权重集递归地应用于一些数据。传统上,递归网络被用于处理顺序数据,手写或语音识别是最著名的例子。通过使用循环卷积层,在它们之间有一些最大池层,并在最后使用最终的全局最大池层,获得了几个优点。首先,在一个层内,每个单元都考虑到它周围越来越大的区域中单元的状态。其次,通过具有递归层,在不添加更多参数的情况下增加了网络的深度。递归网络在自然语言处理中显示出良好的结果。

3.3

深度信念网络

深度学习算法的另一个模型是深度信念网络[14]。深度信念网络是由多层隐藏单元组成的概率模型。深度信念网络的用途与其他呈现的网络相同,但也可用于预训练深度神经网络,以提高权重的初始值。这个过程很重要,因为它可以提高网络的质量,并减少训练时间。深度信念网络可以与卷积网络相结合,以获得卷积深度信念网络,该网络利用了两种类型架构提供的优势。

4

水果-360数据集

在本节中,我们将描述数据集是如何创建的以及它包含什么。

9

图像是通过在水果被马达旋转时拍摄它们,然后提取帧来获得的。

水果种植在低速电机(3 rpm)的轴中,并录制了20秒的短片。在水果后面,我们放了一张白纸作为背景。

图1:左侧:原始图像。注意背景和电机轴。右侧:去除背景后并缩小到100x100像素后的水果。

然而,由于光照条件的变化,背景并不均匀,我们编写了一个专门的算法,从背景中提取水果。这种算法是洪水填充类型的:我们从图像的每个边缘开始,标记那里的所有像素,然后标记在已经标记的像素附近的颜色之间的距离小于规定值的所有像素。我们重复前面的步骤,直到不能再标记像素。

所有标记的像素都被认为是背景(然后用白色填充),其余像素被认为属于对象。2个相邻像素之间距离的最大值是算法的参数,并为每部电影设置(通过反复试验)。

水果被缩放以适应100x100像素的图像。其他数据集(如MNIST)使用28x28图像,但我们认为小尺寸在以下情况下是有害的

10

你有太相似的对象(红樱桃在小图像中看起来与红苹果非常相似)。我们未来的计划是处理更大的图像,但这需要更长的训练时间。

为了理解背景去除过程的复杂性,我们在图1中描绘了一个具有原始背景的水果,并且在背景被去除并且水果被缩放到100 x 100像素之后。

生成的数据集有82110张水果和蔬菜的图像,分布在120个标签上。每张图像包含一个水果或蔬菜。另外,该数据集包含另外103张多种水果的图像。该数据集可在GitHub[20]和Kaggle[21]上获得。用于训练的标签和图像数量见表1。

表1:每个水果的图像数量。苹果有多个品种,每个都被视为一个单独的对象。我们没有找到每个苹果的科学/流行名称,所以我们用数字标记(例如苹果红1、苹果红2等)。

标签训练图像数测试图像数

Apple Braeburn 492 164 Apple Crimson Snow 444 148 Apple Golden 1 492 164 Apple Golden 2 492 164 Apple Golden 3 481 161 Apple Granny Smith 492 164 Apple Pink Lady 456 152

苹果红1 492 164苹果红2 492 164苹果红3 429 144苹果红美味490 166苹果红黄色1 492 164苹果红黄色2 672 219

杏色492 164

鳄梨427 143

鳄梨熟491 166香蕉490 166

下一页继续

11

表1-从上一页继续标签

训练图像数测试图像数

香蕉女士手指450 152香蕉红490 166

甜菜根450 150

蓝莓462 154

仙人掌水果490 166哈密瓜1 492 164哈密瓜2 492 164红车490 166花椰菜702 234樱桃1 492 164樱桃2 738 246樱桃雷尼尔738 246樱桃蜡黑色492 164樱桃蜡红色492 164樱桃蜡黄色492 164

栗子450 153

Clementine 490 166 Cocos 490 166日期490 166茄子468 156生姜297 99格拉纳迪拉490 166葡萄蓝984 328葡萄粉色492 164葡萄白490 166葡萄白2 490 166葡萄白3 492 164葡萄白4 471 158葡萄粉色490 166葡萄白492 164

番石榴490 166

榛子464 157

哈克贝利490 166卡基490 166

下一页继续

12

表1-续上一页标签训练图像数量测试图像数量

几维鸟466 156

大头菜471 157

金橘490 166

柠檬492 164

Lemon Meyer 490 166 Limes 490 166荔枝490 166 Mandarine 490 166芒果490 166芒果红426 142芒果斯坦300 102 Maracuja 490 166 Melon Piel de Sapo 738 246

桑树492 164

油桃492 164

油桃平480 160坚果森林654 218坚果山核桃534 178洋葱红450 150洋葱红去皮445 155洋葱白438 146

橙色479 160

木瓜492 164

百香果490 166桃492 164桃2 738 246桃子扁平492 164梨492 164梨阿巴特490 166梨前卷702 234梨kaiser 300 102梨怪物490 166梨红色666 222

下一页继续

13

表1-续上一页标签训练图像数量测试图像数量

黄瓜490 166

胡椒绿444 148胡椒红666 222胡椒黄666 222酸浆492 164酸浆带壳492 164

菠萝490 166

菠萝迷你493 163 Pitahaya红490 166

梅子447 151

李子2 420 142

梅子3 900 304

石榴492 164柚子甜心450 153马铃薯红450 150马铃薯红洗453 151马铃薯甜450 150马铃薯白450 150

昆斯490 166

红毛丹492 164

覆盆子490 166

红醋栗492 164 Salak 490 162草莓492 164草莓楔子738 246 Tamarillo 490 166

Tangelo 490 166

番茄1 738 246

番茄2 672 225

番茄3 738 246

番茄4 479 160

番茄樱桃红492 164番茄栗色367 127番茄黄459 153

下一页继续

14

表1-续上一页标签训练图像数量测试图像数量

核桃

735

249

15

5

TensorFlow库

为了实现、训练和测试本文描述的网络,我们使用了TensorFlow库[32]。这是谷歌创建的一个开源机器学习框架,用于使用数据流图进行数值计算。图中的节点表示数学运算,而图边表示称为张量的多维数据数组。

TensorFlow系统中的主要组件是客户端,它使用Session接口与主机通信,以及一个或多个工作进程,每个工作进程负责仲裁对一个或多个计算设备(如CPU内核或GPU卡)的访问,并按照主机的指示在这些设备上执行图形节点。

TensorFlow提供了一些强大的功能,例如:它允许计算映射到多台机器,不像大多数其他类似的框架;它内置了对自动梯度计算的支持;它可以部分执行整个图的子图,并且可以为设备添加约束,例如将节点放置在某种类型的设备上,确保两个或多个对象放置在同一个空间中等。

TensorFlow被用于几个项目,例如初始图像分类模型[31]。该项目在2014年ImageNet大规模视觉识别挑战赛中引入了最先进的分类和检测网络。在这个项目中,通过调整网络宽度和深度,同时保持计算预算不变,提高了计算资源的使用[31]。

另一个采用TensorFlow框架的项目是由Mozilla开发的DeepSpeech。它是一个基于百度深度语音架构[9]的开源语音到文本引擎。该架构是使用端到端深度学习开发的最先进的识别系统。它比其他架构更简单,不需要针对背景噪音、混响或扬声器变化手动设计组件。

我们将介绍TensorFlow中最重要的使用方法和数据类型,并对每种方法进行简短描述。

16

卷积层是这样定义的:

1

分类

2

输入,

3

过滤器,

4

大步,

5

填充,

6

use_cudnn_on_gpu=真,

7

data_format='NHWC',

8

膨胀=[1,1,1,1],

9

名称=无

10

)

给定4-D输入和滤波器张量,计算2-D卷积。给定一个

形状的输入张量[批处理、高度、宽度、通道]和形状的核张量[过滤器高度、过滤器宽度、通道内、通道外],此操作执行以下操作:

将滤波器展平为具有形状[滤波器高度*滤波器宽度*在通道中,输出通道]的二维矩阵。

从输入张量中提取图像块以形成形状[批处理,输出高度,输出宽度,过滤器高度*过滤器宽度*在通道中]的虚拟张量。

对于每个补丁,右相乘滤波器矩阵和图像补丁向量。

1

max_pool)

2

价值,

3

ksize,

4

大步,

5

填充,

6

data_format='NHWC',

7

名称=无

8

)

对输入执行最大池化操作。ksize和strides参数可以是元组或4个元素的元组列表。Ksize表示输入张量的每个维度的窗口大小,strides表示输入张量的每个维度的滑动窗口的步幅。填充参数可以是“VALID”或“SAME”。

17

1

tf.nn.relu( 

2

特点,

3

名称=无

4

)

计算整流线性运算-max(特征,0)。特征是张量。

1

tf. nn.辍学(

2

x,

3

keep_prob,

4

noise_shape=无,

5

种子=无,

6

名称=无

7

)

在输入x上应用dropout,概率为保持概率。这意味着对于x中的每个值,该方法输出缩放为1/保持概率的值,概率为保持概率或0。缩放是为了保留元素的总和。噪声形状参数定义哪些值组一起保留或删除。例如,噪声形状的值为[k,1,1, n],x的形状为[k,l,m,n],意味着每行和每列将一起保留或删除,而批处理和通道组件将分别保留或删除。

6

实验中使用的神经网络的结构

对于这个项目,我们使用了卷积神经网络。如前所述,这种类型的网络使用卷积层、池化层、ReLU层、全连接层和损耗层。在典型的CNN架构中,每个卷积层后面都有一个整流线性单元(ReLU)层,然后是池化层,然后是一个或多个卷积层,最后是一个或多个全连接层。

请再次注意,将CNN与常规神经网络区分开来的一个特征是在处理图像时考虑图像的结构。常规神经网络将输入转换为一维数组,这使得经过训练的分类器对位置变化不太敏感。

18

我们使用的输入由大小为100 x 100像素的标准RGB图像组成。

我们在这个项目中使用的神经网络具有表2中给出的结构。

表2:本文使用的神经网络的结构。

图层类型尺寸输出

卷积5 x 5 x 4 16最大池化2 x 2-步幅:2卷积5 x 5 x 16 32最大池化2 x 2-步幅:2卷积5 x 5 x 32 64最大池化2 x 2-步幅:2卷积5 x 5 x 64 128最大池化2 x 2-步幅:2完全连接5 x 5 x 128 1024完全连接1024 256 Softmax 256 60

图2给出了所使用的神经网络的可视化表示。

第一层(卷积#1)是应用16个5 x 5过滤器的卷积层。在这一层上,我们应用最大池化,形状为2 x 2,步幅为2,指定池化区域不重叠(最大池#1)。这也将宽度和高度减少到每个50像素。

第二个卷积(卷积#2)层应用32个5 x 5过滤器,输出32个激活映射。我们在这一层应用与第一层相同的最大池(Max-Pool#2),形状2 x 2和步幅2。

第三个卷积(卷积#3)层应用64个5 x 5过滤器。下面是另一个形状为2 x 2和步幅2的最大池层(Max-Pool#3)。

第四个卷积(卷积#4)层应用128个5 x 5过滤器,之后我们应用最终的最大池层(最大池#4)。

19

图2:实验中使用的卷积神经网络的图形表示。

文件名:

-

文件大小:

-

标题:

-

作者:

-

主题:

-

关键词:

-

创建日期:

-

修改日期:

-

创建者:

-

PDF 生成器:

-

PDF 版本:

-

页数:

-

页面大小:

-

快速 Web 视图:

-

正在准备打印文档…
0%