Pembaruan Tek

Cara Membuat Aplikasi Perangkat Lunak Pengenalan Wajah

Hari ini saya menulis artikel ini untuk membahas cara membuat software pengenalan wajah dengan Python menggunakan perpustakaan OpenCV,...

Ditulis oleh Ashok Kumar · 9 min baca >
cara membuat software pengenalan wajah

Salah satu keluaran terbaru dari kecerdasan buatan dan pembelajaran mesin adalah perangkat lunak atau aplikasi pengenalan wajah atau wajah.

Sistem pengenalan wajah perlahan tapi pasti menyusup ke kehidupan kita sehari-hari. Mereka dapat memilih Anda dari kerumunan dan mengidentifikasi Anda sebagai seseorang, yang dapat memberikan berbagai hasil. Mereka dapat membuka kunci layar ponsel Anda, membayar pembelian Anda, memenjarakan Anda, menandai kehadiran Anda di kantor, dan dapat melakukan lebih banyak hal di luar pemikiran kita. Dan saya sedang mengembangkan algoritma pengenalan wajah ketika perangkat lunak pengenalan wajah saya bahkan akan mengenali gambar yang Anda pikirkan. Dan akan membantu Anda menggambar ratu peri Anda. Mengolok-olok bagian pertama Mari kita kembali ke topik utama.

Ada dua metode umum yang digunakan untuk membuat perangkat lunak atau aplikasi pengenalan wajah

  1. Metode pertama ini menggunakan pra-terlatih model seperti dlibwajah dalamJaringan Wajah, dan lain-lain. Jadi hari ini kita akan membahas metode ini. Upaya akan memakan waktu lebih sedikit.
  2. Metode kedua untuk membuat perangkat lunak pendeteksi wajah adalah membuat jaringan saraf dari awal. Pendekatan ini sesuai untuk sistem pengenalan wajah multiguna dengan fitur yang rumit. Hal ini memerlukan lebih banyak waktu dan upaya, serta jutaan foto dalam kumpulan data pelatihan, dibandingkan dengan model terlatih, yang hanya memerlukan ribuan gambar dalam pembelajaran transfer.

Perusahaan Kecerdasan Buatan Terbesar di Dunia

Hari ini, saya menulis artikel ini untuk dibahas

Cara membuat software pengenalan wajah dengan Python menggunakan perpustakaan OpenCV, DLib

Namun bagaimana cara kerja perangkat lunak pengenalan wajah ini dalam praktiknya, seberapa akurat perangkat lunak tersebut, dan siapa yang memiliki wewenang untuk menggunakannya di portal publik? Mari kita membuatnya sendiri menggunakan perangkat lunak sumber terbuka gratis dan foto teman untuk mengetahuinya. Izinkan saya terus memberi tahu Anda, jenis perangkat lunak pengenalan wajah ini dipasang di area pribadi seperti kantor perusahaan.

Mari kita buat daftar semua yang kita perlukan untuk membuat perangkat lunak pengenalan wajah

  1. Anda perlu mengunduh Teks Sublime Ketika pengunduhan selesai, buka editor teks Sublime Text dan lanjutkan instruksi instalasi. Di sinilah kita akan membuat kode yang pada akhirnya akan berubah menjadi perangkat lunak.

2. Periksa untuk menentukan apakah Python 3 sudah terinstal di mesin Anda. Ini adalah bahasa pemrograman yang paling direkomendasikan untuk membuat software pengenalan gambar terbaik dengan python. Ini adalah bahasa yang akan kita gunakan untuk membuat kode kita. Buka Terminal (di bawah folder utilitas di Aplikasi) atau Command Prompt (klik Windows + X dan pilih Command Prompt) di komputer Mac atau Windows untuk mencapai hal ini. Kemudian tekan enter untuk mengetikkan yang berikut ini:

3. Kembali ke Terminal atau Command Prompt dan ketik perintah di bawah ini, tekan enter setelah setiap baris untuk menginstal paket yang diperlukan. Butuh sedikit waktu untuk sampai ke baris keempat, dlib.

