2 poin oleh GN⁺ 4 hari lalu | 1 komentar | Bagikan ke WhatsApp
  • Untuk menemukan momen yang diinginkan tanpa menonton ulang satu per satu 2.207 video bersepeda GoPro, video diindeks dan dicari dengan model ML lokal, lalu klip terbaik langsung dikirim ke timeline DaVinci Resolve
  • Dengan memakai versi aplikasi desktop yang dioptimalkan untuk Apple Silicon seperti M1 Max, pengguna dapat meminta adegan yang diinginkan kepada agen percakapan dan langsung mengirimkannya ke timeline pengeditan
  • Terdiri dari pipeline pengindeksan berbasis transkripsi OpenAI Whisper, analisis frame (pengenalan wajah, deteksi objek, teks di layar, deskripsi adegan), dan embedding basis data vektor
  • Untuk mengindeks 628 video (668,68GB, 15 jam 13 menit 18 detik), total komputasi yang dibutuhkan mencapai 67 jam 40 menit 42 detik, atau sekitar 4,4 kali lebih lambat daripada pemutaran
  • Semua pemrosesan dilakukan di GPU/CPU lokal sehingga pustaka video berukuran besar bisa dicari tanpa cloud, dan proyek ini masih dalam pengembangan

Gambaran proyek dan motivasi

  • 2.207 video GoPro yang direkam selama perjalanan bersepeda disimpan dalam satu SSD, dan penulis ingin mencari momen-momen menarik di dalamnya tetapi tidak punya cukup waktu untuk menonton semuanya lagi
  • Sebagian besar momen direkam dengan GoPro, tetapi untuk menemukan bagian yang bagus harus menonton seluruh video sampai selesai, sehingga tidak efisien
    • Riwayat bersepeda: 2024 Casablanca→Imsouane (5 hari, lebih dari 470KM), 2023 Kenitra→Tangier (220KM dalam satu setengah hari), serta perjalanan sepeda gunung di antaranya
  • Untuk menyelesaikan masalah ini, penulis membuat sendiri proyek edit-mind
  • GitHub Repo : https://github.com/IliasHad/edit-mind

Alasan menggunakan aplikasi desktop

  • Dipilih versi aplikasi desktop yang dioptimalkan untuk Apple Silicon, sehingga momen yang diinginkan bisa ditemukan lewat agen percakapan dan langsung dikirim ke timeline pengeditan DaVinci Resolve
  • Versi Docker tidak dapat mengakses GPU M1 Max, sehingga tidak bisa memanfaatkan performa GPU
  • Aplikasi desktop menggunakan proses pengindeksan yang mirip dengan versi source-available

Proses pengindeksan

  • Saat folder dipilih di aplikasi desktop, hanya video yang diawali GX yang dipindai agar dapat dibedakan dari video ponsel
  • Jika ada trek audio, seluruh video ditranskripsikan dengan model OpenAI Whisper
  • Setelah itu dijalankan pipeline analisis frame, yang membagi video menjadi adegan-adegan individual per detik (1fps)
    • Mencakup plugin pengenalan wajah dengan data wajah kustom, deteksi objek, teks di layar, tipe shot, dan deskripsi adegan
  • Data wajah, transkripsi, dan deskripsi tiap adegan kemudian di-embedding sebagai teks dokumen dan disimpan ke basis data vektor lokal
    • Frame adegan di-embedding ke koleksi basis data vektor embedding visual untuk pencarian gambar, dan audio adegan diproses dengan cara yang sama
  • Pada akhirnya diperoleh 3 koleksi basis data vektor yang berisi informasi video
    • Termasuk metadata lokasi, nama kamera, wajah yang dikenali, objek yang terdeteksi, teks di layar, transkripsi, dan deskripsi tiap adegan

