timm documentation
Changelog
Changelog
3 de novembro de 2026
reset_classifier()e reconstrução de checkpoint: correções em ViT, EVA, BEiT, NaFlexViT, RepViT e iFormer preservar a posição da normalização e as configurações de destilação ao exportar / recarregar modelos após alterar o classificador ou o pooling. Também corrigir a exportação de PiT não agrupado e EfficientFormerV2 com destilação desativada.- NaFlex: corrigir a posição da normalização em ViT / EVA durante a conversão, suportar alinhamento SwiGLU para checkpoints de DINOv3 / Lingbot e preservar canais de entrada em escala de cinza / não-RGB nos carregadores de dados.
- Correção do agrupamento de decaimento de taxa de aprendizado por camada para RepViT, HGNet, MViTv2 e ViTs com pré-normalização, e dos tamanhos de recursos do InceptionNeXt com
output_stride=8/16. - Release 1.0.31.
24 de outubro de 2026
forward_intermediates()eprune_intermediate_layers()agora são suportados por todos os modelos. Adicionados recentemente para CSPNet, NFNet, DLA, DenseNet (#2870, obrigado ghaith-mq), CoaT, ConViT, ConvMixer, CrossViT, HRNet, Inception-v3, Inception-ResNet-v2, NASNet, PNASNet, SelecSLS, SENet, Sequencer2d, VGG, Visformer, Xception e Aligned Xception, comprune_intermediate_layers()para os codificadores NaFlexViT e MobileNetV5. CoaT, ConViT, ConvMixer, CrossViT e Visformer ganham suporte afeatures_only.prune_intermediate_layers()correçõesprune_head=Trueremove a cabeça inteira (normalização da cabeça, camadas pré-logits, pooling de atenção), de modo que o modelo podado não deixe parâmetros não utilizados (DDP semfind_unused_parameters), exceto CoaT, CrossViT e HRNet quando apenas algumas de suas escalas/ramificações paralelas são mantidas. Passeprune_head=Falsepara mantê-la.- O pruning de um modelo hierárquico para um estágio anterior remove a normalização final e a cabeça dimensionadas para o último estágio,
forward_features()termina no último recurso mantido enum_features/head_hidden_sizecorrespondem a ele. O pruning para o recurso do caule remove o pooling do caule após ele. - Correções para grad checkpointing,
stop_early, remoção de class token / pós-rede e TorchScript de modelos podados /feature_cls='getter'em várias famílias.
head_hidden_sizeé a largura real pré-logits (pooling) em todos os modelos, incluindo pooling concat (catavgmax) e apósreset_classifier(). Tipos de pooling que um modelo não pode aplicar agora geram erro na criação / reset, em vez de serem ignorados silenciosamente ou falharem no forward.- Outras correções: a saída do VOLO com
num_classes=0é o embedding do token de classe (correspondendo aforward_head(pre_logits=True)), oreset_classifier()dovit_pe_corecom um pool que não émapremove o pool de atenção, a exportação do tipo de pool viasave_for_hflê o pooling atual do head, e checkpoints headless (num_classes=0) de Swin, SwinV2, DaViT e NextViT são recarregados corretamente.
13 de outubro de 2026
- Varreduras de hiperparâmetros por meio de um novo
sweep.py: busca por grade / aleatória sobre qualquer argumento detrain.py, um--configefetivo por job, executado em um pool de GPUs locais e retomável. Varreduras WSD treinam um tronco estável por combinação de hiperparâmetros e ramificam cooldowns independentes a partir de seus checkpoints de marco, comparando o annealing em vários orçamentos por uma fração do custo de execuções completas. Consulte a documentação de treinamento. train.py:--resume autoretoma no local a partir do própriolast.pth.tardo experimento (o histórico de checkpoints,model_bestesummary.csvpermanecem consistentes),--stop-epoch Ninterrompe sem alterar o cronograma,--save-epochs N [N ...]mantém snapshotsmilestone-N.pth.tare os valores do YAML--configsão validados em relação aos argumentos do script.- Descontinuar
PlateauLRScheduler(--sched plateau). Os agendadores dotimmsão funções sem estado da época ou da contagem de atualizações; o agendamento de platô orientado por métrica nunca se encaixou nesse modelo e seu estado não é checkpointado, de modo que o retomar nunca foi exato. Usecosineouwsd. - Docs: nova página Model API, páginas de família de modelos geradas para cada módulo de modelo substituindo as antigas páginas por modelo, e páginas de referência expandidas para dados / perda / modelos.
- Correções de consistência da API de modelos:
reset_classifier()mantém o pooling atual em todos os modelos, argumentos desconhecidos do construtor geramTypeErrorem todos os casos,dynamic_img_sizeda família Swin, decaimento de taxa de aprendizado por camada no LeViT, nomes deno_weight_decayque não correspondiam a nenhum parâmetro (NesT, SwinV2, XCiT, FocalNet), estado de redimensionamento registrado para todas as famílias deset_input_size. - Correções: GCViT misturava imagens de consulta global dentro de um lote, checkpointing de gradiente para RDNet e MobileNetV5, tamanho de entrada de teste desatualizado em
save_for_hf, redimensionamento retangular no EfficientViT (MSRA), erros de conversão de imagem no ImageDataset (#2846).reparameterize_modelmovido paratimm.models.
9 de outubro de 2026
- Adicione CSPNeXt (backbone do RTMDet)
cspnext_{tiny,s,m,l,x}com pesos de classificação ImageNet-1k convertidos do OpenMMLab. Agradecimentos a Munehiro Kobayashi. - Melhorias nos otimizadores
- Implementações Foreach (multi-tensor) para RMSpropTF, LaProp, LAMB, LARS, AdaBelief. Os passos Foreach são divididos em blocos pelo tamanho da cache L2 do dispositivo (
TIMM_FOREACH_CHUNK_SIZEpara sobrescrever). - Clipping de atualização RMS (
clipping_threshold) para AdamWLegacy / NAdamW, novas variantes decopladas / corrigidas de weight decay NovoGrad (novogradw,novogradc). - Correções de correção em vários otimizadores, incluindo decaimento de peso corrigido com tensor atualizado in-place lr, paradas de atualização FP16 em lr pequeno, tratamento de estado de baixa precisão (Kron, AdaBelief, NovoGrad) e mais nenhuma modificação in-place de
p.grad. - Correções de
torch.compile/ CUDA graph para Adopt, SGDW, AdafactorBV. - Novos documentos do otimizador cobrindo uso, convenções de nomenclatura e famílias.
- Implementações Foreach (multi-tensor) para RMSpropTF, LaProp, LAMB, LARS, AdaBelief. Os passos Foreach são divididos em blocos pelo tamanho da cache L2 do dispositivo (
- Adicione o agendador de taxa de aprendizado WSD (warmup-stable-decay) (
--sched wsd,--lr-decay-fn,--lr-stable-timescale). - Correções do EMA do modelo para modelos bfloat16 / float16. Os EMAs bfloat16 do ModelEmaV3 usam arredondamento estocástico por padrão, enquanto os modelos float16 mantêm um EMA em float32.
- Redimensionamento de modelos via
set_input_size()- Suporte expandido para modelos com janela (MaxViT, CoAtNet, BEiT, EfficientViT-MSRA, ViT com relpos, família Swin).
- Swin / SwinV2 / SwinV2-CR mantêm a proporção entre a janela e a grade de cada estágio ao redimensionar; uma chamada no tamanho atual agora é uma operação sem efeito. Suporte a
window_size/window_ratiopor estágio. Corrige os modelos Swin S3 e SwinV2window16/window12que alteravam as saídas em uma chamada com o mesmo tamanho. - Corrigir NaN no SwinV2 com tamanho de janela 1, tamanhos de recursos de estágio ímpares e redimensionamento híbrido ViT em CUDA / baixa precisão.
- Correção do tratamento do resto da acumulação de gradiente (#2821), amostragem distribuída / aumento repetido em conjuntos de dados pequenos, substituições de fonte pré-treinada e configuração do professor de destilação,
train.pycom--sched none, e interpolação de recorte central de avaliação para entradas não quadradas. - Correções de compatibilidade de exportação para ONNX entre versões do PyTorch, correções de consistência do dropout e mais correções de inicialização no meta-device.
25 de setembro de 2026
- Suporte para classificação multirótulo
- Adicione
--task multilabelatrain.py/validate.py, treinado com BCE (MultiLabelClassificationTask). Consulte a documentação de treinamento para mais detalhes. - Os alvos podem ser listas de índices de classe, vetores multi-hot densos (
--target-format multihot) ou um campo binário por classe (--target-key a,b,c), com caminhos/para campos aninhados. Suportado pelos leitoreshfds,hfids,tfds(chaves de múltiplos campos) ewds. - Os carregadores de Mixup / CutMix e NaFlex suportam alvos multirótulo. O label smoothing move cada alvo em direção a 0,5 e tem valor padrão de 0 para multirótulo.
- A validação relata o mAP (o
--eval-metricpadrão) além do F1 micro, macro e por amostra, com um limiar de F1 definido por--multilabel-threshold. - Os novos avaliadores em nível de conjunto de dados calculam métricas sobre o conjunto de validação completo entre os ranks distribuídos, excluindo o preenchimento do amostrador distribuído.
- Veja a coleção timm multi-label image datasets no Hub para exemplos de conjuntos de dados que funcionam imediatamente.
- Adicione
- Novas opções de perda via
--loss- Perdas Poly-1, Two-way, ZLPR e Distribution-Balanced.
- Ponderação por frequência de classe para BCE / ASL, calculada a partir das contagens de rótulos coletadas por
class_weights.py. - ASL agora é seguro para fp16 e usa
batchmeancomo redução padrão
- Refatoração do RoPE
Estender o aumento de coordenadas do RoPE apenas para treinamento (shift, jitter, rescale) para embeddings axiais, mistos e MRoPE, compartilhando helpers com o DINOv3, mas preservando seu comportamento de aumento existente. Adicionar as opções grid_type e normalize_coords aos construtores de Fourier / rotativo (build_fourier_pos_embed, build_rotary_pos_embed) e aos módulos de RoPE axial, além de seções configuráveis de MRoPE no EVA. Suportar rotate_half no RotaryEmbedding com saída em tupla e na variante de fábrica base. Corrigir o encaminhamento do layout de rotação no EVA, NaFlexViT e no pooling de atenção do MRoPE. Manter os buffers de frequência e coordenadas do RoPE não aprendido em pelo menos float32 em modelos half/bfloat16 e calcular as fases do RoPE misto em float32 sob autocast. Essas correções de precisão podem alterar as saídas de modelos de baixa precisão. Corrigir os embeddings de RoPE em lote para grades de pixels e o redimensionamento da forma de referência. O grid_indexing='xy' do DINOv3 agora troca os canais de coordenadas conforme solicitado; as saídas para essas configurações anteriormente incorretas mudam. Fazer com que apply_rot_embed, apply_rot_embed_cat e apply_rot_embed_list retornem o dtype de cada entrada, fazendo o cast após a rotação sem primeiro reduzir o sin/cos. Consolidar os dois módulos de RoPE axial atrás de uma base privada. As chamadas existentes permanecem compatíveis, mas o buffer de bandas agora é retido em ambos os modos, em cache e dinâmico (rope.bands não é mais None no modo em cache).
- Estender o aumento de coordenadas RoPE apenas para treinamento (shift, jitter, rescale) para embeddings axiais, mistos e MRoPE, compartilhando auxiliares com o DINOv3, preservando seu comportamento de aumento existente.
- Adicione as opções
grid_typeenormalize_coordsaos construtores de Fourier / rotary (build_fourier_pos_embed,build_rotary_pos_embed) e aos módulos de RoPE axial, além de seções de MRoPE configuráveis no EVA. - Suporte a
rotate_halfna saída em tupla deRotaryEmbeddinge na variante de fábricabase. - Correção do encaminhamento do layout de rotação no pooling de atenção de EVA, NaFlexViT e MRoPE.
- Mantenha os buffers de frequência e coordenadas do RoPE não aprendidos em pelo menos float32 em modelos half/bfloat16, e calcule as fases mistas do RoPE em float32 sob autocast. Essas correções de precisão podem alterar as saídas de modelos de baixa precisão.
- Correção dos embeddings RoPE em lote para grades de pixels e redimensionamento da forma de referência. O DINOv3 com
grid_indexing='xy'agora troca os canais de coordenadas conforme solicitado; as saídas para essas configurações anteriormente incorretas mudam. - Faça
apply_rot_embed,apply_rot_embed_cateapply_rot_embed_listretornarem o dtype de cada entrada, fazendo o cast após a rotação sem antes reduzir o dtype de sin/cos. - Consolide os dois módulos axiais de RoPE em uma base privada. As chamadas existentes permanecem compatíveis, mas o buffer
bandsagora é retido tanto no modo em cache quanto no modo dinâmico (rope.bandsnão é maisNoneno modo em cache).
- Correções para a alternância entre os modos de treinamento/avaliação e a mudança de dtype para os modelos LeViT e relacionados (EfficentFormer*, EfficientViT-MSRA, TinyViT) com vieses de atenção em cache.
22 de setembro de 2026
- Adicione os pesos da torre de visão do Qwen-Drive-1.0-4B.
- Correção da reutilização/sincronização do stream do prefetch loader e do AugMix para imagens não quadradas e de banda única.
- Correção do escalonamento de LR para convoluções no AdaMuon, do clipping no AdafactorBigVision, do histórico de gradientes no MARS e do carregamento de checkpoints no Kron.
- Corrigir caches de viés de atenção de avaliação obsoletos, metadados de recursos de modelos podados, preenchimento de max-pooling dilatado e modo de gradiente de perda assimétrica.
- Release 1.0.30
10-11 de setembro de 2026
- Adicione variantes de classificador e codificador ViT para Qwen3-VL / Qwen3.5 / Qwen3.8, incluindo classificadores com e sem o mesclador espacial nativo.
- Adicione ViTs do Sapiens2 com suporte a EVA e NaFlexViT. Ambas as adições de modelos incluem pesos nativos do Hub do timm. Obrigado a Yonghye Kwon.
- Adicione o iFormer com pesos nativos do Hub do timm. Obrigado, Ryan Hou.
- Adicione EfficientViM com pesos nativos do Hub do timm. Obrigado smellslikeml.
- Adicione classificadores e codificadores ViT do DeepSeek-V4 / V4.1 com pesos nativos do Hub do timm. Obrigado a Yonghye Kwon.
- Alterne a interpolação de posição padrão do NaFlex SigLIP, a seleção do tamanho de entrada do
inference.pye melhore a análise do--model-kwargs. - Correção da construção no meta-device e do suporte a fábricas de device/dtype para alguns modelos; movimentação dos testes de config para meta para CI mais rápido, cobertura de contexto meta.
27 de agosto de 2026
- Adicionar modelo e pesos LowFormer
- Corrigir ou mesclar uma série de bugs reais, mas pequenos ou não encontrados com frequência, identificados por agentes
- Release 1.0.29
11 de agosto de 2026
- Adicione definições de modelo e pesos pré-treinados para
- CPUBone, um backbone de visão eficiente para dispositivos com baixa capacidade de paralelização.
- PP-LCNetV2.
- LingBot-Vision.
- Adicione agendamento de imagem por lote e de tamanho de lote para treinamento não-NaFlex, incluindo agendamentos de resolução progressiva de pequeno para grande.
- Melhore o NaFlexViT com máscaras de atenção apenas de chave, amostragem de posições compatível com compilação e eficiente em memória, e interpolação de patches variáveis em cache.
- Melhorar o caminho da fábrica de modelos e o tratamento de checkpoints; corrigir a reamostragem de incorporação posicional de tokens iguais.
10 de julho de 2026
- Melhorar o suporte do otimizador
torch.compilee da taxa de aprendizado de tensor. - Estender o patch-layout do NaFlexViT (para NaFlex-CLAP) e o suporte a
forward_intermediates(entrada de dict do NaFlex). - Endureça o carregamento de pickle e melhore a inferência de rótulos personalizados.
- Release 1.0.28
27 de maio de 2026
- Adicione definições de modelos e pesos pré-treinados para os modelos EUPE ViT (estilo DINOv3) e ConvNeXt. Consulte o artigo Efficient Universal Perception Encoder.
- Adicione definições de modelos e pesos pré-treinados para ViTs (estilo DINOv2) do TIPSv2. Veja o artigo TIPSv2.
8 de maio de 2026
- Release 1.0.27
23 de abril de 2026
- Adicione codificadores ViT do Gemma4 com suporte ao pipeline NaFlex (aspecto/tamanho variável por imagem). Obrigado a Yonghye Kwon
- Suporte a pesos DINOv3 no NaFlexVit. Obrigado Yonghye Kwon
- Algumas melhorias no comportamento de lr do fallback do Muon (AdamW/NadamW)
23 de março de 2026
- Melhorar a segurança no tratamento de checkpoints pickle. Definir o carregamento padrão para
weights_only=Truee adicionar safe_global para ArgParse. - Melhorar o tratamento da máscara de atenção para os modelos e camadas principais de ViT/EVA. Resolver máscaras bool, passar
is_causalpara tarefas de SSL. - Corrigir o uso de tokens de classe e registro com ViT e sem incorporação de posição habilitada.
- Adicione Refinamento da Representação de Patch (PRR) como uma opção de pooling no ViT. Obrigado, Sina (https://github.com/sinahmr).
- Melhorar a consistência das dimensões da projeção de saída / MLP para as camadas de pooling de atenção.
- Otimização do F.SDPA do modelo Hiera para permitir o uso do kernel Flash Attention.
- Advertência adicionada ao otimizador SGDP.
- Release 1.0.26. Primeiro release de manutenção desde minha saída da Hugging Face.
23 de fevereiro de 2026
- Adicionar suporte para treinamento de destilação de tokens aos wrappers de tarefas de destilação
- Remove alguns usos de torch.jit em preparação para a descontinuação oficial
- Advertência adicionada ao otimizador AdamP
- Chame reset_parameters() mesmo na inicialização do meta-device, para que os buffers sejam inicializados com truques como init_empty_weights
- Ajuste o otimizador Muon para funcionar com DTensor/FSDP2 (usar instead of clamp_min, alternar o ramo NS para DTensor)
- Release 1.0.25
21 de janeiro de 2026
- Compat Break: Correção de uma falha com o viés de QKV vs MLP em
ParallelScalingBlock(&DiffParallelScalingBlock)- Não afeta nenhum modelo
timmtreinado, mas pode afetar o uso subsequente.
- Não afeta nenhum modelo
5 e 6 de janeiro de 2026
- Release 1.0.24
- Adicionar novos arquivos csv de resultados de benchmark para o tempo de inferência em todos os modelos com as placas RTX Pro 6000, 5090 e 4090 usando PyTorch 2.9.1
- Corrigir erro de módulo movido no caminho de importação não recomendado timm.models.layers que afeta importações legadas
- Release 1.0.23
30 de dezembro de 2025
- Adicionar ViTs (diferenciais) treinados com NAdaMuon
dpwee,dwee,dlittle(com uma pequena melhora em relação às execuções anteriores - Adicionar uma variante de ~21M parâmetros do
timmmodelo CSATv2 em 512x512 e 640x640- https://huggingface.co/timm/csatv2_21m.sw_r640_in1k (83,13% top-1)
- https://huggingface.co/timm/csatv2_21m.sw_r512_in1k (82,58% top-1)
- Extraia a inicialização de parâmetros não persistentes de
__init__para um método comum que pode ser chamado externamente viainit_non_persistent_buffers()após a inicialização no meta-device.
12 de dezembro de 2025
- Adicione o modelo CSATV2 (obrigado a https://github.com/gusdlf93) — um modelo leve, porém de alta resolução, com DCT stem & spatial attention. https://huggingface.co/Hyunil/CSATv2
- Adicione suporte aos otimizadores AdaMuon e NAdaMuon à implementação existente de Muon no
timm. Parece mais competitivo em comparação com AdamW, com hiperparâmetros familiares para tarefas de imagem. - Limpeza de PRs de fim de ano, mesclando aspectos de vários PRs abertos há muito tempo
- Mesclar atenção diferencial (
DiffAttention), adicionar o correspondenteDiffParallelScalingBlock(para ViT), treinar alguns vits pequenos - Adicione alguns módulos de pooling,
LsePluseSimPool - Limpeza e otimização de
DropBlock2d(incluindo suporte a modelos baseados em ByobNet)
- Mesclar atenção diferencial (
- Atualizar os testes unitários para PyTorch 2.9.1 + Python 3.13 no limite superior e manter PyTorch 1.13 + Python 3.10 no limite inferior
1 de dezembro de 2025
- Adicione a abstração de tarefa leve, adicione suporte para destilação de logits e de recursos ao script de treinamento por meio de novas tarefas.
- Remover o suporte antigo ao APEX AMP
4 de novembro de 2025
- Corrigido o bug de inicialização do LayerScale / LayerScale2d (valores de inicialização ignorados), introduzido na 1.0.21. Agradecimentos a https://github.com/Ilya-Fradlin
- Release 1.0.22
31 de outubro de 2025 🎃
- Atualizar os arquivos csv de resultados das variantes imagenet & OOD para incluir alguns novos modelos e verificar a correção em várias versões de torch & timm
- Pesos dos modelos EfficientNet-X e EfficientNet-H B5 adicionados como parte de uma busca de hiperparâmetros para AdamW vs Muon (ainda iterando nas execuções do Muon)
16-20 de outubro de 2025
- Adicione uma implementação do otimizador Muon (baseado em https://github.com/KellerJordan/Muon) com customizações
- flexibilidade extra e tratamento aprimorado para pesos de convolução e alternativas para formatos de pesos não adequados para ortogonalização
- pequeno ganho de velocidade para as iterações de NS ao reduzir alocações e usar operações (b)add(b)mm fundidas
- por padrão, usa atualizações AdamW (ou NAdamW se
nesterov=True) quando muon não é adequado para a forma do parâmetro (ou é excluído via flag de grupo de parâmetros) - como a implementação do torch, seleciona entre várias funções de ajuste de escala de LR via
adjust_lr_fn - selecione entre vários presets de coeficientes NS ou especifique os seus próprios via
ns_coefficients
- Primeiros 2 passos da inicialização do modelo de dispositivo 'meta' suportados
- Corrigiu várias operações que estavam quebrando a criação sob o contexto de dispositivo ‘meta’
- Adicionar suporte para kwarg de fábrica de device & dtype a todos os modelos e módulos (qualquer coisa que herde de nn.Module) no
timm
- Campos de licença adicionados aos cfgs pré-treinados no código
- Release 1.0.21
21 de setembro de 2025
- Remapeie as tags de pesos do DINOv3 ViT de
lvd_1689m->lvd1689mpara corresponder (o mesmo parasat_493m->sat493m) - Release 1.0.20
17 de setembro de 2025
- DINOv3 (https://arxiv.org/abs/2508.10104) Modelos ConvNeXt e ViT adicionados. Os modelos ConvNeXt foram mapeados para o modelo existente
timmdoRotaryEmbeddingDinoV3para corresponder à implementação específica de RoPE do DINOv3 - Codificadores de visão do MobileCLIP-2 (https://arxiv.org/abs/2508.20691). Novas variantes MCI3/MCI4 FastViT adicionadas e pesos mapeados para os FastViT e ViTs B, L/14 existentes.
- Pesos do codificador ViT do MetaCLIP-2 Worldwide (https://arxiv.org/abs/2507.22062) adicionados.
- SigLIP-2 (https://arxiv.org/abs/2502.14786) pesos do encoder NaFlex ViT adicionados via modelo NaFlexViT do timm.
- Correções e contribuições diversas
23 de julho de 2025
- Adicione o método
set_input_size()aos modelos EVA, usado pelo OpenCLIP 3.0.0 para permitir o redimensionamento de modelos de codificador baseados em timm. - Release 1.0.18, necessário para os modelos PE-Core S & T no OpenCLIP 3.0.0
- Correção de um pequeno problema de tipagem que quebrava a compatibilidade com o Python 3.9. Lançamento de patch 1.0.19.
21 de julho de 2025
- Suporte a ROPE adicionado ao NaFlexViT. Todos os modelos cobertos pela base EVA (
eva.py), incluindo EVA, EVA02, Meta PE ViT,timmSBB ViT com ROPE e Naver ROPE-ViT, agora podem ser carregados no NaFlexViT quandouse_naflex=Trueé passado no momento da criação do modelo - Mais codificadores Meta PE ViT adicionados, incluindo variantes small/tiny, variantes de idioma com tiling e mais variantes espaciais.
- PatchDropout corrigido com NaFlexViT e também com modelos EVA (regressão após a adição do Naver ROPE-ViT)
- Correção da ordem XY com grid_indexing='xy', afetando o uso de imagens não quadradas no modo 'xy' (apenas ROPE-ViT e PE foram impactados).
7 de julho de 2025
- Ajustes no backbone MobileNet-v5 para melhorar o comportamento do Google Gemma 3n (para uso com os pesos oficiais atualizados)
- Adicionar viés de raiz (zerado nos pesos atualizados, incompatibilidade com pesos antigos)
- GELU -> GELU (aproximação tanh). Uma pequena alteração para ficar mais próximo do JAX
- Adicione dois argumentos ao suporte de layer-decay, um clamp de escala mínima e um limiar de escala de 'sem otimização'
- Adicione variantes de ‘Fp32’ LayerNorm, RMSNorm e SimpleNorm que podem ser ativadas para forçar o cálculo da normalização em float32
- Algumas correções de tipagem e limpeza de argumentos para camadas norm, norm+act concluídas com o acima
- Suporte ao Naver ROPE-ViT (https://github.com/naver-ai/rope-vit) em
eva.py, adição do módulo RotaryEmbeddingMixed para modo misto, pesos no HuggingFace Hub
| model | img_size | top1 | top5 | param_count |
|---|---|---|---|---|
| vit_large_patch16_rope_mixed_ape_224.naver_in1k | 224 | 84.84 | 97.122 | 304.4 |
| vit_large_patch16_rope_mixed_224.naver_in1k | 224 | 84.828 | 97.116 | 304.2 |
| vit_large_patch16_rope_ape_224.naver_in1k | 224 | 84.65 | 97.154 | 304.37 |
| vit_large_patch16_rope_224.naver_in1k | 224 | 84.648 | 97.122 | 304.17 |
| vit_base_patch16_rope_mixed_ape_224.naver_in1k | 224 | 83.894 | 96.754 | 86.59 |
| vit_base_patch16_rope_mixed_224.naver_in1k | 224 | 83.804 | 96.712 | 86.44 |
| vit_base_patch16_rope_ape_224.naver_in1k | 224 | 83.782 | 96.61 | 86.59 |
| vit_base_patch16_rope_224.naver_in1k | 224 | 83.718 | 96.672 | 86.43 |
| vit_small_patch16_rope_224.naver_in1k | 224 | 81.23 | 95.022 | 21.98 |
| vit_small_patch16_rope_mixed_224.naver_in1k | 224 | 81.216 | 95.022 | 21.99 |
| vit_small_patch16_rope_ape_224.naver_in1k | 224 | 81.004 | 95.016 | 22.06 |
| vit_small_patch16_rope_mixed_ape_224.naver_in1k | 224 | 80.986 | 94.976 | 22.06 |
- Algumas limpezas nos módulos ROPE, nos auxiliares e no registro de folhas do rastreamento FX
- Preparando o lançamento da versão 1.0.17
26 de junho de 2025
- Backbone MobileNetV5 (variante apenas com codificador) para o codificador de imagens do Gemma 3n
- Versão 1.0.16 lançada
23 de junho de 2025
Adiciona redimensionamento de incorporação de posição 2D e fatorizada baseada em F.grid_sample ao NaFlexViT. Mais rápido quando há muitos tamanhos diferentes (baseado em exemplo de https://github.com/stas-sl).
Acelere ainda mais o resample do patch embed substituindo vmap por matmul (com base em um trecho de https://github.com/stas-sl).
Adicione 3 checkpoints nativos de aspecto inicial do NaFlexViT criados durante os testes, ImageNet-1k e 3 configurações diferentes de pos embed com os mesmos hparams.
Model Acurácia Top-1 Top-5 Prec Parâmetros (M) Comprimento da sequência de avaliação naflexvit_base_patch16_par_gap.e300_s576_in1k 83.67 96.45 86.63 576 naflexvit_base_patch16_parfac_gap.e300_s576_in1k 83.63 96.41 86.46 576 naflexvit_base_patch16_gap.e300_s576_in1k 83.50 96.46 86.63 576 Suporte ao gradient checkpointing para
forward_intermediatese correção de alguns bugs de checkpointing. Agradecimentos a https://github.com/brianhou0208Adicionar ‘corrected weight decay’ (https://arxiv.org/abs/2506.02285) como opção para os otimizadores AdamW (legacy), Adopt, Kron, Adafactor (BV), Lamb, LaProp, Lion, NadamW, RmsPropTF, SGDW
Alterne os modelos PE (perception encoder) ViT para usar pesos nativos do timm em vez de remapear em tempo real
Corrigir bug de stream cuda no prefetch loader
5 de junho de 2025
- Código inicial do modelo NaFlexVit. O NaFlexVit é um Vision Transformer com:
- Embedding encapsulado e codificação de posição em um único módulo
- Suporte para incorporação de patches com nn.Linear em entradas pré-patchificadas (dicionário)
- Suporte a NaFlex com aspecto variável e resolução variável (SigLip-2: https://arxiv.org/abs/2502.14786)
- Suporte ao tamanho de patch variável do FlexiViT (https://arxiv.org/abs/2212.08013)
- Suporte para incorporação de posição fracionada/fatorizada do NaViT (https://arxiv.org/abs/2307.06304)
- Os modelos vit existentes em
vision_transformer.pypodem ser carregados no modelo NaFlexVit adicionando ause_naflex=Trueflag emcreate_model- Algumas nativas em breve
- Um pipeline de dados NaFlex completo está disponível, permitindo treinamento / ajuste fino / avaliação com imagens de proporção / tamanho variáveis
- Para habilitar em
train.pyevalidate.py, adicione o argumento--naflex-loader, que deve ser usado com um NaFlexVit
- Para habilitar em
- Para avaliar um ViT existente (clássico) carregado no modelo NaFlexVit com o pipeline de dados NaFlex:
python validate.py /imagenet --amp -j 8 --model vit_base_patch16_224 --model-kwargs use_naflex=True --naflex-loader --naflex-max-seq-len 256
- O treinamento possui alguns recursos de argumentos extras que valem a pena destacar
- O argumento
--naflex-train-seq-lens'especifica quais comprimentos de sequência devem ser escolhidos aleatoriamente por lote durante o treinamento - O argumento
--naflex-max-seq-lendefine o comprimento de sequência alvo para a validação - Adicionar
--model-kwargs enable_patch_interpolator=True --naflex-patch-sizes 12 16 24habilitará a seleção aleatória de tamanhos de patch por lote com interpolação - O argumento
--naflex-loss-scalealterna o modo de escalonamento de perda por lote em relação ao tamanho do lote, e o carregamento NaFlex dotimmaltera o tamanho do lote para cada comprimento de sequência
- O argumento
28 de maio de 2025
- Adicione uma série de modelos pequenos/rápidos graças a https://github.com/brianhou0208
- SwiftFormer - (ICCV2023) SwiftFormer: Efficient Additive Attention for Transformer-based Real-time Mobile Vision Applications
- FasterNet - (CVPR2023) Corra, não ande: em busca de FLOPS mais altos para redes neurais mais rápidas
- SHViT - (CVPR2024) SHViT: Single-Head Vision Transformer com eficiência de memória
- StarNet - (CVPR2024) Reescreva as Estrelas
- GhostNet-V3 GhostNetV3: Explorando as estratégias de treinamento para modelos compactos
- Atualizar o EVA ViT (correspondência mais próxima) para suportar modelos Perception Encoder (https://arxiv.org/abs/2504.13181) da Meta, carregando pesos do Hub, mas ainda preciso enviar pesos dedicados do
timmAdicionar alguma flexibilidade à implementação do ROPE- Adicione alguma flexibilidade à implementação do ROPE
- Aumento significativo no número de modelos que suportam
forward_intermediates()e algumas correções adicionais graças a https://github.com/brianhou0208- DaViT, EdgeNeXt, EfficientFormerV2, EfficientViT(MIT), EfficientViT(MSRA), FocalNet, GCViT, HGNet /V2, InceptionNeXt, Inception-V4, MambaOut, MetaFormer, NesT, Next-ViT, PiT, PVT V2, RepGhostNet, RepViT, ResNetV2, ReXNet, TinyViT, TResNet, VoV
- Modelo TNT atualizado com novos pesos
forward_intermediates()graças a https://github.com/brianhou0208 - Adicione o esquema pré-treinado
local-dir:, pode usarlocal-dir:/path/to/model/foldercomo nome do modelo para obter o modelo / cfg e pesos pré-treinados de modelos do Hugging Face Hub (config.json + arquivo de pesos) de uma pasta local. - Correções e melhorias para a exportação onnx
21 de fevereiro de 2025
- Codificadores de imagem SigLIP 2 ViT adicionados (https://huggingface.co/collections/timm/siglip-2-67b8e72ba08b09dd97aecaf9)
- Versões com resolução variável / aspecto NaFlex estão em desenvolvimento
- Adicione pesos do ViT 'SO150M2' treinados com receitas SBB, ótimos resultados, melhor para ImageNet do que a tentativa anterior com menos treinamento.
vit_so150m2_patch16_reg1_gap_448.sbb_e200_in12k_ft_in1k- 88,1% top-1vit_so150m2_patch16_reg1_gap_384.sbb_e200_in12k_ft_in1k- 87,9% top-1vit_so150m2_patch16_reg1_gap_256.sbb_e200_in12k_ft_in1k- 87,3% top-1vit_so150m2_patch16_reg4_gap_256.sbb_e200_in12k
- Pesos do InternViT-300M ‘2.5’ atualizados
- Release 1.0.15
1 de fevereiro de 2025
- FYI PyTorch 2.6 & Python 3.13 são testados e funcionam com a versão atual do main e a versão lançada de
timm
27 de janeiro de 2025
- Adicionar o otimizador Kron (PSGD com pré-condicionador fatorado por Kronecker)
19 de janeiro de 2025
- Corrigir o carregamento dos pesos safetensor do LeViT, remover o código de conversão que deveria ter sido desativado
- Adicionar pesos do ViT 'SO150M' treinados com receitas SBB, resultados razoáveis, mas formato não ideal para pré-treino/ajuste fino em ImageNet-12k/1k
vit_so150m_patch16_reg4_gap_256.sbb_e250_in12k_ft_in1k- 86,7% top-1vit_so150m_patch16_reg4_gap_384.sbb_e250_in12k_ft_in1k- 87,4% top-1vit_so150m_patch16_reg4_gap_256.sbb_e250_in12k
- Limpeza de digitação, erros de digitação, etc.
- Lançamento da versão 1.0.14 para disponibilizar a correção acima do LeViT
9 de janeiro de 2025
- Adicionar suporte para treinar e validar em
bfloat16oufloat16puros - Nome do projeto
wandbadicionado por https://github.com/caojiaolong, use arg.experiment para o nome - Corrigir problema antigo em que o salvamento de checkpoints não funcionava em sistemas de arquivos sem suporte a hard links (por exemplo, montagens de sistemas de arquivos FUSE)
- Lançamento da versão 1.0.13
6 de janeiro de 2025
- Adicione o wrapper
torch.utils.checkpoint.checkpoint()emtimm.modelsque defineuse_reentrant=Falsepor padrão, a menos queTIMM_REENTRANT_CKPT=1esteja definido no ambiente.
31 de dezembro de 2024
convnext_nano384x384 pré-treinamento e ajuste fino no ImageNet-12k. https://huggingface.co/models?search=convnext_nano%20r384- Adicione codificadores AIM-v2 de https://github.com/apple/ml-aim, veja no Hub: https://huggingface.co/models?search=timm%20aimv2
- Adicione os codificadores PaliGemma2 de https://github.com/google-research/big_vision ao PaliGemma existente, veja no Hub: https://huggingface.co/models?search=timm%20pali2
- Adicionar o CLIP ViT L/14 DFN2B 39B ausente,
vit_large_patch14_clip_224.dfn2b_s39b - Corrigir a camada e a função
RmsNormexistentes para corresponder à formulação padrão, usando a implementação do PT 2.5 quando possível. Mover a implementação antiga para a camadaSimpleNorm, que é LN sem centralização ou viés. Havia apenas dois modelos dotimmque a utilizavam, e eles foram atualizados. - Permitir a substituição do argumento
cache_dirpara a criação do modelo - Passar
trust_remote_codepara o wrapper de datasets do HF - Modelo
inception_next_attoadicionado pelo criador - Precaução com o otimizador Adan e opções de decaimento de peso desacoplado do Lamb
- Algumas metadados de feature_info corrigidos por https://github.com/brianhou0208
- Todos os pesos de modelos OpenCLIP e JAX (CLIP, SigLIP, Pali, etc.) que utilizavam remapeamento no momento do carregamento receberam suas próprias instâncias no HF Hub para que funcionem com o carregamento baseado em
hf-hub:e, portanto, funcionarão com o novoTimmWrapperModeldo Transformers
28 de novembro de 2024
- Mais otimizadores
- Adicionar otimizador MARS (https://arxiv.org/abs/2411.10438, https://github.com/AGI-Arena/MARS)
- Adicione o otimizador LaProp (https://arxiv.org/abs/2002.04839, https://github.com/Z-T-WANG/LaProp-Optimizer)
- Adicione mascaramento de ‘Cautious Optimizers’ (https://arxiv.org/abs/2411.16085, https://github.com/kyleliang919/C-Optim) para Adafactor, Adafactor Big Vision, AdamW (legacy), Adopt, Lamb, LaProp, Lion, NadamW, RMSPropTF, SGDW
- Limpeza de algumas docstrings e anotações de tipos relacionadas a otimizadores e fábrica
- Adicionar modelos MobileNet-V4 Conv Medium pré-treinados em in12k e ajustados em in1k @ 384x384
- Adicione o pequeno cs3darknet, bastante bom em termos de velocidade
12 de novembro de 2024
- Refatoração da fábrica de otimizadores
- A nova fábrica funciona registrando otimizadores usando a dataclass OptimInfo com algumas características principais
- Adicione
list_optimizers,get_optimizer_class,get_optimizer_infoà funçãocreate_optimizer_v2reestruturada para explorar otimizadores, obter informações ou a classe - deprecate
optim.optim_factory, move fns tooptim/_optim_factory.pyeoptim/_param_groups.pye encorajar import viatimm.optim
- Adicione o otimizador Adopt (https://github.com/iShohei220/adopt)
- Adicionar a variante ‘Big Vision’ do otimizador Adafactor (https://github.com/google-research/big_vision/blob/main/big_vision/optax.py)
- Corrigir o Adafactor original para escolher melhores dimensões de fatorização para convoluções
- Ajuste o otimizador LAMB com algumas melhorias na funcionalidade torch.where em relação ao original, refatore o clipping um pouco
- suporte a tamanho de imagem dinâmico em vit, deit, eva aprimorado para suportar redimensionamento de grades de patches não quadrados, graças a https://github.com/wojtke
31 de outubro de 2024
Adicione um conjunto de novos pesos muito bem treinados de ResNet & ResNet-V2 18/34 (bloco básico). Veja https://huggingface.co/blog/rwightman/resnet-trick-or-treat
19 de outubro de 2024
- Limpeza do uso de torch amp para evitar chamadas específicas de CUDA, mesclando o suporte para dispositivos Ascend (NPU) de MengqingCao que deve funcionar agora no PyTorch 2.5 com o novo recurso de carregamento automático de extensões de dispositivo. Também testei Intel Arc (XPU) no Pytorch 2.5 e funcionou (na maioria dos casos).
16 de outubro de 2024
- Corrigir erro ao importar do caminho obsoleto
timm.models.registry, aumentou a prioridade dos avisos de obsolescência existentes para que fiquem visíveis - Porte os pesos do InternViT-300M (https://huggingface.co/OpenGVLab/InternViT-300M-448px) para o
timmcomovit_intern300m_patch14_448
14 de outubro de 2024
- Versão de ativação prévia (ResNetV2) das definições de modelos ResNet 18/18d/34/34d adicionada mediante solicitação (pesos pendentes)
- Release 1.0.10
11 de outubro de 2024
- Modelo e pesos do MambaOut (https://github.com/yuweihao/MambaOut) adicionados. Uma abordagem ousada para modelos de visão SSM sem o SSM (essencialmente ConvNeXt com gating). Uma mistura de pesos originais + variações e pesos personalizados.
- O SigLIP SO400M ViT foi ajustado no ImageNet-1k @ 378x378, adicionando a opção 378x378 para os modelos SigLIP 384x384 existentes
- vit_so400m_patch14_siglip_378.webli_ft_in1k - 89,42 top-1
- vit_so400m_patch14_siglip_gap_378.webli_ft_in1k - 89.03
- Codificador ViT SigLIP SO400M da variante recente multilíngue (i18n), patch16 @ 256x256 (https://huggingface.co/timm/ViT-SO400M-16-SigLIP-i18n-256). Atualização do OpenCLIP pendente.
- Adiciona dois modelos e pesos do ConvNeXt 'Zepto' (um com stem sobreposto e outro com stem de patch). Usa RMSNorm, é menor que o 'Atto' anterior, com 2,2M de parâmetros.
- convnext_zepto_rms_ols.ra4_e3600_r224_in1k - 73.20 top-1 @ 224
- convnext_zepto_rms.ra4_e3600_r224_in1k - 72.81 @ 224
Set 2024
- Adicione um conjunto de modelos de teste minúsculos para melhorar os testes unitários e aplicações de nicho com recursos limitados (https://huggingface.co/blog/rwightman/timm-tiny-test)
- Adicionar o modelo MobileNetV4-Conv-Small (0.5x) (https://huggingface.co/posts/rwightman/793053396198664)
- mobilenetv4_conv_small_050.e3000_r224_in1k - 65.81 top-1 @ 256, 64.76 @ 224
- Adicione as variantes do MobileNetV3-Large treinadas com a receita MNV4 Small
- mobilenetv3_large_150d.ra4_e3600_r256_in1k - 81.81 @ 320, 80.94 @ 256
- mobilenetv3_large_100.ra4_e3600_r224_in1k - 77,16 @ 256, 76,31 @ 224
21 de agosto de 2024
- Modelos SBB ViT atualizados, treinados no ImageNet-12k e ajustados no ImageNet-1k, desafiando um grande número de modelos muito maiores e mais lentos
| model | top1 | top5 | param_count | img_size |
|---|---|---|---|---|
| vit_mediumd_patch16_reg4_gap_384.sbb2_e200_in12k_ft_in1k | 87.438 | 98.256 | 64.11 | 384 |
| vit_mediumd_patch16_reg4_gap_256.sbb2_e200_in12k_ft_in1k | 86.608 | 97.934 | 64.11 | 256 |
| vit_betwixt_patch16_reg4_gap_384.sbb2_e200_in12k_ft_in1k | 86.594 | 98.02 | 60.4 | 384 |
| vit_betwixt_patch16_reg4_gap_256.sbb2_e200_in12k_ft_in1k | 85.734 | 97.61 | 60.4 | 256 |
- Pesos do MobileNet-V1 1.25, EfficientNet-B1 e ResNet50-D com a receita do desafio de baseline do MNV4
| model | top1 | top5 | param_count | img_size |
|---|---|---|---|---|
| resnet50d.ra4_e3600_r224_in1k | 81.838 | 95.922 | 25.58 | 288 |
| efficientnet_b1.ra4_e3600_r240_in1k | 81.440 | 95.700 | 7.79 | 288 |
| resnet50d.ra4_e3600_r224_in1k | 80.952 | 95.384 | 25.58 | 224 |
| efficientnet_b1.ra4_e3600_r240_in1k | 80.406 | 95.152 | 7.79 | 240 |
| mobilenetv1_125.ra4_e3600_r224_in1k | 77.600 | 93.804 | 6.27 | 256 |
| mobilenetv1_125.ra4_e3600_r224_in1k | 76.924 | 93.234 | 6.27 | 224 |
- Adicionar suporte para a arquitetura e o carregamento de pesos do backbone SAM2 (HieraDet)
- Adicionar pesos do Hiera Small treinados com embas de posição abswin no in12k & ajustados finamente no 1k
| model | top1 | top5 | param_count |
|---|---|---|---|
| hiera_small_abswin_256.sbb2_e200_in12k_ft_in1k | 84.912 | 97.260 | 35.01 |
| hiera_small_abswin_256.sbb2_pd_e200_in12k_ft_in1k | 84.560 | 97.106 | 35.01 |
8 de agosto de 2024
- Adicione RDNet (‘DenseNets Reloaded’, https://arxiv.org/abs/2403.19588), obrigado Donghyun Kim
28 de julho de 2024
- Adiciona pesos
mobilenet_edgetpu_v2_mcom receita baseada emra4mnv4-small. 80,1% top-1 @ 224 e 80,7 @ 256. - Release 1.0.8
26 de julho de 2024
- Mais pesos do MobileNet-v4, pré-treinamento no ImageNet-12k com ajustes finos e modelos ConvLarge com anti-alias
| model | top1 | top1_err | top5 | top5_err | param_count | img_size |
|---|---|---|---|---|---|---|
| mobilenetv4_conv_aa_large.e230_r448_in12k_ft_in1k | 84.99 | 15.01 | 97.294 | 2.706 | 32.59 | 544 |
| mobilenetv4_conv_aa_large.e230_r384_in12k_ft_in1k | 84.772 | 15.228 | 97.344 | 2.656 | 32.59 | 480 |
| mobilenetv4_conv_aa_large.e230_r448_in12k_ft_in1k | 84.64 | 15.36 | 97.114 | 2.886 | 32.59 | 448 |
| mobilenetv4_conv_aa_large.e230_r384_in12k_ft_in1k | 84.314 | 15.686 | 97.102 | 2.898 | 32.59 | 384 |
| mobilenetv4_conv_aa_large.e600_r384_in1k | 83.824 | 16.176 | 96.734 | 3.266 | 32.59 | 480 |
| mobilenetv4_conv_aa_large.e600_r384_in1k | 83.244 | 16.756 | 96.392 | 3.608 | 32.59 | 384 |
| mobilenetv4_hybrid_medium.e200_r256_in12k_ft_in1k | 82.99 | 17.01 | 96.67 | 3.33 | 11.07 | 320 |
| mobilenetv4_hybrid_medium.e200_r256_in12k_ft_in1k | 82.364 | 17.636 | 96.256 | 3.744 | 11.07 | 256 |
- Desafios impressionantes de baseline do MobileNet-V1 e do EfficientNet-B0 (https://huggingface.co/blog/rwightman/mobilenet-baselines)
| model | top1 | top1_err | top5 | top5_err | param_count | img_size |
|---|---|---|---|---|---|---|
| efficientnet_b0.ra4_e3600_r224_in1k | 79.364 | 20.636 | 94.754 | 5.246 | 5.29 | 256 |
| efficientnet_b0.ra4_e3600_r224_in1k | 78.584 | 21.416 | 94.338 | 5.662 | 5.29 | 224 |
| mobilenetv1_100h.ra4_e3600_r224_in1k | 76.596 | 23.404 | 93.272 | 6.728 | 5.28 | 256 |
| mobilenetv1_100.ra4_e3600_r224_in1k | 76.094 | 23.906 | 93.004 | 6.996 | 4.23 | 256 |
| mobilenetv1_100h.ra4_e3600_r224_in1k | 75.662 | 24.338 | 92.504 | 7.496 | 5.28 | 224 |
| mobilenetv1_100.ra4_e3600_r224_in1k | 75.382 | 24.618 | 92.312 | 7.688 | 4.23 | 224 |
- Protótipo de
set_input_size()adicionado aos modelos vit e swin v1/v2 para permitir a alteração do tamanho da imagem, do tamanho do patch e do tamanho da janela após a criação do modelo. - Suporte aprimorado no swin para o tratamento de diferentes tamanhos. Além disso, os argumentos
set_input_size,always_partitionestrict_img_sizeforam adicionados ao__init__para permitir restrições de tamanho de entrada mais flexíveis - Corrigir as informações de índices fora de ordem para o wrapper de recurso intermediário ‘Getter’, verificar os índices de intervalo ou de saída para o mesmo.
- Adicione vários modelos
tiny< .5M de parâmetros para testes que são realmente treinados no ImageNet-1k
| model | top1 | top1_err | top5 | top5_err | param_count | img_size | crop_pct |
|---|---|---|---|---|---|---|---|
| test_efficientnet.r160_in1k | 47.156 | 52.844 | 71.726 | 28.274 | 0.36 | 192 | 1.0 |
| test_byobnet.r160_in1k | 46.698 | 53.302 | 71.674 | 28.326 | 0.46 | 192 | 1.0 |
| test_efficientnet.r160_in1k | 46.426 | 53.574 | 70.928 | 29.072 | 0.36 | 160 | 0.875 |
| test_byobnet.r160_in1k | 45.378 | 54.622 | 70.572 | 29.428 | 0.46 | 160 | 0.875 |
| test_vit.r160_in1k | 42.0 | 58.0 | 68.664 | 31.336 | 0.37 | 192 | 1.0 |
| test_vit.r160_in1k | 40.822 | 59.178 | 67.212 | 32.788 | 0.37 | 160 | 0.875 |
- Corrigir a inicialização do token vit reg, obrigado Promisery
- Outras correções diversas
24 de junho de 2024
- Mais 3 pesos híbridos do MobileNetV4 com diferentes esquemas de inicialização de pesos MQA
| model | top1 | top1_err | top5 | top5_err | param_count | img_size |
|---|---|---|---|---|---|---|
| mobilenetv4_hybrid_large.ix_e600_r384_in1k | 84.356 | 15.644 | 96.892 | 3.108 | 37.76 | 448 |
| mobilenetv4_hybrid_large.ix_e600_r384_in1k | 83.990 | 16.010 | 96.702 | 3.298 | 37.76 | 384 |
| mobilenetv4_hybrid_medium.ix_e550_r384_in1k | 83.394 | 16.606 | 96.760 | 3.240 | 11.07 | 448 |
| mobilenetv4_hybrid_medium.ix_e550_r384_in1k | 82.968 | 17.032 | 96.474 | 3.526 | 11.07 | 384 |
| mobilenetv4_hybrid_medium.ix_e550_r256_in1k | 82.492 | 17.508 | 96.278 | 3.722 | 11.07 | 320 |
| mobilenetv4_hybrid_medium.ix_e550_r256_in1k | 81.446 | 18.554 | 95.704 | 4.296 | 11.07 | 256 |
- carregamento de pesos do florence2 no modelo DaViT
12 de junho de 2024
- Modelos MobileNetV4 e conjunto inicial de pesos treinados com
timmadicionados:
- Suporte e pesos adicionados para o modelo de torre de imagem Apple MobileCLIP (https://arxiv.org/pdf/2311.17049, FastViT e ViT-B) (parte do suporte ao OpenCLIP).
- Modelo e pesos da torre de imagem CLIP do ViTamin (https://arxiv.org/abs/2404.02132) adicionados (parte do suporte ao OpenCLIP).
- Suporte para modelagem e pesos da torre de imagem ResNet modificada do CLIP da OpenAI (via ByobNet). Refatoração de AttentionPool2d.
14 de maio de 2024
- Suporte para carregar pesos jax do PaliGemma em modelos SigLIP ViT com average pooling.
- Adicione modelos Hiera da Meta (https://github.com/facebookresearch/hiera).
- Adicione a flag
normalize=para transforms, retornando um torch.Tensor não normalizado com o dytpe original (parachug) - Lançamento da versão 1.0.3
11 de maio de 2024
Searching for Better ViT Baselines (For the GPU Poor)pesos e variantes de vit lançados. Explorando formas de modelo entre Tiny e Base.
| model | top1 | top5 | param_count | img_size |
|---|---|---|---|---|
| vit_mediumd_patch16_reg4_gap_256.sbb_in12k_ft_in1k | 86.202 | 97.874 | 64.11 | 256 |
| vit_betwixt_patch16_reg4_gap_256.sbb_in12k_ft_in1k | 85.418 | 97.48 | 60.4 | 256 |
| vit_mediumd_patch16_rope_reg1_gap_256.sbb_in1k | 84.322 | 96.812 | 63.95 | 256 |
| vit_betwixt_patch16_rope_reg4_gap_256.sbb_in1k | 83.906 | 96.684 | 60.23 | 256 |
| vit_base_patch16_rope_reg1_gap_256.sbb_in1k | 83.866 | 96.67 | 86.43 | 256 |
| vit_medium_patch16_rope_reg1_gap_256.sbb_in1k | 83.81 | 96.824 | 38.74 | 256 |
| vit_betwixt_patch16_reg4_gap_256.sbb_in1k | 83.706 | 96.616 | 60.4 | 256 |
| vit_betwixt_patch16_reg1_gap_256.sbb_in1k | 83.628 | 96.544 | 60.4 | 256 |
| vit_medium_patch16_reg4_gap_256.sbb_in1k | 83.47 | 96.622 | 38.88 | 256 |
| vit_medium_patch16_reg1_gap_256.sbb_in1k | 83.462 | 96.548 | 38.88 | 256 |
| vit_little_patch16_reg4_gap_256.sbb_in1k | 82.514 | 96.262 | 22.52 | 256 |
| vit_wee_patch16_reg1_gap_256.sbb_in1k | 80.256 | 95.360 | 13.42 | 256 |
| vit_pwee_patch16_reg1_gap_256.sbb_in1k | 80.072 | 95.136 | 15.25 | 256 |
| vit_mediumd_patch16_reg4_gap_256.sbb_in12k | N/A | N/A | 64.11 | 256 |
| vit_betwixt_patch16_reg4_gap_256.sbb_in12k | N/A | N/A | 60.4 | 256 |
- AttentionExtract helper adicionado para extrair mapas de atenção de modelos
timm. Veja o exemplo em https://github.com/huggingface/pytorch-image-models/discussions/1232#discussioncomment-9320949 - A API
forward_intermediates()foi refinada e adicionada a mais modelos, incluindo algumas ConvNets que possuem outros métodos de extração. - 1017 das 1047 arquiteturas de modelos suportam a extração de recursos com
features_only=True. As 34 arquiteturas restantes podem ser suportadas, mas com base em solicitações de prioridade. - Remove funções anotadas com torch.jit.script, incluindo ativações JIT antigas. Conflito com dynamo, e o dynamo faz um trabalho muito melhor quando usado.
11 de abril de 2024
- Preparando para o lançamento 1.0, que estava atrasado há muito tempo, as coisas têm sido estáveis há algum tempo.
- Recurso significativo que estava ausente há algum tempo: suporte a
features_only=Truepara modelos ViT com estados ocultos planos ou layouts de módulos não padrão (até o momento, cobrindo'vit_*', 'twins_*', 'deit*', 'beit*', 'mvitv2*', 'eva*', 'samvit_*', 'flexivit*') - O suporte ao recurso acima foi alcançado por meio de uma nova API
forward_intermediates()que pode ser usada com um módulo de encapsulamento de recurso ou diretamente.
model = timm.create_model('vit_base_patch16_224')
final_feat, intermediates = model.forward_intermediates(input)
output = model.forward_head(final_feat) # pooling + classifier head
print(final_feat.shape)
torch.Size([2, 197, 768])
for f in intermediates:
print(f.shape)
torch.Size([2, 768, 14, 14])
torch.Size([2, 768, 14, 14])
torch.Size([2, 768, 14, 14])
torch.Size([2, 768, 14, 14])
torch.Size([2, 768, 14, 14])
torch.Size([2, 768, 14, 14])
torch.Size([2, 768, 14, 14])
torch.Size([2, 768, 14, 14])
torch.Size([2, 768, 14, 14])
torch.Size([2, 768, 14, 14])
torch.Size([2, 768, 14, 14])
torch.Size([2, 768, 14, 14])
print(output.shape)
torch.Size([2, 1000])model = timm.create_model('eva02_base_patch16_clip_224', pretrained=True, img_size=512, features_only=True, out_indices=(-3, -2,))
output = model(torch.randn(2, 3, 512, 512))
for o in output:
print(o.shape)
torch.Size([2, 768, 32, 32])
torch.Size([2, 768, 32, 32])- Pesos da torre de visão do TinyCLIP adicionados, obrigado Thien Tran
19 de fevereiro de 2024
- Modelos Next-ViT adicionados. Adaptados de https://github.com/bytedance/Next-ViT
- Modelos HGNet e PP-HGNetV2 adicionados. Adaptado de https://github.com/PaddlePaddle/PaddleClas por SeeFun
- Removido o setup.py, movido para um build baseado em pyproject.toml suportado pelo PDM
- Adicionada implementação atualizada do EMA do modelo usando _for_each para reduzir o overhead
- Suporte a argumentos de dispositivo no script de treinamento para dispositivos que não são GPUs
- Outras correções diversas e pequenas adições
- A versão mínima suportada do Python foi aumentada para 3.8
- Release 0.9.16
8 de janeiro de 2024
Refatoração de conjuntos de dados e transform
- Suporte a datasets iteráveis (streaming) do HuggingFace (
--dataset hfids:org/dataset) - Ajustes no wrapper Webdataset para melhorar a busca de informações de split, com possibilidade de busca automática de splits a partir de webdatasets suportados no hub do HF
- Testado o streaming do
datasetsdo HF e do wrapper webdataset a partir do hub do HF com os uploads recentes de ImageNet dotimmpara https://huggingface.co/timm - Torne as chaves de coluna/campo de entrada e alvo consistentes entre os conjuntos de dados e passe-as via args
- Suporte completo a monocromia ao usar, por exemplo,
--input-size 1 224 224ou--in-chans 1, define a conversão de imagem do PIL adequadamente no dataset - Melhorou vários transforms alternativos de crop e resize (ResizeKeepRatio, RandomCropOrPad, etc) para uso no projeto de IA de documentos PixParse
- Adicione a probabilidade de jitter de cor no estilo SimCLR, junto com as opções de escala de cinza e desfoque gaussiano, às aumentações e aos argumentos
- Permitir o treinamento sem um conjunto de validação (
--val-split '') no script de treinamento - Adicione os argumentos
--bce-sum(soma sobre a dimensão de classe) e--bce-pos-weight(ponderação positiva) para o treinamento, pois são ajustes comuns na perda BCE que eu costumava codificar manualmente
23 de novembro de 2023
- Adicionados modelos EfficientViT-Large, obrigado SeeFun
- Corrigir compatibilidade com Python 3.7, o suporte a ele será descontinuado em breve
- Outras correções diversas
- Release 0.9.12
20 de novembro de 2023
- Adicionada flexibilidade significativa para modelos timm baseados no Hugging Face Hub via
model_argsentrada de configuração.model_argsserá passado como kwargs para os modelos na criação. - Arquivos csv de avaliação e conjunto de testes do imagenet atualizados com os modelos mais recentes
- Limpeza de tipagem e documentação em
vision_transformer.pypor Laureηt - Lançamento da versão 0.9.11
3 de novembro de 2023
- Pesos de ViT de DFN (Data Filtering Networks) e MetaCLIP adicionados
- Pesos do modelo ViT 'register' do DINOv2 adicionados (https://huggingface.co/papers/2309.16588, https://huggingface.co/papers/2304.07193)
- Adicione variantes de ViT
quickgelupara os pesos de OpenAI, DFN e MetaCLIP que a utilizam (menos eficiente) - Melhorias de tipagem adicionadas ao ResNet e MobileNet-v3 graças a Aryan
- Fine-tuned no ImageNet-12k (a partir do CLIP do LAION-2B)
convnext_xxlarge - Lançamento da versão 0.9.9
20 de outubro de 2023
- SigLIP pesos da torre de imagem suportados em
vision_transformer.py.- Grande potencial para ajuste fino e uso de recursos em tarefas downstream.
- Suporte experimental a 'register' em modelos vit, conforme Vision Transformers Need Registers
- RepViT atualizado com novo lançamento de pesos. Obrigado wangao
- Adicionar suporte para redimensionamento de patches (na carga de pesos pré-treinados) aos modelos Swin
- Lançamento da versão 0.9.8 pendente
1 de setembro de 2023
- TinyViT adicionado por SeeFun
- Corrigir o EfficientViT (MIT) para usar torch.autocast para que funcione a partir do PT 1.10
- Lançamento 0.9.7
28 de agosto de 2023
- Adicionar suporte a tamanho de imagem dinâmico aos modelos em
vision_transformer.py,vision_transformer_hybrid.py,deit.py, eeva.pysem quebrar a compatibilidade reversa. Adicione dynamic_img_size=True aos argumentos na criação do modelo para permitir alterar o tamanho da grade (interpolar os embeddings de posição absolutos e/ou ROPE a cada passagem de forward). Adicione dynamic_img_pad=True para permitir tamanhos de imagem que não são divisíveis pelo tamanho do patch (preencher a parte inferior direita até o tamanho do patch a cada passagem de forward). Habilitar qualquer um dos modos dinâmicos quebrará o rastreamento FX, a menos que o módulo PatchEmbed seja adicionado como folha. O método existente de redimensionar o embedding de posição passando um img_size diferente (interpolar os pesos do embedding pré-treinado uma vez) na criação ainda funciona. O método existente de alterar o patch_size (redimensionar os pesos do patch_embed pré-treinado uma vez) na criação ainda funciona. Comando de validação de exemplo: python validate.py --data-dir /imagenet --model vit_base_patch16_224 --amp --amp-dtype bfloat16 --img-size 255 --crop-pct 1.0 --model-kwargs dynamic_img_size=True dyamic_img_pad=True- Adicione
dynamic_img_size=Trueaos args no momento da criação do modelo para permitir a alteração do tamanho da grade (interpolando os embas de posição abs e/ou ROPE a cada passagem de forward). - Adicione
dynamic_img_pad=Truepara permitir tamanhos de imagem que não são divisíveis pelo tamanho do patch (preencha a parte inferior direita até o tamanho do patch a cada passagem de forward). - Ativar qualquer modo dinâmico quebrará o rastreamento do FX, a menos que o módulo PatchEmbed seja adicionado como folha.
- O método existente de redimensionar o position embedding passando um
img_sizediferente (interpolando os pesos pré-treinados do embed uma vez) na criação ainda funciona. - O método existente para alterar
patch_size(redimensionar os pesos pré-treinados de patch_embed uma vez) na criação ainda funciona. - Exemplo de comando de validação
python validate.py --data-dir /imagenet --model vit_base_patch16_224 --amp --amp-dtype bfloat16 --img-size 255 --crop-pct 1.0 --model-kwargs dynamic_img_size=True dyamic_img_pad=True
- Adicione
25 de agosto de 2023
- Muitos novos modelos desde a última versão
- FastViT - https://arxiv.org/abs/2303.14189
- MobileOne - https://arxiv.org/abs/2206.04040
- InceptionNeXt - https://arxiv.org/abs/2303.16900
- RepGhostNet - https://arxiv.org/abs/2211.06088 (obrigado a https://github.com/ChengpengChen)
- GhostNetV2 - https://arxiv.org/abs/2211.12905 (obrigado a https://github.com/yehuitang)
- EfficientViT (MSRA) - https://arxiv.org/abs/2305.07027 (obrigado a https://github.com/seefun)
- EfficientViT (MIT) - https://arxiv.org/abs/2205.14756 (obrigado a https://github.com/seefun)
- Adicione
--reparamo argumentobenchmark.py,onnx_export.py, evalidate.pypara acionar a reparametrização/fusão de camadas para modelos que possuam qualquer um dosreparameterize(),switch_to_deploy()oufuse()- Incluindo FastViT, MobileOne, RepGhostNet, EfficientViT (MSRA), RepViT, RepVGG e LeViT
- Preparando a liberação 0.9.6 “back to school”
11 de agosto de 2023
- Os modelos Swin, MaxViT, CoAtNet e BEiT suportam o redimensionamento do tamanho da imagem/janela na criação, com adaptação dos pesos pré-treinados
- Exemplo de comando de validação para testar com redimensionamento não quadrado
python validate.py --data-dir /imagenet --model swin_base_patch4_window7_224.ms_in22k_ft_in1k --amp --amp-dtype bfloat16 --input-size 3 256 320 --model-kwargs window_size=8,10 img_size=256,320
3 de agosto de 2023
- Adicione pesos do GluonCV para HRNet w18_small e w18_small_v2. Convertidos por SeeFun
- Corrigir regressão de nomenclatura do modelo
selecsls* - O patch e a incorporação de posição para ViT/EVA funcionam com pesos bfloat16/float16 no carregamento (ou ativações para redimensionamento em tempo real)
- Preparação para o lançamento da v0.9.5
27 de julho de 2023
- Adicionados pesos
seresnextaa201d_32x8d.sw_in12k_ft_in1k_384treinados com timm (e pré-treinamento.sw_in12k) com 87,3% de top-1 no ImageNet-1k, o melhor modelo da família ResNet do ImageNet do qual tenho conhecimento. - Modelo e pesos do RepViT (https://arxiv.org/abs/2307.09283) adicionados por wangao
- Pesos de recursos do I-JEPA ViT (sem classificador) adicionados por SeeFun
- Pesos do recurso SAM-ViT (segment anything) (sem classificador) adicionados por SeeFun
- Adicionar suporte para métodos alternativos de extração de features e índices negativos ao EfficientNet
- Adicionar otimizador NAdamW
- Correções diversas
11 de maio de 2023
timm0.9 lançado, transição a partir das versões 0.8.xdev
10 de maio de 2023
- O download do Hugging Face Hub agora é o padrão, 1132 modelos em https://huggingface.co/timm, 1163 pesos em
timm - Pesos do backbone de recursos vit do DINOv2 adicionados graças a Leng Yue
- Pesos do backbone de recursos vit adicionados ao MAE
- Pesos do backbone de recursos OpenCLIP DataComp-XL L/14 adicionados
- MetaFormer (poolformer-v2, caformer, convformer, poolformer atualizado (v1)) com pesos adicionados por Fredo Guan
- Função experimental
get_intermediate_layersem modelos vit/deit para capturar estados ocultos (inspirada na implementação do DINO). Este é um trabalho em andamento e pode mudar significativamente… feedbacks são bem-vindos. - A criação do modelo lança um erro se
pretrained=Truee não existirem pesos (em vez de continuar com inicialização aleatória) - Corrigir regressão com pesos TF de inception / nasnet com 1001 classes nos classificadores originais
- Os otimizadores do bitsandbytes (https://github.com/TimDettmers/bitsandbytes) foram adicionados à factory, use o prefixo
bnb, por exemplobnbadam8bit - Limpeza e correções diversas
- Testes finais antes de mudar para a versão 0.9 e tirar o
timmdo estado de pré-lançamento
27 de abril de 2023
- 97% dos modelos
timmenviados ao HF Hub e quase todos atualizados para suportar configurações pré-treinadas com múltiplos pesos - Limpeza e refatoração menores de outro lote de modelos à medida que o multi-weight foi adicionado. Mais suporte a fused_attn (F.sdpa) e features_only, além de correções no torchscript.
21 de abril de 2023
- Suporte a acúmulo de gradiente adicionado ao script de treinamento e testado (
--grad-accum-steps), obrigado Taeksang Kim - Mais pesos no HF Hub (cspnet, cait, volo, xcit, tresnet, hardcorenas, densenet, dpn, vovnet, xception_aligned)
- Adicionado
--head-init-scalee--head-init-biasao train.py para escalar a cabeça do classificador e definir um viés fixo para fine-tuning - Removido todo o uso de InplaceABN (
inplace_abn), substituído pelo uso de BatchNorm padrão no tresnet (pesos modificados de acordo).
12 de abril de 2023
- Adiciona script de exportação ONNX, script de validação e auxiliares que eu tinha guardados há bastante tempo. Ajusta o padding 'same' para uma melhor exportação com versões recentes do ONNX + pytorch.
- Refatorar os argumentos de dropout para vit e modelos semelhantes a vit, separando drop_rate em
drop_rate(dropout do classificador),proj_drop_rate(projeções de mlp / saída do bloco),pos_drop_rate(dropout de embedding de posição),attn_drop_rate(dropout de atenção). Adicionar também patch dropout (FLIP) aos modelos vit e eva. - suporte a F.scaled_dot_product_attention fundida para mais modelos vit, adição da variável de ambiente (TIMM_FUSED_ATTN) para controle e interface de configuração para habilitar/desabilitar
- Adicione os backbones EVA-CLIP com pesos da torre de imagem, incluindo o modelo “enormous” de até 4B parâmetros, e o modo OpenAI ViT 336x336 que havia sido omitido.
5 de abril de 2023
- Todos os modelos ResNet enviados ao Hugging Face Hub com suporte a múltiplos pesos
- Todos os pesos treinados anteriores do
timmadicionados com tags baseadas em receita para diferenciar - Todos os ResNet contra-atacam A1/A2/A3 (seed 0) e pesos do exemplo R50 B/C1/C2/D disponíveis
- Adicione os pesos da receita torchvision v2 aos originais do torchvision existentes
- Veja a tabela de comparação em https://huggingface.co/timm/seresnextaa101d_32x8d.sw_in12k_ft_in1k_288#model-comparison
- Todos os pesos treinados anteriores do
- Novos fine-tunes do ImageNet-12k + ImageNet-1k disponíveis para alguns modelos ResNet com anti-aliasing
resnetaa50d.sw_in12k_ft_in1k- 81.7 @ 224, 82.6 @ 288resnetaa101d.sw_in12k_ft_in1k- 83.5 @ 224, 84.1 @ 288seresnextaa101d_32x8d.sw_in12k_ft_in1k- 86.0 @ 224, 86.5 @ 288seresnextaa101d_32x8d.sw_in12k_ft_in1k_288- 86.5 @ 288, 86.7 @ 320
31 de março de 2023
- Adicione o primeiro ConvNext-XXLarge CLIP -> IN-1k fine-tune e os IN-12k intermediate fine-tunes para os modelos convnext-base/large CLIP.
| model | top1 | top5 | img_size | param_count | gmacs | macts |
|---|---|---|---|---|---|---|
| convnext_xxlarge.clip_laion2b_soup_ft_in1k | 88.612 | 98.704 | 256 | 846.47 | 198.09 | 124.45 |
| convnext_large_mlp.clip_laion2b_soup_ft_in12k_in1k_384 | 88.312 | 98.578 | 384 | 200.13 | 101.11 | 126.74 |
| convnext_large_mlp.clip_laion2b_soup_ft_in12k_in1k_320 | 87.968 | 98.47 | 320 | 200.13 | 70.21 | 88.02 |
| convnext_base.clip_laion2b_augreg_ft_in12k_in1k_384 | 87.138 | 98.212 | 384 | 88.59 | 45.21 | 84.49 |
| convnext_base.clip_laion2b_augreg_ft_in12k_in1k | 86.344 | 97.97 | 256 | 88.59 | 20.09 | 37.55 |
- Adicione pesos pré-treinados e ajustados do EVA-02 MIM, envie para o hub do HF e atualize os cartões de modelo para todos os modelos EVA. Primeiro modelo acima de 90% de top-1 (99% de top-5)! Confira o código original e os pesos em https://github.com/baaivision/EVA para mais detalhes sobre o trabalho deles que combina MIM e CLIP com muitos ajustes de modelo, conjunto de dados e receita de treinamento.
| model | top1 | top5 | param_count | img_size |
|---|---|---|---|---|
| eva02_large_patch14_448.mim_m38m_ft_in22k_in1k | 90.054 | 99.042 | 305.08 | 448 |
| eva02_large_patch14_448.mim_in22k_ft_in22k_in1k | 89.946 | 99.01 | 305.08 | 448 |
| eva_giant_patch14_560.m30m_ft_in22k_in1k | 89.792 | 98.992 | 1014.45 | 560 |
| eva02_large_patch14_448.mim_in22k_ft_in1k | 89.626 | 98.954 | 305.08 | 448 |
| eva02_large_patch14_448.mim_m38m_ft_in1k | 89.57 | 98.918 | 305.08 | 448 |
| eva_giant_patch14_336.m30m_ft_in22k_in1k | 89.56 | 98.956 | 1013.01 | 336 |
| eva_giant_patch14_336.clip_ft_in1k | 89.466 | 98.82 | 1013.01 | 336 |
| eva_large_patch14_336.in22k_ft_in22k_in1k | 89.214 | 98.854 | 304.53 | 336 |
| eva_giant_patch14_224.clip_ft_in1k | 88.882 | 98.678 | 1012.56 | 224 |
| eva02_base_patch14_448.mim_in22k_ft_in22k_in1k | 88.692 | 98.722 | 87.12 | 448 |
| eva_large_patch14_336.in22k_ft_in1k | 88.652 | 98.722 | 304.53 | 336 |
| eva_large_patch14_196.in22k_ft_in22k_in1k | 88.592 | 98.656 | 304.14 | 196 |
| eva02_base_patch14_448.mim_in22k_ft_in1k | 88.23 | 98.564 | 87.12 | 448 |
| eva_large_patch14_196.in22k_ft_in1k | 87.934 | 98.504 | 304.14 | 196 |
| eva02_small_patch14_336.mim_in22k_ft_in1k | 85.74 | 97.614 | 22.13 | 336 |
| eva02_tiny_patch14_336.mim_in22k_ft_in1k | 80.658 | 95.524 | 5.76 | 336 |
- Multi-pesos e HF hub para modelos baseados em DeiT e MLP-Mixer
22 de março de 2023
- Mais pesos enviados ao HF hub, juntamente com suporte a múltiplos pesos, incluindo:
regnet.py,rexnet.py,byobnet.py,resnetv2.py,swin_transformer.py,swin_transformer_v2.py,swin_transformer_v2_cr.py - Os modelos Swin Transformer suportam extração de recursos (mapas de recursos NCHW para
swinv2_cr_*e NHWC para todos os outros) e saídas de incorporação espacial. - Modelos e pesos do FocalNet (de https://github.com/microsoft/FocalNet) adicionados com refatoração significativa, extração de recursos, sem resolução fixa / restrição de dimensionamento
- Os pesos do RegNet foram aumentados com o push do hub da HF, SWAG, SEER e pesos do torchvision v2. O SEER é bastante ruim em termos de desempenho para o tamanho do modelo, mas possivelmente útil.
- Mais pesos pré-treinados no ImageNet-12k e ajustados no 1k
timmdorexnetr_200.sw_in12k_ft_in1k- 82.6 @ 224, 83.2 @ 288rexnetr_300.sw_in12k_ft_in1k- 84.0 @ 224, 84.5 @ 288regnety_120.sw_in12k_ft_in1k- 85.0 @ 224, 85.4 @ 288regnety_160.lion_in12k_ft_in1k- 85.6 @ 224, 86.0 @ 288regnety_160.sw_in12k_ft_in1k- 85.6 @ 224, 86.0 @ 288 (em comparação com SWAG PT + 1k FT, este é o mesmo, mas com resolução muito menor, superando o SEER FT)
- Funcionalidade de descontinuação e remapeamento de nomes de modelos adicionada (uma marco para tirar a versão 0.8.x do pré-lançamento). Mapeamentos sendo adicionados…
- Correções de bugs menores e melhorias.
26 de fevereiro de 2023
- Adicione pesos pré-treinados da torre de imagem do ConvNeXt-XXLarge CLIP para fine-tuning e extração de recursos (fine-tuning a ser definido) — veja model card
- Atualizar o eps padrão do LayerNorm de
convnext_xxlargepara 1e-5 (para pesos do CLIP, estabilidade aprimorada) - 0.8.15dev0
20 de fevereiro de 2023
- Adicione pesos da torre de imagem CLIP
convnext_large_mlp.clip_laion2b_ft_320econvnext_large_mlp.clip_laion2b_ft_soup_320de 320x320 para recursos e ajuste fino - 0.8.13dev0 release no pypi para as alterações mais recentes com a mudança para a organização huggingface
16 de fevereiro de 2023
- Suporte a checkpoints
safetensoradicionado - Adicionar ideias de ‘Scaling Vision Transformers to 22 B. Params’ (https://arxiv.org/abs/2302.05442) — qk norm, RmsNorm, parallel block
- Adicionar suporte a F.scaleddot_product_attention (somente PyTorch 2.0) para `vit
,vit_relpos,coatnet/maxxvit` (para começar) - Otimizador Lion (com opção multi-tensor) adicionado (https://arxiv.org/abs/2302.06675)
- o gradient checkpointing funciona com
features_only=True
7 de fevereiro de 2023
- Novos números de benchmark de inferência adicionados na pasta results.
- Adicionar pesos treinados do convnext LAION CLIP e o conjunto inicial de fine-tunes in1k
convnext_base.clip_laion2b_augreg_ft_in1k- 86.2% @ 256x256convnext_base.clip_laiona_augreg_ft_in1k_384- 86.5% @ 384x384convnext_large_mlp.clip_laion2b_augreg_ft_in1k- 87.3% @ 256x256convnext_large_mlp.clip_laion2b_augreg_ft_in1k_384- 87.9% @ 384x384
- Adiciona modelos DaViT. Suporta
features_only=True. Adaptado de https://github.com/dingmyu/davit por Fredo. - Use um NormMlpClassifierHead comum em MaxViT, ConvNeXt, DaViT
- Adicione o modelo EfficientFormer-V2, atualize o EfficientFormer e refatore o LeViT (arquiteturas intimamente relacionadas). Pesos no hub do HF.
- Novo arch EfficientFormer-V2, refatoração significativa em relação ao original em (https://github.com/snap-research/EfficientFormer). Suporta
features_only=True. - Pequenas atualizações no EfficientFormer.
- Refatorar os modelos LeViT para estágios, adicionar suporte a
features_only=Trueàs novas variantes deconv, remapeamento de pesos necessário.
- Novo arch EfficientFormer-V2, refatoração significativa em relação ao original em (https://github.com/snap-research/EfficientFormer). Suporta
- Move os metadados do ImageNet (synsets, índices) de
/resultsparatimm/data/_info. - Adicione as classes ImageNetInfo / DatasetInfo para fornecer rótulos para vários layouts de classificadores do ImageNet em
timm- Atualize
inference.pypara usar, tente:python inference.py --data-dir /folder/to/images --model convnext_small.in12k --label-type detail --topk 5
- Atualize
- Pronto para o pré-lançamento 0.8.10 no pypi (testes finais).
20 de janeiro de 2023
Adicione dois fine-tunes de convnext 12k -> 1k em 384x384
convnext_tiny.in12k_ft_in1k_384- 85.1 @ 384convnext_small.in12k_ft_in1k_384- 86.2 @ 384
Envie todos os pesos do MaxxViT para o hub do HF e adicione novos fine-tunes de ImageNet-12k -> 1k para os modelos base
rwMaxViT e CoAtNet 1/2
| model | top1 | top5 | amostras / seg | Parâmetros (M) | GMAC | Atuar (M) |
|---|---|---|---|---|---|---|
| maxvit_xlarge_tf_512.in21k_ft_in1k | 88.53 | 98.64 | 21.76 | 475.77 | 534.14 | 1413.22 |
| maxvit_xlarge_tf_384.in21k_ft_in1k | 88.32 | 98.54 | 42.53 | 475.32 | 292.78 | 668.76 |
| maxvit_base_tf_512.in21k_ft_in1k | 88.20 | 98.53 | 50.87 | 119.88 | 138.02 | 703.99 |
| maxvit_large_tf_512.in21k_ft_in1k | 88.04 | 98.40 | 36.42 | 212.33 | 244.75 | 942.15 |
| maxvit_large_tf_384.in21k_ft_in1k | 87.98 | 98.56 | 71.75 | 212.03 | 132.55 | 445.84 |
| maxvit_base_tf_384.in21k_ft_in1k | 87.92 | 98.54 | 104.71 | 119.65 | 73.80 | 332.90 |
| maxvit_rmlp_base_rw_384.sw_in12k_ft_in1k | 87.81 | 98.37 | 106.55 | 116.14 | 70.97 | 318.95 |
| maxxvitv2_rmlp_base_rw_384.sw_in12k_ft_in1k | 87.47 | 98.37 | 149.49 | 116.09 | 72.98 | 213.74 |
| coatnet_rmlp_2_rw_384.sw_in12k_ft_in1k | 87.39 | 98.31 | 160.80 | 73.88 | 47.69 | 209.43 |
| maxvit_rmlp_base_rw_224.sw_in12k_ft_in1k | 86.89 | 98.02 | 375.86 | 116.14 | 23.15 | 92.64 |
| maxxvitv2_rmlp_base_rw_224.sw_in12k_ft_in1k | 86.64 | 98.02 | 501.03 | 116.09 | 24.20 | 62.77 |
| maxvit_base_tf_512.in1k | 86.60 | 97.92 | 50.75 | 119.88 | 138.02 | 703.99 |
| coatnet_2_rw_224.sw_in12k_ft_in1k | 86.57 | 97.89 | 631.88 | 73.87 | 15.09 | 49.22 |
| maxvit_large_tf_512.in1k | 86.52 | 97.88 | 36.04 | 212.33 | 244.75 | 942.15 |
| coatnet_rmlp_2_rw_224.sw_in12k_ft_in1k | 86.49 | 97.90 | 620.58 | 73.88 | 15.18 | 54.78 |
| maxvit_base_tf_384.in1k | 86.29 | 97.80 | 101.09 | 119.65 | 73.80 | 332.90 |
| maxvit_large_tf_384.in1k | 86.23 | 97.69 | 70.56 | 212.03 | 132.55 | 445.84 |
| maxvit_small_tf_512.in1k | 86.10 | 97.76 | 88.63 | 69.13 | 67.26 | 383.77 |
| maxvit_tiny_tf_512.in1k | 85.67 | 97.58 | 144.25 | 31.05 | 33.49 | 257.59 |
| maxvit_small_tf_384.in1k | 85.54 | 97.46 | 188.35 | 69.02 | 35.87 | 183.65 |
| maxvit_tiny_tf_384.in1k | 85.11 | 97.38 | 293.46 | 30.98 | 17.53 | 123.42 |
| maxvit_large_tf_224.in1k | 84.93 | 96.97 | 247.71 | 211.79 | 43.68 | 127.35 |
| coatnet_rmlp_1_rw2_224.sw_in12k_ft_in1k | 84.90 | 96.96 | 1025.45 | 41.72 | 8.11 | 40.13 |
| maxvit_base_tf_224.in1k | 84.85 | 96.99 | 358.25 | 119.47 | 24.04 | 95.01 |
| maxxvit_rmlp_small_rw_256.sw_in1k | 84.63 | 97.06 | 575.53 | 66.01 | 14.67 | 58.38 |
| coatnet_rmlp_2_rw_224.sw_in1k | 84.61 | 96.74 | 625.81 | 73.88 | 15.18 | 54.78 |
| maxvit_rmlp_small_rw_224.sw_in1k | 84.49 | 96.76 | 693.82 | 64.90 | 10.75 | 49.30 |
| maxvit_small_tf_224.in1k | 84.43 | 96.83 | 647.96 | 68.93 | 11.66 | 53.17 |
| maxvit_rmlp_tiny_rw_256.sw_in1k | 84.23 | 96.78 | 807.21 | 29.15 | 6.77 | 46.92 |
| coatnet_1_rw_224.sw_in1k | 83.62 | 96.38 | 989.59 | 41.72 | 8.04 | 34.60 |
| maxvit_tiny_rw_224.sw_in1k | 83.50 | 96.50 | 1100.53 | 29.06 | 5.11 | 33.11 |
| maxvit_tiny_tf_224.in1k | 83.41 | 96.59 | 1004.94 | 30.92 | 5.60 | 35.78 |
| coatnet_rmlp_1_rw_224.sw_in1k | 83.36 | 96.45 | 1093.03 | 41.69 | 7.85 | 35.47 |
| maxxvitv2_nano_rw_256.sw_in1k | 83.11 | 96.33 | 1276.88 | 23.70 | 6.26 | 23.05 |
| maxxvit_rmlp_nano_rw_256.sw_in1k | 83.03 | 96.34 | 1341.24 | 16.78 | 4.37 | 26.05 |
| maxvit_rmlp_nano_rw_256.sw_in1k | 82.96 | 96.26 | 1283.24 | 15.50 | 4.47 | 31.92 |
| maxvit_nano_rw_256.sw_in1k | 82.93 | 96.23 | 1218.17 | 15.45 | 4.46 | 30.28 |
| coatnet_bn_0_rw_224.sw_in1k | 82.39 | 96.19 | 1600.14 | 27.44 | 4.67 | 22.04 |
| coatnet_0_rw_224.sw_in1k | 82.39 | 95.84 | 1831.21 | 27.44 | 4.43 | 18.73 |
| coatnet_rmlp_nano_rw_224.sw_in1k | 82.05 | 95.87 | 2109.09 | 15.15 | 2.62 | 20.34 |
| coatnext_nano_rw_224.sw_in1k | 81.95 | 95.92 | 2525.52 | 14.70 | 2.47 | 12.80 |
| coatnet_nano_rw_224.sw_in1k | 81.70 | 95.64 | 2344.52 | 15.14 | 2.41 | 15.41 |
| maxvit_rmlp_pico_rw_256.sw_in1k | 80.53 | 95.21 | 1594.71 | 7.52 | 1.85 | 24.86 |
11 de janeiro de 2023
- Atualização da série de pré-treinamento ConvNeXt ImageNet-12k com dois novos pesos ajustados finamente (e pré-FT
.in12ktags)convnext_nano.in12k_ft_in1k- 82.3 @ 224, 82.9 @ 288 (lançado anteriormente)convnext_tiny.in12k_ft_in1k- 84.2 @ 224, 84.5 @ 288convnext_small.in12k_ft_in1k- 85.2 @ 224, 85.3 @ 288
6 de janeiro de 2023
- Finalmente consegui adicionar
--model-kwargse--opt-kwargsaos scripts para passar argumentos raros diretamente para as classes de modelo a partir da linha de comandotrain.py --data-dir /imagenet --model resnet50 --amp --model-kwargs output_stride=16 act_layer=silutrain.py --data-dir /imagenet --model vit_base_patch16_clip_224 --img-size 240 --amp --model-kwargs img_size=240 patch_size=12
- Limpeza de alguns modelos populares para melhor suporte à passagem de argumentos / mesclagem com configurações de modelo, há mais a vir.
5 de janeiro de 2023
- Modelos e pesos ConvNeXt-V2 adicionados ao arquivo
convnext.py- Artigo: ConvNeXt V2: Co-design e escalonamento de ConvNets com Autoencoders Mascarados
- Impl. de referência: https://github.com/facebookresearch/ConvNeXt-V2 (OBS.: pesos atualmente CC-BY-NC) @dataclass
23 de dezembro de 2022 🎄☃
- Adicione modelos e pesos do FlexiViT de https://github.com/google-research/big_vision (veja o paper em https://arxiv.org/abs/2212.08013)
- OBS: atualmente, o redimensionamento é estático na criação do modelo; a amostragem dinâmica de tamanho de patch em tempo real / durante o treinamento está em desenvolvimento
- Muitos mais modelos foram atualizados para multi-pesos e agora estão disponíveis para download via HF hub (convnext, efficientnet, mobilenet, vision_transformer*, beit)
- Mais tags de pré-treinamento de modelos e ajustes, alguns nomes de modelos foram alterados (trabalhando nas traduções de depreciação, considere a branch principal DEV branch por enquanto, use 0.6.x para uso estável)
- Mais modelos de pré-treino do ImageNet-12k (subconjunto de 22k) surgindo:
efficientnet_b5.in12k_ft_in1k- 85.9 @ 448x448vit_medium_patch16_gap_384.in12k_ft_in1k- 85.5 @ 384x384vit_medium_patch16_gap_256.in12k_ft_in1k- 84.5 @ 256x256convnext_nano.in12k_ft_in1k- 82.9 @ 288x288
8 de dezembro de 2022
- Adicione ‘EVA l’ a
vision_transformer.py, pré-treino MIM estilo MAE ViT-L/14 com alvos EVA-CLIP, FT no ImageNet-1k (com ImageNet-22k intermediário para alguns)
| model | top1 | param_count | gmac | macts | hub |
|---|---|---|---|---|---|
| eva_large_patch14_336.in22k_ft_in22k_in1k | 89.2 | 304.5 | 191.1 | 270.2 | link |
| eva_large_patch14_336.in22k_ft_in1k | 88.7 | 304.5 | 191.1 | 270.2 | link |
| eva_large_patch14_196.in22k_ft_in22k_in1k | 88.6 | 304.1 | 61.6 | 63.5 | link |
| eva_large_patch14_196.in22k_ft_in1k | 87.9 | 304.1 | 61.6 | 63.5 | link |
6 de dezembro de 2022
- Adicionar pesos do modelo ViT-g/14 no estilo BEiT, 'EVA g', com pré-treinamento MIM e pré-treinamento CLIP ao
beit.py.
| model | top1 | param_count | gmac | macts | hub |
|---|---|---|---|---|---|
| eva_giant_patch14_560.m30m_ft_in22k_in1k | 89.8 | 1014.4 | 1906.8 | 2577.2 | link |
| eva_giant_patch14_336.m30m_ft_in22k_in1k | 89.6 | 1013 | 620.6 | 550.7 | link |
| eva_giant_patch14_336.clip_ft_in1k | 89.4 | 1013 | 620.6 | 550.7 | link |
| eva_giant_patch14_224.clip_ft_in1k | 89.1 | 1012.6 | 267.2 | 192.6 | link |
5 de dezembro de 2022
- Versão pré-lançamento (
0.8.0dev0) do suporte a múltiplos pesos (model_arch.pretrained_tag). Instale compip install --pre timm- vision_transformer, maxvit, convnext são as três primeiras implementações de modelos com suporte
- os nomes dos modelos estão mudando com isso (as funções anteriores _21k, etc. serão mescladas), ainda estamos resolvendo o tratamento de depreciação
- provavelmente há bugs, mas preciso de feedback, então por favor, experimente
- se a estabilidade for necessária, utilize as versões 0.6.x do pypi ou faça o clone a partir da ramificação 0.6.x
- O suporte para o compile do PyTorch 2.0 foi adicionado em train/validate/inference/benchmark, use o argumento
--torchcompile - O script de inferência permite mais controle sobre a saída, selecionando k para o índice + probabilidade da classe principal, com saída em json, csv ou parquet
- Adicione um conjunto completo de pesos da torre de imagem do CLIP ajustados a partir dos modelos LAION-2B e do CLIP original da OpenAI
| model | top1 | param_count | gmac | macts | hub |
|---|---|---|---|---|---|
| vit_huge_patch14_clip_336.laion2b_ft_in12k_in1k | 88.6 | 632.5 | 391 | 407.5 | link |
| vit_large_patch14_clip_336.openai_ft_in12k_in1k | 88.3 | 304.5 | 191.1 | 270.2 | link |
| vit_huge_patch14_clip_224.laion2b_ft_in12k_in1k | 88.2 | 632 | 167.4 | 139.4 | link |
| vit_large_patch14_clip_336.laion2b_ft_in12k_in1k | 88.2 | 304.5 | 191.1 | 270.2 | link |
| vit_large_patch14_clip_224.openai_ft_in12k_in1k | 88.2 | 304.2 | 81.1 | 88.8 | link |
| vit_large_patch14_clip_224.laion2b_ft_in12k_in1k | 87.9 | 304.2 | 81.1 | 88.8 | link |
| vit_large_patch14_clip_224.openai_ft_in1k | 87.9 | 304.2 | 81.1 | 88.8 | link |
| vit_large_patch14_clip_336.laion2b_ft_in1k | 87.9 | 304.5 | 191.1 | 270.2 | link |
| vit_huge_patch14_clip_224.laion2b_ft_in1k | 87.6 | 632 | 167.4 | 139.4 | link |
| vit_large_patch14_clip_224.laion2b_ft_in1k | 87.3 | 304.2 | 81.1 | 88.8 | link |
| vit_base_patch16_clip_384.laion2b_ft_in12k_in1k | 87.2 | 86.9 | 55.5 | 101.6 | link |
| vit_base_patch16_clip_384.openai_ft_in12k_in1k | 87 | 86.9 | 55.5 | 101.6 | link |
| vit_base_patch16_clip_384.laion2b_ft_in1k | 86.6 | 86.9 | 55.5 | 101.6 | link |
| vit_base_patch16_clip_384.openai_ft_in1k | 86.2 | 86.9 | 55.5 | 101.6 | link |
| vit_base_patch16_clip_224.laion2b_ft_in12k_in1k | 86.2 | 86.6 | 17.6 | 23.9 | link |
| vit_base_patch16_clip_224.openai_ft_in12k_in1k | 85.9 | 86.6 | 17.6 | 23.9 | link |
| vit_base_patch32_clip_448.laion2b_ft_in12k_in1k | 85.8 | 88.3 | 17.9 | 23.9 | link |
| vit_base_patch16_clip_224.laion2b_ft_in1k | 85.5 | 86.6 | 17.6 | 23.9 | link |
| vit_base_patch32_clip_384.laion2b_ft_in12k_in1k | 85.4 | 88.3 | 13.1 | 16.5 | link |
| vit_base_patch16_clip_224.openai_ft_in1k | 85.3 | 86.6 | 17.6 | 23.9 | link |
| vit_base_patch32_clip_384.openai_ft_in12k_in1k | 85.2 | 88.3 | 13.1 | 16.5 | link |
| vit_base_patch32_clip_224.laion2b_ft_in12k_in1k | 83.3 | 88.2 | 4.4 | 5 | link |
| vit_base_patch32_clip_224.laion2b_ft_in1k | 82.6 | 88.2 | 4.4 | 5 | link |
| vit_base_patch32_clip_224.openai_ft_in1k | 81.9 | 88.2 | 4.4 | 5 | link |
- Port dos pesos do MaxViT do TensorFlow da implementação oficial em https://github.com/google-research/maxvit
- Houve quedas maiores do que o esperado para os pesos de fine-tune in21k com upscale 384/512, possivelmente por falta de detalhes, mas o FT 21k pareceu sensível a pequenos ajustes de pré-processamento
| model | top1 | param_count | gmac | macts | hub |
|---|---|---|---|---|---|
| maxvit_xlarge_tf_512.in21k_ft_in1k | 88.5 | 475.8 | 534.1 | 1413.2 | link |
| maxvit_xlarge_tf_384.in21k_ft_in1k | 88.3 | 475.3 | 292.8 | 668.8 | link |
| maxvit_base_tf_512.in21k_ft_in1k | 88.2 | 119.9 | 138 | 704 | link |
| maxvit_large_tf_512.in21k_ft_in1k | 88 | 212.3 | 244.8 | 942.2 | link |
| maxvit_large_tf_384.in21k_ft_in1k | 88 | 212 | 132.6 | 445.8 | link |
| maxvit_base_tf_384.in21k_ft_in1k | 87.9 | 119.6 | 73.8 | 332.9 | link |
| maxvit_base_tf_512.in1k | 86.6 | 119.9 | 138 | 704 | link |
| maxvit_large_tf_512.in1k | 86.5 | 212.3 | 244.8 | 942.2 | link |
| maxvit_base_tf_384.in1k | 86.3 | 119.6 | 73.8 | 332.9 | link |
| maxvit_large_tf_384.in1k | 86.2 | 212 | 132.6 | 445.8 | link |
| maxvit_small_tf_512.in1k | 86.1 | 69.1 | 67.3 | 383.8 | link |
| maxvit_tiny_tf_512.in1k | 85.7 | 31 | 33.5 | 257.6 | link |
| maxvit_small_tf_384.in1k | 85.5 | 69 | 35.9 | 183.6 | link |
| maxvit_tiny_tf_384.in1k | 85.1 | 31 | 17.5 | 123.4 | link |
| maxvit_large_tf_224.in1k | 84.9 | 211.8 | 43.7 | 127.4 | link |
| maxvit_base_tf_224.in1k | 84.9 | 119.5 | 24 | 95 | link |
| maxvit_small_tf_224.in1k | 84.4 | 68.9 | 11.7 | 53.2 | link |
| maxvit_tiny_tf_224.in1k | 83.4 | 30.9 | 5.6 | 35.8 | link |
15 de outubro de 2022
- Melhorias no script de treinamento e validação
- Suporte a dispositivos não-GPU (ou seja, CPU)
- Compatibilidade com SLURM para o script de treinamento
- Suporte a datasets do HF (via ReaderHfds)
- Melhorias no carregamento de dados TFDS/WDS (preenchimento e repetição de amostras para uso distribuído corrigidos em relação à estimativa da contagem de amostras)
- suporte a in_chans !=3 para scripts / loader
- Otimizador Adan
- É possível habilitar o agendamento de LR por etapa via args
- Dataset ‘parsers’ renomeado para ‘readers’, mais descritivo do propósito
- Args de AMP alterados, APEX via
--amp-impl apex, bfloat16 suportado via--amp-dtype bfloat16 - A branch principal foi alterada para a versão 0.7.x, e a branch 0.6x foi criada para a liberação estável dos weight only adds
- renomeação do branch master -> main
10 de outubro de 2022
- Mais pesos na
maxxvitsérie, incluindo o primeiro bloco baseado em ConvNeXtcoatnextemaxxvitexperimentos:coatnext_nano_rw_224- 82.0 @ 224 (G) — (usa bloco conv do ConvNeXt, sem BatchNorm)maxxvit_rmlp_nano_rw_256- 83.0 @ 256, 83.7 @ 320 (G) (usa bloco conv do ConvNeXt, sem BN)maxvit_rmlp_small_rw_224- 84.5 @ 224, 85.1 @ 320 (G)maxxvit_rmlp_small_rw_256- 84.6 @ 256, 84.9 @ 288 (G) — poderia ser treinado melhor, os hiperparâmetros precisam de ajuste (usa bloco ConvNeXt, sem BN)coatnet_rmlp_2_rw_224- 84.6 @ 224, 85 @ 320 (T)- OBSERVAÇÃO: os pesos oficiais do MaxVit (in1k) foram liberados em https://github.com/google-research/maxvit — é necessário um trabalho extra para portar e adaptar, já que minha implementação foi criada de forma independente da deles e possui algumas pequenas diferenças + toda a questão do same padding do TF.
23 de setembro de 2022
- Torres de imagem LAION-2B CLIP suportadas como backbones pré-treinados para fine-tuning ou extração de recursos (sem classificador)
- vit_base_patch32_224_clip_laion2b
- vit_large_patch14_224_clip_laion2b
- vit_huge_patch14_224_clip_laion2b
- vit_giant_patch14_224_clip_laion2b
7 de setembro de 2022
- A página inicial da documentação do
timmdo Hugging Face agora existe, procure mais por aqui no futuro - Adicione os pesos do BEiT-v2 para os modelos base e large 224x224 de https://github.com/microsoft/unilm/tree/master/beit2
- Adicione mais pesos em
maxxvita série, incluindo umpico(7.5M de parâmetros, 1,9 GMACs), duastinyvariantes:maxvit_rmlp_pico_rw_256- 80.5 @ 256, 81.3 @ 320 (T)maxvit_tiny_rw_224- 83.5 @ 224 (G)maxvit_rmlp_tiny_rw_256- 84.2 @ 256, 84.8 @ 320 (T)
29 de agosto de 2022
- O tamanho da janela do MaxVit escala com img_size por padrão. Adicione o novo peso RelPosMlp MaxViT que aproveita isso:
maxvit_rmlp_nano_rw_256- 83.0 @ 256, 83.6 @ 320 (T)
26 de agosto de 2022
- CoAtNet (https://arxiv.org/abs/2106.04803) e MaxVit (https://arxiv.org/abs/2204.01697)
timmmodelos originais do timm- ambos encontrados na definição do modelo em
maxxvit.py, contêm inúmeras experimentações fora do escopo dos artigos originais - uma versão inacabada do Tensorflow dos autores do MaxVit pode ser encontrada em https://github.com/google-research/maxvit
- ambos encontrados na definição do modelo em
- Pesos pré-treinados iniciais do timm para CoAtNet e MaxVit (trabalhando em mais):
coatnet_nano_rw_224- 81.7 @ 224 (T)coatnet_rmlp_nano_rw_224- 82.0 @ 224, 82.8 @ 320 (T)coatnet_0_rw_224- 82.4 (T) — OBSERVAÇÃO: os coatnets ‘0’ do timm possuem 2 blocos adicionais da 3ª etapacoatnet_bn_0_rw_224- 82.4 (T)maxvit_nano_rw_256- 82.9 @ 256 (T)coatnet_rmlp_1_rw_224- 83.4 @ 224, 84 @ 320 (T)coatnet_1_rw_224- 83.6 @ 224 (G)- (T) = TPU treinado com o código de treinamento do branch
bits_and_tpu, (G) = GPU treinada
- GCVit (pesos adaptados de https://github.com/NVlabs/GCVit, código 100% reescrito em
timmpor questões de licença) - MViT-V2 (vit multi-escala, adaptado de https://github.com/facebookresearch/mvit)
- EfficientFormer (adaptado de https://github.com/snap-research/EfficientFormer)
- PyramidVisionTransformer-V2 (adaptado de https://github.com/whai362/PVT)
- Suporte a ‘Fast Norm’ para LayerNorm e GroupNorm que evita o upcast para float32 com AMP (usa APEX LN se disponível para um ganho adicional)
15 de agosto de 2022
- Pesos do ConvNeXt atto adicionados
convnext_atto- 75.7 @ 224, 77.0 @ 288convnext_atto_ols- 75.9 @ 224, 77.2 @ 288
5 de agosto de 2022
- Mais definições de modelos menores personalizados do ConvNeXt com pesos
convnext_femto- 77.5 @ 224, 78.7 @ 288convnext_femto_ols- 77.9 @ 224, 78.9 @ 288convnext_pico- 79.5 @ 224, 80.4 @ 288convnext_pico_ols- 79.5 @ 224, 80.5 @ 288convnext_nano_ols- 80.9 @ 224, 81.6 @ 288
- Atualizado o EdgeNeXt para melhorar a exportação para ONNX, adicionar uma nova variante base e pesos originais (https://github.com/mmaaz60/EdgeNeXt)
28 de julho de 2022
- Adicione os pesos do modelo recém-criado DeiT-III Medium (width=512, depth=12, num_heads=8). Obrigado, Hugo Touvron!
27 de julho de 2022
- Todos os arquivos csv de resultados de benchmark e validação em tempo de execução estão finalmente atualizados!
- Alguns pesos e definições de modelo adicionais foram adicionados:
darknetaa53- 79.8 @ 256, 80.5 @ 288convnext_nano- 80.8 @ 224, 81.5 @ 288cs3sedarknet_l- 81.2 @ 256, 81.8 @ 288cs3darknet_x- 81.8 @ 256, 82.2 @ 288cs3sedarknet_x- 82.2 @ 256, 82.7 @ 288cs3edgenet_x- 82.2 @ 256, 82.7 @ 288cs3se_edgenet_x- 82.8 @ 256, 83.5 @ 320
cs3*pesos acima de todos treinados em TPU com a branchbits_and_tpu. Obrigado ao programa TRC!- Adicionar suporte a output_stride=8 e 16 ao ConvNeXt (dilatação)
- deit3 models not being able to resize pos_emb fixed
- Versão 0.6.7 Lançamento no PyPi (com as correções de bugs acima e novos pesos desde a 0.6.5)
8 de julho de 2022
Mais modelos, mais correções
- Modelos de pesquisa oficiais (com pesos) adicionados:
- EdgeNeXt de (https://github.com/mmaaz60/EdgeNeXt)
- MobileViT-V2 de (https://github.com/apple/ml-cvnets)
- DeiT III (Vingança do ViT) de (https://github.com/facebookresearch/deit)
- Meus próprios modelos:
- Definições de
ResNetpequenas adicionadas a pedido, com 1 repetição de bloco para basic e bottleneck (resnet10 e resnet14) CspNetrefatorado com configuração de dataclass e opção simplificada CrossStage3 (cs3). Essas definições estão mais próximas das definições de backbone do YOLO-v5+.- Mais ajustes no vit de posição relativa. Dois modelos
srelpos(posição relativa compartilhada) treinados, e um médio com token de classe. - Adicione um modo alternativo de downsample ao EdgeNeXt e treine um modelo
small. Melhor que o small original, mas não que os novos pesos treinados do USI deles.
- Definições de
- Resultados dos pesos do meu próprio modelo (todos com treinamento no ImageNet-1k)
resnet10t- 66.5 @ 176, 68.3 @ 224resnet14t- 71.3 @ 176, 72.3 @ 224resnetaa50- 80.6 @ 224 , 81.6 @ 288darknet53- 80.0 @ 256, 80.5 @ 288cs3darknet_m- 77.0 @ 256, 77.6 @ 288cs3darknet_focus_m- 76.7 @ 256, 77.3 @ 288cs3darknet_l- 80.4 @ 256, 80.9 @ 288cs3darknet_focus_l- 80.3 @ 256, 80.9 @ 288vit_srelpos_small_patch16_224- 81.1 @ 224, 82.1 @ 320vit_srelpos_medium_patch16_224- 82.3 @ 224, 83.1 @ 320vit_relpos_small_patch16_cls_224- 82.6 @ 224, 83.6 @ 320edgnext_small_rw- 79.6 @ 224, 80.4 @ 320
cs3,darknetevit_*relpospesos acima todos treinados em TPU graças ao programa TRC! O restante treinado em GPUs superaquecendo.- Correções de suporte ao Hugging Face Hub verificadas, notebook de demonstração a ser definido
- Pesos / configurações pré-treinados podem ser carregados externamente (por exemplo, do disco local) com suporte para adaptação de cabeçalhos.
- Adicionar suporte para alterar as extensões de imagem escaneadas pelos conjuntos de dados/leitores do
timm. Veja (https://github.com/rwightman/pytorch-image-models/pull/1274#issuecomment-1178303103) - Implementação padrão de LayerNorm do ConvNeXt a ser usada
F.layer_norm(x.permute(0, 2, 3, 1), ...).permute(0, 3, 1, 2)viaLayerNorm2dem todos os casos. Um pouco mais lento que a implementação customizada anterior em alguns hardwares (por exemplo, Ampere com CL), mas no geral apresenta menos regressões em uma faixa mais ampla de hardwares e versões do PyTorch. A implementação anterior está disponível como LayerNormExp2d em models/layers/norm.py- um pouco mais lento que a implementação custom anterior em alguns hardwares (por exemplo, Ampere com CL), mas, no geral, apresenta menos regressões em uma faixa mais ampla de hardwares e versões do PyTorch.
- a implementação anterior existe como
LayerNormExp2demmodels/layers/norm.py
- Diversas correções de bugs
- Atualmente testando para o lançamento iminente da versão 0.6.x no PyPi
- O pré-treino de modelos maiores do LeViT ainda está em andamento (WIP); eles não treinam bem / facilmente sem destilação. Hora de adicionar suporte a destilação (finalmente)?
- O treinamento com pesos do ImageNet-22k + finetune está em andamento, e o trabalho de suporte a múltiplos pesos (lentamente) está avançando (há MUITOS pesos, suspiro) …
13 de maio de 2022
- Modelos e pesos oficiais do Swin-V2 adicionados a partir de (https://github.com/microsoft/Swin-Transformer). Limpos para suportar torchscript.
- Algumas refatorações para a implementação existente de Swin-V2-CR no
timm, provavelmente faremos mais alguns ajustes para aproximar partes da versão oficial e decidir se devemos mesclar alguns aspectos. - Mais experimentos de posição relativa / normalização residual pós-residual do Vision Transformer (todos treinados em TPU graças ao programa TRC)
vit_relpos_small_patch16_224- 81.5 @ 224, 82.5 @ 320 — rel pos, layer scale, no class token, avg poolvit_relpos_medium_patch16_rpn_224- 82.3 @ 224, 83.1 @ 320 — rel pos + res-post-norm, sem class token, avg poolvit_relpos_medium_patch16_224- 82,5 @ 224, 83,3 @ 320 — pos rel, escala de camada, sem token de classe, pooling médiovit_relpos_base_patch16_gapcls_224- 82.8 @ 224, 83.9 @ 320 — pos rel, layer scale, token de classe, pool de média (por engano)
- Reviver a variante “medium” do modelo ViT com 512 dimensões e 8 cabeças (após seu uso em um modelo “small” pré-DeiT para a primeira implementação do ViT em 2020)
- Adicionar suporte a posição relativa do ViT para alternar entre a implementação existente e algumas adições da implementação oficial do Swin-V2 para testes futuros
- Implementação do Sequencer2D (https://arxiv.org/abs/2205.01972), adicionada via PR do autor (https://github.com/okojoalg)
2 de maio de 2022
- Experimentos com Vision Transformer adicionando Posição Relativa (log-coord do Swin-V2) (
vision_transformer_relpos.py) e ramos Residual Post-Norm (do Swin-V2) (vision_transformer*.py)vit_relpos_base_patch32_plus_rpn_256- 79,5 @ 256, 80,6 @ 320 — pos rel + largura estendida + res-post-norm, sem token de classe, pool de médiavit_relpos_base_patch16_224- 82,5 @ 224, 83,6 @ 320 — pos rel, escala de camada, sem token de classe, pooling médiovit_base_patch16_rpn_224- 82.3 @ 224 — pos rel + res-post-norm, sem class token, avg pool
- Refatoração do Vision Transformer para remover a camada de representação que era usada apenas no vit inicial e raramente usada desde então com novos pré-treinamentos (por exemplo,
How to Train Your ViT) - Os modelos
vit_*suportam a remoção do token de classe, o uso de pooling médio global e o uso de fc_norm (como em beit, mae).
22 de abril de 2022
- Os modelos
timmagora são oficialmente suportados no fast.ai! Justo a tempo para o novo curso Practical Deep Learning. O link da documentaçãotimmdocsfoi atualizado para timm.fast.ai. - Mais dois pesos de modelo adicionados no TPU treinado série. Algum pré-treino In22k ainda em andamento.
seresnext101d_32x8d- 83.69 @ 224, 84.35 @ 288seresnextaa101d_32x8d(anti-aliased w/ AvgPool2d) - 83.85 @ 224, 84.57 @ 288
23 de março de 2022
- Adicione a opção
ParallelBlockeLayerScaleaos modelos vit base para suportar configurações de modelo em Three things everyone should know about ViT convnext_tiny_hnf(head norm first) pesos treinados com a receita A2 (ou próxima dela), 82,2% top-1, poderia melhorar com mais épocas.
21 de março de 2022
- Mergir
norm_norm_norm. IMPORTANTE essa atualização para uma próxima versão 0.6.x provavelmente desestabilizará o branch master por um tempo. O branch0.5.xou uma versão anterior 0.5.x pode ser usado se a estabilidade for necessária. - Atualização significativa dos pesos (todos treinados em TPU), conforme descrito nesta versão
regnety_040- 82.3 @ 224, 82.96 @ 288regnety_064- 83.0 @ 224, 83.65 @ 288regnety_080- 83.17 @ 224, 83.86 @ 288regnetv_040- 82.44 @ 224, 83.18 @ 288 (timm pre-act)regnetv_064- 83.1 @ 224, 83.71 @ 288 (timm pre-act)regnetz_040- 83.67 @ 256, 84.25 @ 320regnetz_040h- 83.77 @ 256, 84.5 @ 320 (com fc extra no head)resnetv2_50d_gn- 80.8 @ 224, 81.96 @ 288 (pre-act GroupNorm)resnetv2_50d_evos80.77 @ 224, 82.04 @ 288 (pre-act EvoNormS)regnetz_c16_evos- 81,9 @ 256, 82,64 @ 320 (EvoNormS)regnetz_d8_evos- 83.42 @ 256, 84.04 @ 320 (EvoNormS)xception41p- 82 @ 299 (timm pre-act)xception65- 83.17 @ 299xception65p- 83.14 @ 299 (timm pre-act)resnext101_64x4d- 82.46 @ 224, 83.16 @ 288seresnext101_32x8d- 83.57 @ 224, 84.270 @ 288resnetrs200- 83.85 @ 256, 84.44 @ 320
- Suporte ao hub do HuggingFace corrigido, com o trabalho inicial para permitir fontes de configuração alternativas para definições e pesos de modelos pré-treinados (suporte genérico a arquivos locais / URLs remotos em breve)
- Implementação do SwinTransformer-V2 adicionada. Enviada por Christoph Reich. Experimentos de treinamento e alterações no modelo por minha conta estão em andamento, portanto, espere quebras de compatibilidade.
- Modelos/pesos Swin-S3 (AutoFormerV2) adicionados a partir de https://github.com/microsoft/Cream/tree/main/AutoFormerV2
- Modelos MobileViT com pesos adaptados de https://github.com/apple/ml-cvnets
- Modelos PoolFormer com pesos adaptados de https://github.com/sail-sg/poolformer
- Modelos VOLO com pesos adaptados de https://github.com/sail-sg/volo
- Trabalho significativo experimentando com camadas de normalização que não são BatchNorm, como EvoNorm, FilterResponseNorm, GroupNorm, etc.
- Melhorar o suporte para camadas alternativas de norm + act (‘NormAct’) adicionadas a vários modelos, em especial EfficientNet/MobileNetV3, RegNet e Xception alinhado
- Suporte a convoluções agrupadas adicionado à família EfficientNet
- Adicionar a API de ‘group matching’ a todos os modelos para permitir o agrupamento de parâmetros do modelo para aplicação de decaimento de LR ‘layer-wise’, com escala de lr adicionada ao agendador de LR
- Suporte a gradient checkpointing adicionado a muitos modelos
forward_head(x, pre_logits=False)função adicionada a todos os modelos para permitir chamadas separadas deforward_features+forward_head- Todos os modelos de vision transformer e vision MLP foram atualizados para retornar recursos não agregados / não selecionados por token a partir de
forward_features, para consistência com os modelos CNN; a seleção de tokens ou a agregação agora são aplicadas emforward_head
2 de fevereiro de 2022
- Chris Hughes publicou ontem em seu blog uma análise exaustiva do
timm. Vale muito a pena ler. Getting Started with PyTorch Image Models (timm): A Practitioner’s Guide - Estou me preparando para mesclar o
norm_norm_normde volta para o master (ver 0.6.x) na próxima semana ou assim. As alterações são mais extensas do que o habitual e podem desestabilizar e quebrar o uso de algumas APIs de modelos (com o objetivo de manter compatibilidade total com versões anteriores). Portanto, cuidado ao instalar com pip install git+https://github.com/rwightman/pytorch-image-models! As versões 0.5.x e um branch 0.5.x permanecerão estáveis com um ou dois cherry picks até a poeira baixar. Recomendo usar a instalação via pypi por um tempo, se você preferir estabilidade.- As alterações são mais extensas do que o habitual e podem desestabilizar e quebrar o uso de algumas APIs de modelos (com o objetivo de manter compatibilidade total com versões anteriores). Portanto, tenha cuidado com as instalações via
pip install git+https://github.com/rwightman/pytorch-image-models! - As versões
0.5.xe o branch0.5.xpermanecerão estáveis, com um ou dois cherry picks, até a poeira baixar. Recomendamos manter a instalação via pypi por um tempo, se você deseja estabilidade.
- As alterações são mais extensas do que o habitual e podem desestabilizar e quebrar o uso de algumas APIs de modelos (com o objetivo de manter compatibilidade total com versões anteriores). Portanto, tenha cuidado com as instalações via
14 de janeiro de 2022
- Versão 0.5.4, com lançamento a ser enviado para o pypi. Já faz um tempo desde a última atualização no pypi e mudanças mais arriscadas serão mescladas no branch principal em breve…
- Adicione modelos ConvNeXT /w pesos da implementação oficial (https://github.com/facebookresearch/ConvNeXt), alguns ajustes de desempenho, compatível com recursos do timm
- Tentei treinar alguns modelos pequenos (aprox. 1,8-3M de parâmetros) / otimizados para mobile, alguns estão bons até agora, mais a caminho…
mnasnet_small- 65,6 top-1mobilenetv2_050- 65.9lcnet_100/075/050- 72.1 / 68.8 / 63.1semnasnet_075- 73fbnetv3_b/d/g- 79.1 / 79.7 / 82.0
- Modelos TinyNet adicionados por rsomani95
- LCNet adicionado via arquitetura MobileNetV3
5 de janeiro de 2023
- Modelos e pesos ConvNeXt-V2 adicionados ao arquivo existente
convnext.py- Artigo: ConvNeXt V2: Co-design e escalonamento de ConvNets com Autoencoders Mascarados
- Impl. de referência: https://github.com/facebookresearch/ConvNeXt-V2 (OBS.: pesos atualmente CC-BY-NC)
23 de dezembro de 2022 🎄☃
- Adicione modelos e pesos do FlexiViT de https://github.com/google-research/big_vision (veja o paper em https://arxiv.org/abs/2212.08013)
- OBS: atualmente, o redimensionamento é estático na criação do modelo; a amostragem dinâmica de tamanho de patch em tempo real / durante o treinamento está em desenvolvimento
- Muitos mais modelos foram atualizados para multi-pesos e agora estão disponíveis para download via HF hub (convnext, efficientnet, mobilenet, vision_transformer*, beit)
- Mais tags de pré-treinamento de modelos e ajustes, alguns nomes de modelos foram alterados (trabalhando nas traduções de depreciação, considere a branch principal DEV branch por enquanto, use 0.6.x para uso estável)
- Mais modelos de pré-treino do ImageNet-12k (subconjunto de 22k) surgindo:
efficientnet_b5.in12k_ft_in1k- 85.9 @ 448x448vit_medium_patch16_gap_384.in12k_ft_in1k- 85.5 @ 384x384vit_medium_patch16_gap_256.in12k_ft_in1k- 84.5 @ 256x256convnext_nano.in12k_ft_in1k- 82.9 @ 288x288
8 de dezembro de 2022
- Adicione ‘EVA l’ a
vision_transformer.py, pré-treino MIM estilo MAE ViT-L/14 com alvos EVA-CLIP, FT no ImageNet-1k (com ImageNet-22k intermediário para alguns)
| model | top1 | param_count | gmac | macts | hub |
|---|---|---|---|---|---|
| eva_large_patch14_336.in22k_ft_in22k_in1k | 89.2 | 304.5 | 191.1 | 270.2 | link |
| eva_large_patch14_336.in22k_ft_in1k | 88.7 | 304.5 | 191.1 | 270.2 | link |
| eva_large_patch14_196.in22k_ft_in22k_in1k | 88.6 | 304.1 | 61.6 | 63.5 | link |
| eva_large_patch14_196.in22k_ft_in1k | 87.9 | 304.1 | 61.6 | 63.5 | link |
6 de dezembro de 2022
- Adicionar pesos do modelo ViT-g/14 no estilo BEiT, 'EVA g', com pré-treinamento MIM e pré-treinamento CLIP ao
beit.py.
| model | top1 | param_count | gmac | macts | hub |
|---|---|---|---|---|---|
| eva_giant_patch14_560.m30m_ft_in22k_in1k | 89.8 | 1014.4 | 1906.8 | 2577.2 | link |
| eva_giant_patch14_336.m30m_ft_in22k_in1k | 89.6 | 1013 | 620.6 | 550.7 | link |
| eva_giant_patch14_336.clip_ft_in1k | 89.4 | 1013 | 620.6 | 550.7 | link |
| eva_giant_patch14_224.clip_ft_in1k | 89.1 | 1012.6 | 267.2 | 192.6 | link |
5 de dezembro de 2022
- Versão pré-lançamento (
0.8.0dev0) do suporte a múltiplos pesos (model_arch.pretrained_tag). Instale compip install --pre timm- vision_transformer, maxvit, convnext são as três primeiras implementações de modelos com suporte
- os nomes dos modelos estão mudando com isso (as funções anteriores _21k, etc. serão mescladas), ainda estamos resolvendo o tratamento de depreciação
- provavelmente há bugs, mas preciso de feedback, então por favor, experimente
- se a estabilidade for necessária, utilize as versões 0.6.x do pypi ou faça o clone a partir da ramificação 0.6.x
- O suporte para o compile do PyTorch 2.0 foi adicionado em train/validate/inference/benchmark, use o argumento
--torchcompile - O script de inferência permite mais controle sobre a saída, selecionando k para o índice + probabilidade da classe principal, com saída em json, csv ou parquet
- Adicione um conjunto completo de pesos da torre de imagem do CLIP ajustados a partir dos modelos LAION-2B e do CLIP original da OpenAI
| model | top1 | param_count | gmac | macts | hub |
|---|---|---|---|---|---|
| vit_huge_patch14_clip_336.laion2b_ft_in12k_in1k | 88.6 | 632.5 | 391 | 407.5 | link |
| vit_large_patch14_clip_336.openai_ft_in12k_in1k | 88.3 | 304.5 | 191.1 | 270.2 | link |
| vit_huge_patch14_clip_224.laion2b_ft_in12k_in1k | 88.2 | 632 | 167.4 | 139.4 | link |
| vit_large_patch14_clip_336.laion2b_ft_in12k_in1k | 88.2 | 304.5 | 191.1 | 270.2 | link |
| vit_large_patch14_clip_224.openai_ft_in12k_in1k | 88.2 | 304.2 | 81.1 | 88.8 | link |
| vit_large_patch14_clip_224.laion2b_ft_in12k_in1k | 87.9 | 304.2 | 81.1 | 88.8 | link |
| vit_large_patch14_clip_224.openai_ft_in1k | 87.9 | 304.2 | 81.1 | 88.8 | link |
| vit_large_patch14_clip_336.laion2b_ft_in1k | 87.9 | 304.5 | 191.1 | 270.2 | link |
| vit_huge_patch14_clip_224.laion2b_ft_in1k | 87.6 | 632 | 167.4 | 139.4 | link |
| vit_large_patch14_clip_224.laion2b_ft_in1k | 87.3 | 304.2 | 81.1 | 88.8 | link |
| vit_base_patch16_clip_384.laion2b_ft_in12k_in1k | 87.2 | 86.9 | 55.5 | 101.6 | link |
| vit_base_patch16_clip_384.openai_ft_in12k_in1k | 87 | 86.9 | 55.5 | 101.6 | link |
| vit_base_patch16_clip_384.laion2b_ft_in1k | 86.6 | 86.9 | 55.5 | 101.6 | link |
| vit_base_patch16_clip_384.openai_ft_in1k | 86.2 | 86.9 | 55.5 | 101.6 | link |
| vit_base_patch16_clip_224.laion2b_ft_in12k_in1k | 86.2 | 86.6 | 17.6 | 23.9 | link |
| vit_base_patch16_clip_224.openai_ft_in12k_in1k | 85.9 | 86.6 | 17.6 | 23.9 | link |
| vit_base_patch32_clip_448.laion2b_ft_in12k_in1k | 85.8 | 88.3 | 17.9 | 23.9 | link |
| vit_base_patch16_clip_224.laion2b_ft_in1k | 85.5 | 86.6 | 17.6 | 23.9 | link |
| vit_base_patch32_clip_384.laion2b_ft_in12k_in1k | 85.4 | 88.3 | 13.1 | 16.5 | link |
| vit_base_patch16_clip_224.openai_ft_in1k | 85.3 | 86.6 | 17.6 | 23.9 | link |
| vit_base_patch32_clip_384.openai_ft_in12k_in1k | 85.2 | 88.3 | 13.1 | 16.5 | link |
| vit_base_patch32_clip_224.laion2b_ft_in12k_in1k | 83.3 | 88.2 | 4.4 | 5 | link |
| vit_base_patch32_clip_224.laion2b_ft_in1k | 82.6 | 88.2 | 4.4 | 5 | link |
| vit_base_patch32_clip_224.openai_ft_in1k | 81.9 | 88.2 | 4.4 | 5 | link |
- Port dos pesos do MaxViT do TensorFlow da implementação oficial em https://github.com/google-research/maxvit
- Houve quedas maiores do que o esperado para os pesos de fine-tune in21k com upscale 384/512, possivelmente por falta de detalhes, mas o FT 21k pareceu sensível a pequenos ajustes de pré-processamento
| model | top1 | param_count | gmac | macts | hub |
|---|---|---|---|---|---|
| maxvit_xlarge_tf_512.in21k_ft_in1k | 88.5 | 475.8 | 534.1 | 1413.2 | link |
| maxvit_xlarge_tf_384.in21k_ft_in1k | 88.3 | 475.3 | 292.8 | 668.8 | link |
| maxvit_base_tf_512.in21k_ft_in1k | 88.2 | 119.9 | 138 | 704 | link |
| maxvit_large_tf_512.in21k_ft_in1k | 88 | 212.3 | 244.8 | 942.2 | link |
| maxvit_large_tf_384.in21k_ft_in1k | 88 | 212 | 132.6 | 445.8 | link |
| maxvit_base_tf_384.in21k_ft_in1k | 87.9 | 119.6 | 73.8 | 332.9 | link |
| maxvit_base_tf_512.in1k | 86.6 | 119.9 | 138 | 704 | link |
| maxvit_large_tf_512.in1k | 86.5 | 212.3 | 244.8 | 942.2 | link |
| maxvit_base_tf_384.in1k | 86.3 | 119.6 | 73.8 | 332.9 | link |
| maxvit_large_tf_384.in1k | 86.2 | 212 | 132.6 | 445.8 | link |
| maxvit_small_tf_512.in1k | 86.1 | 69.1 | 67.3 | 383.8 | link |
| maxvit_tiny_tf_512.in1k | 85.7 | 31 | 33.5 | 257.6 | link |
| maxvit_small_tf_384.in1k | 85.5 | 69 | 35.9 | 183.6 | link |
| maxvit_tiny_tf_384.in1k | 85.1 | 31 | 17.5 | 123.4 | link |
| maxvit_large_tf_224.in1k | 84.9 | 211.8 | 43.7 | 127.4 | link |
| maxvit_base_tf_224.in1k | 84.9 | 119.5 | 24 | 95 | link |
| maxvit_small_tf_224.in1k | 84.4 | 68.9 | 11.7 | 53.2 | link |
| maxvit_tiny_tf_224.in1k | 83.4 | 30.9 | 5.6 | 35.8 | link |
15 de outubro de 2022
- Melhorias no script de treinamento e validação
- Suporte a dispositivos não-GPU (ou seja, CPU)
- Compatibilidade com SLURM para o script de treinamento
- Suporte a datasets do HF (via ReaderHfds)
- Melhorias no carregamento de dados TFDS/WDS (preenchimento e repetição de amostras para uso distribuído corrigidos em relação à estimativa da contagem de amostras)
- suporte a in_chans !=3 para scripts / loader
- Otimizador Adan
- É possível habilitar o agendamento de LR por etapa via args
- Dataset ‘parsers’ renomeado para ‘readers’, mais descritivo do propósito
- Args de AMP alterados, APEX via
--amp-impl apex, bfloat16 suportado via--amp-dtype bfloat16 - A branch principal foi alterada para a versão 0.7.x, e a branch 0.6x foi criada para a liberação estável dos weight only adds
- renomeação do branch master -> main
10 de outubro de 2022
- Mais pesos na
maxxvitsérie, incluindo o primeiro bloco baseado em ConvNeXtcoatnextemaxxvitexperimentos:coatnext_nano_rw_224- 82.0 @ 224 (G) — (usa bloco conv do ConvNeXt, sem BatchNorm)maxxvit_rmlp_nano_rw_256- 83.0 @ 256, 83.7 @ 320 (G) (usa bloco conv do ConvNeXt, sem BN)maxvit_rmlp_small_rw_224- 84.5 @ 224, 85.1 @ 320 (G)maxxvit_rmlp_small_rw_256- 84.6 @ 256, 84.9 @ 288 (G) — poderia ser treinado melhor, os hiperparâmetros precisam de ajuste (usa bloco ConvNeXt, sem BN)coatnet_rmlp_2_rw_224- 84.6 @ 224, 85 @ 320 (T)- OBSERVAÇÃO: os pesos oficiais do MaxVit (in1k) foram liberados em https://github.com/google-research/maxvit — é necessário um trabalho extra para portar e adaptar, já que minha implementação foi criada de forma independente da deles e possui algumas pequenas diferenças + toda a questão do same padding do TF.
23 de setembro de 2022
- Torres de imagem LAION-2B CLIP suportadas como backbones pré-treinados para fine-tuning ou extração de recursos (sem classificador)
- vit_base_patch32_224_clip_laion2b
- vit_large_patch14_224_clip_laion2b
- vit_huge_patch14_224_clip_laion2b
- vit_giant_patch14_224_clip_laion2b
7 de setembro de 2022
- A página inicial da documentação do
timmdo Hugging Face agora existe, procure mais por aqui no futuro - Adicione os pesos do BEiT-v2 para os modelos base e large 224x224 de https://github.com/microsoft/unilm/tree/master/beit2
- Adicione mais pesos em
maxxvita série, incluindo umpico(7.5M de parâmetros, 1,9 GMACs), duastinyvariantes:maxvit_rmlp_pico_rw_256- 80.5 @ 256, 81.3 @ 320 (T)maxvit_tiny_rw_224- 83.5 @ 224 (G)maxvit_rmlp_tiny_rw_256- 84.2 @ 256, 84.8 @ 320 (T)
29 de agosto de 2022
- O tamanho da janela do MaxVit escala com img_size por padrão. Adicione o novo peso RelPosMlp MaxViT que aproveita isso:
maxvit_rmlp_nano_rw_256- 83.0 @ 256, 83.6 @ 320 (T)
26 de agosto de 2022
- CoAtNet (https://arxiv.org/abs/2106.04803) e MaxVit (https://arxiv.org/abs/2204.01697)
timmmodelos originais do timm- ambos encontrados na definição do modelo em
maxxvit.py, contêm inúmeras experimentações fora do escopo dos artigos originais - uma versão inacabada do Tensorflow dos autores do MaxVit pode ser encontrada em https://github.com/google-research/maxvit
- ambos encontrados na definição do modelo em
- Pesos pré-treinados iniciais do timm para CoAtNet e MaxVit (trabalhando em mais):
coatnet_nano_rw_224- 81.7 @ 224 (T)coatnet_rmlp_nano_rw_224- 82.0 @ 224, 82.8 @ 320 (T)coatnet_0_rw_224- 82.4 (T) — OBSERVAÇÃO: os coatnets ‘0’ do timm possuem 2 blocos adicionais da 3ª etapacoatnet_bn_0_rw_224- 82.4 (T)maxvit_nano_rw_256- 82.9 @ 256 (T)coatnet_rmlp_1_rw_224- 83.4 @ 224, 84 @ 320 (T)coatnet_1_rw_224- 83.6 @ 224 (G)- (T) = TPU treinado com o código de treinamento do branch
bits_and_tpu, (G) = GPU treinada
- GCVit (pesos adaptados de https://github.com/NVlabs/GCVit, código 100% reescrito em
timmpor questões de licença) - MViT-V2 (vit multi-escala, adaptado de https://github.com/facebookresearch/mvit)
- EfficientFormer (adaptado de https://github.com/snap-research/EfficientFormer)
- PyramidVisionTransformer-V2 (adaptado de https://github.com/whai362/PVT)
- Suporte a ‘Fast Norm’ para LayerNorm e GroupNorm que evita o upcast para float32 com AMP (usa APEX LN se disponível para um ganho adicional)
15 de agosto de 2022
- Pesos do ConvNeXt atto adicionados
convnext_atto- 75.7 @ 224, 77.0 @ 288convnext_atto_ols- 75.9 @ 224, 77.2 @ 288
5 de agosto de 2022
- Mais definições de modelos menores personalizados do ConvNeXt com pesos
convnext_femto- 77.5 @ 224, 78.7 @ 288convnext_femto_ols- 77.9 @ 224, 78.9 @ 288convnext_pico- 79.5 @ 224, 80.4 @ 288convnext_pico_ols- 79.5 @ 224, 80.5 @ 288convnext_nano_ols- 80.9 @ 224, 81.6 @ 288
- Atualizado o EdgeNeXt para melhorar a exportação para ONNX, adicionar uma nova variante base e pesos originais (https://github.com/mmaaz60/EdgeNeXt)
28 de julho de 2022
- Adicione os pesos do modelo recém-criado DeiT-III Medium (width=512, depth=12, num_heads=8). Obrigado, Hugo Touvron!
27 de julho de 2022
- Todos os arquivos csv de resultados de benchmark e validação em tempo de execução estão atualizados!
- Alguns pesos e definições de modelo adicionais foram adicionados:
darknetaa53- 79.8 @ 256, 80.5 @ 288convnext_nano- 80.8 @ 224, 81.5 @ 288cs3sedarknet_l- 81.2 @ 256, 81.8 @ 288cs3darknet_x- 81.8 @ 256, 82.2 @ 288cs3sedarknet_x- 82.2 @ 256, 82.7 @ 288cs3edgenet_x- 82.2 @ 256, 82.7 @ 288cs3se_edgenet_x- 82.8 @ 256, 83.5 @ 320
cs3*pesos acima de todos treinados em TPU com a branchbits_and_tpu. Obrigado ao programa TRC!- Adicionar suporte a output_stride=8 e 16 ao ConvNeXt (dilatação)
- deit3 models not being able to resize pos_emb fixed
- Versão 0.6.7 Lançamento no PyPi (com as correções de bugs acima e novos pesos desde a 0.6.5)
8 de julho de 2022
Mais modelos, mais correções
- Modelos de pesquisa oficiais (com pesos) adicionados:
- EdgeNeXt de (https://github.com/mmaaz60/EdgeNeXt)
- MobileViT-V2 de (https://github.com/apple/ml-cvnets)
- DeiT III (Vingança do ViT) de (https://github.com/facebookresearch/deit)
- Meus próprios modelos:
- Definições de
ResNetpequenas adicionadas a pedido, com 1 repetição de bloco para basic e bottleneck (resnet10 e resnet14) CspNetrefatorado com configuração de dataclass e opção simplificada CrossStage3 (cs3). Essas definições estão mais próximas das definições de backbone do YOLO-v5+.- Mais ajustes no vit de posição relativa. Dois modelos
srelpos(posição relativa compartilhada) treinados, e um médio com token de classe. - Adicione um modo alternativo de downsample ao EdgeNeXt e treine um modelo
small. Melhor que o small original, mas não que os novos pesos treinados do USI deles.
- Definições de
- Resultados dos pesos do meu próprio modelo (todos com treinamento no ImageNet-1k)
resnet10t- 66.5 @ 176, 68.3 @ 224resnet14t- 71.3 @ 176, 72.3 @ 224resnetaa50- 80.6 @ 224 , 81.6 @ 288darknet53- 80.0 @ 256, 80.5 @ 288cs3darknet_m- 77.0 @ 256, 77.6 @ 288cs3darknet_focus_m- 76.7 @ 256, 77.3 @ 288cs3darknet_l- 80.4 @ 256, 80.9 @ 288cs3darknet_focus_l- 80.3 @ 256, 80.9 @ 288vit_srelpos_small_patch16_224- 81.1 @ 224, 82.1 @ 320vit_srelpos_medium_patch16_224- 82.3 @ 224, 83.1 @ 320vit_relpos_small_patch16_cls_224- 82.6 @ 224, 83.6 @ 320edgnext_small_rw- 79.6 @ 224, 80.4 @ 320
cs3,darknetevit_*relpospesos acima todos treinados em TPU graças ao programa TRC! O restante treinado em GPUs superaquecendo.- Correções de suporte ao Hugging Face Hub verificadas, notebook de demonstração a ser definido
- Pesos / configurações pré-treinados podem ser carregados externamente (por exemplo, do disco local) com suporte para adaptação de cabeçalhos.
- Adicionar suporte para alterar as extensões de imagem escaneadas pelos conjuntos de dados/analisadores do
timm. Veja (https://github.com/rwightman/pytorch-image-models/pull/1274#issuecomment-1178303103) - Implementação padrão de LayerNorm do ConvNeXt a ser usada
F.layer_norm(x.permute(0, 2, 3, 1), ...).permute(0, 3, 1, 2)viaLayerNorm2dem todos os casos. Um pouco mais lento que a implementação customizada anterior em alguns hardwares (por exemplo, Ampere com CL), mas no geral apresenta menos regressões em uma faixa mais ampla de hardwares e versões do PyTorch. A implementação anterior está disponível como LayerNormExp2d em models/layers/norm.py- um pouco mais lento que a implementação custom anterior em alguns hardwares (por exemplo, Ampere com CL), mas, no geral, apresenta menos regressões em uma faixa mais ampla de hardwares e versões do PyTorch.
- a implementação anterior existe como
LayerNormExp2demmodels/layers/norm.py
- Diversas correções de bugs
- Atualmente testando para o lançamento iminente da versão 0.6.x no PyPi
- O pré-treino de modelos maiores do LeViT ainda está em andamento (WIP); eles não treinam bem / facilmente sem destilação. Hora de adicionar suporte a destilação (finalmente)?
- O treinamento com pesos do ImageNet-22k + finetune está em andamento, e o trabalho de suporte a múltiplos pesos (lentamente) está avançando (há MUITOS pesos, suspiro) …
13 de maio de 2022
- Modelos e pesos oficiais do Swin-V2 adicionados a partir de (https://github.com/microsoft/Swin-Transformer). Limpos para suportar torchscript.
- Algumas refatorações para a implementação existente de Swin-V2-CR no
timm, provavelmente faremos mais alguns ajustes para aproximar partes da versão oficial e decidir se devemos mesclar alguns aspectos. - Mais experimentos de posição relativa / normalização residual pós-residual do Vision Transformer (todos treinados em TPU graças ao programa TRC)
vit_relpos_small_patch16_224- 81.5 @ 224, 82.5 @ 320 — rel pos, layer scale, no class token, avg poolvit_relpos_medium_patch16_rpn_224- 82.3 @ 224, 83.1 @ 320 — rel pos + res-post-norm, sem class token, avg poolvit_relpos_medium_patch16_224- 82,5 @ 224, 83,3 @ 320 — pos rel, escala de camada, sem token de classe, pooling médiovit_relpos_base_patch16_gapcls_224- 82.8 @ 224, 83.9 @ 320 — pos rel, layer scale, token de classe, pool de média (por engano)
- Reviver a variante “medium” do modelo ViT com 512 dimensões e 8 cabeças (após seu uso em um modelo “small” pré-DeiT para a primeira implementação do ViT em 2020)
- Adicionar suporte a posição relativa do ViT para alternar entre a implementação existente e algumas adições da implementação oficial do Swin-V2 para testes futuros
- Implementação do Sequencer2D (https://arxiv.org/abs/2205.01972), adicionada via PR do autor (https://github.com/okojoalg)
2 de maio de 2022
- Experimentos com Vision Transformer adicionando Posição Relativa (log-coord do Swin-V2) (
vision_transformer_relpos.py) e ramos Residual Post-Norm (do Swin-V2) (vision_transformer*.py)vit_relpos_base_patch32_plus_rpn_256- 79,5 @ 256, 80,6 @ 320 — pos rel + largura estendida + res-post-norm, sem token de classe, pool de médiavit_relpos_base_patch16_224- 82,5 @ 224, 83,6 @ 320 — pos rel, escala de camada, sem token de classe, pooling médiovit_base_patch16_rpn_224- 82.3 @ 224 — pos rel + res-post-norm, sem class token, avg pool
- Refatoração do Vision Transformer para remover a camada de representação que era usada apenas no vit inicial e raramente usada desde então com novos pré-treinamentos (por exemplo,
How to Train Your ViT) - Os modelos
vit_*suportam a remoção do token de classe, o uso de pooling médio global e o uso de fc_norm (como em beit, mae).
22 de abril de 2022
- Os modelos
timmagora são oficialmente suportados no fast.ai! Justo a tempo para o novo curso Practical Deep Learning. O link da documentaçãotimmdocsfoi atualizado para timm.fast.ai. - Mais dois pesos de modelo adicionados no TPU treinado série. Algum pré-treino In22k ainda em andamento.
seresnext101d_32x8d- 83.69 @ 224, 84.35 @ 288seresnextaa101d_32x8d(anti-aliased w/ AvgPool2d) - 83.85 @ 224, 84.57 @ 288
23 de março de 2022
- Adicione a opção
ParallelBlockeLayerScaleaos modelos vit base para suportar configurações de modelo em Three things everyone should know about ViT convnext_tiny_hnf(head norm first) pesos treinados com a receita A2 (ou próxima dela), 82,2% top-1, poderia melhorar com mais épocas.
21 de março de 2022
- Mergir
norm_norm_norm. IMPORTANTE essa atualização para uma próxima versão 0.6.x provavelmente desestabilizará o branch master por um tempo. O branch0.5.xou uma versão anterior 0.5.x pode ser usado se a estabilidade for necessária. - Atualização significativa dos pesos (todos treinados em TPU), conforme descrito nesta versão
regnety_040- 82.3 @ 224, 82.96 @ 288regnety_064- 83.0 @ 224, 83.65 @ 288regnety_080- 83.17 @ 224, 83.86 @ 288regnetv_040- 82.44 @ 224, 83.18 @ 288 (timm pre-act)regnetv_064- 83.1 @ 224, 83.71 @ 288 (timm pre-act)regnetz_040- 83.67 @ 256, 84.25 @ 320regnetz_040h- 83.77 @ 256, 84.5 @ 320 (com fc extra no head)resnetv2_50d_gn- 80.8 @ 224, 81.96 @ 288 (pre-act GroupNorm)resnetv2_50d_evos80.77 @ 224, 82.04 @ 288 (pre-act EvoNormS)regnetz_c16_evos- 81,9 @ 256, 82,64 @ 320 (EvoNormS)regnetz_d8_evos- 83.42 @ 256, 84.04 @ 320 (EvoNormS)xception41p- 82 @ 299 (timm pre-act)xception65- 83.17 @ 299xception65p- 83.14 @ 299 (timm pre-act)resnext101_64x4d- 82.46 @ 224, 83.16 @ 288seresnext101_32x8d- 83.57 @ 224, 84.270 @ 288resnetrs200- 83.85 @ 256, 84.44 @ 320
- Suporte ao hub do HuggingFace corrigido, com o trabalho inicial para permitir fontes de configuração alternativas para definições e pesos de modelos pré-treinados (suporte genérico a arquivos locais / URLs remotos em breve)
- Implementação do SwinTransformer-V2 adicionada. Enviada por Christoph Reich. Experimentos de treinamento e alterações no modelo por minha conta estão em andamento, portanto, espere quebras de compatibilidade.
- Modelos/pesos Swin-S3 (AutoFormerV2) adicionados a partir de https://github.com/microsoft/Cream/tree/main/AutoFormerV2
- Modelos MobileViT com pesos adaptados de https://github.com/apple/ml-cvnets
- Modelos PoolFormer com pesos adaptados de https://github.com/sail-sg/poolformer
- Modelos VOLO com pesos adaptados de https://github.com/sail-sg/volo
- Trabalho significativo experimentando com camadas de normalização que não são BatchNorm, como EvoNorm, FilterResponseNorm, GroupNorm, etc.
- Melhorar o suporte para camadas alternativas de norm + act (‘NormAct’) adicionadas a vários modelos, em especial EfficientNet/MobileNetV3, RegNet e Xception alinhado
- Suporte a convoluções agrupadas adicionado à família EfficientNet
- Adicionar a API de ‘group matching’ a todos os modelos para permitir o agrupamento de parâmetros do modelo para aplicação de decaimento de LR ‘layer-wise’, com escala de lr adicionada ao agendador de LR
- Suporte a gradient checkpointing adicionado a muitos modelos
forward_head(x, pre_logits=False)função adicionada a todos os modelos para permitir chamadas separadas deforward_features+forward_head- Todos os modelos de vision transformer e vision MLP foram atualizados para retornar recursos não agregados / não selecionados por token a partir de
forward_features, para consistência com os modelos CNN; a seleção de tokens ou a agregação agora são aplicadas emforward_head
2 de fevereiro de 2022
- Chris Hughes publicou ontem em seu blog uma análise exaustiva do
timm. Vale muito a pena ler. Getting Started with PyTorch Image Models (timm): A Practitioner’s Guide - Estou me preparando para mesclar o
norm_norm_normde volta para o master (ver 0.6.x) na próxima semana ou assim. As alterações são mais extensas do que o habitual e podem desestabilizar e quebrar o uso de algumas APIs de modelos (com o objetivo de manter compatibilidade total com versões anteriores). Portanto, cuidado ao instalar com pip install git+https://github.com/rwightman/pytorch-image-models! As versões 0.5.x e um branch 0.5.x permanecerão estáveis com um ou dois cherry picks até a poeira baixar. Recomendo usar a instalação via pypi por um tempo, se você preferir estabilidade.- As alterações são mais extensas do que o habitual e podem desestabilizar e quebrar o uso de algumas APIs de modelos (com o objetivo de manter compatibilidade total com versões anteriores). Portanto, tenha cuidado com as instalações via
pip install git+https://github.com/rwightman/pytorch-image-models! - As versões
0.5.xe o branch0.5.xpermanecerão estáveis, com um ou dois cherry picks, até a poeira baixar. Recomendamos manter a instalação via pypi por um tempo, se você deseja estabilidade.
- As alterações são mais extensas do que o habitual e podem desestabilizar e quebrar o uso de algumas APIs de modelos (com o objetivo de manter compatibilidade total com versões anteriores). Portanto, tenha cuidado com as instalações via
14 de janeiro de 2022
- Versão 0.5.4, com lançamento a ser enviado para o pypi. Já faz um tempo desde a última atualização no pypi e mudanças mais arriscadas serão mescladas no branch principal em breve…
- Adicione modelos ConvNeXT /w pesos da implementação oficial (https://github.com/facebookresearch/ConvNeXt), alguns ajustes de desempenho, compatível com recursos do timm
- Tentei treinar alguns modelos pequenos (aprox. 1,8-3M de parâmetros) / otimizados para mobile, alguns estão bons até agora, mais a caminho…
mnasnet_small- 65,6 top-1mobilenetv2_050- 65.9lcnet_100/075/050- 72.1 / 68.8 / 63.1semnasnet_075- 73fbnetv3_b/d/g- 79.1 / 79.7 / 82.0
- Modelos TinyNet adicionados por rsomani95
- LCNet adicionado via arquitetura MobileNetV3