إطار عمل لتدريب نماذج الأساس متعددة الوسائط من أي إلى أي.
قابلة للتطوير. مفتوحة المصدر. عبر عشرات الطرائق والمهام.
EPFL - أبل
Website
| BibTeX
| ? Demo
التنفيذ الرسمي والنماذج المدربة مسبقًا من أجل:
4M: النمذجة المقنعة متعددة الوسائط على نطاق واسع ، NeurIPS 2023 (تسليط الضوء)
ديفيد مزراحي*، رومان باشمان*، أوغوزهان فاتح كار، تيريزا يو، مينغفي غاو، أفشين دهغان، أمير زمير
4M-21: نموذج رؤية شامل لعشرات المهام والطرائق ، NeurIPS 2024
رومان باشمان*، أوغوزهان فاتح كار*، ديفيد مزراحي*، علي جارجاني، مينغفي غاو، ديفيد غريفيث، جيامينغ هو، أفشين دهغان، أمير زمير
4M هو إطار عمل لتدريب النماذج الأساسية "من أي شيء إلى أي شخص"، باستخدام الترميز والإخفاء للتوسع في العديد من الأساليب المتنوعة. يمكن للنماذج التي تم تدريبها باستخدام 4M أن تؤدي مجموعة واسعة من مهام الرؤية، وتنتقل بشكل جيد إلى المهام والطرائق غير المرئية، كما أنها نماذج توليدية متعددة الوسائط مرنة وقابلة للتوجيه. نحن نصدر أكوادًا ونماذج لـ "4M: النمذجة المقنعة متعددة الوسائط على نطاق واسع" (يُشار إليها هنا بـ 4M-7)، بالإضافة إلى "4M-21: نموذج رؤية متكامل لعشرات المهام والطرائق" (يُشار إليه هنا بـ 4M -21).
git clone https://github.com/apple/ml-4m
cd ml-4m
conda create -n fourm python=3.9 -y
conda activate fourm
pip install --upgrade pip # enable PEP 660 support
pip install -e .
# Run in Python shell
import torch
print(torch.cuda.is_available()) # Should return True
إذا لم يكن CUDA متاحًا، فكر في إعادة تثبيت PyTorch باتباع إرشادات التثبيت الرسمية. وبالمثل، إذا كنت تريد تثبيت xFormers (اختياري، لمحولات الرموز المميزة الأسرع)، فاتبع ملف README الخاص بهم للتأكد من صحة إصدار CUDA.
نحن نقدم غلافًا تجريبيًا للبدء سريعًا في استخدام نماذج 4M لمهام إنشاء RGB-to-all أو {caption,bounding box}-to-all. على سبيل المثال، لإنشاء جميع الطرائق من مدخلات RGB معينة، اتصل بما يلي:
from fourm . demo_4M_sampler import Demo4MSampler , img_from_url
sampler = Demo4MSampler ( fm = 'EPFL-VILAB/4M-21_XL' ). cuda ()
img = img_from_url ( 'https://storage.googleapis.com/four_m_site/images/demo_rgb.png' ) # 1x3x224x224 ImageNet-standardized PyTorch Tensor
preds = sampler ({ 'rgb@224' : img . cuda ()}, seed = None )
sampler . plot_modalities ( preds , save_path = None )
يجب أن تتوقع رؤية مخرجات مثل ما يلي:
لإجراء إنشاء تسمية توضيحية للجميع، يمكنك استبدال إدخال أداة أخذ العينات عن طريق: preds = sampler({'caption': 'A lake house with a boat in front [S_1]'})
. للحصول على قائمة بنماذج 4M المتاحة، يرجى الاطلاع على حديقة الحيوان النموذجية أدناه، وراجع README_GENERATION.md لمزيد من الإرشادات حول الإنشاء.
راجع README_DATA.md للحصول على إرشادات حول كيفية إعداد مجموعات البيانات المتعددة الوسائط المتوافقة.
راجع README_TOKENIZATION.md للحصول على إرشادات حول كيفية تدريب أدوات الرموز المميزة الخاصة بالطريقة.
راجع README_TRAINING.md للحصول على إرشادات حول كيفية تدريب نماذج 4M.
راجع README_GENERATION.md للحصول على إرشادات حول كيفية استخدام نماذج 4M للاستدلال/الإنشاء. نوفر أيضًا دفتر ملاحظات للجيل يحتوي على أمثلة لاستدلال 4M، وعلى وجه التحديد أداء إنشاء الصور المشروطة ومهام الرؤية المشتركة (أي RGB-to-All).
نحن نقدم نقاط تفتيش 4M وTokenizer كأدوات أمان، ونوفر أيضًا سهولة التحميل عبر Hugging Face Hub.
نموذج | # وزارة الدفاع. | مجموعات البيانات | #بارامس | التكوين | الأوزان |
---|---|---|---|---|---|
4M-ب | 7 | CC12M | 198 م | التكوين | نقطة تفتيش / محور التردد العالي |
4M-ب | 7 | كويو 700 م | 198 م | التكوين | نقطة تفتيش / محور التردد العالي |
4M-ب | 21 | CC12M+كويو700M+C4 | 198 م | التكوين | نقطة تفتيش / محور التردد العالي |
4M-L | 7 | CC12M | 705 م | التكوين | نقطة تفتيش / محور التردد العالي |
4M-L | 7 | كويو 700 م | 705 م | التكوين | نقطة تفتيش / محور التردد العالي |
4M-L | 21 | CC12M+كويو700M+C4 | 705 م | التكوين | نقطة تفتيش / محور التردد العالي |
4M-XL | 7 | CC12M | 2.8 ب | التكوين | نقطة تفتيش / محور التردد العالي |
4M-XL | 7 | كويو 700 م | 2.8 ب | التكوين | نقطة تفتيش / محور التردد العالي |
4M-XL | 21 | CC12M+كويو700M+C4 | 2.8 ب | التكوين | نقطة تفتيش / محور التردد العالي |
لتحميل النماذج من Hugging Face Hub:
from fourm . models . fm import FM
fm7b_cc12m = FM . from_pretrained ( 'EPFL-VILAB/4M-7_B_CC12M' )
fm7b_coyo = FM . from_pretrained ( 'EPFL-VILAB/4M-7_B_COYO700M' )
fm21b = FM . from_pretrained ( 'EPFL-VILAB/4M-21_B' )
fm7l_cc12m = FM . from_pretrained ( 'EPFL-VILAB/4M-7_L_CC12M' )
fm7l_coyo = FM . from_pretrained ( 'EPFL-VILAB/4M-7_L_COYO700M' )
fm21l = FM . from_pretrained ( 'EPFL-VILAB/4M-21_L' )
fm7xl_cc12m = FM . from_pretrained ( 'EPFL-VILAB/4M-7_XL_CC12M' )
fm7xl_coyo = FM . from_pretrained ( 'EPFL-VILAB/4M-7_XL_COYO700M' )
fm21xl = FM . from_pretrained ( 'EPFL-VILAB/4M-21_XL' )
لتحميل نقاط التفتيش يدويًا، قم أولاً بتنزيل ملفات أدوات الأمان من الروابط أعلاه ثم اتصل:
from fourm . utils import load_safetensors
from fourm . models . fm import FM
ckpt , config = load_safetensors ( '/path/to/checkpoint.safetensors' )
fm = FM ( config = config )
fm . load_state_dict ( ckpt )
تمت تهيئة هذه النماذج باستخدام نماذج 4M-7 CC12M القياسية، ولكن استمر التدريب باستخدام خليط من الأساليب المنحازة بشدة نحو مدخلات النص. ولا يزال بإمكانهم أداء جميع المهام الأخرى، ولكن أداءهم أفضل في إنشاء تحويل النص إلى صورة مقارنة بالنماذج غير المضبوطة.
نموذج | # وزارة الدفاع. | مجموعات البيانات | #بارامس | التكوين | الأوزان |
---|---|---|---|---|---|
4M-T2I-B | 7 | CC12M | 198 م | التكوين | نقطة تفتيش / محور التردد العالي |
4M-T2I-L | 7 | CC12M | 705 م | التكوين | نقطة تفتيش / محور التردد العالي |
4M-T2I-XL | 7 | CC12M | 2.8 ب | التكوين | نقطة تفتيش / محور التردد العالي |
لتحميل النماذج من Hugging Face Hub:
from fourm . models . fm import FM
fm7b_t2i_cc12m = FM . from_pretrained ( 'EPFL-VILAB/4M-7-T2I_B_CC12M' )
fm7l_t2i_cc12m = FM . from_pretrained ( 'EPFL-VILAB/4M-7-T2I_L_CC12M' )
fm7xl_t2i_cc12m = FM . from_pretrained ( 'EPFL-VILAB/4M-7-T2I_XL_CC12M' )
يتم إجراء التحميل يدويًا من نقاط التفتيش بنفس الطريقة المذكورة أعلاه بالنسبة لنماذج 4M الأساسية.
نموذج | # وزارة الدفاع. | مجموعات البيانات | #بارامس | التكوين | الأوزان |
---|---|---|---|---|---|
4M-SR-L | 7 | CC12M | 198 م | التكوين | نقطة تفتيش / محور التردد العالي |
لتحميل النماذج من Hugging Face Hub:
from fourm . models . fm import FM
fm7l_sr_cc12m = FM . from_pretrained ( 'EPFL-VILAB/4M-7-SR_L_CC12M' )
يتم إجراء التحميل يدويًا من نقاط التفتيش بنفس الطريقة المذكورة أعلاه بالنسبة لنماذج 4M الأساسية.
الطريقة | دقة | عدد الرموز | حجم كتاب الرموز | فك التشفير | الأوزان |
---|---|---|---|---|---|
RGB | 224-448 | 196-784 | 16 ك | ✓ | نقطة تفتيش / محور التردد العالي |
عمق | 224-448 | 196-784 | 8 كيلو | ✓ | نقطة تفتيش / محور التردد العالي |
الأعراف | 224-448 | 196-784 | 8 كيلو | ✓ | نقطة تفتيش / محور التردد العالي |
الحواف (كاني، SAM) | 224-512 | 196-1024 | 8 كيلو | ✓ | نقطة تفتيش / محور التردد العالي |
COCO التقسيم الدلالي | 224-448 | 196-784 | 4K | ✗ | نقطة تفتيش / محور التردد العالي |
كليب-ب/16 | 224-448 | 196-784 | 8 كيلو | ✗ | نقطة تفتيش / محور التردد العالي |
دينوv2-ب/14 | 224-448 | 256-1024 | 8 كيلو | ✗ | نقطة تفتيش / محور التردد العالي |
DINOv2-B/14 (عالمي) | 224 | 16 | 8 كيلو | ✗ | نقطة تفتيش / محور التردد العالي |
إيماجبيند-H/14 | 224-448 | 256-1024 | 8 كيلو | ✗ | نقطة تفتيش / محور التردد العالي |
ImageBind-H/14 (عالمي) | 224 | 16 | 8 كيلو | ✗ | نقطة تفتيش / محور التردد العالي |
حالات سام | - | 64 | 1 ك | ✗ | نقطة تفتيش / محور التردد العالي |
أوضاع الإنسان ثلاثية الأبعاد | - | 8 | 1 ك | ✗ | نقطة تفتيش / محور التردد العالي |
لتحميل النماذج من Hugging Face Hub:
from fourm . vq . vqvae import VQVAE , DiVAE
# 4M-7 modalities
tok_rgb = DiVAE . from_pretrained ( 'EPFL-VILAB/4M_tokenizers_rgb_16k_224-448' )
tok_depth = DiVAE . from_pretrained ( 'EPFL-VILAB/4M_tokenizers_depth_8k_224-448' )
tok_normal = DiVAE . from_pretrained ( 'EPFL-VILAB/4M_tokenizers_normal_8k_224-448' )
tok_semseg = VQVAE . from_pretrained ( 'EPFL-VILAB/4M_tokenizers_semseg_4k_224-448' )
tok_clip = VQVAE . from_pretrained ( 'EPFL-VILAB/4M_tokenizers_CLIP-B16_8k_224-448' )
# 4M-21 modalities
tok_edge = DiVAE . from_pretrained ( 'EPFL-VILAB/4M_tokenizers_edge_8k_224-512' )
tok_dinov2 = VQVAE . from_pretrained ( 'EPFL-VILAB/4M_tokenizers_DINOv2-B14_8k_224-448' )
tok_dinov2_global = VQVAE . from_pretrained ( 'EPFL-VILAB/4M_tokenizers_DINOv2-B14-global_8k_16_224' )
tok_imagebind = VQVAE . from_pretrained ( 'EPFL-VILAB/4M_tokenizers_ImageBind-H14_8k_224-448' )
tok_imagebind_global = VQVAE . from_pretrained ( 'EPFL-VILAB/4M_tokenizers_ImageBind-H14-global_8k_16_224' )
sam_instance = VQVAE . from_pretrained ( 'EPFL-VILAB/4M_tokenizers_sam-instance_1k_64' )
human_poses = VQVAE . from_pretrained ( 'EPFL-VILAB/4M_tokenizers_human-poses_1k_8' )
لتحميل نقاط التفتيش يدويًا، قم أولاً بتنزيل ملفات أدوات الأمان من الروابط أعلاه ثم اتصل:
from fourm . utils import load_safetensors
from fourm . vq . vqvae import VQVAE , DiVAE
ckpt , config = load_safetensors ( '/path/to/checkpoint.safetensors' )
tok = VQVAE ( config = config ) # Or DiVAE for models with a diffusion decoder
tok . load_state_dict ( ckpt )
يتم إصدار التعليمات البرمجية الموجودة في هذا المستودع بموجب ترخيص Apache 2.0 كما هو موجود في ملف الترخيص.
يتم إصدار أوزان النماذج الموجودة في هذا المستودع بموجب ترخيص نموذج التعليمات البرمجية كما هو موجود في ملف LICENSE_WEIGHTS.
إذا وجدت هذا المستودع مفيدًا، فيرجى التفكير في الاستشهاد بعملنا:
@inproceedings{4m,
title={{4M}: Massively Multimodal Masked Modeling},
author={David Mizrahi and Roman Bachmann and O{u{g}}uzhan Fatih Kar and Teresa Yeo and Mingfei Gao and Afshin Dehghan and Amir Zamir},
booktitle={Thirty-seventh Conference on Neural Information Processing Systems},
year={2023},
}
@article{4m21,
title={{4M-21}: An Any-to-Any Vision Model for Tens of Tasks and Modalities},
author={Roman Bachmann and O{u{g}}uzhan Fatih Kar and David Mizrahi and Ali Garjani and Mingfei Gao and David Griffiths and Jiaming Hu and Afshin Dehghan and Amir Zamir},
journal={arXiv 2024},
year={2024},
}