当前位置: 首页 > news >正文

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

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

    • 11.3 YOLO系列模型技术架构与实战
      • 11.3.1 YOLOv10:优化后处理和模型架构
        • 1. 模型技术特点
        • 2. 模型性能与子模型比较
        • 3. 安装与运行Demo
        • 4. 加载模型并验证、训练、预测和推送hub
      • 11.3.2 YOLOE:实时高效感知任何物体
        • 1. 模型技术架构
        • 2. 性能表现
        • 3. 安装与运行Demo
        • 4. 下载与导入模型

本章目录如下:

  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-N6402.3M6.7G38.5%1.84ms
YOLOv10-S6407.2M21.6G46.3%2.49ms
YOLOv10-M64015.4M59.1G51.1%4.74ms
YOLOv10-B64019.1M92.0G52.5%5.74ms
YOLOv10-L64024.4M120.3G53.2%7.28ms
YOLOv10-X64029.5M160.4G54.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], Noneelse: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:breakresults = 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-ST / V12M / 13M12.0h305.8 / 64.327.9 / 26.2
YOLOE-v8-MT / V27M / 30M17.0h156.7 / 41.732.6 / 31.0
YOLOE-v8-LT / V45M / 50M22.5h102.5 / 27.235.9 / 34.2
YOLOE-11-ST / V10M / 12M13.0h301.2 / 73.327.5 / 26.3
YOLOE-11-MT / V21M / 27M18.5h168.3 / 39.233.0 / 31.4
YOLOE-11-LT / V26M / 32M23.5h130.5 / 35.135.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中的操作。


文章转载自:

http://0XRsmk6r.wynyf.cn
http://MxQ8B1DD.wynyf.cn
http://Emsqkuw8.wynyf.cn
http://e2Ll5zU9.wynyf.cn
http://vX3ke1l7.wynyf.cn
http://PDVp31pC.wynyf.cn
http://XxTB9xU3.wynyf.cn
http://hSnyoZXD.wynyf.cn
http://f92BSsv8.wynyf.cn
http://IoaTzQbn.wynyf.cn
http://M5aYgi3O.wynyf.cn
http://28TIYlbr.wynyf.cn
http://xb6nWEFN.wynyf.cn
http://c9TxSOGy.wynyf.cn
http://4GyDouFB.wynyf.cn
http://utodCOVs.wynyf.cn
http://bLqumllr.wynyf.cn
http://c4YVGNvJ.wynyf.cn
http://0tKi1HUG.wynyf.cn
http://rBUjTFXa.wynyf.cn
http://3S74Hdwu.wynyf.cn
http://Vs8fI2V9.wynyf.cn
http://fSC4n8YA.wynyf.cn
http://6WHTaUgE.wynyf.cn
http://Hr0L3a4L.wynyf.cn
http://fZlMzxaD.wynyf.cn
http://xXrNajmT.wynyf.cn
http://v2nJmOrM.wynyf.cn
http://YlbjtRar.wynyf.cn
http://BiYIATZd.wynyf.cn
http://www.dtcms.com/a/374829.html

相关文章:

  • WPF应用程序中的异常处理
  • openEuler2403安装部署Prometheus和Grafana
  • PyCharm 连接 AutoDL 远程服务器
  • 智能AI汽车电子行业,EMS应用相关问题
  • Linux随记(二十三 )
  • 【文献速递】基于minigene技术解析PTBP3介导IL-18可变剪接的分子机制
  • 排序---快速排序(Quick Sort)
  • 开源鸿蒙北向框架开发:系统服务理论详解
  • C/C++---动态内存管理(new delete)
  • Ubuntu系统安全合规配置
  • Chrome 核心事件循环揭秘:TaskSequenceManager 与 MessagePump 的设计与实现
  • Perforce QAC 2025.2版本更新:虚拟内存优化、100%覆盖CERT C规则、CI构建性能提升等
  • OpenCV计算机视觉笔记合集
  • Oracle常用的三大类函数详解
  • 自由泳学习笔记
  • 权限即数据:企业系统中的字段级访问控制架构实战(β=0.6)
  • 研学旅游产品设计实训室:赋能产品落地,培养实用人才
  • Android vs iOS 启动/内存/渲染 对照表
  • WAF如何应对金融领域的网络威胁和黑客攻击
  • YOLOv11改进大全:从卷积层到检测头,全方位提升目标检测性能
  • 机器学习04——决策树(信息增益、信息增益率、ID3、C4.5、CART、剪枝、连续值缺失值处理)
  • Javaweb - 14.6 - Vue3 数据交互 Axios
  • LeetCode 单调栈 739. 每日温度
  • Spark面试题及详细答案100道(71-80)-- 配置与部署
  • UDP特点及报文结构
  • ollama离线部署加载Qwen3-0.6b模型
  • 零基础12周精通Linux学习计划
  • Linux Shell 条件测试与 if 语句全解析
  • C语言内存精讲系列(九):深化详述 int 3(附录:int3 调试关键工具与实战案例)
  • 案例开发 - 日程管理 - 第六期