Press "Enter" to skip to content

基于小数据集的目标检测:多少数据才够?

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

开始任何机器学习项目通常都会从这样一个问题开始:“多少数据才够?”响应取决于许多因素,如生产数据的多样性、开源数据集的可用性、系统的预期性能,而这一列表可能还会持续很长一段时间。在这篇文章中,我想揭穿一个流行的神话,即机器只从大量数据中学习,并分享一个使用小数据集应用ML的用例。

 

随着深度学习在计算机视觉中的迅速应用,越来越多的任务需要借助机器来解决。为了了解现实世界中的机器学习应用程序,让我们将重点放在对象检测任务上。

 

什幺是物体检测?

 

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

 

对象检测业务用例

 

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

 

制造业。质量保证、库存管理、分拣和装配线目标检测在许多制造过程的自动化中起着重要作用。机器学习算法允许快速检测任何缺陷,自动计数和定位对象。这使他们能够通过最大限度地减少人为错误和花费的时间来提高库存准确性。

 

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

 

零售业。通过分析货架图像并将其与理想状态进行比较,对象检测有助于检测SKU(库存单位)。集成到硬件中的С计算机视觉技术有助于减少零售店的等待时间,跟踪客户与产品交互的方式,并自动送货。

 

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

 

安全和监控。目标检测的应用包括能够进行人物检测和人脸识别的视频监控系统。利用机器学习算法,这样的系统被设计用于生物特征识别和远程监控。这项技术甚至被用于预防自杀。

 

物流和仓库自动化。目标检测模型能够对缺陷检测、库存管理、质量控制和供应链管理的自动化进行目视检查。人工智能支持的物流解决方案使用对象检测模型而不是条形码检测,从而取代了手动扫描。

 

如何开发目标检测系统:PoC方法

 

开发一个对象检测系统,用于类似于我们上面提到的任务,与任何其他ML项目没有什幺不同。它通常从建立一个假设开始,在几轮数据实验中进行检验。

 

这样的假设是软件开发中PoC方法的一部分。它与机器学习相一致,因为在这种情况下,交付不是最终产品。运行研究使我们可以得出结果,从而可以说选择的方法都可以使用,或者需要运行额外的实验来选择不同的方向。

 

如果问题是“有多少数据足以进行机器学习”,这个假设可能听起来像是“150个数据样本足以让模型达到最佳性能水平”。

 

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

 

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

 

要回答“多少数据才够”的问题,没有机器学习专家可以预测需要多少数据,这是绝对正确的。找出答案的唯一方法是设定一个假设,并在一个真实的案例中对其进行检验。这正是我们对下面的对象检测示例所做的工作。

 

基于小数据集的物流物品自动清点目标检测案例研究

 

我们的目标是创建一种能够检测后勤对象的系统。从生产到仓库或从仓库到设施的货物运输通常需要通过发票和数据库对实际数量进行中间控制和协调。如果手动完成,这项任务将需要数小时的人工工作,并且风险很高。

 

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

 

许多人选择的解决问题的典型方法是使用经典的计算机视觉技术。例如,可以结合索贝尔过滤边缘检测和霍夫圆变换方法来检测和计数圆形对象。该方法简单且相对可靠,但是它更适合于受控环境,例如具有定义良好的圆形或椭圆形物体的生产线。

 

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

 

数据收集和标注

 

为了在较小的数据集上进行目标检测实验,我们收集并手动标注了几张可从公共来源获得的图像。我们决定将重点放在木材原木的检测上,并将带注释的图像分为和验证拆分。

 

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

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

在目标检测中,数据量不仅取决于数据集中的图像数量,还取决于每个图像中单个对象实例的数量。在我们的示例中,图像相当密集地堆满了对象-每个图像的实例数量达到50-90个。

Detectron2目标检测

 

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

 

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

 

然后,使用ROI合并操作从特征地图中提取区域,并通过边界框偏移头部(预测每个区域的准确边界框坐标)和对象分类头部(预测区域中对象的类别)进行处理。

 

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

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

 

有一级检测器模型试图在没有该建议筛选阶段的情况下找到相关对象。单级探测器具有更简单的结构,与两级模型相比,通常速度更快,但精确度较低。其中包括Yolov4和Yolov5架构,这些系列中的一些配置较轻的型号可以达到50-140 FPS(虽然会影响检测质量),而更快的R-CNN最高运行速度为15-25 FPS。 Yolov4 Yolov5

 

关于更快R-CNN解释的最初论文发表于2016年,并从那里对架构进行了一些小的改进,这反映在我们使用的Detectron2库中。

 

例如,为我们的实验选择的型号CONFIG R50-FPN使用具有功能金字塔网络的主干ResNet-50-这一概念是在CVPR 2017论文中引入的,从那时起就成为CNN主干用于特征提取的主要内容。简而言之,我们使用的特征金字塔网络不仅是从CNN提取的最深层的特征地图,也是中低级的特征地图。这允许检测否则在压缩到最深级别期间丢失的小对象。 R50-FPN paper

结果

 

在我们的实验中,我们使用了以下逻辑:

 

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

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

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

 

将训练实例的数量从75个增加到100个和200个会产生相同的最终训练结果。然而,由于训练样本的多样性较高,模型收敛速度较快。

在下图中可以看到用来自验证集的图像上的237个实例训练的模型的预测;有几个假阳性(用红色箭头标记),但它们的置信度较低,因此可以通过将置信度阈值设置为~80%来过滤掉大部分。

 

下一步,我们研究了训练后的模型在不带标签的测试图像上的性能。正如预期的那样,与列车组分布相似的图像具有自信和高质量的预测。然而,对于原木形状、颜色或方向不同的图像,模型处理起来要困难得多。

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

综上所述,结果表明,该模型能够提取验证数据集中95%的实例。在对75-200个对象进行微调之后,实例提供的验证数据与训练数据相似。这证明在有限的数据场景中,选择合适的训练样本使得质量对象检测成为可能。

 

目标检测的未来

 

目标检测是近年来出现的最常用的计算机视觉技术之一。这样做的原因是多功能性。一些现有的车型在消费电子产品中成功实施,或者集成在驾驶员辅助软件中。其他是机器人解决方案的基础,用于实现物流自动化,并改变医疗保健和制造业。

 

目标检测任务对于数字转型至关重要,因为它是人工智能驱动的软件和机器人的基础,从长远来看,这意味着我们可以逐渐将人们从繁琐的工作中解放出来,并缓解多重风险。

 

作者是Maksym Tatariants,AI解决方案架构师MobiDev。 Maksym Tatariants MobiDev

 

全文最初发表在https://mobidev.biz上,基于MobiDev技术研究。 https://mobidev.biz

 

Be First to Comment

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注