pip3 install cmake
pip3 install face_recognition
pip3 install numpy
pip3 install dlib
pip3 install opencv-python

Saya akan melanjutkan pengaturan kode ini di bawah Bagian 2

Sebelum Mengetahui cara membuat perangkat lunak pengenalan wajah, mari kita melalui proses deteksi dan pengenalan wajah

Proses pengenalan wajah dimulai dengan aplikasi kamera yang diinstal pada perangkat apa pun. Aplikasi ini ditulis dalam Golang dan berjalan sebagai aplikasi konsol lokal di keduanya Raspbian dan Ubuntu. Aplikasi harus dikonfigurasi menggunakan file konfigurasi JSON dengan ID Kamera Lokal dan jenis Pembaca Kamera saat pertama kali diluncurkan.
Setelah itu, program ini dapat menggunakan visi komputer dan jaringan saraf dalam untuk menemukan wajah potensial di dalam alirannya.

Ada dua metode dasar untuk melakukannya yang keduanya efektif:

  1. Model deteksi objek TensorFlow
  2. Pelacakan wajah kafe

Kedua solusi ini telah terbukti efektif dan kini disertakan dalam perpustakaan OpenCV.

Setelah wajah diambil oleh perangkat lunak pengenalan wajah, gambar yang dipotong akan dikirim ke bagian belakang melalui permintaan data formulir HTTP. API kemudian menyimpan gambar wajah ini di sistem file lokal serta di log deteksi, bersama dengan personID.

Gambar 2 : Jarak Euclidean

cara membuat perangkat lunak pengenalan wajah dengan python

Di bagian belakang, algoritma menemukan catatan dengan nilai 'diklasifikasikan=salah' dan menggunakan fungsi Dlib untuk membuat vektor 128 dimensi yang menggambarkan kualitas wajah ini. Program kemudian menggunakan jarak Euclidean untuk membandingkan vektor ini dengan semua rekaman wajah di database untuk melihat apakah wajah baru ini cocok dengan wajah-wajah yang direkam sebelumnya.

cara membuat algoritma pendeteksi wajah

Gambar di atas adalah representasi kode fungsi Dlib, dengan titik indeks sesuai dengan bagian wajahnya. Dengan menggunakan algoritma di atas, kita dapat membuat software pengenalan wajah yang mendeteksi wajah lebih dari 80% benar. Ini hanyalah kode demo untuk mewakili strukturnya.

Mengetahui Tahapan Pengenalan Wajah Membuat Software Pengenalan Wajah

Untuk membuat aplikasi seluler dengan teknologi pengenalan wajah, Anda harus terlebih dahulu mengetahui langkah-langkah apa yang perlu Anda lakukan. Apa sajakah langkah-langkah prosedur identifikasi?

  • Deteksi wajah di awal. Sistem harus mendeteksi wajah pada gambar pada tahap pertama. Ini bukan tentang mengidentifikasi seseorang; ini hanya tentang fakta bahwa Anda sedang menatap wajah manusia. Dan jika gagasan membuat perangkat lunak pendeteksi wajah menarik bagi Anda, dan Anda tidak memerlukan sesuatu yang lebih canggih, berikut adalah prosedurnya.
  • Penentuan Titik Referensi Masih banyak pekerjaan sensitif yang harus dilakukan saat ini. Program ini mencari titik acuan (fitur) pada wajah yang dapat digunakan untuk menentukan kualitas unik seseorang. Sebelumnya, mata dianggap sebagai titik acuan utama, namun teknologi komputasi saat ini telah maju hingga mencakup lebih dari 70 aspek penting.
  • Membangun Wajah Frontal Wajah harus diubah untuk mendapatkan gambaran depannya agar proses pencocokan menjadi lebih mudah.
  • Perhitungan Deskriptor Fitur Saat ini deskriptor, yaitu sekumpulan ciri yang menggambarkan wajah seseorang, tidak bergantung pada usia, gaya rambut, atau faktor lainnya, sedang ditentukan. Untuk lebih spesifiknya, kita memerlukan potret digital tertentu, vektor wajah, untuk melakukan perbandingan yang lebih akurat.
  • Perbandingan wajah. Prosedur pencocokan vektor wajah digital yang dihasilkan dengan item yang terdapat pada database merupakan tahap kelima.
  • Pengenalan Wajah adalah identifikasi akhir seseorang (atau, lebih tepatnya, wajahnya) ketika ditemukan kecocokan.

