Keras-卷积神经网络(检测单组图像)

时间:2018-08-29 16:24:16

标签: python keras

考虑一下,我有一组手表的图像,我愿意使用CNN来识别其他手表,但是其中有问题。问题是为了使分类算法正常工作,我们需要另一个类(二进制分类)。

所以我添加了另一个类,现在我有两组图像。第一组是单独的手表图像,另一组是一些随机图像(没有手表的任何图像)。我的准确度很低。

您能举一个如何使用CNN来实现它的示例吗?仅使用一组图像来识别其他图像?例如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
# For preprocessing
from keras.preprocessing.image import load_img, img_to_array
# For numeric computation
import numpy as np

classifier = Sequential()

# Add our first convolutional layer
classifier.add(Convolution2D(32, 3, 3, input_shape=(64,64,3), activation="relu"))
classifier.add(MaxPooling2D(pool_size=(2,2)))

# Add our second convolution layer
classifier.add(Convolution2D(64, 3,3, activation="relu"))
classifier.add(MaxPooling2D(pool_size=(2, 2)))

# Add the dense layers and compile the classifier
classifier.add(Dense(output_dim=1000, activation="sigmoid"))
classifier.add(Dense(output_dim=1, activation="sigmoid"))
classifier.compile(optimizer="sgd", loss="binary_crossentropy", metrics=["accuracy"])

# Create training data
X_train = []
y_train = []

# And the necessary libaries to load the images
import glob

plastic = glob.glob("watches/*.*")
paper = glob.glob("random/*.*")

for i in plastic:
    array = img_to_array(load_img(i, target_size=(64, 64)))
    X_train.append(array)
    y_train.append(1)

for i in paper:
    array = img_to_array(load_img(i, target_size=(64, 64)))
    X_train.append(array)
    y_train.append(0)

X_train = np.array(X_train)
y_train = np.array(y_train)

classifier.fit(X_train, y_train,  batch_size=20, epochs=100)

我知道ResNet和其他类似的体系结构,但是我需要检测自定义对象。

0 个答案:

没有答案