YOLO-NAS 自定义目标检测训练实战:SuperGradients 训练与测试
YOLO-NAS 自定义目标检测训练实战SuperGradients 训练与测试这篇教程根据我复现 YOLO-NAS 自定义目标检测训练流程时整理重点演示如何安装 SuperGradients、加载预训练模型、训练自定义数据集并做测试集评估。YOLO-NAS 的训练方式和 Ultralytics 不同依赖 SuperGradients 的训练器和数据加载器。本文适合想把 YOLO-NAS 接入自定义训练流程的同学。本文会重点跑通以下流程安装 SuperGradients 与可视化依赖下载示例图片并跑通预训练推理从数据集后台获取 YOLO 格式数据集配置训练参数并启动训练用测试集和混淆矩阵检查模型表现如果你正在系统学习目标检测、实例分割、OCR、多目标跟踪或视觉大模型建议收藏本文配套 notebook、示例图片和运行环境说明后续会继续整理。如果环境配置卡住可以在评论区说明具体报错。 文章目录YOLO-NAS 自定义目标检测训练实战SuperGradients 训练与测试⚙️ 环境准备⬇️ 下载权重与示例图片 预训练模型推理 从数据集后台获取 YOLO 数据集 配置训练参数️ 启动训练 训练后测试 批量预测可视化 结果评估 小结 同系列教程汇总⚙️ 环境准备先检查运行环境并安装依赖。建议优先使用带 NVIDIA GPU 的环境避免推理和训练阶段显存不足。!nvidia-smi!pip install-q supervision0.25.0# URLs changed for YOLO-NAS models, but the authors are not updating the repo# Issue: https://github.com/Deci-AI/super-gradients/issues/2057# Fix PR: https://github.com/Deci-AI/super-gradients/pull/2061# Option 1 - Install from patched branch. Does not work, causes different errors!# !pip install -q githttps://github.com/hannadiamond/super-gradientspatch-1# Option 2 - Install normally, and modify code# Pip errors are expected.!pip install-q githttps://github.com/Deci-AI/super-gradients.gitstable !sed-i-es/sghub.deci.ai/sg-hub-nv.s3.amazonaws.com/g/usr/local/lib/python3.10/dist-packages/super_gradients/training/pretrained_models.py !sed-i-es/sghub.deci.ai/sg-hub-nv.s3.amazonaws.com/g/usr/local/lib/python3.10/dist-packages/super_gradients/training/utils/checkpoint_utils.py# URLs changed for YOLO-NAS models, but the authors arent updating the repo# Issue: https://github.com/Deci-AI/super-gradients/issues/2057# Fix PR: https://github.com/Deci-AI/super-gradients/pull/2061# Option 1 - Install from patched branch. Does not work, causes different errors!# !pip install -q githttps://github.com/hannadiamond/super-gradientspatch-1# Option 2 - Install normally, and modify code# Pip errors are expected.!pip install-q githttps://github.com/Deci-AI/super-gradients.gitstable !sed-i-es/sghub.deci.ai/sg-hub-nv.s3.amazonaws.com/g/usr/local/lib/python3.10/dist-packages/super_gradients/training/pretrained_models.py !sed-i-es/sghub.deci.ai/sg-hub-nv.s3.amazonaws.com/g/usr/local/lib/python3.10/dist-packages/super_gradients/training/utils/checkpoint_utils.pyimportos HOMEos.getcwd()print(HOME)⬇️ 下载权重与示例图片先把 SAM checkpoint 和示例图片准备好。importtorch DEVICEcudaiftorch.cuda.is_available()elsecpuMODEL_ARCHyolo_nas_lfromsuper_gradients.trainingimportmodels modelmodels.get(MODEL_ARCH,pretrained_weightscoco).to(DEVICE)f{HOME}/data%cd{HOME}!mkdir{HOME}/data%cd{HOME}/data# 请从数据集后台下载示例图片保存为 dog.jpeg 到 dog-8.jpeg。 预训练模型推理用预训练模型在单张图上跑一遍检测结果。SOURCE_IMAGE_PATHf{HOME}/data/dog-3.jpegimportcv2 imagecv2.imread(SOURCE_IMAGE_PATH)resultmodel.predict(image,conf0.35)type(result)importsupervisionassv detectionssv.Detections(xyxyresult.prediction.bboxes_xyxy,confidenceresult.prediction.confidence,class_idresult.prediction.labels.astype(int))box_annotatorsv.BoxAnnotator()label_annotatorsv.LabelAnnotator()labels[f{result.class_names[class_id]}{confidence:0.2f}for_,_,confidence,class_id,_,_indetections]annotated_frameimage.copy()annotated_framebox_annotator.annotate(sceneannotated_frame,detectionsdetections)annotated_framelabel_annotator.annotate(sceneannotated_frame,detectionsdetections,labelslabels)%matplotlib inline sv.plot_image(annotated_frame,(12,12)) 从数据集后台获取 YOLO 数据集从数据集后台导出 YOLO 格式数据集后训练时直接引用本地路径。%cd{HOME}# 如需使用自定义数据集请从数据集后台下载 YOLO 格式数据并解压到本地目录。fromtypesimportSimpleNamespace DATASET_DIR/content/dataset# 修改为数据集后台导出的数据集目录datasetSimpleNamespace(locationDATASET_DIR)LOCATIONdataset.locationprint(location:,LOCATION)CLASSESsorted(project.classes.keys())print(classes:,CLASSES) 配置训练参数把 batch、epoch、类别和路径整理成训练参数。MODEL_ARCHyolo_nas_lBATCH_SIZE8MAX_EPOCHS25CHECKPOINT_DIRf{HOME}/checkpointsEXPERIMENT_NAMEproject.name.lower().replace( ,_)fromsuper_gradients.trainingimportTrainer trainerTrainer(experiment_nameEXPERIMENT_NAME,ckpt_root_dirCHECKPOINT_DIR)dataset_params{data_dir:LOCATION,train_images_dir:train/images,train_labels_dir:train/labels,val_images_dir:valid/images,val_labels_dir:valid/labels,test_images_dir:test/images,test_labels_dir:test/labels,classes:CLASSES}fromsuper_gradients.training.dataloaders.dataloadersimport(coco_detection_yolo_format_train,coco_detection_yolo_format_val)train_datacoco_detection_yolo_format_train(dataset_params{data_dir:dataset_params[data_dir],images_dir:dataset_params[train_images_dir],labels_dir:dataset_params[train_labels_dir],classes:dataset_params[classes]},dataloader_params{batch_size:BATCH_SIZE,num_workers:2})val_datacoco_detection_yolo_format_val(dataset_params{data_dir:dataset_params[data_dir],images_dir:dataset_params[val_images_dir],labels_dir:dataset_params[val_labels_dir],classes:dataset_params[classes]},dataloader_params{batch_size:BATCH_SIZE,num_workers:2})test_datacoco_detection_yolo_format_val(dataset_params{data_dir:dataset_params[data_dir],images_dir:dataset_params[test_images_dir],labels_dir:dataset_params[test_labels_dir],classes:dataset_params[classes]},dataloader_params{batch_size:BATCH_SIZE,num_workers:2})train_data.dataset.transformsfromsuper_gradients.trainingimportmodels modelmodels.get(MODEL_ARCH,num_classeslen(dataset_params[classes]),pretrained_weightscoco)fromsuper_gradients.training.lossesimportPPYoloELossfromsuper_gradients.training.metricsimportDetectionMetrics_050fromsuper_gradients.training.models.detection_models.pp_yolo_eimportPPYoloEPostPredictionCallback train_params{silent_mode:False,average_best_models:True,warmup_mode:linear_epoch_step,warmup_initial_lr:1e-6,lr_warmup_epochs:3,initial_lr:5e-4,lr_mode:cosine,cosine_final_lr_ratio:0.1,optimizer:Adam,optimizer_params:{weight_decay:0.0001},zero_weight_decay_on_bias_and_bn:True,ema:True,ema_params:{decay:0.9,decay_type:threshold},max_epochs:MAX_EPOCHS,mixed_precision:True,loss:PPYoloELoss(use_static_assignerFalse,num_classeslen(dataset_params[classes]),reg_max16),valid_metrics_list:[DetectionMetrics_050(score_thres0.1,top_k_predictions300,num_clslen(dataset_params[classes]),normalize_targetsTrue,post_prediction_callbackPPYoloEPostPredictionCallback(score_threshold0.01,nms_top_k1000,max_predictions300,nms_threshold0.7))],metric_to_watch:mAP0.50}️ 启动训练训练器和数据加载器准备好后就可以直接开始训练。trainer.train(modelmodel,training_paramstrain_params,train_loadertrain_data,valid_loaderval_data)%load_ext tensorboard%tensorboard--logdir{CHECKPOINT_DIR}/{EXPERIMENT_NAME}!zip-r yolo_nas.zip{CHECKPOINT_DIR}/{EXPERIMENT_NAME}# if you experience NotImplementedError: A UTF-8 locale is required. Got ANSI_X3.4-1968 error, run code below # import locale# locale.getpreferredencoding lambda: UTF-8 训练后测试用测试集检查 average model 或 best model 的表现。best_modelmodels.get(MODEL_ARCH,num_classeslen(dataset_params[classes]),checkpoint_pathf{CHECKPOINT_DIR}/{EXPERIMENT_NAME}/average_model.pth).to(DEVICE)trainer.test(modelbest_model,test_loadertest_data,test_metrics_listDetectionMetrics_050(score_thres0.1,top_k_predictions300,num_clslen(dataset_params[classes]),normalize_targetsTrue,post_prediction_callbackPPYoloEPostPredictionCallback(score_threshold0.01,nms_top_k1000,max_predictions300,nms_threshold0.7))) 批量预测可视化把测试集中的样本和预测结果并排显示方便人工检查。importsupervisionassv dssv.DetectionDataset.from_yolo(images_directory_pathf{dataset.location}/test/images,annotations_directory_pathf{dataset.location}/test/labels,data_yaml_pathf{dataset.location}/data.yaml,force_masksFalse)importsupervisionassv CONFIDENCE_TRESHOLD0.5predictions{}forimage_name,imageinds.images.items():resultlist(best_model.predict(image,confCONFIDENCE_TRESHOLD))[0]detectionssv.Detections(xyxyresult.prediction.bboxes_xyxy,confidenceresult.prediction.confidence,class_idresult.prediction.labels.astype(int))predictions[image_name]detectionsimportrandom random.seed(10)importsupervisionassv MAX_IMAGE_COUNT5nmin(MAX_IMAGE_COUNT,len(ds.images))keyslist(ds.images.keys())keysrandom.sample(keys,n)box_annotatorsv.BoxAnnotator()images[]titles[]forkeyinkeys:frame_with_annotationsbox_annotator.annotate(sceneds.images[key].copy(),detectionsds.annotations[key],skip_labelTrue)images.append(frame_with_annotations)titles.append(annotations)frame_with_predictionsbox_annotator.annotate(sceneds.images[key].copy(),detectionspredictions[key],skip_labelTrue)images.append(frame_with_predictions)titles.append(predictions)%matplotlib inline sv.plot_images_grid(imagesimages,titlestitles,grid_size(n,2),size(2*4,n*4)) 结果评估最后补上混淆矩阵整体看一遍分类和检测效果。!pip install onemetricimportosimportnumpyasnpfromonemetric.cv.object_detectionimportConfusionMatrix keyslist(ds.images.keys())annotation_batches,prediction_batches[],[]forkeyinkeys:annotationds.annotations[key]annotation_batchnp.column_stack((annotation.xyxy,annotation.class_id))annotation_batches.append(annotation_batch)predictionpredictions[key]prediction_batchnp.column_stack((prediction.xyxy,prediction.class_id,prediction.confidence))prediction_batches.append(prediction_batch)confusion_matrixConfusionMatrix.from_detections(true_batchesannotation_batches,detection_batchesprediction_batches,num_classeslen(ds.classes),conf_thresholdCONFIDENCE_TRESHOLD)confusion_matrix.plot(os.path.join(HOME,confusion_matrix.png),class_namesds.classes) 小结YOLO-NAS 的关键在于 SuperGradients 的训练参数和数据路径。只要数据集格式、类别列表和 checkpoint 路径对齐就能顺利完成训练和测试。这一类 notebook 建议按“先环境、再数据、再单样例、最后批量推理”的顺序复现。遇到报错时优先检查 GPU、依赖版本、数据集目录和模型权重路径。后续我会继续按源项目顺序整理同系列中的目标检测、实例分割、OCR、多目标跟踪和视觉大模型教程。 同系列教程汇总Google Gemini 3.5 Flash 零样本目标检测教程从提示词到可视化结果GLM-OCR 文档识别实战教程从验证码、公式到车牌 OCRRF-DETR ByteTrack 多目标跟踪实战教程从命令行到 Python 视频轨迹可视化SAM 3 图像分割实战教程文本、框和点提示的多种分割方式YOLO-NAS 自定义目标检测训练实战SuperGradients 训练与测试