Bagian 2:

Cara membuat perangkat lunak pengenalan wajah dengan python

pip3 install cmake
pip3 install face_recognition
pip3 install numpy
pip3 install dlib
pip3 install opencv-python

Jika perintah terakhir meminta Anda menginstal Xcode (untuk Mac), buka App Store dan instal. Ini mungkin memakan waktu cukup lama karena ukurannya cukup besar. Kemudian ketik ulang baris terakhir (pip3 install OpenCV-python) dan tekan enter.

Membuat dan Menjalankan Aplikasi yang Kita Instal

1. Salin dan tempel kode di bawah ini dalam potongan kode open source ke Sublime Text.

#code forked and tweaked from https://github.com/ageitgey/face_recognition/blob/master/examples/facerec_from_webcam_faster.py
#to extend, just add more people into the known_people folder

import face_recognition
import cv2
import numpy as np
import os
import glob

# Get a reference to webcam #0 (the default one)
video_capture = cv2.VideoCapture(0)

#make array of sample pictures with encodings
known_face_encodings = []
known_face_names = []
dirname = os.path.dirname(__file__)
path = os.path.join(dirname, 'known_people/')

#make an array of all the saved jpg files' paths
list_of_files = [f for f in glob.glob(path+'*.jpg')]
#find number of known faces
number_files = len(list_of_files)

names = list_of_files.copy()

for i in range(number_files):
    globals()['image_{}'.format(i)] = face_recognition.load_image_file(list_of_files[i])
    globals()['image_encoding_{}'.format(i)] = face_recognition.face_encodings(globals()['image_{}'.format(i)])[0]
    known_face_encodings.append(globals()['image_encoding_{}'.format(i)])

    # Create array of known names
    names[i] = names[i].replace("known_people/", "")  
    known_face_names.append(names[i])

# Initialize some variables
face_locations = []
face_encodings = []
face_names = []
process_this_frame = True

while True:
    # Grab a single frame of video
    ret, frame = video_capture.read()

    # Resize frame of video to 1/4 size for faster face recognition processing
    small_frame = cv2.resize(frame, (0, 0), fx=0.25, fy=0.25)

    # Convert the image from BGR color (which OpenCV uses) to RGB color (which face_recognition uses)
    rgb_small_frame = small_frame[:, :, ::-1]

    # Only process every other frame of video to save time
    if process_this_frame:
        # Find all the faces and face encodings in the current frame of video
        face_locations = face_recognition.face_locations(rgb_small_frame)
        face_encodings = face_recognition.face_encodings(rgb_small_frame, face_locations)

        face_names = []
        for face_encoding in face_encodings:
            # See if the face is a match for the known face(s)
            matches = face_recognition.compare_faces(known_face_encodings, face_encoding)
            name = "Unknown"

            # # If a match was found in known_face_encodings, just use the first one.
            # if True in matches:
            #     first_match_index = matches.index(True)
            #     name = known_face_names[first_match_index]

            # Or instead, use the known face with the smallest distance to the new face
            face_distances = face_recognition.face_distance(known_face_encodings, face_encoding)
            best_match_index = np.argmin(face_distances)
            if matches[best_match_index]:
                name = known_face_names[best_match_index]

            face_names.append(name)

    process_this_frame = not process_this_frame


    # Display the results
    for (top, right, bottom, left), name in zip(face_locations, face_names):
        # Scale back up face locations since the frame we detected in was scaled to 1/4 size
        top *= 4
        right *= 4
        bottom *= 4
        left *= 4

        # Draw a box around the face
        cv2.rectangle(frame, (left, top), (right, bottom), (0, 0, 255), 2)

        # Draw a label with a name below the face
        cv2.rectangle(frame, (left, bottom - 35), (right, bottom), (0, 0, 255), cv2.FILLED)
        font = cv2.FONT_HERSHEY_DUPLEX
        cv2.putText(frame, name, (left + 6, bottom - 6), font, 1.0, (255, 255, 255), 1)

    # Display the resulting image
    cv2.imshow('Video', frame)

    # Hit 'q' on the keyboard to quit!
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# Release handle to the webcam
video_capture.release()
cv2.destroyAllWindows()

