SahrulRamadhani29/portfolio

LatihIsyarat

Public source

Aplikasi pengenalan isyarat offline: 24 huruf ASL statis dan pengembangan gerakan J/Z pada branch terpisah.

PBL Kampus

Proyek pembelajaran berbasis proyek (PBL) di kampus untuk penilaian kenaikan semester.

Kontribusi tim · rhmau1Deteksi tangan, kontrak/model J/Z, integrasi kamera, progres belajar, dan pengujian

Sorotan kontribusi saya

Baca seluruh 8 modul kontribusi
Daftar isi · 8 modul kontribusi

Gambaran alur utama

6 langkah

Input kamera/foto diproses menjadi prediksi huruf dan riwayat latihan. Jalur pose statis dan gerakan J/Z dibedakan sesuai branch implementasinya.

  1. 01Tangkap input latihan

    1. Pilih kamera atau foto

      Pengguna
    2. Temukan tangan yang bisa diproses

      Detector tangan
  2. 02Kenali pose atau gerakan

    1. Siapkan input model

      Preprocessor aplikasi
    2. Jalankan inferensi offline

      TensorFlow Lite
  3. 03Tampilkan dan simpan latihan

    1. Baca hasil dan panduan

      Aplikasi Flutter
    2. Riwayat dan progres lokal

      SQLite & state aplikasi
Rincian proses dan percabangan
  1. Pilih kamera atau fotoPengguna

    Mulai latihan melalui kamera atau gunakan foto/unggahan. Jalur dinamis memerlukan klip gerakan dengan awal dan akhir yang dikendalikan pengguna.

  2. Temukan tangan yang bisa diprosesDetector tangan

    Deteksi area atau landmark tangan menjadi dasar masukan pengenalan.

    Input tangan tersedia?

    • Terdeteksi. Lanjutkan ke preprocessing sesuai jalur pengenalan.
    • Belum layak diproses. Input tidak menghasilkan pengenalan yang dapat dipakai; pengguna perlu memperbaiki posisi atau gambar.
  3. Siapkan input modelPreprocessor aplikasi

    Bentuk masukan menyesuaikan jenis huruf yang dikenali.

    Jalur pengenalan yang digunakan?

    • Pose statis · default branch. Area tangan diproses menjadi input classifier 24 huruf statis.
    • Gerakan J/Z · branch rama. Landmark antar-frame disusun menjadi fitur sekuens untuk model GRU.
  4. Jalankan inferensi offlineTensorFlow Lite

    Model menghasilkan prediksi sesuai labelnya. Pengembangan J/Z juga menangani hasil terlambat, timeout, dan pembatalan sesi.

  5. Baca hasil dan panduanAplikasi Flutter

    Prediksi dihubungkan ke tampilan latihan, target huruf, dan panduan agar pengguna dapat memahami hasil pengenalan.

  6. Riwayat dan progres lokalSQLite & state aplikasi

    Simpan aktivitas latihan, kelola progres, dan lepaskan kamera ketika sesi ditutup atau aplikasi berpindah keadaan.

Default branch memuat 24 huruf statis. Pengembangan gerakan J/Z, progres 26 huruf, dan kontrol sesi berada pada branch rama.

CASE_STUDY.mdProduk & kontribusi saya

Tentang LatihIsyarat

LatihIsyarat adalah aplikasi belajar alfabet ASL berbasis Flutter. Pengguna dapat berlatih melalui kamera, foto atau unggahan, membaca panduan huruf, serta melihat riwayat dan progres latihan. Pengenalan dijalankan secara offline menggunakan TensorFlow Lite, sedangkan riwayat disimpan secara lokal di SQLite.

Saya mengerjakan deteksi tangan, preprocessing gambar, integrasi pengenalan ke kamera, pengembangan gerakan J/Z, progres belajar, serta pengujiannya. Jalur default mencakup 24 huruf statis; pengembangan J/Z saya kerjakan pada branch rama.

Kontribusi saya

Deteksi tangan pada foto dan unggahan

Saya mengembangkan deteksi tangan untuk gambar diam dan menghubungkannya ke jalur foto/unggahan. Saya menangani pemilihan area tangan, masukan yang belum layak diproses, dan hubungan hasil deteksi dengan classifier. Pekerjaan ini membuat gambar yang dipilih pengguna diteruskan melalui tahapan pengenalan yang sesuai.

Preprocessing dan classifier TensorFlow Lite