相关新闻

FastSAM 图像分割实战:自动 Mask、框提示、点提示与文本提示

FastSAM 图像分割实战:自动 Mask、框提示、点提示与文本提示

FastSAM 图像分割实战:自动 Mask、框提示、点提示与文本提示 这篇教程根据我复现 FastSAM 图像分割流程时整理,重点演示如何加载 FastSAM、对比 SAM、并用框提示、点提示和文本提示做交互式分割。 FastSAM 的优势是推理快、交互灵活。本文适合把图像分割…

2026/7/15 0:31:32阅读更多 →
RTMDet 自定义目标检测训练实战:MMYOLO 训练、评估与可视化

RTMDet 自定义目标检测训练实战:MMYOLO 训练、评估与可视化

RTMDet 自定义目标检测训练实战:MMYOLO 训练、评估与可视化 这篇教程根据我复现 RTMDet 自定义目标检测训练流程时整理,重点演示如何安装 MMYOLO 生态、加载预训练权重、训练自定义数据集并做 mAP 评估。 RTMDet 训练和推理都离不开 MMDetection / MMYO…

2026/7/15 0:31:32阅读更多 →
YOLO-World 零样本目标检测实战:文本类别提示与视频筛选

YOLO-World 零样本目标检测实战:文本类别提示与视频筛选

