用于图像检测/分类的卷积神经网络

时间:2016-06-03 11:46:34

标签: classification tensorflow deep-learning conv-neural-network

所以这里有设置,我有一组图像(标记为火车和测试),我想训练一个转换网,告诉我特定对象是否在此图像中。

为了做到这一点,我按照MNIST上的tensorflow教程,训练了一个简单的转换网,缩小到感兴趣的区域(对象),这是对大小为128x128的图像进行训练。结构如下:连续3层,包括2个转换层和1个最大池下采样层,以及一个完全连接的softmax层(无论对象是否存在,有两个0级和1级)

我使用tensorflow实现它,这很有效,但由于我有足够的计算能力,我想知道如何提高分类的复杂性: - 添加更多图层? - 在每一层添加更多频道? (目前32,64,128和1024为完全连接) - 其他什么?

但最重要的部分是现在我想在较大的图像上检测到这个相同的对象(粗糙度为600x600,而对象的大小应该在100x100左右)。

我想知道如何使用先前用于小图像的训练“小”网络,以便在大图像上预先训练更大的网络?一种选择可能是使用大小为128x128的切片窗口对图像进行分类并扫描整个图像,但我想尽可能尝试在其上训练整个网络。

有关如何进行的任何建议?还是处理这类问题的文章/资源? (我真的很擅长深度学习,如果这是一个愚蠢的问题,那就很抱歉......)

谢谢!

2 个答案:

答案 0 :(得分:1)

我建议你继续阅读整个领域。您的搜索键包括 CNN,图像分类,神经网络,AlexNet,GoogleNet ResNet 。这将返回许多文章,在线课程和讲座,以及其他材料,以帮助您了解神经网络的分类。

不要只是添加图层或过滤器:拓扑的复杂性(网络设计)必须适合任务;一个过于复杂的网络将过度拟合训练数据。你一直在使用的那个可能是LeNet;我上面提到的三个是ImageNet图像分类竞赛。

答案 1 :(得分:1)

由于您正在处理图像,我建议您使用预训练的图像分类网络(如VGG,Alexnet等)并使用128x128图像数据对此网络进行微调。根据我的经验,在我们拥有非常大的数据集之前,微调网络将提供更高的准确性并节省培训时间。在数据集上构建好的图像分类器后,您可以使用任何流行的算法从图像生成提案区域。现在把所有提案区域一个接一个地传递给分类网络并检查天气这个网络正在将提议的给定区域分类为正面或负面。如果它分类为肯定,那么很可能你的对象存在于该区域。否则就不是。如果根据分类器存在很多对象存在的提议区域,则可以使用非最大抑制算法来减少正向提议的数量。