ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CNN Model 만들어 보기
    Keras 2017. 12. 30. 12:18

    그림판을 이용하여 직접 만든 이미지를 분류하는 과정을 다루면 다음과 같다. 저자가 제공한 circle 20개, retangle20개, triangle 20개 png에 내가 추가로 만든 circle 20개, retangle 20개, triangle 20개를 사용하였다.


    train이라는 폴더에 circle, retangle, triangle 폴더를 만들고, 각각의 폴더에 30개의 png 그래프를 저장하고,
    test라는 폴더에도 circle, retangle, triangle 폴더를 만들고, 각각의 폴더에 10개의 png 그래프를 저장하였다.


    import numpy as np
    from keras.models import Sequential
    from keras.layers import Dense
    from keras.layers import Flatten
    from keras.layers.convolutional import Conv2D
    from keras.layers.convolutional import MaxPooling2D
    from keras.preprocessing.image import ImageDataGenerator
    from keras.utils.vis_utils import model_to_dot
    from IPython.display import SVG

    %matplotlib inline


    # 1. 데이터 생성하기
    train_datagen = ImageDataGenerator(rescale = 1.0 / 255)
    train_generator = train_datagen.flow_from_directory(directory = "c:/keras/train/",
    target_size = (24, 24),
    batch_size = 3,
    class_mode = "categorical")

    test_datagen = ImageDataGenerator(rescale = 1.0 / 255)
    test_generator = test_datagen.flow_from_directory(directory = "c:/keras/test/",
    target_size = (24, 24),
    batch_size = 3,
    class_mode = "categorical")


    # 2. 모델 구성하기
    model = Sequential()
    model.add(Conv2D(32, kernel_size = (3, 3), activation = "relu", input_shape = (24, 24, 3)))
    model.add(MaxPooling2D(pool_size = (2, 2)))
    model.add(Flatten())
    model.add(Dense(128, activation = "relu"))
    model.add(Dense(3, activation = "softmax"))


    # 3. 모델 학습과정 설정하기
    model.compile(loss = "categorical_crossentropy", optimizer = "adam", metrics = ["accuracy"])


    # 4. 모델 학습시키기
    model.fit_generator(train_generator, steps_per_epoch = 15, epochs = 50, validation_data = test_generator, validation_steps = 5)


    # 5. 모델 평가하기
    print("-- Evaluate --")
    scores = model.evaluate_generator(test_generator, steps = 5)
    print("%s: %.2f%%" %(model.metrics_names[1], scores[1]*100))

    자동 대체 텍스트를 사용할 수 없습니다.


    # 6. 모델 사용하기
    print("-- Predict --")
    output = model.predict_generator(test_generator, steps = 5)
    np.set_printoptions(formatter = {"float":lambda x: "{0:0.3f}".format(x)})
    print(test_generator.class_indices)
    print(output)

    이미지: 텍스트


    [출처] 블록과 함께하는 파이썬 딥러닝 케라스, 김태영 지음, DigitalBooks, p125~134


Designed by Tistory.