训练后改变分辨率(有预先训练的模型)

时间:2018-04-24 15:37:12

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

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

我在这里缺少什么?

[1]:在课程结束时" 2.2培训"

1 个答案:

答案 0 :(得分:1)

  

如果网络的输入最初是224x224,那么参数的数量应该与448x448不同

这是你的误解。

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

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

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

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