Saya mengerjakan preprocessing gambar agar bentuk masukan cocok dengan model, memanggil classifier TensorFlow Lite, serta menghubungkan label prediksi ke hasil aplikasi. Saya juga memperbaiki validasi identifier model dan jalur pengujian classifier agar kesalahan pemetaan model atau label dapat ditangani pada lapisan pengenalan.

Paket training dan kontrak model J/Z

Pada branch rama, saya menyusun paket training/evaluasi J/Z berbasis Python dengan fitur sekuens dan model GRU. Saya menyiapkan label, metadata, serta kontrak preprocessing, memisahkan data menurut kelompok video sumber, dan mencatat manifest split. Saya juga memeriksa konversi model ke TensorFlow Lite, termasuk varian float16, serta mengarsipkan sumber model statis.

Landmark tangan dan integrasi native Android

Saya menghubungkan komponen MediaPipe, detector/landmark, encoder frame, sequence preprocessor, dan classifier J/Z. Saya mengerjakan bridge native Android/Kotlin serta jalur inferensi di isolate agar keluaran frame kamera dapat diubah menjadi fitur sekuens yang dipakai layanan pengenalan gerakan.

Latihan target J/Z dan mode bebas

Saya mengintegrasikan mode latihan target J/Z serta mode bebas yang menggabungkan pengenalan pose statis dan gerakan. Klip J/Z memakai kontrol awal/akhir dari pengguna. Saya mengatur timeout, menolak hasil yang datang dari sesi lama, dan menangani pembatalan agar hasil prediksi tetap terkait dengan sesi yang sedang aktif.

Lifecycle kamera dan penyimpanan sesi

Saya memperbaiki pelepasan kamera ketika pengguna berpindah halaman atau aplikasi masuk background. Saya juga menangani penyimpanan riwayat sesi yang terputus agar proses simpan dan penghentian kamera tidak saling mengganggu. Bagian ini berkaitan dengan kestabilan penggunaan kamera selama latihan dan saat sesi dihentikan.

Riwayat, progres 26 huruf, dan panduan

Saya memperluas model riwayat serta progres untuk mencakup 26 huruf pada pengembangan J/Z, memperbaiki penanda latihan mingguan berdasarkan tanggal aktivitas, dan menambahkan penjelasan gerakan J/Z pada panduan. Saya turut merapikan kontrol layar latihan, halaman panduan, serta tampilan progres yang dihubungkan dengan data sesi lokal.

Pengujian layanan dan integrasi aplikasi

Saya menulis pengujian untuk classifier, hand detector, layanan J/Z, integrasi kamera, riwayat, gamifikasi, dan panduan. Fokusnya mencakup kontrak input/output, penanganan sesi, serta hubungan hasil pengenalan dengan proses belajar. Pengembangan ini tetap disajikan terpisah dari jalur 24 huruf statis pada default branch.

Bidang & teknologi inti

Bidang proyek

Mobile DevelopmentComputer VisionMachine LearningAI Engineering

Teknologi inti

FlutterDartPythonTensorFlowTensorFlow LiteMediaPipeOpenCVSQLite

20 commit dalam 12 bulan terakhir

Semua branch
NovDesJanFebMarAprMeiJunJulAguSepOktNov
Minggu
Senin
Selasa
Rabu
Kamis
Jumat
Sabtu
Arahkan ke kotak untuk melihat tanggal.
SedikitBanyak
Streak saat ini0 hari
Streak terpanjang dalam periode2 hari
Hari aktif dalam periode4 hari
Data terverifikasi · pembaruan dijadwalkan tiap jam.
Cara perhitungan · 1 repo · 6 branch

Commit milik saya yang terjangkau dari seluruh branch remote saat sinkronisasi. Satu SHA dihitung sekali, termasuk jika ada di beberapa branch atau fork. Merge commit dikecualikan. Tanggal memakai waktu author dalam WIB, bukan waktu push. Streak saat ini tetap berjalan bila commit terakhir kemarin dan hari ini belum selesai.

Ini kalender commit dengan cakupan semua branch, sehingga angkanya dapat berbeda dari kalender contributions GitHub yang juga memiliki jenis aktivitas dan aturan branch sendiri. Kalender ini khusus untuk proyek yang sedang dibaca.

Riwayat kontribusi

20 commit non-merge milik saya · Seluruh branch · Data 3 November 2026.

Contoh commit public

Bukti kontribusi

Kembali ke semua proyek