Filter-AR-menggunakan-Mediapipe-diterapkan-dengan-FastAPI/Heroku

MediaPipe adalah Framework untuk membangun alur pembelajaran mesin untuk memproses data deret waktu seperti video, audio, dll. Framework lintas platform ini berfungsi di Desktop/Server, Android, iOS, dan perangkat tertanam seperti Raspberry Pi dan Jetson Nano.

Untuk menggunakan alat ini, buat mediapipe virtualenv dan pip install

Perkenalan

Pernah bertanya-tanya apa yang ada di balik “OK Google!”. Nah, itulah mediapipe.

Sejak 2012, Google telah menggunakannya di beberapa produk dan layanan. Awalnya dikembangkan untuk analisis video dan audio real-time di YouTube. Umumnya, itu terintegrasi ke dalam banyak produk seperti:

  1. Sistem persepsi di Nestcam.
  2. Iklan Augmented Reality
  3. Deteksi Keberatan oleh Google Lens
  4. Gmail
  5. Visi Awan
  6. Foto Google
  7. Beranda Google, dll.

Mediapipe mendukung produk revolusioner yang kami gunakan sehari-hari. Tidak seperti framework pembelajaran mesin lainnya, Mediapipe memerlukan sumber daya minimal. Ini sangat kecil dan efisien bahkan perangkat IoT yang tertanam pun dapat menjalankannya. Pada tahun 2019, Mediapipe membuka peluang baru bagi para peneliti dan pengembang setelah dirilis ke publik.

Jadi, mengapa berinvestasi pada riasan atau pakaian dan kacamata yang sedang tren ketika Snapchat dan Instagram menyediakan filter yang dapat membuat Anda terlihat liar, eksotis, atau cantik seperti yang Anda inginkan dalam hitungan detik.

Mungkin Anda hanya ingin bermain-main dan berubah menjadi penyihir atau Sinterklas, atau tampil spektakuler atau liar, atau mungkin memakai wajah karakter fiksi favorit Anda dengan mengenakan topeng di wajah Anda. Ada ribuan filter yang semuanya didukung oleh Augmented Reality.

Pada artikel ini, kita akan mempelajari cara membuat filter menggunakan Mediapipe.

Mengapa Mediapipe?

Selain kinerjanya yang ringan dan sangat cepat, MediaPipe mendukung kompatibilitas lintas platform. Idenya adalah untuk membangun model ML satu kali dan menerapkannya pada platform dan perangkat berbeda dengan hasil yang dapat direproduksi.

Oleh karena itu, salah satu bagian paling menarik dalam menggunakan alat ini adalah kita tidak harus mulai membangun model dari awal; alih-alih kami mengimpor kerangka mediapipe.

Ini mendukung platform Python, C, Javascript, Android, dan IOS dan dengan fitur-fitur seperti Deteksi Wajah, Face Mesh, atau Deteksi Tengara Wajah, Segmentasi Orang, Deteksi Objek, estimasi Pose Manusia, dll. Bisakah seseorang meminta lebih banyak?

Ikhtisar Face mesh?

Dalam artikel kami, kami memfokuskan penelitian kami pada face mesh. Face mesh Mediapipe menyediakan 468 landmark wajah 3D secara real-time, bahkan di perangkat seluler. Baik iOS maupun Android didukung, sehingga Anda dapat membuat aplikasi seluler tersebut dan memberikan Snapchat keuntungan. Dalam postingan blog ini, kita akan menggunakan Python dengan MediaPipe, dan OpenCV untuk mengimplementasikan Filter AR.

Seperti model Facial-Landmark lainnya, Mediapipe memulai dengan Deteksi Wajah dan mendeteksi landmark pada wajah yang terdeteksi. Untuk Deteksi Wajah, menggunakan Blazefast, yang seperti namanya, sangat cepat dan ringan serta dioptimalkan untuk inferensi GPU seluler. Deteksi Wajah mengeluarkan wilayah yang dipotong dari bingkai video. Kami kemudian menjalankan model 3D-Landmark pada area yang dipotong.

Ikhtisar saluran

Sebelum masuk ke seluk beluknya, mari kita bahas alur penerapan filter AR menggunakan Mediapipe dan OpenCV:

  1. Deteksi 468 Landmark Wajah menggunakan Mediapipe Face Mesh.
  2. Pilih landmark yang relevan karena kita tidak memerlukan 468 landmark.
  3. Beri anotasi pada filter dengan landmark yang dipilih.
  4. Muat anotasi.
  5. Mendeteksi titik-titik landmark pada wajah.
  6. Stabilkan titik-titik penting.
  7. Ubah Filter pada wajah, menggunakan landmark.

