Daftar Isi:

Pengenalan Wajah Real-time: Proyek End-to-end: 8 Langkah (dengan Gambar)
Pengenalan Wajah Real-time: Proyek End-to-end: 8 Langkah (dengan Gambar)

Video: Pengenalan Wajah Real-time: Proyek End-to-end: 8 Langkah (dengan Gambar)

Video: Pengenalan Wajah Real-time: Proyek End-to-end: 8 Langkah (dengan Gambar)
Video: Python Project - Face Recognition | Compare Two Image Face - Pengenalan wajah dengan python 2024, November
Anonim
Pengenalan Wajah Real-time: Proyek ujung ke ujung
Pengenalan Wajah Real-time: Proyek ujung ke ujung

Pada tutorial terakhir saya menjelajahi OpenCV, kami belajar AUTOMATIC VISION OBJECT TRACKING. Sekarang kita akan menggunakan PiCam untuk mengenali wajah secara real-time, seperti yang Anda lihat di bawah ini:

Gambar
Gambar

Proyek ini dilakukan dengan "Perpustakaan Visi Komputer Sumber Terbuka" yang fantastis ini, OpenCV. Pada tutorial ini, kita akan fokus pada Raspberry Pi (jadi, Raspbian sebagai OS) dan Python, tetapi saya juga menguji kode di My Mac dan juga berfungsi dengan baik. OpenCV dirancang untuk efisiensi komputasi dan dengan fokus yang kuat pada aplikasi waktu nyata. Jadi, ini sempurna untuk pengenalan wajah waktu nyata menggunakan kamera.

Untuk membuat proyek lengkap pada Pengenalan Wajah, kita harus mengerjakan 3 fase yang sangat berbeda:

  1. Deteksi Wajah dan Pengumpulan Data
  2. Latih Pengenal
  3. Pengenalan Wajah

Diagram blok di bawah ini melanjutkan fase-fase tersebut:

Gambar
Gambar

Langkah 1: BoM - Bill of Material

Bagian utama:

  1. Raspberry Pi V3 - US$ 32.00
  2. 5 Megapiksel 1080p Sensor OV5647 Modul Video Kamera Mini - US$13.00

Langkah 2: Menginstal Paket OpenCV 3

Menginstal Paket OpenCV 3
Menginstal Paket OpenCV 3

Saya menggunakan Raspberry Pi V3 yang diperbarui ke versi terakhir Raspbian (Stretch), jadi cara terbaik untuk menginstal OpenCV, adalah mengikuti tutorial luar biasa yang dikembangkan oleh Adrian Rosebrock: Raspbian Stretch: Instal OpenCV 3 + Python di Raspberry Pi Anda.

Saya mencoba beberapa panduan berbeda untuk menginstal OpenCV di Pi saya. Tutorial Adrian adalah yang terbaik. Saya menyarankan Anda untuk melakukan hal yang sama, mengikuti panduannya selangkah demi selangkah.

Setelah Anda menyelesaikan tutorial Adrian, Anda harus memiliki lingkungan virtual OpenCV yang siap untuk menjalankan eksperimen kami di Pi Anda.

Mari masuk ke lingkungan virtual kita dan konfirmasikan bahwa OpenCV 3 telah terinstal dengan benar.

Adrian merekomendasikan menjalankan perintah "sumber" setiap kali Anda membuka terminal baru untuk memastikan variabel sistem Anda telah diatur dengan benar.

sumber ~/.profile

Selanjutnya, mari masuk ke lingkungan virtual kita:

kerja cv

Jika Anda melihat teks (cv) sebelum prompt Anda, maka Anda berada di lingkungan virtual cv:

(cv) pi@raspberry:~$Adrian meminta perhatian bahwa lingkungan virtual cv Python sepenuhnya independen dan diasingkan dari versi Python default yang disertakan dalam unduhan Raspbian Stretch. Jadi, paket Python apa pun di direktori paket situs global tidak akan tersedia untuk lingkungan virtual cv. Demikian pula, paket Python apa pun yang diinstal di paket situs cv tidak akan tersedia untuk instalasi global Python

Sekarang, masukkan juru bahasa Python Anda:

ular piton

dan konfirmasikan bahwa Anda menjalankan versi 3.5 (atau lebih tinggi)

Di dalam interpreter (">>>" akan muncul), impor perpustakaan OpenCV:

impor cv2

Jika tidak ada pesan kesalahan yang muncul, OpenCV telah diinstal dengan benar DI LINGKUNGAN VIRTUAL PYTHON ANDA.

