이 저장소에는 ICLR 2024 논문 "ImageNet이 1개의 비디오에 가치가 있습니까? 1개의 긴 레이블이 없는 비디오에서 강력한 이미지 인코더 학습"의 공식 구현이 포함되어 있습니다.
[ arXiv
], [ paper
], [ dataset
], [ Project Page
]
우리의 목표는 비디오 프레임의 풍부한 정보를 활용하여 강력한 표현을 구축하는 것입니다. SimCLR, DINo 등과 같은 표준 SSL 프레임워크는 종종 서로 다른 뷰 간의 대응을 가정합니다. 이는 iBOT과 같이 풀링을 통해 조밀한 표현을 사용하든 글로벌 표현을 사용하든 마찬가지입니다. 이미지에서 대응 관계를 설정하는 것은 상대적으로 간단하지만, 시간적 변형을 처리할 때는 어떤 형태의 객체 추적이 필요하므로 더욱 어려워집니다. 시야각이 넓거나 자아 움직임이 많은 영상에서는 대응이 더욱 어려워집니다.
다중 객체 발견 및 추적을 기반으로 하는 DoRA를 소개합니다. 비전 변환기의 개별 헤드에 대한 [CLS] 토큰의 주의를 활용하여 시간 시퀀스에 걸쳐 주어진 프레임 내에서 여러 객체를 식별하고 일관되게 추적합니다. 여기에는 교사-학생 증류 손실이 적용됩니다. 중요한 점은 기성 개체 추적기나 광학 흐름 네트워크를 사용하지 않는다는 것입니다. 이를 통해 파이프라인을 단순하게 유지하고 추가 데이터나 교육이 필요하지 않습니다. 또한 학습된 표현이 견고하다는 것을 보장합니다.
WTour 비디오의 전체 목록은 HuggingFace 데이터세트에서 확인할 수 있으며, YouTube는 필수 스크립트를 사용하여 다운로드하는 방법에 대한 자세한 지침을 링크합니다.
링크가 깨졌을 경우, Walking Tour Dataset에서 직접 영상을 다운로드 받으실 수 있습니다.
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의 경우 다음 사전 학습 스크립트를 사용하는 것이 좋습니다(차이는 배치_크기_당_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} }