深度学习架构的输入大小有多重要?
How important is the Input Size for Deep Learning Architectures?
最近一直在玩MATLAB的RCNN深度学习例子here。在此示例中,MATLAB 设计了一个基本的 15 层 CNN,输入大小为 32x32。他们使用 CIFAR10 数据集来预训练这个 CNN。 CIFAR10 数据集也有大小为 32x32 的训练图像。后来他们使用一个小的停车标志数据集来微调这个 CNN 来检测停车标志。这个停车标志的小数据集只有 41 张图像;所以他们使用这 41 张图像来微调 CNN,即训练 RCNN 网络。这是他们检测停车标志的方式:
如您所见,边界框几乎覆盖了整个停车标志,除了顶部的一小部分。
玩代码我决定微调在 CIFAR10 数据集和 PASCAL VOC 数据集上预训练的同一个网络,但只针对 "aeroplane" class。
这些是我得到的一些结果:
如您所见,检测到的边界框几乎无法覆盖整个飞机;所以当我评估它们时,这会导致精度为 0。我知道在 MATLAB 示例中提到的原始 RCNN 论文中,输入大小为 227x227,它们的 CNN 有 25 层。这可能是检测不准确的原因吗? CNN 的输入大小如何影响最终结果?
几乎可以肯定!
当您通过网络传递图像时,网络会尝试最小化从图像中获取的数据,直到获得最相关的数据。在这个过程中,输入一次又一次地缩小。例如,如果您向网络中插入一个小于所需图像的图像,则图像中的所有数据都可能在网络传递过程中丢失。
在你的情况下,你的结果的一个可选原因是网络 "looks for" 的分辨率有限,也许大飞机的分辨率过高。
最近一直在玩MATLAB的RCNN深度学习例子here。在此示例中,MATLAB 设计了一个基本的 15 层 CNN,输入大小为 32x32。他们使用 CIFAR10 数据集来预训练这个 CNN。 CIFAR10 数据集也有大小为 32x32 的训练图像。后来他们使用一个小的停车标志数据集来微调这个 CNN 来检测停车标志。这个停车标志的小数据集只有 41 张图像;所以他们使用这 41 张图像来微调 CNN,即训练 RCNN 网络。这是他们检测停车标志的方式:
如您所见,检测到的边界框几乎无法覆盖整个飞机;所以当我评估它们时,这会导致精度为 0。我知道在 MATLAB 示例中提到的原始 RCNN 论文中,输入大小为 227x227,它们的 CNN 有 25 层。这可能是检测不准确的原因吗? CNN 的输入大小如何影响最终结果?
几乎可以肯定! 当您通过网络传递图像时,网络会尝试最小化从图像中获取的数据,直到获得最相关的数据。在这个过程中,输入一次又一次地缩小。例如,如果您向网络中插入一个小于所需图像的图像,则图像中的所有数据都可能在网络传递过程中丢失。 在你的情况下,你的结果的一个可选原因是网络 "looks for" 的分辨率有限,也许大飞机的分辨率过高。