【问题标题】:Bounding box prediction on CNN multiple class image classification in pythonpython中CNN多类图像分类的边界框预测
【发布时间】:2019-08-30 14:17:51
【问题描述】:

我有 4 种特定对象的训练集和测试。我还有 csv 格式的绑定框条件/感兴趣区域坐标 (x,y,w,h)。 该项目的主要目的是预测测试图像的类别以及感兴趣区域周围的边界框,并在图像上打印类别的名称。

我已经应用了基于 keras 库的 CNN 模型。它对测试集的给定图像进行分类。为了预测给定测试图像的边界框坐标,我应该改变什么?

        from keras.models import Sequential
        from keras.layers import Convolution2D
        from keras.layers import MaxPooling2D
        from keras.layers import Flatten
        from keras.layers import Dense

        #CNN initializing
        classifier= Sequential()

        #convolutional layer
        classifier.add(Convolution2D(filters = 32, kernel_size=(3,3), data_format= "channels_last", input_shape=(64, 64, 3), activation="relu"))

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

        #addition of second convolutional layer
        classifier.add(Convolution2D(filters = 32, kernel_size=(3,3), data_format= "channels_last", activation="relu"))
        classifier.add(MaxPooling2D(pool_size=(2,2)))

        #step 3 - FLatttening
        classifier.add(Flatten())

        #step 4 - Full connection layer
        classifier.add(Dense(128, input_dim = 11, activation = 'relu'))
        #output layer
        classifier.add(Dense(units = 4, activation = 'sigmoid'))

        #compiling the CNN
        classifier.compile(optimizer='adam',loss="categorical_crossentropy",metrics =["accuracy"])

        #part 2 -Fitting the CNN to the images


        from keras.preprocessing.image import ImageDataGenerator

        train_datagen = ImageDataGenerator(rescale = 1./255,
                                           shear_range = 0.2,
                                           zoom_range = 0.2,
                                           horizontal_flip = True)

        test_datagen = ImageDataGenerator(rescale = 1./255)

        training_set = train_datagen.flow_from_directory('dataset/Train',
                                                         target_size = (64, 64),
                                                         batch_size = 32,
                                                         class_mode = 'categorical')

        test_set = test_datagen.flow_from_directory('dataset/Test',
                                                    target_size = (64, 64),
                                                    batch_size = 32,
                                                    class_mode = 'categorical')

        classifier.fit_generator(training_set,
                                 steps_per_epoch =4286/32,
                                 epochs = 25,
                                 validation_data = test_set,
                                 validation_steps = 44/32)

【问题讨论】:

    标签: python keras conv-neural-network object-detection bounding-box


    【解决方案1】:

    您描述的任务是对象检测,通常需要更复杂的 CNN 模型。查看https://github.com/fizyr/keras-retinanet 了解其中一种著名的神经网络架构。

    【讨论】:

      猜你喜欢
      • 2019-04-19
      • 2021-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-04
      • 2021-01-30
      • 1970-01-01
      • 2018-06-03
      相关资源
      最近更新 更多