APLIKASI UAS : MEMBUKA KEAMANAN PINTU RUMAH BERDASARKAN AUTHENTIFIKASI POLA WAJAH MENGGUNAKAN CONVOLUTIONAL NEURAL NETWORKS PADA VISUAL STUDIO PROTEUS

Neural Network

Referensi :  Deep Learning: Convolutional Neural Networks (Mega Bagus Herlambang)
           
 
                   
Memahami algoritma machine learning Convolutional Neural Network


                2. Alat dan Bahan [back]
Alat yang digunakan pada pembelajaran ini adalah python pada percobaan ini kita menggunakan spyder sebagai platform open sourcenya

Komponen
  • arduino

  • sensor pir

                                                   



  • motor servo

  • LCD I2C

  • LED


  • Buzzer

  • Relay

  • Transistor

  • Resistor

  • Lampu

  • Sumber AC

  • Logic State




                3. Dasar Teori [back]


Python


python dibuat pertama kali oleh Guido van Rossum di tahun 1991. Saat ini ada 2 versi, yaitu python 2 dan python 3. Versi yang terbaru adalah versi yang ketiga.

Python dapat digunakan sebagai berikut :

  1. Pengembangan aplikasi web dan seluler back end (atau sisi server)
  2. Pengembangan aplikasi atau perangkat lunak untuk dekstop
  3. Memproses data besar dan melakukan perhitungan matematis
  4. Menulis skrip sistem (membuat instruksi yang memberitahu sistem komputer untuk “melakukan” sesuatu)


Neural Network

Neural networks/Jaringan syaraf tiruan merupakan salah satu representasi buatan dari otak manusia yang selalu mencoba untuk mensimulasikan proses pembelajaran pada otak manusia tersebut, di implementasikan dengan program computer
Arsitektur sebuah neural networks


sebuah neural network (NN) terbagi menjadi tiga bagian, yaitu input, neuron (hidden layer) dan output.


Convolutional Neural Network

Convolutional Neural Network (CNN) yang  adalah salah satu jenis neural network yang biasa digunakan pada data image atau video. CNN bisa digunakan untuk mendeteksi dan mengenali object pada sebuah image atau video. CNN adalah sebuah teknik yang terinspirasi dari cara manusia, menghasilkan persepsi visual

Tahapan pada CNN 



  1. Convolution
    Convolusi merupakan proses pengalian matriks input dengan feature detector yang akan menghasilkan feature map, konvolusi layer adalah gabungan dari beberaoa feature map




  2. Max Pooling
    Teknik ini melakukan proses pencarian fitur yang sudah didapat di tahap sebelumnya, yaitu convolution. Dari hasil convolutional layer ini, teknik max pooling mencari fitur dengan tetap mempertahankan fleksibilitas yang tinggi. Ia tidak peduli apakah gambarnya miring ke kiri, kanan, diputar, dikecilkan, dibesarkan, berbeda teksturnya, warnanya dan lain sebagainya. Ia hanya peduli dengan fitur yang ia cari.




  3. Flattening

    Tahapan flattening adalah merubah dari matriks yang ada di pooling layer menjadi satu kolom saja (sebuah vektor tunggal). 



Full Connection
Full Conection adalah tahap dimana semua nodes harus terhubung dengan nodes di depan dan belakangnya



  • Arduino

Arduino adalah kit elektronik atau papan rangkaian elektronik open source yang di dalamnya terdapat komponen utama yaitu sebuah chip mikrokontroler dengan jenis AVR dari perusahaan Atmel. Arduino yang kita gunakan dalam praktikum ini adalah Arduino Uno yang menggunakan chip AVR ATmega 328P. Dalam memprogram Arduino, kita bisa menggunakan komunikasi serial agar Arduino dapat berhubungan dengan komputer ataupun perangkat lain.
Adapun spesifikasi dari Arduino Uno ini adalah sebagai berikut :


Microcontroller                                     ATmega328P
Operating Voltage                                5 V
Input Voltage (recommended)             7 – 12 V
Input Voltage (limit)                             6 – 20 V
Digital I/O Pins                                    14 (of which 6 provide PWM output)
PWM Digital I/O Pins                           6
Analog Input Pins                                 6
DC Current per I/O Pin                        20 mA
DC Current for 3.3V Pin                      50 mA
Flash Memory                                     32 KB of which 0.5 KB used by bootloader
SRAM                                                  2 KB
EEPROM                                             1 KB
Clock Speed                                        16 MHz
Bagian-bagian Arduino UNO :

