[파이썬] Keras 실시간 이미지 분류

Keras is a high-level deep learning library that allows you to easily build and train neural network models. In this blog post, we will explore how to use Keras for real-time image classification using Python.

1. Install Required Libraries

Before we start, make sure you have Python installed on your system. You will also need the following libraries:

You can install these libraries using pip:

pip install keras tensorflow

2. Prepare the Data

Before training a model, we need to prepare the data. For image classification, we typically have a dataset consisting of images and their corresponding labels. In this example, let’s assume we have a dataset of cats and dogs images.

Create a folder named dataset and create two subfolders inside it, cats and dogs. Place the corresponding cat and dog images in their respective folders.

3. Load and Preprocess the Data

We will use the ImageDataGenerator class from Keras to load and preprocess the data. This class provides the ability to load images from the disk and perform various image augmentation techniques.

Here is an example of loading and preprocessing 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)

train_generator = train_datagen.flow_from_directory(
        'dataset',
        target_size=(150, 150),
        batch_size=32,
        class_mode='binary')

In the above code, we create an instance of ImageDataGenerator with specified pre-processing options. Then, we use the flow_from_directory method to load the images from the dataset folder and generate batches of augmented image data.

4. Build the Model

Next, we will build our model using Keras. We will use a simple Convolutional Neural Network (CNN) architecture for image classification.

Here is an example of building a CNN model:

from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D, Flatten, Dense

model = Sequential()
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(150, 150, 3)))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D((2, 2)))
model.add(Flatten())
model.add(Dense(512, activation='relu'))
model.add(Dense(1, activation='sigmoid'))

model.compile(loss='binary_crossentropy',
              optimizer='rmsprop',
              metrics=['accuracy'])

In the above code, we create a sequential model and add various layers including convolutional, max pooling, and dense layers. The last layer uses the sigmoid activation function for binary classification.

5. Train the Model

Now that we have prepared the data and built the model, it’s time to train our model using the prepared data.

Here is an example of training the model:

model.fit(
        train_generator,
        steps_per_epoch=2000,
        epochs=50)

In the above code, we use the fit method of the model to train the model using the train_generator we created earlier. We specify the number of steps per epoch and the number of epochs to train the model.

6. Evaluate the Model

After training the model, we can evaluate its performance on new, unseen data. We can use the test data for this purpose.

Here is an example of evaluating the model:

test_datagen = ImageDataGenerator(rescale=1./255)

test_generator = test_datagen.flow_from_directory(
        'test_dataset',
        target_size=(150, 150),
        batch_size=32,
        class_mode='binary')

test_loss, test_acc = model.evaluate(test_generator)

print('Test accuracy:', test_acc)

In the above code, we create a new ImageDataGenerator instance for the test data and use the flow_from_directory method to load the test data. Then, we evaluate the model using the evaluate method and print the test accuracy.

Conclusion

In this blog post, we explored how to use Keras for real-time image classification in Python. We learned about preparing the data, loading and preprocessing the images, building a CNN model, training the model, and evaluating the performance. Using Keras, it becomes much easier to perform image classification tasks.