Este repositório é o ponto de entrada para todas as coisas, uma família de modelos autoregressivos que ultrapassa os limites da aprendizagem visual e multimodal:
Multimodal Autoregressive Pre-training of Large Vision Encoders [ BibTeX ]Scalable Pre-training of Large Autoregressive Image Models [ BibTeX ]*: Contribuição técnica igual
Se você está procurando o modelo de AIM original (AIMV1), consulte o ReadMe aqui.
Introduzimos os modelos AIMV2 Family of Vision, pré-treinados com um objetivo autoregressivo multimodal. O pré-treinamento AIMV2 é simples e direto para treinar e escalar efetivamente. Alguns destaques do AIMV2 incluem:
Compartilhamos com os pontos de verificação pré-treinados da Comunidade AIMV2 de capacidades variadas, resoluções pré-treinamento:
AIMv2 with 224px ]AIMv2 with 336px ]AIMv2 with 448px ]AIMv2 with Native Resolution ]AIMv2 distilled ViT-Large ] ( recomendado para aplicações multimodais )Zero-shot Adapted AIMv2 ] Instale o Pytorch usando as instruções oficiais de instalação. Depois, instale o pacote como:
pip install 'git+https://github.com/apple/ml-aim.git#subdirectory=aim-v1'
pip install 'git+https://github.com/apple/ml-aim.git#subdirectory=aim-v2'
Também oferecemos suporte de back -end da MLX para pesquisa e experimentação no Apple Silicon. Para ativar o suporte a MLX, basta executar:
pip install mlx
from PIL import Image
from aim . v2 . utils import load_pretrained
from aim . v1 . torch . data import val_transforms
img = Image . open (...)
model = load_pretrained ( "aimv2-large-patch14-336" , backend = "torch" )
transform = val_transforms ( img_size = 336 )
inp = transform ( img ). unsqueeze ( 0 )
features = model ( inp ) from PIL import Image
import mlx . core as mx
from aim . v2 . utils import load_pretrained
from aim . v1 . torch . data import val_transforms
img = Image . open (...)
model = load_pretrained ( "aimv2-large-patch14-336" , backend = "mlx" )
transform = val_transforms ( img_size = 336 )
inp = transform ( img ). unsqueeze ( 0 )
inp = mx . array ( inp . numpy ())
features = model ( inp ) from PIL import Image
import jax . numpy as jnp
from aim . v2 . utils import load_pretrained
from aim . v1 . torch . data import val_transforms
img = Image . open (...)
model , params = load_pretrained ( "aimv2-large-patch14-336" , backend = "jax" )
transform = val_transforms ( img_size = 336 )
inp = transform ( img ). unsqueeze ( 0 )
inp = jnp . array ( inp )
features = model . apply ({ "params" : params }, inp )Os modelos pré-treinados podem ser acessados via HUGGINGFACE HUB COMO:
from PIL import Image
from transformers import AutoImageProcessor , AutoModel
image = Image . open (...)
processor = AutoImageProcessor . from_pretrained ( "apple/aimv2-large-patch14-336" )
model = AutoModel . from_pretrained ( "apple/aimv2-large-patch14-336" , trust_remote_code = True )
inputs = processor ( images = image , return_tensors = "pt" )
outputs = model ( ** inputs )| model_id | #params | In-1k | Link hf | Espinha dorsal |
|---|---|---|---|---|
| AIMV2-LARGE-PATCH14-224 | 0,3b | 86.6 | ?link | link |
| AIMV2-HUGE-PATCH14-224 | 0,6b | 87.5 | ?link | link |
| AIMV2-1B-PACK14-224 | 1.2b | 88.1 | ?link | link |
| AIMV2-3B-PACK14-224 | 2.7b | 88.5 | ?link | link |
| model_id | #params | In-1k | Link hf | Espinha dorsal |
|---|---|---|---|---|
| AIMV2-LARGE-PATCH14-336 | 0,3b | 87.6 | ?link | link |
| AIMV2-HUGE-PACK14-336 | 0,6b | 88.2 | ?link | link |
| AIMV2-1B-PACK14-336 | 1.2b | 88.7 | ?link | link |
| AIMV2-3B-PACK14-336 | 2.7b | 89.2 | ?link | link |
| model_id | #params | In-1k | Link hf | Espinha dorsal |
|---|---|---|---|---|
| AIMV2-LARGE-PATCH14-448 | 0,3b | 87.9 | ?link | link |
| AIMV2-HUGE-PACK14-448 | 0,6b | 88.6 | ?link | link |
| AIMV2-1B-PACK14-448 | 1.2b | 89.0 | ?link | link |
| AIMV2-3B-PACK14-448 | 2.7b | 89.5 | ?link | link |
Além disso, fornecemos um ponto de verificação AIMV2-L que é o FinetUned para processar uma ampla gama de resoluções de imagem e proporções. Independentemente da proporção, a imagem é patchificada (patch_size = 14) e uma incorporação posicional sinusoidal 2D é adicionada aos patches de entrada projetados linearmente. Este ponto de verificação suporta o número de patches na faixa de [112, 4096] .
| model_id | #params | In-1k | Link hf | Espinha dorsal |
|---|---|---|---|---|
| AIMV2-LARGE-PATCH14-NATIVA | 0,3b | 87.3 | ?link | link |
Fornecemos um ponto de verificação AIMV2-L destilado do AIMV2-3B, que fornece um desempenho notável para os benchmarks de entendimento multimodal.
| Modelo | VQAV2 | GQA | OKVQA | TextVqa | Docvqa | Infovqa | ChartQa | Sciqa | Mmep |
|---|---|---|---|---|---|---|---|---|---|
| AIMV2-L | 80.2 | 72.6 | 60.9 | 53.9 | 26.8 | 22.4 | 20.3 | 74.5 | 1457 |
| AIMV2-L-Distilitado | 81.1 | 73.0 | 61.4 | 53.5 | 29.2 | 23.3 | 24.0 | 76.3 | 1627 |
| model_id | #params | Res. | Link hf | Espinha dorsal |
|---|---|---|---|---|
| AIMV2-LARGE-PATCH14-224-DISTILIADO | 0,3b | 224px | ?link | link |
| AIMV2-LARGE-PATCH14-336-DISTILIADO | 0,3b | 336px | ?link | link |
Fornecemos os codificadores de visão e texto AIMV2-L após o ajuste aceso para permitir o reconhecimento de tiro zero.
| modelo | #params | Zero-shot in1-k | Espinha dorsal |
|---|---|---|---|
| AIMV2-L | 0,3b | 77.0 | link |
Se você achar útil nosso trabalho, considere nos citar como:
@misc { fini2024multimodal ,
title = { Multimodal Autoregressive Pre-training of Large Vision Encoders } ,
author = { Enrico Fini and Mustafa Shukor and Xiujun Li and Philipp Dufter and Michal Klein and David Haldimann and Sai Aitharaju and Victor Guilherme Turrisi da Costa and Louis Béthune and Zhe Gan and Alexander T Toshev and Marcin Eichner and Moin Nabi and Yinfei Yang and Joshua M. Susskind and Alaaeldin El-Nouby } ,
year = { 2024 } ,
eprint = { 2411.14402 } ,
archivePrefix = { arXiv } ,
primaryClass = { cs.CV }
} @InProceedings { pmlr-v235-el-nouby24a ,
title = { Scalable Pre-training of Large Autoregressive Image Models } ,
author = { El-Nouby, Alaaeldin and Klein, Michal and Zhai, Shuangfei and Bautista, Miguel '{A}ngel and Shankar, Vaishaal and Toshev, Alexander T and Susskind, Joshua M. and Joulin, Armand } ,
booktitle = { Proceedings of the 41st International Conference on Machine Learning } ,
pages = { 12371--12384 } ,
year = { 2024 } ,
}Confira a licença do repositório antes de usar o código e os modelos fornecidos.