NanoDet代码逐行精读与修改(五.1)检测头的构造和前向传播

本文详细介绍了NanoDet-Plus检测头的实现,包括参数初始化、网络构造和前向传播过程。NanoDet-PlusHead包含多个模块,如深度可分离卷积、损失函数和动态分配器。在初始化阶段,设置了网络结构和参数,如卷积层数、步长和激活函数。在构造阶段,通过堆叠的卷积层构建了分类和回归分支,并进行了权重初始化。在前向传播阶段,对不同尺度的特征图进行处理并整合输出。文章还提到了ONNX导出时的处理,以及训练和推理的流程。

--neozng1@hnu.edu.cn

 笔者已经为nanodet增加了非常详细的注释,代码请戳此仓库:nanodet_detail_notes: detail every detail about nanodet 。

此仓库会跟着文章推送的节奏持续更新!

5. Head

head部分总共有五百多行代码,将分为

  1. 初始化、构造、前向传播

  2. priors获取、标签分配、loss计算

  3. 检测框转换、后处理

这三个部分进行讲解。中间会穿插一下来自其他module的函数或class的介绍,如QFL、DFL、用于从框分布得到框位置的Integral,还有GIoU loss。

5.1. 初始化、层构造和前向传播

5.1.1. 参数初始化

class NanoDetPlusHead(nn.Module):
    """Detection head used in NanoDet-Plus.
    Args:
        num_classes (int): Number of categories excluding the background
            category.不包括背景类,可以认为全部类的输出低于某个阈值视为背景
        loss (dict): Loss config.
        input_channel (int): Number of channels of the input feature.
            刚送入检测头的通道数量,需要和PAN的输出通道数量保持一致
        feat_channels (int): Number of channels of the feature. 经过检测头卷积后的通道数
            Default: 96.
        stacked_convs (int): Number of conv layers in the stacked convs. 堆叠的卷积层数
            Default: 2.
        kernel_size (int): Size of the convolving kernel. Default: 5. 
        strides (list[int]): Strides of input multi-level feature maps. 下采样步长
            Default: [8, 16, 32].
        conv_type (str): Type of the convolution.
            Default: "DWConv".
        norm_cfg (dict): Dictionary to construct an
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值