Anda juga dapat memeriksa versi OpenCV yang diinstal:

cv2._versi_

3.3.0 akan muncul (atau versi superior yang dapat dirilis di masa mendatang). Terminal PrintScreen di atas menunjukkan langkah-langkah sebelumnya.

Langkah 3: Menguji Kamera Anda

Menguji Kamera Anda
Menguji Kamera Anda

Setelah Anda menginstal OpenCV di RPi Anda, mari kita uji untuk memastikan bahwa kamera Anda berfungsi dengan baik.

Saya berasumsi bahwa Anda sudah menginstal PiCam di Raspberry Pi Anda.

Masukkan kode Python di bawah ini pada IDE Anda:

impor numpy sebagai np

import cv2 cap = cv2. VideoCapture(0) cap.set(3, 640) # set Width cap.set(4,480) # set Height while(True): ret, frame = cap.read() frame = cv2. flip(bingkai, -1) # Membalik kamera secara vertikal abu-abu = cv2.cvtColor(bingkai, cv2. COLOR_BGR2GRAY) cv2.imshow('bingkai', bingkai) cv2.imshow('abu-abu', abu-abu) k = cv2.waitKey(30) & 0xff jika k == 27: # tekan 'ESC' untuk keluar dari break cap.release() cv2.destroyAllWindows()

Kode di atas akan menangkap aliran video yang akan dihasilkan oleh PiCam Anda, menampilkan keduanya, dalam mode warna BGR dan Abu-abu.

Perhatikan bahwa saya memutar kamera saya secara vertikal karena cara merakitnya. Jika ini bukan kasus Anda, beri komentar atau hapus baris perintah "flip".

Anda juga dapat mengunduh kode dari GitHub saya: simpleCamTest.py

Untuk mengeksekusi, masukkan perintah:

python simpleCamTest.py

Untuk menyelesaikan program, Anda harus menekan tombol [ESC] pada keyboard Anda.

Klik mouse Anda pada jendela video, sebelum menekan [ESC]

Gambar di atas menunjukkan hasilnya.

Beberapa pembuat menemukan masalah saat mencoba membuka kamera (pesan kesalahan "Pernyataan gagal"). Itu bisa terjadi jika kamera tidak diaktifkan selama instalasi OpenCv dan karenanya, driver kamera tidak diinstal dengan benar. Untuk mengoreksi, gunakan perintah:

sudo modprobe bcm2835-v4l2

Anda juga dapat menambahkan bcm2835-v4l2 ke baris terakhir file /etc/modules sehingga driver dimuat saat boot.

Untuk mengetahui lebih lanjut tentang OpenCV, Anda dapat mengikuti tutorial: loading -video-python-opencv-tutorial

Langkah 4: Deteksi Wajah

Deteksi wajah
Deteksi wajah
Deteksi wajah
Deteksi wajah

Tugas paling dasar di Face Recognition tentu saja, "Face Detecting". Sebelum apa pun, Anda harus "menangkap" wajah (Tahap 1) untuk mengenalinya, jika dibandingkan dengan wajah baru yang ditangkap di masa depan (Tahap 3).

Cara paling umum untuk mendeteksi wajah (atau objek apa pun), adalah menggunakan "pengklasifikasi Haar Cascade"

Deteksi Objek menggunakan pengklasifikasi kaskade berbasis fitur Haar adalah metode deteksi objek efektif yang diusulkan oleh Paul Viola dan Michael Jones dalam makalah mereka, "Deteksi Objek Cepat menggunakan Kaskade yang Ditingkatkan dari Fitur Sederhana" pada tahun 2001. Ini adalah pendekatan berbasis pembelajaran mesin di mana a fungsi cascade dilatih dari banyak gambar positif dan negatif. Ini kemudian digunakan untuk mendeteksi objek dalam gambar lain.

Di sini kita akan bekerja dengan deteksi wajah. Awalnya, algoritma membutuhkan banyak gambar positif (gambar wajah) dan gambar negatif (gambar tanpa wajah) untuk melatih pengklasifikasi. Maka kita perlu mengekstrak fitur darinya. Kabar baiknya adalah OpenCV hadir dengan pelatih dan juga detektor. Jika Anda ingin melatih pengklasifikasi Anda sendiri untuk objek apa pun seperti mobil, pesawat, dll. Anda dapat menggunakan OpenCV untuk membuatnya. Rincian lengkapnya diberikan di sini: Pelatihan Pengklasifikasi Kaskade.

