0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

簡單聊聊目標(biāo)檢測新范式RT-DETR的骨干:HGNetv2

jf_pmFSk4VX ? 來源:GiantPandaCV ? 2023-04-27 09:42 ? 次閱讀

【前言】前幾天瘋狂刷屏的RT-DETR賺足了眼球,在精度和速度上體現(xiàn)的優(yōu)勢和性價(jià)比遠(yuǎn)遠(yuǎn)高于YOLO,而今年ChatGPT、Sam的出現(xiàn),也讓一些吃瓜群眾知乎CNN沒有未來了,今天的文章,我們簡單聊一聊RT-DETR的骨干網(wǎng)絡(luò),HGNetv2。

一、RT-DETR橫空出世

前幾天被百度的RT-DETR刷屏,該提出的目標(biāo)檢測新范式對原始DETR的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行了調(diào)整和優(yōu)化,以提高計(jì)算速度和減小模型大小。這包括使用更輕量級的基礎(chǔ)網(wǎng)絡(luò)和調(diào)整Transformer結(jié)構(gòu)。并且,摒棄了nms處理的detr結(jié)構(gòu)與傳統(tǒng)的物體檢測方法相比,不僅訓(xùn)練是端到端的,檢測也能端到端,這意味著整個(gè)網(wǎng)絡(luò)在訓(xùn)練過程中一起進(jìn)行優(yōu)化,推理過程不需要昂貴的后處理代價(jià),這有助于提高模型的泛化能力和性能。

9288ca34-e494-11ed-ab56-dac502259ad0.png

當(dāng)然,人們對RT-DETR之所以產(chǎn)生濃厚的興趣,我覺得大概率還是對YOLO系列審美疲勞了,就算是出到了YOLO10086,我還是只想用YOLOv5和YOLOv7的框架來魔改做業(yè)務(wù)。。

二、初識HGNet

看到RT-DETR的性能指標(biāo),發(fā)現(xiàn)指標(biāo)最好的兩個(gè)模型backbone都是用的HGNetv2,毫無疑問,和當(dāng)時(shí)的picodet一樣,骨干都是使用百度自家的網(wǎng)絡(luò)。初識HGNet的時(shí)候,當(dāng)時(shí)是參加了第四屆百度網(wǎng)盤圖像處理大賽,文檔圖像方向識別專題賽道,簡單來說,就是使用分類網(wǎng)絡(luò)對一些文檔截圖或者圖片進(jìn)行方向角度分類。

92c91e5e-e494-11ed-ab56-dac502259ad0.png

當(dāng)時(shí)的方案并沒有那么快定型,通常是打榜過程發(fā)現(xiàn)哪個(gè)網(wǎng)絡(luò)性能好就使用哪個(gè)網(wǎng)絡(luò)做魔改,而且木有顯卡,只能蹭Ai Studio的平臺,不過v100一天8小時(shí)的實(shí)驗(yàn)時(shí)間有點(diǎn)短,這也注定了大模型用不了。

92e9a584-e494-11ed-ab56-dac502259ad0.png

流水的模型,鐵打的煉丹人,最后發(fā)現(xiàn)HGNet-tiny各方面指標(biāo)都很符合我們的預(yù)期,后面就一直圍繞它魔改。

當(dāng)然,比賽打榜是目的,學(xué)習(xí)才是享受過程,當(dāng)時(shí)看到效果還可以,便開始折騰起了HGNet的網(wǎng)絡(luò)架構(gòu),我們可以看到,PP-HGNet 針對 GPU 設(shè)備,對目前 GPU 友好的網(wǎng)絡(luò)做了分析和歸納,盡可能多的使用 3x3 標(biāo)準(zhǔn)卷積(計(jì)算密度最高),PP-HGNet是由多個(gè)HG-Block組成,細(xì)節(jié)如下:

93128274-e494-11ed-ab56-dac502259ad0.png

ConvBNAct是啥?簡單聊一聊,就是Conv+BN+Act,CV Man應(yīng)該最熟悉不過了:

classConvBNAct(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)))
ifself.use_act:
self.act=ReLU()

defforward(self,x):
x=self.conv(x)
x=self.bn(x)
ifself.use_act:
x=self.act(x)
returnx

