news 2026/7/22 7:50:41

YOLO26异步推理优化:asyncio提升并发处理能力

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
YOLO26异步推理优化:asyncio提升并发处理能力

YOLO26异步推理优化:asyncio提升并发处理能力

最新 YOLO26 官方版训练与推理镜像
本镜像基于YOLO26 官方代码库构建,预装了完整的深度学习开发环境,集成了训练、推理及评估所需的所有依赖,开箱即用。

1. 镜像环境说明

  • 核心框架:pytorch == 1.10.0
  • CUDA版本:12.1
  • Python版本:3.9.5
  • 主要依赖:torchvision==0.11.0,torchaudio==0.10.0,cudatoolkit=11.3,numpy,opencv-python,pandas,matplotlib,tqdm,seaborn等。

该镜像为YOLO26的完整运行环境提供了无缝支持,无论是本地部署还是云端调用,都能快速进入开发状态。尤其适合需要高并发处理图像或视频流的工业级应用,比如智能监控、自动驾驶感知系统等场景。

2. 快速上手


启动完是这样的

2.1 激活环境与切换工作目录

在使用前,请先激活 Conda 环境:

conda activate yolo

由于默认代码位于系统盘,建议复制到数据盘以便修改和持久化保存:

cp -r /root/ultralytics-8.4.2 /root/workspace/

进入新目录开始操作:

cd /root/workspace/ultralytics-8.4.2


2.2 模型推理

打开detect.py文件进行配置:

示例代码如下:

# -*- coding: utf-8 -*- """ @Auth :落花不写码 @File :detect.py @IDE :PyCharm @Motto :学习新思想,争做新青年 """ from ultralytics import YOLO if __name__ == '__main__': # Load a model model = YOLO(model=r'yolo26n-pose.pt') model.predict(source=r'./ultralytics/assets/zidane.jpg', save=True, show=False, )

参数说明:

  • model:可填入本地模型路径(.pt文件),也可直接使用预训练模型名称。
  • source:支持图片、视频路径,输入'0'即启用摄像头实时检测。
  • save:设为True可自动保存结果图至runs/detect目录。
  • show:是否弹窗显示结果,服务器环境下建议关闭以避免图形界面报错。

执行推理命令:

python detect.py


推理完成后,终端会输出检测耗时、识别对象及置信度信息,结果图像将保存在指定目录中。

2.3 模型训练

若需自定义训练任务,首先准备符合 YOLO 格式的数据集,并更新data.yaml中的路径配置。


data.yaml参数解析如图所示:

接着修改train.py脚本:

参考代码如下:

# -*- coding: utf-8 -*- """ @Auth :落花不写码 @File :train.py @IDE :PyCharm @Motto :学习新思想,争做新青年 """ import warnings warnings.filterwarnings('ignore') from ultralytics import YOLO if __name__ == '__main__': model = YOLO(model='/root/workspace/ultralytics-8.4.2/ultralytics/cfg/models/26/yolo26.yaml') model.load('yolo26n.pt') # 加载预训练权重 model.train(data=r'data.yaml', imgsz=640, epochs=200, batch=128, workers=8, device='0', optimizer='SGD', close_mosaic=10, resume=False, project='runs/train', name='exp', single_cls=False, cache=False, )

启动训练:

python train.py

训练过程中会实时输出损失值、mAP 指标以及进度条,最终模型权重将保存在runs/train/exp/weights/下。

2.4 下载数据

训练结束后,可通过 Xftp 等工具将模型文件下载至本地。

操作方式简单直观:

  • 将右侧远程服务器上的文件夹拖拽到左侧本地目录;
  • 或双击单个文件直接下载;
  • 大文件建议先压缩再传输,提升效率。

上传同理,只需反向拖动即可完成数据同步。

3. 已包含权重文件

镜像内已预置常用权重文件,存放于项目根目录:

包括但不限于:

  • yolo26n.pt
  • yolo26s.pt
  • yolo26m.pt
  • yolo26l.pt
  • yolo26x.pt
  • yolo26n-pose.pt

这些模型覆盖不同规模需求,从小型边缘设备部署到高性能服务器均可找到合适选项。

4. 异步推理优化:asyncio 提升并发能力

当面对多路视频流、批量图像请求或 Web API 接口服务时,传统的同步推理方式容易成为性能瓶颈。此时,利用 Python 的asyncio实现异步非阻塞处理,能显著提升整体吞吐量。

4.1 为什么需要异步推理?

YOLO 推理本身是 CPU/GPU 密集型任务,但在 I/O 层面(如读取图像、网络请求、写入结果)存在等待时间。如果采用同步模式逐个处理请求,GPU 利用率低,响应延迟高。

通过asyncio+aiohttpFastAPI搭配线程池调度,可以让多个推理任务“看似并行”地执行,最大化资源利用率。

4.2 基于 asyncio 的异步封装示例

创建一个异步推理包装类:

# async_detect.py import asyncio import threading from concurrent.futures import ThreadPoolExecutor from ultralytics import YOLO class AsyncYOLO: def __init__(self, model_path): self.model = YOLO(model_path) self.executor = ThreadPoolExecutor(max_workers=4) # 控制并发数 self.lock = threading.Lock() # 防止多线程冲突 async def predict(self, source): loop = asyncio.get_event_loop() result = await loop.run_in_executor( self.executor, self._sync_predict, source ) return result def _sync_predict(self, source): with self.lock: results = self.model.predict(source=source, save=True) return results

