2 puan yazan GN⁺ 4 일 전 | 1 yorum | WhatsApp'ta paylaş
  • 2.207 GoPro bisiklet videosunu tek tek yeniden izlemeden istenen anları bulmak için, yerel ML modelleri ile videoları indeksleyip arıyor ve en iyi klipleri doğrudan DaVinci Resolve zaman çizelgesine gönderiyor
  • M1 Max gibi Apple Silicon için optimize edilmiş masaüstü uygulama sürümünü kullanarak, konuşmalı bir ajandan istenen sahneleri talep edip bunları doğrudan kurgu zaman çizelgesine aktarabiliyor
  • OpenAI Whisper transkripsiyonu, kare analizi (yüz tanıma, nesne tespiti, ekrandaki metin, sahne açıklaması) ve vektör veritabanı gömmelerinden oluşan bir indeksleme hattı kurdu
  • 628 videoyu (668,68 GB, 15 saat 13 dakika 18 saniye) indekslemek toplam 67 saat 40 dakika 42 saniye hesaplama gerektiriyor; bu da oynatma süresine göre yaklaşık 4,4 kat daha yavaş
  • Tüm işlemler yerel GPU/CPU üzerinde yapıldığı için bulut olmadan büyük video arşivlerinde arama yapılabiliyor; proje şu anda geliştirme aşamasında

Projeye genel bakış ve motivasyon

  • Bisiklet yolculuklarında çekilmiş 2.207 GoPro videosunu tek bir SSD’de saklıyor ve bunların içindeki etkileyici anları aramak istiyor, ancak hepsini yeniden izlemeye vakti yok
  • Anların çoğunu GoPro ile kaydetmiş olsa da iyi kısımları bulmak için tüm videoları sonuna kadar izlemek gerektiğinden bu süreç verimsiz
    • Bisiklet geçmişi: 2024’te Casablanca→Imsouane (5 günde 470 km’den fazla), 2023’te Kenitra→Tangier (1,5 günde 220 km), aralarda dağ bisikleti gezileri
  • Bu sorunu çözmek için edit-mind projesini kendisi geliştirdi
  • GitHub deposu: https://github.com/IliasHad/edit-mind

Neden masaüstü uygulama?

  • Apple Silicon optimizasyonlu masaüstü uygulama sürümünü seçti; böylece konuşmalı ajanla istenen anları bulup bunları doğrudan DaVinci Resolve kurgu zaman çizelgesine gönderebiliyor
  • Docker sürümü M1 Max GPU’suna erişemediği için GPU performansından yararlanamıyor
  • Masaüstü uygulama, source-available sürüme benzer bir indeksleme süreci kullanıyor

İndeksleme süreci

  • Masaüstü uygulamada klasör seçildiğinde, telefon videolarından ayırmak için yalnızca GX ile başlayan videoları tarıyor
  • Ses parçası varsa tüm videoyu OpenAI Whisper modeli ile metne döküyor
  • Ardından kare analiz hattı çalışıyor ve videoyu 1 saniyelik aralıklarla (1 fps) ayrı sahnelere bölüyor
    • Özel yüz verileri kullanan yüz tanıma eklentisi, nesne tespiti, ekran içi metin, çekim türü ve sahne açıklaması buna dahil
  • Sahnelerin yüz, transkripsiyon ve açıklama verilerini belge metni olarak embed edip yerel vektör veritabanına kaydediyor
    • Sahne kareleri, görüntü araması için görsel embedding vektör veritabanı koleksiyonuna gömülüyor; sahne sesi de aynı şekilde işleniyor
  • Sonuçta video bilgilerini içeren 3 vektör veritabanı koleksiyonu elde ediliyor
    • Konum meta verisi, kamera adı, tanınan yüzler, tespit edilen nesneler, ekrandaki metin, transkripsiyon, her sahnenin açıklaması vb. dahil

