简单聊聊目标检测新范式RT-DETR的骨干:HGNetv2

这篇具有很好参考价值的文章主要介绍了简单聊聊目标检测新范式RT-DETR的骨干:HGNetv2。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【前言】 本文版权属于GiantPandaCV,未经许可,请勿转账!
前几天疯狂刷屏的RT-DETR赚足了眼球,在精度和速度上体现的优势和性价比远远高于YOLO,而今年ChatGPT、Sam的出现,也让一些吃瓜群众知乎CNN没有未来了,今天的文章,我们简单聊一聊RT-DETR的骨干网络,HGNetv2。

一、RT-DETR横空出世

前几天被百度的RT-DETR刷屏,该提出的目标检测新范式对原始DETR的网络结构进行了调整和优化,以提高计算速度和减小模型大小。这包括使用更轻量级的基础网络和调整Transformer结构。并且,摒弃了nms处理的detr结构与传统的物体检测方法相比,不仅训练是端到端的,检测也能端到端,这意味着整个网络在训练过程中一起进行优化,推理过程不需要昂贵的后处理代价,这有助于提高模型的泛化能力和性能。
简单聊聊目标检测新范式RT-DETR的骨干:HGNetv2
当然,人们对RT-DETR之所以产生浓厚的兴趣,我觉得大概率还是对YOLO系列审美疲劳了,就算是出到了YOLO10086,老子还是只想用YOLOv5和YOLOv7的框架来魔改做业务。。
简单聊聊目标检测新范式RT-DETR的骨干:HGNetv2

二、初识HGNet

看到RT-DETR的性能指标,发现指标最好的两个模型backbone都是用的HGNetv2,毫无疑问,和当时的picodet一样,骨干都是使用百度自家的网络。
初识HGNet的时候,当时是参加了第四届百度网盘图像处理大赛,文档图像方向识别专题赛道,简单来说,就是使用分类网络对一些文档截图或者图片进行方向角度分类。
简单聊聊目标检测新范式RT-DETR的骨干:HGNetv2
当时的方案并没有那么快定型,通常是打榜过程发现哪个网络性能好就使用哪个网络做魔改,而且木有显卡,只能蹭Ai Studio的平台,不过v100一天8小时的实验时间有点短,这也注定了大模型用不了。
简单聊聊目标检测新范式RT-DETR的骨干:HGNetv2
流水的模型,铁打的炼丹人,最后发现HGNet-tiny各方面指标都很符合我们的预期,后面就一直围绕它魔改。

当然,比赛打榜是目的,学习才是享受过程,当时看到效果还可以,便开始折腾起了HGNet的网络架构,我们可以看到,PP-HGNet 针对 GPU 设备,对目前 GPU 友好的网络做了分析和归纳,尽可能多的使用 3x3 标准卷积(计算密度最高),PP-HGNet是由多个HG-Block组成,细节如下:
简单聊聊目标检测新范式RT-DETR的骨干:HGNetv2
ConvBNAct是啥?简单聊一聊,就是Conv+BN+Act,CV Man应该最熟悉不过了:

class ConvBNAct(TheseusLayer):
    def __init__(self,
                 in_channels,
                 out_channels,
                 kernel_size,
                 stride,
                 groups=1,
                 use_act=True):
        super().__init__()
        self.use_act = use_act
        self.conv = Conv2D(
            in_channels,
            out_channels,
            kernel_size,
            stride,
            padding=(kernel_size - 1) // 2,
            groups=groups,
            bias_attr=False)
        self.bn = BatchNorm2D(
            out_channels,
            weight_attr=ParamAttr(regularizer=L2Decay(0.0)),
            bias_attr=ParamAttr(regularizer=L2Decay(0.0)))
        if self.use_act:
            self.act = ReLU()

    def forward(self, x):
        x = self.conv(x)
        x = self.bn(x)
        if self.use_act:
            x = self.act(x)
        return x

且标准卷积的数量随层数深度增加而增多,从而得到一个有利于 GPU 推理的骨干网络,同样速度下,精度也超越其他 CNN ,性价比也优于ViT-base模型。
简单聊聊目标检测新范式RT-DETR的骨干:HGNetv2
另外,我们可以看到:

  • PP-HGNet 的第一层由channel为96的Stem模块构成,目的是为了减少参数量和计算量。 PP-HGNet
  • Tiny的整体结构由四个HG Stage构成,而每个HG Stage主要由包含大量标准卷积的HG Block构成。
  • PP-HGNet的第三到第五层使用了使用了可学习的下采样层(LDS Layer),该层group为输入通道数,可达到降参降计算量的作用,且Tiny模型仅包含三个LDS Layer,并不会对GPU的利用率造成较大影响.
  • PP-HGNet的激活函数为Relu,常数级操作可保证该模型在硬件上的推理速度。

