Gradio全解11——Streaming:流式传输的视频应用(3)——YOLO系列模型技术架构与实战

发布于:2025-09-11 ⋅ 阅读:(18) ⋅ 点赞:(0)

本章目录如下:

  1. 《Gradio全解11——Streaming:流式传输的视频应用(1)——FastRTC:Python实时通信库》
  2. 《Gradio全解11——Streaming:流式传输的视频应用(2)——Twilio:网络服务提供商》
  3. 《Gradio全解11——Streaming:流式传输的视频应用(3)——YOLO系列模型技术架构与实战》
  4. 《Gradio全解11——Streaming:流式传输的视频应用(4)——基于Gradio WebRTC的实时目标检测》
  5. 《Gradio全解11——Streaming:流式传输的视频应用(5)——RT-DETR:实时端到端检测模型》
  6. 《Gradio全解10——Streaming:流式传输的视频应用(6)——基于RT-DETR模型构建视频流目标检测系统》
  7. 《Gradio全解11——Streaming:流式传输的视频应用(7)——多模态Gemini模型及其思考模式》
  8. 《Gradio全解11——Streaming:流式传输的视频应用(8)——Gemini Live API:实时音视频连接》
  9. 《Gradio全解11——Streaming:流式传输的视频应用(9)——使用FastRTC+Gemini创建沉浸式音频+视频的艺术评论家》

11.3 YOLO系列模型技术架构与实战

近年来,YOLO系列因其在计算成本与检测性能之间的有效平衡,已成为实时目标检测领域的主导技术。本节将介绍YOLO系列最流行的两个模型:YOLOv10和YOLOE,讲解技术架构并进行实战,方便读者了解著名的YOLO系列模型较新版本的区别和优势。

11.3.1 YOLOv10:优化后处理和模型架构

本节首先介绍YOLOv10模型的技术特点,然后介绍性能优势及子模型区别,最后进行实战,包括安装与运行Demo,下载模型并验证、训练和预测。

1. 模型技术特点

近年来,YOLO系列因其在计算成本与检测性能之间的有效平衡,已成为实时目标检测领域的主导技术。研究者们针对YOLO的架构设计、优化目标、数据增强策略等方面进行了深入探索,取得了显著进展。然而,依赖非极大值抑制(NMS)的后处理方式阻碍了YOLO的端到端部署,并对推理延迟产生负面影响。此外,YOLO各组件设计缺乏全面深入的考量,导致明显的计算冗余并限制了模型能力,使得其效率欠佳而存在较大性能提升空间。

在2024年3月提出的YOLOv10中,旨在从后处理和模型架构两方面共同推进YOLO系列的性能-效率边界,其主要改进有两个方面:

  • YOLOv10首先提出用于NMS-free训练的一致性双重分配策略,在保持高性能同时显著降低推理延迟。
  • 其次,引入面向YOLO效率-精度的全方位驱动模型的设计策略,从效率与精度两个维度系统优化YOLO的各个组件,大幅降低计算开销并提升模型能力。

这些技术共同构建了新一代实时端到端目标检测YOLO系列——YOLOv10。关于YOLOv10的论文和详细代码请参阅其Github:YOLOv10: Real-Time End-to-End Object Detection🖇️链接11-23

2. 模型性能与子模型比较

大量实验表明,YOLOv10在不同模型规模下均实现了近乎最优的性能与效率表现,例如:

  • 在COCO数据集的相似指标AP(Accurate Performance,精准度)下,YOLOv10-S比RT-DETR-R18快1.8倍,且参数量与FLOP减小2.8倍。
  • 与YOLOv9-C相比,YOLOv10-B在同等性能下延迟降低46%,参数量减少25%。

在延迟-精度(左)和参数量-精度(右)权衡方面,YOLOv10与其他模型进行比较的结果如图11-3所示:

图11-3

以COCO数据集为例,YOLOv10系列子模型的数据量测试大小、参数量、浮点操作数(FLOP)、精度值及延迟等的比较如表11-2所示:

表11-2
模型 测试大小 参数量 浮点操作数 精度值 延迟
YOLOv10-N 640 2.3M 6.7G 38.5% 1.84ms
YOLOv10-S 640 7.2M 21.6G 46.3% 2.49ms
YOLOv10-M 640 15.4M 59.1G 51.1% 4.74ms
YOLOv10-B 640 19.1M 92.0G 52.5% 5.74ms
YOLOv10-L 640 24.4M 120.3G 53.2% 7.28ms
YOLOv10-X 640 29.5M 160.4G 54.4% 10.70ms
3. 安装与运行Demo

下面进行实操。首先安装模型并运行Demo,建议使用Coda环境:

