1. 主页 > 物联网(iot)技术 >

基于小数据集的目标检测

任何机器学习项目的入门通常都是从这样一个问题开始的:“多少数据才足够?” 答案取决于许多因素,例如生产数据的多样性、开源数据集的可用性以及系统的预期性能;这份清单可以持续很长一段时间。在本文中,我们想揭穿一个关于机器只能从大量数据中学习的流行神话,并分享一个使用小数据集应用机器学习的用例。 

物联网

随着深度学习在计算机视觉中的迅速采用,越来越多的不同任务需要借助机器来解决。要了解这些小数据集机器学习在现实世界中的应用,让我们专注于对象检测的任务

什么是物体检测? 

对象检测是计算机视觉的一个分支,用于识别和定位照片或视频中的对象。目标检测的目标是借助机器学习在数字图像或视频中找到具有某些特征的目标。通常,物体检测是物品识别的初步步骤:首先我们必须识别物体,然后才能应用识别模型来识别某些元素。 

对象检测业务用例 

对象检测是人工智能驱动的解决方案的核心任务,用于视觉检查、仓库自动化、库存管理、安全等任务。以下是一些跨行业成功实施的对象检测用例。

制造业

从质量保证和库存管理到分拣和组装,物体检测在许多制造过程的自动化中发挥着重要作用。机器学习算法使系统能够快速检测任何缺陷,或自动计数和定位对象。这些算法允许他们通过最大限度地减少人为错误和检查和分类这些对象所花费的时间来提高库存准确性。

汽车服务

机器学习用于自动驾驶汽车、行人检测和优化城市交通流量。目标检测用于感知驾驶员附近的车辆和障碍物。在交通运输中,物体识别用于检测和计数车辆。它还用于交通分析并帮助检测停在高速公路或十字路口的汽车。

零售

对象检测通过分析和比较货架图像与理想状态来帮助检测 SKU(库存单位)。? 集成到硬件中的计算机视觉技术有助于减少零售店的等待时间、跟踪客户与产品的交互方式以及自动化交付。 

卫生保健

对象检测用于研究医学图像,如 CT 扫描、MRI 和 X 射线。它还用于癌症筛查,以帮助识别高危患者、检测异常情况,甚至提供手术帮助。应用对象检测和识别来协助远程医疗的体检是一种新趋势,它将改变向患者提供医疗保健的方式。 

安全和监控

目标检测的应用包括能够进行人员检测和面部识别的视频监控系统。使用机器学习算法,此类系统专为生物特征认证和远程监控而设计。这项技术甚至被用于预防自杀。

物流和仓储自动化

对象检测模型能够对产品进行视觉检测以进行缺陷检测,以及库存管理、质量控制和供应链管理的自动化。人工智能驱动的物流解决方案使用物体检测模型而不是条形码检测,从而取代手动扫描。  

如何开发对象检测系统:PoC 方法

开发用于上述任务的对象检测系统与任何其他 ML 项目没有什么不同。它通常从建立一个假设开始,在几轮实验中进行检查。

这种假设是软件开发中概念证明 (PoC) 方法的一部分。它与机器学习保持一致,因为在这种情况下,交付不是最终产品。进行研究使我们能够得出结果,使我们能够确定可以使用所选择的方法,或者需要运行额外的实验来选择不同的方向。

如果问题是“机器学习有多少数据足够”,那么假设可能是一个初始陈述,例如“150 个数据样本足以让模型达到最佳性能水平”。

经验丰富的机器学习从业者,例如 Andrew Ng  (Google Brain 的联合创始人和百度的前首席科学家) 建议 快速构建具有机器学习功能的系统的第一次迭代,然后部署它并从那里开始迭代。

这种方法使我们能够创建一个功能强大且可扩展的原型系统,该系统可以使用生产团队的数据和反馈进行升级。与尝试从一开始就构建最终系统的前景相比,此解决方案的效率要高得多。这种性质的原型不一定需要大量数据。 

