Repo ini berisi implementasi resmi makalah ICLR 2024 "Apakah ImageNet bernilai 1 video? Mempelajari pembuat enkode gambar yang kuat dari 1 video panjang tanpa label"
[ arXiv
], [ paper
], [ dataset
], [ Project Page
]
Tujuan kami adalah membangun representasi yang kuat dengan memanfaatkan kekayaan informasi dalam bingkai video. Kerangka kerja SSL standar seperti SimCLR, DINo, dll. sering kali mengasumsikan korespondensi antara tampilan yang berbeda. Hal ini berlaku baik menggunakan representasi padat atau global dengan menggabungkan misalnya iBOT. Meskipun relatif mudah untuk membangun korespondensi dalam gambar, hal ini menjadi lebih menantang ketika berhadapan dengan deformasi temporal, yang memerlukan beberapa bentuk pelacakan objek. Dalam video dengan bidang pandang atau gerak ego yang luas, mendapatkan korespondensi menjadi lebih sulit.
Kami memperkenalkan DoRA, berdasarkan Penemuan dan pelacakan multi-objek. Ini memanfaatkan perhatian dari token [CLS] dari kepala yang berbeda dalam transformator visi untuk mengidentifikasi dan secara konsisten melacak banyak objek dalam bingkai tertentu di seluruh urutan temporal. Pada hal ini, kerugian distilasi guru-siswa kemudian diterapkan. Yang penting, kami tidak menggunakan pelacak objek atau jaringan aliran optik apa pun. Hal ini membuat pipeline kami tetap sederhana dan tidak memerlukan data atau pelatihan tambahan apa pun. Hal ini juga memastikan bahwa representasi yang dipelajari kuat.
Daftar lengkap video WTour tersedia di Kumpulan Data HuggingFace, terdiri dari tautan YouTube, petunjuk terperinci tentang cara mengunduhnya menggunakan skrip yang diperlukan.
Jika tautannya rusak, Anda dapat mengunduh video langsung dari Kumpulan Data Tur Jalan Kaki
Untuk mematuhi GDPR, kami juga mencoba memburamkan semua wajah dan pelat nomor yang muncul di video menggunakan Deface
Untuk melakukan ini pada semua video di kumpulan data WTour:
python3 -m pip install deface
Kemudian jalankan Deface pada semua video menggunakan skrip bash:
chmod a+x gdpr_blur_faces.sh ./gdpr_blur_faces.sh
Persyaratannya mudah diinstal melalui Anaconda. Di sini kita membuat lingkungan conda yang disebut dora dan menginstal semua perpustakaan yang diperlukan
conda create -n dora python=3.8.2 conda activate dora conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.7 -c pytorch -c nvidia conda install pillow==9.4.0 scipy tensorboardX faiss-gpu==1.6.1 tqdm lmdb scikit-learn pyarrow==2.0.0 DALL-E munkres six einops
Jika Anda menggunakan GPU V100 dengan RAM 32 GB, sebaiknya gunakan skrip berikut untuk melakukan pra-pelatihan DoRA:
python -m torch.distributed.launch --nproc_per_node=8 main.py --arch vit_small --data_path /path-to-video/venice.mp4 --output_dir /path-to-checkpoint/weights_WTours/DoRA/venice_8frames/ --optimizer adamw --use_bn_in_head False --out_dim 65536 --batch_size_per_gpu 6 --local_crops_number 6 --epochs 100 --num_workers 10 --lr 0.0005 --min_lr 0.00001 --norm_last_layer False --warmup_teacher_temp_epochs 30 --weight_decay 0.04 --weight_decay_end 0.4 --frame_per_clip 8 --step_between_clips 60
Untuk GPU A100 dengan RAM 80 GB, sebaiknya gunakan skrip pra-pelatihan berikut (perbedaannya hanya pada batch_size_per_gpu):
python -m torch.distributed.launch --nproc_per_node=8 main.py --arch vit_small --data_path /path-to-video/venice.mp4 --output_dir /path-to-checkpoint/weights_WTours/DoRA/venice_8frames/ --optimizer adamw --use_bn_in_head False --out_dim 65536 --batch_size_per_gpu 16 --local_crops_number 6 --epochs 100 --num_workers 10 --lr 0.0005 --min_lr 0.00001 --norm_last_layer False --warmup_teacher_temp_epochs 30 --weight_decay 0.04 --weight_decay_end 0.4 --frame_per_clip 8 --step_between_clips 60
Anda dapat mengunduh bobot tulang punggung terlatih yang digunakan untuk tugas hilir. Semua tulang punggung adalah model ViT-S/16
.
zaman | Model | Kumpulan Data yang Telah Dilatih sebelumnya | Unduh | ||||
---|---|---|---|---|---|---|---|
100 | DINO | WT-Venesia | tulang punggung | ||||
100 | DoRA | WT-Venesia | tulang punggung | ||||
300 | DoRA | WT-Venesia | tulang punggung | ||||
100 | DoRA | WT-semuanya | tulang punggung |
Untuk pemeriksaan Linear di ImageNet-1K
python -m torch.distributed.launch --nproc_per_node=4 eval_linear.py --batch_size_per_gpu 512 --n_last_blocks 4 --avgpool_patchtokens 0 --arch vit_small --lr 0.01 --pretrained_weights /path-to-checkpoint/venice/checkpoint.pth --data_path /dataset/imagenet/ --output_dir /path-to-output-dir/venice/LP/
Untuk evaluasi KNN pada ImageNet-1K
python3 -m torch.distributed.launch --nproc_per_node=4 eval_knn.py --arch vit_small --checkpoint_key teacher --data_path /dataset/imagenet/ --pretrained_weights /path-to-checkpoint/venice/checkpoint.pth
Silakan ikuti skrip evaluasi dari iBOT
(melakukan)
Jika Anda merasa repositori ini berguna, mohon pertimbangkan untuk memberikan bintang dan kutipan:
@inproceedings{venkataramanan2024imagenet, title={Is ImageNet worth 1 video? Learning strong image encoders from 1 long unlabelled video}, author={Venkataramanan, Shashanka and Rizve, Mamshad Nayeem and Carreira, Jo{~a}o and Asano, Yuki M and Avrithis, Yannis}, booktitle={International Conference on Learning Representations}, year={2024} }