Jika Anda tidak ingin membuat classifier sendiri, OpenCV sudah berisi banyak classifier yang telah dilatih sebelumnya untuk face, eyes, smile, dll. File XML tersebut dapat didownload dari direktori haarcascades.

Cukup teorinya, mari kita buat pendeteksi wajah dengan OpenCV!

Unduh file: faceDetection.py dari GitHub saya.

impor numpy sebagai np

import cv2 faceCascade = cv2. CascadeClassifier('Cascades/haarcascade_frontalface_default.xml') cap = cv2. VideoCapture(0) cap.set(3, 640) # set Width cap.set(4, 480) # set Height while True: ret, img = cap.read() img = cv2.flip(img, -1) abu-abu = cv2.cvtColor(img, cv2. COLOR_BGR2GRAY) wajah = faceCascade.detectMultiScale(abu-abu, scaleFactor=1.2, minNeighbors=5, minSize=(20, 20)) untuk (x, y, w, h) di wajah: cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2) roi_gray = abu-abu[y:y+h, x:x+w] roi_color = img[y:y+h, x:x+w] cv2.imshow('video', img) k = cv2.waitKey(30) & 0xff jika k == 27: # tekan 'ESC' untuk keluar dari break cap.release() cv2.destroyAllWindows()

Percaya atau tidak, hanya beberapa baris kode di atas yang Anda butuhkan untuk mendeteksi wajah, menggunakan Python dan OpenCV.

Ketika Anda membandingkan dengan kode terakhir yang digunakan untuk menguji kamera, Anda akan menyadari bahwa beberapa bagian ditambahkan ke dalamnya. Perhatikan baris di bawah ini:

faceCascade = cv2. CascadeClassifier('Cascades/haarcascade_frontalface_default.xml')

Ini adalah baris yang memuat "classifier" (yang harus berada di direktori bernama "Cascades/", di bawah direktori proyek Anda).

Kemudian, kami akan mengatur kamera kami dan di dalam loop, memuat video input kami dalam mode skala abu-abu (sama seperti yang kami lihat sebelumnya).

Sekarang kita harus memanggil fungsi classifier kita, melewati beberapa parameter yang sangat penting, seperti faktor skala, jumlah tetangga dan ukuran minimum dari wajah yang terdeteksi.

wajah = faceCascade.detectMultiScale(abu-abu, scaleFactor=1.2, minNeighbors=5, minSize=(20, 20))

Di mana,

  • abu-abu adalah gambar skala abu-abu input.
  • scaleFactor adalah parameter yang menentukan seberapa besar ukuran gambar dikurangi pada setiap skala gambar. Ini digunakan untuk membuat piramida skala.
  • minNeighbors adalah parameter yang menentukan berapa banyak tetangga yang harus dimiliki setiap kandidat persegi panjang, untuk mempertahankannya. Angka yang lebih tinggi memberikan positif palsu yang lebih rendah.
  • minSize adalah ukuran persegi panjang minimum untuk dianggap sebagai wajah.

Fungsinya akan mendeteksi wajah pada gambar. Selanjutnya, kita harus "menandai" wajah pada gambar, menggunakan, misalnya, persegi panjang biru. Ini dilakukan dengan bagian kode ini:

untuk (x, y, w, h) di wajah:

cv2.persegi panjang(img, (x, y), (x+w, y+h), (255, 0, 0), 2) roi_gray = abu-abu[y:y+h, x:x+w] roi_color = img[y:y+h, x:x+w]

Jika wajah ditemukan, ia mengembalikan posisi wajah yang terdeteksi sebagai persegi panjang dengan sudut kiri atas (x, y) dan memiliki "w" sebagai Lebar dan "h" sebagai Tinggi ==> (x, y, w, H). Silakan lihat gambar di atas.

Setelah kita mendapatkan lokasi ini, kita dapat membuat "ROI" (persegi panjang yang digambar) untuk wajah dan menyajikan hasilnya dengan fungsi imshow().

Jalankan skrip python di atas di lingkungan python Anda, menggunakan Terminal Rpi:

python faceDetection.py

Hasil:

Gambar
Gambar

Anda juga dapat menyertakan pengklasifikasi untuk "deteksi mata" atau bahkan "deteksi senyum". Pada kasus tersebut, Anda akan menyertakan fungsi pengklasifikasi dan gambar persegi panjang di dalam loop wajah, karena tidak masuk akal untuk mendeteksi mata atau senyum di luar wajah.

