2017-07-24 510 views
2

为了给出一点上下文:我对机器学习相当陌生,我已阅读并看过一些关于CNN如何工作的教育视频。如何处理CNN模型中的不同输入大小

到目前为止,我已经试过两个模型,一个随机的CNN模型和Google的Inception v3模型。我可以理解随机的人CNN模型和那里发生的事情。我不明白的是如何使它适用于不同尺寸或旋转的不同输出尺寸。让我来解释我在做什么:

我基本上想要能够将图片(包含徽标)分类为品牌。例如,你给我一张包含星巴克标志的照片,我们的模型会告诉你它是星巴克。每张照片只有一个标志(对于我的情况)。首先尝试使用初始模型:尝试20,000次迭代,使用2,000张星巴克收据图片,2,000张沃尔玛收据图片和2000张与星巴克或沃尔玛无关的随机图片,以便我也可以将图片归类为“无论如何”。有88%的准确性,不够好,交叉熵不低于0.4,然后我试图从这些图片裁剪标志,并再次尝试。这一次,在裁剪后的照片上它会像魅力一样工作,但是在包含星巴克徽标或沃尔玛的大图片上,它会失败。

与DeepLo​​go的方式同样的事情:https://github.com/satojkovic/DeepLogo

它运作良好,具有32×32的图片,但一旦我更改输入的大小,它失败。

我该如何克服这个问题?

编辑:我使用这个再培训的盗梦空间模型之上:https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/image_retraining

+0

让我们说你的网络需要128 x 128的图像。一旦获得图像,将其较短的一侧调整为128并保持纵横比。采用128×128尺寸的各种(标记)作物来训练一幅完全卷积的神经网络,用于处理不同作物的图像。在最后一层,您可以添加平均/最大池,然后添加一个FC层作为分类器。 –

+0

使用CNN时,您的输入图像应始终与您在网络上搜索此尺寸图像上的特征所用的网络相同。网络的输出在所有情况下都是相同的大小,因为您为网络定义了一个具有大小的结构。 但是,您可以调整图像大小并填充它们以保持相同的宽高比。 – Mathias

+0

@ ParagS.Chandakkar啊我明白了,所以基本上都是遍历图片。我肯定会尝试,但我有一个问题:假设我的标志是128 x 128,我所有的训练数据是128 x 128.现在我有一个1024 x 256图片和该标志,具有相同的大小( 128×128)存在于这张图片中,如果我保持宽高比并调整大小,它会使标志变小,我将无法对它进行分类。对? – Peyman

回答

0

池层? 从我的理解来看,pooling层提高了统计效率和平移不变性。最重要的是,在你的情况下,它可以用于各种尺寸的图像。 也许你可以做一些研究。 Goodfellow的书“深度学习”将是我的建议。

+0

感谢您的书籍​​推荐,所以为了简单起见,假设我训练了一组128 x 128图片,现在我想查看这些图片中是否存在1024 * 860图片,我是否应该遍历图片并查看如果我可以吗?我怎么知道要调整大小?我当然可以保持相同的宽高比,但这会使图片中的标志太小。 – Peyman

相关问题