当前位置: 首页 > news >正文

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具有原始图像名称的目录中。
获得结果后,笔记本通过在预测图像上重叠地面实况注释来显示一组图像。
最后一步将告诉我们训练模型错过了哪些对象以及模型是否做出了错误的预测。

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

相关文章:

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

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

Ubuntu22.04安装python2

Ubuntu 20.04是继Ubuntu 18.04 LTS之后的下一个长期支持(LTS)版本,从Ubuntu 20.04开始系统不再预装python2。 如果我们有一些老旧的代码需要运行,可以在新版的Ubuntu系统上自行安装python2。 安装命令: sudo apt install python2查看pytho…...

【Amazon 实验①】Amazon WAF功能增强之实验环境准备

文章目录 1. 实验介绍2. 实验环境准备 1. 实验介绍 在真实的网络空间中,攻击者会使用大量广泛分布的僵尸网络、肉机等发起对目标的攻击。 其来源分布一般比较分散,因此难以简单防范。 本实验联合使用有多种AWS服务:Cloudfront、 Lambdaedge…...

Qt不能在线程函数操作UI

Qt的官方文档虽然并没有明确说明,不能在子线程中操作UI,但是,因为Qt是事件循环机制,所有的UI事件都是在主线程中处理的,如果在子线程中直接操作UI,就会存在线程安全问题,严重时候会使程序挂掉。…...

web网页端使用webSocket实现语音通话功能(SpringBoot+VUE)

写在前面 最近在写一个web项目,需要实现web客户端之间的语音通话,期望能够借助webSocket全双工通信的方式来实现,但是网上没有发现可以正确使用的代码。网上能找到的一个代码使用之后只能听到“嘀嘀嘀”的杂音 解决方案:使用Jso…...

读取spring boot项目resource目录下的文件

背景 项目开发过程中,有一些情况下将配置文件放在resource下能简化代码实现和部署时的打包步骤。例如: 项目中使用的数据库升级脚本、初始化脚本。将文件放到resource下,打包在jar包中,不能直接通过File路径读取。下面介绍两种读…...

R语言生物群落(生态)数据统计分析与绘图实践技术

R 语言作的开源、自由、免费等特点使其广泛应用于生物群落数据统计分析。生物群落数据多样而复杂,涉及众多统计分析方法。本内容以生物群落数据分析中的最常用的统计方法回归和混合效应模型、多元统计分析技术及结构方程等数量分析方法为主线,通过多个来…...

c# OpenCV 检测(斑点检测、边缘检测、轮廓检测)(五)

在C#中使用OpenCV进行图像处理时,可以使用不同的算法和函数来实现斑点检测、边缘检测和轮廓检测。 斑点检测边缘检测轮廓检测 一、斑点检测(Blob) 斑点检测是指在图像中找到明亮或暗的小区域(通常表示为斑点)&#…...

PHP下载安装以及基本配置

目录 引言 官网 下载 配置 1. 鼠标右键“此电脑”>“属性” 2. 打开高级系统设置 3. 打开环境变量 4. 双击系统变量中的path 5. 新建新的path 6. 将刚刚安装的位置加入环境变量 7. 检查是否安装成功 引言 PHP("PHP: Hypertext Preprocessor"…...

黑苹果安装经验总结2023-12

最近2个月安装了3台黑苹果 B85,I3-4330,HD7750,最容易安装,MacOS12一次成功山寨X99,E5-2650V4,RX470,难度高惠普Z840,X99平台,2颗E5-2630,128G内存&#xff…...

基于深度学习的森林火焰烟雾检测系统(含UI界面,yolov8、Python代码,数据集)

项目介绍 项目中所用到的算法模型和数据集等信息如下: 算法模型:     yolov8 yolov8主要包含以下几种创新:         1. 添加注意力机制(SE、CBAM等)         2. 修改可变形卷积(DySnake-主干c…...

测试开发体系介绍——测试体系介绍-L1

目录: 软件测试基础概念 软件测试:软件测试作用:软件缺陷:软件测试原则:软件测试对象:测试用例软件开发流程 软件:软件生命周期:软件开发流程:瀑布模型:瀑布模型优缺点敏捷开发模型: XP - 极限编程:SCRUM:DevOps:DevOps 生命周期:DevOps 对发…...

Linux中的链接运算符详解 - 提高编程效率与性能

Linux 命令的链接意味着,组合多个命令并根据它们之间使用的操作符的行为使它们执行。 Linux 中的命令链就像您在 shell 本身编写简短的 shell 脚本,然后直接从终端执行它们。链接使得流程自动化成为可能。 此外,无人值守的机器可以在链接操作…...

JS模块化规范之ES6及UMD

JS模块化规范之ES6及总结 前言ES6模块化概念基本使用ES6实现 UMD(Universal Module Definition)总结 前言 ESM在模块之间的依赖关系是高度确定的,与运行状态无关,编译工具只需要对ESM模块做静态分析,就可以从代码字面中推断出哪些模块值未曾被…...

XM平台官网开户注册流程图解

注册前准备 在进行XM外汇官网注册之前,首先需要准备必要的信息,包括个人身份信息、联系方式以及相关财务信息。确保这些信息的准确性是保证注册流程顺利进行的关键。 一、要访问XM外汇官方网站,首先打开您的浏览器。在浏览器的地址栏中输入…...

【Linux进阶之路】线程

文章目录 一、初始线程1.概念2.执行3.调度4.切换 二、线程控制1.创建2.等待3.分离4.退出5.取消 三、线程安全1.互斥1.1初始1.2理解1.3锁1.3.1概念1.3.2原理1.3.4死锁 2.同步2.1概念2.2原理 3.生产消费者模型 总结尾序 一、初始线程 1.概念 简单的概念: 线程就是一…...

个性化TikTok外贸工具定制!突破营销新境界!

随着全球化的加速发展,外贸行业正面临着前所未有的机遇和挑战,在这个竞争激烈的市场环境中,如何脱颖而出,吸引更多的潜在客户,成为每个外贸企业亟待解决的问题,而个性化TikTok外贸工具的定制,正…...

设计模式-门面模式

设计模式专栏 模式介绍模式特点应用场景门面模式和代理模式的区别代码示例Java实现门面模式Python实现门面模式 门面模式在spring中的应用 模式介绍 门面模式是一种常用的软件设计模式,也称为外观模式。它提供了一个高层次的接口,将一个子系统的外部与内…...

搭建接口自动化测试框架python+requests+pytest

安装python(最好是比较新比较稳定的版本),然后是python的解释器或者叫编译器pycharm安装后新建一个项目,以此项目为基础,安装依赖搭建框架。打开pycharm,点击左上角的File->New project->弹出如下界面…...

一套rk3588 rtsp服务器推流的 github 方案及记录 -02

整体方案参考上一篇博文 https://blog.csdn.net/qq_31764341/article/details/134810566 本篇博文主要介绍基于RK3588进行硬解码 还是之前的套路,我不生产代码,我只是代码的搬运工,今天我们搬运瑞芯微的官方代码,并记录下来整个调…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来&#xf…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...