timm documentation

Changelog

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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() e prune_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, com prune_intermediate_layers() para os codificadores NaFlexViT e MobileNetV5. CoaT, ConViT, ConvMixer, CrossViT e Visformer ganham suporte a features_only.
  • prune_intermediate_layers() correções
    • prune_head=True remove 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 sem find_unused_parameters), exceto CoaT, CrossViT e HRNet quando apenas algumas de suas escalas/ramificações paralelas são mantidas. Passe prune_head=False para 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 e num_features / head_hidden_size correspondem 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ós reset_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 a forward_head(pre_logits=True)), o reset_classifier() do vit_pe_core com um pool que não é map remove o pool de atenção, a exportação do tipo de pool via save_for_hf lê 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 de train.py, um --config efetivo 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 auto retoma no local a partir do próprio last.pth.tar do experimento (o histórico de checkpoints, model_best e summary.csv permanecem consistentes), --stop-epoch N interrompe sem alterar o cronograma, --save-epochs N [N ...] mantém snapshots milestone-N.pth.tar e os valores do YAML --config são validados em relação aos argumentos do script.
  • Descontinuar PlateauLRScheduler (--sched plateau). Os agendadores do timm sã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. Use cosine ou wsd.
  • 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 geram TypeError em todos os casos, dynamic_img_size da família Swin, decaimento de taxa de aprendizado por camada no LeViT, nomes de no_weight_decay que não correspondiam a nenhum parâmetro (NesT, SwinV2, XCiT, FocalNet), estado de redimensionamento registrado para todas as famílias de set_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_model movido para timm.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_SIZE para 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.
  • 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_ratio por estágio. Corrige os modelos Swin S3 e SwinV2 window16 / window12 que 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.py com --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 multilabel a train.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 leitores hfds, hfids, tfds (chaves de múltiplos campos) e wds.
    • 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-metric padrã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.
  • 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 batchmean como 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_type e normalize_coords aos 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_half na saída em tupla de RotaryEmbedding e na variante de fábrica base.
    • 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_cat e apply_rot_embed_list retornarem 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 bands agora é retido tanto no modo em cache quanto no modo dinâmico (rope.bands não é mais None no 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.py e 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
  • 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.compile e 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

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=True e 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_causal para 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 timm treinado, mas pode afetar o uso subsequente.

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

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
  • 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 -> lvd1689m para corresponder (o mesmo para sat_493m -> sat493m)
  • Release 1.0.20

17 de setembro de 2025

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, timm SBB ViT com ROPE e Naver ROPE-ViT, agora podem ser carregados no NaFlexViT quando use_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
modelimg_sizetop1top5param_count
vit_large_patch16_rope_mixed_ape_224.naver_in1k22484.8497.122304.4
vit_large_patch16_rope_mixed_224.naver_in1k22484.82897.116304.2
vit_large_patch16_rope_ape_224.naver_in1k22484.6597.154304.37
vit_large_patch16_rope_224.naver_in1k22484.64897.122304.17
vit_base_patch16_rope_mixed_ape_224.naver_in1k22483.89496.75486.59
vit_base_patch16_rope_mixed_224.naver_in1k22483.80496.71286.44
vit_base_patch16_rope_ape_224.naver_in1k22483.78296.6186.59
vit_base_patch16_rope_224.naver_in1k22483.71896.67286.43
vit_small_patch16_rope_224.naver_in1k22481.2395.02221.98
vit_small_patch16_rope_mixed_224.naver_in1k22481.21695.02221.99
vit_small_patch16_rope_ape_224.naver_in1k22481.00495.01622.06
vit_small_patch16_rope_mixed_ape_224.naver_in1k22480.98694.97622.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.

    ModelAcurácia Top-1Top-5 PrecParâmetros (M)Comprimento da sequência de avaliação
    naflexvit_base_patch16_par_gap.e300_s576_in1k83.6796.4586.63576
    naflexvit_base_patch16_parfac_gap.e300_s576_in1k83.6396.4186.46576
    naflexvit_base_patch16_gap.e300_s576_in1k83.5096.4686.63576
  • Suporte ao gradient checkpointing para forward_intermediates e correção de alguns bugs de checkpointing. Agradecimentos a https://github.com/brianhou0208

  • Adicionar ‘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:
    1. Embedding encapsulado e codificação de posição em um único módulo
    2. Suporte para incorporação de patches com nn.Linear em entradas pré-patchificadas (dicionário)
    3. Suporte a NaFlex com aspecto variável e resolução variável (SigLip-2: https://arxiv.org/abs/2502.14786)
    4. Suporte ao tamanho de patch variável do FlexiViT (https://arxiv.org/abs/2212.08013)
    5. Suporte para incorporação de posição fracionada/fatorizada do NaViT (https://arxiv.org/abs/2307.06304)
  • Os modelos vit existentes em vision_transformer.py podem ser carregados no modelo NaFlexVit adicionando a use_naflex=True flag em create_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.py e validate.py, adicione o argumento --naflex-loader, que deve ser usado com um NaFlexVit
  • 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-len define o comprimento de sequência alvo para a validação
    • Adicionar --model-kwargs enable_patch_interpolator=True --naflex-patch-sizes 12 16 24 habilitará a seleção aleatória de tamanhos de patch por lote com interpolação
    • O argumento --naflex-loss-scale alterna o modo de escalonamento de perda por lote em relação ao tamanho do lote, e o carregamento NaFlex do timm altera o tamanho do lote para cada comprimento de sequência

28 de maio de 2025

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-1
    • vit_so150m2_patch16_reg1_gap_384.sbb_e200_in12k_ft_in1k - 87,9% top-1
    • vit_so150m2_patch16_reg1_gap_256.sbb_e200_in12k_ft_in1k - 87,3% top-1
    • vit_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

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-1
    • vit_so150m_patch16_reg4_gap_384.sbb_e250_in12k_ft_in1k - 87,4% top-1
    • vit_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 bfloat16 ou float16 puros
  • Nome do projeto wandb adicionado 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() em timm.models que define use_reentrant=False por padrão, a menos que TIMM_REENTRANT_CKPT=1 esteja definido no ambiente.

31 de dezembro de 2024

  • convnext_nano 384x384 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 RmsNorm existentes para corresponder à formulação padrão, usando a implementação do PT 2.5 quando possível. Mover a implementação antiga para a camada SimpleNorm, que é LN sem centralização ou viés. Havia apenas dois modelos do timm que a utilizavam, e eles foram atualizados.
  • Permitir a substituição do argumento cache_dir para a criação do modelo
  • Passar trust_remote_code para o wrapper de datasets do HF
  • Modelo inception_next_atto adicionado 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 novo TimmWrapperModel do Transformers

28 de novembro de 2024

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ção create_optimizer_v2 reestruturada para explorar otimizadores, obter informações ou a classe
    • deprecate optim.optim_factory, move fns to optim/_optim_factory.py e optim/_param_groups.py e encorajar import via timm.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 timm como vit_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.
modelimg_sizetop1top5param_count
mambaout_base_plus_rw.sw_e150_r384_in12k_ft_in1k38487.50698.428101.66
mambaout_base_plus_rw.sw_e150_in12k_ft_in1k28886.91298.236101.66
mambaout_base_plus_rw.sw_e150_in12k_ft_in1k22486.63298.156101.66
mambaout_base_tall_rw.sw_e500_in1k28884.97497.33286.48
mambaout_base_wide_rw.sw_e500_in1k28884.96297.20894.45
mambaout_base_short_rw.sw_e500_in1k28884.83297.2788.83
mambaout_base.in1k28884.7296.9384.81
mambaout_small_rw.sw_e450_in1k28884.59897.09848.5
mambaout_small.in1k28884.596.97448.49
mambaout_base_wide_rw.sw_e500_in1k22484.45496.86494.45
mambaout_base_tall_rw.sw_e500_in1k22484.43496.95886.48
mambaout_base_short_rw.sw_e500_in1k22484.36296.95288.83
mambaout_base.in1k22484.16896.6884.81
mambaout_small.in1k22484.08696.6348.49
mambaout_small_rw.sw_e450_in1k22484.02496.75248.5
mambaout_tiny.in1k28883.44896.53826.55
mambaout_tiny.in1k22482.73696.126.55
mambaout_kobe.in1k28881.05495.7189.14
mambaout_kobe.in1k22479.98694.9869.14
mambaout_femto.in1k28879.84895.147.3
mambaout_femto.in1k22478.8794.4087.3

Set 2024

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
modeltop1top5param_countimg_size
vit_mediumd_patch16_reg4_gap_384.sbb2_e200_in12k_ft_in1k87.43898.25664.11384
vit_mediumd_patch16_reg4_gap_256.sbb2_e200_in12k_ft_in1k86.60897.93464.11256
vit_betwixt_patch16_reg4_gap_384.sbb2_e200_in12k_ft_in1k86.59498.0260.4384
vit_betwixt_patch16_reg4_gap_256.sbb2_e200_in12k_ft_in1k85.73497.6160.4256
  • Pesos do MobileNet-V1 1.25, EfficientNet-B1 e ResNet50-D com a receita do desafio de baseline do MNV4
modeltop1top5param_countimg_size
resnet50d.ra4_e3600_r224_in1k81.83895.92225.58288
efficientnet_b1.ra4_e3600_r240_in1k81.44095.7007.79288
resnet50d.ra4_e3600_r224_in1k80.95295.38425.58224
efficientnet_b1.ra4_e3600_r240_in1k80.40695.1527.79240
mobilenetv1_125.ra4_e3600_r224_in1k77.60093.8046.27256
mobilenetv1_125.ra4_e3600_r224_in1k76.92493.2346.27224
  • 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
modeltop1top5param_count
hiera_small_abswin_256.sbb2_e200_in12k_ft_in1k84.91297.26035.01
hiera_small_abswin_256.sbb2_pd_e200_in12k_ft_in1k84.56097.10635.01

8 de agosto de 2024

28 de julho de 2024

  • Adiciona pesos mobilenet_edgetpu_v2_m com receita baseada em ra4 mnv4-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
modeltop1top1_errtop5top5_errparam_countimg_size
mobilenetv4_conv_aa_large.e230_r448_in12k_ft_in1k84.9915.0197.2942.70632.59544
mobilenetv4_conv_aa_large.e230_r384_in12k_ft_in1k84.77215.22897.3442.65632.59480
mobilenetv4_conv_aa_large.e230_r448_in12k_ft_in1k84.6415.3697.1142.88632.59448
mobilenetv4_conv_aa_large.e230_r384_in12k_ft_in1k84.31415.68697.1022.89832.59384
mobilenetv4_conv_aa_large.e600_r384_in1k83.82416.17696.7343.26632.59480
mobilenetv4_conv_aa_large.e600_r384_in1k83.24416.75696.3923.60832.59384
mobilenetv4_hybrid_medium.e200_r256_in12k_ft_in1k82.9917.0196.673.3311.07320
mobilenetv4_hybrid_medium.e200_r256_in12k_ft_in1k82.36417.63696.2563.74411.07256
modeltop1top1_errtop5top5_errparam_countimg_size
efficientnet_b0.ra4_e3600_r224_in1k79.36420.63694.7545.2465.29256
efficientnet_b0.ra4_e3600_r224_in1k78.58421.41694.3385.6625.29224
mobilenetv1_100h.ra4_e3600_r224_in1k76.59623.40493.2726.7285.28256
mobilenetv1_100.ra4_e3600_r224_in1k76.09423.90693.0046.9964.23256
mobilenetv1_100h.ra4_e3600_r224_in1k75.66224.33892.5047.4965.28224
mobilenetv1_100.ra4_e3600_r224_in1k75.38224.61892.3127.6884.23224
  • 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_partition e strict_img_size foram 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
modeltop1top1_errtop5top5_errparam_countimg_sizecrop_pct
test_efficientnet.r160_in1k47.15652.84471.72628.2740.361921.0
test_byobnet.r160_in1k46.69853.30271.67428.3260.461921.0
test_efficientnet.r160_in1k46.42653.57470.92829.0720.361600.875
test_byobnet.r160_in1k45.37854.62270.57229.4280.461600.875
test_vit.r160_in1k42.058.068.66431.3360.371921.0
test_vit.r160_in1k40.82259.17867.21232.7880.371600.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
modeltop1top1_errtop5top5_errparam_countimg_size
mobilenetv4_hybrid_large.ix_e600_r384_in1k84.35615.64496.8923.10837.76448
mobilenetv4_hybrid_large.ix_e600_r384_in1k83.99016.01096.7023.29837.76384
mobilenetv4_hybrid_medium.ix_e550_r384_in1k83.39416.60696.7603.24011.07448
mobilenetv4_hybrid_medium.ix_e550_r384_in1k82.96817.03296.4743.52611.07384
mobilenetv4_hybrid_medium.ix_e550_r256_in1k82.49217.50896.2783.72211.07320
mobilenetv4_hybrid_medium.ix_e550_r256_in1k81.44618.55495.7044.29611.07256
  • carregamento de pesos do florence2 no modelo DaViT

12 de junho de 2024

  • Modelos MobileNetV4 e conjunto inicial de pesos treinados com timm adicionados:
modeltop1top1_errtop5top5_errparam_countimg_size
mobilenetv4_hybrid_large.e600_r384_in1k84.26615.73496.9363.06437.76448
mobilenetv4_hybrid_large.e600_r384_in1k83.80016.20096.7703.23037.76384
mobilenetv4_conv_large.e600_r384_in1k83.39216.60896.6223.37832.59448
mobilenetv4_conv_large.e600_r384_in1k82.95217.04896.2663.73432.59384
mobilenetv4_conv_large.e500_r256_in1k82.67417.32696.313.6932.59320
mobilenetv4_conv_large.e500_r256_in1k81.86218.13895.694.3132.59256
mobilenetv4_hybrid_medium.e500_r224_in1k81.27618.72495.7424.25811.07256
mobilenetv4_conv_medium.e500_r256_in1k80.85819.14295.7684.2329.72320
mobilenetv4_hybrid_medium.e500_r224_in1k80.44219.55895.384.6211.07224
mobilenetv4_conv_blur_medium.e500_r224_in1k80.14219.85895.2984.7029.72256
mobilenetv4_conv_medium.e500_r256_in1k79.92820.07295.1844.8169.72256
mobilenetv4_conv_medium.e500_r224_in1k79.80820.19295.1864.8149.72256
mobilenetv4_conv_blur_medium.e500_r224_in1k79.43820.56294.9325.0689.72224
mobilenetv4_conv_medium.e500_r224_in1k79.09420.90694.775.239.72224
mobilenetv4_conv_small.e2400_r224_in1k74.61625.38492.0727.9283.77256
mobilenetv4_conv_small.e1200_r224_in1k74.29225.70892.1167.8843.77256
mobilenetv4_conv_small.e2400_r224_in1k73.75626.24491.4228.5783.77224
mobilenetv4_conv_small.e1200_r224_in1k73.45426.54691.348.663.77224
  • 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 (para chug)
  • 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.
modeltop1top5param_countimg_size
vit_mediumd_patch16_reg4_gap_256.sbb_in12k_ft_in1k86.20297.87464.11256
vit_betwixt_patch16_reg4_gap_256.sbb_in12k_ft_in1k85.41897.4860.4256
vit_mediumd_patch16_rope_reg1_gap_256.sbb_in1k84.32296.81263.95256
vit_betwixt_patch16_rope_reg4_gap_256.sbb_in1k83.90696.68460.23256
vit_base_patch16_rope_reg1_gap_256.sbb_in1k83.86696.6786.43256
vit_medium_patch16_rope_reg1_gap_256.sbb_in1k83.8196.82438.74256
vit_betwixt_patch16_reg4_gap_256.sbb_in1k83.70696.61660.4256
vit_betwixt_patch16_reg1_gap_256.sbb_in1k83.62896.54460.4256
vit_medium_patch16_reg4_gap_256.sbb_in1k83.4796.62238.88256
vit_medium_patch16_reg1_gap_256.sbb_in1k83.46296.54838.88256
vit_little_patch16_reg4_gap_256.sbb_in1k82.51496.26222.52256
vit_wee_patch16_reg1_gap_256.sbb_in1k80.25695.36013.42256
vit_pwee_patch16_reg1_gap_256.sbb_in1k80.07295.13615.25256
vit_mediumd_patch16_reg4_gap_256.sbb_in12kN/AN/A64.11256
vit_betwixt_patch16_reg4_gap_256.sbb_in12kN/AN/A60.4256
  • 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=True para 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 datasets do HF e do wrapper webdataset a partir do hub do HF com os uploads recentes de ImageNet do timm para 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 224 ou --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

3 de novembro de 2023

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, e eva.py sem 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=True aos 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=True para 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_size diferente (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

25 de agosto de 2023

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_384 treinados 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

  • timm 0.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_layers em 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=True e 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 exemplo bnbadam8bit
  • Limpeza e correções diversas
  • Testes finais antes de mudar para a versão 0.9 e tirar o timm do estado de pré-lançamento

27 de abril de 2023

  • 97% dos modelos timm enviados 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-scale e --head-init-bias ao 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
  • 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 @ 288
    • resnetaa101d.sw_in12k_ft_in1k - 83.5 @ 224, 84.1 @ 288
    • seresnextaa101d_32x8d.sw_in12k_ft_in1k - 86.0 @ 224, 86.5 @ 288
    • seresnextaa101d_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.
modeltop1top5img_sizeparam_countgmacsmacts
convnext_xxlarge.clip_laion2b_soup_ft_in1k88.61298.704256846.47198.09124.45
convnext_large_mlp.clip_laion2b_soup_ft_in12k_in1k_38488.31298.578384200.13101.11126.74
convnext_large_mlp.clip_laion2b_soup_ft_in12k_in1k_32087.96898.47320200.1370.2188.02
convnext_base.clip_laion2b_augreg_ft_in12k_in1k_38487.13898.21238488.5945.2184.49
convnext_base.clip_laion2b_augreg_ft_in12k_in1k86.34497.9725688.5920.0937.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.
modeltop1top5param_countimg_size
eva02_large_patch14_448.mim_m38m_ft_in22k_in1k90.05499.042305.08448
eva02_large_patch14_448.mim_in22k_ft_in22k_in1k89.94699.01305.08448
eva_giant_patch14_560.m30m_ft_in22k_in1k89.79298.9921014.45560
eva02_large_patch14_448.mim_in22k_ft_in1k89.62698.954305.08448
eva02_large_patch14_448.mim_m38m_ft_in1k89.5798.918305.08448
eva_giant_patch14_336.m30m_ft_in22k_in1k89.5698.9561013.01336
eva_giant_patch14_336.clip_ft_in1k89.46698.821013.01336
eva_large_patch14_336.in22k_ft_in22k_in1k89.21498.854304.53336
eva_giant_patch14_224.clip_ft_in1k88.88298.6781012.56224
eva02_base_patch14_448.mim_in22k_ft_in22k_in1k88.69298.72287.12448
eva_large_patch14_336.in22k_ft_in1k88.65298.722304.53336
eva_large_patch14_196.in22k_ft_in22k_in1k88.59298.656304.14196
eva02_base_patch14_448.mim_in22k_ft_in1k88.2398.56487.12448
eva_large_patch14_196.in22k_ft_in1k87.93498.504304.14196
eva02_small_patch14_336.mim_in22k_ft_in1k85.7497.61422.13336
eva02_tiny_patch14_336.mim_in22k_ft_in1k80.65895.5245.76336
  • 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 timm do
    • rexnetr_200.sw_in12k_ft_in1k - 82.6 @ 224, 83.2 @ 288
    • rexnetr_300.sw_in12k_ft_in1k - 84.0 @ 224, 84.5 @ 288
    • regnety_120.sw_in12k_ft_in1k - 85.0 @ 224, 85.4 @ 288
    • regnety_160.lion_in12k_ft_in1k - 85.6 @ 224, 86.0 @ 288
    • regnety_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_xxlarge para 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_320 e convnext_large_mlp.clip_laion2b_ft_soup_320 de 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 safetensor adicionado
  • 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% @ 256x256
    • convnext_base.clip_laiona_augreg_ft_in1k_384 - 86.5% @ 384x384
    • convnext_large_mlp.clip_laion2b_augreg_ft_in1k - 87.3% @ 256x256
    • convnext_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 de conv, remapeamento de pesos necessário.
  • Move os metadados do ImageNet (synsets, índices) de /results para timm/data/_info.
  • Adicione as classes ImageNetInfo / DatasetInfo para fornecer rótulos para vários layouts de classificadores do ImageNet em timm
    • Atualize inference.py para usar, tente: python inference.py --data-dir /folder/to/images --model convnext_small.in12k --label-type detail --topk 5
  • 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 @ 384
    • convnext_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 rw MaxViT e CoAtNet 1/2

modeltop1top5amostras / segParâmetros (M)GMACAtuar (M)
maxvit_xlarge_tf_512.in21k_ft_in1k88.5398.6421.76475.77534.141413.22
maxvit_xlarge_tf_384.in21k_ft_in1k88.3298.5442.53475.32292.78668.76
maxvit_base_tf_512.in21k_ft_in1k88.2098.5350.87119.88138.02703.99
maxvit_large_tf_512.in21k_ft_in1k88.0498.4036.42212.33244.75942.15
maxvit_large_tf_384.in21k_ft_in1k87.9898.5671.75212.03132.55445.84
maxvit_base_tf_384.in21k_ft_in1k87.9298.54104.71119.6573.80332.90
maxvit_rmlp_base_rw_384.sw_in12k_ft_in1k87.8198.37106.55116.1470.97318.95
maxxvitv2_rmlp_base_rw_384.sw_in12k_ft_in1k87.4798.37149.49116.0972.98213.74
coatnet_rmlp_2_rw_384.sw_in12k_ft_in1k87.3998.31160.8073.8847.69209.43
maxvit_rmlp_base_rw_224.sw_in12k_ft_in1k86.8998.02375.86116.1423.1592.64
maxxvitv2_rmlp_base_rw_224.sw_in12k_ft_in1k86.6498.02501.03116.0924.2062.77
maxvit_base_tf_512.in1k86.6097.9250.75119.88138.02703.99
coatnet_2_rw_224.sw_in12k_ft_in1k86.5797.89631.8873.8715.0949.22
maxvit_large_tf_512.in1k86.5297.8836.04212.33244.75942.15
coatnet_rmlp_2_rw_224.sw_in12k_ft_in1k86.4997.90620.5873.8815.1854.78
maxvit_base_tf_384.in1k86.2997.80101.09119.6573.80332.90
maxvit_large_tf_384.in1k86.2397.6970.56212.03132.55445.84
maxvit_small_tf_512.in1k86.1097.7688.6369.1367.26383.77
maxvit_tiny_tf_512.in1k85.6797.58144.2531.0533.49257.59
maxvit_small_tf_384.in1k85.5497.46188.3569.0235.87183.65
maxvit_tiny_tf_384.in1k85.1197.38293.4630.9817.53123.42
maxvit_large_tf_224.in1k84.9396.97247.71211.7943.68127.35
coatnet_rmlp_1_rw2_224.sw_in12k_ft_in1k84.9096.961025.4541.728.1140.13
maxvit_base_tf_224.in1k84.8596.99358.25119.4724.0495.01
maxxvit_rmlp_small_rw_256.sw_in1k84.6397.06575.5366.0114.6758.38
coatnet_rmlp_2_rw_224.sw_in1k84.6196.74625.8173.8815.1854.78
maxvit_rmlp_small_rw_224.sw_in1k84.4996.76693.8264.9010.7549.30
maxvit_small_tf_224.in1k84.4396.83647.9668.9311.6653.17
maxvit_rmlp_tiny_rw_256.sw_in1k84.2396.78807.2129.156.7746.92
coatnet_1_rw_224.sw_in1k83.6296.38989.5941.728.0434.60
maxvit_tiny_rw_224.sw_in1k83.5096.501100.5329.065.1133.11
maxvit_tiny_tf_224.in1k83.4196.591004.9430.925.6035.78
coatnet_rmlp_1_rw_224.sw_in1k83.3696.451093.0341.697.8535.47
maxxvitv2_nano_rw_256.sw_in1k83.1196.331276.8823.706.2623.05
maxxvit_rmlp_nano_rw_256.sw_in1k83.0396.341341.2416.784.3726.05
maxvit_rmlp_nano_rw_256.sw_in1k82.9696.261283.2415.504.4731.92
maxvit_nano_rw_256.sw_in1k82.9396.231218.1715.454.4630.28
coatnet_bn_0_rw_224.sw_in1k82.3996.191600.1427.444.6722.04
coatnet_0_rw_224.sw_in1k82.3995.841831.2127.444.4318.73
coatnet_rmlp_nano_rw_224.sw_in1k82.0595.872109.0915.152.6220.34
coatnext_nano_rw_224.sw_in1k81.9595.922525.5214.702.4712.80
coatnet_nano_rw_224.sw_in1k81.7095.642344.5215.142.4115.41
maxvit_rmlp_pico_rw_256.sw_in1k80.5395.211594.717.521.8524.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 .in12k tags)
    • convnext_nano.in12k_ft_in1k - 82.3 @ 224, 82.9 @ 288 (lançado anteriormente)
    • convnext_tiny.in12k_ft_in1k - 84.2 @ 224, 84.5 @ 288
    • convnext_small.in12k_ft_in1k - 85.2 @ 224, 85.3 @ 288

6 de janeiro de 2023

  • Finalmente consegui adicionar --model-kwargs e --opt-kwargs aos scripts para passar argumentos raros diretamente para as classes de modelo a partir da linha de comando
    • train.py --data-dir /imagenet --model resnet50 --amp --model-kwargs output_stride=16 act_layer=silu
    • train.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

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 @ 448x448
    • vit_medium_patch16_gap_384.in12k_ft_in1k - 85.5 @ 384x384
    • vit_medium_patch16_gap_256.in12k_ft_in1k - 84.5 @ 256x256
    • convnext_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)
modeltop1param_countgmacmactshub
eva_large_patch14_336.in22k_ft_in22k_in1k89.2304.5191.1270.2link
eva_large_patch14_336.in22k_ft_in1k88.7304.5191.1270.2link
eva_large_patch14_196.in22k_ft_in22k_in1k88.6304.161.663.5link
eva_large_patch14_196.in22k_ft_in1k87.9304.161.663.5link

6 de dezembro de 2022

modeltop1param_countgmacmactshub
eva_giant_patch14_560.m30m_ft_in22k_in1k89.81014.41906.82577.2link
eva_giant_patch14_336.m30m_ft_in22k_in1k89.61013620.6550.7link
eva_giant_patch14_336.clip_ft_in1k89.41013620.6550.7link
eva_giant_patch14_224.clip_ft_in1k89.11012.6267.2192.6link

5 de dezembro de 2022

  • Versão pré-lançamento (0.8.0dev0) do suporte a múltiplos pesos (model_arch.pretrained_tag). Instale com pip 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
modeltop1param_countgmacmactshub
vit_huge_patch14_clip_336.laion2b_ft_in12k_in1k88.6632.5391407.5link
vit_large_patch14_clip_336.openai_ft_in12k_in1k88.3304.5191.1270.2link
vit_huge_patch14_clip_224.laion2b_ft_in12k_in1k88.2632167.4139.4link
vit_large_patch14_clip_336.laion2b_ft_in12k_in1k88.2304.5191.1270.2link
vit_large_patch14_clip_224.openai_ft_in12k_in1k88.2304.281.188.8link
vit_large_patch14_clip_224.laion2b_ft_in12k_in1k87.9304.281.188.8link
vit_large_patch14_clip_224.openai_ft_in1k87.9304.281.188.8link
vit_large_patch14_clip_336.laion2b_ft_in1k87.9304.5191.1270.2link
vit_huge_patch14_clip_224.laion2b_ft_in1k87.6632167.4139.4link
vit_large_patch14_clip_224.laion2b_ft_in1k87.3304.281.188.8link
vit_base_patch16_clip_384.laion2b_ft_in12k_in1k87.286.955.5101.6link
vit_base_patch16_clip_384.openai_ft_in12k_in1k8786.955.5101.6link
vit_base_patch16_clip_384.laion2b_ft_in1k86.686.955.5101.6link
vit_base_patch16_clip_384.openai_ft_in1k86.286.955.5101.6link
vit_base_patch16_clip_224.laion2b_ft_in12k_in1k86.286.617.623.9link
vit_base_patch16_clip_224.openai_ft_in12k_in1k85.986.617.623.9link
vit_base_patch32_clip_448.laion2b_ft_in12k_in1k85.888.317.923.9link
vit_base_patch16_clip_224.laion2b_ft_in1k85.586.617.623.9link
vit_base_patch32_clip_384.laion2b_ft_in12k_in1k85.488.313.116.5link
vit_base_patch16_clip_224.openai_ft_in1k85.386.617.623.9link
vit_base_patch32_clip_384.openai_ft_in12k_in1k85.288.313.116.5link
vit_base_patch32_clip_224.laion2b_ft_in12k_in1k83.388.24.45link
vit_base_patch32_clip_224.laion2b_ft_in1k82.688.24.45link
vit_base_patch32_clip_224.openai_ft_in1k81.988.24.45link
  • 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
modeltop1param_countgmacmactshub
maxvit_xlarge_tf_512.in21k_ft_in1k88.5475.8534.11413.2link
maxvit_xlarge_tf_384.in21k_ft_in1k88.3475.3292.8668.8link
maxvit_base_tf_512.in21k_ft_in1k88.2119.9138704link
maxvit_large_tf_512.in21k_ft_in1k88212.3244.8942.2link
maxvit_large_tf_384.in21k_ft_in1k88212132.6445.8link
maxvit_base_tf_384.in21k_ft_in1k87.9119.673.8332.9link
maxvit_base_tf_512.in1k86.6119.9138704link
maxvit_large_tf_512.in1k86.5212.3244.8942.2link
maxvit_base_tf_384.in1k86.3119.673.8332.9link
maxvit_large_tf_384.in1k86.2212132.6445.8link
maxvit_small_tf_512.in1k86.169.167.3383.8link
maxvit_tiny_tf_512.in1k85.73133.5257.6link
maxvit_small_tf_384.in1k85.56935.9183.6link
maxvit_tiny_tf_384.in1k85.13117.5123.4link
maxvit_large_tf_224.in1k84.9211.843.7127.4link
maxvit_base_tf_224.in1k84.9119.52495link
maxvit_small_tf_224.in1k84.468.911.753.2link
maxvit_tiny_tf_224.in1k83.430.95.635.8link

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 maxxvit série, incluindo o primeiro bloco baseado em ConvNeXt coatnext e maxxvit experimentos:
    • 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 timm do 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 maxxvit a série, incluindo um pico (7.5M de parâmetros, 1,9 GMACs), duas tiny variantes:
    • 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) timm modelos originais do timm
  • 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ª etapa
    • coatnet_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 timm por 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 @ 288
    • convnext_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 @ 288
    • convnext_femto_ols - 77.9 @ 224, 78.9 @ 288
    • convnext_pico - 79.5 @ 224, 80.4 @ 288
    • convnext_pico_ols - 79.5 @ 224, 80.5 @ 288
    • convnext_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 @ 288
    • convnext_nano - 80.8 @ 224, 81.5 @ 288
    • cs3sedarknet_l - 81.2 @ 256, 81.8 @ 288
    • cs3darknet_x - 81.8 @ 256, 82.2 @ 288
    • cs3sedarknet_x - 82.2 @ 256, 82.7 @ 288
    • cs3edgenet_x - 82.2 @ 256, 82.7 @ 288
    • cs3se_edgenet_x - 82.8 @ 256, 83.5 @ 320
  • cs3* pesos acima de todos treinados em TPU com a branch bits_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:
  • Meus próprios modelos:
    • Definições de ResNet pequenas adicionadas a pedido, com 1 repetição de bloco para basic e bottleneck (resnet10 e resnet14)
    • CspNet refatorado 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.
  • Resultados dos pesos do meu próprio modelo (todos com treinamento no ImageNet-1k)
    • resnet10t - 66.5 @ 176, 68.3 @ 224
    • resnet14t - 71.3 @ 176, 72.3 @ 224
    • resnetaa50 - 80.6 @ 224 , 81.6 @ 288
    • darknet53 - 80.0 @ 256, 80.5 @ 288
    • cs3darknet_m - 77.0 @ 256, 77.6 @ 288
    • cs3darknet_focus_m - 76.7 @ 256, 77.3 @ 288
    • cs3darknet_l - 80.4 @ 256, 80.9 @ 288
    • cs3darknet_focus_l - 80.3 @ 256, 80.9 @ 288
    • vit_srelpos_small_patch16_224 - 81.1 @ 224, 82.1 @ 320
    • vit_srelpos_medium_patch16_224 - 82.3 @ 224, 83.1 @ 320
    • vit_relpos_small_patch16_cls_224 - 82.6 @ 224, 83.6 @ 320
    • edgnext_small_rw - 79.6 @ 224, 80.4 @ 320
  • cs3, darknet e vit_*relpos pesos 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) via LayerNorm2d em 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 LayerNormExp2d em models/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 pool
    • vit_relpos_medium_patch16_rpn_224 - 82.3 @ 224, 83.1 @ 320 — rel pos + res-post-norm, sem class token, avg pool
    • vit_relpos_medium_patch16_224 - 82,5 @ 224, 83,3 @ 320 — pos rel, escala de camada, sem token de classe, pooling médio
    • vit_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édia
    • vit_relpos_base_patch16_224 - 82,5 @ 224, 83,6 @ 320 — pos rel, escala de camada, sem token de classe, pooling médio
    • vit_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 timm agora são oficialmente suportados no fast.ai! Justo a tempo para o novo curso Practical Deep Learning. O link da documentação timmdocs foi 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 @ 288
    • seresnextaa101d_32x8d (anti-aliased w/ AvgPool2d) - 83.85 @ 224, 84.57 @ 288

23 de março de 2022

  • Adicione a opção ParallelBlock e LayerScale aos 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 branch 0.5.x ou 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 @ 288
    • regnety_064 - 83.0 @ 224, 83.65 @ 288
    • regnety_080 - 83.17 @ 224, 83.86 @ 288
    • regnetv_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 @ 320
    • regnetz_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_evos 80.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 @ 299
    • xception65p - 83.14 @ 299 (timm pre-act)
    • resnext101_64x4d - 82.46 @ 224, 83.16 @ 288
    • seresnext101_32x8d - 83.57 @ 224, 84.270 @ 288
    • resnetrs200 - 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 de forward_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 em forward_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_norm de 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.x e o branch 0.5.x permanecerã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.

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-1
    • mobilenetv2_050 - 65.9
    • lcnet_100/075/050 - 72.1 / 68.8 / 63.1
    • semnasnet_075 - 73
    • fbnetv3_b/d/g - 79.1 / 79.7 / 82.0
  • Modelos TinyNet adicionados por rsomani95
  • LCNet adicionado via arquitetura MobileNetV3

5 de janeiro de 2023

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 @ 448x448
    • vit_medium_patch16_gap_384.in12k_ft_in1k - 85.5 @ 384x384
    • vit_medium_patch16_gap_256.in12k_ft_in1k - 84.5 @ 256x256
    • convnext_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)
