news 2026/9/3 2:06:12

【红外小目标检测实战 五】轻量化模型结构及去除DFL以加速边缘推理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【红外小目标检测实战 五】轻量化模型结构及去除DFL以加速边缘推理

接前篇,常规卷积在CUDA上回进行内存重排,使之变为连续的,然后放到CUDA核或者Tensor核上进行一系列高性能的乘加操作。但是风车卷积不是常规的卷积,虽说参数量也小,但是在jetson上无对应的高性能算子,导致访存不连续,进而拉慢了推理性能。本篇去掉了风车型卷积,改回SPDConv,同时去掉了边缘设备上不友好的DFL结构,并将激活函数从SiLU改为ReLU重新训练,以提高边缘设备推理性能。

一、模型信息

模型结构图

YAML文件

nc:1# number of classesscales:# model compound scaling constants, i.e. 'model=yolo11n.yaml' will call yolo11.yaml with scale 'n'# [depth, width, max_channels]n:[0.5,0.50,1024]# s: [1.0, 1.00, 1024]# m: [1.00, 2.00, 512]backbone:# [from, repeats, module, args]-[-1,1,SPDConv,[32]]-[-1,1,SPDConv,[64]]-[-1,2,C3k2,[64,True,0.25]]# 2 P2-[-1,1,Conv,[64,3,2]]-[-1,2,C3k2,[128,True,0.25]]# 4 P3-[-1,1,Conv,[128,3,2]]-[-1,2,C3k2,[256,False]]# 6 P4-[-1,1,SPPF,[256,5]]-[-1,2,C2PSA,[256]]# 8head:-[-1,1,nn.Upsample,[None,2,"nearest"]]-[[-1,4],1,Concat,[1]]# cat backbone P3-[-1,2,C3k2,[128,False]]# 11-[-1,1,nn.Upsample,[None,2,"nearest"]]-[[-1,2],1,Concat,[1]]# cat backbone P2-[-1,2,C3k2,[64,False]]# 14-[-1,1,Conv,[64,3,2]]-[[-1,11],1,Concat,[1]]-[-1,2,C3k2,[128,False]]# 17# 向上分支,融合原始特征-[-1,1,nn.Upsample,[None,2,"nearest"]]-[[-1,2],1,Concat,[1]]# cat backbone P2-[-1,2,MicroC3,[64]]# 20-[-1,1,HDC,[64]]-[-1,1,ART,[64]]# 22-[17,1,Conv,[128,3,2]]-[[-1,8],1,Concat,[1]]# 24-[-1,2,C3k2,[256,True]]#-[[22,17,25],1,Detect,[nc]]# Detect(P2, P3, P4)# - [[21, 17, 24], 1, Detect, [nc]] # 减少一个concat

模型参数量分析

n-model总体FLOPs很小,只有4.78G,参数量500多K。
s-modelFLOPs也只有21.554G

二、详细改动

1.关闭DFL

ultralytics/nn/modules/head.py

classDetect(nn.Module):...def__init__(self,nc:int=80,ch:tuple=()):""" Initialize the YOLO detection layer with specified number of classes and channels. Args: nc (int): Number of classes. ch (tuple): Tuple of channel sizes from backbone feature maps. """super().__init__()self.nc=nc# number of classesself.nl=len(ch)# number of detection layers# self.reg_max = 16 # DFL channels (ch[0] // 16 to scale 4/8/12/16/20 for n/s/m/l/x)self.reg_max=1# !!!注释掉上面一句,修改为这个

2.修改模块激活函数

ultralytics/nn/modules/conv.py

classConv(nn.Module):""" Standard convolution module with batch normalization and activation. Attributes: conv (nn.Conv2d): Convolutional layer. bn (nn.BatchNorm2d): Batch normalization layer. act (nn.Module): Activation function layer. default_act (nn.Module): Default activation function (SiLU). """# default_act = nn.SiLU() # default activationdefault_act=nn.ReLU()# !!!修改在此处

其余使用到的模块,也需要检查激活函数是否为ReLU.

三、实验结果

测试集上混淆矩阵

网络在自制测试集上的召回率和准确率都很高。

推理性能

n-model在jetson nx板子上,可以达到90FPS!

四、后续

  • 推理代码分享
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/3 0:49:07

惊艳!通义千问2.5-0.5B在边缘设备上的表现

惊艳!通义千问2.5-0.5B在边缘设备上的表现 1. 引言:轻量级大模型的边缘革命 随着AI技术向终端侧迁移,如何在资源受限的边缘设备(如手机、树莓派、嵌入式系统)上运行高质量语言模型,成为开发者关注的核心问…

作者头像 李华
网站建设 2026/9/3 1:07:53

为什么顶尖公司都在用虚拟线程处理云原生日志?真相曝光

第一章:为什么顶尖公司都在用虚拟线程处理云原生日志?真相曝光在高并发的云原生环境中,日志系统面临前所未有的压力。传统线程模型因资源消耗大、上下文切换频繁,已成为性能瓶颈。而虚拟线程(Virtual Threads&#xff…

作者头像 李华
网站建设 2026/9/3 0:45:34

Z-Image-ComfyUI团队协作:多人共享GPU不抢资源

Z-Image-ComfyUI团队协作:多人共享GPU不抢资源 引言 想象一下这样的场景:你和同学小组正在赶一个AI绘画的课程作业,需要共同使用ComfyUI工具生成一系列风格统一的插画。但现实是,你们只有一台配置了GPU的电脑,大家不…

作者头像 李华
网站建设 2026/9/3 0:07:26

GStreamer零基础入门:构建第一个多媒体应用

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个极简的GStreamer教学示例,包含:1. 各平台安装指南;2. 播放本地视频文件的基础pipeline;3. 添加简单控件(播放/暂…

作者头像 李华
网站建设 2026/9/2 22:29:23

为什么你的应用总是超时?:连接池2.0配置调优的5个关键参数

第一章:为什么你的应用总是超时?——连接池2.0的本质解析在高并发场景下,应用频繁出现超时问题,根源往往不在网络或代码逻辑,而在于数据库连接管理机制的失效。传统连接池在面对突发流量时容易耗尽连接资源&#xff0c…

作者头像 李华
网站建设 2026/9/2 22:29:05

【高并发日志处理终极方案】:基于虚拟线程的云原生优化策略

第一章:高并发日志处理的挑战与演进 在现代分布式系统中,高并发场景下的日志处理已成为保障系统可观测性与稳定性的核心环节。随着微服务架构和云原生技术的普及,单一应用每秒产生的日志量可达数百万条,传统基于文件轮询或串行写入…

作者头像 李华