conda create -n yolov10 python=3.9
conda activate yolov10
pip install -r requirements.txt
pip install -e .
# start demo
python app.py
# Please visit http://127.0.0.1:7860

requirements.txt中内容见Github。Demo中有演示模型使用的代码,其app.py的推理函数如下所示:

from ultralytics import YOLOv10
import tempfile
import cv2
def yolov10_inference(image, video, model_id, image_size, conf_threshold):
    model = YOLOv10.from_pretrained(f'jameslahm/{model_id}')
    if image:
        results = model.predict(source=image, imgsz=image_size, conf=conf_threshold)
        annotated_image = results[0].plot()
        return annotated_image[:, :, ::-1], None
    else:
        video_path = tempfile.mktemp(suffix=".webm")
        with open(video_path, "wb") as f:
            with open(video, "rb") as g:
                f.write(g.read())
        cap = cv2.VideoCapture(video_path)
        fps = cap.get(cv2.CAP_PROP_FPS)
        frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
        frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
        output_video_path = tempfile.mktemp(suffix=".webm")
        out = cv2.VideoWriter(output_video_path, cv2.VideoWriter_fourcc(*'vp80'), fps, (frame_width, frame_height))
        while cap.isOpened():
            ret, frame = cap.read()
            if not ret:
                break
            results = model.predict(source=frame, imgsz=image_size, conf=conf_threshold)
            annotated_frame = results[0].plot()
            out.write(annotated_frame)
        cap.release()
        out.release()
        return None, output_video_path

其它部分代码请参照Github,建议读者仔细阅读并灵活运用。

4. 加载模型并验证、训练、预测和推送hub

安装完成后,可通过代码或命令行两种方式加载模型,如下所示:

from ultralytics import YOLOv10
model = YOLOv10.from_pretrained('jameslahm/yolov10{n/s/m/b/l/x}')
# or download from github
# wget https://github.com/THU-MIG/yolov10/releases/download/v1.1/yolov10{n/s/m/b/l/x}.pt
# model = YOLOv10('yolov10{n/s/m/b/l/x}.pt')

使用模型验证、训练、预测和推送hub的代码如下所示:

# Validation, Training and Prediction
model.val(data='coco.yaml', batch=256)
model.train(data='coco.yaml', epochs=500, batch=256, imgsz=640)
source = 'http://images.cocodataset.org/val2017/000000039769.jpg'
model.predict(source=source, save=True)
# after training, one can push to the hub
model.push_to_hub("your-hf-username/yolov10-finetuned")

11.3.2 YOLOE:实时高效感知任何物体

本节讲述YOLO系列最新模型YOLOE,首先讲解模型的技术特点及性能优势,然后介绍子模型区别并进行实战,实战包括安装并运行Demo、下载并导入模型。

1. 模型技术架构

YOLO系列的最新进展是YOLOE(ye):实时全场景视觉系统,它是一种高效、统一且开放的目标检测与分割模型,能够像人眼一样实时感知任何物体。该模型支持多种提示机制(包括文本提示、视觉输入提示以及无提示范式),且完全开源,与闭集YOLO模型相比,具有零推理和迁移开销的特性。

目标检测与分割在计算机视觉应用中广泛使用,但YOLO系列等传统模型虽高效精准,却受限于预定义类别,难以适应开放场景。现有开放集方法通过文本提示、视觉线索或无提示范式突破这一限制,却常因高计算量或部署复杂度而在性能与效率间妥协。而2025年3月提出的YOLOE,将多种开放提示机制下的检测与分割功能集成于单一高效模型中,实现实时"万物识别"。其提示机制包括:

  • 针对文本提示,提出重参数化的区域-文本对齐策略(Re-parameterizable Region-Text Alignment,RepRTA),通过重参数化轻量辅助网络优化预训练文本嵌入,在零推理与迁移开销下增强视觉-文本对齐。
  • 对于视觉提示,开发语义激活视觉提示编码器(Semantic-Activated Visual Prompt Encoder,SAVPE),采用解耦语义与激活分支,以极低复杂度并提升视觉嵌入质量与精度。
  • 针对无提示场景,设计惰性区域-提示对比策略(Lazy Region-Prompt Contrast,LRPC),利用内置大型词表与专用嵌入识别所有对象,避免依赖高成本语言模型。YOLOE整体架构示意图如图11-4所示:

在这里插入图片描述

图11-4

关于YOLOE的论文和实现代码请参阅YOLOE Github: Real-Time Seeing Anything🖇️链接11-24

2. 性能表现

