深度学习模型(yolo)中的后端权重是什么?

时间:2020-01-06 03:00:27

标签: deep-learning object-detection yolo pre-trained-model

深度学习的新手,但似乎找不到/弄清楚后端权重是什么,例如

full_yolo_backend.h5
squeezenet_backend.h5

根据我的发现和实验,这些后端权重具有根本不同的模型架构,例如

  • yolov2模型具有40层以上的层,但后端只有20层以上的层(?)
  • 您可以使用自己的网络(?)在后端模型的基础上构建
  • 使用后端模型往往会产生较差的结果(?)

我希望出于学习目的,对后端权重与实际模型进行一些解释。非常感谢!

1 个答案:

答案 0 :(得分:0)

我注意到您使用的是哪种实现,但是在许多应用程序中,您可以将深度模型视为特征提取器,其输出或多或少与任务无关,其后是许多特定于任务的负责人。

后端的选择取决于您在精度和计算复杂度之间权衡方面的特定限制。后端的经典但耗时的选择的示例是resnet-101,resnet-50或VGG,它们可以与FPN(功能金字塔网络)耦合以产生多尺度特征。但是,如果您最关心速度,则可以使用较小的后端,例如不同的MobileNet架构,甚至可以使用原始网络,例如原始Yolov1 / v2论文中使用的原始网络(tinyYolo是极端情况)。

一旦选择了后端(可以使用经过预训练的后端),就可以加载其权重(这就是* h5文件)。最重要的是,您将添加一个小头来执行所需的任务:这可以是分类,bbox回归或类似MaskRCNN的地面/背景分割。对于Yolov2,您可以仅添加很少的内容,例如3个卷积层(当然具有非线性),它们将输出大小为

的张量
BxC1xC2xAxP
#B==batch size
#C1==number vertical of cells
#C2==number of horizontal cells
#C3==number of anchors
#C4==number of parameters (i.e. bbx parameters, class prediction, confidence)  

然后,您可以单独保存/加载此头部的重量。不过,如果您对结果感到满意,那么(端到端)联合培训通常会给您带来一些小的准确性。

最后,回到最后一个问题,我认为后端的效果不佳,因为您仅加载后端权重,而不是头部的权重。另一种可能性是您正在使用经过后端X训练的头部,但是您将后端切换到Y。在这种情况下,由于头部期望具有不同的功能,因此自然会看到性能下降。