这个博客的作者是Stan Zwinkels&Ted de Vries Lentsch。
这篇博客的目的是介绍我们试图创建一种检测算法,用于检测小球花属(Alstromeria)的成熟花朵。在这篇博客中,我们解释了我们创建数据集和检测模型的过程,该模型实现了F1得分超过0.75。本博客是代尔夫特理工大学计算机视觉深度学习(CS4245)2021课程的一部分。该数据集的创建工作是与Hogenom Alstromeria公司合作进行的。我们希望这个项目是计算机视觉在天文星表的生长和收获中应用的第一步。
1.引言
百里香是百里香科开花植物的一个属,原产于南美洲。这种花有许多不同的品种,在颜色、大小和叶子类型上各不相同。在荷兰,有几个万寿菊农场在温室里种植万寿菊。这些花拍卖后被运到世界各地。星座花卉是花束中广泛使用的花卉,然而,在社会上,这种花本身的名字并不是很广为人知。图1概述了这些花是如何在温室内生长的。
球茎是生长在地下的,它们通过产生地下根茎状的块茎而迅速繁殖。在实践中,这意味着每天都有一条小路上有鲜花,它们已经足够成熟,可以收获并运送到拍卖会上。工人们沿着花坛走着去抓这些成熟的花。识别哪种花足够成熟是一项困难的任务,因此需要专门的知识来对花进行分类。这篇博客的第二作者Ted de Vries Lentsch在Hogenom Alstromeria公司工作,并为这个项目提供了必要的知识来对花卉进行分类。
这篇博客向创建全自动采摘机器人迈出了一小步,通过使用计算机视觉来检测成熟的Morado花(Alstromeria属)。但它也可以用于较小的应用,例如扫描温室以获得每条路径的成熟花朵数量的概览,或者使用该系统来确定收获成熟花朵所需的预期劳动时间。开发的系统是一种工具,可以帮助更有效地种植Alstromeria,并更深入地了解生长过程。
2.数据集
目前还没有Alstromeria数据集(据我们所知),因此我们创建了自己的Alstromeria属Morado数据集。本节将解释数据集是如何创建的,以及哪些功能使其成为一个困难的数据集。
2.1图像检索
所有拍摄的图像都显示了花坛的俯视图,相机大约在花坛上方1.5米处。这些照片是用iPhone8拍摄的,用1200万像素的相机拍摄的图像大小为4032×3024像素。这些照片拍摄于2021年5月5日下午12点左右。图2显示了用于拍摄照片的设置。通常用于采摘鲜花的手推车配备了一个三脚架,相机可以连接到这个三脚架上(黄色圆圈位置的相机)。这样,相机就在花坛上方的中间。手推车沿着花坛推着,行驶了大约1米后就拍了一张照片。温室总共有10个莫拉多花坛,所有这些花坛都被记录在数据集上。在每个花坛上,拍摄了41-43张照片。某些图像可能在边界处彼此略有重叠。数据集总共由414幅图像组成。图3显示了花坛的示例图像。
数据集是不平衡的,因为大多数图像包含的生花(未成熟的)比成熟的多得多。大多数图像包含1-3朵成熟的花,而一张图像中总是有十几朵生花。
2.2图像注释
程序labelme已被用来标记图像。长方形被用来给花贴标签。标签工具为.json文件中的每个矩形保存两个[x,y]坐标(两个角)。这些注释既适用于完全可见的花卉,也适用于部分可见的花卉。除背景班外,还使用了两个班:(1)生的和(2)熟的。labelme
等距星历是由几个花蕾组成的。一簇花蕾被视为一朵花。在每个花蕾周围画一个矩形,以精确匹配花朵的面积。每张图像包含大约10-20个花蕾,但大多数情况下只有1-3个花蕾被贴上了成熟的标签。每朵花的成熟度取决于颜色、颜色均匀性、大小和花蕾数量。当一朵花包含几个开始开放的花蕾时,它就是成熟的,这些花蕾相对较大,颜色是鲜艳的紫色。未经训练的人不能区分鲜花和成熟花。但坚持这些指导方针将有助于其他人识别错误分类的花。
图4显示了生花和成熟花之间的区别。
对花卉的注释分两部分完成。第一部分涉及到使用labelme程序在花朵周围放置矩形并分配标签。然后分别绘制这些矩形,以便可以根据较大的图像给出正确的标签(有关这一点,请参阅重新标记笔记本)。图5显示了重新标记工具的界面。labelme ReLabel
2.3数据发布
完整的数据集已经在Kaggle上公布,以鼓励计算机视觉检测等星历的发展。使用下面的命令可以将数据集下载到Google Colab笔记本中。Kaggle
kaggle datasets download -d teddevrieslentsch/morado-5may
2.4数据集特征
下面是数据集的一些属性。这些图像具有…
此外,一朵花的成熟度是基于多种标准的(颜色、颜色的均匀性、大小和开放程度)。
3.型号
我们在数据集上使用了一种最先进的对象检测算法,即FASTER R-CNN[1],其中ResNet-50骨干在COCO Train 2017上进行了预训练,并用适合我们情况的分类头取代了分类头(3个类别:背景、原始和成熟)。
较快的R-CNN由三个主要部分组成,即构造特征图的深卷积网络(骨干)、区域建议网络和分类/回归前馈网络。
3.1主干架构
网络的第一部分使用ResNet-50网络来提取特征。RESNET-50是一种50层深的卷积神经网络。它已作为预先训练的版本加载,该版本对来自ImageNet数据库的100多万张图像进行了训练。我们数据集中的图像大小为4032x3024x3像素被重塑为1200x900x3的大小。
3.2区域建议书网络(RPN)
ResNet-50主干的输出用于区域建议网络(RPN)。区域建议网络的目标是创建锚框以及包含对象的概率。RPN为每个空间位置生成5 x 3个锚点(5个不同的大小和3个不同的纵横比)。
3.3 Fast R-CNN
FAST R-CNN被用作分类和回归的检测架构。FAST R-CNN的第一步是应用非最大抑制(NMS)来获得一定数量的区域建议,这些区域建议具有最高的包含对象的机会而不会彼此重叠太多。下一步包括分类,它可以确定它是背景花、生花还是成熟花。最后一步是应用非最大抑制,以获得花朵周围最终微调的目标检测框。
4.数据增强
数据增强已应用于所有图像,以使网络更加健壮。在模型的训练过程中,随机水平翻转和垂直翻转都以0.5的概率应用。这些图像显示了花坛的俯视图,模型应该是旋转不变的。
此外,在训练期间,通过应用高斯噪波和调整图像亮度、对比度、饱和度和色调的颜色抖动来试验添加噪波。图6中的左侧图像显示了添加了高斯噪声的图像示例,而右侧图像显示了相同的图像,但现在添加的是ColorJitter而不是高斯噪声。
添加了高斯噪声,以使网络对摄像机噪声等小扰动更具鲁棒性。增加了ColorJitter,以调查该网络是否使用颜色特征来识别成熟的花。ColorJitter调整图像中的颜色,使其不再与原始图像的颜色匹配。
5.实验
我们用不同的超参数和数据增强变换来训练速度较快的R-CNN,试图获得可能的最佳检测模型。此外,我们还想深入了解哪些特征对于检测成熟的花很重要。F1得分被用作比较训练模型的性能的度量。对于F1成绩,只考虑“成熟”类,因为它对实际应用很重要,而“未成熟”类则意在教授哪些花朵还未成熟的模型。
数据已根据花床数量进行了拆分。总共有10个花坛。花坛1至6用于培训,花坛7和8用于验证,花坛9和10用于测试。这确保了来自三组中的一组的花不会出现在其他两组中的任何一组中。
5.1培训
用于训练的优化器是随机梯度下降(Sgd),动量为0.9%,权重衰减为0.0005,初始学习率为0.005。使用学习率调度器,在具有0.1的学习率衰减的乘性因子的第三时段之后更新学习率。网络最多训练15个时期,但是我们使用了3个时期的耐心提前停止。
5.2主要成果
我们已经做了两个实验。第一个实验是关于学习率的超参数搜索。第二个实验是不同数据增强技术的比较。
5.2.1。超参数优化
学习速率针对三个不同的值进行了优化,即{0.0005,0.005,0.05}。对于每个值,模型都经过了两次训练。
通过使用这两个值的平均值,学习率0.005被认为是最佳学习率。可以看出,最佳学习率在0.05到0.005之间。由于时间有限,为了更好地进行优化,需要对更多的参数进行分析,以获得最优的模型,如学习率调度的步长。
5.2.2。数据增强结果
通过使用选择的学习率(0.005),我们在训练期间应用数据增强来测试模型的性能是否会在测试数据集上有所提高。对于每组变换,模型都使用水平和垂直翻转进行了训练。此外,还添加了高斯噪波或颜色抖动。对于高斯噪声,测试了两个不同的值(标准差0.15和0.30)。
表4显示了每组转换的平均F1分数。
对于高斯噪声,F1分数没有改善的一个假设是:“所有图像都是在相同的条件(相同的数据分布)下拍摄的,高斯噪声的添加导致训练数据集不同于测试数据集,并且由于数据分布中的这种移动,当在移动的数据分布上进行训练时,该模型对测试数据集概括得不太好。”
可见,ColorJitter也没有提高F1成绩。这可能意味着花的颜色是模型检测成熟花的一个重要特征。它还没有经过测试,但我们推测,当使用在不同条件下具有不同灯光设置的更多功能的数据库时,添加ColorJitter可能会导致更好的性能,因为网络随后会学习主要使用颜色以外的其他功能。
5.2.3。测试预测
在本节中,我们将了解测试数据集的基本事实和预测之间的差异。在图7的右图中可以看到,网络可以精确匹配地面实况框,这意味着网络可以学习特征来识别形成一朵花的一组花蕾。有趣的是,该网络比地面实况网络性能更好,并且在地面实况图像(右侧图像中心正下方的蓝色方框)中未注解的情况下识别出正确的花朵。
图像显示了一个假阴性,虽然地面真实图像显示这朵花已经成熟,但它仍然是一朵可疑的花,它处于生和熟之间的想象边界上。创建一个模型来识别成熟的花是一个困难的过程,因为生花和成熟的花之间没有明确的区别。然而,该模型可以清晰地识别图像中明显的成熟和生花。
5.2.4。测试结果
图8显示了测试数据集中的两幅图像,其中模型的预测只用水平和垂直翻转进行了训练(最佳执行模型,参见表4)。实验结果表明,该模型可以检测出部分成熟的花朵,但也存在一些分类错误。左边的图像显示了模型预测为成熟的花(红色方框),但根据地面真实标签显示为未熟的花。此外,它还显示了一朵在成熟时没有被预测成熟的花(蓝色方框)。
6.结论
我们已经创建了自己的Alstromeria数据集,用于检测温室内成熟的莫拉多斯。通过这些注释对象实例的收集,我们希望能够帮助推进密集图像中的对象检测,特别是计算机视觉在星表的生长和收获中的应用,我们希望通过这些实例来促进密集图像中的目标检测的发展,特别是计算机视觉在星表生长和收获中的应用。我们已经训练了一个检测模型,在我们的数据集上实现了超过0.75的F1得分。
这项工作得到了胡根博姆星表和代尔夫特理工大学的支持。作者感谢Hogenom Alstromeria为本博客的研究成果提供了资源。Hogenom Alstromeria是一家荷兰温室公司,位于纽威威特林,专门种植Alstromeria花卉。Hoogenboom Alstroemeria
7.提述
[1]任山,何凯,格希克,R.,孙军(2015)。更快的r-cnn:利用区域建议网络实现实时目标检测。arxiv预印本arxiv:1506.01497。[1]
我们的代码发布在GitHub上是为了可重现性,数据集可以在Kaggle上找到。GitHub Kaggle
原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2021/06/16/%e6%96%b0%e6%9c%88%e6%a1%82%e5%b1%9ealstromeria%e6%88%90%e7%86%9f%e8%8a%b1%e7%9a%84%e6%a3%80%e6%b5%8b/