10.000 işe yaramaz görüntü üreten hata

Videoyu eğitim verilerine dönüştürmenin bariz yaklaşımı her kareyi çıkarmaktır. Kapsamlı bir his veriyor. Bu, yapabileceğiniz en kötü şeye yakındır.

30 fps videonun ardışık kareleri 33 milisaniye aralıklarladır. Kamera veya nesne hızlı hareket etmediği sürece, 1.001. kare 1.000. kareyle hemen hemen aynıdır; aynı poz, aynı ışık, aynı arka plan, birkaç piksel fark. Bu tür 10.000 çerçeveden oluşan bir veri kümesi 10.000 örnek içermez. Her biri otuz kez tekrarlanan yaklaşık 300 farklı durum içerir.

Bunun eğitime ne yaptığı spesifik ve zarar vericidir. Ek açıklama maliyeti görsel sayısına göre ölçeklenir, dolayısıyla aynı bilgi için otuz kat fazla ödeme yaparsınız. Eğitim süresi de ölçekleniyor. Ve en önemlisi, neredeyse kopyalar eğitim/doğrulama ayrımının her iki tarafında da yer alıyorsa, model doğrulama kümesini etkili bir şekilde görmüştür; hiçbir anlam ifade etmeyen bir doğrulama puanı alırsınız.

Dolayısıyla ilk karar bir araç ayarı değildir. Şöyle: Bir karenin yeni bir örnek olarak sayılması için içeriğin ne kadar değişmesi gerekir?

Örnekleme aralığını seçme

Bunu kaynak kare hızından değil, sahnedeki hareketten elde edin. Bazı çalışma başlangıç ​​noktaları:

  • Statik kamera, yavaş konu (gözetim, büyüyen bir bitki, bir kuyruk) — her 2-10 saniyede bir 1 kare. Daha yoğun olan her şey gereksizdir.
  • Statik kamera, aktif konu (bankada çalışan bir kişi, trafik) — her 0,5–2 saniyede bir 1 kare.
  • Hareketli kameraya yükleyin (el tipi, drone, araç kamerası) — saniyede 2–5 kare. Arka plan sürekli değiştiği için kareler farklı kalır.
  • Pozun kendisinin etiket olduğu hızlı işlem (spor, hareket tanıma) — Saniyede 5-15 kare, ancak yalnızca eylemi içeren segmentlerde.

Bunu çözmenin yolu: birkaç aralıklarla bir dakikalık bir test segmenti çıkarın ve sonuçlara yan yana bakın. Sayfaları inceleyebilirseniz ve her görüntü size yeni bir şey anlatıyorsa aralık doğrudur. Bir flipbook'a benziyorsa genişletin.

Çıkartmadan önce aritmetik işlemi yapın. Kareler = süre × hedef hız. Saniyede 1 kare ile doksan dakikalık çekim, 5.400 görüntü anlamına gelir; bu da muhtemelen bir haftalık açıklama gerektirir. 5 saniyede 1 karede 1.080'dir, bu da birkaç gündür. Bu karar beş dakikalık düşünmeye değer.

çıkarıcı, "Zaman Aralığı" modu boşluğu doğrudan saniyeler içinde alır ve kare sayısı siz yazarken görünür; böylece yukarıdaki sayı daha sonra keşfedilmek yerine işlemeden önce görünür.

Aşağı yönde önemli olan çıkarma ayarları

Biçim: PNG veya JPEG

Dürüst cevap şu ki, genellikle insanların beklediği kadar önemli değil, ancak olduğu durumlar değer. bilmek.

Kullan PNG görev ince ayrıntılara veya sıkıştırma eserlerine duyarlı olduğunda — yüzeylerde kusur tespiti, OCR bitişik çalışma, tıbbi veya bilimsel görüntüleme, daha sonra piksel değerlerini ölçebileceğiniz herhangi bir şey. %90-95'te JPEG modellerin hafif sıkıştırmaya dayanıklı olduğu ve depolama farkının beş ila on kat olduğu genel nesne algılama ve sınıflandırma için.

Seçim ne olursa olsun tek bir tutarlılık kuralı: karıştırmayın. Yarısı PNG ve yarısı JPEG olan ve değişen kalitede bir veri kümesi, modele sahte bir sinyal verir ve modeller sahte sinyalleri bulmada çok iyidir.

Çözünürlük

Kaynak çözünürlükte çıkarın ve ölçeği küçültün. çıkarma zamanında değil, ön işleme hattınızda. Attığınız ayrıntıları kurtaramazsınız ve bundan bir yıl sonra, 224'te çıkardığınız görüntüden 512 piksellik kırpmalar isteyebilirsiniz. Depolama, yeniden çıkarmaktan daha ucuzdur, özellikle de kaynak görüntü uygunsuz bir yerde arşivlendiyse.

Adlandırma

Sıfır dolgulu sıralı adlar, şimdiye kadar üreteceğiniz en büyük set için yeterince geniş. frame_00001.png değil, frame_1.png. Dosya adlarını metin olarak sıralayan araçlar, frame_10 önce frame_2 ve eğer zamansal düzen ardışık düzeninizin herhangi bir yerinde önemliyse, bu hata incelikli ve fark edilmesi zordur.

Kaynağını dosya adı yerine yola ekleyin, böylece kaynağın hayatta kalması için:

