Keras 中用于图像分类的 CNN 是什么类型?

What is the type of CNN that is used in Keras for image classification?

我有一个 CNN 架构,我训练它识别一些我最终需要实时使用的对象,然后使用检测到的对象的输出进行进一步的工作。我有两个问题需要回答才能评估我需要做的下一步:

  1. 随着我对CNN的研究越来越多,我发现有不同类型的CNN,比如faster CNN。所以我想知道Keras在使用其conv2d函数时使用的是什么类型的架构(我将在下面提供我的CNN架构的代码)

  2. 生成的模型帮助我识别我要寻找的对象是否在图像中,但我也在寻找图像中的预测区域。这可能使用相同的体系结构还是我需要使用其他类似 YOLO 的东西?


classifier = Sequential()

classifier.add(Conv2D(32, (3, 3), input_shape= (128, 128, 3), activation = 'relu' ))

classifier.add(MaxPooling2D(pool_size = (2, 2)))

classifier.add(Conv2D(64, (3, 3), activation = 'relu' ))
classifier.add(MaxPooling2D(pool_size = (2, 2)))

classifier.add(Conv2D(128, (3, 3), activation = 'relu' ))
classifier.add(MaxPooling2D(pool_size = (2, 2)))

classifier.add(Flatten())

classifier.add(Dense(units = 128, activation = 'relu'))
classifier.add(Dense(units = 1, activation = 'sigmoid'))

classifier.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy'])

编辑:更具体地说,我想知道 tensorflow 或任何后端 keras 使用的是什么来提供基础 CNN,而我们定义架构的方式就是定义我们使用的 CNN 类型,例如区域 CNN ,快速CNN还是更快的CNN?或者它是在不同级别定义的东西?

我希望我说清楚了。

关于您的第一个问题:Keras 是 "just" 一种常见的 API,可用于不同的后端,即 TensorFlow、Theano 或 CNTK。

Keras 在 layers.convolutional, all of which are documented here. Since you are using TensorFlow as your backend, you can have a look at backend.tensorflow_backend 中定义了许多不同的卷积层,以找出 Keras 使用了哪些 TensorFlow 层。

但是请注意,R-CNN、Fast R-CNN 等不是特殊类型的卷积层,而是 CNN 架构(就像 YOLO 一样)。您可以在 this blog post. You can find a Keras implementation of R-CNN on GitHub.

中找到有关通用架构的更多信息

关于您的第二个问题:您的模型仅用作对象检测器。要识别图像中放置对象的 位置 ,您确实需要不同的架构。此外,您的训练数据将需要提供对象位置。