modeltop1param_countgmacmactshub
eva_large_patch14_336.in22k_ft_in22k_in1k89.2304.5191.1270.2link
eva_large_patch14_336.in22k_ft_in1k88.7304.5191.1270.2link
eva_large_patch14_196.in22k_ft_in22k_in1k88.6304.161.663.5link
eva_large_patch14_196.in22k_ft_in1k87.9304.161.663.5link

6 de dezembro de 2022

modeltop1param_countgmacmactshub
eva_giant_patch14_560.m30m_ft_in22k_in1k89.81014.41906.82577.2link
eva_giant_patch14_336.m30m_ft_in22k_in1k89.61013620.6550.7link
eva_giant_patch14_336.clip_ft_in1k89.41013620.6550.7link
eva_giant_patch14_224.clip_ft_in1k89.11012.6267.2192.6link

5 de dezembro de 2022

  • Versão pré-lançamento (0.8.0dev0) do suporte a múltiplos pesos (model_arch.pretrained_tag). Instale com pip 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
modeltop1param_countgmacmactshub
vit_huge_patch14_clip_336.laion2b_ft_in12k_in1k88.6632.5391407.5link
vit_large_patch14_clip_336.openai_ft_in12k_in1k88.3304.5191.1270.2link
vit_huge_patch14_clip_224.laion2b_ft_in12k_in1k88.2632167.4139.4link
vit_large_patch14_clip_336.laion2b_ft_in12k_in1k88.2304.5191.1270.2link
vit_large_patch14_clip_224.openai_ft_in12k_in1k88.2304.281.188.8link
vit_large_patch14_clip_224.laion2b_ft_in12k_in1k87.9304.281.188.8link
vit_large_patch14_clip_224.openai_ft_in1k87.9304.281.188.8link
vit_large_patch14_clip_336.laion2b_ft_in1k87.9304.5191.1270.2link
vit_huge_patch14_clip_224.laion2b_ft_in1k87.6632167.4139.4link
vit_large_patch14_clip_224.laion2b_ft_in1k87.3304.281.188.8link
vit_base_patch16_clip_384.laion2b_ft_in12k_in1k87.286.955.5101.6link
vit_base_patch16_clip_384.openai_ft_in12k_in1k8786.955.5101.6link
vit_base_patch16_clip_384.laion2b_ft_in1k86.686.955.5101.6link
vit_base_patch16_clip_384.openai_ft_in1k86.286.955.5101.6link
vit_base_patch16_clip_224.laion2b_ft_in12k_in1k86.286.617.623.9link
vit_base_patch16_clip_224.openai_ft_in12k_in1k85.986.617.623.9link
vit_base_patch32_clip_448.laion2b_ft_in12k_in1k85.888.317.923.9link
vit_base_patch16_clip_224.laion2b_ft_in1k85.586.617.623.9link
vit_base_patch32_clip_384.laion2b_ft_in12k_in1k85.488.313.116.5link
vit_base_patch16_clip_224.openai_ft_in1k85.386.617.623.9link
vit_base_patch32_clip_384.openai_ft_in12k_in1k85.288.313.116.5link
vit_base_patch32_clip_224.laion2b_ft_in12k_in1k83.388.24.45link
vit_base_patch32_clip_224.laion2b_ft_in1k82.688.24.45link
vit_base_patch32_clip_224.openai_ft_in1k81.988.24.45link
  • 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