YOLO-World 零样本目标检测实战:文本类别提示与视频筛选 这篇教程根据我复现 YOLO-World 零样本目标检测流程时整理,重点演示如何设置文本类别提示、跑通图片推理、再把同一套模型迁移到视频帧上做目标筛选。 YOLO-World 的特点是不用重新训练就能通过文…

2026/7/15 0:31:32阅读更多 →
农作物病虫害图像识别实战包:含多模型训练代码、真实病害数据集与Flask+Docker部署方案

农作物病虫害图像识别实战包:含多模型训练代码、真实病害数据集与Flask+Docker部署方案

本文还有配套的精品资源,点击获取 简介:直接可用的农业图像识别工具包,用Python实现,兼容TensorFlow、PyTorch、Keras、Fastai等主流框架,支持DenseNet121、ResNet50、VGG16、VGG19等模型结构。内置完整训练流程Not…

2026/7/15 1:26:36阅读更多 →
Qt 跨平台开发实战:从环境搭建到首个应用

Qt 跨平台开发实战:从环境搭建到首个应用

1. Qt开发环境搭建第一次接触Qt时,最让人头疼的就是环境配置。记得我刚开始用Qt时,光是选择安装哪个版本就纠结了半天。Qt作为一个跨平台的C框架,确实能帮我们省去很多适配不同操作系统的麻烦。1.1 选择合适的Qt版本Qt的版本选择是个技术活。…