大量实验表明YOLOE在零样本性能与迁移性方面表现卓越,同时具备高推理效率与低训练成本。值得注意的是,在LVIS数据集上,YOLOE-v8-S以更低的3倍训练成本和1.4倍推理速度超越YOLO-Worldv2-S达3.5精度。迁移至COCO时,YOLOE-v8-L相比闭集YOLOv8-L亦有提升,且训练时间减少近4倍。

YOLOE的性能表现可以从零样本检测评估(Zero-shot detection evaluation)、零样本分割评价(Zero-shot segmentation evaluation)、无提示评价(Prompt-free evaluation)、COCO下行迁移(Downstream transfer on COCO)等方面衡量。以零样本检测评估为例,说明如下:

  • 在LVIS minival数据集上报告固定AP精度值(基于文本提示(T)/视觉提示(V))。
  • 针对文本提示的检测任务测得训练时间(基于8块NVIDIA RTX4090 GPU)。
  • FPS指标分别在T4(TensorRT)和iPhone 12(CoreML)平台测得。
  • 训练数据中,使用Objects365v1与GoldG的组合OG,数据量测试大小为640。
  • 预训练完成后,YOLOE-v8/YOLOE-11可通过重参数化转为与YOLOv8/YOLO11完全相同的架构,且实现零迁移开销。零样本检测评估测试的数据统计如表11-3所示:
表11-3
模型 提示类别 调用参数量 时长 FPS 精度值
YOLOE-v8-S T / V 12M / 13M 12.0h 305.8 / 64.3 27.9 / 26.2
YOLOE-v8-M T / V 27M / 30M 17.0h 156.7 / 41.7 32.6 / 31.0
YOLOE-v8-L T / V 45M / 50M 22.5h 102.5 / 27.2 35.9 / 34.2
YOLOE-11-S T / V 10M / 12M 13.0h 301.2 / 73.3 27.5 / 26.3
YOLOE-11-M T / V 21M / 27M 18.5h 168.3 / 39.2 33.0 / 31.4
YOLOE-11-L T / V 26M / 32M 23.5h 130.5 / 35.1 35.2 / 33.7
3. 安装与运行Demo

下面进行实操。首先安装模型并运行Demo,建议使用Coda环境。可以通过requirements.txt安装,或直接安装代码库自带的第三方库,命令如下所示:

conda create -n yoloe python=3.10 -y
conda activate yoloe
# If you clone this repo, please use this
git clone https://github.com/THU-MIG/yoloe.git
cd yoloe
pip install -r requirements.txt
# Or you can also directly install the repo by this
pip install git+https://github.com/THU-MIG/yoloe.git#subdirectory=third_party/CLIP
pip install git+https://github.com/THU-MIG/yoloe.git#subdirectory=third_party/ml-mobileclip
pip install git+https://github.com/THU-MIG/yoloe.git#subdirectory=third_party/lvis-api
pip install git+https://github.com/THU-MIG/yoloe.git
wget https://docs-assets.developer.apple.com/ml-research/datasets/mobileclip/mobileclip_blt.pt

也可以从PyPI安装,然后运行Demo,命令如下所示:

# Optional for mirror: export HF_ENDPOINT=https://hf-mirror.com
pip install gradio==4.42.0 gradio_image_prompter==0.1.0 fastapi==0.112.2 huggingface-hub==0.26.3 gradio_client==1.3.0 pydantic==2.10.6
python app.py
# Please visit http://127.0.0.1:7860

限于篇幅,这里不再展示app.py中的推理函数,感兴趣读者可参考YOLOE Github。

4. 下载与导入模型

下载预训练模型,命令如下所示:

# Download pretrained models
# Optional for mirror: export HF_ENDPOINT=https://hf-mirror.com
# Please replace the pt file with your desired model
pip install huggingface-hub==0.26.3
huggingface-cli download jameslahm/yoloe yoloe-v8l-seg.pt --local-dir pretrain

导入模型的代码如下所示:

from ultralytics import YOLOE
model = YOLOE.from_pretrained("jameslahm/yoloe-v8l-seg")

或者在代码中直接初始化模型:

from huggingface_hub import hf_hub_download
from ultralytics import YOLOE
def init_model(model_id, is_pf=False):
    filename = f"{model_id}-seg.pt" if not is_pf else f"{model_id}-seg-pf.pt"
    path = hf_hub_download(repo_id="jameslahm/yoloe", filename=filename)
    model = YOLOE(path)
    model.eval() # 将模型切换至评估模式,停止参数更新
    model.to("cuda" if torch.cuda.is_available() else "cpu")
    return model
model = init_model("yoloe-v8l")

其他操作如验证、训练、预测和推送hub等,可参考YOLOv10中的操作。


网站公告

今日签到

点亮在社区的每一天
去签到