Power USB
Digunakan untuk menghubungkan Papan Arduino dengan komputer lewat koneksi USB.
Power Jack
Supply atau sumber listrik untuk Arduino dengan tipe Jack. Input DC 5 - 12 V.

Crystal Oscillator
Kristal ini digunakan sebagai layaknya detak jantung pada Arduino.
Jumlah cetak menunjukkan 16000 atau 16000 kHz, atau 16 MHz.

Reset
Digunakan untuk mengulang program Arduino dari awal atau Reset.

Digital Pins I / O
Papan Arduino UNO memiliki 14 Digital Pin. Berfungsi untuk memberikan nilai logika ( 0 atau 1 ). Pin berlabel " ~ " adalah pin-pin PWM ( Pulse Width Modulation ) yang dapat digunakan untuk menghasilkan PWM.

Analog Pins
Papan Arduino UNO memiliki 6 pin analog A0 sampai A5. Digunakan untuk membaca sinyal atau sensor analog seperti sensor jarak, suhu dsb, dan mengubahnya menjadi nilai digital.

LED Power IndicatorLampu ini akan menyala dan menandakan Papan Arduino mendapatkan supply listrik dengan baik.


  • Sensor PIR


Pancaran infra merah masuk melalui lensa Fresnel dan mengenai sensor pyroelektrik, karena sinar infra merah mengandung energi panas maka sensor pyroelektrik akan menghasilkan arus listrik. Arus listrik inilah yang akan menimbulkan tegangan dan dibaca secara analog oleh sensor. Kemudian sinyal ini akan dikuatkan oleh penguat dan dibandingkan oleh komparator dengan tegangan referensi tertentu Untuk manusia sendiri memiliki suhu badan yang dapat menghasilkan pancaran infra merah dengan panjang gelombang antara 9-10 mikrometer (nilai standar 9,4 mikrometer), panjang gelombang tersebut dapat terdeteksi oleh sensor PIR. (Secara umum sensor PIR memang dirancang untuk mendeteksi manusia)
dimana sensor ini  membutuhkan tegangan masukan sebesar 5 Vdc
The PIR sensor sendiri memiliki dua slot di dalamnya, setiap slot terbuat dari bahan khusus 
PIR (Passive Infrared Receiver) merupakan sebuah sensor berbasiskan infrared. Di dalam sensor 
PIR ini terdapat bagianbagian yang mempunyai perannya masingmasing, 
yaitu Fresnel Lens, IR Filter, Pyroelectric sensor, amplifier, dan comparator. 
Seperti terlihat pada gambar 2 dibawahini. 
sensor PIR pada saat berlogika 1 dan 0. Pengujian ini juga diperlukan untuk mengetahui 
nilai tegangan output sensor passive infrared (PIR) ketika mendeteksi gerakan manusia dan tidak mendeteksi gerakan manusia. 
Cara melakukan pengujian ini adalah sensor harus mendapat tegangan input sebesar 5 Vdc.



(1) deteksi sudut 120 derajat.
(2) kisaran deteksi 7m.
(3) ukuran: 32x24mm
(4) output sinyal switch TTL output sinyal tinggi (3.3 V), output sinyal rendah (0.4 V).
(5) waktu pemicu dapat disesuaikan 0,3 detik hingga 10 menit.
(6) umum digunakan dalam perangkat anti-pencurian dan peralatan lainnya.
(7) modul telah dipaksa untuk mengatur bekerja memicu dapat digunakan kembali
(8) tegangan kerja 4,5 untuk 20V

  • Motor Servo


Motor Servo merupakan motor listrik dengan menggunakan sistem closed loop. Sistem tersebut digunakan untuk mengendalikan akselerasi dan kecepatan pada sebuah motor listrik dengan keakuratan yang tinggi.

Selain itu, motor servo biasa digunakan untuk mengubah energi listrik menjadi mekanik melalui interaksi dari kedua medan magnet permanent.

Pada umumnya, motor servo terdiri dari tiga komponen utama yaitu:

  • Moto
  • Sistem kontrol
  • Potensiometer atau encoder.

Motor berfungsi sebagai penggerak roda gigi agar dapat memutar potensiometer dan poros output-nya secara bersamaan.

