使用YOLO检测图像中的对象

简介: 使用YOLO检测图像中的对象

想象一下:你和你的自动驾驶车正在穿越拥挤的街道。你是否曾经想过这样的自动驾驶汽车是如何看待这个世界的?它实际上在不到1/10秒的时间内玩起了“我瞧瞧”的游戏。


自动驾驶汽车必须在瞬间内识别人、标志和车辆。这就是为什么在当今社会中,准确找到图像中的对象如此重要的原因。准确找到物体有助于这些汽车迅速做出决策,以确保我们所有人的安全。如果汽车错误地认为标志是行人,可能会发生糟糕的事情。

车车辆在图像中的检测

什么是目标检测?

这些自动驾驶汽车正在进行的正式名称是目标定位。目标检测旨在不仅对图像中的对象进行分类,还要找到该对象在图像中的位置。这对于各种不同的任务都非常重要,因为它使自动驾驶车辆能够在复杂的交通场景中安全导航。


目标检测有各种不同的应用。在医学成像中,目标检测对于诊断疾病至关重要,在农业技术中用于作物监测,在增强现实中用于无缝用户交互。准确的目标检测不仅有助于理解和解释视觉内容,而且还为做出明智决策奠定了基础。

在图像中检测对象


目标检测是如何工作的?

计算机中的目标检测由卷积神经网络提供支持。这些卷积神经网络能够从图像中提取特征,从而实现图像的分类。有许多不同类型的目标定位模型。一些目标定位模型包括YOLO、SSD和R-CNN。YOLO是最强大且最高效的模型。它是最常用的目标检测模型。


这些图像检测神经网络首先通过分类头预测图像中的内容。然后,在回归头中预测每个对象在图像中的位置。分类旨在对图像进行特定数量的类别分类,而回归旨在找到一个相关的数字,在图像检测的情况下是边界框的x和y坐标。

图像检测神经网络的架构


介绍YOLO

YOLO,即“You Only Look Once”,改变了目标检测领域的游戏规则,它非常快速和高效。


YOLOv5是如何工作的?

与旧方法进行多轮图像处理不同,它使用深度神经网络,特别是卷积神经网络(CNNs),来检测对象。但是,它以聪明的方式使用CNN。它将图像分成小节并预测事物的位置以及对其猜测的自信程度,所有这些都一次性完成。


它将图像分为SxS网格,每个单元格一个。如果对象的中心落在单元格下,该单元格负责该特定对象。对于每个单元格,它预测B个边界框。它还使用C类概率预测每个框的置信度。对于每个边界框,有5个预测:x、y、宽度、高度和置信度分数。最终的预测被编码为SxSx(Bx5+C)张量,即多维向量。当YOLO在Pascal VOC上进行评估时,这是一个用于目标检测的著名数据集,图像被分为一个7x7的网格,每个单元格有2个边界框的预测,以及20个总标签类。这导致了一个7x7x30的张量作为预测。

相较之前的方法Faster R-CNN,它依赖于一个更复杂的系统。它首先在图像中提出潜在区域,然后分析每个区域以单独检测对象。这种方法涉及多个步骤,使其相对于YOLOv5而言更慢。另一方面,YOLOv5跳过了区域建议步骤,直接预测边界框和对象概率。这个简化的过程显著加速了目标检测,同时保持了高准确性。


数据集

YOLOv5训练的数据集是COCO数据集。COCO数据集是640x640的图像,可用于图像检测、图像分割和图像字幕。总共有80个类别在COCO数据集中。由于COCO是一个非常庞大的数据集,因此它对于创建诸如YOLOv5之类的通用模型非常有用。


评估图像检测模型的准确性

与所有机器学习模型一样,我们需要测量模型的准确性。那么对于目标检测模型,如何进行准确性评估呢?图像检测模型使用一种称为交并比(IoU)的方法。较高的IoU表示预测边界框与实际边界框之间的匹配程度更高。


它通过将重叠区域的面积除以并集的面积来实现。IoU为1意味着预测和实际情况完全相同。

IoU的计算方式

使用Python进行YOLO

既然我们了解了YOLO的工作原理以及它是如何训练的,我们如何在自己的程序中编写代码并实施呢?Ultralytics已经将YOLOv5开源,允许任何人在其自己的程序中使用YOLOv5。使用PyTorch hub,我们可以使用YOLOv5并测试图像识别功能。


在实施YOLOv5时,我面临的最具挑战性的决定之一实际上是弄清楚如何实现它。有许多不同的方法,如Ultralytics和Roboflow。我决定使用Ultralytics,因为Ultralytics使得与Python程序集成变得非常容易,尤其是与PyTorch一起使用。


你也可以查看Roboflow!Roboflow可以让工程师创建和注释数据集,开发模型,并将模型部署在API端点上,我们可以将其部署到NVIDIA Jetson、iOS、浏览器和Raspberry Pi上!


TL;DR

  1. 目标检测对于自动驾驶汽车和医学诊断等应用非常重要。

2. YOLOv5通过准确地在图像中识别对象,大大简化和改进了目标检测,超越了以前的方法(如Faster R-CNN)的复杂性和速度。


结论

总的来说,YOLO是机器学习和计算机视觉中非常强大的工具。它非常准确,而且由于Ultralytics对这些模型的开源,任何人,包括你和我,都可以利用这些最先进的模型进行工作和创建酷炫的应用程序。

相关文章
|
6月前
|
算法 Python
yolov5障碍物识别-雪糕筒识别(代码+教程)
yolov5障碍物识别-雪糕筒识别(代码+教程)
|
6月前
|
存储 XML JSON
开集目标检测-标签提示目标检测大模型(吊打YOLO系列-自动化检测标注)
开集目标检测-标签提示目标检测大模型(吊打YOLO系列-自动化检测标注)
|
6月前
|
机器学习/深度学习 算法 计算机视觉
yolov8人脸识别-脸部关键点检测(代码+原理)
yolov8人脸识别-脸部关键点检测(代码+原理)
|
算法 自动驾驶 数据挖掘
3D检测:DETR3D
3D检测:DETR3D
444 0
3D检测:DETR3D
|
1月前
|
机器学习/深度学习 计算机视觉
目标检测笔记(六):如何结合特定区域进行目标检测(基于OpenCV的人脸检测实例)
本文介绍了如何使用OpenCV进行特定区域的目标检测,包括人脸检测实例,展示了两种实现方法和相应的代码。
64 1
目标检测笔记(六):如何结合特定区域进行目标检测(基于OpenCV的人脸检测实例)
|
1月前
|
机器学习/深度学习 JSON 数据可视化
YOLO11-pose关键点检测:训练实战篇 | 自己数据集从labelme标注到生成yolo格式的关键点数据以及训练教程
本文介绍了如何将个人数据集转换为YOLO11-pose所需的数据格式,并详细讲解了手部关键点检测的训练过程。内容涵盖数据集标注、格式转换、配置文件修改及训练参数设置,最终展示了训练结果和预测效果。适用于需要进行关键点检测的研究人员和开发者。
207 0
|
5月前
|
算法 计算机视觉 Python
ORB关键点检测
【6月更文挑战第5天】ORB关键点检测。
34 4
|
5月前
|
算法 计算机视觉 Python
SIFT关键点检测
【6月更文挑战第5天】SIFT关键点检测。
37 4
|
6月前
图像表示方法
图像表示方法
52 0
|
6月前
|
机器学习/深度学习 存储 API
基于YOLOv8的目标检测与计数
基于YOLOv8的目标检测与计数