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

What are backend weights in deep learning models (yolo)?

深度学习的新手,但似乎无法 find/figure 了解什么是后端权重,例如

full_yolo_backend.h5
squeezenet_backend.h5

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

我希望就后端权重与用于学习目的的实际模型寻求一些解释。非常感谢!

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

后端的选择取决于您在准确性和计算复杂性之间权衡方面的具体限制。后端的经典但耗时的选择示例是 resnet-101、resnet-50 或 VGG,它们可以与 FPN(特征金字塔网络)结合以产生多尺度特征。但是,如果速度是您的主要关注点,那么您可以使用较小的后端,例如不同的 MobileNet 架构,甚至可以使用原始网络,例如原始 Yolov1/v2 论文中使用的网络(tinyYolo 是一种极端情况)。

一旦你选择了你的后端(你可以使用预训练的),你就可以加载它的权重(这就是你的 *h5 文件)。最重要的是,您将添加一个小脑袋来执行您需要的任务:这可以是分类、bbox 回归,或者 MaskRCNN forground/background 分割中的类似任务。对于 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)  

那么,你就可以单独save/load这个头的权重了。不过,当您对自己的结果感到满意时,联合训练(端到端)通常会使您的准确性略有提高。

最后,回到你的最后一个问题,我假设你在后端得到的结果很差,因为你只加载了后端权重而不是头部的权重。另一种可能性是,您正在使用经过后端 X 训练的头部,但您正在将后端切换到 Y。在那种情况下,由于 head 期望不同的功能,自然会看到性能下降。