Jenis Motor Servo Berdasarkan Arusnya

Pada umunya motor servo dapat terbagi menjadi dua jenis berdasarkan beban arusnya, yaitu:

Motor Servo AC

Motor Servo AC merupakan jenis yang dapat menangani tegangan arus listrik yang tinggi atau beban berat.

Motor servo AC sangat cocok diaplikasikan pada mesin-mesin industri yang bertujuan untuk dapat mengendalikannya.

Motor Servo DC



Motor servo DC merupakan jenis yang hanya dapat menangani tegangan arus dan beban yang lebih kecil.

Sehingga motor servo DC cocok diaplikasikan pada mesin-mesin kecil seperti mobil dan pesawat remote control.

  • Relay

     


                            Relay merupakan komponen elektronika berupa saklar atau switch elektrik yang dioperasikan secara listrik dan terdiri dari 2 bagian utama yaitu Elektromagnet (coil) dan mekanikal (seperangkat kontak Saklar/Switch). Komponen elektronika ini menggunakan prinsip elektromagnetik untuk menggerakan saklar sehingga dengan arus listrik yang kecil (low power) dapat menghantarkan listrik yang bertegangan lebih tinggi. Berikut adalah simbol dari komponen relay.

     

    Fungsi Relay

                Seperti yang telah di jelaskan tadi bahwa relay memiliki fungsi sebagai saklar elektrik, namun jika di aplikasikan ke dalam rangkaian elektronika, relay memiliki beberapa fungsi yang cukup unik. Berikut beberapa fungsi saat di aplikasikan ke dalam sebuah rangkaian elektronika.

    1.     Mengendalikan sirkuit tegangan tinggi dengan menggunakan bantuan signal tegangan rendah.

    2.     Menjalankan logic function atau fungsi logika.

    3.     Memberikan time delay function atau fungsi penundaan waktu.

    4.     Melindungi motor atau komponen lainnya dari korsleting atau kelebihan tegangan.

    Prinsip kerja

                       Ketika kumparan coil di berikan arus listrik, maka akan timbul gaya elektromagnet sehingga akan menarik Armature berpindah posisi yang awalnya NC(tertutup) ke posisi NO(terbuka) sehingga menjadi saklar yang dapat menghantarkan arus listrik di posisi NO. Posisi Armature yang tadinya dalam kondisi CLOSE akan menjadi OPEN atau terhubung. Armature akan kembali keposisi CLOSE saat tidak dialiri listrik. Coil yang digunakan untuk menarik Contact Point ke posisi CLOSE umunnya hanyak membutuhkan arus llistrik yang relatif kecil


  • LCD (Liquid Crystal Display)
Liquid Crystal Display (LCD) adalah sebuah peralatan elektronik yang berfungsi untuk menampilkan output sebuah sistem dengan cara membentuk suatu citra atau gambaran pada sebuah layar. 

Secara garis besar komponen penyusun LCD terdiri dari kristal cair (liquid crystal) yang diapit oleh 2 buah elektroda transparan dan 2 buah filter polarisasi (polarizing filter).


Gambar Penampang komponen penyusun LCD
Keterangan:
1. Film dengan polarizing filter vertical untuk memolarisasi cahaya yang masuk.
2. Glass substrate yang berisi kolom-kolom elektroda Indium tin oxide (ITO).
3. Twisted nematic liquid crystal (kristal cair dengan susunan terpilin).
4. Glass substrate yang berisi baris-baris elektroda Indium tin oxide (ITO).
5. Film dengan polarizing filter horizontal untuk memolarisasi cahaya yang masuk.
6. Reflektor cahaya untuk memantulkan cahaya yang masuk LCD kembali ke mata pengamat.

Sebuah citra dibentuk dengan mengombinasikan kondisi nyala dan mati dari pixel-pixel yang menyusun layar sebuah LCD. Pada umumnya LCD yang dijual di pasaran sudah memiliki integrated circuit tersendiri sehingga para pemakai dapat mengontrol tampilan LCD dengan mudah dengan menggunakan mikrokontroler untuk mengirimkan data melalui pin-pin input yang sudah tersedia.