Perhatikan bahwa pada Pi, memiliki beberapa pengklasifikasi pada kode yang sama akan memperlambat pemrosesan, setelah metode deteksi ini (HaarCascades) menggunakan sejumlah besar daya komputasi. Di desktop, lebih mudah untuk menjalankannya.

Di GitHub saya, Anda akan menemukan contoh lain:

faceEyeDetection.py

faceSmileDetection.py

faceSmileEyeDetection.py

Dan pada gambar di atas, Anda dapat melihat hasilnya.

Anda juga dapat mengikuti tutorial di bawah ini untuk lebih memahami Deteksi Wajah:

Haar Cascade Object Detection Face & Eye OpenCV Python Tutorial

Langkah 5: Pengumpulan Data

Pengumpulan data
Pengumpulan data
Pengumpulan data
Pengumpulan data

Pertama-tama, saya harus berterima kasih kepada Ramiz Raja atas karyanya yang luar biasa tentang Pengenalan Wajah pada foto:

PENGENALAN WAJAH MENGGUNAKAN OPENCV DAN PYTHON: PANDUAN PEMULA

dan juga Anirban Kar, yang mengembangkan tutorial yang sangat komprehensif menggunakan video:

PENGENALAN WAJAH - 3 bagian

Saya sangat menyarankan Anda melihat kedua tutorial.

Mengatakan itu, mari kita mulai fase pertama proyek kita. Yang akan kita lakukan disini, mulai dari langkah terakhir (Face Detecting), kita cukup membuat dataset, dimana kita akan menyimpan untuk setiap id, sekelompok foto berwarna abu-abu dengan porsi yang digunakan untuk face detecting.

Pertama, buat direktori tempat Anda mengembangkan proyek, misalnya, FacialRecognitionProject:

Proyek Pengenalan Wajah mkdir

Di direktori ini, selain 3 skrip python yang akan kita buat untuk proyek kita, kita harus menyimpan Facial Classifier di dalamnya. Anda dapat mengunduhnya dari GitHub saya: haarcascade_frontalface_default.xml

Selanjutnya, buat subdirektori tempat kita akan menyimpan sampel wajah kita dan beri nama "dataset":

kumpulan data mkdir

Dan unduh kode dari GitHub saya: 01_face_dataset.py

impor cv2

import os cam = cv2. VideoCapture(0) cam.set(3, 640) # setel lebar video cam.set(4,480) # setel tinggi video face_detector = cv2. CascadeClassifier('haarcascade_frontalface_default.xml') # Untuk setiap orang, masukkan satu id wajah numerik face_id = input('\n masukkan id pengguna akhir tekan ==> ') print("\n [INFO] Inisialisasi pengambilan wajah. Lihat kamera dan tunggu …") # Inisialisasi penghitungan jumlah wajah pengambilan sampel individu = 0 while(Benar): ret, img = cam.read() img = cv2.flip(img, -1) # membalik gambar video secara vertikal abu-abu = cv2.cvtColor(img, cv2. COLOR_BGR2GRAY) wajah = face_detector.detectMultiScale(abu-abu, 1.3, 5) untuk (x, y, w, h) di wajah: cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2) count += 1 # Simpan gambar yang diambil ke dalam folder kumpulan data cv2.imwrite("dataset/User." + str(face_id) + '.' + str(count) + ".jpg", abu-abu[y:y+ h, x:x+w]) cv2.imshow('image', img) k = cv2.waitKey(100) & 0xff # Tekan 'ESC' untuk keluar dari video jika k == 27: break elif count >= 30: # Ambil 30 sampel wajah dan hentikan jeda video # Lakukan ab itu dari pembersihan print("\n [INFO] Keluar dari Program dan hal-hal pembersihan") cam.release() cv2.destroyAllWindows()

Kode ini sangat mirip dengan kode yang kami lihat untuk deteksi wajah. Apa yang kami tambahkan, adalah "perintah input" untuk menangkap id pengguna, yang harus berupa bilangan bulat (1, 2, 3, dll)

face_id = input('\n masukkan id pengguna akhir tekan ==> ')

Dan untuk setiap frame yang diambil, kita harus menyimpannya sebagai file di direktori "dataset":

cv2.imwrite("dataset/User." + str(face_id) + '.' + str(count) + ".jpg", abu-abu[y:y+h, x:x+w])

