--neozng1@hnu.edu.cn
笔者已经为nanodet增加了非常详细的注释,代码请戳此仓库:nanodet_detail_notes: detail every detail about nanodet 。
此仓库会跟着文章推送的节奏持续更新!
5. Head
head部分总共有五百多行代码,将分为
-
初始化、构造、前向传播
-
priors获取、标签分配、loss计算
-
检测框转换、后处理
这三个部分进行讲解。中间会穿插一下来自其他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

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

被折叠的 条评论
为什么被折叠?