Performans metrikleri

  • Bunlar cihazın GPU ve CPU’su ile işlenen indeksleme videolarına ait ölçümler; proje geliştirme aşamasında olduğu için nihai rakamlar değil
  • Genel metrikler

    • İndekslenen video sayısı: 628
    • Toplam video boyutu: 668,68 GB
    • Toplam video süresi: 15 saat 13 dakika 18 saniye
    • Toplam hesaplama süresi: 67 saat 40 dakika 42 saniye
    • Oynatmaya göre hız: 0,22x, yani oynatmadan yaklaşık 4,4 kat daha yavaş
    • Analiz edilen kare sayısı: 57.537
  • Adım adım analiz (toplam süre / video başına ortalama / hesaplama payı)

    • Transkripsiyon: 25 saat 12 dakika 54 saniye / 2 dakika 25 saniye / %37,3
    • Kare analizi: 24 saat 55 dakika 42 saniye / 2 dakika 23 saniye / %36,8
    • Sahne oluşturma: 48 dakika 0 saniye / 5 saniye / %1,2
    • Metin embedding: 36 dakika 42 saniye / 5 saniye / %0,9
    • Görsel embedding: 11 saat 49 dakika 17 saniye / 1 dakika 9 saniye / %17,5
    • Ses embedding: 4 saat 18 dakika 7 saniye / 27 saniye / %6,4

Arama işlevi

  • Videolar hakkında soru sormak için sohbet asistanı yaklaşımını tercih ediyor ve sonuçları doğrudan DaVinci Resolve kurgu zaman çizelgesine gönderme seçeneği sunuyor
  • Gelişmiş mod indekslemede Qwen2.5-VL-7B-Instruct modeli kullanılırsa videoyu daha iyi anlayan ve betimleyen indeksleme verileri elde edilebiliyor, ancak indeksleme hızı daha da düşüyor
  • Bu yöntemle GoPro videolarını indeksleyip istenen sahneleri arayarak ve aktararak iyi kliplerle video üretiyor

Donanım karşılaştırması ve geliştirme durumu

  • RTX 3060 (12 GB VRAM) gibi bir NVIDIA GPU üzerinde çalıştırıldığında M1 Max’ten daha hızlıydı
  • Proje hâlâ geliştirme aşamasında ve doğruluk ile hız optimizasyonu için iyileştirmeler sürüyor

Kullanılan istem örnekleri

  • "Bisiklet sürerken köpeğin havladığı tüm klipleri bul"
  • "Bisiklet yolculuğundaki en manzaralı ve ilgi çekici anlardan bir highlight reel oluştur"
  • "Rüzgar sesinin duyulduğu en hızlı birinci şahıs sürüş anlarını göster ve DaVinci Resolve’a gönder, tekrar eden sahneleri kaldır"