Metrik performa

  • Ini adalah pengukuran video yang diindeks menggunakan GPU dan CPU perangkat, dan karena proyek masih dalam pengembangan, angka ini belum final
  • Metrik keseluruhan

    • Video yang diindeks: 628
    • Total ukuran video: 668.68 GB
    • Total durasi video: 15 jam 13 menit 18 detik
    • Total waktu komputasi: 67 jam 40 menit 42 detik
    • Kecepatan terhadap pemutaran: 0,22x, atau sekitar 4,4 kali lebih lambat dari pemutaran
    • Frame yang dianalisis: 57.537
  • Analisis per tahap (total waktu / rata-rata per video / porsi komputasi)

    • Transkripsi (Transcription): 25 jam 12 menit 54 detik / 2 menit 25 detik / 37,3%
    • Analisis frame (Frame analysis): 24 jam 55 menit 42 detik / 2 menit 23 detik / 36,8%
    • Pembuatan adegan (Scene creation): 48 menit 0 detik / 5 detik / 1,2%
    • Embedding teks (Text embedding): 36 menit 42 detik / 5 detik / 0,9%
    • Embedding visual (Visual embedding): 11 jam 49 menit 17 detik / 1 menit 9 detik / 17,5%
    • Embedding audio (Audio embedding): 4 jam 18 menit 7 detik / 27 detik / 6,4%

Fitur pencarian

  • Penulis lebih menyukai cara bertanya tentang video lewat asisten chat, dan tersedia opsi untuk langsung mengirim hasilnya ke timeline pengeditan DaVinci Resolve
  • Jika memakai model Qwen2.5-VL-7B-Instruct pada pengindeksan mode lanjutan, data hasil pengindeksan dapat memahami dan mendeskripsikan video dengan lebih baik, tetapi kecepatan pengindeksannya menjadi lebih lambat
  • Dengan cara ini, video GoPro bisa diindeks, adegan yang diinginkan dapat dicari dan dikirim, lalu dipakai untuk membuat video berisi klip-klip terbaik

Perbandingan perangkat keras dan status pengembangan

  • Saat dijalankan di GPU NVIDIA seperti RTX 3060 (12GB VRAM), hasilnya memang lebih cepat daripada M1 Max
  • Proyek ini masih terus dikembangkan, dan perbaikan untuk mengoptimalkan akurasi serta kecepatan sedang dilakukan

Contoh prompt yang digunakan

  • "Cari semua klip saat anjing menggonggong ketika saya sedang bersepeda"
  • "Buat highlight reel dari momen paling indah dan menarik selama perjalanan sepeda"
  • "Tampilkan momen bersepeda sudut pandang orang pertama yang paling cepat dengan suara angin terdengar, lalu kirim ke DaVinci Resolve, hapus adegan duplikat"

