用DagsHub和Deci AI超级梯度训练SOTA目标检测模型
DagsHub现在与Deci集成,可以在训练SOTA对象检测模型时使用MLflow和DVC进行实验记录。通过几行代码实现完全的可再现性和模型<->数据沿袭。
我们在Deci最近的发展中看到了巨大的价值,不仅在提高目标检测能力方面,而且在展示深度学习模型方面,这些模型可以使用以下技术改进其他模型神经结构搜索(NAS)和自动神经结构构建(AutoNAC)。
这就是为什么我们决定为新的yomo - nas模型使用DagsHub Logger回调来扩展其功能并支持开箱即用的日志记录。通过这种集成,您可以使用MLflow和DVC将您的实验和工件记录到DagsHub远程服务器上,只需对代码进行少量更改。
想知道如何使用它吗?这个博客是给你的!
什么是YOLO-NAS?
YOLO-NAS是Deci研究人员利用深度学习模型开发的一种新的目标检测模型。如果您想深入了解其实现细节和性能,我们强烈建议您阅读发布博客。

DagsHub和Deci之间的集成包括什么?
通过DagsHub和Deci之间的新集成,您现在可以将实验和训练过的模型记录到托管在DagsHub上的远程MLflow服务器上,并与您的朋友和同事共享。如果您正在使用DVC,那么这种集成使您能够使用DVC对训练好的模型进行版本化,并将其推送到DagsHub远程存储中。所有这些都封装在DagsHub Logger中,只需要在项目中添加几行代码,就可以解锁大量新功能。

如何设置DagsHub记录器与Deci?
在SuperGradients中支持DagsHub日志记录器作为回调,可以通过向教练
模块。
将DagsHub设置为培训师的记录器:
Training_params ["sg_logger"] = "dagshub_sg_logger"
提供DagsHub的回购名称和所有者:
:参数dagshub_repository:格式:/< dagshub_rename >
如果存储库不存在,它将代表您自动创建。
最重要的是,您还可以通过设置,将记录器设置为使用DVC对训练模型进行版本化log_mlflow_only
参数设置为False。如果您希望将其用作自动化管道的一部分,则可以设置dagshub_auth
它解决了身份验证过程。中找到有关日志记录器参数的更多信息源代码。
使用DagsHub Logger比较yoloo - nas和YOLOv5
我们想对yolov - nas进行测试,并将其性能与YOLOv5进行比较。为此,我们使用PlaneDetector项目我们试图在卫星图像中发现飞机。对于这个任务来说,这是一个完美的项目,因为图像中的物体相当小,这需要模型的高精度。
为了测试模型的性能,我们将使用DagsHub Logger在训练和评估期间记录指标和参数,并使用DagsHub的实验表在两个体系结构之间执行质量比较。
使用DagsHub Logger培训YOLO-NAS
YOLO-NAS的一大优点是,它可以很容易地从头开始训练或微调新模型,并且需要编写很少的代码。在我们的项目中,我们使用教练
SuperGradients Python包中的模块,以及内置的数据加载器。
- 数据加载器配置:我们的注释采用COCO格式,作为包的一部分得到支持,只需要提供本地文件系统中文件的路径。
- DagsHub日志配置:我们从定义
sg_logger
作为dagshub_sg_logger
并提供到DagsHub仓库的路径DagsHub / PlaneDetector
。接下来,我们想要用DVC记录工件,因此我们将设置log_mlflow_only
为假。以下是完整的记录器配置:
"sg_logger": "dagshub_sg_logger", "sg_logger_params": # Params将被传递到日志记录器的__init__ . super_gradients.common.sg_loggers.dagshub_sg_logger.DagsHubSGLogger {"dagshub_repository": "DagsHub/PlaneDetector", #可选:您的DagsHub项目名称,由所有者名称,后跟'/'和repo名称组成。如果这是空的,在运行时将提示您手动填充它。"log_mlflow_only": False, #可选:更改为true以绕过记录到DVC,并且只记录所有工件到MLflow "save_checkpoints_remote": true, "save_tensorboard_remote": true,
您可以在DagsHub回购。

我们训练了100个epoch的YOLO-NAS,达到了0.948 mAP50, 0.992 Recall, 0.954 precision。你可以找到培训过程的完整日志在实验选项卡下
训练YOLOv5与DagsHub记录器
我们使用的培训和验证代码由Ultralytics用于训练YOLOv5检测模型。要使用自定义数据集进行训练,请将数据文件夹结构组织为Ultralytics建议。现在,我们可以使用下面的命令通过使用自定义数据集训练YOLOv5来轻松开始:
Python train_plane_detector.py——data data/airplane。/models/yolov5 .pt——save-path ../模型/——时代= 100
训练命令行支持数据YAML文件、预训练模型、保存训练模型的文件夹和训练的最大epoch的自定义设置。
请注意,如果你正在使用Colab笔记本如需培训,请注明CUBLAS_WORKSPACE_CONFIG
防止错误的环境变量:
import os os.environ["CUBLAS_WORKSPACE_CONFIG"]=":4096:8"
我们对YOLOv5进行了100次epoch的训练,得到了0.946 mAP50, 0.898 Recall, 0.953 precision。你也可以找到培训过程的完整日志在实验选项卡下
结果比较
模型 | 精度 | 回忆 | mAP50 |
---|---|---|---|
YOLO-v5 | 0.953 | 0.898 | 0.946 |
YOLO-NAS | 0.954 | 0.992 | 0.948 |
我们可以看到,与YOLOv5相比,YOLO-NAS在所有方面都提供了(轻微的)改进。深入研究不同的指标,两种模型几乎具有相同的精度,这意味着它们都很少做出误报预测。然而,与YOLO-V5(0.898)相比,YOLO-NAS(0.992)的召回率要高得多,这意味着它可以检测到更多的阳性实例。mAP@0.5同时考虑了准确率和召回率。YOLOv5的mAP@0.5为0.946,而yolovnas的mAP@0.5为0.948,说明yolovnas的整体性能优于YOLOv5。
结论
DagsHub和YOLO-NAS之间的新集成使您可以轻松地记录实验、工件,并在机器学习项目上与其他人协作。尝试一下DagsHub Logger,看看它如何增强您的机器学习工作流程。
让我们知道它在我们的社区中是如何发展的不和如果您有任何增强的要求-我们很乐意丰富这个集成并添加更多的功能!