Kaki-kaki yang terdapat pada LCD
  • Transistor 


    2N2222 adalah transistor bipolar JUNCTION (BJT) NPN yang umum digunakan untuk aplikasi penguat atau pengalih daya rendah. Ini dirancang untuk arus rendah hingga sedang, daya rendah, tegangan menengah, dan dapat beroperasi pada kecepatan cukup tinggi. Ini awalnya dibuat dalam logam TO-18 seperti yang ditunjukkan pada gambar. 2N2222 dianggap sebagai transistor yang sangat umum, dan digunakan sebagai contoh transistor NPN. Hal ini sering digunakan sebagai transistor sinyal kecil,  dan tetap menjadi transistor tujuan umum kecil yang bertahan lama.

                                     
  • Buzzer 

    Buzzer adalah sebuah komponen elektronika yang berfungsi untuk mengubah getaran listrik menjadi getaran suara getaran listrik menjadi getaran suara. Pada dasarnya prinsip kerja buzzer hampir sama dengan loudspeaker, jadi buzzer juga terdiri dari kumparan yang terpasang pada diafragma dan kemudian kumparan tersebut dialiri arus sehingga menjadi elektromagnet, kumparan tadi akan tertarik ke dalam atau keluar, tergantung dari arah arus dan polaritas magnetnya, karena kumparan dipasang pada diafragma maka setiap gerakan kumparan akan menggerakkan diafragma secara bolak-balik sehingga membuat udara bergetar yang akan menghasilkan suara. Buzzer biasa digunakan sebagai indikator bahwa proses telah selesai atau terjadi suatu kesalahan pada sebuah alat (alarm)

  • LED (Light Emitting Diode)
        LED adalah suatu semikonduktor yang memancarkan cahaya, LED mempunyai kecenderungan polarisasi. LED mempunyai kutub positif dan negatif (p-n) dan hanya akan menyala bila diberikan arus maju. Ini dikarenakan LED terbuat dari bahan semikonduktor yang hanya akan mengizinkan arus listrik mengalir ke satu arah dan tidak ke arah sebaliknya. Bila LED diberikan arus terbalik, hanya akan ada sedikit arus yang melewati LED. Ini menyebabkan LED tidak akan mengeluarkan emisi cahaya.


  • Resistor 
     


    Resistor merupakan komponen elektronik yang memiliki dua pin dan didesain untuk mengatur tegangan listrik dan arus listrik. Resistor mempunyai nilai resistansi (tahanan) tertentu yang dapat memproduksi tegangan listrik di antara kedua pin dimana nilai tegangan terhadap resistansi tersebut berbanding lurus dengan arus yang mengalir.


  •  Logicstate

Pengertian logis, benar atau salah, dari sinyal biner yang diberikan.Sinyal biner adalah sinyal digital yang hanya memiliki dua nilai yang valid. Dalam istilah fisik, pengertian logis dari sinyal biner ditentukan oleh level tegangan atau nilai arus sinyal, dan ini pada gilirannya ditentukan oleh teknologi perangkat. Dalam sirkuit TTL, misalnya, keadaan sebenarnya diwakili oleh logika 1, kira-kira sama dengan +5 volt pada garis sinyal; logika 0 kira-kira 0 volt. Tingkat tegangan antara 0 dan +5 volt dianggap tidak ditentukan.
Karena hanya dua status logika, logika 1 dan logika 0, yang dimungkinkan, teknik aljabar Boolean dapat digunakan untuk menganalisis rangkaian digital yang melibatkan sinyal biner. Istilah logika positif diterapkan ke sirkuit di mana logika 1 ditetapkan ke level tegangan yang lebih tinggi; Dalam rangkaian logika negatif, logika 1 ditunjukkan dengan level tegangan yang lebih rendah.Lihat juga logika multinilai.

  •   Sumber AC

    Sumber arus listrik AC kependekan dari Alternating Current, dikenal dengan arus bolak-balik karena merupakan sumber arus yang dihasilkan oleh generator dan PLN. Arus AC ini dikatakan bolak-balik karena arus yang mengalir tidak tetap yaitu dari positif ke negatif dan dari negatif ke positif. Arus listrik AC akan membentuk suatu gelombang yang dinamakan dengan gelombang sinus atau lebih lengkapnya sinusoida. Di Indonesia sendiri listrik bolak-balik (AC) dipelihara dan berada dibawah naungan PLN, Indonesia menerapkan listrik bolak-balik dengan frekuensi 50Hz. Tegangan standar yang diterapkan di Indonesia untuk listrik bolak-balik 1 (satu) fasa adalah 220 volt.

  • Lampu

    Lampu Listrik adalah suatu perangkat yang dapat menghasilkan cahaya saat dialiri arus listrik.Arus listrik yang dimaksud ini dapat berasal tenaga listrik yang dihasilkan oleh pembangkit listrik terpusat (Centrally Generated Electric Power) seperti PLN dan Genset ataupun tenaga listrik yang dihasilkan oleh Baterai dan Aki.

    Simbol lampu :

    Seiring dengan perkembangan Teknologi, Lampu Listrik juga telah mengalami berbagai perbaikan dan  kemajuan. Teknologi Lampu Listrik bukan saja Lampu Pijar yang ditemukan oleh Thomas Alva Edison saja namun sudah terdiri dari berbagai jenis dan Teknologi. Pada dasarnya, Lampu Listrik dapat dikategorikan dalam Tiga jenis yaitu Incandescent Lamp (Lampu Pijar), Gas-discharge Lamp (Lampu Lucutan Gas) dan Light Emitting Diode (Lampu LED).

                  4. Percobaan (Contoh) [back]