要回答“多少数据才足够”的问题,不可否认,没有机器学习专家可以准确预测需要多少数据。找出答案的唯一方法是建立一个假设并在现实条件下对其进行测试。这正是我们在以下对象检测示例中所做的。

案例研究:使用小数据集检测物流中的自动物品计数

我们的目标是创建一个能够检测物流对象的系统。货物从生产到仓库或从仓库到设施的运输通常需要使用发票和数据库对实际数量进行中间控制和协调。如果手动执行,此任务将需要数小时的人工工作,并且会涉及丢失、损坏或受伤的高风险。 

我们最初的假设是,一个小的带注释的数据集足以解决出于物流目的自动计算各种物品的问题。 

许多人采用的传统方法是使用经典的计算机视觉技术。例如,可以将 Sobel 滤波器边缘检测算法与霍夫圆变换方法相结合,以检测和计算圆形物体。这种方法简单,比较可靠;但是,它更适用于受控环境,例如生产具有明确圆形或椭圆形物体的生产线。

在我们选择的用例中,经典方法的可靠性要低得多,因为对象的形状、图像质量和光照条件都可能有很大差异。此外,这些经典方法无法从收集的数据中学习。这使得通过收集更多数据来改进系统变得困难。在这种情况下,最好的选择是微调基于神经网络的对象检测器。

数据收集和标记 

为了使用小数据集进行目标检测实验,我们收集并手动注释了几张可通过公共资源获得的图像。我们决定专注于木材原木的检测,并将带注释的图像分为 训练 和 验证 分割。

我们还收集了一组 没有标签的 测试图像,其中日志在某种程度上与训练和验证图像(日志的方向、大小、形状或颜色)不同,以查看模型检测能力的限制在哪里给定的火车集。

数据:图像/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%200%200'%3E%3C/svg%3E
资料来源:MobiDev

由于我们正在处理对象检测,因此图像注释表示为边界框。为了创建它们,我们使用了一个基于浏览器的开源工具 VGG Image Annotator,它具有创建小规模数据集的足够功能。不幸的是,该工具以自己的格式生成注释,然后我们将其转换为 COCO 对象检测标准。

数据:图像/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%200%200'%3E%3C/svg%3E
资料来源:MobiDev

在目标检测中,数据量不仅取决于数据集中的图像数量,还取决于每个图像中单个对象实例的数量。在我们的例子中,图像中充满了非常密集的对象——每张图像的实例数量达到 50-90。

数据:图像/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%200%200'%3E%3C/svg%3E
资料来源:MobiDev

Detectron2 物体检测 

我们决定使用的模型是 Facebook 在计算机视觉库 Detectron2 中实现的 Faster R-CNN。 

让我们仔细看看 Faster R-CNN 如何用于对象检测。首先,输入图像通过主干(针对图像分类问题进行预训练的深度 CNN 模型)并转换为称为特征图的压缩表示。然后由区域提议网络 (RPN) 处理特征图,该网络识别特征图中可能包含感兴趣对象的区域。

接下来,使用 RoI 池化操作从特征图中提取区域,并通过边界框偏移头(预测每个区域的准确边界框坐标)和对象分类头(预测该区域中对象的类别)进行处理。

Faster R-CNN(基于区域的卷积神经网络)是 R-CNN 架构的第三次迭代。 

Faster R-CNN 是一个两阶段的目标检测模型。它包括 RPN 子网络来采样对象提议。然而,这并不是用于对象检测的小数据集的唯一解决方案。

还有一步检测器模型试图在没有这个区域建议筛选阶段的情况下找到相关对象。一级检测器具有更简单的架构,与二级模型相比,通常速度更快但准确度较低。示例包括Yolov4 和 Yolov5 架构,与 Faster R-CNN 相比,这些系列中一些配置较轻的模型可以达到 50-140 FPS(尽管会影响检测质量),后者最高运行速度为 15-25 FPS .

解释 Faster R-CNN 的原始论文发表于 2016 年,随着时间的推移,对架构进行了一些小的改进,这反映在我们使用的 Detectron2 库中。