三、再探HGNetv2

时隔半年,出世的RT-DETR又让我关注起了这个网络,而此时,HGNet已不叫HGNet,就像陈老师已经不是当年的陈老师,阿珍也不是当初那片星空下的阿珍,现在升级换代变成了Pro版本。
我们看看v2版本做了哪些变动?
最基本的组成单元还是ConvBNAct不变,但该结构添加了use_lab结构,啥是use_lab结构,简单来说就是类似于resnet的分支残差,但是use_lab是使用在了纯激活函数部分:

# refer to https://github.com/PaddlePaddle/PaddleDetection/blob/develop/ppdet/modeling/backbones/hgnet_v2.py
class ConvBNAct(nn.Layer):
    def __init__(self,
                 in_channels,
                 out_channels,
                 kernel_size=3,
                 stride=1,
                 padding=1,
                 groups=1,
                 use_act=True,
                 use_lab=False,
                 lr_mult=1.0):
        super().__init__()
        self.use_act = use_act
        self.use_lab = use_lab
        self.conv = Conv2D(
            in_channels,
            out_channels,
            kernel_size,
            stride,
            padding=padding
            if isinstance(padding, str) else (kernel_size - 1) // 2,
            groups=groups,
            bias_attr=False)
        self.bn = BatchNorm2D(
            out_channels,
            weight_attr=ParamAttr(
                regularizer=L2Decay(0.0), learning_rate=lr_mult),
            bias_attr=ParamAttr(
                regularizer=L2Decay(0.0), learning_rate=lr_mult))
        if self.use_act:
            self.act = ReLU()
            if self.use_lab:
                self.lab = LearnableAffineBlock(lr_mult=lr_mult)
                # 激活函数部分添加lab结构

同时,use_lab结构可以通过scale控制分流大小:

# refer to https://github.com/PaddlePaddle/PaddleDetection/blob/develop/ppdet/modeling/backbones/hgnet_v2.py
class LearnableAffineBlock(nn.Layer):
    def __init__(self,
                 scale_value=1.0,
                 # scale设置分流占比
                 bias_value=0.0,
                 lr_mult=1.0,
                 lab_lr=0.01):
        super().__init__()
        self.scale = self.create_parameter(
            shape=[1, ],
            default_initializer=Constant(value=scale_value),
            attr=ParamAttr(learning_rate=lr_mult * lab_lr))
        self.add_parameter("scale", self.scale)
        self.bias = self.create_parameter(
            shape=[1, ],
            default_initializer=Constant(value=bias_value),
            attr=ParamAttr(learning_rate=lr_mult * lab_lr))
        self.add_parameter("bias", self.bias)

    def forward(self, x):
        return self.scale * x + self.bias

除此之外,相对于第一版,HGNetv2已摘除了ESE模块,但提供了LightConvBNAct模块,更加具体的内容可参见:
https://github.com/PaddlePaddle/PaddleDetection/blob/develop/ppdet/modeling/backbones/hgnet_v2.py

PP-HGNetv2的整体结构详见下图:
简单聊聊目标检测新范式RT-DETR的骨干:HGNetv2
【结尾】 总体而言,HGNet还是一个比较低调的网络,官方也没有过多宣传,但是好不好用,依旧还是使用者说了算,后续如果DETR变体可以在国内常见的板端成熟落地,如瑞芯微,地平线,高通等芯片上适配,会给使用者带来更多的选择。文章来源地址https://www.toymoban.com/news/detail-426905.html

