COCO预训练的Darknet权重如何适配不同类别数的输出尺寸?
Darknet YOLO预训练权重加载规则解答
你提出的两个猜测中,第二个符合Darknet的实际权重加载逻辑,第一个“截断后随机初始化”的猜测不成立,具体规则如下:
- Darknet加载预训练权重时按层顺序逐段匹配读取参数,只会读取和当前配置层参数尺寸匹配的部分,超出尺寸的参数直接丢弃,不会对该层做随机初始化。
- 你修改的3个检测头前置卷积层(138、149、160层)配置为18个卷积核,加载COCO预训练权重时,会直接读取该层在权重文件中存储的前18个卷积核的参数,剩余237个卷积核的参数直接忽略不加载。
- 所有位于修改层之前的特征提取层,参数尺寸和COCO预训练权重完全匹配,会完整加载全部预训练参数,保证迁移学习的特征复用效果。
注意:如果是在自定义数据集上做微调训练,这三层加载的部分预训练参数会在训练过程中被梯度更新,最终会适配你的单类别检测任务,不会出现效果异常。如果是直接修改类别数后就用预训练权重做推理,不推荐这么操作,因为加载的前18个参数对应的是COCO数据集的前几个类别逻辑,和你的自定义废弃物类别不匹配。
内容的提问来源于stack exchange,提问作者esarf
相关产品推荐
相关产品推荐

