在VGG神经网络中放置和获取大图像的策略

问题描述

我正在使用基于转移风格的深度学习方法,该方法使用了VGG(神经网络)。后者适用于小尺寸(512x512像素)的图像,但是当输入图像较大(尺寸> 1500px)时,它会提供失真的结果。该方法的作者建议将输入的大图像划分为多个部分,然后将样式转移到part1,然后再划分为part2,最后将这两个部分连接起来,最终形成一个大的最终图像,因为VGG是为小图像制作的。这种方法的问题是,所得图像在“胶合”部分的区域的水平上将具有一些不一致的区域。 我该如何纠正这些方面? 是这种划分方法的替代方法吗?

解决方法

Jeanluc,欢迎您。很好的第一个问题。

当您说VGG时,我希望您指的是VGG-16。该体系结构最后使用完全连接的层,这意味着您只能将其用于特定大小的图像。我相信ImageNet的默认值为224x224像素。

如果要使用未经修改的VGG-16,则必须使用此尺寸的图像。但是,许多人最后都删除了完全连接的图层(尤其是在样式转换的情况下),以便以所需的任何尺寸进纸。

任何尺寸?好吧,您可能要确保图像是32的倍数,因为VGG-16附带5个MaxPooling操作,每次操作的尺寸都是原来的一半。

但是,仅仅因为网络现在可以消化任何大小的图像,并不意味着预测将是有意义的。 VGG-16了解了以224px为比例的1000个不同对象的外观。使用1500px的猫可能不会激活与猫相关的神经元。有问题吗?

这取决于您的用例。我不相信VGG-16在ImageNet的上下文中对这些高分辨率图像进行分类,但这不是您要追求的。您想使用经过预训练的VGG-16,因为它应该已经学到了一些在样式转换的上下文中可能会派上用场的功能。无论输入的大小如何,这通常都是正确的。与从头开始相比,从预训练模型开始几乎总是首选。您可能想考虑针对此任务微调此模型,因为A)样式转换与分类完全不同,B)您使用的图像比例完全不同。

由于您遇到的问题完全相同,所以我从未找到这种推荐的基于补丁的方法来提供帮助。 CNN学会识别图像中的局部图案时,他们还将学习全局分布,这就是为什么这种方法不能很好地起作用的原因。您总是可以尝试使用插值技术合并补丁,但就我个人而言,我不会在此浪费时间。

取而代之的只是输入完整的图像,在删除完全连接的层后应该可以使用。比例尺将关闭,但是如果您真的想要高分辨率输入,您将无能为力。对VGG-16进行微调,以便它可以学习适应手头的用例。

如果您不想微调,我认为您无能为力。当您更改分辨率时,请使用经过网络训练的变换/比例或接受的效果不如最佳效果。