Kasus CNN : KLASIFIKASI POLA WAJAH

Dataset terbagi menjadi data latih dan data uji. Masing-masing terbagi menjadi kategori data gambar pria dan wanita, yang memiliki ukuran berbeda-beda yang akan diubah resolusinya menjadi 96x96. Dataset yang kita miliki semuanya adalah gambar dengan format jpg. Kita memiliki 1173 gambar Pria dan 1134 gambar wanita untuk training set. Jadi secara ringkas kita memiiki 2307 data untuk training set dan Berikut merupakan beberapa gambar dataset pria dan wanita






berikut merupakan list program untuk training

from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.preprocessing.image import img_to_array
from tensorflow.keras.utils import to_categorical, plot_model
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import BatchNormalization, Conv2D, MaxPooling2D, Activation, Flatten, Dropout, Dense
from tensorflow.keras import backend as K
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
import numpy as np
import random
import cv2
import os
import glob

# initial parameters
epochs = 100
lr = 1e-3
batch_size = 64
img_dims = (96,96,3)

data = []
labels = []

# load image files from the dataset
image_files = [f for f in glob.glob(r'C:\Users\adhan\gender_dataset_face' + "/**/*", recursive=True) if not os.path.isdir(f)]
random.shuffle(image_files)

# converting images to arrays and labelling the categories
for img in image_files:

    image = cv2.imread(img)
    
    image = cv2.resize(image, (img_dims[0],img_dims[1]))
    image = img_to_array(image)
    data.append(image)

    label = img.split(os.path.sep)[-2] # C:\Files\gender_dataset_face\woman\face_1162.jpg
    if label == "woman":
        label = 1
    else:
        label = 0
        
    labels.append([label]) # [[1], [0], [0], ...]

# pre-processing
data = np.array(data, dtype="float") / 255.0
labels = np.array(labels)

# split dataset for training and validation
(trainX, testX, trainY, testY) = train_test_split(data, labels, test_size=0.2,
                                                  random_state=42)

trainY = to_categorical(trainY, num_classes=2) # [[1, 0], [0, 1], [0, 1], ...]
testY = to_categorical(testY, num_classes=2)

# augmenting datset 
aug = ImageDataGenerator(rotation_range=25, width_shift_range=0.1,
                         height_shift_range=0.1, shear_range=0.2, zoom_range=0.2,
                         horizontal_flip=True, fill_mode="nearest")

# define model
def build(width, height, depth, classes):
    model = Sequential()
    inputShape = (height, width, depth)
    chanDim = -1

    if K.image_data_format() == "channels_first": #Returns a string, either 'channels_first' or 'channels_last'
        inputShape = (depth, height, width)
        chanDim = 1
    
    # The axis that should be normalized, after a Conv2D layer with data_format="channels_first", 
    # set axis=1 in BatchNormalization.

    model.add(Conv2D(32, (3,3), padding="same", input_shape=inputShape))
    model.add(Activation("relu"))
    model.add(BatchNormalization(axis=chanDim))
    model.add(MaxPooling2D(pool_size=(3,3)))
    model.add(Dropout(0.25))

    model.add(Conv2D(64, (3,3), padding="same"))
    model.add(Activation("relu"))
    model.add(BatchNormalization(axis=chanDim))

    model.add(Conv2D(64, (3,3), padding="same"))
    model.add(Activation("relu"))
    model.add(BatchNormalization(axis=chanDim))
    model.add(MaxPooling2D(pool_size=(2,2)))
    model.add(Dropout(0.25))

    model.add(Conv2D(128, (3,3), padding="same"))
    model.add(Activation("relu"))
    model.add(BatchNormalization(axis=chanDim))

    model.add(Conv2D(128, (3,3), padding="same"))
    model.add(Activation("relu"))
    model.add(BatchNormalization(axis=chanDim))
    model.add(MaxPooling2D(pool_size=(2,2)))
    model.add(Dropout(0.25))

    model.add(Flatten())
    model.add(Dense(1024))
    model.add(Activation("relu"))
    model.add(BatchNormalization())
    model.add(Dropout(0.5))

    model.add(Dense(classes))
    model.add(Activation("sigmoid"))

    return model