2026/7/15 1:26:36阅读更多 →
小波变换:从数学显微镜到图像处理实战

小波变换:从数学显微镜到图像处理实战

1. 小波变换:数学显微镜的奥秘 第一次听说小波变换时,我脑海中浮现的是一台精密的显微镜——它能自由调节放大倍数,既能看清细胞整体结构,又能聚焦观察细胞器细节。这种神奇的"数学显微镜"究竟如何工作?让我…

2026/7/15 1:26:36阅读更多 →
跨环境迁移C#项目时,NuGet包依赖与SDK版本冲突的排查与修复

跨环境迁移C#项目时,NuGet包依赖与SDK版本冲突的排查与修复

1. 跨环境迁移C#项目时常见的NuGet包问题当你把C#项目从一台电脑迁移到另一台电脑时,最常遇到的就是NuGet包依赖和SDK版本冲突问题。我见过太多开发者在这个问题上栽跟头,特别是当两台电脑安装的Visual Studio版本不同,或者.NET SDK版本不一致…

2026/7/15 1:26:36阅读更多 →
3分钟搞定专业中文排版:思源宋体CN的零门槛终极指南

3分钟搞定专业中文排版:思源宋体CN的零门槛终极指南

3分钟搞定专业中文排版:思源宋体CN的零门槛终极指南 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 还在为中文项目找不到既专业又免费的字体而烦恼吗?思源宋体…

