【问题标题】:Change resolution after training (have got a pre-trained model)训练后改变分辨率(有一个预训练的模型)
【发布时间】:2018-10-04 22:53:00
【问题描述】:

阅读YOLOv1 paper,提到[1] 网络的第一部分,即那些卷积层,首先在 ImageNet 数据集上以 224x224 的输入分辨率进行训练。之后,转换模型进行检测,其中输入分辨率从 224x224 增加到 448x448。我想知道这个转换怎么做:如果网络的输入一开始是224x224,那么参数个数应该和448x448不同,这意味着在ImageNet数据集上训练的卷积层不能重复用于检测.

我在这里错过了什么?

[1]:在“2.2培训”部分的末尾

【问题讨论】:

    标签: computer-vision convolutional-neural-network yolo


    【解决方案1】:

    如果网络的输入一开始是224x224,那么参数个数应该和448x448不同

    这是你的误会。

    卷积操作对输入的大小没有限制,因此对输出的大小也没有限制。当您训练一个末端具有完全连接层的 CNN 进行分类时,您将输入限制为固定大小,因为 FC 层可以接受的输入数量是固定的。

    但是,如果您从网络中移除分类头,并且仅使用 CNN 的训练权重作为特征提取器,您会注意到给定任何维度的输入(>= 网络已训练的维度on),输出将是一组特征图,其空间范围随着输入空间范围的增加而增加。

    因此,在 YOLO 中,网络最初被训练为以 224x224 的分辨率执行分类。通过这种方式,卷积操作的权重 + 最后的 FC 层的权重学会了提取和分类有意义的特征。

    在第一次训练之后,FC 层被丢弃,只保留特征提取部分。通过这种方式,您可以使用一个好的特征提取器,它已经学会以卷积方式提取有意义的特征(ei,产生的不是特征向量而是特征图作为输出,可以像 YOLO 那样进行后处理)

    【讨论】:

    猜你喜欢
    • 2017-08-19
    • 1970-01-01
    • 1970-01-01
    • 2018-04-15
    • 1970-01-01
    • 2023-01-03
    • 2018-10-23
    • 2022-10-19
    • 1970-01-01
    相关资源
    最近更新 更多