List

1. Menyiapkan data

Pada artikel sebelumnya kita menggunakan CNN untuk mendeteksi wajah ( Link ) dan Menggunakan SVM untuk clasifikasi kucing atau anjing ( Link ).

Pada kesempatan ini kita akan melakukan klasifikasi wajah Leonel Messi dan Cristiano Ronaldo. Pertama kita akan mencari beberapa wajah keduanya dari internet. Kemudian memotong bagian dari wajah, dengan menggunakan program [ link ] atau [ link ]. Kemudian kita simpan dalam sebuah direktori.

Messi diambil dari beberapa link berikut:

  1. https://s.hs-data.com/bilder/spieler/gross/26622.jpg
  2. https://thumbor.forbes.com/thumbor/fit-in/416×416/filters%3Aformat%28jpg%29/https%3A%2F%2Fspecials-images.forbesimg.com%2Fimageserve%2F5ec595d45f39760007b05c07%2F0x0.jpg%3Fbackground%3D000000%26cropX1%3D989%26cropX2%3D2480%26cropY1%3D74%26cropY2%3D1564
  3. https://akcdn.detik.net.id/community/media/visual/2020/02/28/7ea23dda-2b72-4d8c-921d-4c31580c11f7.jpeg?w=700&q=80

Simpan dengan nama m.1.jpg, m.2.jpg, dan seterusnya

Sedangkan Cristiano Ronaldo diambil dari beberapa link berikut ini:

  1. https://gilabola.com/wp-content/uploads/2020/08/Ada-Ronaldo-Juventus-Bisa-Kalahkan-Lyon.jpg
  2. https://en.as.com/en/imagenes/2019/09/24/football/1569310945_447431_noticia_normal.jpg
  3. https://akcdn.detik.net.id/community/media/visual/2020/02/25/00dd7073-d4cd-4a2f-9d4c-392d5f3295cc.jpeg?w=700&q=80

Simpan dengan nama r.1.jpg, r.2.jpg, dan seterusnya

Setiap direktori akan kita beri label sesuai dengan mengubah nama menjadi kode, seperti berikut ini:

NoNamaKode
1Leonel Messi1
2Ronaldo2

2. Membaca Data

Buatlah kode program python dengan nama cnn_1.py

#Sumber : https://github.com/sumedhkulkarni7/Image-Classification-using-CNN-Keras-and-Tensorflow-in-Python/blob/master/NN_project.ipynb from keras.models import Sequential from keras.layers import Conv2D from keras.layers import MaxPooling2D from keras.layers import Flatten from keras.layers import Dense # Inisialisasi CNN classifier = Sequential() classifier.add(Conv2D(32, (3, 3), input_shape = (64, 64, 3), activation = 'relu')) classifier.add(MaxPooling2D(pool_size = (2, 2))) classifier.add(Conv2D(32, (3, 3), activation = 'relu')) classifier.add(MaxPooling2D(pool_size = (2, 2))) classifier.add(Flatten()) classifier.add(Dense(units = 128, activation = 'relu')) classifier.add(Dense(units = 1, activation = 'sigmoid')) classifier.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy']) 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/training_set', target_size=(64, 64), batch_size=32, class_mode='binary') test_set = test_datagen.flow_from_directory('dataset/test_set', target_size=(64, 64), batch_size=32, class_mode='binary')

Semua file disimpan dalam nama m.1.jpg, pada bagian ini kita memotong 3 karakter dari nama file sehingga menjadi m.1. Kemudian kita mengelompokkan file berdasarkan m atau r atau karakter lain kemudian memberi label. Pada bagian ini kita memberi label messi dengan angka 0 dan memberi label ronaldo dengan angka 1

3. Melakukan Tes Data

classifier.fit_generator(training_set, steps_per_epoch=(2336/32), epochs = 32, validation_data=test_set, validation_steps=(549/32)) import numpy as np from keras.preprocessing import image test_image = image.load_img('dataset/prediction/1.jpg', target_size=(64, 64)) test_image = image.img_to_array(test_image) test_image = np.expand_dims(test_image, axis = 0) result = classifier.predict(test_image) training_set.class_indices if result[0][0] == 1: prediction = 'Messi' else: prediction = 'Ronaldo' print(prediction)