Какой тип CNN используется в Keras для классификации изображений? - PullRequest
2 голосов
/ 17 апреля 2019

У меня есть архитектура 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'])

РЕДАКТИРОВАТЬ: Чтобы быть более конкретным, я хочу знать, если какой тензорный поток или какие-либо backend keras обеспечивают базовый CNN, и то, как мы определяем архитектуру, определяет, какой тип CNN мы используем, такой как региональный CNN, быстрый CNN или быстрее CNN? или это что-то определенное на другом уровне?

Надеюсь, я ясно дал понять.

1 Ответ

2 голосов
/ 17 апреля 2019

Относительно вашего первого вопроса: Keras - это «просто» общий API, который можно использовать с разными бэкэндами, а именно с TensorFlow, Theano или CNTK.

Keras определяет ряд различных сверточных слоев в layers.convolutional, все из которых задокументированы здесь .Поскольку вы используете TensorFlow в качестве бэкэнда, вы можете взглянуть на backend.tensorflow_backend, чтобы узнать, какие слои TensorFlow использует Keras.

Однако обратите внимание, что R-CNN, Fast R-CNN и т. Д. Не являются специальными типами сверточных слоев, а являются архитектурами CNN (так же, как YOLO).Вы можете узнать больше об общих архитектурах в этом блоге .Вы можете найти реализацию Keras R-CNN на GitHub .

Относительно вашего второго вопроса: Ваша модель работает исключительно как детектор объектов.Чтобы определить , где на изображении вашего объекта, вам действительно потребуется другая архитектура.Кроме того, ваши данные о тренировке должны будут указывать местоположение объекта.

...