【深度学习:目标检测】深度学习中目标检测模型、用例和示例
物体检测是一种计算机视觉技术,用于检测图像或视频帧中的相关物体。物体检测算法使用复杂的机器学习和深度学习架构来分析图像数据,并识别和定位感兴趣的物体。这些算法的输出包括对象名称和边界框的位置信息。
物体检测有多种实际应用,包括医学成像、安全检测系统和自动驾驶汽车。本文将讨论物体检测、其工作原理和一些实际应用。
让我们深入了解…
什么是物体检测?
简单地说,物体检测是计算机在图像中识别和定位物体的能力。这里的直觉是,与人类一样,机器应该了解其参照系内的所有实体。这些实体可能包括人、动物、汽车、树木等。
然而,计算机视觉已经取得了长足的进步,如今我们可以看到许多先进的机器学习算法用于异议识别和分割。在向前迈进之前,有必要区分一下什么是物体检测,什么不是物体检测。
物体检测与图像分类
图像分类和物体检测都用于识别图像中的实体。不过,图像识别算法会将训练数据中的一个类别与整个图像或视频帧关联起来,而不管其中包含多少信息。例如,猫分类器模型只有在出现猫的情况下才会输出正面响应。此外,分类模型不提供任何有关检测到的物体位置的信息。
物体检测将分类算法向前推进了一步。除了对图像中的多个物体进行分类外,它还会返回与每个实体位置相对应的边界框注释。这些附加功能使 CV 模型可以用于多个实际应用中。
物体检测与图像分割
图像分割与物体检测类似,因为它们执行相同的功能。这两种算法都能检测图像中的物体,并输出用于物体定位的坐标。不过,分割算法不是在物体周围画出整个方框,而是生成精确的遮罩,在像素级别上覆盖物体。
图像分割注释包括图像中包含的实例的精确像素坐标。由于其精确的结果,图像分割更适合现实生活中的应用,如车辆检测。然而,由于算法复杂,与物体检测相比,图像分割模型的计算成本较高。
计算机视觉中的目标检测
物体检测可以自动执行繁琐的任务,以提高各个行业的生产力和效率。
物体检测的优点
这种计算机视觉技术已进入多个行业并帮助实现关键操作的自动化。
大多数现代物体检测模型都用于医学成像,以检测可能被忽视的微小异常,例如肿瘤。这些算法也用于日常应用中。一些常见的用例包括使用安全摄像头进行人员检测以及授权进入/退出的人脸检测。此外,现代模型的效率足以在中型计算机上运行,从而进一步扩展了它们的可用性。
物体检测的缺点
虽然目标检测的有用性是不可否认的,但其应用对输入图像很敏感。检测精度取决于图像颜色、对比度、质量以及物体形状和方向。
对象检测模型经常受到对象方向的困扰。许多活体物体,例如人类和动物,可能会以不同的姿势被发现。人工智能模型将无法理解所有这些方向并失去检测准确性。
除了这些示例之外,对象检测对于数千个现实世界的用例和应用程序来说都是一个有价值的计算机视觉组件。
深度学习和目标检测
物体检测算法相当复杂。它们需要复杂的处理,并且它们的数据集包含多层次的信息。这些信息需要复杂的算法来进行特征提取、理解和模型训练。
深度学习使现代目标检测模型、算法和大多数现实世界的应用成为可能。大多数现代最先进的模型都采用深度学习架构来取得令人印象深刻的结果。一些流行的对象检测深度学习架构包括:
- SSD
- YOLO
- R-CNN
- Fast R-CNN
在深度学习之前,目标检测不太先进。现在,受深度学习算法和模型(如YOLO、SSD、R-CNN等)的影响,我们有了一阶段和两阶段的目标检测算法。使目标检测的用例和应用更加广泛和深入,包括计算机视觉中的无数示例。
人员检测
人员检测是对象识别模型的关键应用。它与摄像机一起使用,在家庭、公共场所和自动驾驶汽车中进行实时视频监控。
该应用程序进一步扩展以触发其他用例,例如,为未经授权的人员报警或阻止自动驾驶汽车撞上行人。
大多数人员检测模型都经过训练,可以根据正面和不对称图像或视频帧来识别人员。
物体检测如何工作?
传统的计算机视觉算法使用图像处理技术进行分类和对象检测任务。 OpenCV 等开源 Python 库包含多个图像转换和处理函数的实现。其中包括图像扭曲、模糊和 haar 级联分类器等高级实现。
然而,大多数现代训练模型都使用复杂的架构和监督学习。这些利用数据集注释和深度学习来实现高性能和高效率。
深度学习目标检测有多种工作方式,具体取决于所部署的算法和模型(例如 YOLO、SSD、R-CNN 等)。
在大多数情况下,这些模型被集成到其他系统中,并且只是检测、标记和注释图像或视频中的对象的整个过程的一部分。这包括计算机视觉项目的多目标跟踪。
一阶段与两阶段深度学习目标检测器
实现对象检测有两种主要方法:一级对象检测器和两级对象检测器。
这两种方法都会查找图像或视频帧中的对象数量,并对这些对象或对象实例进行分类,同时使用边界框估计大小和位置。
一级检测器不包括任何中间处理。它接受输入图像并直接输出类和边界框。流行的一级检测器包括 YOLO(包括 v8)、RetinaNet 和 SSD。
相反,两级检测器执行两个单独的任务。第一步涉及区域提议网络,它为我们提供可能存在对象的感兴趣区域 (ROI)。然后,第二个网络使用该 ROI 来生成边界框。流行的两级检测器包括 R-CNN、Faster R-CNN、Mask R-CNN 和最新模型 G-RCNN。
物体检测用例和应用
物体检测在现实世界中有许多应用和用途。
它是全球数十个领域的计算机视觉 (CV)、ML 和 AI 项目和软件的组成部分,包括医疗保健、机器人、汽车(自动驾驶汽车)、零售、电子商务、艺术、生态、农业、动物学、旅游、卫星图像和监视。
一些常见的现实用例包括:
- 在机场扫描并验证护照上的面孔
- 检测自动驾驶车辆中的道路、行人和交通灯
- 监测农场和动物园的动物
- 确保“禁飞”名单上的人无法通过机场的安检门
- 监控零售店的顾客
- 检测社交媒体上提到的品牌产品;称为“视觉聆听”的基于人工智能的系统
对象检测甚至用于艺术画廊,参观者可以使用应用程序扫描图片并了解它的所有信息,从它的历史到最新的估价。
物体检测发展里程碑
物体检测的里程碑并不是一朝一夕的成功。过去20年来,该领域一直在不断创新。
传统方法始于 2001 年的 Viola-Jones Detector,这是一种开创性的机器学习算法,使物体检测成为可能。 2006 年,推出了 HOG 检测器,随后于 2008 年推出了 DPM,引入了边界框回归。
然而,真正的进化是在 2014 年实现的,当时深度学习检测开始塑造使对象检测成为可能的模型。
自 2014 年深度学习检测介入以来,多年来开发了两阶段目标检测算法和模型。这些模型包括 RCNN 和 R-CNN 以及这些模型的各种迭代(Fast、Faster、Mask 和 G-RCNN)。我们将在下面更详细地介绍这些内容。
一阶段目标检测算法,例如 YOLO(以及后续迭代,直至版本 8)、SSD(2016 年)和 RetinaNet(2017 年)。
流行的物体检测算法
YOLO、SSD 和 R-CNN 是一些最流行的目标检测模型。
YOLO:你只看一次
YOLO(You Only Look Once)是一组流行的计算机视觉算法。它包括多项任务,例如分类、图像分割和对象检测。 YOLO 由 Joseph Redmon、Ali Farhadi 和 Santosh Divvala 开发,旨在比其他模型更快地获得高精度的物体检测结果。
YOLO 使用单阶段检测模型一次性处理图像并输出相关结果。 YOLO 是单阶段目标检测模型系列的一部分,该模型按照卷积神经网络 (CNN) 模式处理图像。
YOLO的最新版本是YOLOv8,由Ultralytics开发。如果您比其他对象检测模型更喜欢 YOLO,那么使用此模型是有意义的。其性能(以平均平均精度(mAP)衡量)、速度(以fps为单位)和准确度更好,而计算成本更低。
SSD: Single-shot Detector
单次检测器(SSD)是另一种单级检测器模型,可以识别和预测不同的类别和对象。
SSD 使用深度神经网络 (DNN),调整图像和视频帧中边界框的输出空间,然后为默认框中的对象类别生成分数。
SSD 准确率高,易于训练,并且可以与需要对象检测功能的软件和平台集成。它于 2015 年首次由学者和数据科学家开发并发布。
R-CNN:基于区域的卷积神经网络
基于区域的卷积神经网络或使用 CNN 特征的区域/模型(称为 R-CNN)是使用深度学习模型进行对象检测的创新方法。
R-CNN 从图像中选择多个区域,例如锚框。首先为模型提供预定义的标签类别。它使用这些来标记图像中对象的类别和其他偏移量,例如边界框。
R-CNN 模型还可以将图像划分为近 2,000 个区域部分,然后在图像中的每个区域应用卷积神经网络。 R-CNN 是两阶段模型,因此与 YOLO 相比,它们的训练速度较差,但还有其他实现,例如快速和更快的 R-CNN,可以提高效率。
R-CNN 模型的开发始于 2013 年,这种方法的一个应用是在 Google Lens 中实现对象检测。
下一步是什么?
与任何技术创新一样,计算机视觉目标检测的进步基于硬件、软件和算法模型的开发而不断加速。
现在,物体检测或物体识别的使用变得更加广泛,这主要归功于人工智能成像技术、平台、软件、开源工具以及 MS COCO 和 ImageNet 等复杂数据集的不断进步。计算能力不断增强,多核处理器技术、人工智能加速器、张量处理单元 (TPU) 和图形处理单元 (GPU) 支持计算机视觉的进步。
此外,处理单元的性能改进现在允许在边缘设备上部署复杂的模型。例如,可以更轻松地将对象检测集成到智能安全摄像头和智能手机等移动设备上。
这意味着智能设备可以内置对象检测功能,用户不再需要担心外部处理能力。边缘人工智能正在使实时物体检测作为商业应用变得更加经济实惠。
使用 Encord 进行物体检测
Encord 简化并增强了计算机视觉项目中的对象检测。在整个机器学习管道中利用 Encord:
数据准备:Encord 提供全面的注释工具和数据分析,以确保高质量的数据准备,并具有自动化功能以节省时间。
自定义标注:利用Encord的可定制标注工具包定义标注类型、标签和属性,适应各种物体检测场景。
协作和管理注释者:使用 Encord 简化注释者管理、分配任务、监控进度,并通过协作功能确保注释的一致性和准确性。
训练和评估模型:使用 Encord 正确注释的数据有效地训练和评估对象检测模型,有助于提高模型性能。分析 Encord 平台内的模型性能。
迭代和改进:使用 Encord 的交互式仪表板不断审查和完善注释,可视化和分析注释数据和模型性能,以确定需要改进的领域。
借助 Encord,对象检测过程变得更加高效和有效,从而在计算机视觉项目中获得更好的结果。
物体检测:关键要点
- 物体检测需要复杂的深度学习架构
- R-CNN 和 YOLO 等模型计算效率高且结果优异
- 物体检测有各种实际用例,例如视频监控和自动驾驶汽车
- GPU 和 TPU 等计算硬件的发展使模型训练变得更加容易
- 高性能硬件和高效架构使得在移动设备上针对利基应用部署对象检测成为可能。