modeltop1param_countgmacmactshub
maxvit_xlarge_tf_512.in21k_ft_in1k88.5475.8534.11413.2link
maxvit_xlarge_tf_384.in21k_ft_in1k88.3475.3292.8668.8link
maxvit_base_tf_512.in21k_ft_in1k88.2119.9138704link
maxvit_large_tf_512.in21k_ft_in1k88212.3244.8942.2link
maxvit_large_tf_384.in21k_ft_in1k88212132.6445.8link
maxvit_base_tf_384.in21k_ft_in1k87.9119.673.8332.9link
maxvit_base_tf_512.in1k86.6119.9138704link
maxvit_large_tf_512.in1k86.5212.3244.8942.2link
maxvit_base_tf_384.in1k86.3119.673.8332.9link
maxvit_large_tf_384.in1k86.2212132.6445.8link
maxvit_small_tf_512.in1k86.169.167.3383.8link
maxvit_tiny_tf_512.in1k85.73133.5257.6link
maxvit_small_tf_384.in1k85.56935.9183.6link
maxvit_tiny_tf_384.in1k85.13117.5123.4link
maxvit_large_tf_224.in1k84.9211.843.7127.4link
maxvit_base_tf_224.in1k84.9119.52495link
maxvit_small_tf_224.in1k84.468.911.753.2link
maxvit_tiny_tf_224.in1k83.430.95.635.8link

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 maxxvit série, incluindo o primeiro bloco baseado em ConvNeXt coatnext e maxxvit experimentos:
    • 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 timm do 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 maxxvit a série, incluindo um pico (7.5M de parâmetros, 1,9 GMACs), duas tiny variantes:
    • 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) timm modelos originais do timm
  • 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ª etapa
    • coatnet_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 timm por 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 @ 288
    • convnext_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 @ 288
    • convnext_femto_ols - 77.9 @ 224, 78.9 @ 288
    • convnext_pico - 79.5 @ 224, 80.4 @ 288
    • convnext_pico_ols - 79.5 @ 224, 80.5 @ 288
    • convnext_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 @ 288
    • convnext_nano - 80.8 @ 224, 81.5 @ 288
    • cs3sedarknet_l - 81.2 @ 256, 81.8 @ 288
    • cs3darknet_x - 81.8 @ 256, 82.2 @ 288
    • cs3sedarknet_x - 82.2 @ 256, 82.7 @ 288
    • cs3edgenet_x - 82.2 @ 256, 82.7 @ 288
    • cs3se_edgenet_x - 82.8 @ 256, 83.5 @ 320
  • cs3* pesos acima de todos treinados em TPU com a branch bits_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:
  • Meus próprios modelos:
    • Definições de ResNet pequenas adicionadas a pedido, com 1 repetição de bloco para basic e bottleneck (resnet10 e resnet14)
    • CspNet refatorado 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.
  • Resultados dos pesos do meu próprio modelo (todos com treinamento no ImageNet-1k)
    • resnet10t - 66.5 @ 176, 68.3 @ 224
    • resnet14t - 71.3 @ 176, 72.3 @ 224
    • resnetaa50 - 80.6 @ 224 , 81.6 @ 288
    • darknet53 - 80.0 @ 256, 80.5 @ 288
    • cs3darknet_m - 77.0 @ 256, 77.6 @ 288
    • cs3darknet_focus_m - 76.7 @ 256, 77.3 @ 288
    • cs3darknet_l - 80.4 @ 256, 80.9 @ 288
    • cs3darknet_focus_l - 80.3 @ 256, 80.9 @ 288
    • vit_srelpos_small_patch16_224 - 81.1 @ 224, 82.1 @ 320
    • vit_srelpos_medium_patch16_224 - 82.3 @ 224, 83.1 @ 320
    • vit_relpos_small_patch16_cls_224 - 82.6 @ 224, 83.6 @ 320
    • edgnext_small_rw - 79.6 @ 224, 80.4 @ 320
  • cs3, darknet e vit_*relpos pesos 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) via LayerNorm2d em 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 LayerNormExp2d em models/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 pool
    • vit_relpos_medium_patch16_rpn_224 - 82.3 @ 224, 83.1 @ 320 — rel pos + res-post-norm, sem class token, avg pool
    • vit_relpos_medium_patch16_224 - 82,5 @ 224, 83,3 @ 320 — pos rel, escala de camada, sem token de classe, pooling médio
    • vit_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édia
    • vit_relpos_base_patch16_224 - 82,5 @ 224, 83,6 @ 320 — pos rel, escala de camada, sem token de classe, pooling médio
    • vit_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 timm agora são oficialmente suportados no fast.ai! Justo a tempo para o novo curso Practical Deep Learning. O link da documentação timmdocs foi 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 @ 288
    • seresnextaa101d_32x8d (anti-aliased w/ AvgPool2d) - 83.85 @ 224, 84.57 @ 288

23 de março de 2022

  • Adicione a opção ParallelBlock e LayerScale aos 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 branch 0.5.x ou 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 @ 288
    • regnety_064 - 83.0 @ 224, 83.65 @ 288
    • regnety_080 - 83.17 @ 224, 83.86 @ 288
    • regnetv_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 @ 320
    • regnetz_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_evos 80.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 @ 299
    • xception65p - 83.14 @ 299 (timm pre-act)
    • resnext101_64x4d - 82.46 @ 224, 83.16 @ 288
    • seresnext101_32x8d - 83.57 @ 224, 84.270 @ 288
    • resnetrs200 - 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 de forward_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 em forward_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_norm de 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.x e o branch 0.5.x permanecerã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.

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-1
    • mobilenetv2_050 - 65.9
    • lcnet_100/075/050 - 72.1 / 68.8 / 63.1
    • semnasnet_075 - 73
    • fbnetv3_b/d/g - 79.1 / 79.7 / 82.0
  • Modelos TinyNet adicionados por rsomani95
  • LCNet adicionado via arquitetura MobileNetV3
Update on GitHub