2026/7/15 1:26:36阅读更多 →
STM32CUBEMX实战:利用内部Flash实现数据掉电存储

STM32CUBEMX实战:利用内部Flash实现数据掉电存储

1. STM32内部Flash基础认知1.1 Flash在嵌入式系统中的角色第一次接触STM32的内部Flash时,我误以为它只能存储程序代码。直到某次项目需要保存设备校准参数时,才发现这块"宝藏区域"的妙用。简单来说,STM32的内部Flash就像手机的存储…

2026/7/15 1:21:36阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/14 4:56:14阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/14 2:55:05阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/14 6:17:41阅读更多 →
AI框架决定企业AI能走多远

AI框架决定企业AI能走多远

企业AI建设的第一性原理 企业搞AI,最关键的决定是什么?不是选哪家大模型,不是先做哪个场景,不是招多少AI人才——而是选哪个AI开发框架。 为什么?因为框架决定了企业AI能力的"天花板"。选对了框架&#xff0…

2026/7/15 0:01:30阅读更多 →
Java企业为什么需要AI框架

Java企业为什么需要AI框架

Java企业在AI时代的尴尬处境 Java是全球企业级应用开发的主流语言——全球超过一半的企业系统跑在Java上。但在AI浪潮面前,很多Java企业感到尴尬:大模型的接口是各种语言的,AI开发社区以其他语言为主流,似乎Java在AI时代"掉队…

2026/7/15 0:01:30阅读更多 →
CC3230x嵌入式开发实战:SD主机、定时器与低功耗模式深度解析

CC3230x嵌入式开发实战:SD主机、定时器与低功耗模式深度解析

1. 项目概述:为什么需要关注CC3230x的SD主机、定时器与低功耗?在物联网和嵌入式设备开发领域,我们常常面临一个核心矛盾:设备需要具备强大的连接能力、可靠的数据存储和实时控制功能,同时又必须严格控制功耗以延长电池…

2026/7/15 0:01:30阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/14 15:07:30阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/14 4:45:36阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/14 2:42:17阅读更多 →