ESC
输入关键词搜索文章
目录

YOLO

参考

使用

安装

pip install opencv-python ultralytics 

训练

导入库:

import cv2
from ultralytics import YOLO

选择模型:

model = YOLO("yolov8n.pt")

预测

predict and detect objects in images and videos

def predict(chosen_model, img, classes=[], conf=0.5):
    if classes:
        results = chosen_model.predict(img, classes=classes, conf=conf)
    else:
        results = chosen_model.predict(img, conf=conf)

    return results


def predict_and_detect(chosen_model, img, classes=[], conf=0.5):
    results = predict(chosen_model, img, classes, conf=conf)

    for result in results:
        for box in result.boxes:
            cv2.rectangle(img, (int(box.xyxy[0][0]), int(box.xyxy[0][1])),
                          (int(box.xyxy[0][2]), int(box.xyxy[0][3])), (255, 0, 0), 2)
            cv2.putText(img, f"{result.names[int(box.cls[0])]}",
                        (int(box.xyxy[0][0]), int(box.xyxy[0][1]) - 10),
                        cv2.FONT_HERSHEY_PLAIN, 1, (255, 0, 0), 1)
    return img, results

介绍

目标检测任务

目标检测任务是计算机视觉领域的一个重要任务,其目标是从图像或视频中检测出感兴趣的目标,并对其进行分类、定位和跟踪。目标检测任务的主要挑战是如何高效地检测出大量的目标,同时保持高的检测精度。

目标检测任务可以分为两大类:object localization and object classification.

  1. 分类任务:检测出目标的类别,如人、狗、车等。
  2. 定位任务:检测出目标的位置,如矩形框、边界框等。

RCNN系的算法的基本思想是“区域提取”与目标分类的Two-Stage方法。首先,通过区域提取器(Region Proposal)生成候选区域,然后将候选区域输入到分类器中进行分类。这种方法的优点是准确率高,但是计算量大,速度慢。

YOLO系的算法的基本思想是“一次卷积”与“一次预测”的One-Stage方法。它们将物体检测视为一个回归问题。首先,将整个图像输入到卷积神经网络中,得到图像的特征图。然后,将特征图划分为多个网格,每个网格预测出一个边界框和置信度。最后,将边界框与置信度输入到线性回归层中,得到目标的类别和位置。这种方法的优点是计算量小,速度快。

传统目标检测方法

传统的目标检测方法通常包括以下几种:

  1. 基于区域的检测方法:通过对图像中的不同区域进行检测,如滑动窗口、多尺度、多任务等。
  2. 基于深度学习的检测方法:通过深度学习技术,如卷积神经网络、深度神经网络等,对图像进行特征提取,并进行分类和回归。
  3. 基于特征的检测方法:通过对图像的特征进行匹配,如SIFT、SURF、HOG等,来检测出目标。

传统的目标检测方法存在以下问题:

  1. 计算复杂度高:传统的目标检测方法需要大量的计算资源,如GPU、多线程等。
  2. 准确率低:传统的目标检测方法的准确率往往不高,原因是它们对目标的形状、大小、位置等特征进行了假设,并没有充分利用图像的全局信息。
  3. 实时性差:传统的目标检测方法的实时性较差,因为它们需要对每张图像进行多次前向传播,耗时较长。

RCNN系

候选区域提议网络(Region-based Convolutional Neural Networks,R-CNN)是一种基于区域的卷积神经网络,其主要思想是通过对图像中的不同区域进行检测,并对检测到的目标进行分类和回归。R-CNN的网络结构如下图所示:

R-CNN网络结构

  1. R-CNN:Region-based Convolutional Neural Networks,基于区域的卷积神经网络。
  2. Fast R-CNN:快速的基于区域的卷积神经网络。
  3. Faster R-CNN:更快的基于区域的卷积神经网络。

YOLO

YOLO(You Only Look Once)是一种目标检测算法,其主要思想是通过在整个图像上只进行一次前向传播来检测目标,并对检测到的目标进行分类和回归。YOLO的主要特点是速度快、准确率高、可以实时处理视频流。

YOLO的网络结构由两部分组成:

YOLO v1

YOLOv1-example.png

YOLO v1的网络结构如下图所示:

yolov1.png

  1. 将原始图片缩放为448x448。
  2. 将缩放后的图片输入到CNN中,得到特征图。
  3. 将特征图划分为13x13的网格,每个网格预测出2个边界框和2个置信度。
  4. 将边界框与置信度输入到线性回归层中,得到目标的类别和位置。

YOLO v3

YOLO v4

YOLO v5

YOLO-NAS

YOLO v8

YOLOv8-Pose

Docs official