sfzhang15 / RefineDet

Single-Shot Refinement Neural Network for Object Detection, CVPR, 2018
Other
1.43k stars 393 forks source link

类别不一致,如何预训练 #152

Closed zhangbohnu closed 5 years ago

zhangbohnu commented 5 years ago

hello, 请教一个问题,当预训练模型与数据的类别不一致时,应该如何进行预训练 ?
https://github.com/sfzhang15/RefineDet/issues/34#issuecomment-361334817 您提到改变conf layers名字,我不太懂。期待您的解答。

sfzhang15 commented 5 years ago

@zhangbohnu 你好,如果你数据的类别是预训练模型类别的一个子集,那么可以把最后那个卷积层的权重抽出来,例如VOC最后一层是3x3xCinx21,你的数据是VOC里头的5类,你就可以从中抽出3x3xCinx5,然后该模型作为预训练模型。如果你数据的类别不是预训练模型类别的一个子集,那就最后一层随机初始化开始训练。

zhangbohnu commented 5 years ago

嗯,谢谢。从P3_mbox_loc层开始参数就会不一致,涉及的层很多,我丢弃了预训练模型的这部分参数。

sfzhang15 commented 5 years ago

@zhangbohnu 如果不一致,可以选择不用预训练模型初始化那些层,直接随机初始化那些层,然后训练应该也是可以的