Instal libfacedetection yang telah dikompilasi di Raspberry Pi

Libfacedetection adalah pustaka sumber terbuka untuk mendeteksi wajah dalam gambar. Perpustakaan didasarkan pada CNN (Convolutional Neural Network). Model CNN pra-terlatih telah dikonversi ke array C dan disimpan dalam file. Jadi kita tidak perlu mendownload caral sebelum menggunakan library ini. Pustaka libfacedetection tidak memiliki dependensi eksternal.

Tutorial ini menjelaskan cara menginstal libfacedetection yang telah dikompilasi di Raspberry Pi.

Paket Debian

Kami telah membuat paket Debian ( .deb) yang terdiri dari binari libfacedetection yang telah dikompilasi sebelumnya untuk Raspberry Pi 3 Model A+/B+ dan Raspberry Pi 4 Model B. Binari kompatibel dengan Raspberry Pi OS Bullseye (32-bit). Kami telah membuat rilis di repositori GitHub dan mengunggah libfacedetection.debpaket.

Libfacedetection dibangun dengan fitur-fitur berikut:

  • Optimasi NEON
  • OpenMP multi-threading

Pengujian dilakukan pada Raspberry Pi 4 Model B (8 GB).

Instal libfacedetection

Gunakan SSH untuk terhubung ke Raspberry Pi. Jalankan perintah berikut untuk mengdownload .debpaket dari halaman rilis repositori:

 wget https://github.com/prepkg/libfacedetection-raspberrypi/releases/latest/download/libfacedetection.deb

Sekarang instal libfacedetection dengan perintah:

 sudo apt install -y ./libfacedetection.deb

Anda dapat menghapus .debpaket karena kami tidak membutuhkannya lagi:

 rm -rf libfacedetection.deb

Menguji deteksi libface

Untuk mempermudah, instal OpenCV yang telah dikompilasi untuk membaca dan menulis file gambar. Kompiler GNU C++ juga perlu diinstal:

 sudo apt install -y g++

Download gambar yang akan digunakan untuk pengujian:

 wget -O test.jpg https://raw.githubusercontent.com/ageitgey/face_recognition/master/examples/two_people.jpg

Sekarang buat main.cppfile:

 nano main.cpp

Tambahkan kode berikut:

#include <opencv2/opencv.hpp>
#include <facedetection/facedetectcnn.h>

using namespace cv;

#define DETECT_BUFFER_SIZE 0x20000

int main()
{
Mat img = imread(“test.jpg”);

unsigned char *buffer = (unsigned char *) malloc(DETECT_BUFFER_SIZE);
int *results = facedetect_cnn(buffer, img.ptr(0), img.cols, img.rows, img.step);

for (int i = 0; i < *results; i++) {
short *p = ((short *) (results + 1)) + 142 * i;
int score = p[0];
int x = p[1];
int y = p[2];
int w = p[3];
int h = p[4];

char text[4];
snprintf(text, sizeof(text), “%d”, score);

putText(img, text, Point(x, y – 3), FONT_HERSHEY_SIMPLEX, 1, Scalar(0, 255, 0), 2);
rectangle(img, Rect(x, y, w, h), Scalar(0, 255, 0), 2);
}

imwrite(“result.jpg”, img);
free(buffer);

return 0;
}

Kode mendeteksi wajah dalam gambar dan menggambar kotak pembatas di sekitar wajah. Kami juga menulis skor kepercayaan (angka antara 0 dan 100) di dekat setiap kotak pembatas.

Kompilasi kode menggunakan perintah berikut:

 g++ main.cpp -o tes -lfacedetection -lopencv_core -lopencv_imgcodecs -lopencv_imgproc

Jalankan program:

 ./tes

Gambar keluaran ditulis ke file tertentu. Berikut adalah hasil:

Wajah yang terdeteksi dalam gambar menggunakan libfacedetection di Raspberry Pi

Copot pemasangan libfacedetection

Jika Anda ingin menghapus libfacedetection sepenuhnya, jalankan perintah berikut:

 sudo apt purge --autoremove -y libfacedetection

Instal OpenCV 4.5 yang telah dikompilasi di Raspberry Pi
Instal TensorFlow Lite 2.7 Terkompilasi di Raspberry Pi
Instal Java 11 di Raspberry Pi
Instal MariaDB di Raspberry Pi