# build model
model = build(width=img_dims[0], height=img_dims[1], depth=img_dims[2],
                            classes=2)

# compile the model
opt = Adam(lr=lr, decay=lr/epochs)
model.compile(loss="binary_crossentropy", optimizer=opt, metrics=["accuracy"])

# train the model
H = model.fit_generator(aug.flow(trainX, trainY, batch_size=batch_size),
                        validation_data=(testX,testY),
                        steps_per_epoch=len(trainX) // batch_size,
                        epochs=epochs, verbose=1)

# save the model to disk
model.save('gender_detection.model')

# plot training/validation loss/accuracy
plt.style.use("ggplot")
plt.figure()
N = epochs
plt.plot(np.arange(0,N), H.history["loss"], label="train_loss")
plt.plot(np.arange(0,N), H.history["val_loss"], label="val_loss")
plt.plot(np.arange(0,N), H.history["acc"], label="train_acc")
plt.plot(np.arange(0,N), H.history["val_acc"], label="val_acc")

plt.title("Training Loss and Accuracy")
plt.xlabel("Epoch #")
plt.ylabel("Loss/Accuracy")
plt.legend(loc="upper right")

# save plot to disk
plt.savefig('plot.png')



dan berikut merupakan program untuk menjalan dengan webcam

from tensorflow.keras.preprocessing.image import img_to_array
from tensorflow.keras.models import load_model
import numpy as np
import cv2
import os
import cvlib as cv
                    
# load model
model = load_model('gender_detection.model')

# open webcam
webcam = cv2.VideoCapture(0)
    
classes = ['man','woman']

# loop through frames
while webcam.isOpened():

    # read frame from webcam 
    status, frame = webcam.read()

    # apply face detection
    face, confidence = cv.detect_face(frame)


    # loop through detected faces
    for idx, f in enumerate(face):

        # get corner points of face rectangle        
        (startX, startY) = f[0], f[1]
        (endX, endY) = f[2], f[3]

        # draw rectangle over face
        cv2.rectangle(frame, (startX,startY), (endX,endY), (0,255,0), 2)

        # crop the detected face region
        face_crop = np.copy(frame[startY:endY,startX:endX])

        if (face_crop.shape[0]) < 10 or (face_crop.shape[1]) < 10:
            continue

        # preprocessing for gender detection model
        face_crop = cv2.resize(face_crop, (96,96))
        face_crop = face_crop.astype("float") / 255.0
        face_crop = img_to_array(face_crop)
        face_crop = np.expand_dims(face_crop, axis=0)

        # apply gender detection on face
        conf = model.predict(face_crop)[0] # model.predict return a 2D matrix, ex: [[9.9993384e-01 7.4850512e-05]]

        # get label with max accuracy
        idx = np.argmax(conf)
        label = classes[idx]

        label = "{}: {:.2f}%".format(label, conf[idx] * 100)

        Y = startY - 10 if startY - 10 > 10 else startY + 10

        # write label and confidence above face rectangle
        cv2.putText(frame, label, (startX, Y),  cv2.FONT_HERSHEY_SIMPLEX,
                    0.7, (0, 255, 0), 2)

    # display output
    cv2.imshow("gender detection", frame)

    # press "Q" to stop
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# release resources
webcam.release()
cv2.destroyAllWindows()

Hasil :





flowchart rangkaian


Rangkaian







                5. Video Pembelajaran [back]




  
                  6. Link Download [back]

Dowload Code Python CNN : download
Download Data Set CNN   : download




No comments:

Post a Comment