Sekarang setelah Anda memiliki gambaran umum tentang pipeline, mari kita lihat detailnya.

Titik terkenal dari jaring muka

Kita mulai dengan mengimpor MediaPipe. Selanjutnya, kami membuat instance Face Mesh dengan dua parameter yang dapat dikonfigurasi untuk mendeteksi dan melacak landmark.

min_detection_confidence=0.5

min_tracking_confidence=0.5

Terakhir, kita meneruskan gambar masukan dan menerima daftar objek wajah.

Mendapatkan filter

Sekarang setelah Anda memiliki koordinat landmark, kami akan menggunakannya untuk melapisi wajah dengan filter. Filternya hanyalah transparansi gambar PNG.

Berikut pilihan filternya:

Memberi Anotasi pada Filter dengan Poin

Untuk membuat anotasi filter dengan titik, kami menggunakan alat anotasi sederhana bernama makesense yang dapat dijalankan di browser.

Setelah semua titik yang diperlukan diberi anotasi, anotasi dapat diekspor, dan kita akan memiliki file CSV yang berisi koordinat semua titik.

Ikhtisar kode umum

impor perpustakaan yang diperlukan

Kami akan menggunakan apply_filter.py file yang berisi beberapa definisi fungsi untuk 'triangulasi Delaunay' dan 'segitiga warping'. Kita akan melihat apa maksudnya ketika kita memanggilnya dalam kode.

menentukan jalur untuk gambar dan anotasi yang difilter

Tentukan fungsi untuk mendapatkan landmark dari mediapipe

Berfungsi untuk memuat gambar yang difilter

Dapatkan saluran alfa dari filter gambar untuk digunakan nanti dan konversikan gambar ke BGR

Muat titik-titik terkenal untuk anotasi

Temukan lambung cembung untuk triangulasi delaunay menggunakan titik-titik landmark.

Fungsi untuk memuat filter dan menerapkan denaulay Triangulasi adalah filter harus dilengkungkan ke permukaan

Menerapkan di FastAPI

Dalam proyek tersebut, kami akhirnya menerapkan menggunakan FastAPI dan dihosting di aplikasi Heroku. Perhatikan bahwa, untuk menjalankan FastAPI Anda perlu pip install fastapi uvicorn di lingkungan conda Anda.

Kode FastAPI

Untuk menjalankan kode fastAPI gunakan:

Server.py

Video demo



Kesimpulan

Augmented Reality telah menjadi bidang yang sangat signifikan dalam teknologi terkini, dan menjadi motivasi untuk penelitian ini. Namun, kerangka kerja Mediapipe ML berperan penting dalam mengimplementasikan penelitian ini. Semua berkat Google dan tim risetnya. Dalam proyek ini, kami menggunakan makeense untuk anotasi data, mediapipe untuk mengimplementasikan filter AR, FastAPI untuk penerapan model, dan aplikasi Heroku untuk menerapkan model kami ke server Heroku.

Keterbatasan

Penting untuk diperhatikan bahwa kita hanya mengerjakan 2 dimensi, yaitu bidang x-y. Meskipun memberikan ilusi menjadi 3d, pendekatan kami gagal ketika filter objek 3d ikut berperan seperti kacamata hitam. Selain itu, demo ini lebih efektif dengan efek cahaya sehingga webcam atau kamera dapat mendeteksi wajah.

Referensi

Tautan ke github: https://github.com/judsongroups/AR-Filters-using-Mediapipe-deployed-with-fastapi

Tautan ke aplikasi heroku: http://snapchat-ar-filters.herokuapp.com/

Apresiasi

Ucapan terima kasih khusus kami panjatkan kepada Tuhan Yang Maha Kuasa yang telah melihat kami melalui penelitian ini, kepada Zummit Africa Inc. atas kesempatan belajar, meneliti, dan berkembang di bidang data, terima kasih kepada pimpinan tim saya Valentine Enedah atas dukungannya, dan kepada saya anggota tim dan rekan Penulis Samuel Okon (https://www.linkedin.com/in/samuel-okon-61456b1b4), Mariam, Sylvester, Selorm Adukonu, dan Richard kalian semua adalah yang terbaik, terima kasih atas semua kegigihan kalian upaya yang dilakukan untuk memastikan bahwa pekerjaan penelitian ini berhasil.