Perhatikan bahwa untuk menyimpan file di atas, Anda harus mengimpor perpustakaan "os". Setiap nama file akan mengikuti struktur:

User.face_id.count.jpg

Misalnya, untuk pengguna dengan face_id = 1, file sampel ke-4 pada direktori dataset/ akan seperti:

Pengguna.1.4.jpg

seperti yang ditunjukkan pada foto di atas dari Pi saya. Pada kode saya, saya menangkap 30 sampel dari setiap id. Anda dapat mengubahnya pada "elif" terakhir. Jumlah sampel digunakan untuk memutus lingkaran di mana sampel wajah diambil.

Jalankan skrip Python dan tangkap beberapa Id. Anda harus menjalankan skrip setiap kali Anda ingin menggabungkan pengguna baru (atau mengubah foto untuk yang sudah ada).

Langkah 6: Pelatih

Pelatih
Pelatih

Pada fase kedua ini, kita harus mengambil semua data pengguna dari dataset kita dan "pelatih" OpenCV Recognizer. Ini dilakukan secara langsung oleh fungsi OpenCV tertentu. Hasilnya adalah file.yml yang akan disimpan di direktori "trainer/".

Jadi, mari kita mulai membuat subdirektori tempat kita akan menyimpan data yang telah dilatih:

pelatih mkdir

Unduh dari GitHub saya skrip python kedua: 02_face_training.py

impor cv2

import numpy as np from PIL import Image import os # Path for face image database path = 'dataset' Recognizer = cv2.face. LBPHFaceRecognizer_create() detector = cv2. CascadeClassifier("haarcascade_frontalface_default.xml"); # berfungsi untuk mendapatkan gambar dan data label def getImagesAndLabels(path): imagePaths = [os.path.join(path, f) for f in os.listdir(path)] faceSamples= ids = for imagePath in imagePaths: PIL_img = Image.open(imagePath).convert('L') # mengubahnya menjadi skala abu-abu img_numpy = np.array(PIL_img, 'uint8') id = int(os.path.split(imagePath)[-1]. split(".")[1]) wajah = detector.detectMultiScale(img_numpy) untuk (x, y, w, h) di wajah: faceSamples.append(img_numpy[y:y+h, x:x+w]) ids.append(id) return faceSamples, ids print ("\n [INFO] Pelatihan wajah. Ini akan memakan waktu beberapa detik. Tunggu …") face, ids = getImagesAndLabels(path) Recognizer.train(faces, np.array(id)) # Simpan model ke trainer/trainer.yml Recognizer.write('trainer/trainer.yml') # Recognizer.save() bekerja di Mac, tapi tidak di Pi # Cetak jumlah wajah yang dilatih dan akhiri pencetakan program ("\n [INFO] {0} wajah terlatih. Keluar Program".format(len(np.unique(id))))

Konfirmasikan apakah Anda telah menginstal pustaka PIL di Rpi Anda. Jika tidak, jalankan perintah di bawah ini di Terminal:

bantal pasang pip

Kami akan menggunakan sebagai pengenal, LBPH (LOCAL BINARY PATTERNS HISTOGRAMS) Face Recognizer, termasuk dalam paket OpenCV. Kami melakukan ini di baris berikut:

pengenal = cv2.face. LBPHFaceRecognizer_create()

Fungsi "getImagesAndLabels (path)", akan mengambil semua foto di direktori: "dataset/", mengembalikan 2 array: "Ids" dan "faces". Dengan array tersebut sebagai input, kami akan "melatih pengenal kami":

pengenal.train(wajah, id)

Akibatnya, file bernama "trainer.yml" akan disimpan di direktori pelatih yang telah kami buat sebelumnya.

Itu dia! Saya menyertakan pernyataan cetak terakhir yang saya tampilkan untuk konfirmasi, jumlah wajah Pengguna yang telah kami latih.

Setiap kali Anda melakukan Fase 1, Fase 2 juga harus dijalankan

Langkah 7: Pengenal

Pengenal
Pengenal
Pengenal
Pengenal

Sekarang, kami mencapai fase akhir dari proyek kami. Di sini, kami akan menangkap wajah segar di kamera kami dan jika orang ini telah ditangkap dan dilatih wajahnya sebelumnya, pengenal kami akan membuat "prediksi" mengembalikan id dan indeksnya, menunjukkan seberapa yakin pengenal dengan pertandingan ini.

Mari unduh skrip python fase ke-3 dari GitHub saya: 03_face_recognition.py.

impor cv2