到了这里,关于简单聊聊目标检测新范式RT-DETR的骨干:HGNetv2的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 加速44%!RT-DETR量化无损压缩优秀实战

    RT-DETR 模型是飞桨目标检测套件 PaddleDetection 最新发布的 SOTA 目标检测模型。其是一种基于 DETR 架构的端到端目标检测器,在速度和精度上均取得了 SOTA 性能。在实际部署中,为了追求“更准、更小、更快”的效率能力,本文使用飞桨模型压缩工具 PaddleSlim 中的自动压缩工具(

    2024年02月09日
    浏览(35)
  • 【OpenVINO】基于 OpenVINO Python API 部署 RT-DETR 模型

    目录 1. RT-DETR 2.OpenVINO 3.环境配置 3.1模型下载环境 3.2模型部署环境 4.模型下载与转换 4.1PaddlePaddle模型下载 4.2IR模型转换 5.Python代码实现 5.1模型推理流程实现 6.预测结果展示 7.总结   RT-DETR是在DETR模型基础上进行改进的,一种基于 DETR 架构的实时端到端检测器,它通过使用一

    2024年02月02日
    浏览(69)
  • 【OpenVINO】基于 OpenVINO C# API 部署 RT-DETR 模型

      RT-DETR是在DETR模型基础上进行改进的,一种基于 DETR 架构的实时端到端检测器,它通过使用一系列新的技术和算法,实现了更高效的训练和推理,在前文我们发表了《基于 OpenVINO™ Python API 部署 RT-DETR 模型 | 开发者实战》和《基于 OpenVINO™ C++ API 部署 RT-DETR 模型 | 开发者实

    2024年01月23日
    浏览(40)
  • 【OpenVINO】基于 OpenVINO C++ API 部署 RT-DETR 模型

      RT-DETR是在DETR模型基础上进行改进的,一种基于 DETR 架构的实时端到端检测器,它通过使用一系列新的技术和算法,实现了更高效的训练和推理,在前文我们发表了《基于 OpenVINO™ Python API 部署 RT-DETR 模型 | 开发者实战》,在该文章中,我们基于OpenVINO™ Python API 向大家展

    2024年01月22日
    浏览(43)
  • YOLOv8芒果独家首发 | 改进新主干:改进版目标检测新范式骨干PPHGNetv2,百度出品,提升YOLOv8检测能力

    💡 本篇内容 :YOLOv8改进新主干:目标检测新范式骨干PPHGNetv2改进版,百度出品,提升YOLOv8检测能力 💡🚀🚀🚀本博客 改进源代码改进 适用于 YOLOv8 按步骤操作运行改进后的代码即可 💡本文提出改进 原创 方式:二次创新,YOLOv8专属,充分结合YOLOv8和 PPHGNetv2网络 本改进结

    2024年02月06日
    浏览(36)
  • RT-DETR论文阅读笔记(包括YOLO版本训练和官方版本训练)

    论文地址: RT-DETR论文地址 代码地址: RT-DETR官方下载地址 大家如果想看更详细训练、推理、部署、验证等教程可以看我的另一篇博客里面有更详细的介绍 内容回顾: 详解RT-DETR网络结构/数据集获取/环境搭建/训练/推理/验证/导出/部署  目录 一、介绍  二、相关工作 2.1、实

    2024年02月03日
    浏览(27)
  • 【RT-DETR有效改进】轻量化CNN网络MobileNetV1改进特征提取网络

    👑欢迎大家订阅本专栏,一起学习RT-DETR👑     本篇文章给大家带来的改进机制是 MobileNetV1 ,其是专为移动和嵌入式视觉应用设计的轻量化网络结构。这些模型基于简化的架构,并利用深度可分离卷积构建轻量级深度神经网络,其 引入了两个简单的全局超参数 ,用于在延

    2024年01月19日
    浏览(34)
  • 【RT-DETR有效改进】利用EMAttention加深网络深度提高模型特征提取能力(特征选择模块)

    本文给大家带来的改进机制是 EMAttention注意力机制 ,它的 核心思想是 ,重塑部分通道到批次维度,并将通道维度分组为多个子特征,以保留每个通道的信息并减少计算开销。EMA模块通过编码全局信息来重新校准每个并行分支中的通道权重,并通过跨维度交互来捕获像素级别

    2024年02月21日
    浏览(33)
  • 【RT-DETR有效改进】华为 | Ghostnetv1一种专为移动端设计的特征提取网络

    👑欢迎大家订阅本专栏,一起学习RT-DETR👑     本文给大家带来的特征提取网络是华为 | Ghostnetv1其是一种专为移动端设计的特征提取网络,网络模型非常的小,其推理速度非常快,对于追求极致FPS的读者来说其是一个非常好的选择,其网络效果也是完爆经典模型MobileNet系列

    2024年01月21日
    浏览(31)
  • 【RT-DETR有效改进】华为 | GhostnetV2移动端的特征提取网络效果完爆MobileNet系列

    👑 欢迎大家订阅本专栏,一起学习RT-DETR 👑  本文给大家带来的改进机制是华为移动端模型GhostNetV2,华为 GhostNetV2 是为 移动应用设计的轻量级卷积神经网络(CNN) ,旨在提供更快的推理速度,其引入了一种硬件友好的注意力机制,称为DFC注意力。这个注意力机制是基于全

    2024年01月22日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包