2

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

  1. 随着我对 CNN 的研究更多,我发现有不同类型的 CNN,例如更快的 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 或更快美国有线电视新闻网?还是在不同级别定义的东西?

我希望我说清楚了。

4

1 回答 1

2

关于您的第一个问题:Keras “只是”一个通用 API,可用于不同的后端,即 TensorFlow、Theano 或 CNTK。

Keras 在 中定义了许多不同的卷积层layers.convolutional,所有这些都在此处记录。由于您使用 TensorFlow 作为后端,因此您可以查看一下backend.tensorflow_backendKeras 正在使用哪些 TensorFlow 层。

但是请注意,R-CNN、Fast R-CNN 等不是特殊类型的卷积层,而是 CNN 架构(就像 YOLO 一样)。您可以在此博客文章中找到有关一般架构的更多信息。您可以在 GitHub 上找到R-CNN 的 Keras 实现。

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

于 2019-04-17T09:24:20.367 回答