2. Simpan file ini dengan algoritma yang ditulis di atas sebagai mengenali face.py di sistem Anda, lalu buat folder bernama orang yang dikenal (pastikan ini juga ada di folder Desktop).

3. Sekarang kita dapat menambahkan foto orang yang ingin kita identifikasi ke folder orang yang dikenal dengan menyimpan gambar wajah mereka. Pastikan orang dalam foto menghadap ke depan dan merupakan satu-satunya orang dalam gambar (pangkas jika perlu). Setiap file diberi nama orang sesuai yang kita inginkan untuk ditampilkan di layar. Hanya file .jpg yang akan digunakan dalam skenario ini.

4. Untuk menjalankan aplikasi, kembali ke Terminal (Mac) atau Command Prompt (Windows) dan ketik perintah berikut dan klik enter.

cd Desktop
python3 recognise_face.py

<---- if an error message appears try:----!>

python recognise_face.py


Pressing Ctrl + c with the Terminal window selected will exit the programme.

Singkatnya, proses pengenalan wajah dapat dipecah menjadi empat langkah.

  1. Deteksi wajah apa pun yang muncul di bingkai.
  2. Untuk membuat topeng, carilah titik-titik yang tepat pada wajah, seperti ujung hidung dan sudut setiap mata seperti dijelaskan pada Gambar 2 : Jarak Euclidean. Kemudian, dengan hanya menggunakan perubahan yang mempertahankan bentuk aslinya, seperti rotasi dan zoom, ubah posisi mask tersebut sehingga mengarah lurus ke depan.
  3. Proses pengkodean. Tahap ini memerlukan penemuan fitur-fitur penting dari sebuah wajah (melalui visi komputer) yang serupa pada foto orang yang sama, namun berbeda pada foto orang lain.
cara membuat software pengenalan wajah dengan python

Program pengenalan wajah di panggung dunia

Bloomberg memperkirakan bahwa pasar pengenalan wajah global akan bernilai $7.76 miliar pada tahun 2022. (dari 4.05 miliar dolar pada tahun 2017).

Dalam hal ini, akan sangat menarik untuk mengetahui di belahan dunia mana orang menghasilkan uang paling banyak dari perangkat lunak pengenalan wajah (aplikasi, situs web, dan program lainnya). Grafik di bawah ini memberikan jawaban atas pertanyaan tersebut.

permintaan perangkat lunak pengenalan wajah dari tahun ke tahun

Cara mengidentifikasi wajah seseorang dalam perangkat lunak pengenalan wajah

  • Pengenalan 2D adalah pendekatan populer untuk pengenalan wajah saat ini. Hal ini didasarkan pada perbandingan dan penggunaan gambar dua dimensi.
  • Pengakuan dalam tiga dimensi. Metode ini menjadi lebih populer, meskipun faktanya masih jauh lebih rendah dibandingkan metode sebelumnya. Ini memanfaatkan kemampuan untuk membangun kembali gambar tiga dimensi. ID Wajah Apple adalah salah satu pemindai 3D paling terkenal.
  • Dalam lingkungan yang terkendali, pengenalan wajah dilakukan. Model pengenalannya sangat mudah; itu mengandaikan latar belakang yang tidak bergerak dan dapat dikontrol. Dalam situasi ini, aplikasi pengenalan wajah tidak akan kesulitan memisahkan elemen individual (seperti mata, hidung, dan mulut) dan membuat ulang keseluruhan item (wajah manusia).
  • Pengenalan wajah berdasarkan warna. Perangkat lunak ini memeriksa gambar untuk area dengan warna kulit normal dan berupaya menangkap, menganalisis, dan mengidentifikasi segmen wajah.
  • Pengenalan wajah berdasarkan tekstur kulit. Kita berurusan dengan foto beresolusi tinggi yang memungkinkan penilaian mendetail terhadap tekstur kulit, termasuk garis, kerutan, dan pori-pori.
  • Pencarian wajah berbasis gerakan Ini ada hubungannya dengan gambar video yang memiliki efek gerakan. Perangkat lunak harus memeriksa titik referensi tertentu dalam situasi ini, seperti mata berkedip, alis, hidung, dahi, atau bibir. Algoritme mencoba memodelkan dan mengidentifikasi wajah segera setelah salah satu elemen ini teridentifikasi, dan membandingkannya dengan yang ada di database.
  • Pengenalan wajah menggunakan pencitraan termal. Dalam beberapa tahun terakhir, kamera pencitraan termal menjadi semakin populer untuk mengidentifikasi wajah manusia. Selain itu, kawasan ini terus berkembang dari tahun ke tahun.

