- 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
GXile 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
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
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?
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
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...
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
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?
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?
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
Projeyi Reddit’e koyduğumda da aynı soruyla karşılaştım
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...
“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
M1 Max’in bellek bant genişliği 400GB/s; en yeni üst seviye Snapdragon X2 Elite ise 228GB/s
Daha geniş veri yolu ve daha düşük gecikme nedeniyle zaten aynı ligde değiller
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
Bağlantı burada https://iliashaddad.com/blog/i-indexed-669-gb-of-my-gopro-vi...