例如,为我们的实验选择的模型配置 R50-FPN将主干 ResNet-50 与特征金字塔网络结合使用——这一概念在 CVPR 2017论文中被引入,  并已成为用于特征提取的 CNN 主干的主要内容。简单来说,在特征金字塔网络中,我们使用的不仅限于从 CNN 中提取的最深特征图,还包括低级和中级特征图。这允许在压缩到最深级别期间否则将丢失的小对象检测。

数据:图像/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%200%200'%3E%3C/svg%3E
资料来源:arxiv.org

结果

在我们的实验中,我们使用了以下方法: 

  1. 以在COCO 2017 数据集上预训练的 Faster R-CNN 实例为例,该实例 具有 80 个对象类。
  2. 将边界框回归中的 320 个单元和分类头中的 80 个单元分别替换为 4 和 1 个单元,以便为 1 个新类训练模型(边界框回归头每个类有 4 个单元,以便回归 X、Y、W , 边界框的 H 尺寸,其中 X、Y 是 bbox 中心的中心坐标,W、H 是其宽度和高度)。 

经过一些初步运行后,我们选择了以下训练参数:

  • 型号配置:R50-FPN
  • 学习率:0.000125
  • 批量大小:2
  • RoI 头的批量大小:128
  • 最大迭代次数:200

设置好参数后,我们开始研究训练中最有趣的方面:​​需要多少训练实例才能在验证集上获得不错的结果。由于即使 1 张图像包含多达 90 个实例,我们不得不随机删除部分注释以测试较少数量的实例。我们发现,对于包含 98 个实例的验证集,在 10 个训练实例时,我们只能选择 1-2 个测试实例,在 25 个时我们已经得到大约 40 个,而在 75 个或更高时,我们能够预测所有实例。

将训练实例的数量从 75 增加到 100 和 200 导致相同的最终训练结果。然而,由于训练示例的多样性更高,模型收敛得更快。

数据:图像/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%200%200'%3E%3C/svg%3E
资料来源:MobiDev

下图显示了对来自验证集的图像使用 237 个实例训练的模型的预测;有几个误报(由红色箭头表示),但它们的置信度较低,因此可以通过将置信度阈值设置为 ~80% 来过滤掉大部分。 

在下一步中,我们探索了训练模型在没有标签的测试图像上的性能。正如预期的那样,与训练集分布相似的图像具有可靠且高质量的预测,而日志具有异常形状、颜色或方向的图像对于模型来说要困难得多。

数据:图像/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20840%20525'%3E%3C/svg%3E
资料来源:MobiDev

然而,即使在来自测试集的具有挑战性的图像上,我们也观察到增加训练实例数量的积极影响。在下图中,我们展示了模型如何随着训练图像数量的增加(1 个训练图像 – 91 个实例,2-4 个图像 – 127-237 个实例)学习获取额外的实例(用绿色星星标记)。 

数据:图像/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%200%200'%3E%3C/svg%3E
资料来源:MobiDev

总而言之,结果表明该模型能够在验证数据集中提取约 95% 的实例。在对 75-200 个对象实例进行微调后,提供的验证数据类似于训练数据。这证明选择合适的训练示例可以在有限的数据场景中实现高质量的目标检测。

目标检测的未来

物体检测是近年来出现的最常用的计算机视觉技术之一。其原因主要是多功能性。一些现有模型已成功应用于消费电子产品或集成到驾驶辅助软件中,而其他模型则是用于实现物流自动化以及医疗保健和制造行业转型的机器人解决方案的基础。

 

目标检测任务对于数字化转型至关重要,因为它是 AI 驱动的软件和机器人技术的基础,从长远来看,这将使我们能够将人们从繁琐的工作中解放出来并降低多重风险。

本文由网上采集发布,不代表我们立场,转载联系作者并注明出处:http://www.34iot.com//a/yingxiao/491.html

联系我们

在线咨询:点击这里给我发消息

微信号:weixin888

工作日:9:30-18:30,节假日休息