Kesalahan yang menghasilkan 10.000 gambar tidak berguna
Pendekatan yang jelas untuk mengubah video menjadi data pelatihan adalah dengan mengekstrak setiap frame. Rasanya menyeluruh. Ini hampir merupakan hal terburuk yang dapat Anda lakukan.
Frame berturut-turut dari video 30 fps berjarak 33 milidetik. Kecuali jika kamera atau subjek bergerak cepat, frame 1.001 hampir identik dengan frame 1.000 — pose yang sama, pencahayaan yang sama, latar belakang yang sama, perbedaan beberapa piksel. Kumpulan data yang terdiri dari 10.000 bingkai seperti itu tidak berisi 10.000 contoh. Ini mungkin berisi 300 situasi berbeda, masing-masing diulang tiga puluh kali.
Apa yang dilakukan hal ini terhadap pelatihan bersifat spesifik dan merusak. Biaya anotasi meningkat seiring dengan jumlah gambar, sehingga Anda membayar tiga puluh kali lipat untuk informasi yang sama. Skala waktu pelatihan juga. Dan yang paling penting, jika hampir duplikat tersebut berakhir di kedua sisi pelatihan/pembagian validasi Anda, model telah secara efektif melihat kumpulan validasi — Anda mendapatkan skor validasi yang tidak berarti apa-apa.
Jadi keputusan pertama bukanlah pengaturan alat. Yaitu: berapa banyak konten yang harus diubah sebelum sebuah frame dihitung sebagai contoh baru?
Memilih interval pengambilan sampel
Ambil dari gerakan dalam adegan, bukan dari kecepatan bingkai sumber. Beberapa titik awal yang berfungsi:
- Kamera statis, subjek lambat (pengawasan, pertumbuhan tanaman, antrean) — 1 frame setiap 2–10 detik. Apa pun yang lebih padat berarti mubazir.
- Kamera statis, subjek aktif (seseorang yang bekerja di bangku, lalu lintas) — 1 frame setiap 0,5–2 detik.
- Kamera bergerak (perangkat genggam, drone, kamera dasbor) — 2–5 frame per detik. Latar belakang terus berubah, sehingga frame tetap berbeda.
- Tindakan cepat dengan pose itu sendiri yang diberi label (olahraga, pengenalan isyarat) — 5–15 frame per detik, namun hanya di seluruh segmen yang memuat tindakan tersebut.
Cara menyelesaikannya: ekstrak segmen pengujian satu menit pada beberapa interval dan lihat hasilnya secara berdampingan. Jika Anda dapat menelusurinya dan setiap gambar memberi tahu Anda sesuatu yang baru, intervalnya tepat. Jika terasa seperti flipbook, perluaslah.
Lakukan aritmatika sebelum mengekstraksi. Frame = durasi × ​​kecepatan target. Rekaman sembilan puluh menit pada 1 bingkai per detik berarti 5.400 gambar — masuk akal dalam satu minggu anotasi. Pada 1 frame per 5 detik, hasilnya adalah 1.080, yaitu beberapa hari. Keputusan tersebut memerlukan pemikiran selama lima menit.
Dalam ekstraktor, mode "Interval Waktu" mengambil jeda dalam hitungan detik secara langsung, dan jumlah frame muncul saat Anda mengetik — jadi angka di atas terlihat sebelum Anda melakukan commit, bukan ditemukan setelahnya.
Setelan ekstraksi yang penting di bagian hilir
Format: PNG atau JPEG
Jawaban jujurnya adalah bahwa hal ini biasanya tidak terlalu menjadi masalah seperti yang diharapkan orang, namun kasus di mana hal tersebut bermanfaat adalah hal yang bermanfaat. mengetahui.
Gunakan PNG bila tugas sensitif terhadap detail halus atau artefak kompresi — deteksi cacat pada permukaan, pekerjaan yang berdekatan dengan OCR, pencitraan medis atau ilmiah, apa pun yang nantinya dapat Anda gunakan untuk mengukur nilai piksel. Gunakan JPEG pada 90–95% untuk deteksi dan klasifikasi objek umum, dengan model yang kuat terhadap kompresi ringan dan perbedaan penyimpanan lima hingga sepuluh kali lipat.
Satu aturan konsistensi apa pun pilihannya: jangan dicampur. Kumpulan data setengah PNG dan setengah JPEG dengan kualitas berbeda-beda memberikan model sinyal palsu, dan model sangat pandai dalam menemukan sinyal palsu.
Resolusi
Ekstrak pada resolusi sumber dan turunkan dalam resolusi Anda pipa prapemrosesan, bukan pada waktu ekstraksi. Anda tidak dapat memulihkan detail yang Anda buang, dan setahun dari sekarang Anda mungkin menginginkan potongan 512 piksel dari rekaman yang Anda ekstrak di 224. Penyimpanan lebih murah daripada ekstraksi ulang, terutama jika rekaman sumber diarsipkan di tempat yang tidak nyaman.
Penamaan
Nama berurutan dengan bantalan nol, cukup lebar untuk kumpulan terbesar yang pernah Anda hasilkan. frame_00001.png, bukan frame_1.png. Alat yang mengurutkan nama file sebagai teks akan diurutkan frame_10 sebelum frame_2, dan jika urutan temporal penting di bagian mana pun dalam pipeline Anda, bug tersebut tidak kentara dan sulit dikenali.
Sertakan sumber di jalur, bukan nama file, sehingga asal tetap dipertahankan:
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
Mempertahankan pemisahan sebagai jalur daftar file teks — daripada menyalin gambar secara fisik ke direktori train/ dan val/ — berarti Anda bisa dipisah ulang tanpa menyalin ulang, dan Anda dapat melihat dengan pasti apa yang terjadi.
Aturan pemisahan yang benar-benar penting
Ini adalah bagian yang patut dibaca dua kali, karena ini adalah perbedaan antara tolok ukur yang dapat Anda percayai dan yang tidak dapat Anda percayai.
Dibagi berdasarkan video sumber, tidak pernah berdasarkan bingkai.
Jika Anda mengacak semua bingkai dan mengambil pemisahan 80/20 secara acak, bingkai dari detik yang sama pada video yang sama akan mendarat di kedua sisi. Set validasi hampir merupakan salinan dari set pelatihan, dan akurasi validasi Anda mengukur hafalan. Model yang dilatih dengan cara ini secara rutin melaporkan 97–99% dan kemudian gagal pada rekaman yang benar-benar baru, dan kegagalan tersebut membingungkan sampai Anda melihat bagaimana pemisahan tersebut dilakukan.
Pendekatan yang benar: tetapkan seluruh video untuk dilatih, divalidasi, dan diuji. Jika Anda hanya memiliki satu video berdurasi panjang, pisahkan video tersebut berdasarkan waktu menjadi blok-blok yang berdekatan — 70% pelatihan pertama, 15% validasi berikutnya, 15% pengujian terakhir — dan hilangkan beberapa detik di setiap sisi batas sehingga tidak ada pasangan yang hampir duplikat yang melintasinya.
Jika memungkinkan, lakukan lebih jauh: tahan seluruh rekaman sesi, kamera, atau lokasi untuk set pengujian. Hal ini mengukur apakah model melakukan generalisasi pada seluruh kondisi dan bukan pada stempel waktu, yang hampir selalu menjadi pertanyaan yang benar-benar Anda pedulikan.
Bekerja secara lokal, dan mengapa hal ini sering penting di sini
Catatan praktis khusus untuk domain ini: video penelitian dan industri sering kali merupakan materi yang tidak dapat diunggah begitu saja — rekaman pasien, rekaman orang yang menyetujui penelitian dan bukan layanan cloud, lini produksi berpemilik, eksperimen pra-publikasi.
Ekstraksi berbasis browser menyimpan file di mesin; tidak ada yang ditransfer, hal ini penting jika batasannya adalah persetujuan etika atau perjanjian pemrosesan data, bukan preferensi. Anda dapat mengonfirmasi hal ini daripada mempercayainya — muat halaman, putuskan sambungan dari jaringan, dan ekstrak. Jika masih berfungsi, tidak ada yang terjadi. metode untuk memverifikasi bahwa membutuhkan waktu sekitar satu menit.
Perjelas batasannya. Frame disimpan dalam memori hingga diunduh, sehingga sumber yang panjang perlu diproses dalam potongan rentang waktu. Untuk pipeline berulang yang mencakup ratusan file, skrip FFmpeg lokal adalah alat yang tepat — browser ditujukan untuk pekerjaan eksplorasi, untuk ekstraksi satu kali, dan untuk kasus di mana Anda ingin melihat bingkai sambil menentukan interval.
Daftar periksa sebelum anotasi dimulai
Anotasi adalah langkah yang mahal. Menangkap ini sebelum dimulai akan menghemat banyak waktu:
- Halaman melewati 50 bingkai acak. Apakah keduanya terlihat berbeda satu sama lain? Jika tidak, perluas intervalnya dan ekstrak ulang — sekarang, bukan setelah pelabelan.
- Periksa keseimbangan kelas. Pengambilan sampel waktu yang seragam memberi Anda frame yang sebanding dengan berapa lama sesuatu ditampilkan di layar, bukan sebanding dengan seberapa besar Anda peduli terhadapnya. Peristiwa langka memerlukan ekstraksi yang ditargetkan dari rentang waktu spesifiknya.
- Hapus bingkai mati. Memudar, bingkai hitam pada potongan, suar lensa, tangan seseorang menutupi lensa. Alat ini menimbulkan kebisingan dan membutuhkan waktu anotasi.
- Konfirmasi pemisahan berdasarkan video atau blok waktu, tidak berdasarkan frame yang diacak.
- Catat asal usulnya. File sumber, interval, tanggal ekstraksi, format dan kualitas, di samping kumpulan data. Dalam enam bulan Anda perlu mereproduksi atau memperluasnya, dan merekonstruksi "interval berapa yang saya gunakan" dari gambar itu tidak menyenangkan.
Semua ini tidak sulit. Ini hanya diputuskan sebelum ekstraksi, bukan ditemukan setelah anotasi, dan itulah perbedaannya.