dataset/
                  raw/
                    cam01_2026-03-14/
                      frame_00001.png
                      frame_00002.png
                    cam02_2026-03-14/
                      frame_00001.png
                  splits/
                    train.txt
                    val.txt
                    test.txt

Görüntüleri fiziksel olarak train/ ve val/ dosyalarına kopyalamak yerine, bölmeyi yolları listeleyen metin dosyaları olarak tutmak dizinler — yeniden kopyalamaya gerek kalmadan yeniden bölebileceğiniz ve neyin nereye gittiğini tam olarak görebileceğiniz anlamına gelir.

Aslında önemli olan bölme kuralı

Bu, iki kez okumaya değer kısımdır, çünkü güvenebileceğiniz bir kıyaslama ile güvenemeyeceğiniz bir karşılaştırma arasındaki farktır.

Kaynak videoya bölün, asla kareye göre bölün.

Tüm kareleri karıştırır ve rastgele 80/20 bölme yaparsanız, aynı videonun aynı saniyesindeki kareler her iki tarafa da yerleşir. Doğrulama seti bu durumda eğitim setinin neredeyse bir kopyası olur ve doğrulama doğruluğunuz ezberlemeyi ölçer. Bu şekilde eğitilen modeller rutin olarak %97-99 oranında rapor verir ve ardından gerçekten yeni görüntülerde başarısız olur ve bölünmenin nasıl yapıldığına bakana kadar bu başarısızlık kafa karıştırıcıdır.

Doğru yaklaşım: Videoların tamamını eğitime, doğrulamaya ve teste atayın. Yalnızca bir uzun videonuz varsa, onu zamana göre bitişik bloklara bölün (ilk %70 eğitim, sonraki %15 doğrulama, son %15 test) ve her sınırın her iki yanında birkaç saniye atın, böylece neredeyse yinelenen çiftler onun üzerinde kalmaz.

Mümkün olduğunda daha da ileri gidin: kaydın tamamını uzatın oturumlar, kameralar veya test seti için konumlar. Bu, modelin zaman damgaları yerine koşullar genelinde genelleme yapıp yapmadığını ölçer; bu neredeyse her zaman asıl ilgilendiğiniz sorudur.

Yerel olarak çalışmak ve burada neden genellikle önemli olduğu

Bu alana özel pratik bir not: araştırma ve endüstriyel videolar genellikle gelişigüzel yüklenemeyen materyallerdir - hasta kayıtları, bulut hizmetine değil, bir çalışmaya rıza gösteren kişilerin görüntüleri, özel üretim hatları, yayın öncesi deneyler.

Tarayıcı tabanlı çıkarma, dosyayı makinede tutar; hiçbir şey aktarılmaz; bu, kısıtlamanın bir tercihten ziyade bir etik onayı veya bir veri işleme sözleşmesi olması durumunda önemlidir. Bunu güvenmek yerine onaylayabilirsiniz; sayfayı yükleyin, ağ bağlantısını kesin ve çıkarın. Eğer hala çalışıyorsa hiçbir şey bir yere gitmiyor demektir. bunu doğrulama yöntemi yaklaşık bir dakika sürer.

Sınırlar konusunda da aynı derecede net olun. Çerçeveler indirilene kadar bellekte tutulur, bu nedenle uzun kaynakların zaman aralıklı parçalar halinde işlenmesi gerekir. Yüzlerce dosya üzerinde tekrarlanabilir bir ardışık düzen için yerel bir FFmpeg komut dosyası doğru araçtır; tarayıcı, keşif amaçlı çalışmalar, tek seferlik çıkarmalar ve aralığa karar verirken kareleri görmek istediğiniz durumlar içindir.

Ek açıklama başlamadan önce bir kontrol listesi

Ek açıklama pahalı bir adımdır. Bunları başlamadan önce yakalamak en fazla zaman tasarrufu sağlar:

  1. 50 rastgele kare boyunca sayfalar. Birbirlerinden gözle görülür şekilde farklılar mı? Değilse, aralığı genişletin ve etiketlemeden sonra değil, şimdi yeniden çıkarın.
  2. Sınıf dengesini kontrol edin. Tekdüzen zaman örneklemesi, size onları ne kadar önemsediğinizle orantılı değil, ekranda ne kadar süre kaldığıyla orantılı kareler verir. Nadir olayların, belirli zaman aralıklarından hedefli olarak çıkarılması gerekir.
  3. Ölü kareleri kaldırın. Soluklaşmalar, kesimlerde siyah çerçeveler, mercek parlaması, birinin merceği eline alması. Bunlar gürültüdür ve açıklama ekleme süresine mal olur.
  4. Bölünmenin videoya veya zaman bloğuna göre olduğunu doğrulayın, karıştırılmış çerçeveye göre değil.
  5. Kaynağı kaydedin. Veri kümesinin yanı sıra kaynak dosya, aralık, çıkarma tarihi, format ve kalite. Altı ay içinde onu yeniden üretmeniz veya genişletmeniz gerekecek ve görüntülerden "hangi aralığı kullandım"ı yeniden oluşturmak pek hoş değil.

Bunların hiçbiri zor değil. Açıklamadan sonra keşfedilmek yerine çıkarmadan önce karar verilir, bütün fark budur.