import numpy sebagai np import os pengenal = cv2.face. LBPHFaceRecognizer_create() pengenal.read('trainer/trainer.yml') cascadePath = "haarcascade_frontalface_default.xml" faceCascade = cv2. CascadeClassifier(cascadePath); font = cv2. FONT_HERSHEY_SIMPLEX #iniciate id counter id = 0 # nama yang terkait dengan id: contoh ==> Marcelo: id=1, etc names = ['None', 'Marcelo', 'Paula', 'Ilza', 'Z ', 'W'] # Inisialisasi dan mulai realtime video capture cam = cv2. VideoCapture(0) cam.set(3, 640) # setel video widht cam.set(4, 480) # setel tinggi video # Tentukan ukuran jendela min dikenali sebagai wajah minW = 0.1*cam.get(3) minH = 0.1*cam.get(4) while True: ret, img =cam.read() img = cv2.flip(img, -1) # Balik vertikal abu-abu = cv2.cvtColor(img, cv2. COLOR_BGR2GRAY) face = faceCascade.detectMultiScale(abu-abu, scaleFactor = 1.2, minNeighbors = 5, minSize = (int(minW), int(minH)),) for(x, y, w, h) di wajah: cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 2) id, confidence = pengenal.predict(abu-abu[y:y+h, x:x+w]) # Periksa apakah kepercayaan kurang dari 100 ==> "0" adalah pasangan sempurna if (keyakinan < 100): id = nama[id] confidence = " {0}% ".format(round(100 - confidence)) else: id = "unknown" confidence = " {0}%".format(round(100 - conf idence)) cv2.putText(img, str(id), (x+5, y-5), font, 1, (255, 255, 255), 2) cv2.putText(img, str(keyakinan), (x+5, y+h-5), font, 1, (255, 255, 0), 1) cv2.imshow('camera', img) k = cv2.waitKey(10) & 0xff # Tekan 'ESC' untuk keluar dari video jika k == 27: break # Lakukan sedikit pembersihan print("\n [INFO] Exiting Program and cleanup stuff") cam.release() cv2.destroyAllWindows()

Kami menyertakan di sini array baru, jadi kami akan menampilkan "nama", alih-alih id bernomor:

nama = ['Tidak ada', 'Marcelo', 'Paula', 'Ilza', 'Z', 'W']

Jadi, misalnya: Marcelo akan pengguna dengan id = 1; Paula: id=2, dst.

Selanjutnya, kita akan mendeteksi sebuah wajah, sama seperti yang kita lakukan sebelumnya dengan classifier haasCascade. Memiliki wajah yang terdeteksi, kita dapat memanggil fungsi terpenting dalam kode di atas:

id, confidence = recognitionr.predict(bagian abu-abu dari wajah)

Pengenal.prediksi (), akan mengambil sebagai parameter bagian wajah yang ditangkap untuk dianalisis dan akan mengembalikan kemungkinan pemiliknya, menunjukkan idnya dan seberapa besar kepercayaan pengenal terkait dengan kecocokan ini.

Perhatikan bahwa indeks kepercayaan akan mengembalikan "nol" jika dianggap cocok

Dan akhirnya, jika pengenal dapat memprediksi wajah, kami menempatkan teks di atas gambar dengan kemungkinan id dan berapa "probabilitas" dalam % bahwa kecocokan itu benar ("probabilitas" = 100 - indeks kepercayaan). Jika tidak, label "tidak diketahui" akan dipasang di wajah.

Di bawah-g.webp

Gambar
Gambar

Pada gambar di atas, saya menunjukkan beberapa tes yang dilakukan dengan proyek ini, di mana saya juga menggunakan foto untuk memverifikasi apakah pengenal berfungsi.

Langkah 8: Kesimpulan

Kesimpulan
Kesimpulan

Seperti biasa, saya berharap proyek ini dapat membantu orang lain menemukan jalan mereka ke dunia elektronik yang menarik!

Untuk detail dan kode akhir, silakan kunjungi penyimpanan GitHub saya: OpenCV-Face-Recognition

Untuk proyek lainnya, silakan kunjungi blog saya: MJRoBot.org

Di bawah sekilas tutorial masa depan, di mana kita akan menjelajahi "pelacakan wajah otomatis dan metode lain untuk deteksi wajah":

Gambar
Gambar

Saludos dari selatan dunia!

Sampai jumpa di instruksi saya berikutnya!

Terima kasih, Marcelo

Direkomendasikan: