轻量检测模型NanoDet解析

官方解读:YOLO之外的另一选择,手机端97FPS的Anchor-Free目标检测模型NanoDet现已开源~ - 知乎

official implementation:

GitHub - RangiLyu/nanodet: NanoDet-Plus⚡Super fast and lightweight anchor-free object detection model. 🔥Only 980 KB(int8) / 1.8MB (fp16) and run 97FPS on cellphone🔥

Backbone 

backbone采用ShuffleNetV2-1.0x,采用stage2、3、4的输出作为neck的输入,下采样倍数分别为为8、16、32。ShuffleNetV2的具体介绍见ShuffleNet v2

Neck

neck部分采用PAN的结构并进行了一些修改,原始PAN的具体介绍见PANet(CVPR 2018)原理与代码解析。backbone中C2~C4的输出通道数为[116, 232, 464],lateral_conv的输出通道为96。这里的修改主要是将bottom-up path中的下采样方式由stride=2的3x3卷积改成了和top-down path中上采样一样的方式,即双线性插值。

至于官方解读里提到的不同尺度特征融合之前yolo采用的是concatenate,这里采用的是add,原始PAN采用的也是add,因此也不算修改。

Head

head部分的改动比较多。RetinaNet、FCOS中FPN不同层级的输出进入同一个检测头,检测头分为分类、回归两个分支,每个分支首先是4个卷积层,然后分别是分类和回归的输出卷积层。YOLOX中采用的是decoupled head,不同FPN层级的输出接不同的检测头,检测头的内部结构和FCOS是一样的。RTMDet中不同FPN层级的输出共享卷积参数,但BN层独立。即不同层级FPN的输出还是进入不同的检测头,但不同检测头里两个分支的前4个卷积是相同的,但BN层以及最后的分类、回归的输出卷积层是独立的。

最后是nanodet,采用的是和YOLOX一样的decoupled head,但检测头内部不再分为分类和回归两个分支,前面的4个卷积改为2个,最后经过一个输出卷积层,然后沿通道split得到分类和回归的输出。

Label Assignment

标签分配采用的是ATSS,没有做修改,具体介绍见ATSS:Adaptive Training Sample Selection原理与代码解读

Loss

损失函数采用的是Genreal Focal Loss,具体介绍见Generalized Focal Loss 原理与代码解析

  • 13
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

00000cj

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值