[Mediapipe Update] Custom Calculator

Muhammad Alfiansyah
3 min readDec 30, 2021

--

Mediapipe

Melanjutkan riset sebelumnya, yang terbilang lumayan lama ya …:D. Intinya dari riset sebelumnya yang hanya mengubah landmarks_to_render_data_calculator.cc untuk melakukan customisasi pada result camera susuai dengan apa yang kita inginkan, sehingga camera tidak menampilkan green line dan red square pada result.

Nah …yang jadi pertanyaan adalah bagaimana kita bisa melakukan full customize pada graph dan calculator, dari hasil yang kita tahu bahwa graph itu merupakan file configurasi dan urutan bagaimana kita mengeksekusi stream image sedangkan calculator adalah bussiness logic bagaimana kita mengubah atau mengkonsumsi stream image sehingga bisa mendapatkan hasil seperti landmark dan menambahkan beberapa effect pada hasil kamera.

Pada catatan hari ini kita akan mereplikasi atau langkah-langkah untuk membuat aplikasi mediapipe dengan menggunakan grap dan calculator kita sendiri.

Langkah Pertama

Seperti tutorial sebelumnya kita harus membuat Aplikasi baru, tutorial bisa temen-temen lihat di doc Mediapipe atau disini

Langkah Kedua

Membuat custom calculator

  • Pertama untuk kasus kali ini saya membuat calculator di folder calculators/util
  • Kedua buat file baru dengan nama custom_calculators.cc
  • Ketiga kita harus meregister calculator baru pada file BUILD yang ada di dalam folder /util
custom_calculator.cc

Langka Ketiga

Membuat Graph Config

  • Membuat Folder baru di dalam folder graphs
  • Buat file BUILD dan custom.pbtxt
  • Pada file custom.pbtxt kita akan mendeklarasikan input, output dan node(calculator) yang kita gunakan
  • Sedangkan pada file BUILD kita akan mengkonstruksi file .binarypb
Custom Graph

Langkah Keempat

Memanggil atau meregister Custom Graph kita ke App.

Its DONE tapi jangan berharap dulu App akan berjalan dengan benar wk wk. Karena file Calculator yang saya buat belum selesai, intinya file calculator mendapatkan inputan GpuBuffer dan GpuBuffer itu perlu diproses dulu sehingga nanti kita bisa register result dari GpuBuffer itu ke output, nah disisi ini saya masih belum paham bagaimana proses CalculatorBase/CalculatorContract bekerja.

Sepemahaman saya kenapa di beberapa contoh ada banyak node yang diregister di graph file yaitu setiap node merepresentasikan satu proses.

Contoh pada graph facemesh ada DetectionsToRenderDataCalculator yang berguna untuk menampilkan square green line ketika wajah terdeteksi lalu ada RectToRenderDataCalculator yang berguna untuk memberikan red square line pada object yang dianggap wajah.

Result

Hasil ketika App dijalankan

Calculator berhasil untuk GetContract() Open() dan melakukan Process() tapi pada tahap ini kita belum mengeset output sehingga layar tetap putih.

Whats Next ?

Next mungkin lebih ke bagaiman ini memproses atau menggunakan Calculator yang sudah ada untuk mendapatkan hasil sesuai harapan kita.

--

--

No responses yet