Bagaimana cara membuat aplikasi seluler untuk pengenalan wajah?

Pertanyaan terpenting tidak diragukan lagi adalah bagaimana membuat perangkat lunak pengenalan wajah dengan python. Sumber daya apa yang Anda butuhkan untuk mewujudkan konsep Anda?

Ada banyak pilihan, kami akan menjelaskan 3 yang paling populer di antaranya.

API Asli

Cara paling mudah untuk membuat aplikasi pengenalan wajah untuk Android atau iOS adalah dengan menggunakan API Asli Apple dan Google. Ini tidak mahal, mudah dilaksanakan, dan tidak memerlukan biaya atau usaha tambahan apa pun. Tentu saja, fiturnya tidak akan banyak, tapi siapa tahu, mungkin cukup untuk menyelesaikan pekerjaan.

Solusi pihak ketiga

Membuat perangkat lunak pengenalan wajah yang mudah digunakan adalah solusi pihak ketiga yang merupakan alternatif kedua. Dan, katakanlah, luasnya pilihan alat ini akan membuat Anda takjub: banyak perusahaan memiliki API yang dapat digunakan untuk membuat aplikasi pendeteksi wajah. Apa pendapat Anda tentang ini?

  • API Pengenalan Visual adalah salah satu dari banyak penawaran pengembangan Amazon (yang juga mencakup platform belanja dan solusi cloud). Selain itu, tersedia pilihan berbayar dan gratis.
  • Luxand.cloud API memungkinkan pengembang membuat aplikasi yang dapat menilai jenis kelamin manusia, usia, kondisi emosional, dan banyak lagi. BASIC, PRO, dan ULTRA merupakan tiga paket harga yang ditawarkan perusahaan.
  • FaceMark adalah solusi API yang lugas dan dapat diandalkan yang memberikan banyak titik referensi untuk membuat ulang seluruh wajah dan profil, serta kemudahan penggunaan dan beragam pilihan harga.

Bagaimana Pembelajaran Mendalam Membuat Perangkat Lunak Pengenalan Wajah Bebas dari Kesalahan

Salah satu pendekatan paling inovatif untuk meningkatkan teknologi pengenalan wajah adalah pembelajaran mendalam. Penyematan wajah diekstraksi dari foto dengan wajah. Wajah yang berbeda akan memiliki penyematan wajah yang berbeda. Dan metode paling efisien untuk mencapai hal ini adalah dengan melatih jaringan saraf dalam.

Namun, dalam jangka panjang, jika sistem pengenalan wajah memiliki fitur unik, ini mungkin merupakan pilihan terbaik. Berikut ini adalah pertimbangan yang paling penting.

  • Pemilihan arsitektur CNN dan fungsi kerugian yang benar
  • Pengoptimalan waktu inferensi 
  • Kekuatan kamera dan perangkat keras lainnya

Ditulis oleh Ashok Kumar
CEO, Pendiri, Kepala Pemasaran di Make An App Like. Saya Penulis di OutlookIndia.com, KhaleejTimes, DeccanHerald. Hubungi saya untuk mempublikasikan konten Anda. Profil

Tinggalkan Balasan

Translate »