且標(biāo)準(zhǔn)卷積的數(shù)量隨層數(shù)深度增加而增多,從而得到一個(gè)有利于 GPU 推理的骨干網(wǎng)絡(luò),同樣速度下,精度也超越其他 CNN ,性價(jià)比也優(yōu)于ViT-base模型。

93276482-e494-11ed-ab56-dac502259ad0.png

另外,我們可以看到:

  • PP-HGNet 的第一層由channel為96的Stem模塊構(gòu)成,目的是為了減少參數(shù)量和計(jì)算量。PP-HGNet
  • Tiny的整體結(jié)構(gòu)由四個(gè)HG Stage構(gòu)成,而每個(gè)HG Stage主要由包含大量標(biāo)準(zhǔn)卷積的HG Block構(gòu)成。
  • PP-HGNet的第三到第五層使用了使用了可學(xué)習(xí)的下采樣層(LDS Layer),該層group為輸入通道數(shù),可達(dá)到降參降計(jì)算量的作用,且Tiny模型僅包含三個(gè)LDS Layer,并不會對GPU的利用率造成較大影響.
  • PP-HGNet的激活函數(shù)為Relu,常數(shù)級操作可保證該模型在硬件上的推理速度。

三、再探HGNetv2

時(shí)隔半年,出世的RT-DETR又讓我關(guān)注起了這個(gè)網(wǎng)絡(luò),而此時(shí),HGNet已不叫HGNet,就像陳老師已經(jīng)不是當(dāng)年的陳老師,阿珍也不是當(dāng)初那片星空下的阿珍,現(xiàn)在升級換代變成了Pro版本。我們看看v2版本做了哪些變動?最基本的組成單元還是ConvBNAct不變,但該結(jié)構(gòu)添加了use_lab結(jié)構(gòu),啥是use_lab結(jié)構(gòu),簡單來說就是類似于resnet的分支殘差,但是use_lab是使用在了純激活函數(shù)部分:

#refertohttps://github.com/PaddlePaddle/PaddleDetection/blob/develop/ppdet/modeling/backbones/hgnet_v2.py
classConvBNAct(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
ifisinstance(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))
ifself.use_act:
self.act=ReLU()
ifself.use_lab:
self.lab=LearnableAffineBlock(lr_mult=lr_mult)
#激活函數(shù)部分添加lab結(jié)構(gòu)

同時(shí),use_lab結(jié)構(gòu)可以通過scale控制分流大小:

#refertohttps://github.com/PaddlePaddle/PaddleDetection/blob/develop/ppdet/modeling/backbones/hgnet_v2.py
classLearnableAffineBlock(nn.Layer):
def__init__(self,
scale_value=1.0,
#scale設(shè)置分流占比
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)

defforward(self,x):
returnself.scale*x+self.bias

除此之外,相對于第一版,HGNetv2已摘除了ESE模塊,但提供了LightConvBNAct模塊,更加具體的內(nèi)容可參見:https://github.com/PaddlePaddle/PaddleDetection/blob/develop/ppdet/modeling/backbones/hgnet_v2.py

PP-HGNetv2的整體結(jié)構(gòu)詳見下圖:

933aa286-e494-11ed-ab56-dac502259ad0.png

【結(jié)尾】 總體而言,HGNet還是一個(gè)比較低調(diào)的網(wǎng)絡(luò),官方也沒有過多宣傳,但是好不好用,依舊還是使用者說了算,后續(xù)如果DETR變體可以在國內(nèi)常見的板端成熟落地,如瑞芯微,地平線,高通芯片上適配,會給使用者帶來更多的選擇。


審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 網(wǎng)絡(luò)
    +關(guān)注

    關(guān)注

    14

    文章

    7570

    瀏覽量

    88833
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3248

    瀏覽量

    48864
  • ChatGPT
    +關(guān)注

    關(guān)注

    29

    文章

    1562

    瀏覽量

    7723

原文標(biāo)題:簡單聊聊目標(biāo)檢測新范式RT-DETR的骨干:HGNetv2

