В этом репозитории содержится официальная реализация документа ICLR 2024 «Стоит ли ImageNet 1 видео? Изучение надежных кодировщиков изображений на основе 1 длинного видео без метки»
[ arXiv
], [ paper
], [ dataset
], [ Project Page
]
Наша цель — создать надежные представления, используя богатую информацию в видеокадрах. Стандартные инфраструктуры SSL, такие как SimCLR, DINo и т. д., часто предполагают соответствие между различными представлениями. Это справедливо как при использовании плотных, так и глобальных представлений путем объединения, например iBOT. Хотя установить соответствия в изображениях относительно просто, это становится более сложной задачей при работе с временными деформациями, требующими некоторой формы отслеживания объекта. В видеороликах с большим полем зрения или эго-движением получить соответствия становится еще сложнее.
Мы представляем DoRA, основанную на многообъектном обнаружении и отслеживании. Он использует внимание токена [CLS] отдельных голов в преобразователе зрения для идентификации и последовательного отслеживания нескольких объектов в данном кадре во временных последовательностях. Затем к ним применяются потери при перегонке преподаватель-ученик. Важно отметить, что мы не используем готовые средства отслеживания объектов или сети оптического потока. Это делает наш конвейер простым и не требует каких-либо дополнительных данных или обучения. Это также гарантирует, что изученное представление является надежным.
Полный список видеороликов WTour доступен в наборе данных HuggingFace, включая ссылки на YouTube и подробные инструкции по его загрузке с использованием необходимых скриптов.
В случае, если ссылки не работают, вы можете скачать видео прямо из набора данных пешеходного тура.
Чтобы соответствовать GDPR, мы также стараемся размыть все лица и номерные знаки, появляющиеся в видео, с помощью Deface.
Чтобы сделать это для всех видео в наборе данных WTour:
python3 -m pip install deface
Затем запустите Deface на всех видео, используя скрипт bash:
chmod a+x gdpr_blur_faces.sh ./gdpr_blur_faces.sh
Требования легко устанавливаются через Anaconda. Здесь мы создаем среду conda под названием dora и устанавливаем все необходимые библиотеки.
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
Если вы используете графические процессоры V100 с 32 ГБ ОЗУ, мы рекомендуем использовать следующий скрипт для предварительного обучения 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
Для графических процессоров A100 с 80 ГБ ОЗУ мы рекомендуем использовать следующий сценарий предварительного обучения (разница заключается только в пакетном размере_пер_гпу):
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/
Для оценки KNN на 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
Пожалуйста, следуйте оценочным сценариям от 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} }