該倉庫包含 ICLR 2024 論文「Is ImageNetworth 1 video? Learning Strong image Encoders from 1 long unlabeled video」的官方實現
[ arXiv
], [ paper
], [ dataset
], [ Project Page
]
我們的目標是透過利用視訊幀中的豐富資訊來建立強大的表示。標準 SSL 框架(例如 SimCLR、DINo 等)通常假定不同視圖之間存在對應關係。無論是透過池化使用密集表示或全域表示(例如 iBOT),都是如此。雖然在影像中建立對應關係相對簡單,但在處理時間變形時變得更具挑戰性,需要某種形式的物件追蹤。在具有大視野或自我運動的影片中,獲得對應變得更加困難。
我們介紹基於多物件發現和追蹤的DoRA。它利用視覺轉換器中不同頭部的 [CLS] 標記的注意力來跨時間序列識別並一致地追蹤給定幀內的多個物件。然後對這些應用師生蒸餾損失。重要的是,我們不使用任何現成的物件追蹤器或光流網路。這使我們的管道保持簡單,不需要任何額外的數據或培訓。它也確保學習到的表示是穩健的。
HuggingFace 資料集中提供了 WTour 影片的完整列表,其中包括 YouTube 連結以及有關如何使用必要腳本下載影片的詳細說明。
如果連結損壞,您可以直接從徒步旅行資料集下載視頻
為了遵守 GDPR,我們也嘗試使用 Deface 模糊影片中出現的所有臉孔和車牌
要對 WTour 資料集中的所有影片執行此操作:
python3 -m pip install deface
然後使用 bash 腳本對所有影片執行 Deface:
chmod a+x gdpr_blur_faces.sh ./gdpr_blur_faces.sh
這些要求可以透過 Anaconda 輕鬆安裝。這裡我們創建一個名為dora的conda環境並安裝所有必要的庫
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
如果您使用具有 32GB RAM 的 V100 GPU,我們建議使用以下腳本來預先訓練 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
對於具有 80GB RAM 的 A100 GPU,我們建議使用以下預訓練腳本(唯一的差異在於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
您可以下載用於下游任務的預訓練主幹網路的權重。所有主幹網均為ViT-S/16
型號。
紀元 | 模型 | 預訓練資料集 | 下載 | ||||
---|---|---|---|---|---|---|---|
100 | 恐龍 | WT-威尼斯 | 骨幹 | ||||
100 | 多拉 | WT-威尼斯 | 骨幹 | ||||
300 | 多拉 | WT-威尼斯 | 骨幹 | ||||
100 | 多拉 | WT-全部 | 骨幹 |
用於 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/
用於 ImageNet-1K 上的 KNN 評估
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
請遵循 iBOT 的評估腳本
(待辦事項)
如果您發現此儲存庫有用,請考慮給予星號和引用:
@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} }