资讯详情

SuperGradients 中 YOLO-NAS 快速上手:实例化、推理、ONNX 导出与 RF100 微调全指南

📅 2026/9/18 2:45:01 | 华诺云谱 👁 阅读
SuperGradients 中 YOLO-NAS 快速上手:实例化、推理、ONNX 导出与 RF100 微调全指南
SuperGradients 中 YOLO-NAS 快速上手实例化、推理、ONNX 导出与 RF100 微调全指南【免费下载链接】super-gradientsEasily train or fine-tune SOTA computer vision models with one open source training library. The home of Yolo-NAS.项目地址: https://gitcode.com/GitHub_Trending/su/super-gradients导读YOLO-NAS 是 SuperGradients 开源训练库内置的 SOTA 目标检测模型由 Deci 的神经架构搜索引擎 AutoNAC 自动生成并在结构中引入量化感知的 RepVGG 模块使其天然兼容训练后量化PTQ适合部署到多种硬件平台。本文基于仓库文档 YoloNASQuickstart.md 并结合源码完整演示如何用几行代码实例化预训练 YOLO-NAS、对图片/URL 直接推理、一键导出 ONNX以及如何在 Roboflow 100RF100数据集上通过 Recipe 配置文件微调 YOLO-NAS-S并覆盖自定义输入通道数等进阶用法。YOLO-NAS 分为 S / M / L 三个规模变体对应仓库中的YoloNAS_S、YoloNAS_M、YoloNAS_L实现见 yolo_nas_variants.py本文以最小的 YOLO-NAS-S 为主线展开。实例化 YOLO-NAS 模型与原文档一致加载模型只需两行代码from super_gradients.training import models from super_gradients.common.object_names import Models net models.get(Models.YOLO_NAS_S, pretrained_weightscoco)Models.YOLO_NAS_S是 SuperGradients 注册表中的模型枚举名定义于 object_names.py底层通过装饰器register_model(Models.YOLO_NAS_S)与YoloNAS_S类绑定pretrained_weightscoco表示自动下载在 COCO 数据集上预训练好的权重权重下载后缓存在本地默认输入通道数为 3、输出 80 个 COCO 类别。从源码看models.get()是统一的模型工厂入口其完整签名见 model_factory.py支持参数作用model_name模型架构名如Models.YOLO_NAS_Sarch_params架构超参block、通道数、层数等覆盖项num_classes类别数为None时从预训练权重对应数据集推导pretrained_weights预训练权重对应的数据集如coco、imagenetcheckpoint_path外部检查点路径本地或 URL与pretrained_weights二选一strict_load权重加载的严格程度默认NO_KEY_MATCHINGload_backbone是否只加载 backbone 权重checkpoint_num_classes检查点自身的类别数用于迁移学习时自动调用replace_head()num_input_channels输入通道数非默认时自动调用replace_input_channels()加载完成后net即为一个可直接推理、也可继续训练的标准SgModule/torch.nn.Module对象。直接推理predict 与结果可视化YOLO-NAS 内置predict接口接受图片 URL、本地路径、PIL 图像、numpy 数组等多种输入prediction net.predict(https://www.aljazeera.com/wp-content/uploads/2022/12/2022-12-03T205130Z_851430040_UP1EIC31LXSAZ_RTRMADP_3_SOCCER-WORLDCUP-ARG-AUS-REPORT.jpg?w770resize770%2C436quality80) prediction.show()net.predict(...)内部会自动完成数据预处理归一化、缩放等处理参数随预训练权重一同保存推理后返回prediction对象prediction.show()在 Jupyter / notebook 环境中直接绘制带检测框、类别标签与置信度分数的可视化结果效果见下图来源 yolo_nas_qs_predict.png更精细的结果访问方式如取框坐标、置信度、类别索引或用prediction.save(...)存盘可参考仓库中的推理示例脚本如 detection_predict.py 与 detection_predict_image_folder.py。导出为 ONNX一行代码即可将训练好的模型导出为 ONNX 格式models.convert_to_onnx(modelnet, input_shape(3,640,640), out_pathyolo_nas_s.onnx)其中input_shape(3,640,640)表示无 batch 维的[C,H,W]导出时 batch 固定为 1。基于源码见 conversion.py补充两点重要说明input_shape参数当前已标记为deprecated弃用官方推荐改用prep_model_for_conversion_kwargs中的input_size带 batch 维的[1,C,H,W]并可通过torch_onnx_export_kwargs透传torch.onnx.export的参数models.convert_to_onnx( modelnet, out_pathyolo_nas_s.onnx, prep_model_for_conversion_kwargsdict(input_size(1, 3, 640, 640)), torch_onnx_export_kwargsdict(opset11), )导出默认开启simplifyTrue会调用 ONNX Simplifier 对图进行常量折叠等优化导出前模型会先经过prep_model_for_conversion处理将后处理NMS 之外的解码逻辑也固化进计算图保证部署端无需复刻训练时的预处理/后处理细节。仓库还提供了基于 Recipe 的批量导出入口 convert_recipe_to_code.py 与配套示例 models_export.ipynb以及针对 YOLO-NAS-Pose 的导出指南 models_export_pose.md。在 RF100Roboflow 100上微调 YOLO-NAS数据集准备原文档要求按照 Roboflow 官方指引下载 RF100 数据集并强调两个关键约束必须下载 COCO 格式而不是 YOLOv5 格式安装 COCO APIpycocotools。数据目录需整理为如下结构rf100 ├── 4-fold-defect │ ├─ train │ │ ├─ 000000000001.jpg │ │ ├─ ... │ │ └─ _annotations.coco.json │ ├─ valid │ │ └─ ... │ └─ test │ └─ ... ├── abdomen-mri │ └─ ... └── ...使用 Recipe 启动训练SuperGradients 为 YOLO-NAS 提供了开箱即用的微调 Recipe仓库中的 roboflow_yolo_nas_s.yaml 专为 RF100 定制。启动训练的命令为python -m super_gradients.train_from_recipe --config-nameroboflow_yolo_nas_s dataset_nameDATASET_NAME dataset_params.data_dirPATH_TO_RF100_ROOT ckpt_root_dirYOUR_CHECKPOINTS_ROOT_DIRECTORY参数说明参数含义--config-nameroboflow_yolo_nas_s加载 S 变体微调配置另有 roboflow_yolo_nas_m.yaml 对应 M 变体dataset_name替换为任意 RF100 数据集名如digits-t2eg6即 Roboflow 数据集 URL 中的标识段dataset_params.data_dirRF100 根目录路径即上面目录结构中的rf100ckpt_root_dir检查点保存根目录dataset_name会被传递到数据集配置 roboflow_detection_dataset_params.yaml 中用于自动拼接train/valid分区的路径类别数则通过内置的 hydra 解析器roboflow_dataset_num_classes:${dataset_name}自动推导并写入num_classes无需手工指定。Recipe 内部做了什么以 S 变体为例roboflow_yolo_nas_s.yaml 的关键设计默认继承coco2017_yolo_nas_train_params训练超参、roboflow_detection_dataset_params数据集参数、yolo_nas_s_arch_params架构参数pretrained_weights: coco表示从 COCO 预训练权重出发做迁移学习训练配置将initial_lr设为5e-4、采用LinearEpochLRWarmup预热 3 个 epoch、cosine_final_lr_ratio: 0.1的余弦退火、max_epochs: 100并开启mixed_precision: True混合精度与ema: True指数滑动平均decay0.9损失函数为PPYoloELossreg_max: 16对应 DFLDistribution Focal Loss的回归桶数验证指标使用DetectionMetrics_050即 mAP0.50后处理回调为PPYoloEPostPredictionCallbackscore_threshold0.01、nms_top_k1000、max_predictions300、nms_threshold0.7单卡训练multi_gpu: Off、num_gpus: 1实验名自动生成为yolo_nas_s_roboflow_dataset_name。数据增强方面训练集默认启用 Mosaic、RandomAffine、HSV、HorizontalFlip、PaddedRescale 与 Standardize 组合Mixup 在配置中以注释形式预留可自行开启验证集仅做 PaddedRescale Standardize保证评估一致性。输入分辨率统一为640x640batch size 在 S 变体下默认 16。为多通道非 RGB输入创建模型YOLO-NAS 默认接收 3 通道 RGB 图像但可以通过arch_params传入in_channels构建任意输入通道数的模型model models.get(Models.YOLO_NAS_S, arch_paramsdict(in_channels2), num_classes15)使用时有两点必须注意不能使用预训练权重pretrained_weights是为 3 通道输入训练的改通道数后结构与权重不匹配因此该场景下应省略pretrained_weights必须显式提供num_classes此时无法从预训练权重推导类别数需要手动指定上例为 15 类。从源码看YoloNAS_S.__init__见 yolo_nas_variants.py会先加载默认架构参数 yolo_nas_s_arch_params.yaml再用传入的arch_params覆盖合并其中in_channels的默认值为 3heads段中的num_classes默认 80。当你传入arch_paramsdict(in_channels2)时仅替换 stem 的输入通道backbone 其余部分与 neck、head 结构保持不变——这也是它能一行换通道数的原理所在。深入YOLO-NAS 架构要点了解底层结构有助于正确使用与调参。YOLO-NAS 的完整结构定义在 yolo_nas_s_arch_params.yaml 中由三大部分组成Backbone主干NStageBackbone包含YoloNASStem起始层与 4 个YoloNASStage阶段通道数逐级扩展48 → 96 → 192 → 384 → 768最后接一个SPP空间金字塔池化模块池化核k: [5,9,13]以聚合多尺度上下文Neck颈部YoloNASPANNeckWithC2由两个上采样阶段与两个下采样阶段构成 FPNPAN 结构实现自顶向下与自底向上的特征融合Heads检测头NDFLHeads内含 3 个YoloNASDFLHead分别对应 stride 8 / 16 / 32 的三个尺度输出每个 head 的inter_channels与width_mult定义了回归/分类分支宽度。其中YoloNASDFLHead使用 DFL 形式的边界框回归reg_max: 16这也是损失函数必须配套PPYoloELoss且reg_max保持一致的原因。该架构的量化友好性来自 backbone 中融入的量化感知 RepVGG 模块见 qarepvgg_block.py训练时使用多分支结构、推理时可重参数化为单分支卷积从而在保持精度的同时降低延迟并为后续 PTQ/QAT 量化部署参见 ptq_qat.md打下基础。总结本文完整覆盖了 YOLO-NAS 在 SuperGradients 中的四条核心使用路径实例化models.get加载 COCO 预训练权重、推理predictshow、导出convert_to_onnx一行生成 ONNX、微调RF100 Recipe 训练命令与数据集规范并额外讲解了多通道输入定制与底层架构原理。掌握这些内容后即可基于 YOLO-NAS 快速完成从预训练模型评估、自有数据集微调到边缘端部署的完整闭环。更多模型细节可查阅仓库中的 YOLONAS.md 与模型导出文档 models_export.md。【免费下载链接】super-gradientsEasily train or fine-tune SOTA computer vision models with one open source training library. The home of Yolo-NAS.项目地址: https://gitcode.com/GitHub_Trending/su/super-gradients创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。