การซื้อคืนนี้มีการดำเนินการอย่างเป็นทางการของรายงาน ICLR 2024 "Is ImageNet คุ้มค่ากับวิดีโอ 1 รายการหรือไม่ การเรียนรู้ตัวเข้ารหัสรูปภาพที่แข็งแกร่งจากวิดีโอขนาดยาวที่ไม่มีป้ายกำกับ 1 รายการ"
[ arXiv
], [ paper
], [ dataset
], [ Project Page
]
เป้าหมายของเราคือการสร้างการนำเสนอที่มีประสิทธิภาพโดยใช้ประโยชน์จากข้อมูลที่หลากหลายในเฟรมวิดีโอ เฟรมเวิร์ก SSL มาตรฐาน เช่น SimCLR, DINo ฯลฯ มักจะถือว่าสอดคล้องกันระหว่างมุมมองที่ต่างกัน สิ่งนี้เป็นจริงไม่ว่าจะใช้การนำเสนอแบบหนาแน่นหรือแบบสากลโดยการรวมกลุ่ม เช่น iBOT แม้ว่าการสร้างความสอดคล้องกันในภาพจะค่อนข้างตรงไปตรงมา แต่เมื่อต้องรับมือกับการเสียรูปชั่วคราว ซึ่งจำเป็นต้องมีการติดตามวัตถุในรูปแบบใดรูปแบบหนึ่ง ในวิดีโอที่มีขอบเขตการมองเห็นกว้างหรือมีอีโก้โมชั่น การได้รับจดหมายโต้ตอบจะยิ่งยากขึ้น
เราเปิดตัว DoRA โดยอิงจากการค้นพบหลายอ็อบเจ็กต์และ tRAcking โดยใช้ประโยชน์จากความสนใจจากโทเค็น [CLS] ของส่วนหัวที่แตกต่างกันใน Vision Transformer เพื่อระบุและติดตามวัตถุหลายชิ้นอย่างสม่ำเสมอภายในเฟรมที่กำหนดตลอดลำดับเวลา จากนั้นจึงใช้การสูญเสียการกลั่นระหว่างครูและนักเรียน ที่สำคัญ เราไม่ได้ใช้ตัวติดตามวัตถุที่มีจำหน่ายทั่วไปหรือเครือข่ายการไหลของแสง สิ่งนี้ทำให้ไปป์ไลน์ของเราเรียบง่ายและไม่ต้องใช้ข้อมูลเพิ่มเติมหรือการฝึกอบรมใดๆ นอกจากนี้ยังช่วยให้แน่ใจว่าการเป็นตัวแทนที่เรียนรู้นั้นแข็งแกร่ง
รายการวิดีโอ WTour ทั้งหมดมีอยู่ในชุดข้อมูล HuggingFace ซึ่งประกอบด้วยลิงก์ YouTube คำแนะนำโดยละเอียดเกี่ยวกับวิธีการดาวน์โหลดโดยใช้สคริปต์ที่จำเป็น
ในกรณีที่ลิงก์เสีย คุณสามารถดาวน์โหลดวิดีโอได้โดยตรงจากชุดข้อมูล Walking Tour
เพื่อให้สอดคล้องกับ GDPR เรายังพยายามเบลอใบหน้าและป้ายทะเบียนทั้งหมดที่ปรากฏในวิดีโอโดยใช้ Deface
หากต้องการทำเช่นนี้กับวิดีโอทั้งหมดในชุดข้อมูล WTour:
python3 -m pip install deface
จากนั้นเรียกใช้ Deface บนวิดีโอทั้งหมดโดยใช้สคริปต์ทุบตี:
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
หากคุณใช้ GPU V100 ที่มี RAM ขนาด 32GB เราขอแนะนำให้ใช้สคริปต์ต่อไปนี้เพื่อฝึก 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 GPU ที่มี RAM ขนาด 80GB เราขอแนะนำให้ใช้สคริปต์การฝึกล่วงหน้าต่อไปนี้ (ความแตกต่างคือใน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/
สำหรับการประเมิน 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} }