2017-04-18 120 views
0

最近,我一直在玩MATLAB的RCNN深度学习示例here。在这个例子中,MATLAB设计了一个输入大小为32x32的基本15层CNN。他们使用CIFAR10数据集来预培训这个CNN。 CIFAR10数据集也有大小为32x32的训练图像。后来他们使用一个小的停车标志数据集来微调CNN来检测停车标志。这个停车标志的小数据集只有41个图像;所以他们使用这41张图片来微调CNN,即训练一个RCNN网络。这是他们如何检测停止标志: enter image description here 正如您所看到的,边界框几乎覆盖了整个停止标志,除了顶部的一小部分。 使用代码我决定用C语言VOC数据集对CIFAR10数据集预先训练过的同一网络进行微调,但仅限于“飞机”类。 这些都是一些结果我得到: result 1深度学习架构的输入大小有多重要?

result 2

正如你所看到的检测包围盒几乎覆盖了整个飞机;所以当我评估它们时,这会导致精度为0。我明白,在MATLAB示例中提到的原始RCNN论文中,输入尺寸为227x227,CNN有25层。这可能是为什么检测不准确? CNN的输入大小如何影响最终结果?

回答

1

几乎肯定是的!当您通过网络传递图像时,网络会尝试最小化从图像中获取的数据,直到获得最相关的数据。在这个过程中,输入一次又一次地缩小。例如,如果您向网络插入比想要的图像更小的图像,则图像中的所有数据在网络传递过程中可能会丢失。 在你的情况下,你的结果的一个可选择的原因是网络“寻找”有限分辨率的功能,也许大飞机的分辨率超过了。