1 komentar

 
GN⁺ 4 hari lalu
Komentar Hacker News
  • Lucu juga, beberapa hari lalu ada orang yang melakukan hal yang mirip di mesin yang nyaris sama dengan teknik serupa, dan itu juga sempat masuk halaman depan HN
    https://news.ycombinator.com/item?id=48222733
    https://blog.simbastack.com/indexed-a-year-of-video-locally/
    Saya belum tahu soal proyek ini, tapi menarik
    Saya sedang mencoba menambahkan lebih banyak fitur terkait foto ke Framedex, dan ini masa yang menyenangkan karena sekarang makin banyak hal yang bisa dilakukan secara lokal

    • Saat postingannya ada di halaman depan, proyek saya disebut di komentar jadi saya cek
      Baik artikelnya maupun proyeknya sama-sama bagus, dan model lokal terus membaik
  • Sepertinya pekerjaan seperti ini akan dikerjakan dengan LLM lokal
    Menjalankan LLM yang cepat, kecil, dan kuat secara lokal untuk mengindeks data pribadi seperti gambar, video, dan dokumen, lalu memperkaya dan memberi tag dengan metadata yang sudah diperkaya itu
    Kalau ingin mengelompokkan per orang, tinggal cari metadata bertag itu lalu dikelompokkan; kalau ingin mencari gambar lewat deskripsi, pakai metadata bertag itu juga; kalau ingin merapikan apa pun, pakai metadata bertag itu
    Semoga ini bisa mengakhiri kekacauan pengelolaan file

  • Melihat kalimat “menjalankan pipeline analisis frame akan membagi video menjadi adegan terpisah (setiap 1 detik atau 1fps)” dan “57.537 frame yang dianalisis”, jadi masuk akal
    Angka itu terdengar jauh lebih realistis daripada “669GB”, dan ukuran total semua frame yang benar-benar diproses mungkin hanya sekitar 10~30GB
    Maksudnya, kalau mau melakukannya sendiri di rumah, kita tetap perlu menghitung sisi praktisnya, bukan meremehkan pekerjaannya
    Kalau “total waktu komputasi 67 jam 40 menit 42 detik”, saya juga penasaran apakah ada opsi berbayar untuk mempercepat proses seperti ini. Apakah tinggal menjalankan instance GPU saja?

    • “669GB” adalah ukuran total seluruh rekaman mentah yang dipakai untuk pemrosesan video, dan setiap frame diturunkan ke 720p untuk mempercepat pemrosesan
      Setahu saya, kualitas penuh dari sumber asli tidak diperlukan untuk mendapatkan hasil yang akurat, dan eksperimen juga menunjukkan hal yang sama
      Sampai sekarang GPU NVIDIA seperti RTX 3060 dengan 12GB VRAM jauh lebih cepat daripada M1 Max, dan saya masih terus mengoptimalkan kecepatan serta akurasi
  • Fitur yang ternyata lebih menyenangkan dari dugaan adalah Google Photos dan Apple Photos mengirimkan foto kenangan dan kompilasi dari berbagai momen dalam hidup saya dan hidup anak-anak saya selama 10 tahun terakhir
    Saya cukup optimistis akan makin mudah bagi AI untuk nanti membuat video kompilasi pendek yang enak ditonton, jadi saya cenderung positif soal merekam lebih banyak video anak-anak saya

    • Model machine learning open source makin membaik
      Saya sempat membuat eksperimen kecil untuk menghasilkan video seperti rekap akhir tahun Spotify, dan video pratinjaunya ada di sini https://github.com/IliasHad/edit-mind/tree/expirement/year-i...
    • Apakah Anda memakai Android dan iOS sekaligus, atau ada keuntungan lain dari menyimpan media pribadi di keduanya?
    • Apakah tidak masalah kalau Google memakai data anak-anak untuk melatih model dan algoritme iklan?
      Beberapa tahun lagi mungkin Anda akan menerima hal seperti “Lihat sepeda murah terbaru dari BIKE BRAND, ingat dulu Anda pernah memakai sepeda BIKE BRAND”
  • DaVinci 21 sudah punya fitur pengindeksan bawaan bernama AI IntelliSearch
    Bukan untuk meremehkan pekerjaan ini, tapi ini sudah jadi fitur yang tersedia bagi banyak pengguna. Karena ada kata AI di namanya, kemungkinan besar ini khusus pengguna Studio

    • Saya belum melihatnya
      Tapi saya penasaran apakah video diunggah ke cloud atau diproses secara lokal
      Dan saya juga penasaran apakah pengguna bisa memberikan data wajah kustom agar membantu memberi label pada wajah di dalam video
      Sepertinya Adobe Premiere Pro juga punya fitur serupa, tetapi setahu saya pemrosesannya dilakukan di cloud
  • Keren
    Saya agak belum paham bagaimana reel dibuat lewat agen
    Apakah semacam pemanggilan tool AI yang menerima tautan gambar lalu membuat reel dengan alat penyuntingan video tertentu? Atau caranya dengan memotong waktu sebelum dan sesudah timestamp yang dikembalikan dari indeks untuk kueri tertentu lalu menyambungkannya?

    • Saya menggunakan RAG, dan semua adegan video diindeks satu per satu ke dalam database vektor
      Saat diminta ke agen, model Ollama memahami permintaan lalu menggunakan tool pencarian yang tersedia. Pencarian bisa dilakukan lewat teks transkrip, wajah, informasi visual, audio, atau kombinasinya
      Mirip seperti Claude atau ChatGPT yang memakai tool pencarian web untuk mencari informasi online
      Setelah itu saya memakai Ollama untuk menyaring adegan video agar yang ditampilkan lebih akurat dan lebih sedikit duplikasi, lalu hasilnya dikirim ke API DaVinci Resolve untuk membuat timeline dari klip-klip video
  • Apakah ini bekerja juga untuk koleksi porno?

    • Untuk penggunaan seperti itu, sepertinya perlu LoRA. Penolakan terhadap konten porno cukup kuat
      Atau mungkin perlu model tanpa sensor, meski saya tidak tahu apakah itu juga tersedia untuk visi
      Mungkin Anda juga ingin menambahkan sesuatu seperti fine-tuning YOLO untuk deteksi adegan dan pengenalan wajah
    • Pertanyaan yang penting
    • Saya tidak tahu kenapa pertanyaan yang sama selalu muncul
      Waktu saya memposting proyek ini di Reddit, saya juga mendapat pertanyaan yang sama
    • Dulu saat saya mencoba Whisper, hanya dari suara pukulan dan erangan, ia mengarang percakapan yang rumit, lalu mengeluarkannya baris demi baris selama beberapa menit
    • Saya tidak yakin ini sindiran atau bukan, tapi menurut saya ini pertanyaan yang menarik
      Karena DeepSeek bisa berjalan secara lokal, mungkinkah itu berguna untuk penggunaan seperti ini?
  • Saya kaget mengetahui CPU M1 Max adalah ARM/SoC dan masih sebanding dengan Intel i9 generasi ke-11
    Apakah saya memahaminya dengan benar? Apakah Windows ARM juga akan punya performa mirip pada CPU seperti ini?
    Referensi: https://www.cpubenchmark.net/compare/4585vs4245/Apple-M1-Max...

    • Dalam banyak hal ini lebih seperti membandingkan apel dan jeruk, tetapi ada dua faktor yang paling berpengaruh
      Berkat memori “terpadu”, seluruh memori sistem bisa dipakai seperti VRAM, dan juga ada akselerator AI tambahan khusus
      Dua hal ini membuat chip Apple Silicon bisa mengungguli CPU biasa untuk beban kerja model AI seperti ini
      Saya tidak tahu sejauh mana Windows ARM bisa melakukan hal serupa, tetapi saya tahu mereka memakai chip Qualcomm Snapdragon
    • Tidak sebanding
      M1 Max punya bandwidth memori 400GB/s, sedangkan Snapdragon X2 Elite kelas atas terbaru pun hanya 228GB/s
    • Kalau yang dimaksud “sebanding” adalah performa single-core, mungkin ada benarnya sampai batas tertentu, tetapi dalam hal bandwidth memori, M1 Max sekitar 8 kali lebih cepat
      Karena bus yang lebih lebar dan latensi yang lebih rendah, levelnya benar-benar berbeda
    • Saya belum bisa membenarkan atau membantah pertanyaan itu
      Saya belum mencoba proyek ini di mesin Windows atau mesin dengan konfigurasi seperti itu
  • https://archive.is/O6CLQ
    Saya mencoba membaca artikelnya, tetapi situs utamanya sayangnya menampilkan error Cloudflare

    • Bisa dicek lagi? Saya kurang paham kenapa muncul error Cloudflare
  • Tautannya: https://iliashaddad.com/blog/i-indexed-669-gb-of-my-gopro-vi...