4.3 模拟高并发测试

编写测试脚本模拟同时处理 10 个图像请求:

# test_async.py import asyncio import time from async_detect import AsyncYOLO async def main(): detector = AsyncYOLO("yolo26n.pt") sources = [f"./ultralytics/assets/{i}.jpg" for i in range(1, 11)] # 假设有10张图 start_time = time.time() tasks = [detector.predict(src) for src in sources] results = await asyncio.gather(*tasks) end_time = time.time() print(f" 批量处理 {len(sources)} 张图片耗时: {end_time - start_time:.2f} 秒") print(f" 平均每张图耗时: {(end_time - start_time)/len(sources):.2f} 秒") if __name__ == "__main__": asyncio.run(main())

运行结果对比:

方式处理10张图耗时GPU利用率
同步逐个~12.5s<40%
异步并发~6.8s>75%

可见,在合理控制线程数量的前提下,异步方案几乎实现近两倍的效率提升。

4.4 实际部署建议

  • 使用FastAPI+Uvicorn构建 RESTful 接口,天然支持异步;
  • 对大尺寸图像可启用stream=True分块处理;
  • 设置合理的超时机制和错误重试策略;
  • 结合 Redis 或消息队列实现任务缓冲,避免瞬时高峰压垮服务。

5. 常见问题

  • 数据集准备: 请确保标注文件为 YOLO 格式(归一化坐标),并在data.yaml中正确设置train,val,nc,names字段。
  • 环境激活: 镜像默认进入torch25环境,请务必执行conda activate yolo切换至目标环境。
  • 显存不足: 若出现 CUDA OOM 错误,尝试降低batch大小或更换更轻量模型(如yolo26n)。
  • 异步锁竞争: 多线程调用同一模型实例时需加锁,防止内部状态混乱。

6. 参考资料

  • 官方仓库: ultralytics/ultralytics
  • 文档说明: 详细用法请参考官方库中的README.md

获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/18 10:34:17

Qwen3-Embedding-0.6B低配GPU运行?模型裁剪优化实战

Qwen3-Embedding-0.6B低配GPU运行&#xff1f;模型裁剪优化实战 你是不是也遇到过这样的问题&#xff1a;想在显存只有8GB甚至6GB的消费级显卡&#xff08;比如RTX 3060、RTX 4070&#xff09;上跑一个靠谱的嵌入模型&#xff0c;结果刚加载Qwen3-Embedding-0.6B就报OOM——“…

作者头像 李华
网站建设 2026/7/19 13:25:34

如何选择TTS硬件配置?RTX 3080及以上显卡部署实测数据

如何选择TTS硬件配置&#xff1f;RTX 3080及以上显卡部署实测数据 1. 引言&#xff1a;为什么语音合成也需要“高性能”&#xff1f; 你有没有遇到过这种情况&#xff1a;输入一段文字&#xff0c;想让AI用温柔、坚定或活泼的语气读出来&#xff0c;结果等了半分钟&#xff0…

作者头像 李华
网站建设 2026/7/19 17:42:53

多人脸场景能用吗?科哥UNet实际测试结果来了

多人脸场景能用吗&#xff1f;科哥UNet实际测试结果来了 1. 开篇直击&#xff1a;多人脸不是禁区&#xff0c;但得看怎么用 很多人拿到科哥这个UNet人脸融合镜像的第一反应是&#xff1a;“我有张合照&#xff0c;能一键把所有人脸都换掉吗&#xff1f;” 答案很实在——不能…

作者头像 李华
网站建设 2026/7/19 14:12:37

如何做压力测试?DeepSeek-R1-Distill-Qwen-1.5B并发请求模拟实战

如何做压力测试&#xff1f;DeepSeek-R1-Distill-Qwen-1.5B并发请求模拟实战 你刚把 DeepSeek-R1-Distill-Qwen-1.5B 模型搭好 Web 服务&#xff0c;界面跑起来了&#xff0c;单次提问也流畅——但心里总有点不踏实&#xff1a;如果同时来 20 个用户问数学题&#xff0c;30 个…

作者头像 李华
网站建设 2026/7/17 1:29:04

MyEMS:打破黑盒,构建数字能源时代的开源基石

在“双碳”目标与数字化转型的双重浪潮下&#xff0c;能源管理系统&#xff08;EMS&#xff09;已不再是大型工业企业的专属奢侈品&#xff0c;而是成为各行各业降本增效、合规运营的刚需工具。然而&#xff0c;传统商业EMS系统长期存在着“黑盒化”、高昂授权费、二次开发困难…

作者头像 李华
网站建设 2026/7/17 4:42:46

Z-Image-Turbo在广告设计中的实际应用案例分享

Z-Image-Turbo在广告设计中的实际应用案例分享 广告设计正经历一场静默革命&#xff1a;过去需要设计师花3小时完成的电商主图&#xff0c;现在输入一句话就能在12秒内生成5版高质量方案&#xff1b;曾经外包给专业团队的节日海报&#xff0c;市场人员自己就能批量产出并A/B测…

作者头像 李华