使用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对这些模型的开源,任何人,包括你和我,都可以利用这些最先进的模型进行工作和创建酷炫的应用程序。

相关文章
|
7月前
|
存储 XML JSON
开集目标检测-标签提示目标检测大模型(吊打YOLO系列-自动化检测标注)
开集目标检测-标签提示目标检测大模型(吊打YOLO系列-自动化检测标注)
|
机器学习/深度学习 算法 自动驾驶
|
6月前
|
人工智能 计算机视觉 Python
【超详细】【YOLOV8使用说明】一套框架解决CV的5大任务:目标检测、分割、姿势估计、跟踪和分类任务【含源码】(1)
【超详细】【YOLOV8使用说明】一套框架解决CV的5大任务:目标检测、分割、姿势估计、跟踪和分类任务【含源码】
【超详细】【YOLOV8使用说明】一套框架解决CV的5大任务:目标检测、分割、姿势估计、跟踪和分类任务【含源码】(1)
|
6月前
|
计算机视觉
【超详细】【YOLOV8使用说明】一套框架解决CV的5大任务:目标检测、分割、姿势估计、跟踪和分类任务【含源码】(2)
【超详细】【YOLOV8使用说明】一套框架解决CV的5大任务:目标检测、分割、姿势估计、跟踪和分类任务【含源码】
|
7月前
图像表示方法
图像表示方法
64 0
|
7月前
|
机器学习/深度学习 存储 API
基于YOLOv8的目标检测与计数
基于YOLOv8的目标检测与计数
|
机器学习/深度学习 编解码 算法
图像目标分割_4 DeepLab-V1
相比于传统的视觉算法(SIFT或HOG),Deep-CNN以其end-to-end方式获得了很好的效果。这样的成功部分可以归功于Deep-CNN对图像转换的平移不变性(invariance),这根本是源于重复的池化和下采样组合层。平移不变性增强了对数据分层抽象的能力,但同时可能会阻碍低级(low-level)视觉任务,例如姿态估计、语义分割等,在这些任务中我们倾向于精确的定位而不是抽象的空间关系。
126 0
图像目标分割_4 DeepLab-V1
|
机器学习/深度学习 编解码 TensorFlow
图像目标分割_5 DeepLab V2 & V3& V3+
DeepLab采用最新的ResNet图像分类深度卷积神经网络构建,与原来基于VGG-16的网络相比,取得了更好的语义分割性能。
362 0
|
机器学习/深度学习 编解码 人工智能
图像基础二(下)
图像基础二(下)
190 0
图像基础二(下)
|
自然语言处理 计算机视觉 C++
图像基础二(上)
图像基础二(上)
164 0
图像基础二(上)