OpenMMlab--MMDetection目标检测代码学习小记

OpenMMlab–MMDetection目标检测代码学习小记



前言

大部分时间,在做算法工程落地的时候,我们并没有像研究者那样执着于算法实现是怎么回事,具体是怎么实现的,大部分我们都考虑的是算法代码为什么出现Erro,相比于后者,大概前者太消耗脑细胞了罢。局限的知识使得我们对更深层次的东西的认知显得心有余而力不足。


一、数据集

数据对于做深度学习的重要性不言而喻,通常面对开源数据不是下载数据的速度太慢就是因为是国外数据而被墙了,通常在配环境一步花费太多时间,无力吐槽。而OpenMMlab呢?是把数据收录进来了,然鹅,收录的数据整合起来建立起了网站,不注册用户登录无法下载。。。(https://opendatalab.org.cn/)就是这玩意。 重新建立了堵墙把数据墙起来了,还期待直接一键wget直接在线下载,多快好省。得,只能下载到本地,然后重新上传到服务器了,来回慢速折腾。

二、Backbone主干网络

MMDetection

最新版本的MMDetection主干网络(也可以译骨干网络)是2.28.1,里面收录了darknet这种yolo v3和4的经典主干网络,efficientnet这种神奇的组合CNN,以及swin transformer。貌似目前为止还没有收录v6和v7这些比较新的工作。

作为见证者,微软亚研的论文“Swin Transformer: Hierarchical Vision Transformer using Shifted Windows”利用滑动窗口和分层结构拿下了当时目标检测的SOTA,也是获得了ICCV2021的最佳论文,一度火出圈。各种跟风文章的主干网络都是加点swin,其中利用swin做swin-Unet的结合改进做医学图像分割的让人映像深刻。

    def __init__(self,
                 embed_dims,
                 num_heads,
                 feedforward_channels,
                 window_size=7,
                 shift=False,
                 qkv_bias=True,
                 qk_scale=None,
                 drop_rate=0.,
                 attn_drop_rate=0.,
                 drop_path_rate=0.,
                 act_cfg=dict(type='GELU'),
                 norm_cfg=dict(type='LN'),
                 with_cp=False,
                 init_cfg=None):

        super(SwinBlock, self).__init__()

        self.init_cfg = init_cfg
        self.with_cp = with_cp

        self.norm1 = build_norm_layer(norm_cfg, embed_dims)[1]
        self.attn = ShiftWindowMSA(
            embed_dims=embed_dims,
            num_heads=num_heads,
            window_size=window_size,
            shift_size=window_size // 2 if shift else 0,
            qkv_bias=qkv_bias,
            qk_scale=qk_scale,
            attn_drop_rate=attn_drop_rate,
            proj_drop_rate=drop_rate,
            dropout_layer=dict(type='DropPath', drop_prob=drop_path_rate),
            init_cfg=None)

        self.norm2 = build_norm_layer(norm_cfg, embed_dims)[1]
        self.ffn = FFN(
            embed_dims=embed_dims,
            feedforward_channels=feedforward_channels,
            num_fcs=2,
            ffn_drop=drop_rate,
            dropout_layer=dict(type='DropPath', drop_prob=drop_path_rate),
            act_cfg=act_cfg,
            add_identity=True,
            init_cfg=None)

Swin Transformer 相比于Vision Transformer,基于移位窗口的多头自注意力模块 (W-MSA / SW-MSA) 变成了标准多头自注意力模块 (MSA) 。Transformer作为应用到NLP任务非常成功的模型,又重新应用到CV的工作且取得了相当不错的成绩,Transformer着实够强悍能打

截至目前,paperswithcode目标检测的中,根据AP50的评测SOTA是EVA
paperswithcode

小结

无论是YOLO还是Swin Transformer,其中的构思设计值得揣摩

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值