文章出處:【微信號:GiantPandaCV,微信公眾號:GiantPandaCV】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    如何使用Transformer來做物體檢測?

    導(dǎo)讀 本文為一個(gè)Facebook的目標(biāo)檢測Transformer (DETR)的完整指南,詳細(xì)介紹了DETR架構(gòu)的內(nèi)部工作方式以及代碼。 介紹 DEtection TRansforme
    的頭像 發(fā)表于 04-25 10:45 ?2633次閱讀
    如何使用Transformer來做物體<b class='flag-5'>檢測</b>?

    使用跨界模型Transformer來做物體檢測!

    這是一個(gè)Facebook的目標(biāo)檢測Transformer (DETR)的完整指南。 介紹 DEtection TRansformer (DETR)是Facebook研究團(tuán)隊(duì)巧妙地利
    的頭像 發(fā)表于 06-10 16:04 ?2229次閱讀
    使用跨界模型Transformer來做物體<b class='flag-5'>檢測</b>!

    解讀目標(biāo)檢測中的框位置優(yōu)化

    目標(biāo)檢測已經(jīng)有了長足的發(fā)展,總體來說根據(jù)階段個(gè)數(shù),可以劃分為Two-stage(Faster RCNN)、one-stage(SSD) 或者E2E(DETR)。根據(jù)是否基于anchor
    的頭像 發(fā)表于 06-21 17:40 ?2560次閱讀
    解讀<b class='flag-5'>目標(biāo)</b><b class='flag-5'>檢測</b>中的框位置優(yōu)化

    RT-DETR用114FPS實(shí)現(xiàn)54.8AP遠(yuǎn)超YOLOv8

    最近,基于Transformer的端到端檢測器(DETR)已經(jīng)取得了顯著的性能。然而,DETR的高計(jì)算成本問題尚未得到有效解決,這限制了它們的實(shí)際應(yīng)用,并使它們無法充分利用無后處理的好處,如非最大值抑制(NMS)。
    的頭像 發(fā)表于 04-20 09:59 ?1042次閱讀

    介紹RT-DETR兩種風(fēng)格的onnx格式和推理方式

    RT-DETR是由百度近期推出的DETR-liked目標(biāo)檢測器,該檢測器由HGNetv2、混合編
    的頭像 發(fā)表于 05-17 17:46 ?3317次閱讀
    介紹<b class='flag-5'>RT-DETR</b>兩種風(fēng)格的onnx格式和推理方式

    Focus-DETR:30%Token就能實(shí)現(xiàn)SOTA性能,效率倍增

    目前 DETR 類模型已經(jīng)成為了目標(biāo)檢測的一個(gè)主流范式。但 DETR 算法模型復(fù)雜度高,推理速度低,嚴(yán)重影響了高準(zhǔn)確度
    的頭像 發(fā)表于 08-02 15:12 ?824次閱讀
    Focus-<b class='flag-5'>DETR</b>:30%Token就能實(shí)現(xiàn)SOTA性能,效率倍增

    華為諾亞提出全新目標(biāo)檢測器Focus-DETR

    為實(shí)現(xiàn)模型性能和計(jì)算資源消耗、顯存消耗、推理時(shí)延之間的平衡,F(xiàn)ocus-DETR 利用精細(xì)設(shè)計(jì)的前景特征選擇策略,實(shí)現(xiàn)了目標(biāo)檢測高相關(guān)特征的精確篩選;繼而,F(xiàn)ocus-DETR 進(jìn)一步
    的頭像 發(fā)表于 08-02 15:43 ?567次閱讀
    華為諾亞提出全新<b class='flag-5'>目標(biāo)</b><b class='flag-5'>檢測</b>器Focus-<b class='flag-5'>DETR</b>

    DETR架構(gòu)的內(nèi)部工作方式分析

    這是一個(gè)Facebook的目標(biāo)檢測Transformer (DETR)的完整指南。 ? 介紹 DEtection TRansformer (DETR)是Facebook研究團(tuán)隊(duì)巧妙地利
    的頭像 發(fā)表于 08-30 10:53 ?988次閱讀
    <b class='flag-5'>DETR</b>架構(gòu)的內(nèi)部工作方式分析

    基于OpenVINO Python API部署RT-DETR模型

    RT-DETR 是在 DETR 模型基礎(chǔ)上進(jìn)行改進(jìn)的,一種基于 DETR 架構(gòu)的實(shí)時(shí)端到端檢測器,它通過使用一系列新的技術(shù)和算法,實(shí)現(xiàn)了更高效的訓(xùn)練和推理,我們將在 Python、C+
    的頭像 發(fā)表于 10-20 11:15 ?983次閱讀
    基于OpenVINO Python API部署<b class='flag-5'>RT-DETR</b>模型

    第一個(gè)基于DETR的高質(zhì)量通用目標(biāo)檢測方法

    現(xiàn)有的DETR系列模型在非COCO數(shù)據(jù)集上表現(xiàn)較差,且預(yù)測框不夠準(zhǔn)確。其主要原因是:DETR檢測頭中用全局交叉注意力替換了原來的卷積,刪除了以中心為中心的先驗(yàn)知識;另一方面,DETR
    的頭像 發(fā)表于 11-01 16:12 ?770次閱讀
    第一個(gè)基于<b class='flag-5'>DETR</b>的高質(zhì)量通用<b class='flag-5'>目標(biāo)</b><b class='flag-5'>檢測</b>方法

    基于OpenVINO C++ API部署RT-DETR模型

    RT-DETR 是在 DETR 模型基礎(chǔ)上進(jìn)行改進(jìn)的,一種基于 DETR 架構(gòu)的實(shí)時(shí)端到端檢測器,它通過使用一系列新的技術(shù)和算法,實(shí)現(xiàn)了更高效的訓(xùn)練和推理,在前文我們發(fā)表了《基于 Op
    的頭像 發(fā)表于 11-03 14:30 ?852次閱讀
    基于OpenVINO C++ API部署<b class='flag-5'>RT-DETR</b>模型

    基于OpenVINO C# API部署RT-DETR模型

    RT-DETR 是在 DETR 模型基礎(chǔ)上進(jìn)行改進(jìn)的,一種基于 DETR 架構(gòu)的實(shí)時(shí)端到端檢測器,它通過使用一系列新的技術(shù)和算法,實(shí)現(xiàn)了更高效的訓(xùn)練和推理,在前文我們發(fā)表了《基于 Op
    的頭像 發(fā)表于 11-10 16:59 ?764次閱讀
    基于OpenVINO C# API部署<b class='flag-5'>RT-DETR</b>模型

    百度開源DETRs在實(shí)時(shí)目標(biāo)檢測中勝過YOLOs

    這篇論文介紹了一種名為RT-DETR的實(shí)時(shí)檢測Transformer,是第一個(gè)實(shí)時(shí)端到端目標(biāo)檢測器。
    的頭像 發(fā)表于 03-06 09:24 ?1584次閱讀
    百度開源DETRs在實(shí)時(shí)<b class='flag-5'>目標(biāo)</b><b class='flag-5'>檢測</b>中勝過YOLOs

    OpenVINO? Java API應(yīng)用RT-DETR目標(biāo)檢測器實(shí)戰(zhàn)

    本文將從零開始詳細(xì)介紹環(huán)境搭建的完整步驟,我們基于英特爾開發(fā)套件AIxBoard為硬件基礎(chǔ)實(shí)現(xiàn)了Java在Ubuntu 22.04系統(tǒng)上成功使用OpenVINO? Java API,并且成功運(yùn)行了RT-DETR實(shí)現(xiàn)實(shí)時(shí)端到端目標(biāo)檢測
    的頭像 發(fā)表于 03-18 15:04 ?819次閱讀
    OpenVINO? Java API應(yīng)用<b class='flag-5'>RT-DETR</b>做<b class='flag-5'>目標(biāo)</b><b class='flag-5'>檢測</b>器實(shí)戰(zhàn)

    手機(jī)識別模型案例

    新的可能性。同時(shí),人工智能技術(shù)正在進(jìn)入各種應(yīng)用領(lǐng)域,在智慧城市、智能制造、智慧醫(yī)療、智慧農(nóng)業(yè)等領(lǐng)域發(fā)揮著重要作用。 本期介紹:模型案例:|?手機(jī)識別模型! RT-DETR RT-DETR是基于DETR架構(gòu)的端到端對象
    的頭像 發(fā)表于 11-18 11:01 ?135次閱讀
    手機(jī)識別模型案例