yolo-nas无人机高空红外热数据小目标检测(教程+代码)

前言

  • YOLO-NAS是目前最新的YOLO目标检测模型。
  • 从一开始,它就在准确性方面击败了所有其他 YOLO 模型。
  • 与之前的 YOLO 模型相比,预训练的 YOLO-NAS 模型能够以更高的准确度检测更多目标。
  • 但是我们如何在自定义数据集上训练 YOLO NAS?

这将是我们本文的目标——在自定义数据集上训练不同的 YOLO NAS 模型。
在这里插入图片描述

YOLO-NAS训练

YOLO-NAS 的主要主张是它可以比以前的模型更好地检测更小的物体。尽管我们可以运行多个推理实验来分析结果,但在具有挑战性的数据集上对其进行训练将使我们有更好的理解。为此,我们将使用三个可用的预训练 YOLO-NAS 模型运行四个训练实验。为此,我们选择无人机热成像检测数据集。

在实验过程中,我们将遍历 YOLO-NAS 的完整训练流程。

  1. 用于训练 YOLO NAS 的物体检测数据集
  2. 在自定义数据集上训练 YOLO NAS
  3. 微调 YOLO NAS 模型
  4. 使用经过训练的 YOLO NAS 模型对测试图像进​​行推理
  5. YOLO NAS 训练模型视频推理结果
  6. 结论

训练 YOLO NAS 的物体检测数据集

用于训练 YOLO NAS 的物体检测数据集
我们先来熟悉一下无人机高空红外热数据集。

它包含夜间无人机热图像。鉴于无人机的高空记录,大多数物体看起来都很小。这使得该数据集对于大多数目标检测模型来说都难以解决。然而,它是完美的自定义数据集来训练 YOLO-NAS 以检查其在小物体上的准确性。

该数据集包含 5 个对象类别的 2898 张热图像:

  • 自行车
  • 其他车辆
  • 不在乎

数据集已包含训练、验证和测试分割。有 2008 个训练样本、287 个验证样本和 571 个测试样本。该数据集已经以 YOLO 注释格式存在。

以下是数据集中的一些未注释的地面实况图像。
在这里插入图片描述
很明显,除了汽车之外,如果没有适当的注释,人眼无法看到地面上的其他物体。

要了解每个对象的位置,请查看一些带注释的图像
在这里插入图片描述

接下来,我们将深入研究本文的编码部分。下载本文的代码后,您将发现三个笔记本。

YOLO_NAS_Fine_Tuning.ipynb
YOLO_NAS_Large_Fine_Tuning.ipynb
inference.ipynb
YOLO_NAS_Fine_Tuning.ipynb我们将非常详细地浏览这些笔记本。这两个包含在自定义数据集上训练 YOLO NAS 以及稍后使用经过训练的模型运行推理所需的所有步骤。培训笔记本包含下载数据集的代码。

以下代码将训练三个 YOLO NAS 模型:

YOLO NAS (小)
YOLO NAS m(中型)
YOLO NAS l (大)
在开始之前,您可以安装super-gradients我们在整个训练和推理过程中需要的软件包。尽管笔记本包含执行此操作的命令,您也可以使用以下命令安装它:

pip install

数据集下载和目录结构
接下来的几个代码块下载数据集并将其解压到当前目录,我们将在此处跳过。所有笔记本和数据集都存在于父数据集目录中,其结构如下

hit-uav
├── dataset.yaml
├── images
│   ├── test
│   ├── train
│   └── val
└── labels
    ├── test
    ├── train
    └── val

YOLO NAS模型训练

由于我们正在训练三个不同的模型,因此我们需要稍微自动化该过程。我们可以定义一个包含三个模型名称的列表,并根据该列表设置检查点目录。这还将加载适当的模型,因为列表中的模型名称与 API 中的模型名称相匹配super-gradients。

models_to_train = [
    'yolo_nas_s',
    'yolo_nas_m',
    'yolo_nas_l'
]
 
CHECKPOINT_DIR = 'checkpoints'
 
for model_to_train in models_to_train:
    trainer = Trainer(
        experiment_name=model_to_train, 
        ckpt_root_dir=CHECKPOINT_DIR
    )
 
    model = models.get(
        model_to_train, 
        num_classes=len(dataset_params['classes']), 
        pretrained_weights="coco"
    )
 
    trainer.train(
        model=model, 
        training_params=train_params, 
        train_loader=train_data, 
        valid_loader=val_data
    )

三个训练实验将依次运行,所有模型检查点将保存在各自的目录中。

YOLO NAS 训练参数

在我们开始微调过程之前,训练参数是最重要的组成部分。这是我们定义要训练的纪元数、要监控的验证指标以及学习率等的地方。、

models_to_train = [
    'yolo_nas_s',
    'yolo_nas_m',
    'yolo_nas_l'
]
 
CHECKPOINT_DIR = 'checkpoints'
 
for model_to_train in models_to_train:
    trainer = Trainer(
        experiment_name=model_to_train, 
        ckpt_root_dir=CHECKPOINT_DIR
    )
 
    model = models.get(
        model_to_train, 
        num_classes=len(dataset_params['classes']), 
        pretrained_weights="coco"
    )
 
    trainer.train(
        model=model, 
        training_params=train_params, 
        train_loader=train_data, 
        valid_loader=val_data
    )

微调结果

在这里插入图片描述

YOLO NAS 模型对测试图像进​​行推理

该数据集包含一个测试分割,我们保留该测试分割用于推理目的。您可以执行笔记本中的代码单元inference.ipynb来运行推理实验。它促成了一些事情:

首先,它从检查点目录加载经过最佳训练的 YOLO NAS 权重。
然后它对测试图像运行推理。执行此操作时,代码会将推理结果保存在inference_results/images具有原始图像名称的目录中。
获得结果后,笔记本通过在预测图像上重叠地面实况注释来显示一组图像。
最后一步将告诉我们训练模型错过了哪些对象以及模型是否做出了错误的预测。

让我们通过可视化一些推理预测来开始我们的分析。
在这里插入图片描述

  • 34
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 27
    评论
YOLO-NAS是一种基于深度学习的目标检测算法,其全称为You Only Look Once Neural Architecture Search。它是对YOLO算法进行了优化和改进的版本。 YOLO-NAS的主要目标是通过自动化搜索神经网络的结构来提高目标检测的性能。与传统的手动设计网络结构不同,YOLO-NAS通过在大规模的搜索空间中进行探索和优化,自动确定最佳的网络结构。 YOLO-NAS主要包含以下步骤: 1. 构建搜索空间:首先,需要确定网络结构的搜索空间,即可选择的网络模块和它们的连接方式。搜索空间的定义将影响到最终搜索结果的准确性和效率。 2. 引入搜索算法:为了在搜索空间中找到最优的网络结构,需要引入一种搜索算法。常见的搜索算法包括遗传算法、强化学习和进化算法等。这些算法能够通过对网络模块的参数和连接方式进行迭代搜索,找到最佳的结构。 3. 训练和评估:在搜索算法的指导下,使用训练数据对网络进行训练,并在验证集上进行评估。评估指标通常包括目标检测的准确率、召回率和速度等。 4. 微调和压缩:在找到最优网络结构后,可以通过微调和压缩等技术进一步优化网络的性能和计算效率。 总的来说,YOLO-NAS是一种通过自动搜索神经网络结构的算法,用于提高目标检测算法的性能。它通过在大规模搜索空间中寻找最优结构,实现了网络结构的自动化优化,为目标检测算法的发展提供了新的思路和方法。
评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿利同学

一角两角不嫌少

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值