我想创建一个图像分类器,根据图像上关键点的数量对图像进行分类。这些关键点是通过将图像通过SURF函数传递的结果而生成的。 SURF功能是一种功能检测器,可在图像上生成关键点。我想建立一个分类器,根据关键点的数量对图像进行分类。我有两类,一类具有很多关键点的图像,另一类具有很少关键点的图像。
以下图像的关键点数量较少。
下面的图像具有更多的关键点。
我正在使用一个数据集,该数据集将1600张图像分为两类,将200张图像用于两类测试。
是否可以通过更改CNN的参数(例如input_size
,filter_size
,epoch
,kernel
等)来实现这一目标?
我尝试减少分类器的时代数和输入图像的大小。
这是我的CNN的代码。
model.add(Conv2D(32, (3, 3), input_shape=(64, 64, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(32, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(64, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(64))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(1))
model.add(Activation('sigmoid'))
这是SURF函数的代码:
surf = cv2.xfeatures2d.SURF_create(1500)
keypoints, descriptors = surf.detectAndCompute(fus, None)
fus_surf = cv2.drawKeypoints(fus, keypoints, None)
我希望分类器能够检测到关键点并根据关键点的数量进行预测。