ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

如何10倍加速adetailer模型推理?ONNX导出与TensorRT优化完整指南

如何10倍加速adetailer模型推理?ONNX导出与TensorRT优化完整指南 如何10倍加速adetailer模型推理ONNX导出与TensorRT优化完整指南【免费下载链接】adetailer项目地址: https://ai.gitcode.com/hf_mirrors/Bingsu/adetaileradetailerAutomatic Detailer自动细节修复是 Stable Diffusion 中常用的局部重绘插件它依赖 YOLO 检测模型来定位人脸、手部、人物等区域。本仓库Bingsu/adetailer提供了一批开箱即用的检测模型文件如face_yolov8n.pt、hand_yolov9c.pt、person_yolov8s-seg.pt等。本文将带你用ONNX 导出 TensorRT 优化两招把 adetailer 模型推理速度提升 10 倍以上全程面向新手零基础也能跟做。一、为什么 adetailer 推理会慢先搞清楚瓶颈在哪每次出图后adetailer 都要跑一遍检测模型找出需要修复的区域人脸模糊、手部畸形等仓库中的.pt模型默认基于PyTorch运行若没有配置 GPU 加速单张图检测可能就要几十到几百毫秒批量处理、长图、多目标时检测耗时会被成倍放大整个重绘流程明显卡住。 加速思路把模型从.pt→ONNX中间格式跨平台通用→TensorRT 引擎NVIDIA GPU 专用加速精度几乎不损失速度却可以快一个数量级。二、模型一览先选对合适的 adetailer 模型加速效果好不好第一步是选对模型。本仓库模型及精度mAP 50参考如下模型文件检测目标mAP 50定位face_yolov8n.pt人脸2D/写实0.660最小最快入门首选face_yolov8n_v2.pt人脸0.669小模型 v2 改进版face_yolov8s.pt人脸0.713精度/速度均衡face_yolov8m.pt人脸0.737精度更高face_yolov9c.pt人脸0.748最新 YOLOv9 架构hand_yolov8n.pt/hand_yolov8s.pt/hand_yolov9c.pt手部0.767 / 0.794 / 0.810手部修复检测person_yolov8n-seg.pt人物含分割0.782输出 mask 掩码person_yolov8s-seg.pt人物含分割0.824精度更高person_yolov8m-seg.pt人物含分割0.849人物分割最强档deepfashion2_yolov8s-seg.pt写实服装分割0.84912 类服饰细分新手建议模型名中的n / s / m代表 nano / small / medium模型越小推理越快。如果只需要修复人脸或手部优先选n或s档加速收益最大。三、第一步准备环境与模型文件环境要求清单组件说明NVIDIA 显卡TensorRT 路线的硬前提CUDA TensorRTNVIDIA 官方推理加速套件ultralytics导出 ONNX / 构建引擎的官方工具库获取模型文件通过以下命令克隆仓库即可拿到全部.pt模型git clone https://gitcode.com/hf_mirrors/Bingsu/adetailer或者按需单独下载对应文件如face_yolov8n.pt。⚠️ 关于安全提示仓库README.md中提到分割模型-seg.pt因包含getattrpickle 函数会在 HuggingFace 上被标记为 Unsafe。这些模型均由 Bingsu 使用官方 ultralytics 训练保存来源可信可以放心使用。四、第二步把 .pt 模型导出为 ONNXONNX 是什么一种跨平台的中间表示格式。网络结构不变、推理结果基本一致它是通往 TensorRT 的标准入口。用 ultralytics 只需三行代码from ultralytics import YOLO model YOLO(face_yolov8n.pt) # 替换成你要加速的模型 model.export(formatonnx, halfTrue, imgsz640)几个关键参数formatonnx指定导出格式为 ONNXhalfTrue使用FP16 半精度体积减半、速度更快Turing 及以上架构 GPU 推荐开启;imgsz640输入尺寸建议与 adetailer 实际使用的检测输入保持一致否则还需动态缩放。✅ 导出完成后会生成face_yolov8n.onnx先用它推理一张测试图对比一下与.pt的检测结果是否一致再进入下一步。五、第三步构建 TensorRT 加速引擎TensorRT 是什么NVIDIA 的 GPU 推理引擎构建引擎时会做层融合、算子优化、内存规划加载引擎后每次推理都极快。方法 Atrtexec 一行构建最简单trtexec --onnxface_yolov8n.onnx \ --saveEngineface_yolov8n_fp16.engine \ --fp16 --workspace4096方法 Bultralytics 直接构建跳过 ONNXmodel.export(formatengine, halfTrue, imgsz640)生成的.engine文件加载后直接推理即可。进阶INT8 量化可选如果还想再榨性能可在 TensorRT 中开启INT8 量化通常还能再快 20%~30%但需要一个校准数据集且可能有轻微精度损失。新手建议先用 FP16 跑通流程。⚠️重要提醒.engine引擎文件与具体 GPU 型号、CUDA / TensorRT 版本绑定更换显卡或升级版本后需要重新构建。六、性能对比adetailer 推理加速效果实测参考以 YOLOv8n、640×640 输入、单张图片推理为例典型参考值实际依硬件而异推理方式单张耗时约相对加速PyTorch.pt跑 CPU~200ms1×PyTorch.pt跑 GPU~25ms~8×ONNX Runtime FP16GPU~10ms~20×TensorRT FP16GPU~4ms~50×TensorRT INT8GPU~2.5ms~80× 从CPU 直跑 .pt到GPU TensorRT10 倍以上的提速非常轻松达成批量修复几十张图时总耗时差异会大到令人惊喜。七、常见问题 FAQQ1分割模型person_yolov8s-seg.pt也能加速吗可以导出流程相同。但分割模型输出 mask链路比检测复杂新手建议先加速纯检测模型如face_yolov8n.pt。Q2怎么验证加速后精度没掉用同一批测试图分别跑加速前后模型对比检测框数量与位置只要结果大体一致IoU 接近即可放心投产。Q3没有 NVIDIA 显卡怎么办走ONNX Runtime路线即可CPU 或 DirectML 后端都能运行提速幅度不如 TensorRT但依然有效。Q4adetailer 推理慢还有别的优化方向吗有调低检测输入分辨率、降低检测置信度阈值减少后处理、批量推理合并请求以及本文的 ONNX TensorRT 组合拳。八、总结三步搞定 adetailer 推理加速选模型人脸/手部修复优先n、s小模型收益最大导出 ONNXmodel.export(formatonnx, halfTrue)一行搞定构建 TensorRT 引擎trtexec一条命令生成.engine文件。完成后adetailer 的单张检测从几百毫秒降到几毫秒局部重绘流程丝滑流畅。整套adetailer 模型推理加速 ONNX 导出 TensorRT 优化的流程掌握后你同样可以把它用到自己的任何 YOLO 检测项目中。【免费下载链接】adetailer项目地址: https://ai.gitcode.com/hf_mirrors/Bingsu/adetailer创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进