1 yorum

 
GN⁺ 4 일 전
Hacker News yorumları
  • Birkaç gün önce neredeyse aynı makinede benzer bir teknikle aynı şeyi yapmıştım; bunun da HN ana sayfasına çıkması komik olmuş
    https://news.ycombinator.com/item?id=48222733
    https://blog.simbastack.com/indexed-a-year-of-video-locally/
    Bu projeyi bilmiyordum ama ilginçmiş
    Framedex’e fotoğrafla ilgili daha fazla özellik eklemeye çalışıyorum; yerelde yapılabilecek şeylerin çok artması gerçekten heyecan verici bir dönem olduğunu gösteriyor

    • Yazı ana sayfadayken yorumlarda benim projemden bahsedildiğini gördüm, ben de bakmaya geldim
      Hem yazı hem proje güzeldi ve yerel modeller giderek daha iyi hale geliyor
  • Bu tür işleri muhtemelen yerel LLM’lerle yapacağız
    Hızlı, küçük ama güçlü LLM’leri yerelde çalıştırıp görüntü, video, belge gibi kişisel verileri indekslemek, zenginleştirmek ve zenginleştirilmiş metadata ile etiketlemek mümkün olacak
    Kişilere göre gruplamak istiyorsan etiketlenmiş metadata’yı arayıp gruplayabilirsin; açıklamayla görsel bulmak istiyorsan yine etiketlenmiş metadata’yı kullanırsın; herhangi bir şeyi düzenlemek istiyorsan da aynı şekilde etiketlenmiş metadata işe yarar
    Umarım bu, dosya düzeni karmaşasını bitirir

  • “Kare analiz hattını çalıştırınca videoyu ayrı sahnelere böldü (her biri 1 saniye ya da 1fps)” ve “57.537 analiz edilmiş kare” ifadelerini görünce mantıklı geldi
    Bu sayı, “669GB”dan çok daha gerçekçi geliyor; fiilen işlenen karelerin toplam boyutu muhtemelen 10~30GB civarındaydı
    Evde bunu kendin yapacaksan her zaman pratiklik hesabı yapmak gerekir; yaptığın işi küçümsediğimden değil
    “Toplam hesaplama süresi 67 saat 40 dakika 42 saniye” ise, bunu hızlı yapmaya yarayan ücretli bir seçenek olup olmadığını merak ettim. Sadece bir GPU instance’ı açmak yeterli mi?

    • “669GB”, video işleme için kullanılan ham çekimlerin toplam boyutu ve işleme hızını artırmak için her kare 720p’ye düşürüldü
      Doğru sonuçlar almak için orijinalin tam kalitesine ihtiyaç olmadığını biliyorum; deneyler de bunu gösterdi
      Şimdiye kadar 12GB VRAM’li RTX 3060 gibi bir NVIDIA GPU, M1 Max’ten çok daha hızlıydı; hâlâ hız ve doğruluk optimizasyonu üzerinde çalışıyorum
  • Beklediğimden daha keyifli çıkan özelliklerden biri, Google Photos ve Apple Photos’un son 10 yıldaki hayatımdan ve çocuklarımın hayatından çeşitli anları anı fotoğrafları ve derlemeler olarak göndermesiydi
    Gelecekte yapay zekanın bunları güzel kısa derleme videolarına dönüştürmesinin giderek kolaylaşacağını düşündüğüm için, çocuklarımın daha fazla videosunu çekme konusunda oldukça iyimserim

    • Açık kaynak makine öğrenimi modelleri giderek daha iyi oluyor
      Spotify yıl sonu özeti benzeri videolar üreten küçük bir deneme yaptım; önizleme videosu burada https://github.com/IliasHad/edit-mind/tree/expirement/year-i...
    • Hem Android hem iOS mu kullanıyorsun, yoksa kişisel medyayı ikisinde birden tutmanın başka bir avantajı mı var?
    • Google’ın çocukları kullanarak modellerini ve reklam algoritmalarını eğitmesi sorun değil mi?
      Birkaç yıl sonra “BIKE BRAND’in yeni uygun fiyatlı bisikletine göz atın, eskiden BIKE BRAND bisiklet sürdüğünüzü hatırlıyor musunuz” gibi şeyler göreceksin
  • DaVinci 21’de AI IntelliSearch adlı yerleşik bir indeksleme özelliği var
    Emeğini küçümsemek için söylemiyorum ama artık birçok kullanıcıya sunulan bir özellik bu. Adında AI geçtiğine göre muhtemelen yalnızca Studio kullanıcılarına açıktır

    • Buna daha bakmadım
      Ama videoyu buluta mı yüklüyor, yoksa yerelde mi işliyor, bunu merak ediyorum
      Bir de videodaki yüzleri etiketlemeye yardımcı olması için kullanıcıya özel yüz verisi verilebiliyor mu, bunu merak ediyorum
      Adobe Premiere Pro’da da benzer bir özellik var gibi görünüyor ama onun bulutta çalıştığını sanıyorum
  • Güzel iş çıkarmışsın
    Ajan üzerinden reel’leri nasıl oluşturduğunu pek anlayamadım
    Görsel bağlantılarını alıp bir video düzenleme aracı için AI araç çağrısı mı yapıyorsun? Yoksa belirli bir sorguyla indeksten dönen zaman damgalarının öncesi ve sonrasını kesip birleştirme şeklinde mi çalışıyor?

    • RAG kullanıyorum ve tüm video sahnelerini tek tek vektör veritabanına indeksledim
      Ajana istek gönderdiğinde Ollama modeli isteği anlıyor ve kullanılabilir arama araçlarını kullanıyor. Arama; transkript metni, yüzler, görsel bilgiler, ses ya da bunların birleşimi üzerinden yapılabiliyor
      Bu, Claude veya ChatGPT’nin çevrimiçi bilgi bulmak için web arama aracını kullanmasına benziyor
      Sonrasında Ollama ile video sahnelerini filtreleyip daha doğru ve daha az tekrar içeren sahneler seçiyorum; ardından sonucu DaVinci Resolve API’ye göndererek video kliplerinden bir timeline oluşturuyorum
  • Porno derlemelerinde de çalışıyor mu?

    • Bu kullanım için muhtemelen LoRA gerekir. Porno içeriğini reddetme eğilimi güçlü
      Ya da sansürü kaldırılmış bir model gerekir ama bunun görsel tarafta işe yarayıp yaramadığını bilmiyorum
      Sahne tespiti ve yüz tanıma için YOLO fine-tuning gibi şeyler de eklemek isteyebilirsin
    • Asıl önemli soruyu soruyorsun
    • Bu sorunun neden hep geldiğini bilmiyorum
      Projeyi Reddit’e koyduğumda da aynı soruyla karşılaştım
    • Whisper’ı daha önce denediğimde, sadece vurma sesleri ve inlemeleri duyup bunlardan ayrıntılı bir diyalog halüsinasyonu üretmişti; üstelik bunları satır satır çıkarması dakikalar sürmüştü
    • Alay mı ediyor bilmiyorum ama bence ilginç bir soru
      DeepSeek yerelde çalıştığına göre bu tür kullanım için işe yarar mı?
  • M1 Max CPU’nun ARM/SoC olup 11. nesil Intel i9 ile kıyaslanabilecek düzeyde olmasına şaşırdım
    Doğru mu anladım? Windows ARM de böyle bir CPU’da benzer performans verir mi?
    Referans: https://www.cpubenchmark.net/compare/4585vs4245/Apple-M1-Max...

    • Çeşitli nedenlerle bu biraz elmayla armudu karşılaştırmak gibi ama en büyük etkisi olan iki şey var
      “Birleşik” bellek sayesinde tüm sistem belleğini VRAM gibi kullanabiliyorsun ve ayrıca özel bir AI yardımcı hızlandırıcısı da var
      Bu ikisi nedeniyle Apple Silicon çipleri, bu tür yapay zeka model iş yüklerinde sıradan CPU’ları ezip geçebiliyor
      Windows ARM tarafında neler mümkün bilmiyorum ama Qualcomm Snapdragon çipleri kullandığını biliyorum
    • Kıyas kabul etmez
      M1 Max’in bellek bant genişliği 400GB/s; en yeni üst seviye Snapdragon X2 Elite ise 228GB/s
    • “Karşılaştırılabilir” derken tek çekirdek performansını kastediyorsan kısmen doğru olabilir ama bellek bant genişliğinde M1 Max yaklaşık 8 kat daha hızlı
      Daha geniş veri yolu ve daha düşük gecikme nedeniyle zaten aynı ligde değiller
    • Bu soruya ne doğrulama ne de yalanlama yapabilirim
      Bu projeyi henüz Windows makinede ya da böyle bir yapılandırmada denemedim
  • https://archive.is/O6CLQ
    Yazıyı okumaya çalıştım ama ana web sitesi ne yazık ki Cloudflare hatası veriyordu

    • Bir daha kontrol eder misin? Neden Cloudflare hatası göründüğünü pek anlayamıyorum
  • Bağlantı burada https://iliashaddad.com/blog/i-indexed-669-gb-of-my-gopro-vi...