# Журнал изменений

## 3 ноября 2026

* `reset_classifier()` и восстановление контрольных точек: исправления в ViT, EVA, BEiT, NaFlexViT, RepViT и iFormer сохраняют расположение нормализации и настройки дистилляции при экспорте / перезагрузке моделей после изменения классификатора или пулинга. Также исправлен экспорт PiT без пулинга и EfficientFormerV2 с отключенной дистилляцией.
* NaFlex: исправление размещения нормализации ViT / EVA при конвертации, поддержка выравнивания SwiGLU для чекпоинтов DINOv3 / Lingbot и сохранение каналов входных данных в оттенках серого / не-RGB в загрузчиках данных.
* Исправление группировки для послойного затухания LR в RepViT, HGNet, MViTv2 и pre-norm ViTs, а также размеров признаков InceptionNeXt при `output_stride=8/16`.
* Релиз 1.0.31.

## 24 октября 2026

* `forward_intermediates()` и `prune_intermediate_layers()` теперь поддерживаются всеми моделями. Добавлены для CSPNet, NFNet, DLA, DenseNet (#2870, спасибо [ghaith-mq](https://github.com/ghaith-mq)), CoaT, ConViT, ConvMixer, CrossViT, HRNet, Inception-v3, Inception-ResNet-v2, NASNet, PNASNet, SelecSLS, SENet, Sequencer2d, VGG, Visformer, Xception и Aligned Xception, а также `prune_intermediate_layers()` для энкодеров NaFlexViT и MobileNetV5. Модели CoaT, ConViT, ConvMixer, CrossViT и Visformer получили поддержку `features_only`.
* исправляет `prune_intermediate_layers()`
  * `prune_head=True` удаляет всю головную часть (head norm, слои до logits, attention pooling), чтобы в обрезанной модели не оставалось неиспользуемых параметров (DDP без `find_unused_parameters`), за исключением CoaT, CrossViT и HRNet, если используются только некоторые из их параллельных масштабов / ветвей. Передайте `prune_head=False`, чтобы сохранить её.
  * Обрезка иерархической модели до более раннего этапа удаляет финальную нормализацию и head, настроенные под последний этап, `forward_features()` завершается на последнем сохранённом feature, а `num_features` / `head_hidden_size` соответствуют ему. Обрезка до stem feature удаляет stem pooling после него.
  * Исправления для grad checkpointing, `stop_early`, удаления class token / post network, а также TorchScript для обрезанных / `feature_cls='getter'` моделей во многих семействах.
* `head_hidden_size` — это фактическая ширина до logits (после пулинга) во всех моделях, включая concat-пулинг (`catavgmax`) и после вызова `reset_classifier()`. Типы пулинга, которые модель не может применить, теперь вызывают ошибку при создании или сбросе, а не игнорируются молча или приводят к сбою в forward.
* Другие исправления: вывод VOLO при `num_classes=0` — это эмбеддинг class token (совпадает с `forward_head(pre_logits=True)`), `reset_classifier()` в `vit_pe_core` с пулингом, отличным от `map`, удаляет attention pool, экспорт типа пулинга через `save_for_hf` читает текущий пулинг из head, а чекпоинты Swin, SwinV2, DaViT и NextViT без head (`num_classes=0`) корректно перезагружаются.

## 13 октября 2026

* Сканирование гиперпараметров с помощью нового `sweep.py`: сетевой / случайный поиск по любому аргументу `train.py`, один эффективный `--config` на задание, запуск на пуле локальных GPU с возможностью возобновления. Сканирование WSD обучает один стабильный ствол для каждой комбинации гиперпараметров и ветвит независимые cooldowns от его контрольных точек вех, сравнивая отжиг при нескольких бюджетах за малую долю стоимости полных прогонов. См. [документацию по обучению](https://huggingface.co/docs/timm/training_script#hyperparameter-sweeps).
* `train.py`: `--resume auto` возобновляет обучение на месте из собственного `last.pth.tar` эксперимента (история контрольных точек, `model_best` и `summary.csv` остаются согласованными), `--stop-epoch N` останавливает процесс без изменения расписания, `--save-epochs N [N ...]` сохраняет снимки `milestone-N.pth.tar`, а значения YAML в `--config` проверяются на соответствие аргументам скрипта.
* Устаревание `PlateauLRScheduler` (`--sched plateau`). Планировщики `timm` — это функции без состояния, зависящие от номера эпохи или количества обновлений; план plateau, управляемый метрикой, никогда не вписывался в эту модель, а его состояние не сохранялось в контрольных точках, поэтому возобновление обучения никогда не было точным. Используйте `cosine` или `wsd`.
* Документация: новая страница [Model API](https://huggingface.co/docs/timm/model_api), автоматически сгенерированные страницы семейств моделей для каждого модуля моделей, заменяющие старые страницы по отдельным моделям, а также расширенные страницы справочника по данным / функциям потерь / моделям.
* Исправления согласованности API моделей: `reset_classifier()` сохраняет текущий пулинг во всех моделях, неизвестные аргументы конструктора везде вызывают `TypeError`, `dynamic_img_size` для семейства Swin, послойное затухание lr для LeViT, имена `no_weight_decay`, не соответствующие ни одному параметру (NesT, SwinV2, XCiT, FocalNet), состояние resize записывается для всех семейств `set_input_size`.
* Исправления: GCViT смешивал изображения в рамках батча при глобальном запросе, градиентный чекпоинтинг для RDNet и MobileNetV5, устаревший размер входных данных в тесте `save_for_hf`, прямоугольный ресайз в EfficientViT (MSRA), ошибки преобразования изображений в ImageDataset (#2846). `reparameterize_model` перемещён в `timm.models`.

## 9 октября 2026

* Добавлены веса `cspnext_{tiny,s,m,l,x}` для [CSPNeXt](https://arxiv.org/abs/2212.07784) (бэкбон RTMDet), преобразованные из OpenMMLab для классификации ImageNet-1k. Спасибо [Munehiro Kobayashi](https://github.com/munehiro-k).
* Улучшения оптимизатора
  * Foreach (multi-tensor) impls для RMSpropTF, LaProp, LAMB, LARS, AdaBelief. Шаги Foreach разбиваются на блоки по размеру L2-кэша устройства (`TIMM_FOREACH_CHUNK_SIZE` для переопределения).
  * Обрезка обновлений RMS (`clipping_threshold`) для AdamWLegacy / NAdamW, новые варианты NovoGrad с отделённым / скорректированным затуханием веса (`novogradw`, `novogradc`).
  * Исправления корректности во многих оптимизаторах, включая исправленный весовой распад с обновлением тензора lr на месте, зависание обновлений FP16 при малых lr, обработка состояния с низкой точностью (Kron, AdaBelief, NovoGrad) и отказ от обновления `p.grad` на месте
изменение.
  * `torch.compile` / исправления для CUDA graph в Adopt, SGDW, AdafactorBV.
  * Новые документы по оптимизаторам, охватывающие использование, соглашения об именовании и семейства.
* Добавлен планировщик LR WSD (warmup-stable-decay) (`--sched wsd`, `--lr-decay-fn`, `--lr-stable-timescale`).
* Исправления для Model EMA в моделях bfloat16 / float16. ModelEmaV3 bfloat16 EMAs по умолчанию используют стохастическое округление, а модели float16 сохраняют EMA в float32.
* Изменение размера модели с помощью `set_input_size()`
  * Расширенная поддержка моделей с оконным механизмом (MaxViT, CoAtNet, BEiT, EfficientViT-MSRA, relpos ViT, семейство Swin).
  * Swin / SwinV2 / SwinV2-CR сохраняют соотношение окна к сетке для каждого этапа при изменении размера; вызов на текущем размере теперь не выполняет никаких действий. Поддерживаются `window_size` / `window_ratio` для каждого этапа. Исправлены модели Swin S3 и SwinV2 `window16` / `window12`
изменение выходов при вызове с тем же размером.
  * Исправление NaN в SwinV2 при размере окна 1, нечётных размерах признаков на этапах и гибридном ViT resize на CUDA / с низкой точностью.
* Исправление обработки остатка при накоплении градиентов (#2821), распределённая выборка / повторное увеличение на малых наборах данных, переопределение предобученного источника и настройка учителя для дистилляции, `train.py` с `--sched none`, и центрированный кроп для оценки
интерполяция для неквадратных входных данных.
* Исправления совместимости экспорта в ONNX для различных версий PyTorch, исправления согласованности dropout, а также дополнительные исправления инициализации meta-device.

## 25 сентября 2026

* Поддержка многометочной классификации
  * Добавьте `--task multilabel` в `train.py` / `validate.py`, обученные с BCE (`MultiLabelClassificationTask`). Подробности см. в [документации по обучению](https://huggingface.co/docs/timm/training_script).
  * Targets могут быть списками индексов классов, плотными многозначными векторами (`--target-format multihot`) или одним бинарным полем на каждый класс (`--target-key a,b,c`), с путями `/` в вложенные поля. Поддерживается считывателями `hfds`, `hfids`, `tfds` (ключи с несколькими полями) и `wds`.
  * Загрузчики Mixup / CutMix и NaFlex поддерживают многометочные цели. Сглаживание меток сдвигает каждую цель к 0.5 и по умолчанию равно 0 для многометочных данных.
  * Валидация вычисляет mAP (метрика по умолчанию `--eval-metric`), а также микро-, макро- и sample F1, где порог для F1 задается параметром `--multilabel-threshold`.
  * Новые оценщики на уровне набора данных вычисляют метрики по всему набору для валидации на всех распределённых рангах, исключая заполнение, добавляемое распределённым сэмплером.
  * См. коллекцию [timm multi-label image datasets](https://huggingface.co/collections/timm/timm-multi-label-image-datasets) на Hub в качестве примеров / эталонных наборов данных, которые работают «из коробки».
* Новые варианты функции потерь через `--loss`
  * Потери Poly-1, Two-way, ZLPR и Distribution-Balanced.
  * Взвешивание по частоте классов для BCE / ASL, вычисленное на основе количества меток, собранных в `class_weights.py`.
  * ASL теперь безопасен для fp16 и по умолчанию использует редукцию `batchmean`
* Рефакторинг RoPE
  * Расширить аугментацию координат RoPE, используемую только для обучения (сдвиг, дрожание, масштабирование), на встраивания axial, mixed и MRoPE, используя общие вспомогательные функции с DINOv3 при сохранении существующего поведения аугментации в DINOv3.
  * Добавьте параметры `grid_type` и `normalize_coords` в конструкторы Фурье / ротационных встраиваний (`build_fourier_pos_embed`, `build_rotary_pos_embed`) и модули axial RoPE, а также настраиваемые секции MRoPE в EVA.
  * Поддержка `rotate_half` в варианте `RotaryEmbedding` с выводом кортежа и базовом фабричном варианте `base`.
  * Исправлена передача rotation-layout в EVA, NaFlexViT и MRoPE attention pooling.
  * Держите необучаемые буферы частот и координат RoPE как минимум в float32 в моделях с half/bfloat16 и вычисляйте смешанные фазы RoPE в float32 под autocast. Эти исправления точности могут изменить выходные данные моделей с низкой точностью.
  * Исправлены пакетные встраивания RoPE для пиксельных сеток и масштабирование по опорной форме. В DINOv3 `grid_indexing='xy'` теперь меняет каналы координат местами, как и требовалось; выходные данные для этих ранее неверных конфигураций изменятся.
  * Сделайте так, чтобы `apply_rot_embed`, `apply_rot_embed_cat` и `apply_rot_embed_list` возвращали dtype каждого входного аргумента, выполняя приведение типов после вращения, а не предварительное приведение sin/cos к меньшему типу.
  * Объедините два модуля осевого RoPE за общим приватным базовым классом. Существующие вызовы остаются совместимыми, однако буфер `bands` теперь сохраняется как в кэшированном, так и в динамическом режимах (`rope.bands` больше не является `None` в кэшированном режиме).
* Исправления переключения режимов train/eval и изменения dtype для LeViT и связанных моделей (EfficentFormer*, EfficientViT-MSRA, TinyViT) с кэшированными смещениями внимания.

## 22 сентября 2026

* Добавлены веса визуальной башни для Qwen-Drive-1.0-4B.
* Исправление повторного использования и синхронизации потока предзагрузчика, а также AugMix для неквадратных и однополосных изображений.
* Исправление масштабирования LR для свёрток в AdaMuon, обрезки в AdafactorBigVision, истории градиентов в MARS и загрузки контрольных точек Kron.
* Исправлены устаревшие кэши смещения внимания для оценки, метаданные признаков обрезанной модели, отступы для разряженного max-pool и асимметричный режим градиента функции потерь.
* Релиз 1.0.30

## 10–11 сентября 2026

* Добавлены варианты классификатора и энкодера ViT для Qwen3-VL / Qwen3.5 / Qwen3.8, включая классификаторы с и без встроенного пространственного мержера.
* Добавлены Sapiens2 ViT с поддержкой EVA и NaFlexViT. Оба добавления моделей включают нативные веса timm Hub. Спасибо [Yonghye Kwon](https://github.com/developer0hye).
* Добавлен iFormer с нативными весами timm Hub. Спасибо [Ryan Hou](https://github.com/brianhou0208).
* Добавлен EfficientViM с нативными весами из timm Hub. Спасибо [smellslikeml](https://github.com/smellslikeml).
* Добавлены классификаторы и энкодеры ViT для DeepSeek-V4 / V4.1 с нативными весами из timm Hub. Спасибо [Yonghye Kwon](https://github.com/developer0hye).
* Переключение по умолчанию интерполяции позиций NaFlex SigLIP, выбор размера входных данных в `inference.py` и улучшение разбора `--model-kwargs`.
* Исправление построения на meta-устройстве и поддержки фабрик device/dtype для нескольких моделей; перенос тестов конфигурации на meta для ускорения CI, покрытие meta-контекста.

## 27 августа 2026
* Добавьте модель и веса [LowFormer](https://github.com/altair199797/lowformer)
* Исправить или объединить множество реальных, но мелких или редко встречающихся ошибок, выявленных агентами
* Релиз 1.0.29

## 11 августа 2026
* Добавьте определения моделей и предобученные веса для
  * [CPUBone](https://github.com/altair199797/CPUBone) — эффективный визуальный бэкбон для устройств с низкой степенью параллелизации.
  * [PP-LCNetV2](https://github.com/PaddlePaddle/PaddleClas/blob/release/2.6/docs/en/models/PP-LCNetV2_en.md).
  * [LingBot-Vision](https://arxiv.org/abs/2607.05247).
* Добавлено планирование размера изображения и размера батча для каждого батча при обучении без NaFlex, включая прогрессивные расписания с увеличением разрешения от меньшего к большему.
* Улучшение NaFlexViT с помощью масок внимания только для ключей, совместимого с компиляцией и экономного по памяти выборки позиций, а также кэшированной интерполяции переменных патчей.
* Улучшение пути фабрики моделей и обработки контрольных точек; исправление пересэмплирования позиционного встраивания для одинаковых токенов.

## 10 июля 2026
* Улучшение поддержки оптимизатора `torch.compile` и скорости обучения тензоров.
* Расширение поддержки patch-layout в NaFlexViT (для NaFlex-CLAP) и `forward_intermediates` (вход в формате словаря NaFlex).
* Укрепление загрузки pickle и улучшение инференса с пользовательскими метками.
* Релиз 1.0.28

## 27 мая 2026
* Добавлены определения моделей и предобученные веса для моделей EUPE ViT (в стиле DINOv3) и ConvNeXt. См. [статью Efficient Universal Perception Encoder](https://arxiv.org/abs/2603.22387).
* Добавлены определения моделей и предобученные веса для моделей ViT (в стиле DINOv2) TIPSv2. См. [статью TIPSv2](https://arxiv.org/abs/2604.12012).

## 8 мая 2026
* Релиз 1.0.27

## 23 апреля 2026
* Добавлены ViT-энкодеры Gemma4 с поддержкой конвейера NaFlex (переменный формат/размер для каждого изображения). Спасибо [Yonghye Kwon](https://github.com/developer0hye)
* Поддержка весов DINOv3 в NaFlexVit. Спасибо [Yonghye Kwon](https://github.com/developer0hye)
* Некоторые улучшения поведения lr в режиме отката Muon (AdamW/NadamW)

## 23 марта 2026
* Улучшение безопасности обработки контрольных точек pickle. По умолчанию все операции загрузки выполняются с `weights_only=True`, добавлен safe_global для ArgParse.
* Улучшение обработки attention mask для основных моделей и слоёв ViT/EVA. Разрешение bool-масок, передача `is_causal` для задач SSL.
* Исправление использования токенов класса и регистрации в ViT при отключённом позиционном встраивании.
* Добавлена опция пулинга Patch Representation Refinement (PRR) в ViT. Спасибо Sina (https://github.com/sinahmr).
* Улучшить согласованность размеров проекции вывода / MLP для слоев внимания с пулингом.
* Оптимизация F.SDPA для модели Hiera, позволяющая использовать ядро Flash Attention.
* Добавлено предупреждение к оптимизатору SGDP.
* Релиз 1.0.26. Первый технический релиз после моего ухода из Hugging Face.

## 23 февраля 2026
* Добавить поддержку обучения с дистилляцией токенов в обёртки задач дистилляции
* Удаление некоторых вызовов torch.jit в преддверии официального прекращения поддержки
* Добавлено предупреждение к оптимизатору AdamP
* Вызывайте reset_parameters() даже при инициализации на meta-устройстве, чтобы буферы были инициализированы с использованием таких хитростей, как init_empty_weights
* Настройка оптимизатора Muon для работы с DTensor/FSDP2 (использование clamp_ вместо clamp_min_, альтернативная ветвь NS для DTensor)
* Релиз 1.0.25

## 21 января 2026
* **Несовместимость**: исправлена ошибка с смещением QKV и MLP в `ParallelScalingBlock` (& `DiffParallelScalingBlock`)
  * Не влияет на обученные модели `timm`, но может повлиять на их дальнейшее использование.

## 5 и 6 января 2026
* Релиз 1.0.24
* Добавлены новые файлы CSV с результатами бенчмарков для времени инференса на всех моделях с картами RTX Pro 6000, 5090 и 4090 с использованием PyTorch 2.9.1
* Исправление ошибки перемещённого модуля в устаревшем пути импорта timm.models.layers, влияющем на устаревшие импорты
* Релиз 1.0.23

## 30 декабря 2025
* Добавлены улучшенные ViT-модели `dpwee`, `dwee`, `dlittle` (дифференциальные), обученные с помощью NAdaMuon, с небольшим приростом по сравнению с предыдущими запусками
  * https://huggingface.co/timm/vit_dlittle_patch16_reg1_gap_256.sbb_nadamuon_in1k (83,24% top-1)
  * https://huggingface.co/timm/vit_dwee_patch16_reg1_gap_256.sbb_nadamuon_in1k  (81,80% top-1)
  * https://huggingface.co/timm/vit_dpwee_patch16_reg1_gap_256.sbb_nadamuon_in1k (81,67% top-1)
* Добавлен вариант модели CSATv2 с ~21M параметров на базе `timm` для разрешений 512x512 и 640x640
  * https://huggingface.co/timm/csatv2_21m.sw_r640_in1k (83,13% top-1)
  * https://huggingface.co/timm/csatv2_21m.sw_r512_in1k (82,58% top-1)
* Вынесите инициализацию непостоянных параметров из `__init__` в общий метод, который можно вызывать извне через `init_non_persistent_buffers()` после инициализации на meta-устройстве.

## 12 декабря 2025
* Добавлена модель CSATV2 (спасибо https://github.com/gusdlf93) — легкая, но высокодетализированная модель с DCT stem & spatial attention. https://huggingface.co/Hyunil/CSATv2
* Добавлена поддержка оптимизаторов AdaMuon и NAdaMuon в существующую реализацию Muon в `timm`. Показывает более конкурентоспособные результаты по сравнению с AdamW при использовании привычных гиперпараметров для задач с изображениями.
* Очистка PR в конце года, объединение аспектов нескольких давно открытых PR
  * Объединение дифференциального внимания (`DiffAttention`), добавление соответствующего блока `DiffParallelScalingBlock` (для ViT), обучение нескольких небольших ViT
    * https://huggingface.co/timm/vit_dwee_patch16_reg1_gap_256.sbb_in1k
    * https://huggingface.co/timm/vit_dpwee_patch16_reg1_gap_256.sbb_in1k
  * Добавьте несколько модулей пулинга, `LsePlus` и `SimPool`
  * Очистка и оптимизация `DropBlock2d` (а также добавление поддержки для моделей на базе ByobNet)
* Обновление модульных тестов до PyTorch 2.9.1 + Python 3.13 на верхней границе, нижняя граница остаётся PyTorch 1.13 + Python 3.10

## 1 декабря 2025
* Добавлена лёгкая абстракция задач, а также поддержка дистилляции логитов и признаков в скрипт обучения через новые задачи.
* Удалить устаревшую поддержку APEX AMP

## 4 ноября 2025
* Исправлена ошибка инициализации LayerScale / LayerScale2d (значения инициализации игнорировались), появившаяся в версии 1.0.21. Спасибо https://github.com/Ilya-Fradlin
* Релиз 1.0.22

## 31 октября 2025 г. 🎃
* Обновите файлы CSV с результатами для imagenet и OOD-варианта, чтобы включить несколько новых моделей, и проверьте корректность на нескольких версиях torch и timm
* Добавлены веса моделей EfficientNet-X и EfficientNet-H B5 в рамках поиска гиперпараметров для сравнения AdamW и Muon (итерации над запусками Muon продолжаются)

## 16–20 октября 2025
* Добавить реализацию оптимизатора Muon (на основе https://github.com/KellerJordan/Muon) с кастомизациями
  * дополнительная гибкость и улучшенная обработка весов свёрточных слоёв, а также варианты отката для форм весов, не подходящих для ортогонализации
  * небольшое ускорение итераций NS за счёт уменьшения количества аллокаций и использования слиянных операций (b)add(b)mm
  * по умолчанию использует обновления AdamW (или NAdamW, если `nesterov=True`), если muon не подходит для формы параметра (или исключён через флаг группы параметров)
  * как в реализации torch, выбор из нескольких функций масштабирования LR через `adjust_lr_fn`
  * выберите один из нескольких пресетов коэффициентов NS или укажите свои через `ns_coefficients`
* Поддерживаются первые 2 шага инициализации модели устройства 'meta'
  * Исправлено несколько операций, которые нарушали создание в контексте устройства 'meta'
  * Добавить поддержку аргументов-фабрик device и dtype во все модели и модули (всё, что наследуется от nn.Module) в `timm`
* Поля лицензии, добавленные в предобученные cfg в коде
* Релиз 1.0.21

## 21 сентября 2025
* Переназначение тегов весов DINOv3 ViT с `lvd_1689m` -> `lvd1689m` для соответствия (аналогично для `sat_493m` -> `sat493m`)
* Релиз 1.0.20

## 17 сентября 2025
* DINOv3 (https://arxiv.org/abs/2508.10104) Добавлены модели ConvNeXt и ViT. Модели ConvNeXt были сопоставлены с существующей моделью `timm`. Поддержка ViT реализована через базовую модель EVA с новым `RotaryEmbeddingDinoV3` для соответствия специфичной для DINOv3 реализации RoPE
  * HuggingFace Hub: https://huggingface.co/collections/timm/timm-dinov3-68cb08bb0bee365973d52a4d
* Визуальные энкодеры MobileCLIP-2 (https://arxiv.org/abs/2508.20691). Добавлены новые варианты MCI3/MCI4 FastViT, веса сопоставлены с существующими FastViT и B, L/14 ViTs.
* MetaCLIP-2 Worldwide (https://arxiv.org/abs/2507.22062) добавлены веса энкодера ViT.
* SigLIP-2 (https://arxiv.org/abs/2502.14786) веса энкодера NaFlex ViT добавлены через модель timm NaFlexViT.
* Прочие исправления и вно

## 23 июля 2025
* Добавлен метод `set_input_size()` для моделей EVA, используемый в OpenCLIP 3.0.0 для изменения размера входных данных в моделях-энкодерах на базе timm.
* Релиз 1.0.18, необходимый для моделей PE-Core S & T в OpenCLIP 3.0.0
* Исправлена небольшая проблема с типизацией, нарушавшая совместимость с Python 3.9. Патч-релиз 1.0.19.

## 21 июля 2025
* Поддержка ROPE добавлена в NaFlexViT. Теперь все модели, охваченные базой EVA (`eva.py`), включая EVA, EVA02, Meta PE ViT, `timm` SBB ViT с ROPE и Naver ROPE-ViT, могут загружаться в NaFlexViT при передаче `use_naflex=True` при создании модели
* Добавлены дополнительные кодировщики Meta PE ViT, включая варианты small/tiny, языковые варианты с тайлингом и дополнительные пространственные варианты.
* PatchDropout исправлен для NaFlexViT, а также для моделей EVA (регрессия после добавления Naver ROPE-ViT)
* Исправлен порядок XY с grid_indexing='xy', затронувшее использование неквадратных изображений в режиме 'xy' (затронуты только ROPE-ViT и PE).

## 7 июля 2025
* Корректировки бэкбона MobileNet-v5 для улучшения поведения Google Gemma 3n (для использования с обновлёнными официальными весами)
  * Добавить смещение стемма (обнулено в обновлённых весах, несовместимость со старыми весами)
  * GELU -> GELU (tanh approx). Незначительное изменение для большей близости к JAX
* Добавлены два аргумента для поддержки layer-decay: минимальное значение clamp и порог масштаба «без оптимизации»
* Добавлены варианты 'Fp32' LayerNorm, RMSNorm, SimpleNorm, которые можно включить для вычисления нормализации в float32
* Некоторые правки типов, а также аргументов для слоёв norm и norm+act, выполненные выше
* Поддержка Naver ROPE-ViT (https://github.com/naver-ai/rope-vit) в `eva.py`, добавление модуля RotaryEmbeddingMixed для смешанного режима, веса на HuggingFace Hub

|модель                                             |img_size|top1  |top5  |param_count|
|--------------------------------------------------|--------|------|------|-----------|
|vit_large_patch16_rope_mixed_ape_224.naver_in1k  |224     |84.84 |97.122|304.4      |
|vit_large_patch16_rope_mixed_224.naver_in1k      |224     |84.828|97.116|304.2      |
|vit_large_patch16_rope_ape_224.naver_in1k        |224     |84.65 |97.154|304.37     |
|vit_large_patch16_rope_224.naver_in1k            |224     |84.648|97.122|304.17     |
|vit_base_patch16_rope_mixed_ape_224.naver_in1k   |224     |83.894|96.754|86.59      |
|vit_base_patch16_rope_mixed_224.naver_in1k       |224     |83.804|96.712|86.44      |
|vit_base_patch16_rope_ape_224.naver_in1k         |224     |83.782|96.61 |86.59      |
|vit_base_patch16_rope_224.naver_in1k             |224     |83.718|96.672|86.43      |
|vit_small_patch16_rope_224.naver_in1k            |224     |81.23 |95.022|21.98      |
|vit_small_patch16_rope_mixed_224.naver_in1k      |224     |81.216|95.022|21.99      |
|vit_small_patch16_rope_ape_224.naver_in1k        |224     |81.004|95.016|22.06      |
|vit_small_patch16_rope_mixed_ape_224.naver_in1k  |224     |80.986|94.976|22.06      |
* Некоторые изменения в модулях ROPE, вспомогательных функциях и регистрации листов для трассировки FX
* Подготовка релиза версии 1.0.17

## 26 июня 2025
* Backbone MobileNetV5 (вариант только с энкодером) для изображений-энкодера [Gemma 3n](https://ai.google.dev/gemma/docs/gemma-3n#parameters)
* Выпущена версия 1.0.16

## 23 июня 2025
* Добавлено масштабирование 2D и факторизованных позиционных эмбеддингов на основе F.grid_sample в NaFlexViT. Быстрее при большом количестве различных размеров (на основе примера от https://github.com/stas-sl).
* Дальнейшее ускорение resample в patch embed путём замены vmap на matmul (на основе сниппета от https://github.com/stas-sl).
* Добавлены 3 начальных нативных контрольных точек NaFlexViT, созданных во время тестирования, ImageNet-1k и 3 различных конфигурации pos embed с одинаковыми гиперпараметрами.

 | Модель | Точность Top-1 | Точность Top-5 | Параметры (млн) | Длина последовательности для оценки |
 |:---|:---:|:---:|:---:|:---:|
 | [naflexvit_base_patch16_par_gap.e300_s576_in1k](https://hf.co/timm/naflexvit_base_patch16_par_gap.e300_s576_in1k) | 83.67 | 96.45 | 86.63 | 576 |
 | [naflexvit_base_patch16_parfac_gap.e300_s576_in1k](https://hf.co/timm/naflexvit_base_patch16_parfac_gap.e300_s576_in1k) | 83.63 | 96.41 | 86.46 | 576 |
 | [naflexvit_base_patch16_gap.e300_s576_in1k](https://hf.co/timm/naflexvit_base_patch16_gap.e300_s576_in1k) | 83.50 | 96.46 | 86.63 | 576 |
* Поддержка gradient checkpointing для `forward_intermediates` и исправление некоторых ошибок в checkpointing. Спасибо https://github.com/brianhou0208
* Добавить «скорректированное затухание весов» (https://arxiv.org/abs/2506.02285) как опцию для оптимизаторов AdamW (legacy), Adopt, Kron, Adafactor (BV), Lamb, LaProp, Lion, NadamW, RmsPropTF, SGDW
* Переключить модели PE (perception encoder) ViT на использование нативных весов timm вместо переназначения на лету
* Исправление ошибки cuda stream в prefetch loader

## 5 июня 2025
* Исходный код модели NaFlexVit. NaFlexVit — это Vision Transformer со следующими характеристиками:
  1. Инкапсулированное встраивание и позиционное кодирование в едином модуле
  2. Поддержка встраивания патчей с помощью nn.Linear для предпатчированных (словарных) входных данных
  3. Поддержка NaFlex с переменным соотношением сторон и переменным разрешением (SigLip-2: https://arxiv.org/abs/2502.14786)
  4. Поддержка переменного размера патчей FlexiViT (https://arxiv.org/abs/2212.08013)
  5. Поддержка дробного/факторизованного позиционного эмбеддинга NaViT (https://arxiv.org/abs/2307.06304)
* Существующие модели vit в `vision_transformer.py` можно загрузить в модель NaFlexVit, добавив флаг `use_naflex=True` к `create_model`
  * Некоторые нативные веса скоро появятся
* Доступен полный конвейер данных NaFlex, который позволяет выполнять обучение / дообучение / оценку с изображениями переменной пропорции / размера
  * Чтобы включить в `train.py` и `validate.py`, добавьте аргумент `--naflex-loader`, он должен использоваться вместе с NaFlexVit
* Для оценки существующей (классической) модели ViT, загруженной в модель NaFlexVit с конвейером данных 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`
* В обучении есть несколько дополнительных аргументов, на которые стоит обратить внимание
  * Аргумент `--naflex-train-seq-lens'` определяет, какие длины последовательностей следует случайно выбирать для каждой партии (batch) во время обучения
  * Аргумент `--naflex-max-seq-len` задает целевую длину последовательности для валидации
  * Добавление `--model-kwargs enable_patch_interpolator=True --naflex-patch-sizes 12 16 24` позволит выбирать случайный размер патча для каждой партии с интерполяцией
  * Аргумент `--naflex-loss-scale` изменяет режим масштабирования потерь для каждой партии относительно размера партии, а загрузка NaFlex в `timm` изменяет размер партии для каждой длины последовательности

## 28 мая 2025
* Добавлено несколько небольших/быстрых моделей благодаря https://github.com/brianhou0208
  * SwiftFormer - [(ICCV2023) SwiftFormer: Efficient Additive Attention for Transformer-based Real-time Mobile Vision Applications](https://github.com/Amshaker/SwiftFormer)
  * FasterNet - [(CVPR2023) Run, Don’t Walk: Chasing Higher FLOPS for Faster Neural Networks](https://github.com/JierunChen/FasterNet)
  * SHViT - [(CVPR2024) SHViT: Single-Head Vision Transformer with Memory Efficient](https://github.com/ysj9909/SHViT)
  * StarNet - [(CVPR2024) Переписать звёзды](https://github.com/ma-xu/Rewrite-the-Stars)
  * GhostNet-V3 [GhostNetV3: исследование стратегий обучения для компактных моделей](https://github.com/huawei-noah/Efficient-AI-Backbones/tree/master/ghostnetv3_pytorch)
* Обновление EVA ViT (наиболее близкое совпадение) для поддержки моделей Perception Encoder (https://arxiv.org/abs/2504.13181) от Meta, загрузка весов с Hub, но мне всё ещё нужно опубликовать выделенные веса `timm`
  * Добавить некоторую гибкость в реализацию ROPE
* Значительное увеличение числа моделей, поддерживающих `forward_intermediates()`, и ряд дополнительных исправлений благодаря https://github.com/brianhou0208
  * DaViT, EdgeNeXt, EfficientFormerV2, EfficientViT(MIT), EfficientViT(MSRA), FocalNet, GCViT, HGNet /V2, InceptionNeXt, Inception-V4, MambaOut, MetaFormer, NesT, Next-ViT, PiT, PVT V2, RepGhostNet, RepViT, ResNetV2, ReXNet, TinyViT, TResNet, VoV
* Модель TNT обновлена с новыми весами `forward_intermediates()` благодаря https://github.com/brianhou0208
* Добавлена схема предобучения `local-dir:`, можно использовать `local-dir:/path/to/model/folder` в качестве имени модели для загрузки конфигурации и весов предобученной модели из локальной папки (файлы config.json и весов моделей Hugging Face Hub).
* Исправления и улучшения для экспорта в onnx

## 21 февраля 2025
* Добавлены кодировщики изображений SigLIP 2 ViT (https://huggingface.co/collections/timm/siglip-2-67b8e72ba08b09dd97aecaf9)
  * Версии с переменной разрешением/соотношением сторон NaFlex находятся в стадии разработки
* Добавлены веса ViT для 'SO150M2', обученные с использованием рецептов SBB. Отличные результаты: лучше, чем на ImageNet в предыдущей попытке, при меньшем объёме обучения.
  * `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`
* Обновлены веса InternViT-300M '2.5'
* Релиз 1.0.15

## 1 февраля 2025
* К сведению: PyTorch 2.6 и Python 3.13 протестированы и работают с текущей main и выпущенной версией `timm`

## 27 января 2025
* Добавлен оптимизатор Kron (PSGD с преобразователем, факторизованным по Кронекеру)
  * Код из https://github.com/evanatyourservice/kron_torch
  * См. также https://sites.google.com/site/lixilinx/home/psgd

## 19 января 2025
* Исправление загрузки весов LeViT в формате safetensor, удаление кода конвертации, который должен был быть отключен
* Добавлены веса ViT 'SO150M', обученные с использованием рецептов SBB, результаты приемлемые, но форма не оптимальна для предобучения/дообучения на 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`
* Устранение опечаток и других мелких ошибок
* Выпуск 1.0.14 для устранения ошибки в LeViT

## 9 января 2025
* Добавить поддержку обучения и валидации в чистом `bfloat16` или `float16`
* `wandb` аргумент имени проекта добавлен https://github.com/caojiaolong, используйте arg.experiment в качестве имени
* Исправлена старая проблема, из-за которой сохранение контрольных точек не работало на файловых системах без поддержки жёстких ссылок (например, на монтированных FUSE-файловых системах)
* Релиз 1.0.13

## 6 января 2025
* Добавьте обёртку `torch.utils.checkpoint.checkpoint()` в `timm.models` с параметром `use_reentrant=False` по умолчанию, если в переменной окружения не задано `TIMM_REENTRANT_CKPT=1`.

## 31 декабря 2024
* `convnext_nano` 384x384 предобучение и дообучение на ImageNet-12k. https://huggingface.co/models?search=convnext_nano%20r384
* Добавьте энкодеры AIM-v2 из https://github.com/apple/ml-aim, см. на Hub: https://huggingface.co/models?search=timm%20aimv2
* Добавьте энкодеры PaliGemma2 из https://github.com/google-research/big_vision в существующий PaliGemma, см. на Hub: https://huggingface.co/models?search=timm%20pali2
* Добавить отсутствующие L/14 DFN2B 39B CLIP ViT, `vit_large_patch14_clip_224.dfn2b_s39b`
* Исправьте существующий слой `RmsNorm` и функцию, чтобы они соответствовали стандартной формулировке, и используйте реализацию из PT 2.5, когда это возможно. Перенесите старую реализацию в слой `SimpleNorm`, это LN без центрирования или смещения. Использовали его только две модели `timm`, и они были обновлены.
* Разрешить переопределение аргумента `cache_dir` при создании модели
* Передайте `trust_remote_code` для обёртки датасетов HF
* Модель `inception_next_atto`, добавленная создателем
* Предупреждение об оптимизаторе Adan, а также варианты отсоединённого распада весов для Lamb
* Некоторые метаданные feature_info исправлены по адресу https://github.com/brianhou0208
* Все веса моделей OpenCLIP и JAX (CLIP, SigLIP, Pali и т. д.), для которых использовалось перемapping при загрузке, получили собственные экземпляры на HF Hub, чтобы они работали с загрузкой на основе `hf-hub:` и, следовательно, были совместимы с новой моделью `TimmWrapperModel` в Transformers

## 28 ноября 2024
* Другие оптимизаторы
  * Добавить оптимизатор MARS (https://arxiv.org/abs/2411.10438, https://github.com/AGI-Arena/MARS)
  * Добавить оптимизатор LaProp (https://arxiv.org/abs/2002.04839, https://github.com/Z-T-WANG/LaProp-Optimizer)
  * Добавьте маскировку из «Cautious Optimizers» (https://arxiv.org/abs/2411.16085, https://github.com/kyleliang919/C-Optim) в Adafactor, Adafactor Big Vision, AdamW (legacy), Adopt, Lamb, LaProp, Lion, NadamW, RMSPropTF, SGDW
  * Убраны лишние docstrings и аннотации типов в части оптимизаторов и фабрики
* Добавлены модели MobileNet-V4 Conv Medium, предварительно обученные на in12k и дообученные на in1k @ 384x384
  * https://huggingface.co/timm/mobilenetv4_conv_medium.e250_r384_in12k_ft_in1k
  * https://huggingface.co/timm/mobilenetv4_conv_medium.e250_r384_in12k
  * https://huggingface.co/timm/mobilenetv4_conv_medium.e180_ad_r384_in12k
  * https://huggingface.co/timm/mobilenetv4_conv_medium.e180_r384_in12k
* Добавьте небольшой cs3darknet, он довольно хорош по скорости
  * https://huggingface.co/timm/cs3darknet_focus_s.ra4_e3600_r256_in1k

## 12 ноября 2024
* Рефакторинг фабрики оптимизаторов
  * Новый фабрика работает, регистрируя оптимизаторы с помощью dataclass OptimInfo с некоторыми ключевыми характеристиками
  * Добавьте `list_optimizers`, `get_optimizer_class`, `get_optimizer_info` в переработанную функцию `create_optimizer_v2` для изучения оптимизаторов, получения информации или класса
  * Устаревание `optim.optim_factory`, перенос функций в `optim/_optim_factory.py` и `optim/_param_groups.py` и рекомендация импортировать через `timm.optim`
* Добавить оптимизатор Adopt (https://github.com/iShohei220/adopt)
* Добавить вариант «Big Vision» оптимизатора Adafactor (https://github.com/google-research/big_vision/blob/main/big_vision/optax.py)
* Исправление оригинального Adafactor для выбора более подходящих размерностей факторизации для свёрток
* Настройка оптимизатора LAMB с некоторыми улучшениями функциональности torch.where по сравнению с оригинальной реализацией, а также небольшая рефакторизация обрезания
* поддержка динамического размера изображений в vit, deit, eva улучшена для поддержки изменения размера из неквадратных сеток патчей, спасибо https://github.com/wojtke
*
## 31 октября 2024
Добавлен набор новых очень хорошо обученных весов ResNet & ResNet-V2 18/34 (basic block). См. https://huggingface.co/blog/rwightman/resnet-trick-or-treat

## 19 октября 2024
* Убрано использование torch amp, чтобы избежать вызовов, специфичных для CUDA; добавлена поддержка устройств Ascend (NPU) от [MengqingCao](https://github.com/MengqingCao), которая теперь должна работать в PyTorch 2.5 благодаря новой функции автозагрузки расширений устройств. Также протестировано на Intel Arc (XPU) в PyTorch 2.5 — в основном работало.

## 16 октября 2024
* Исправлена ошибка при импорте из устаревшего пути `timm.models.registry`, повышена приоритетность существующих предупреждений об устаревании, чтобы они были видны
* Перенос весов модели InternViT-300M (https://huggingface.co/OpenGVLab/InternViT-300M-448px) в `timm` как `vit_intern300m_patch14_448`

### 14 октября 2024
* Добавлены определения моделей ResNet 18/18d/34/34d в версии Pre-activation (ResNetV2) по запросу (веса ожидаются)
* Релиз 1.0.10

### 11 октября 2024
* MambaOut Добавлены модель и веса (https://github.com/yuweihao/MambaOut). Ироничный взгляд на SSM-модели для компьютерного зрения без SSM (по сути, ConvNeXt с гейтингом). Смесь оригинальных весов и кастомных вариаций с весами.

|модель                                                                                                                |img_size|top1  |top5  |param_count|
|---------------------------------------------------------------------------------------------------------------------|--------|------|------|-----------|
|[mambaout_base_plus_rw.sw_e150_r384_in12k_ft_in1k](http://huggingface.co/timm/mambaout_base_plus_rw.sw_e150_r384_in12k_ft_in1k)|384     |87.506|98.428|101.66     |
|[mambaout_base_plus_rw.sw_e150_in12k_ft_in1k](http://huggingface.co/timm/mambaout_base_plus_rw.sw_e150_in12k_ft_in1k)|288     |86.912|98.236|101.66     |
|[mambaout_base_plus_rw.sw_e150_in12k_ft_in1k](http://huggingface.co/timm/mambaout_base_plus_rw.sw_e150_in12k_ft_in1k)|224     |86.632|98.156|101.66     |
|[mambaout_base_tall_rw.sw_e500_in1k](http://huggingface.co/timm/mambaout_base_tall_rw.sw_e500_in1k)                  |288     |84.974|97.332|86.48      |
|[mambaout_base_wide_rw.sw_e500_in1k](http://huggingface.co/timm/mambaout_base_wide_rw.sw_e500_in1k)                  |288     |84.962|97.208|94.45      |
|[mambaout_base_short_rw.sw_e500_in1k](http://huggingface.co/timm/mambaout_base_short_rw.sw_e500_in1k)                |288     |84.832|97.27 |88.83      |
|[mambaout_base.in1k](http://huggingface.co/timm/mambaout_base.in1k)                                                  |288     |84.72 |96.93 |84.81      |
|[mambaout_small_rw.sw_e450_in1k](http://huggingface.co/timm/mambaout_small_rw.sw_e450_in1k)                          |288     |84.598|97.098|48.5       |
|[mambaout_small.in1k](http://huggingface.co/timm/mambaout_small.in1k)                                                |288     |84.5  |96.974|48.49      |
|[mambaout_base_wide_rw.sw_e500_in1k](http://huggingface.co/timm/mambaout_base_wide_rw.sw_e500_in1k)                  |224     |84.454|96.864|94.45      |
|[mambaout_base_tall_rw.sw_e500_in1k](http://huggingface.co/timm/mambaout_base_tall_rw.sw_e500_in1k)                  |224     |84.434|96.958|86.48      |
|[mambaout_base_short_rw.sw_e500_in1k](http://huggingface.co/timm/mambaout_base_short_rw.sw_e500_in1k)                |224     |84.362|96.952|88.83      |
|[mambaout_base.in1k](http://huggingface.co/timm/mambaout_base.in1k)                                                  |224     |84.168|96.68 |84.81      |
|[mambaout_small.in1k](http://huggingface.co/timm/mambaout_small.in1k)                                                |224     |84.086|96.63 |48.49      |
|[mambaout_small_rw.sw_e450_in1k](http://huggingface.co/timm/mambaout_small_rw.sw_e450_in1k)                          |224     |84.024|96.752|48.5       |
|[mambaout_tiny.in1k](http://huggingface.co/timm/mambaout_tiny.in1k)                                                  |288     |83.448|96.538|26.55      |
|[mambaout_tiny.in1k](http://huggingface.co/timm/mambaout_tiny.in1k)                                                  |224     |82.736|96.1  |26.55      |
|[mambaout_kobe.in1k](http://huggingface.co/timm/mambaout_kobe.in1k)                                                  |288     |81.054|95.718|9.14       |
|[mambaout_kobe.in1k](http://huggingface.co/timm/mambaout_kobe.in1k)                                                  |224     |79.986|94.986|9.14       |
|[mambaout_femto.in1k](http://huggingface.co/timm/mambaout_femto.in1k)                                                |288     |79.848|95.14 |7.3        |
|[mambaout_femto.in1k](http://huggingface.co/timm/mambaout_femto.in1k)                                                |224     |78.87 |94.408|7.3        |

* SigLIP SO400M ViT дообучен на ImageNet-1k @ 378x378, добавлен вариант 378x378 для существующих моделей SigLIP 384x384
  *  [vit_so400m_patch14_siglip_378.webli_ft_in1k](https://huggingface.co/timm/vit_so400m_patch14_siglip_378.webli_ft_in1k) — 89,42 top-1
  *  [vit_so400m_patch14_siglip_gap_378.webli_ft_in1k](https://huggingface.co/timm/vit_so400m_patch14_siglip_gap_378.webli_ft_in1k) - 89.03
* Кодер ViT SigLIP SO400M из недавнего мультиязычного (i18n) варианта, patch16 @ 256x256 (https://huggingface.co/timm/ViT-SO400M-16-SigLIP-i18n-256). Обновление OpenCLIP ожидается.
* Добавлены две модели ConvNeXt 'Zepto' и веса (одна с перекрывающимся стеблем и одна с патч-стеблем). Используется RMSNorm, модель меньше предыдущей 'Atto', 2,2 млн параметров.
  * [convnext_zepto_rms_ols.ra4_e3600_r224_in1k](https://huggingface.co/timm/convnext_zepto_rms_ols.ra4_e3600_r224_in1k) — 73,20 top-1 @ 224
  * [convnext_zepto_rms.ra4_e3600_r224_in1k](https://huggingface.co/timm/convnext_zepto_rms.ra4_e3600_r224_in1k) - 72,81 @ 224

### Сентябрь 2024
* Добавлен набор крошечных тестовых моделей для улучшения модульных тестов и нишевых приложений с ограниченными ресурсами (https://huggingface.co/blog/rwightman/timm-tiny-test)
* Добавлена модель MobileNetV4-Conv-Small (0.5x) (https://huggingface.co/posts/rwightman/793053396198664)
  * [mobilenetv4_conv_small_050.e3000_r224_in1k](http://hf.co/timm/mobilenetv4_conv_small_050.e3000_r224_in1k) — 65,81 top-1 @ 256, 64,76 @ 224
* Добавлены варианты MobileNetV3-Large, обученные с использованием рецепта MNV4 Small
  * [mobilenetv3_large_150d.ra4_e3600_r256_in1k](http://hf.co/timm/mobilenetv3_large_150d.ra4_e3600_r256_in1k) - 81.81 @ 320, 80.94 @ 256
  * [mobilenetv3_large_100.ra4_e3600_r224_in1k](http://hf.co/timm/mobilenetv3_large_100.ra4_e3600_r224_in1k) - 77,16 @ 256, 76,31 @ 224

### 21 августа 2024
* Обновлённые модели SBB ViT, обученные на ImageNet-12k и дообученные на ImageNet-1k, конкурируют с рядом значительно более крупных и медленных моделей

| модель | top1 | top5 | param_count | img_size |
| -------------------------------------------------- | ------ | ------ | ----------- | -------- |
| [vit_mediumd_patch16_reg4_gap_384.sbb2_e200_in12k_ft_in1k](https://huggingface.co/timm/vit_mediumd_patch16_reg4_gap_384.sbb2_e200_in12k_ft_in1k) | 87.438 | 98.256 | 64.11 | 384 |
| [vit_mediumd_patch16_reg4_gap_256.sbb2_e200_in12k_ft_in1k](https://huggingface.co/timm/vit_mediumd_patch16_reg4_gap_256.sbb2_e200_in12k_ft_in1k) | 86.608 | 97.934 | 64.11 | 256 |
| [vit_betwixt_patch16_reg4_gap_384.sbb2_e200_in12k_ft_in1k](https://huggingface.co/timm/vit_betwixt_patch16_reg4_gap_384.sbb2_e200_in12k_ft_in1k) | 86.594 | 98.02 | 60.4 | 384 |
| [vit_betwixt_patch16_reg4_gap_256.sbb2_e200_in12k_ft_in1k](https://huggingface.co/timm/vit_betwixt_patch16_reg4_gap_256.sbb2_e200_in12k_ft_in1k) | 85.734 | 97.61 | 60.4 | 256 |
* Веса MobileNet-V1 1.25, EfficientNet-B1 и ResNet50-D с рецептом базового вызова MNV4

| модель                                                                                                                    | top1   | top5   | param_count | img_size |
|--------------------------------------------------------------------------------------------------------------------------|--------|--------|-------------|----------|
| [resnet50d.ra4_e3600_r224_in1k](http://hf.co/timm/resnet50d.ra4_e3600_r224_in1k)                                         | 81.838 | 95.922 | 25.58       | 288      |
| [efficientnet_b1.ra4_e3600_r240_in1k](http://hf.co/timm/efficientnet_b1.ra4_e3600_r240_in1k)                             | 81.440 | 95.700 | 7.79        | 288      |
| [resnet50d.ra4_e3600_r224_in1k](http://hf.co/timm/resnet50d.ra4_e3600_r224_in1k)                                         | 80.952 | 95.384 | 25.58       | 224      |
| [efficientnet_b1.ra4_e3600_r240_in1k](http://hf.co/timm/efficientnet_b1.ra4_e3600_r240_in1k)                             | 80.406 | 95.152 | 7.79        | 240      |
| [mobilenetv1_125.ra4_e3600_r224_in1k](http://hf.co/timm/mobilenetv1_125.ra4_e3600_r224_in1k)                             | 77.600 | 93.804 | 6.27        | 256      |
| [mobilenetv1_125.ra4_e3600_r224_in1k](http://hf.co/timm/mobilenetv1_125.ra4_e3600_r224_in1k)                             | 76.924 | 93.234 | 6.27        | 224      |

* Добавлена поддержка архитектуры и загрузки весов бэкбона SAM2 (HieraDet)
* Добавлены веса Hiera Small, обученные с использованием абсвин pos embed на in12k и дообученные на 1k

|модель                            |top1  |top5  |param_count|
|---------------------------------|------|------|-----------|
|hiera_small_abswin_256.sbb2_e200_in12k_ft_in1k    |84.912|97.260|35.01      |
|hiera_small_abswin_256.sbb2_pd_e200_in12k_ft_in1k |84.560|97.106|35.01      |

### 8 августа 2024
* Добавлен RDNet ('DenseNets Reloaded', https://arxiv.org/abs/2403.19588), спасибо [Donghyun Kim](https://github.com/dhkim0225)

### 28 июля 2024
* Добавлены веса `mobilenet_edgetpu_v2_m` с рецептом на основе `ra4` mnv4-small. Точность top-1: 80,1% при 224 и 80,7% при 256.
* Релиз 1.0.8

### 26 июля 2024
* Больше весов MobileNet-v4, предобучение на ImageNet-12k с дообучением и модели ConvLarge с антиалиасингом

| модель                                                                                            |top1  |top1_err|top5  |top5_err|param_count|img_size|
|--------------------------------------------------------------------------------------------------|------|--------|------|--------|-----------|--------|
| [mobilenetv4_conv_aa_large.e230_r448_in12k_ft_in1k](http://hf.co/timm/mobilenetv4_conv_aa_large.e230_r448_in12k_ft_in1k)|84.99 |15.01   |97.294|2.706   |32.59      |544     |
| [mobilenetv4_conv_aa_large.e230_r384_in12k_ft_in1k](http://hf.co/timm/mobilenetv4_conv_aa_large.e230_r384_in12k_ft_in1k)|84.772|15.228  |97.344|2.656   |32.59      |480     |
| [mobilenetv4_conv_aa_large.e230_r448_in12k_ft_in1k](http://hf.co/timm/mobilenetv4_conv_aa_large.e230_r448_in12k_ft_in1k)|84.64 |15.36   |97.114|2.886   |32.59      |448     |
| [mobilenetv4_conv_aa_large.e230_r384_in12k_ft_in1k](http://hf.co/timm/mobilenetv4_conv_aa_large.e230_r384_in12k_ft_in1k)|84.314|15.686  |97.102|2.898   |32.59      |384     |
| [mobilenetv4_conv_aa_large.e600_r384_in1k](http://hf.co/timm/mobilenetv4_conv_aa_large.e600_r384_in1k)     |83.824|16.176  |96.734|3.266   |32.59      |480     |
| [mobilenetv4_conv_aa_large.e600_r384_in1k](http://hf.co/timm/mobilenetv4_conv_aa_large.e600_r384_in1k)             |83.244|16.756  |96.392|3.608   |32.59      |384     |
| [mobilenetv4_hybrid_medium.e200_r256_in12k_ft_in1k](http://hf.co/timm/mobilenetv4_hybrid_medium.e200_r256_in12k_ft_in1k)|82.99 |17.01   |96.67 |3.33    |11.07      |320     |
| [mobilenetv4_hybrid_medium.e200_r256_in12k_ft_in1k](http://hf.co/timm/mobilenetv4_hybrid_medium.e200_r256_in12k_ft_in1k)|82.364|17.636  |96.256|3.744   |11.07      |256     |

* Впечатляющие базовые задачи для MobileNet-V1 и EfficientNet-B0 (https://huggingface.co/blog/rwightman/mobilenet-baselines)

| модель                                                                                            |top1  |top1_err|top5  |top5_err|param_count|img_size|
|--------------------------------------------------------------------------------------------------|------|--------|------|--------|-----------|--------|
| [efficientnet_b0.ra4_e3600_r224_in1k](http://hf.co/timm/efficientnet_b0.ra4_e3600_r224_in1k)                       |79.364|20.636  |94.754|5.246   |5.29       |256     |
| [efficientnet_b0.ra4_e3600_r224_in1k](http://hf.co/timm/efficientnet_b0.ra4_e3600_r224_in1k)                       |78.584|21.416  |94.338|5.662   |5.29       |224     |
| [mobilenetv1_100h.ra4_e3600_r224_in1k](http://hf.co/timm/mobilenetv1_100h.ra4_e3600_r224_in1k)                     |76.596|23.404  |93.272|6.728   |5.28       |256     |
| [mobilenetv1_100.ra4_e3600_r224_in1k](http://hf.co/timm/mobilenetv1_100.ra4_e3600_r224_in1k)                       |76.094|23.906  |93.004|6.996   |4.23       |256     |
| [mobilenetv1_100h.ra4_e3600_r224_in1k](http://hf.co/timm/mobilenetv1_100h.ra4_e3600_r224_in1k)                     |75.662|24.338  |92.504|7.496   |5.28       |224     |
| [mobilenetv1_100.ra4_e3600_r224_in1k](http://hf.co/timm/mobilenetv1_100.ra4_e3600_r224_in1k)                       |75.382|24.618  |92.312|7.688   |4.23       |224     |

* Добавлен прототип `set_input_size()` в модели vit и swin v1/v2 для возможности изменения размера изображения, размера патча и размера окна после создания модели.
* Улучшена поддержка в swin для обработки разных размеров: помимо `set_input_size`, в `__init__` добавлены аргументы `always_partition` и `strict_img_size` для более гибких ограничений размера входных данных
* Исправление информации о неупорядоченных индексах для промежуточного обёртывающего объекта 'Getter', проверка индексов на выход за пределы диапазона для того же объекта.
* Добавьте несколько моделей `tiny` с числом параметров менее 0,5 млн для тестирования, которые действительно обучены на ImageNet-1k

|модель                       |top1  |top1_err|top5  |top5_err|param_count|img_size|crop_pct|
|----------------------------|------|--------|------|--------|-----------|--------|--------|
|test_efficientnet.r160_in1k |47.156|52.844  |71.726|28.274  |0.36       |192     |1.0     |
|test_byobnet.r160_in1k      |46.698|53.302  |71.674|28.326  |0.46       |192     |1.0     |
|test_efficientnet.r160_in1k |46.426|53.574  |70.928|29.072  |0.36       |160     |0.875   |
|test_byobnet.r160_in1k      |45.378|54.622  |70.572|29.428  |0.46       |160     |0.875   |
|test_vit.r160_in1k|42.0  |58.0    |68.664|31.336  |0.37       |192     |1.0     |
|test_vit.r160_in1k|40.822|59.178  |67.212|32.788  |0.37       |160     |0.875   |

* Исправлена инициализация токена регистрационного пула в ViT, спасибо [Promisery](https://github.com/Promisery)
* Прочие исправления

### 24 июня 2024
* Ещё 3 гибридных веса MobileNetV4 с различными схемами инициализации весов MQA

| модель                                                                                            |top1  |top1_err|top5  |top5_err|param_count|img_size|
|--------------------------------------------------------------------------------------------------|------|--------|------|--------|-----------|--------|
| [mobilenetv4_hybrid_large.ix_e600_r384_in1k](http://hf.co/timm/mobilenetv4_hybrid_large.ix_e600_r384_in1k) |84.356|15.644  |96.892 |3.108  |37.76      |448     |
| [mobilenetv4_hybrid_large.ix_e600_r384_in1k](http://hf.co/timm/mobilenetv4_hybrid_large.ix_e600_r384_in1k) |83.990|16.010  |96.702 |3.298  |37.76      |384     |
| [mobilenetv4_hybrid_medium.ix_e550_r384_in1k](http://hf.co/timm/mobilenetv4_hybrid_medium.ix_e550_r384_in1k)       |83.394|16.606  |96.760|3.240   |11.07      |448     |
| [mobilenetv4_hybrid_medium.ix_e550_r384_in1k](http://hf.co/timm/mobilenetv4_hybrid_medium.ix_e550_r384_in1k)       |82.968|17.032  |96.474|3.526   |11.07      |384     |
| [mobilenetv4_hybrid_medium.ix_e550_r256_in1k](http://hf.co/timm/mobilenetv4_hybrid_medium.ix_e550_r256_in1k)       |82.492|17.508  |96.278|3.722   |11.07      |320     |
| [mobilenetv4_hybrid_medium.ix_e550_r256_in1k](http://hf.co/timm/mobilenetv4_hybrid_medium.ix_e550_r256_in1k)       |81.446|18.554  |95.704|4.296   |11.07      |256     |
* Загрузка весов florence2 в модели DaViT

### 12 июня 2024
* Добавлены модели MobileNetV4 и начальный набор обученных весов `timm`:

| модель                                                                                            |top1  |top1_err|top5  |top5_err|param_count|img_size|
|--------------------------------------------------------------------------------------------------|------|--------|------|--------|-----------|--------|
| [mobilenetv4_hybrid_large.e600_r384_in1k](http://hf.co/timm/mobilenetv4_hybrid_large.e600_r384_in1k) |84.266|15.734  |96.936 |3.064  |37.76      |448     |
| [mobilenetv4_hybrid_large.e600_r384_in1k](http://hf.co/timm/mobilenetv4_hybrid_large.e600_r384_in1k) |83.800|16.200  |96.770 |3.230  |37.76      |384     |
| [mobilenetv4_conv_large.e600_r384_in1k](http://hf.co/timm/mobilenetv4_conv_large.e600_r384_in1k) |83.392|16.608  |96.622 |3.378  |32.59      |448     |
| [mobilenetv4_conv_large.e600_r384_in1k](http://hf.co/timm/mobilenetv4_conv_large.e600_r384_in1k) |82.952|17.048  |96.266 |3.734  |32.59      |384     |
| [mobilenetv4_conv_large.e500_r256_in1k](http://hf.co/timm/mobilenetv4_conv_large.e500_r256_in1k) |82.674|17.326  |96.31 |3.69    |32.59      |320     |
| [mobilenetv4_conv_large.e500_r256_in1k](http://hf.co/timm/mobilenetv4_conv_large.e500_r256_in1k)                   |81.862|18.138  |95.69 |4.31    |32.59      |256     |
| [mobilenetv4_hybrid_medium.e500_r224_in1k](http://hf.co/timm/mobilenetv4_hybrid_medium.e500_r224_in1k)             |81.276|18.724  |95.742|4.258   |11.07      |256     |
| [mobilenetv4_conv_medium.e500_r256_in1k](http://hf.co/timm/mobilenetv4_conv_medium.e500_r256_in1k)                 |80.858|19.142  |95.768|4.232   |9.72       |320     |
| [mobilenetv4_hybrid_medium.e500_r224_in1k](http://hf.co/timm/mobilenetv4_hybrid_medium.e500_r224_in1k)             |80.442|19.558  |95.38 |4.62    |11.07      |224     |
| [mobilenetv4_conv_blur_medium.e500_r224_in1k](http://hf.co/timm/mobilenetv4_conv_blur_medium.e500_r224_in1k)       |80.142|19.858  |95.298|4.702   |9.72       |256     |
| [mobilenetv4_conv_medium.e500_r256_in1k](http://hf.co/timm/mobilenetv4_conv_medium.e500_r256_in1k)                 |79.928|20.072  |95.184|4.816   |9.72       |256     |
| [mobilenetv4_conv_medium.e500_r224_in1k](http://hf.co/timm/mobilenetv4_conv_medium.e500_r224_in1k)                 |79.808|20.192  |95.186|4.814   |9.72       |256     |
| [mobilenetv4_conv_blur_medium.e500_r224_in1k](http://hf.co/timm/mobilenetv4_conv_blur_medium.e500_r224_in1k)       |79.438|20.562  |94.932|5.068   |9.72       |224     |
| [mobilenetv4_conv_medium.e500_r224_in1k](http://hf.co/timm/mobilenetv4_conv_medium.e500_r224_in1k)                 |79.094|20.906  |94.77 |5.23    |9.72       |224     |
| [mobilenetv4_conv_small.e2400_r224_in1k](http://hf.co/timm/mobilenetv4_conv_small.e2400_r224_in1k)                 |74.616|25.384  |92.072|7.928   |3.77       |256     |
| [mobilenetv4_conv_small.e1200_r224_in1k](http://hf.co/timm/mobilenetv4_conv_small.e1200_r224_in1k)                 |74.292|25.708  |92.116|7.884   |3.77       |256     |
| [mobilenetv4_conv_small.e2400_r224_in1k](http://hf.co/timm/mobilenetv4_conv_small.e2400_r224_in1k)                 |73.756|26.244  |91.422|8.578   |3.77       |224     |
| [mobilenetv4_conv_small.e1200_r224_in1k](http://hf.co/timm/mobilenetv4_conv_small.e1200_r224_in1k)                 |73.454|26.546  |91.34 |8.66    |3.77       |224     |

* Добавлена поддержка и веса модели image tower Apple MobileCLIP (https://arxiv.org/pdf/2311.17049, FastViT и ViT-B) (часть поддержки OpenCLIP).
* ViTamin (https://arxiv.org/abs/2404.02132) Добавлена модель и веса башни изображений CLIP (часть поддержки OpenCLIP).
* Моделирование и поддержка весов для модифицированной башни изображений ResNet в OpenAI CLIP (через ByobNet). Рефакторинг AttentionPool2d.

### 14 мая 2024
* Поддержка загрузки весов PaliGemma jax в модели SigLIP ViT с усредняющим пулингом.
* Добавьте модели Hiera от Meta (https://github.com/facebookresearch/hiera).
* Добавлен флаг `normalize=` для трансформаций, возвращает ненормализованный torch.Tensor с исходным dtype (для `chug`)
* Выпуск версии 1.0.3

### 11 мая 2024
* `Searching for Better ViT Baselines (For the GPU Poor)` — опубликованы веса и варианты ViT. Исследование форм моделей между Tiny и Base.

| модель | top1 | top5 | param_count | img_size |
| -------------------------------------------------- | ------ | ------ | ----------- | -------- |
| [vit_mediumd_patch16_reg4_gap_256.sbb_in12k_ft_in1k](https://huggingface.co/timm/vit_mediumd_patch16_reg4_gap_256.sbb_in12k_ft_in1k) | 86.202 | 97.874 | 64.11 | 256 |
| [vit_betwixt_patch16_reg4_gap_256.sbb_in12k_ft_in1k](https://huggingface.co/timm/vit_betwixt_patch16_reg4_gap_256.sbb_in12k_ft_in1k)  | 85.418 | 97.48 | 60.4 | 256 |
| [vit_mediumd_patch16_rope_reg1_gap_256.sbb_in1k](https://huggingface.co/timm/vit_mediumd_patch16_rope_reg1_gap_256.sbb_in1k)  | 84.322 | 96.812 | 63.95 | 256 |
| [vit_betwixt_patch16_rope_reg4_gap_256.sbb_in1k](https://huggingface.co/timm/vit_betwixt_patch16_rope_reg4_gap_256.sbb_in1k)  | 83.906 | 96.684 | 60.23 | 256 |
| [vit_base_patch16_rope_reg1_gap_256.sbb_in1k](https://huggingface.co/timm/vit_base_patch16_rope_reg1_gap_256.sbb_in1k)  | 83.866 | 96.67 | 86.43 | 256 |
| [vit_medium_patch16_rope_reg1_gap_256.sbb_in1k](https://huggingface.co/timm/vit_medium_patch16_rope_reg1_gap_256.sbb_in1k)  | 83.81 | 96.824 | 38.74 | 256 |
| [vit_betwixt_patch16_reg4_gap_256.sbb_in1k](https://huggingface.co/timm/vit_betwixt_patch16_reg4_gap_256.sbb_in1k)  | 83.706 | 96.616 | 60.4 | 256 |
| [vit_betwixt_patch16_reg1_gap_256.sbb_in1k](https://huggingface.co/timm/vit_betwixt_patch16_reg1_gap_256.sbb_in1k)  | 83.628 | 96.544 | 60.4 | 256 |
| [vit_medium_patch16_reg4_gap_256.sbb_in1k](https://huggingface.co/timm/vit_medium_patch16_reg4_gap_256.sbb_in1k)  | 83.47 | 96.622 | 38.88 | 256 |
| [vit_medium_patch16_reg1_gap_256.sbb_in1k](https://huggingface.co/timm/vit_medium_patch16_reg1_gap_256.sbb_in1k)  | 83.462 | 96.548 | 38.88 | 256 |
| [vit_little_patch16_reg4_gap_256.sbb_in1k](https://huggingface.co/timm/vit_little_patch16_reg4_gap_256.sbb_in1k)  | 82.514 | 96.262 | 22.52 | 256 |
| [vit_wee_patch16_reg1_gap_256.sbb_in1k](https://huggingface.co/timm/vit_wee_patch16_reg1_gap_256.sbb_in1k)  | 80.256 | 95.360 | 13.42 | 256 |
| [vit_pwee_patch16_reg1_gap_256.sbb_in1k](https://huggingface.co/timm/vit_pwee_patch16_reg1_gap_256.sbb_in1k)  | 80.072 | 95.136 | 15.25 | 256 |
| [vit_mediumd_patch16_reg4_gap_256.sbb_in12k](https://huggingface.co/timm/vit_mediumd_patch16_reg4_gap_256.sbb_in12k) | N/A | N/A | 64.11 | 256 |
| [vit_betwixt_patch16_reg4_gap_256.sbb_in12k](https://huggingface.co/timm/vit_betwixt_patch16_reg4_gap_256.sbb_in12k)  | N/A | N/A | 60.4 | 256 |

* Вспомогательный класс AttentionExtract добавлен для извлечения карт внимания из моделей `timm`. Пример см. по ссылке https://github.com/huggingface/pytorch-image-models/discussions/1232#discussioncomment-9320949
* API `forward_intermediates()` доработан и добавлен в больше моделей, включая некоторые ConvNets, у которых есть другие методы извлечения.
* 1017 из 1047 архитектур моделей поддерживают извлечение признаков с параметром `features_only=True`. Оставшиеся 34 архитектуры могут быть поддержаны, но в зависимости от приоритетных запросов.
* Удалите функции, аннотированные torch.jit.script, включая старые активации JIT. Они конфликтуют с dynamo, а dynamo выполняет свою работу значительно лучше, когда используется.

### 11 апреля 2024
* В преддверии давно ожидаемого релиза 1.0, всё стабильно уже довольно давно.
* Значительная функция, отсутствовавшая уже давно: поддержка `features_only=True` для моделей ViT с плоскими скрытыми состояниями или нестандартной структурой модулей (пока охватывает  `'vit_*', 'twins_*', 'deit*', 'beit*', 'mvitv2*', 'eva*', 'samvit_*', 'flexivit*'`)
* Поддержка вышеуказанных функций реализована с помощью нового API `forward_intermediates()`, который можно использовать как с модулем-обёрткой для функций, так и напрямую.
```python
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])
```

```python
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])
```
* Добавлены веса визуальной башни TinyCLIP, спасибо [Thien Tran](https://github.com/gau-nernst)

### 19 февраля 2024
* Добавлены модели Next-ViT. Адаптировано из https://github.com/bytedance/Next-ViT
* Добавлены модели HGNet и PP-HGNetV2. Адаптировано из https://github.com/PaddlePaddle/PaddleClas автором [SeeFun](https://github.com/seefun)
* Удален setup.py, сборка перенесена на pyproject.toml с поддержкой PDM
* Добавлена обновленная реализация EMA модели с использованием _for_each для снижения накладных расходов
* Поддержка аргументов устройства в скрипте обучения для устройств, отличных от GPU
* Прочие исправления и небольшие дополнения
* Минимальная поддерживаемая версия Python повышена до 3.8
* Release 0.9.16

### 8 января 2024
Рефакторинг датасетов и трансформаций
* Поддержка стриминговых (итерируемых) датасетов HuggingFace (`--dataset hfids:org/dataset`)
* Настройка обёртки Webdataset для улучшения получения информации о разбиениях; теперь можно автоматически получать разбиения из поддерживаемых webdataset на HF hub
* Протестировано стриминг из HF hub с использованием `datasets` и обёртки webdataset на основе недавних загрузок ImageNet в `timm` на https://huggingface.co/timm
* Сделайте ключи столбцов/полей для входных данных и целевых значений согласованными между наборами данных и передавайте их через аргументы
* Полная поддержка монохромного режима при использовании, например, `--input-size 1 224 224` или `--in-chans 1`, корректно настраивает преобразование изображений PIL в наборе данных
* Улучшены несколько альтернативных трансформаций обрезки и изменения размера (ResizeKeepRatio, RandomCropOrPad и др.) для использования в проекте PixParse document AI
* Добавьте в аугментации и аргументы опцию вероятности цветового джиттера в стиле SimCLR, а также варианты grayscale и гауссова размытия
* Разрешить обучение без валидационной выборки (`--val-split ''`) в скрипте обучения
* Добавлены аргументы `--bce-sum` (суммирование по размерности классов) и `--bce-pos-weight` (взвешивание положительных примеров) для обучения, так как это распространённые настройки функции потерь BCE, которые я часто прописывал вручную

### 23 ноября 2023
* Добавлены модели EfficientViT-Large, спасибо [SeeFun](https://github.com/seefun)
* Исправление совместимости с Python 3.7, поддержка скоро будет прекращена
* Прочие исправления
* Релиз 0.9.12

### 20 ноября 2023
* Добавлена значительная гибкость для моделей timm на основе Hugging Face Hub через пункт конфигурации `model_args`. `model_args` будет передаваться как kwargs в модели при их создании.
  * См. пример по адресу https://huggingface.co/gaunernst/vit_base_patch16_1024_128.audiomae_as2m_ft_as20k/blob/main/config.json
  * Использование: https://github.com/huggingface/pytorch-image-models/discussions/2035
* Обновлены файлы CSV для оценки и тестового набора imagenet с последними моделями
* `vision_transformer.py` исправление типизации и документации от [Laureηt](https://github.com/Laurent2916)
* Релиз 0.9.11

### 3 ноября 2023
* Добавлены веса ViT для [DFN (Data Filtering Networks)](https://huggingface.co/papers/2309.17425) и [MetaCLIP](https://huggingface.co/papers/2309.16671)
* Добавлены веса модели ViT DINOv2 'register' (https://huggingface.co/papers/2309.16588, https://huggingface.co/papers/2304.07193)
* Добавлены варианты ViT с `quickgelu` для весов OpenAI, DFN и MetaCLIP, которые используют его (менее эффективно)
* Улучшенная типизация добавлена в ResNet и MobileNet-v3 благодаря [Aryan](https://github.com/a-r-r-o-w)
* Fine-tuned on ImageNet-12k (из LAION-2B CLIP) `convnext_xxlarge`
* Релиз 0.9.9

### 20 октября 2023
* Веса башни изображений [SigLIP](https://huggingface.co/papers/2303.15343) поддерживаются в `vision_transformer.py`.
  * Огромный потенциал для дообучения и использования в прикладных задачах.
* Экспериментальная поддержка 'register' в моделях vit в соответствии с [Vision Transformers Need Registers](https://huggingface.co/papers/2309.16588)
* Обновлён RepViT с новым выпуском весов. Спасибо [wangao](https://github.com/jameslahm)
* Добавить поддержку изменения размера патчей (при загрузке предобученных весов) в модели Swin
* Ожидается выпуск версии 0.9.8

### 1 сентября 2023
* TinyViT добавлен [SeeFun](https://github.com/seefun)
* Исправить EfficientViT (MIT), чтобы использовать torch.autocast, обеспечив совместимость с версиями PyTorch начиная с 1.10
* Релиз 0.9.7

### 28 августа 2023
* Добавить поддержку динамического размера изображения в моделях в `vision_transformer.py`, `vision_transformer_hybrid.py`, `deit.py` и `eva.py` без нарушения обратной совместимости.
  * Добавьте `dynamic_img_size=True` в аргументы при создании модели, чтобы разрешить изменение размера сетки (интерполяция абсолютных и/или ROPE-позиционных эмбеддингов на каждом проходе).
  * Добавьте `dynamic_img_pad=True`, чтобы разрешить размеры изображений, не кратные размеру патча (в каждом проходе вперед нижний правый угол дополняется до размера патча).
  * Включение любого из динамических режимов нарушит трассировку FX, если модуль PatchEmbed не добавлен как лист.
  * Существующий метод изменения размера позиционного эмбеддинга путём передачи различных значений `img_size` (интерполяция предобученных весов эмбеддинга один раз) при создании по-прежнему работает.
  * Существующий способ изменения `patch_size` (однократное изменение предобученных весов patch_embed при создании) по-прежнему работает.
  * Пример команды валидации `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 августа 2023
* Многие новые модели с момента последнего выпуска
  * FastViT - https://arxiv.org/abs/2303.14189
  * MobileOne - https://arxiv.org/abs/2206.04040
  * InceptionNeXt - https://arxiv.org/abs/2303.16900
  * RepGhostNet - https://arxiv.org/abs/2211.06088 (спасибо https://github.com/ChengpengChen)
  * GhostNetV2 - https://arxiv.org/abs/2211.12905 (спасибо https://github.com/yehuitang)
  * EfficientViT (MSRA) - https://arxiv.org/abs/2305.07027 (спасибо https://github.com/seefun)
  * EfficientViT (MIT) - https://arxiv.org/abs/2205.14756 (спасибо https://github.com/seefun)
* Добавьте аргумент `--reparam` в `benchmark.py`, `onnx_export.py` и `validate.py`, чтобы запустить репараметризацию/слияние слоёв для моделей, имеющих хотя бы один из методов `reparameterize()`, `switch_to_deploy()` или `fuse()`
  * Включая FastViT, MobileOne, RepGhostNet, EfficientViT (MSRA), RepViT, RepVGG и LeViT
* Подготовка релиза 0.9.6 «Возвращение в школу»

### 11 августа 2023
* Модели Swin, MaxViT, CoAtNet и BEiT поддерживают изменение размера изображения/окна при создании с адаптацией предобученных весов
* Пример команды валидации для тестирования с неквадратным изменением размера `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 августа 2023
* Добавлены веса GluonCV для HRNet w18_small и w18_small_v2. Конвертировано пользователем [SeeFun](https://github.com/seefun)
* Исправление регрессии в именовании моделей `selecsls*`
* Patch и position embedding для ViT/EVA работают с весами bfloat16/float16 при загрузке (или с активациями при динамическом изменении размера)
* Подготовка к выпуску v0.9.5

### 27 июля 2023
* Добавлены веса `seresnextaa201d_32x8d.sw_in12k_ft_in1k_384`, обученные с помощью timm (а также предобученные веса `.sw_in12k`), с точностью top-1 87,3% на ImageNet-1k — лучшая модель семейства ResNet для ImageNet, о которой мне известно.
* Модель и веса RepViT (https://arxiv.org/abs/2307.09283), добавленные [wangao](https://github.com/jameslahm)
* Веса признаков I-JEPA ViT (без классификатора), добавленные [SeeFun](https://github.com/seefun)
* Веса функции SAM-ViT (segment anything) (без классификатора), добавленные [SeeFun](https://github.com/seefun)
* Добавить поддержку альтернативных методов извлечения признаков и отрицательных индексов в EfficientNet
* Добавить оптимизатор NAdamW
* Прочие исправления

### 11 мая 2023
* `timm` 0.9 выпущен, переход от релизов 0.8.xdev

### 10 мая 2023
* Загрузка из Hugging Face Hub теперь выполняется по умолчанию, 1132 модели на https://huggingface.co/timm, 1163 наборов весов в `timm`
* Добавлены веса feature backbone для DINOv2 vit, спасибо [Leng Yue](https://github.com/leng-yue)
* Добавлены веса feature backbone для FB MAE vit
* Добавлены веса бэкбона OpenCLIP DataComp-XL L/14
* MetaFormer (poolformer-v2, caformer, convformer, обновлённый poolformer (v1)) с весами, добавленными [Fredo Guan](https://github.com/fffffgggg54)
* Экспериментальная функция `get_intermediate_layers` для моделей vit/deit, позволяющая получать скрытые состояния (вдохновлена реализацией DINO). Это работа в процессе и может существенно измениться... Будем рады обратной связи.
* Создание модели вызывает ошибку, если `pretrained=True` и веса не существуют (вместо продолжения с случайной инициализацией)
* Исправление регрессии с весами TF для inception / nasnet с 1001 классами в исходных классификаторах
* bitsandbytes Оптимизаторы (https://github.com/TimDettmers/bitsandbytes) добавлены в фабрику, используйте префикс `bnb`, например `bnbadam8bit`
* Прочие исправления и улучшения
* Финальное тестирование перед переходом на версию 0.9 и выводом `timm` из состояния предварительного релиза

### 27 апреля 2023
* 97% моделей `timm`, загруженных на HF Hub, и почти все обновлены для поддержки конфигураций предобучения с несколькими весами
* Небольшая очистка и рефакторинг ещё одной партии моделей после добавления multi-weight. Больше поддержки fused_attn (F.sdpa) и features_only, а также исправления для torchscript.

### 21 апреля 2023
* Добавлена поддержка накопления градиентов в скрипт обучения и протестирована (`--grad-accum-steps`), спасибо [Taeksang Kim](https://github.com/voidbag)
* Больше весов на HF Hub (cspnet, cait, volo, xcit, tresnet, hardcorenas, densenet, dpn, vovnet, xception_aligned)
* Добавлены `--head-init-scale` и `--head-init-bias` в train.py для масштабирования головы классификатора и установки фиксированного смещения при дообучении
* Удалено всё использование InplaceABN (`inplace_abn`), его применение в tresnet заменено на стандартный BatchNorm (веса скорректированы соответственно).

### 12 апреля 2023
* Добавлен скрипт экспорта в ONNX, скрипт валидации и вспомогательные функции, которые я давно держал в запасе. Настроена отсечка 'same' для более корректного экспорта с последними версиями ONNX и PyTorch.
* Рефакторинг аргументов dropout для моделей vit и похожих на vit, разделение drop_rate на `drop_rate` (dropout классификатора), `proj_drop_rate` (проекции mlp / out в блоках), `pos_drop_rate` (dropout позиционных эмбеддингов), `attn_drop_rate` (dropout внимания). Также добавлен patch dropout (FLIP) в модели vit и eva.
* Добавлена поддержка fused F.scaled_dot_product_attention для большего числа моделей vit, добавлена переменная окружения (TIMM_FUSED_ATTN) для управления, а также интерфейс конфигурации для включения/отключения
* Добавлены бэкбоны EVA-CLIP с весами башни изображений, вплоть до «огромной» модели на 4 млрд параметров, а также пропущенный режим OpenAI ViT с разрешением 336x336.

### 5 апреля 2023
* Все модели ResNet, загруженные в Hugging Face Hub с поддержкой нескольких весов
  * Все ранее обученные веса `timm`, добавленные с тегами на основе рецептов для различения
  * Все ResNet бьют в ответ A1/A2/A3 (seed 0) и веса примера R50 B/C1/C2/D доступны
  * Добавить веса рецепта torchvision v2 к существующим оригинальным весам torchvision
  * См. таблицу сравнения по адресу https://huggingface.co/timm/seresnextaa101d_32x8d.sw_in12k_ft_in1k_288#model-comparison
* Доступны новые дообучения ImageNet-12k + ImageNet-1k для нескольких моделей ResNet с антиалиасингом
  * `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 марта 2023
* Добавлены первый ConvNext-XXLarge CLIP -> IN-1k fine-tune и промежуточные IN-12k fine-tunes для моделей convnext-base/large CLIP.

| модель                                                                                                                |top1  |top5  |img_size|param_count|gmacs |macts |
|----------------------------------------------------------------------------------------------------------------------|------|------|--------|-----------|------|------|
| [convnext_xxlarge.clip_laion2b_soup_ft_in1k](https://huggingface.co/timm/convnext_xxlarge.clip_laion2b_soup_ft_in1k) |88.612|98.704|256     |846.47     |198.09|124.45|
| convnext_large_mlp.clip_laion2b_soup_ft_in12k_in1k_384                                                               |88.312|98.578|384     |200.13     |101.11|126.74|
| convnext_large_mlp.clip_laion2b_soup_ft_in12k_in1k_320                                                               |87.968|98.47 |320     |200.13     |70.21 |88.02 |
| convnext_base.clip_laion2b_augreg_ft_in12k_in1k_384                                                                  |87.138|98.212|384     |88.59      |45.21 |84.49 |
| convnext_base.clip_laion2b_augreg_ft_in12k_in1k                                                                      |86.344|97.97 |256     |88.59      |20.09 |37.55 |

* Добавлены предобученные и дообученные веса EVA-02 MIM, загружены в HF hub и обновлены карточки моделей для всех моделей EVA. Первая модель с top-1 выше 90% (top-5 — 99%)! Исходный код и веса доступны по адресу https://github.com/baaivision/EVA, там же можно узнать больше об их работе по сочетанию MIM и CLIP с множеством доработок моделей, датасетов и рецептов обучения.

| модель                                              |top1  |top5  |param_count|img_size|
|----------------------------------------------------|------|------|-----------|--------|
| [eva02_large_patch14_448.mim_m38m_ft_in22k_in1k](https://huggingface.co/timm/eva02_large_patch14_448.mim_m38m_ft_in1k) |90.054|99.042|305.08     |448     |
| eva02_large_patch14_448.mim_in22k_ft_in22k_in1k    |89.946|99.01 |305.08     |448     |
| eva_giant_patch14_560.m30m_ft_in22k_in1k           |89.792|98.992|1014.45    |560     |
| eva02_large_patch14_448.mim_in22k_ft_in1k          |89.626|98.954|305.08     |448     |
| eva02_large_patch14_448.mim_m38m_ft_in1k           |89.57 |98.918|305.08     |448     |
| eva_giant_patch14_336.m30m_ft_in22k_in1k           |89.56 |98.956|1013.01    |336     |
| eva_giant_patch14_336.clip_ft_in1k                 |89.466|98.82 |1013.01    |336     |
| eva_large_patch14_336.in22k_ft_in22k_in1k          |89.214|98.854|304.53     |336     |
| eva_giant_patch14_224.clip_ft_in1k                 |88.882|98.678|1012.56    |224     |
| eva02_base_patch14_448.mim_in22k_ft_in22k_in1k     |88.692|98.722|87.12      |448     |
| eva_large_patch14_336.in22k_ft_in1k                |88.652|98.722|304.53     |336     |
| eva_large_patch14_196.in22k_ft_in22k_in1k          |88.592|98.656|304.14     |196     |
| eva02_base_patch14_448.mim_in22k_ft_in1k           |88.23 |98.564|87.12      |448     |
| eva_large_patch14_196.in22k_ft_in1k                |87.934|98.504|304.14     |196     |
| eva02_small_patch14_336.mim_in22k_ft_in1k          |85.74 |97.614|22.13      |336     |
| eva02_tiny_patch14_336.mim_in22k_ft_in1k           |80.658|95.524|5.76       |336     |

* Модели на базе DeiT и MLP-Mixer с несколькими весами и HF hub

### 22 марта 2023
* Дополнительные веса загружены на HF hub вместе с поддержкой нескольких весов, в том числе: `regnet.py`, `rexnet.py`, `byobnet.py`, `resnetv2.py`, `swin_transformer.py`, `swin_transformer_v2.py`, `swin_transformer_v2_cr.py`
* Модели Swin Transformer поддерживают извлечение признаков (карты признаков в формате NCHW для `swinv2_cr_*` и в формате NHWC для всех остальных) и вывод пространственных эмбеддингов.
* FocalNet модели и веса (из https://github.com/microsoft/FocalNet) добавлены с существенной переработкой кода, поддержкой извлечения признаков, без ограничений на фиксированное разрешение / размер
* Веса RegNet были расширены за счёт загрузки на HF hub, а также весов SWAG, SEER и torchvision v2. SEER демонстрирует довольно низкую производительность относительно размера модели, но может оказаться полезным.
* Больше предобученных на ImageNet-12k и дообученных на 1k весов `timm`:
  * `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  (по сравнению с SWAG PT + 1k FT это тот же результат, но при значительно более низком разрешении, что полностью превосходит SEER FT)
* Добавлена функциональность устаревания и переназначения имён моделей (этап для вывода версии 0.8.x из предварительного релиза). Переназначения добавляются...
* Небольшие исправления ошибок и улучшения.

### 26 февраля 2023
* Добавлены веса предобученной башни изображений ConvNeXt-XXLarge CLIP для дообучения и извлечения признаков (дообучение TBD) -- см. [карточку модели](https://huggingface.co/laion/CLIP-convnext_xxlarge-laion2B-s34B-b82K-augreg-soup)
* Обновление значения eps по умолчанию для LayerNorm в `convnext_xxlarge` до 1e-5 (для весов CLIP, улучшенная стабильность)
* 0.8.15dev0

### 20 февраля 2023
* Добавлены веса башни изображений CLIP `convnext_large_mlp.clip_laion2b_ft_320` и `convnext_large_mlp.clip_laion2b_ft_soup_320` размером 320x320 для извлечения признаков и дообучения
* 0.8.13dev0 pypi release для последних изменений с переходом в организацию huggingface

### 16 февраля 2023
* Добавлена поддержка контрольных точек `safetensor`
* Добавить идеи из статьи «Scaling Vision Transformers to 22 B. Params» (https://arxiv.org/abs/2302.05442) — qk norm, RmsNorm, параллельный блок
* Add F.scaled_dot_product_attention support (PyTorch 2.0 only) to `vit_*`, `vit_relpos*`, `coatnet` / `maxxvit` (to start)
* Добавлен оптимизатор Lion (с опцией multi-tensor) (https://arxiv.org/abs/2302.06675)
* gradient checkpointing работает с `features_only=True`

### 7 февраля 2023
* В папке [results](results/) добавлены новые результаты бенчмарков инференса.
* Добавлены веса модели convnext LAION CLIP и начальный набор дообучений на 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
* Добавлены модели DaViT. Поддерживается `features_only=True`. Адаптировано с https://github.com/dingmyu/davit пользователем [Fredo](https://github.com/fffffgggg54).
* Используйте общий NormMlpClassifierHead для MaxViT, ConvNeXt, DaViT
* Добавлена модель EfficientFormer-V2, обновлена EfficientFormer, а также рефакторизована LeViT (тесно связанные архитектуры). Веса доступны на HF hub.
  * Новая архитектура EfficientFormer-V2, существенно переработанная по сравнению с оригинальной в (https://github.com/snap-research/EfficientFormer). Поддерживает `features_only=True`.
  * Небольшие обновления EfficientFormer.
  * Рефакторинг моделей LeViT до стадий, добавление поддержки `features_only=True` в новые варианты `conv`, требуется переназначение весов.
* Переместите метаданные ImageNet (синсеты, индексы) из `/results` в [`timm/data/_info`](timm/data/_info/).
* Добавить классы ImageNetInfo / DatasetInfo для предоставления разметки различных раскладок классификаторов ImageNet в `timm`
  * Обновите `inference.py`, чтобы использовать, попробуйте: `python inference.py --data-dir /folder/to/images --model convnext_small.in12k --label-type detail --topk 5`
* Готово к предварительному выпуску 0.8.10 на pypi (финальное тестирование).

### 20 января 2023
* Добавлены два дообучения convnext 12k -> 1k с разрешением 384x384
  * `convnext_tiny.in12k_ft_in1k_384` - 85.1 @ 384
  * `convnext_small.in12k_ft_in1k_384` - 86.2 @ 384

* Загрузите все веса MaxxViT на HF hub и добавьте новые дообучения ImageNet-12k -> 1k для базовых моделей MaxViT и CoAtNet 1/2 `rw`

|модель                                                                                                                   |top1 |top5 |образцов / сек  |Параметры (млн)     |GMAC  |Действие (M)|
|------------------------------------------------------------------------------------------------------------------------|----:|----:|--------------:|--------------:|-----:|------:|
|[maxvit_xlarge_tf_512.in21k_ft_in1k](https://huggingface.co/timm/maxvit_xlarge_tf_512.in21k_ft_in1k)                    |88.53|98.64|          21.76|         475.77|534.14|1413.22|
|[maxvit_xlarge_tf_384.in21k_ft_in1k](https://huggingface.co/timm/maxvit_xlarge_tf_384.in21k_ft_in1k)                    |88.32|98.54|          42.53|         475.32|292.78| 668.76|
|[maxvit_base_tf_512.in21k_ft_in1k](https://huggingface.co/timm/maxvit_base_tf_512.in21k_ft_in1k)                        |88.20|98.53|          50.87|         119.88|138.02| 703.99|
|[maxvit_large_tf_512.in21k_ft_in1k](https://huggingface.co/timm/maxvit_large_tf_512.in21k_ft_in1k)                      |88.04|98.40|          36.42|         212.33|244.75| 942.15|
|[maxvit_large_tf_384.in21k_ft_in1k](https://huggingface.co/timm/maxvit_large_tf_384.in21k_ft_in1k)                      |87.98|98.56|          71.75|         212.03|132.55| 445.84|
|[maxvit_base_tf_384.in21k_ft_in1k](https://huggingface.co/timm/maxvit_base_tf_384.in21k_ft_in1k)                        |87.92|98.54|         104.71|         119.65| 73.80| 332.90|
|[maxvit_rmlp_base_rw_384.sw_in12k_ft_in1k](https://huggingface.co/timm/maxvit_rmlp_base_rw_384.sw_in12k_ft_in1k)        |87.81|98.37|         106.55|         116.14| 70.97| 318.95|
|[maxxvitv2_rmlp_base_rw_384.sw_in12k_ft_in1k](https://huggingface.co/timm/maxxvitv2_rmlp_base_rw_384.sw_in12k_ft_in1k)  |87.47|98.37|         149.49|         116.09| 72.98| 213.74|
|[coatnet_rmlp_2_rw_384.sw_in12k_ft_in1k](https://huggingface.co/timm/coatnet_rmlp_2_rw_384.sw_in12k_ft_in1k)            |87.39|98.31|         160.80|          73.88| 47.69| 209.43|
|[maxvit_rmlp_base_rw_224.sw_in12k_ft_in1k](https://huggingface.co/timm/maxvit_rmlp_base_rw_224.sw_in12k_ft_in1k)        |86.89|98.02|         375.86|         116.14| 23.15|  92.64|
|[maxxvitv2_rmlp_base_rw_224.sw_in12k_ft_in1k](https://huggingface.co/timm/maxxvitv2_rmlp_base_rw_224.sw_in12k_ft_in1k)  |86.64|98.02|         501.03|         116.09| 24.20|  62.77|
|[maxvit_base_tf_512.in1k](https://huggingface.co/timm/maxvit_base_tf_512.in1k)                                          |86.60|97.92|          50.75|         119.88|138.02| 703.99|
|[coatnet_2_rw_224.sw_in12k_ft_in1k](https://huggingface.co/timm/coatnet_2_rw_224.sw_in12k_ft_in1k)                      |86.57|97.89|         631.88|          73.87| 15.09|  49.22|
|[maxvit_large_tf_512.in1k](https://huggingface.co/timm/maxvit_large_tf_512.in1k)                                        |86.52|97.88|          36.04|         212.33|244.75| 942.15|
|[coatnet_rmlp_2_rw_224.sw_in12k_ft_in1k](https://huggingface.co/timm/coatnet_rmlp_2_rw_224.sw_in12k_ft_in1k)            |86.49|97.90|         620.58|          73.88| 15.18|  54.78|
|[maxvit_base_tf_384.in1k](https://huggingface.co/timm/maxvit_base_tf_384.in1k)                                          |86.29|97.80|         101.09|         119.65| 73.80| 332.90|
|[maxvit_large_tf_384.in1k](https://huggingface.co/timm/maxvit_large_tf_384.in1k)                                        |86.23|97.69|          70.56|         212.03|132.55| 445.84|
|[maxvit_small_tf_512.in1k](https://huggingface.co/timm/maxvit_small_tf_512.in1k)                                        |86.10|97.76|          88.63|          69.13| 67.26| 383.77|
|[maxvit_tiny_tf_512.in1k](https://huggingface.co/timm/maxvit_tiny_tf_512.in1k)                                          |85.67|97.58|         144.25|          31.05| 33.49| 257.59|
|[maxvit_small_tf_384.in1k](https://huggingface.co/timm/maxvit_small_tf_384.in1k)                                        |85.54|97.46|         188.35|          69.02| 35.87| 183.65|
|[maxvit_tiny_tf_384.in1k](https://huggingface.co/timm/maxvit_tiny_tf_384.in1k)                                          |85.11|97.38|         293.46|          30.98| 17.53| 123.42|
|[maxvit_large_tf_224.in1k](https://huggingface.co/timm/maxvit_large_tf_224.in1k)                                        |84.93|96.97|         247.71|         211.79| 43.68| 127.35|
|[coatnet_rmlp_1_rw2_224.sw_in12k_ft_in1k](https://huggingface.co/timm/coatnet_rmlp_1_rw2_224.sw_in12k_ft_in1k)          |84.90|96.96|        1025.45|          41.72|  8.11|  40.13|
|[maxvit_base_tf_224.in1k](https://huggingface.co/timm/maxvit_base_tf_224.in1k)                                          |84.85|96.99|         358.25|         119.47| 24.04|  95.01|
|[maxxvit_rmlp_small_rw_256.sw_in1k](https://huggingface.co/timm/maxxvit_rmlp_small_rw_256.sw_in1k)                      |84.63|97.06|         575.53|          66.01| 14.67|  58.38|
|[coatnet_rmlp_2_rw_224.sw_in1k](https://huggingface.co/timm/coatnet_rmlp_2_rw_224.sw_in1k)                              |84.61|96.74|         625.81|          73.88| 15.18|  54.78|
|[maxvit_rmlp_small_rw_224.sw_in1k](https://huggingface.co/timm/maxvit_rmlp_small_rw_224.sw_in1k)                        |84.49|96.76|         693.82|          64.90| 10.75|  49.30|
|[maxvit_small_tf_224.in1k](https://huggingface.co/timm/maxvit_small_tf_224.in1k)                                        |84.43|96.83|         647.96|          68.93| 11.66|  53.17|
|[maxvit_rmlp_tiny_rw_256.sw_in1k](https://huggingface.co/timm/maxvit_rmlp_tiny_rw_256.sw_in1k)                          |84.23|96.78|         807.21|          29.15|  6.77|  46.92|
|[coatnet_1_rw_224.sw_in1k](https://huggingface.co/timm/coatnet_1_rw_224.sw_in1k)                                        |83.62|96.38|         989.59|          41.72|  8.04|  34.60|
|[maxvit_tiny_rw_224.sw_in1k](https://huggingface.co/timm/maxvit_tiny_rw_224.sw_in1k)                                    |83.50|96.50|        1100.53|          29.06|  5.11|  33.11|
|[maxvit_tiny_tf_224.in1k](https://huggingface.co/timm/maxvit_tiny_tf_224.in1k)                                          |83.41|96.59|        1004.94|          30.92|  5.60|  35.78|
|[coatnet_rmlp_1_rw_224.sw_in1k](https://huggingface.co/timm/coatnet_rmlp_1_rw_224.sw_in1k)                              |83.36|96.45|        1093.03|          41.69|  7.85|  35.47|
|[maxxvitv2_nano_rw_256.sw_in1k](https://huggingface.co/timm/maxxvitv2_nano_rw_256.sw_in1k)                              |83.11|96.33|        1276.88|          23.70|  6.26|  23.05|
|[maxxvit_rmlp_nano_rw_256.sw_in1k](https://huggingface.co/timm/maxxvit_rmlp_nano_rw_256.sw_in1k)                        |83.03|96.34|        1341.24|          16.78|  4.37|  26.05|
|[maxvit_rmlp_nano_rw_256.sw_in1k](https://huggingface.co/timm/maxvit_rmlp_nano_rw_256.sw_in1k)                          |82.96|96.26|        1283.24|          15.50|  4.47|  31.92|
|[maxvit_nano_rw_256.sw_in1k](https://huggingface.co/timm/maxvit_nano_rw_256.sw_in1k)                                    |82.93|96.23|        1218.17|          15.45|  4.46|  30.28|
|[coatnet_bn_0_rw_224.sw_in1k](https://huggingface.co/timm/coatnet_bn_0_rw_224.sw_in1k)                                  |82.39|96.19|        1600.14|          27.44|  4.67|  22.04|
|[coatnet_0_rw_224.sw_in1k](https://huggingface.co/timm/coatnet_0_rw_224.sw_in1k)                                        |82.39|95.84|        1831.21|          27.44|  4.43|  18.73|
|[coatnet_rmlp_nano_rw_224.sw_in1k](https://huggingface.co/timm/coatnet_rmlp_nano_rw_224.sw_in1k)                        |82.05|95.87|        2109.09|          15.15|  2.62|  20.34|
|[coatnext_nano_rw_224.sw_in1k](https://huggingface.co/timm/coatnext_nano_rw_224.sw_in1k)                                |81.95|95.92|        2525.52|          14.70|  2.47|  12.80|
|[coatnet_nano_rw_224.sw_in1k](https://huggingface.co/timm/coatnet_nano_rw_224.sw_in1k)                                  |81.70|95.64|        2344.52|          15.14|  2.41|  15.41|
|[maxvit_rmlp_pico_rw_256.sw_in1k](https://huggingface.co/timm/maxvit_rmlp_pico_rw_256.sw_in1k)                          |80.53|95.21|        1594.71|           7.52|  1.85|  24.86|

### 11 января 2023
* Обновление серии предобученных моделей ConvNeXt ImageNet-12k: добавлены два новых набора весов после дообучения (а также теги `.in12k` до дообучения)
  * `convnext_nano.in12k_ft_in1k` — 82,3 @ 224, 82,9 @ 288 (выпущено ранее)
  * `convnext_tiny.in12k_ft_in1k` - 84.2 @ 224, 84.5 @ 288
  * `convnext_small.in12k_ft_in1k` - 85.2 @ 224, 85.3 @ 288

### 6 января 2023
* Наконец-то добавил `--model-kwargs` и `--opt-kwargs` в скрипты, чтобы передавать редкие аргументы напрямую в классы моделей из командной строки
  * `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`
* Убраны некоторые популярные модели для лучшей поддержки передачи аргументов / слияния с конфигурациями моделей, впереди ещё много работы.

### 5 января 2023
* Модели и веса ConvNeXt-V2 добавлены в существующий `convnext.py`
  * Статья: [ConvNeXt V2: Совместный дизайн и масштабирование свёрточных нейросетей с использованием маскированных автоэнкодеров](http://arxiv.org/abs/2301.00808)
  * Референсная реализация: https://github.com/facebookresearch/ConvNeXt-V2 (ПРИМЕЧАНИЕ: веса в настоящее время распространяются по лицензии CC-BY-NC)
@c0
### 23 декабря 2022 г. 🎄☃
* Добавьте модели и веса FlexiViT из https://github.com/google-research/big_vision (ознакомьтесь со статьёй по адресу https://arxiv.org/abs/2212.08013)
  * NOTE в настоящее время изменение размера выполняется статически при создании модели, динамическое изменение размера на лету / выбор размера патча во время обучения находится в стадии разработки
* Сейчас значительно больше моделей обновлено до мульти-веса и доступно для загрузки через HF hub (convnext, efficientnet, mobilenet, vision_transformer*, beit)
* Добавлены теги предобученных моделей и внесены корректировки, некоторые имена моделей изменены (работа над переводами для устаревших элементов продолжается, на данный момент используйте ветку DEV, для стабильного использования — 0.6.x)
* Появляется всё больше предобученных моделей на ImageNet-12k (подмножество из 22k):
  * `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 декабря 2022 г.
* Добавьте 'EVA l' в `vision_transformer.py`, предобучение ViT-L/14 в стиле MAE с MIM и целями EVA-CLIP, дообучение на ImageNet-1k (с промежуточным этапом на ImageNet-22k для некоторых моделей)
  * исходный источник: https://github.com/baaivision/EVA

| модель                                     | top1 | param_count |  gmac | macts | hub                                     |
|:------------------------------------------|-----:|------------:|------:|------:|:----------------------------------------|
| eva_large_patch14_336.in22k_ft_in22k_in1k | 89.2 |       304.5 | 191.1 | 270.2 | [ссылка](https://huggingface.co/BAAI/EVA) |
| eva_large_patch14_336.in22k_ft_in1k       | 88.7 |       304.5 | 191.1 | 270.2 | [ссылка](https://huggingface.co/BAAI/EVA) |
| eva_large_patch14_196.in22k_ft_in22k_in1k | 88.6 |       304.1 |  61.6 |  63.5 | [ссылка](https://huggingface.co/BAAI/EVA) |
| eva_large_patch14_196.in22k_ft_in1k       | 87.9 |       304.1 |  61.6 |  63.5 | [ссылка](https://huggingface.co/BAAI/EVA) |

### 6 декабря 2022 г.
* Добавлены веса модели ViT-g/14 в стиле BEiT 'EVA g' с предобучением MIM и CLIP в `beit.py`.
  * исходный источник: https://github.com/baaivision/EVA
  * статья: https://arxiv.org/abs/2211.07636

| модель                                    |   top1 |   param_count |   gmac |   macts | hub                                     |
|:-----------------------------------------|-------:|--------------:|-------:|--------:|:----------------------------------------|
| eva_giant_patch14_560.m30m_ft_in22k_in1k |   89.8 |        1014.4 | 1906.8 |  2577.2 | [ссылка](https://huggingface.co/BAAI/EVA) |
| eva_giant_patch14_336.m30m_ft_in22k_in1k |   89.6 |        1013   |  620.6 |   550.7 | [ссылка](https://huggingface.co/BAAI/EVA) |
| eva_giant_patch14_336.clip_ft_in1k       |   89.4 |        1013   |  620.6 |   550.7 | [ссылка](https://huggingface.co/BAAI/EVA) |
| eva_giant_patch14_224.clip_ft_in1k       |   89.1 |        1012.6 |  267.2 |   192.6 | [ссылка](https://huggingface.co/BAAI/EVA) |

### 5 декабря 2022 г.

* Предварительная версия (`0.8.0dev0`) с поддержкой нескольких весов (`model_arch.pretrained_tag`). Установите с помощью `pip install --pre timm`
  * vision_transformer, maxvit, convnext — это первые три реализации моделей с поддержкой
  * Имена моделей меняются вместе с этим (предыдущие _21k и т. д. будут объединены), всё ещё разбираюсь с обработкой устаревания
  * вероятно, в нём есть ошибки, но мне нужна обратная связь, поэтому, пожалуйста, попробуйте
  * если нужна стабильность, используйте релизы 0.6.x с pypi или клонируйте из [ветки 0.6.x](https://github.com/rwightman/pytorch-image-models/tree/0.6.x)
* Поддержка PyTorch 2.0 compile добавлена в train/validate/inference/benchmark, используйте аргумент `--torchcompile`
* Скрипт инференса позволяет более гибко управлять выводом: выберите k для индекса и вероятности верхнего класса, а также формат вывода — json, csv или parquet
* Добавлен полный набор весов башни изображений CLIP, дообученных на моделях LAION-2B и исходных моделях OpenAI CLIP

| модель                                            |   top1 |   param_count |   gmac |   macts | hub                                                                                  |
|:-------------------------------------------------|-------:|--------------:|-------:|--------:|:-------------------------------------------------------------------------------------|
| vit_huge_patch14_clip_336.laion2b_ft_in12k_in1k  |   88.6 |         632.5 |  391   |   407.5 | [ссылка](https://huggingface.co/timm/vit_huge_patch14_clip_336.laion2b_ft_in12k_in1k)  |
| vit_large_patch14_clip_336.openai_ft_in12k_in1k  |   88.3 |         304.5 |  191.1 |   270.2 | [ссылка](https://huggingface.co/timm/vit_large_patch14_clip_336.openai_ft_in12k_in1k)  |
| vit_huge_patch14_clip_224.laion2b_ft_in12k_in1k  |   88.2 |         632   |  167.4 |   139.4 | [ссылка](https://huggingface.co/timm/vit_huge_patch14_clip_224.laion2b_ft_in12k_in1k)  |
| vit_large_patch14_clip_336.laion2b_ft_in12k_in1k |   88.2 |         304.5 |  191.1 |   270.2 | [ссылка](https://huggingface.co/timm/vit_large_patch14_clip_336.laion2b_ft_in12k_in1k) |
| vit_large_patch14_clip_224.openai_ft_in12k_in1k  |   88.2 |         304.2 |   81.1 |    88.8 | [ссылка](https://huggingface.co/timm/vit_large_patch14_clip_224.openai_ft_in12k_in1k)  |
| vit_large_patch14_clip_224.laion2b_ft_in12k_in1k |   87.9 |         304.2 |   81.1 |    88.8 | [ссылка](https://huggingface.co/timm/vit_large_patch14_clip_224.laion2b_ft_in12k_in1k) |
| vit_large_patch14_clip_224.openai_ft_in1k        |   87.9 |         304.2 |   81.1 |    88.8 | [ссылка](https://huggingface.co/timm/vit_large_patch14_clip_224.openai_ft_in1k)        |
| vit_large_patch14_clip_336.laion2b_ft_in1k       |   87.9 |         304.5 |  191.1 |   270.2 | [ссылка](https://huggingface.co/timm/vit_large_patch14_clip_336.laion2b_ft_in1k)       |
| vit_huge_patch14_clip_224.laion2b_ft_in1k        |   87.6 |         632   |  167.4 |   139.4 | [ссылка](https://huggingface.co/timm/vit_huge_patch14_clip_224.laion2b_ft_in1k)        |
| vit_large_patch14_clip_224.laion2b_ft_in1k       |   87.3 |         304.2 |   81.1 |    88.8 | [ссылка](https://huggingface.co/timm/vit_large_patch14_clip_224.laion2b_ft_in1k)       |
| vit_base_patch16_clip_384.laion2b_ft_in12k_in1k  |   87.2 |          86.9 |   55.5 |   101.6 | [ссылка](https://huggingface.co/timm/vit_base_patch16_clip_384.laion2b_ft_in12k_in1k)  |
| vit_base_patch16_clip_384.openai_ft_in12k_in1k   |   87   |          86.9 |   55.5 |   101.6 | [ссылка](https://huggingface.co/timm/vit_base_patch16_clip_384.openai_ft_in12k_in1k)   |
| vit_base_patch16_clip_384.laion2b_ft_in1k        |   86.6 |          86.9 |   55.5 |   101.6 | [ссылка](https://huggingface.co/timm/vit_base_patch16_clip_384.laion2b_ft_in1k)        |
| vit_base_patch16_clip_384.openai_ft_in1k         |   86.2 |          86.9 |   55.5 |   101.6 | [ссылка](https://huggingface.co/timm/vit_base_patch16_clip_384.openai_ft_in1k)         |
| vit_base_patch16_clip_224.laion2b_ft_in12k_in1k  |   86.2 |          86.6 |   17.6 |    23.9 | [ссылка](https://huggingface.co/timm/vit_base_patch16_clip_224.laion2b_ft_in12k_in1k)  |
| vit_base_patch16_clip_224.openai_ft_in12k_in1k   |   85.9 |          86.6 |   17.6 |    23.9 | [ссылка](https://huggingface.co/timm/vit_base_patch16_clip_224.openai_ft_in12k_in1k)   |
| vit_base_patch32_clip_448.laion2b_ft_in12k_in1k  |   85.8 |          88.3 |   17.9 |    23.9 | [ссылка](https://huggingface.co/timm/vit_base_patch32_clip_448.laion2b_ft_in12k_in1k)  |
| vit_base_patch16_clip_224.laion2b_ft_in1k        |   85.5 |          86.6 |   17.6 |    23.9 | [ссылка](https://huggingface.co/timm/vit_base_patch16_clip_224.laion2b_ft_in1k)        |
| vit_base_patch32_clip_384.laion2b_ft_in12k_in1k  |   85.4 |          88.3 |   13.1 |    16.5 | [ссылка](https://huggingface.co/timm/vit_base_patch32_clip_384.laion2b_ft_in12k_in1k)  |
| vit_base_patch16_clip_224.openai_ft_in1k         |   85.3 |          86.6 |   17.6 |    23.9 | [ссылка](https://huggingface.co/timm/vit_base_patch16_clip_224.openai_ft_in1k)         |
| vit_base_patch32_clip_384.openai_ft_in12k_in1k   |   85.2 |          88.3 |   13.1 |    16.5 | [ссылка](https://huggingface.co/timm/vit_base_patch32_clip_384.openai_ft_in12k_in1k)   |
| vit_base_patch32_clip_224.laion2b_ft_in12k_in1k  |   83.3 |          88.2 |    4.4 |     5   | [ссылка](https://huggingface.co/timm/vit_base_patch32_clip_224.laion2b_ft_in12k_in1k)  |
| vit_base_patch32_clip_224.laion2b_ft_in1k        |   82.6 |          88.2 |    4.4 |     5   | [ссылка](https://huggingface.co/timm/vit_base_patch32_clip_224.laion2b_ft_in1k)        |
| vit_base_patch32_clip_224.openai_ft_in1k         |   81.9 |          88.2 |    4.4 |     5   | [ссылка](https://huggingface.co/timm/vit_base_patch32_clip_224.openai_ft_in1k)         |

* Порт весов MaxViT из Tensorflow из официального репозитория по адресу https://github.com/google-research/maxvit
  * Наблюдались более значительные, чем ожидалось, падения метрик для увеличенных до 384/512 весов fine-tune на in21k, возможно, из-за потери деталей, однако fine-tune на 21k действительно оказался чувствительным к незначительным изменениям в предобработке

| модель                              |   top1 |   param_count |   gmac |   macts | hub                                                                    |
|:-----------------------------------|-------:|--------------:|-------:|--------:|:-----------------------------------------------------------------------|
| maxvit_xlarge_tf_512.in21k_ft_in1k |   88.5 |         475.8 |  534.1 |  1413.2 | [ссылка](https://huggingface.co/timm/maxvit_xlarge_tf_512.in21k_ft_in1k) |
| maxvit_xlarge_tf_384.in21k_ft_in1k |   88.3 |         475.3 |  292.8 |   668.8 | [ссылка](https://huggingface.co/timm/maxvit_xlarge_tf_384.in21k_ft_in1k) |
| maxvit_base_tf_512.in21k_ft_in1k   |   88.2 |         119.9 |  138   |   704   | [ссылка](https://huggingface.co/timm/maxvit_base_tf_512.in21k_ft_in1k)   |
| maxvit_large_tf_512.in21k_ft_in1k  |   88   |         212.3 |  244.8 |   942.2 | [ссылка](https://huggingface.co/timm/maxvit_large_tf_512.in21k_ft_in1k)  |
| maxvit_large_tf_384.in21k_ft_in1k  |   88   |         212   |  132.6 |   445.8 | [ссылка](https://huggingface.co/timm/maxvit_large_tf_384.in21k_ft_in1k)  |
| maxvit_base_tf_384.in21k_ft_in1k   |   87.9 |         119.6 |   73.8 |   332.9 | [ссылка](https://huggingface.co/timm/maxvit_base_tf_384.in21k_ft_in1k)   |
| maxvit_base_tf_512.in1k            |   86.6 |         119.9 |  138   |   704   | [ссылка](https://huggingface.co/timm/maxvit_base_tf_512.in1k)            |
| maxvit_large_tf_512.in1k           |   86.5 |         212.3 |  244.8 |   942.2 | [ссылка](https://huggingface.co/timm/maxvit_large_tf_512.in1k)           |
| maxvit_base_tf_384.in1k            |   86.3 |         119.6 |   73.8 |   332.9 | [ссылка](https://huggingface.co/timm/maxvit_base_tf_384.in1k)            |
| maxvit_large_tf_384.in1k           |   86.2 |         212   |  132.6 |   445.8 | [ссылка](https://huggingface.co/timm/maxvit_large_tf_384.in1k)           |
| maxvit_small_tf_512.in1k           |   86.1 |          69.1 |   67.3 |   383.8 | [ссылка](https://huggingface.co/timm/maxvit_small_tf_512.in1k)           |
| maxvit_tiny_tf_512.in1k            |   85.7 |          31   |   33.5 |   257.6 | [ссылка](https://huggingface.co/timm/maxvit_tiny_tf_512.in1k)            |
| maxvit_small_tf_384.in1k           |   85.5 |          69   |   35.9 |   183.6 | [ссылка](https://huggingface.co/timm/maxvit_small_tf_384.in1k)           |
| maxvit_tiny_tf_384.in1k            |   85.1 |          31   |   17.5 |   123.4 | [ссылка](https://huggingface.co/timm/maxvit_tiny_tf_384.in1k)            |
| maxvit_large_tf_224.in1k           |   84.9 |         211.8 |   43.7 |   127.4 | [ссылка](https://huggingface.co/timm/maxvit_large_tf_224.in1k)           |
| maxvit_base_tf_224.in1k            |   84.9 |         119.5 |   24   |    95   | [ссылка](https://huggingface.co/timm/maxvit_base_tf_224.in1k)            |
| maxvit_small_tf_224.in1k           |   84.4 |          68.9 |   11.7 |    53.2 | [ссылка](https://huggingface.co/timm/maxvit_small_tf_224.in1k)           |
| maxvit_tiny_tf_224.in1k            |   83.4 |          30.9 |    5.6 |    35.8 | [ссылка](https://huggingface.co/timm/maxvit_tiny_tf_224.in1k)            |

### 15 октября 2022
* Улучшения скриптов обучения и валидации
* Поддержка устройств, не являющихся GPU (то есть CPU)
* Совместимость со SLURM для скрипта обучения
* Поддержка датасетов HF (через ReaderHfds)
* Улучшения загрузки данных в TFDS/WDS (исправлена проблема с оценкой количества образцов при выравнивании/повторном использовании образцов для распределённого использования)
* поддержка in_chans !=3 в скриптах / загрузчике
* Оптимизатор Adan
* Можно включить пошаговое планирование LR через аргументы
* Датасет 'parsers' переименован в 'readers', что более точно отражает его назначение
* Аргументы AMP изменены, APEX через `--amp-impl apex`, поддержка bfloat16 через `--amp-dtype bfloat16`
* ветка main переключена на версию 0.7.x, 0.6x выделена в отдельную ветку для стабильного релиза weight only adds
* переименование ветки master -> main

### 10 октября 2022
* Больше весов в серии `maxxvit`, включая эксперименты `coatnext` и `maxxvit` на основе первого блока ConvNeXt:
  * `coatnext_nano_rw_224` - 82.0 @ 224 (G) -- (использует блок свёрток ConvNeXt, без BatchNorm)
  * `maxxvit_rmlp_nano_rw_256` - 83.0 @ 256, 83.7 @ 320 (G) (использует блок свёрток ConvNeXt, без 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) -- можно обучить лучше, гиперпараметры требуют настройки (использует блок ConvNeXt, без BN)
  * `coatnet_rmlp_2_rw_224` - 84.6 @ 224, 85 @ 320  (T)
  * NOTE: официальные веса MaxVit (in1k) были опубликованы по адресу https://github.com/google-research/maxvit -- для переноса и адаптации потребуется дополнительная работа, так как моя реализация была создана независимо от их и имеет несколько небольших отличий + вся эта история с одинаковым отступом в TF.

### 23 сентября 2022
* Изображения LAION-2B CLIP поддерживаются в качестве предобученных базовых моделей для дообучения или извлечения признаков (без классификатора)
  * 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 сентября 2022
* Домашняя страница документации Hugging Face [`timm`](https://huggingface.co/docs/hub/timm) теперь существует, ищите здесь больше информации в будущем
* Добавлены веса BEiT-v2 для базовой и крупной моделей 224x224 с https://github.com/microsoft/unilm/tree/master/beit2
* Добавлены новые веса в серии `maxxvit`, включая `pico` (7,5 млн параметров, 1,9 GMACs) и два варианта `tiny`:
  * `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 августа 2022
* Размер окна MaxVit по умолчанию масштабируется в соответствии с img_size. Добавьте новый вес RelPosMlp MaxViT, использующий это:
  * `maxvit_rmlp_nano_rw_256` - 83.0 @ 256, 83.6 @ 320  (T)

### 26 августа 2022
* CoAtNet (https://arxiv.org/abs/2106.04803) и MaxVit (https://arxiv.org/abs/2204.01697) — исходные модели `timm`
  * оба найдены в определении модели [`maxxvit.py`](https://github.com/rwightman/pytorch-image-models/blob/master/timm/models/maxxvit.py), содержат множество экспериментов, выходящих за рамки исходных статей
  * незавершённую версию для Tensorflow от авторов MaxVit можно найти по адресу https://github.com/google-research/maxvit
* Начальные предобученные веса CoAtNet и MaxVit из timm (работа над расширением списка продолжается):
  * `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) -- Примечание: coatnet с «0» в timm имеют на два блока третьего этапа больше
  * `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, обученный с помощью кода обучения из ветки `bits_and_tpu`, (G) = обученный на GPU
* GCVit (веса адаптированы из https://github.com/NVlabs/GCVit, код на 100% переписан в `timm` в целях лицензирования)
* MViT-V2 (многомасштабный ViT, адаптирован из https://github.com/facebookresearch/mvit)
* EfficientFormer (адаптировано из https://github.com/snap-research/EfficientFormer)
* PyramidVisionTransformer-V2 (адаптировано из https://github.com/whai362/PVT)
* Поддержка «Fast Norm» для LayerNorm и GroupNorm, которая позволяет избежать приведения к float32 при использовании AMP (при наличии APEX LN используется для дополнительного ускорения)

### 15 августа 2022
* Добавлены веса ConvNeXt atto
  * `convnext_atto` - 75.7 @ 224, 77.0 @ 288
  * `convnext_atto_ols` - 75.9  @ 224, 77.2 @ 288

### 5 августа 2022
* Дополнительные определения более мелких моделей ConvNeXt с весами
  * `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
* Обновлён EdgeNeXt для улучшения экспорта в ONNX, добавлены новый базовый вариант и веса из оригинала (https://github.com/mmaaz60/EdgeNeXt)

### 28 июля 2022
* Добавлены веса новой модели DeiT-III Medium (width=512, depth=12, num_heads=8). Спасибо [Hugo Touvron](https://github.com/TouvronHugo)!

### 27 июля 2022
* Все файлы csv с результатами бенчмарков и валидации во время выполнения в итоге актуальны!
* Добавлено ещё несколько весов и определений моделей:
  * `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*` веса, обученные на TPU с веткой `bits_and_tpu`. Спасибо программе TRC!
* Добавить поддержку output_stride=8 и 16 в ConvNeXt (dilation)
* Исправлена проблема с невозможностью изменения размера pos_emb в моделях deit3
* Выпуск версии 0.6.7 на PyPi (с исправлением вышеуказанных ошибок и новыми весами с версии 0.6.5)

### 8 июля 2022
Больше моделей, больше исправлений
* Добавлены официальные исследовательские модели (с весами):
  * EdgeNeXt от (https://github.com/mmaaz60/EdgeNeXt)
  * MobileViT-V2 из (https://github.com/apple/ml-cvnets)
  * DeiT III (Revenge of the ViT) from (https://github.com/facebookresearch/deit)
* Мои собственные модели:
  * Добавлены определения небольших `ResNet` по запросу, с повторением одного блока для базовых и бутылочных блоков (resnet10 и resnet14)
  * `CspNet` переписан с использованием конфигурации на основе dataclass, упрощён вариант CrossStage3 (`cs3`). Эти определения ближе к backbone-ам YOLO-v5+.
  * Ещё немного подкрутил относительные позиции в ViT. Обучены две модели `srelpos` (общие относительные позиции) и одна средняя с токеном класса.
  * Добавьте альтернативный режим даунсемплинга в EdgeNeXt и обучите модель `small`. Результат лучше, чем у исходной small, но не лучше их новых весов, обученных с USI.
* Результаты по весам моей модели (все обучение на 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` и `vit_*relpos` выше обучены на TPU благодаря программе TRC! Остальные — на перегреющихся GPU.
* Поддержка Hugging Face Hub: исправления проверены, демонстрационный ноутбук будет добавлен позже
* Предобученные веса / конфигурации можно загружать из внешних источников (например, с локального диска) с поддержкой адаптации выходного слоя.
* Добавить поддержку изменения расширений изображений, которые сканируются датасетами/ридерами `timm`. См. (https://github.com/rwightman/pytorch-image-models/pull/1274#issuecomment-1178303103)
* По умолчанию реализация LayerNorm в ConvNeXt использует `F.layer_norm(x.permute(0, 2, 3, 1), ...).permute(0, 3, 1, 2)` через `LayerNorm2d` во всех случаях.
  * чуть медленнее, чем предыдущая кастомная реализация на некоторых аппаратных платформах (например, Ampere с CL), но в целом меньше регрессий на более широком диапазоне аппаратных платформ и версий PyTorch.
  * предыдущая реализация существует как `LayerNormExp2d` в `models/layers/norm.py`
* Многочисленные исправления ошибок
* В настоящее время тестируется для предстоящего выпуска 0.6.x на PyPi
* Предобучение более крупных моделей LeViT всё ещё в разработке: без дистилляции они плохо и/или сложно обучаются. Пора наконец добавить поддержку дистилляции?
* Обучение весов ImageNet-22k и дообучение продолжаются, работа над поддержкой нескольких весов (медленно) движется вперёд (весов очень много, вздох) ...

### 13 мая 2022
* Официальные модели и веса Swin-V2 добавлены из (https://github.com/microsoft/Swin-Transformer). Код очищен для поддержки torchscript.
* Небольшой рефакторинг существующей реализации `timm` Swin-V2-CR; вероятно, будет сделано ещё несколько правок, чтобы приблизить отдельные части к официальному варианту и решить, стоит ли объединить некоторые аспекты.
* Дополнительные эксперименты с относительным положением и остаточным пост-нормированием в Vision Transformer (все обучены на TPU благодаря программе 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, без class token, avg pool
  * `vit_relpos_medium_patch16_224` - 82.5 @ 224, 83.3 @ 320 -- rel pos, layer scale, no class token, avg pool
  * `vit_relpos_base_patch16_gapcls_224` - 82.8 @ 224, 83.9 @ 320 -- rel pos, layer scale, class token, avg pool (по ошибке)
* Возвращаем к жизни вариант модели ViT «medium» с 512 измерениями и 8 головами (после использования в «small»-модели до DeiT для первой реализации ViT ещё в 2020 году)
* Добавлена поддержка относительных позиций ViT для переключения между существующей реализацией и некоторыми дополнениями из официальной реализации Swin-V2 для будущих экспериментов
* Реализация Sequencer2D (https://arxiv.org/abs/2205.01972), добавлена через PR от автора (https://github.com/okojoalg)

### 2 мая 2022
* Эксперименты с Vision Transformer, включающие добавление относительного положения (лог-координаты Swin-V2) (`vision_transformer_relpos.py`) и ветвей Residual Post-Norm (из Swin-V2) (`vision_transformer*.py`)
  * `vit_relpos_base_patch32_plus_rpn_256` - 79,5 @ 256, 80,6 @ 320 -- относительное позиционное кодирование + расширенная ширина + нормализация после остаточного соединения, без токена класса, усредняющее пулирование
  * `vit_relpos_base_patch16_224` - 82.5 @ 224, 83.6 @ 320 -- rel pos, layer scale, no class token, avg pool
  * `vit_base_patch16_rpn_224` - 82.3 @ 224 -- rel pos + res-post-norm, no class token, avg pool
* Рефакторинг Vision Transformer для удаления слоя представления, который использовался только в исходной версии ViT и стал редко применяться с появлением новых методов предобучения (например, `How to Train Your ViT`)
* Модели `vit_*` поддерживают удаление class token, использование глобального усредняющего пулинга и использование fc_norm (как в beit, mae).

### 22 апреля 2022
* Модели `timm` теперь официально поддерживаются в [fast.ai](https://www.fast.ai/)! Как раз вовремя для нового курса Practical Deep Learning. Ссылка на документацию `timmdocs` обновлена на [timm.fast.ai](http://timm.fast.ai/).
* Добавлены ещё два набора весов моделей в серии [series](https://github.com/rwightman/pytorch-image-models/releases/tag/v0.1-tpu-weights), обученной на TPU. Часть предобучения In22k всё ещё выполняется.
  * `seresnext101d_32x8d` - 83.69 @ 224, 84.35 @ 288
  * `seresnextaa101d_32x8d` (сглаживание с помощью AvgPool2d) - 83.85 @ 224, 84.57 @ 288

### 23 марта 2022
* Добавьте опции `ParallelBlock` и `LayerScale` в базовые модели vit для поддержки конфигураций моделей из [Three things everyone should know about ViT](https://arxiv.org/abs/2203.09795)
* `convnext_tiny_hnf` (head norm first) веса, обученные по рецепту (близкому к) A2, 82,2% top-1, можно улучшить с большим количеством эпох.

### 21 марта 2022
* Объединение `norm_norm_norm`. **ВАЖНО** это обновление для предстоящего релиза 0.6.x, вероятно, на некоторое время дестабилизирует ветку master. Если требуется стабильность, можно использовать ветку [`0.5.x`](https://github.com/rwightman/pytorch-image-models/tree/0.5.x) или предыдущий релиз 0.5.x.
* Значительное обновление весов (все обучены на TPU), как описано в этом [релизе](https://github.com/rwightman/pytorch-image-models/releases/tag/v0.1-tpu-weights)
  * `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 (с дополнительным fc в 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
* Исправлена поддержка HuggingFace hub; заложен первоначальный фундамент для возможности использования альтернативных «источников конфигурации» для определений и весов предобученных моделей (универсальная поддержка локальных файлов и удалённых URL появится в ближайшее время)
* Добавлена реализация SwinTransformer-V2. Подано [Christoph Reich](https://github.com/ChristophReich1996). Эксперименты по обучению и изменения моделей с моей стороны продолжаются, поэтому возможны нарушения совместимости.
* Добавлены модели / веса Swin-S3 (AutoFormerV2) из https://github.com/microsoft/Cream/tree/main/AutoFormerV2
* Модели MobileViT с весами, адаптированными из https://github.com/apple/ml-cvnets
* Модели PoolFormer с весами, адаптированными из https://github.com/sail-sg/poolformer
* Модели VOLO с весами, адаптированными из https://github.com/sail-sg/volo
* Значительная работа по экспериментированию с нормализационными слоями, отличными от BatchNorm, такими как EvoNorm, FilterResponseNorm, GroupNorm и т. д.
* Расширена поддержка альтернативных слоёв нормализации и активации ('NormAct'), добавленных в ряд моделей, в частности EfficientNet/MobileNetV3, RegNet и согласованный Xception
* Добавлена поддержка сгруппированных свёрток для семейства EfficientNet
* Добавить API «group matching» во все модели для группировки параметров модели с целью применения «layer-wise» затухания LR, а также добавить масштабирование lr в планировщик LR
* Добавлена поддержка градиентного чекпоинтинга во многие модели
* `forward_head(x, pre_logits=False)` — функция, добавленная во все модели, чтобы разрешить отдельные вызовы `forward_features` + `forward_head`
* Все модели vision transformer и vision MLP обновлены так, чтобы возвращать непулл-ированные / не отобранные по токенам признаки из `forward_features`, для согласованности с CNN-моделями; отбор токенов или пуллинг теперь применяются в `forward_head`

### 2 февраля 2022
* [Chris Hughes](https://github.com/Chris-hughes10) вчера опубликовал на своём блоге подробный обзор `timm`. Стоит прочитать. [Getting Started with PyTorch Image Models (timm): A Practitioner’s Guide](https://towardsdatascience.com/getting-started-with-pytorch-image-models-timm-a-practitioners-guide-4e77b4bf9055)
* В настоящее время я готовлюсь к слиянию ветки `norm_norm_norm` обратно в master (версия 0.6.x) примерно на следующей неделе.
  * Изменения более масштабные, чем обычно, и могут дестабилизировать работу и сломать некоторые способы использования API моделей (стремимся к полной обратной совместимости). Поэтому будьте осторожны с установкой через `pip install git+https://github.com/rwightman/pytorch-image-models`!
  * Релизы `0.5.x` и ветка `0.5.x` останутся стабильными с одним-двумя cherry-pick'ами, пока ситуация не прояснится. Если вам нужна стабильность, рекомендуем пока устанавливать пакет через pypi.

### 14 января 2022
* Версия 0.5.4 с релизом будет опубликована в pypi. С момента последнего обновления в pypi прошло довольно много времени, и рискованные изменения скоро будут объединены в основную ветку....
* Добавлены модели ConvNeXT с весами из официальной реализации (https://github.com/facebookresearch/ConvNeXt), несколько улучшений производительности, совместимость с функциями timm
* Попробовал обучить несколько небольших (~1.8-3M параметров) / оптимизированных для мобильных устройств моделей, некоторые пока хорошо работают, впереди ещё много...
  * `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
* Модели TinyNet, добавленные [rsomani95](https://github.com/rsomani95)
* LCNet добавлен через архитектуру MobileNetV3

### 5 января 2023
* Модели и веса ConvNeXt-V2 добавлены в существующий `convnext.py`
  * Статья: [ConvNeXt V2: Совместный дизайн и масштабирование свёрточных нейросетей с использованием маскированных автоэнкодеров](http://arxiv.org/abs/2301.00808)
  * Референсная реализация: https://github.com/facebookresearch/ConvNeXt-V2 (ПРИМЕЧАНИЕ: веса в настоящее время распространяются по лицензии CC-BY-NC)

### 23 декабря 2022 г. 🎄☃
* Добавьте модели и веса FlexiViT из https://github.com/google-research/big_vision (ознакомьтесь со статьёй по адресу https://arxiv.org/abs/2212.08013)
  * NOTE в настоящее время изменение размера выполняется статически при создании модели, динамическое изменение размера на лету / выбор размера патча во время обучения находится в стадии разработки
* Сейчас значительно больше моделей обновлено до мульти-веса и доступно для загрузки через HF hub (convnext, efficientnet, mobilenet, vision_transformer*, beit)
* Добавлены теги предобученных моделей и внесены корректировки, некоторые имена моделей изменены (работа над переводами для устаревших элементов продолжается, на данный момент используйте ветку DEV, для стабильного использования — 0.6.x)
* Появляется всё больше предобученных моделей на ImageNet-12k (подмножество из 22k):
  * `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 декабря 2022 г.
* Добавьте 'EVA l' в `vision_transformer.py`, предобучение ViT-L/14 в стиле MAE с MIM и целями EVA-CLIP, дообучение на ImageNet-1k (с промежуточным этапом на ImageNet-22k для некоторых моделей)
  * исходный источник: https://github.com/baaivision/EVA

| модель                                     | top1 | param_count |  gmac | macts | hub                                     |
|:------------------------------------------|-----:|------------:|------:|------:|:----------------------------------------|
| eva_large_patch14_336.in22k_ft_in22k_in1k | 89.2 |       304.5 | 191.1 | 270.2 | [ссылка](https://huggingface.co/BAAI/EVA) |
| eva_large_patch14_336.in22k_ft_in1k       | 88.7 |       304.5 | 191.1 | 270.2 | [ссылка](https://huggingface.co/BAAI/EVA) |
| eva_large_patch14_196.in22k_ft_in22k_in1k | 88.6 |       304.1 |  61.6 |  63.5 | [ссылка](https://huggingface.co/BAAI/EVA) |
| eva_large_patch14_196.in22k_ft_in1k       | 87.9 |       304.1 |  61.6 |  63.5 | [ссылка](https://huggingface.co/BAAI/EVA) |

### 6 декабря 2022 г.
* Добавлены веса модели ViT-g/14 в стиле BEiT 'EVA g' с предобучением MIM и CLIP в `beit.py`.
  * исходный источник: https://github.com/baaivision/EVA
  * статья: https://arxiv.org/abs/2211.07636

| модель                                    |   top1 |   param_count |   gmac |   macts | hub                                     |
|:-----------------------------------------|-------:|--------------:|-------:|--------:|:----------------------------------------|
| eva_giant_patch14_560.m30m_ft_in22k_in1k |   89.8 |        1014.4 | 1906.8 |  2577.2 | [ссылка](https://huggingface.co/BAAI/EVA) |
| eva_giant_patch14_336.m30m_ft_in22k_in1k |   89.6 |        1013   |  620.6 |   550.7 | [ссылка](https://huggingface.co/BAAI/EVA) |
| eva_giant_patch14_336.clip_ft_in1k       |   89.4 |        1013   |  620.6 |   550.7 | [ссылка](https://huggingface.co/BAAI/EVA) |
| eva_giant_patch14_224.clip_ft_in1k       |   89.1 |        1012.6 |  267.2 |   192.6 | [ссылка](https://huggingface.co/BAAI/EVA) |

### 5 декабря 2022 г.

* Предварительная версия (`0.8.0dev0`) с поддержкой нескольких весов (`model_arch.pretrained_tag`). Установите с помощью `pip install --pre timm`
  * vision_transformer, maxvit, convnext — это первые три реализации моделей с поддержкой
  * Имена моделей меняются вместе с этим (предыдущие _21k и т. д. будут объединены), всё ещё разбираюсь с обработкой устаревания
  * вероятно, в нём есть ошибки, но мне нужна обратная связь, поэтому, пожалуйста, попробуйте
  * если нужна стабильность, используйте релизы 0.6.x с pypi или клонируйте из [ветки 0.6.x](https://github.com/rwightman/pytorch-image-models/tree/0.6.x)
* Поддержка PyTorch 2.0 compile добавлена в train/validate/inference/benchmark, используйте аргумент `--torchcompile`
* Скрипт инференса позволяет более гибко управлять выводом: выберите k для индекса и вероятности верхнего класса, а также формат вывода — json, csv или parquet
* Добавлен полный набор весов башни изображений CLIP, дообученных на моделях LAION-2B и исходных моделях OpenAI CLIP

| модель                                            |   top1 |   param_count |   gmac |   macts | hub                                                                                  |
|:-------------------------------------------------|-------:|--------------:|-------:|--------:|:-------------------------------------------------------------------------------------|
| vit_huge_patch14_clip_336.laion2b_ft_in12k_in1k  |   88.6 |         632.5 |  391   |   407.5 | [ссылка](https://huggingface.co/timm/vit_huge_patch14_clip_336.laion2b_ft_in12k_in1k)  |
| vit_large_patch14_clip_336.openai_ft_in12k_in1k  |   88.3 |         304.5 |  191.1 |   270.2 | [ссылка](https://huggingface.co/timm/vit_large_patch14_clip_336.openai_ft_in12k_in1k)  |
| vit_huge_patch14_clip_224.laion2b_ft_in12k_in1k  |   88.2 |         632   |  167.4 |   139.4 | [ссылка](https://huggingface.co/timm/vit_huge_patch14_clip_224.laion2b_ft_in12k_in1k)  |
| vit_large_patch14_clip_336.laion2b_ft_in12k_in1k |   88.2 |         304.5 |  191.1 |   270.2 | [ссылка](https://huggingface.co/timm/vit_large_patch14_clip_336.laion2b_ft_in12k_in1k) |
| vit_large_patch14_clip_224.openai_ft_in12k_in1k  |   88.2 |         304.2 |   81.1 |    88.8 | [ссылка](https://huggingface.co/timm/vit_large_patch14_clip_224.openai_ft_in12k_in1k)  |
| vit_large_patch14_clip_224.laion2b_ft_in12k_in1k |   87.9 |         304.2 |   81.1 |    88.8 | [ссылка](https://huggingface.co/timm/vit_large_patch14_clip_224.laion2b_ft_in12k_in1k) |
| vit_large_patch14_clip_224.openai_ft_in1k        |   87.9 |         304.2 |   81.1 |    88.8 | [ссылка](https://huggingface.co/timm/vit_large_patch14_clip_224.openai_ft_in1k)        |
| vit_large_patch14_clip_336.laion2b_ft_in1k       |   87.9 |         304.5 |  191.1 |   270.2 | [ссылка](https://huggingface.co/timm/vit_large_patch14_clip_336.laion2b_ft_in1k)       |
| vit_huge_patch14_clip_224.laion2b_ft_in1k        |   87.6 |         632   |  167.4 |   139.4 | [ссылка](https://huggingface.co/timm/vit_huge_patch14_clip_224.laion2b_ft_in1k)        |
| vit_large_patch14_clip_224.laion2b_ft_in1k       |   87.3 |         304.2 |   81.1 |    88.8 | [ссылка](https://huggingface.co/timm/vit_large_patch14_clip_224.laion2b_ft_in1k)       |
| vit_base_patch16_clip_384.laion2b_ft_in12k_in1k  |   87.2 |          86.9 |   55.5 |   101.6 | [ссылка](https://huggingface.co/timm/vit_base_patch16_clip_384.laion2b_ft_in12k_in1k)  |
| vit_base_patch16_clip_384.openai_ft_in12k_in1k   |   87   |          86.9 |   55.5 |   101.6 | [ссылка](https://huggingface.co/timm/vit_base_patch16_clip_384.openai_ft_in12k_in1k)   |
| vit_base_patch16_clip_384.laion2b_ft_in1k        |   86.6 |          86.9 |   55.5 |   101.6 | [ссылка](https://huggingface.co/timm/vit_base_patch16_clip_384.laion2b_ft_in1k)        |
| vit_base_patch16_clip_384.openai_ft_in1k         |   86.2 |          86.9 |   55.5 |   101.6 | [ссылка](https://huggingface.co/timm/vit_base_patch16_clip_384.openai_ft_in1k)         |
| vit_base_patch16_clip_224.laion2b_ft_in12k_in1k  |   86.2 |          86.6 |   17.6 |    23.9 | [ссылка](https://huggingface.co/timm/vit_base_patch16_clip_224.laion2b_ft_in12k_in1k)  |
| vit_base_patch16_clip_224.openai_ft_in12k_in1k   |   85.9 |          86.6 |   17.6 |    23.9 | [ссылка](https://huggingface.co/timm/vit_base_patch16_clip_224.openai_ft_in12k_in1k)   |
| vit_base_patch32_clip_448.laion2b_ft_in12k_in1k  |   85.8 |          88.3 |   17.9 |    23.9 | [ссылка](https://huggingface.co/timm/vit_base_patch32_clip_448.laion2b_ft_in12k_in1k)  |
| vit_base_patch16_clip_224.laion2b_ft_in1k        |   85.5 |          86.6 |   17.6 |    23.9 | [ссылка](https://huggingface.co/timm/vit_base_patch16_clip_224.laion2b_ft_in1k)        |
| vit_base_patch32_clip_384.laion2b_ft_in12k_in1k  |   85.4 |          88.3 |   13.1 |    16.5 | [ссылка](https://huggingface.co/timm/vit_base_patch32_clip_384.laion2b_ft_in12k_in1k)  |
| vit_base_patch16_clip_224.openai_ft_in1k         |   85.3 |          86.6 |   17.6 |    23.9 | [ссылка](https://huggingface.co/timm/vit_base_patch16_clip_224.openai_ft_in1k)         |
| vit_base_patch32_clip_384.openai_ft_in12k_in1k   |   85.2 |          88.3 |   13.1 |    16.5 | [ссылка](https://huggingface.co/timm/vit_base_patch32_clip_384.openai_ft_in12k_in1k)   |
| vit_base_patch32_clip_224.laion2b_ft_in12k_in1k  |   83.3 |          88.2 |    4.4 |     5   | [ссылка](https://huggingface.co/timm/vit_base_patch32_clip_224.laion2b_ft_in12k_in1k)  |
| vit_base_patch32_clip_224.laion2b_ft_in1k        |   82.6 |          88.2 |    4.4 |     5   | [ссылка](https://huggingface.co/timm/vit_base_patch32_clip_224.laion2b_ft_in1k)        |
| vit_base_patch32_clip_224.openai_ft_in1k         |   81.9 |          88.2 |    4.4 |     5   | [ссылка](https://huggingface.co/timm/vit_base_patch32_clip_224.openai_ft_in1k)         |

* Порт весов MaxViT из Tensorflow из официального репозитория по адресу https://github.com/google-research/maxvit
  * Наблюдались более значительные, чем ожидалось, падения метрик для увеличенных до 384/512 весов fine-tune на in21k, возможно, из-за потери деталей, однако fine-tune на 21k действительно оказался чувствительным к незначительным изменениям в предобработке

| модель                              |   top1 |   param_count |   gmac |   macts | hub                                                                    |
|:-----------------------------------|-------:|--------------:|-------:|--------:|:-----------------------------------------------------------------------|
| maxvit_xlarge_tf_512.in21k_ft_in1k |   88.5 |         475.8 |  534.1 |  1413.2 | [ссылка](https://huggingface.co/timm/maxvit_xlarge_tf_512.in21k_ft_in1k) |
| maxvit_xlarge_tf_384.in21k_ft_in1k |   88.3 |         475.3 |  292.8 |   668.8 | [ссылка](https://huggingface.co/timm/maxvit_xlarge_tf_384.in21k_ft_in1k) |
| maxvit_base_tf_512.in21k_ft_in1k   |   88.2 |         119.9 |  138   |   704   | [ссылка](https://huggingface.co/timm/maxvit_base_tf_512.in21k_ft_in1k)   |
| maxvit_large_tf_512.in21k_ft_in1k  |   88   |         212.3 |  244.8 |   942.2 | [ссылка](https://huggingface.co/timm/maxvit_large_tf_512.in21k_ft_in1k)  |
| maxvit_large_tf_384.in21k_ft_in1k  |   88   |         212   |  132.6 |   445.8 | [ссылка](https://huggingface.co/timm/maxvit_large_tf_384.in21k_ft_in1k)  |
| maxvit_base_tf_384.in21k_ft_in1k   |   87.9 |         119.6 |   73.8 |   332.9 | [ссылка](https://huggingface.co/timm/maxvit_base_tf_384.in21k_ft_in1k)   |
| maxvit_base_tf_512.in1k            |   86.6 |         119.9 |  138   |   704   | [ссылка](https://huggingface.co/timm/maxvit_base_tf_512.in1k)            |
| maxvit_large_tf_512.in1k           |   86.5 |         212.3 |  244.8 |   942.2 | [ссылка](https://huggingface.co/timm/maxvit_large_tf_512.in1k)           |
| maxvit_base_tf_384.in1k            |   86.3 |         119.6 |   73.8 |   332.9 | [ссылка](https://huggingface.co/timm/maxvit_base_tf_384.in1k)            |
| maxvit_large_tf_384.in1k           |   86.2 |         212   |  132.6 |   445.8 | [ссылка](https://huggingface.co/timm/maxvit_large_tf_384.in1k)           |
| maxvit_small_tf_512.in1k           |   86.1 |          69.1 |   67.3 |   383.8 | [ссылка](https://huggingface.co/timm/maxvit_small_tf_512.in1k)           |
| maxvit_tiny_tf_512.in1k            |   85.7 |          31   |   33.5 |   257.6 | [ссылка](https://huggingface.co/timm/maxvit_tiny_tf_512.in1k)            |
| maxvit_small_tf_384.in1k           |   85.5 |          69   |   35.9 |   183.6 | [ссылка](https://huggingface.co/timm/maxvit_small_tf_384.in1k)           |
| maxvit_tiny_tf_384.in1k            |   85.1 |          31   |   17.5 |   123.4 | [ссылка](https://huggingface.co/timm/maxvit_tiny_tf_384.in1k)            |
| maxvit_large_tf_224.in1k           |   84.9 |         211.8 |   43.7 |   127.4 | [ссылка](https://huggingface.co/timm/maxvit_large_tf_224.in1k)           |
| maxvit_base_tf_224.in1k            |   84.9 |         119.5 |   24   |    95   | [ссылка](https://huggingface.co/timm/maxvit_base_tf_224.in1k)            |
| maxvit_small_tf_224.in1k           |   84.4 |          68.9 |   11.7 |    53.2 | [ссылка](https://huggingface.co/timm/maxvit_small_tf_224.in1k)           |
| maxvit_tiny_tf_224.in1k            |   83.4 |          30.9 |    5.6 |    35.8 | [ссылка](https://huggingface.co/timm/maxvit_tiny_tf_224.in1k)            |

### 15 октября 2022
* Улучшения скриптов обучения и валидации
* Поддержка устройств, не являющихся GPU (то есть CPU)
* Совместимость со SLURM для скрипта обучения
* Поддержка датасетов HF (через ReaderHfds)
* Улучшения загрузки данных в TFDS/WDS (исправлена проблема с оценкой количества образцов при выравнивании/повторном использовании образцов для распределённого использования)
* поддержка in_chans !=3 в скриптах / загрузчике
* Оптимизатор Adan
* Можно включить пошаговое планирование LR через аргументы
* Датасет 'parsers' переименован в 'readers', что более точно отражает его назначение
* Аргументы AMP изменены, APEX через `--amp-impl apex`, поддержка bfloat16 через `--amp-dtype bfloat16`
* ветка main переключена на версию 0.7.x, 0.6x выделена в отдельную ветку для стабильного релиза weight only adds
* переименование ветки master -> main

### 10 октября 2022
* Больше весов в серии `maxxvit`, включая эксперименты `coatnext` и `maxxvit` на основе первого блока ConvNeXt:
  * `coatnext_nano_rw_224` - 82.0 @ 224 (G) -- (использует блок свёрток ConvNeXt, без BatchNorm)
  * `maxxvit_rmlp_nano_rw_256` - 83.0 @ 256, 83.7 @ 320 (G) (использует блок свёрток ConvNeXt, без 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) -- можно обучить лучше, гиперпараметры требуют настройки (использует блок ConvNeXt, без BN)
  * `coatnet_rmlp_2_rw_224` - 84.6 @ 224, 85 @ 320  (T)
  * NOTE: официальные веса MaxVit (in1k) были опубликованы по адресу https://github.com/google-research/maxvit -- для переноса и адаптации потребуется дополнительная работа, так как моя реализация была создана независимо от их и имеет несколько небольших отличий + вся эта история с одинаковым отступом в TF.

### 23 сентября 2022
* Изображения LAION-2B CLIP поддерживаются в качестве предобученных базовых моделей для дообучения или извлечения признаков (без классификатора)
  * 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 сентября 2022
* Домашняя страница документации Hugging Face [`timm`](https://huggingface.co/docs/hub/timm) теперь существует, ищите здесь больше информации в будущем
* Добавлены веса BEiT-v2 для базовой и крупной моделей 224x224 с https://github.com/microsoft/unilm/tree/master/beit2
* Добавлены новые веса в серии `maxxvit`, включая `pico` (7,5 млн параметров, 1,9 GMACs) и два варианта `tiny`:
  * `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 августа 2022
* Размер окна MaxVit по умолчанию масштабируется в соответствии с img_size. Добавьте новый вес RelPosMlp MaxViT, использующий это:
  * `maxvit_rmlp_nano_rw_256` - 83.0 @ 256, 83.6 @ 320  (T)

### 26 августа 2022
* CoAtNet (https://arxiv.org/abs/2106.04803) и MaxVit (https://arxiv.org/abs/2204.01697) — исходные модели `timm`
  * оба найдены в определении модели [`maxxvit.py`](https://github.com/rwightman/pytorch-image-models/blob/master/timm/models/maxxvit.py), содержат множество экспериментов, выходящих за рамки исходных статей
  * незавершённую версию для Tensorflow от авторов MaxVit можно найти по адресу https://github.com/google-research/maxvit
* Начальные предобученные веса CoAtNet и MaxVit из timm (работа над расширением списка продолжается):
  * `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) -- Примечание: coatnet с «0» в timm имеют на два блока третьего этапа больше
  * `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, обученный с помощью кода обучения из ветки `bits_and_tpu`, (G) = обученный на GPU
* GCVit (веса адаптированы из https://github.com/NVlabs/GCVit, код на 100% переписан в `timm` в целях лицензирования)
* MViT-V2 (многомасштабный ViT, адаптирован из https://github.com/facebookresearch/mvit)
* EfficientFormer (адаптировано из https://github.com/snap-research/EfficientFormer)
* PyramidVisionTransformer-V2 (адаптировано из https://github.com/whai362/PVT)
* Поддержка «Fast Norm» для LayerNorm и GroupNorm, которая позволяет избежать приведения к float32 при использовании AMP (при наличии APEX LN используется для дополнительного ускорения)

### 15 августа 2022
* Добавлены веса ConvNeXt atto
  * `convnext_atto` - 75.7 @ 224, 77.0 @ 288
  * `convnext_atto_ols` - 75.9  @ 224, 77.2 @ 288

### 5 августа 2022
* Дополнительные определения более мелких моделей ConvNeXt с весами
  * `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
* Обновлён EdgeNeXt для улучшения экспорта в ONNX, добавлены новый базовый вариант и веса из оригинала (https://github.com/mmaaz60/EdgeNeXt)

### 28 июля 2022
* Добавлены веса новой модели DeiT-III Medium (width=512, depth=12, num_heads=8). Спасибо [Hugo Touvron](https://github.com/TouvronHugo)!

### 27 июля 2022
* Все файлы csv с результатами бенчмарков и валидации в режиме выполнения актуальны!
* Добавлено ещё несколько весов и определений моделей:
  * `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*` веса, обученные на TPU с веткой `bits_and_tpu`. Спасибо программе TRC!
* Добавить поддержку output_stride=8 и 16 в ConvNeXt (dilation)
* Исправлена проблема с невозможностью изменения размера pos_emb в моделях deit3
* Выпуск версии 0.6.7 на PyPi (с исправлением вышеуказанных ошибок и новыми весами с версии 0.6.5)

### 8 июля 2022
Больше моделей, больше исправлений
* Добавлены официальные исследовательские модели (с весами):
  * EdgeNeXt от (https://github.com/mmaaz60/EdgeNeXt)
  * MobileViT-V2 из (https://github.com/apple/ml-cvnets)
  * DeiT III (Revenge of the ViT) from (https://github.com/facebookresearch/deit)
* Мои собственные модели:
  * Добавлены определения небольших `ResNet` по запросу, с повторением одного блока для базовых и бутылочных блоков (resnet10 и resnet14)
  * `CspNet` переписан с использованием конфигурации на основе dataclass, упрощён вариант CrossStage3 (`cs3`). Эти определения ближе к backbone-ам YOLO-v5+.
  * Ещё немного подкрутил относительные позиции в ViT. Обучены две модели `srelpos` (общие относительные позиции) и одна средняя с токеном класса.
  * Добавьте альтернативный режим даунсемплинга в EdgeNeXt и обучите модель `small`. Результат лучше, чем у исходной small, но не лучше их новых весов, обученных с USI.
* Результаты по весам моей модели (все обучение на 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` и `vit_*relpos` выше обучены на TPU благодаря программе TRC! Остальные — на перегреющихся GPU.
* Поддержка Hugging Face Hub: исправления проверены, демонстрационный ноутбук будет добавлен позже
* Предобученные веса / конфигурации можно загружать из внешних источников (например, с локального диска) с поддержкой адаптации выходного слоя.
* Добавить поддержку изменения расширений изображений, которые сканируются наборами данных/парсерами `timm`. См. (https://github.com/rwightman/pytorch-image-models/pull/1274#issuecomment-1178303103)
* По умолчанию реализация LayerNorm в ConvNeXt использует `F.layer_norm(x.permute(0, 2, 3, 1), ...).permute(0, 3, 1, 2)` через `LayerNorm2d` во всех случаях.
  * чуть медленнее, чем предыдущая кастомная реализация на некоторых аппаратных платформах (например, Ampere с CL), но в целом меньше регрессий на более широком диапазоне аппаратных платформ и версий PyTorch.
  * предыдущая реализация существует как `LayerNormExp2d` в `models/layers/norm.py`
* Многочисленные исправления ошибок
* В настоящее время тестируется для предстоящего выпуска 0.6.x на PyPi
* Предобучение более крупных моделей LeViT всё ещё в разработке: без дистилляции они плохо и/или сложно обучаются. Пора наконец добавить поддержку дистилляции?
* Обучение весов ImageNet-22k и дообучение продолжаются, работа над поддержкой нескольких весов (медленно) движется вперёд (весов очень много, вздох) ...

### 13 мая 2022
* Официальные модели и веса Swin-V2 добавлены из (https://github.com/microsoft/Swin-Transformer). Код очищен для поддержки torchscript.
* Небольшой рефакторинг существующей реализации `timm` Swin-V2-CR; вероятно, будет сделано ещё несколько правок, чтобы приблизить отдельные части к официальному варианту и решить, стоит ли объединить некоторые аспекты.
* Дополнительные эксперименты с относительным положением и остаточным пост-нормированием в Vision Transformer (все обучены на TPU благодаря программе 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, без class token, avg pool
  * `vit_relpos_medium_patch16_224` - 82.5 @ 224, 83.3 @ 320 -- rel pos, layer scale, no class token, avg pool
  * `vit_relpos_base_patch16_gapcls_224` - 82.8 @ 224, 83.9 @ 320 -- rel pos, layer scale, class token, avg pool (по ошибке)
* Возвращаем к жизни вариант модели ViT «medium» с 512 измерениями и 8 головами (после использования в «small»-модели до DeiT для первой реализации ViT ещё в 2020 году)
* Добавлена поддержка относительных позиций ViT для переключения между существующей реализацией и некоторыми дополнениями из официальной реализации Swin-V2 для будущих экспериментов
* Реализация Sequencer2D (https://arxiv.org/abs/2205.01972), добавлена через PR от автора (https://github.com/okojoalg)

### 2 мая 2022
* Эксперименты с Vision Transformer, включающие добавление относительного положения (лог-координаты Swin-V2) (`vision_transformer_relpos.py`) и ветвей Residual Post-Norm (из Swin-V2) (`vision_transformer*.py`)
  * `vit_relpos_base_patch32_plus_rpn_256` - 79,5 @ 256, 80,6 @ 320 -- относительное позиционное кодирование + расширенная ширина + нормализация после остаточного соединения, без токена класса, усредняющее пулирование
  * `vit_relpos_base_patch16_224` - 82.5 @ 224, 83.6 @ 320 -- rel pos, layer scale, no class token, avg pool
  * `vit_base_patch16_rpn_224` - 82.3 @ 224 -- rel pos + res-post-norm, no class token, avg pool
* Рефакторинг Vision Transformer для удаления слоя представления, который использовался только в исходной версии ViT и стал редко применяться с появлением новых методов предобучения (например, `How to Train Your ViT`)
* Модели `vit_*` поддерживают удаление class token, использование глобального усредняющего пулинга и использование fc_norm (как в beit, mae).

### 22 апреля 2022
* Модели `timm` теперь официально поддерживаются в [fast.ai](https://www.fast.ai/)! Как раз вовремя для нового курса Practical Deep Learning. Ссылка на документацию `timmdocs` обновлена на [timm.fast.ai](http://timm.fast.ai/).
* Добавлены ещё два набора весов моделей в серии [series](https://github.com/rwightman/pytorch-image-models/releases/tag/v0.1-tpu-weights), обученной на TPU. Часть предобучения In22k всё ещё выполняется.
  * `seresnext101d_32x8d` - 83.69 @ 224, 84.35 @ 288
  * `seresnextaa101d_32x8d` (сглаживание с помощью AvgPool2d) - 83.85 @ 224, 84.57 @ 288

### 23 марта 2022
* Добавьте опции `ParallelBlock` и `LayerScale` в базовые модели vit для поддержки конфигураций моделей из [Three things everyone should know about ViT](https://arxiv.org/abs/2203.09795)
* `convnext_tiny_hnf` (head norm first) веса, обученные по рецепту (близкому к) A2, 82,2% top-1, можно улучшить с большим количеством эпох.

### 21 марта 2022
* Объединение `norm_norm_norm`. **ВАЖНО** это обновление для предстоящего релиза 0.6.x, вероятно, на некоторое время дестабилизирует ветку master. Если требуется стабильность, можно использовать ветку [`0.5.x`](https://github.com/rwightman/pytorch-image-models/tree/0.5.x) или предыдущий релиз 0.5.x.
* Значительное обновление весов (все обучены на TPU), как описано в этом [релизе](https://github.com/rwightman/pytorch-image-models/releases/tag/v0.1-tpu-weights)
  * `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 (с дополнительным fc в 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
* Исправлена поддержка HuggingFace hub; заложен первоначальный фундамент для возможности использования альтернативных «источников конфигурации» для определений и весов предобученных моделей (универсальная поддержка локальных файлов и удалённых URL появится в ближайшее время)
* Добавлена реализация SwinTransformer-V2. Подано [Christoph Reich](https://github.com/ChristophReich1996). Эксперименты по обучению и изменения моделей с моей стороны продолжаются, поэтому возможны нарушения совместимости.
* Добавлены модели / веса Swin-S3 (AutoFormerV2) из https://github.com/microsoft/Cream/tree/main/AutoFormerV2
* Модели MobileViT с весами, адаптированными из https://github.com/apple/ml-cvnets
* Модели PoolFormer с весами, адаптированными из https://github.com/sail-sg/poolformer
* Модели VOLO с весами, адаптированными из https://github.com/sail-sg/volo
* Значительная работа по экспериментированию с нормализационными слоями, отличными от BatchNorm, такими как EvoNorm, FilterResponseNorm, GroupNorm и т. д.
* Расширена поддержка альтернативных слоёв нормализации и активации ('NormAct'), добавленных в ряд моделей, в частности EfficientNet/MobileNetV3, RegNet и согласованный Xception
* Добавлена поддержка сгруппированных свёрток для семейства EfficientNet
* Добавить API «group matching» во все модели для группировки параметров модели с целью применения «layer-wise» затухания LR, а также добавить масштабирование lr в планировщик LR
* Добавлена поддержка градиентного чекпоинтинга во многие модели
* `forward_head(x, pre_logits=False)` — функция, добавленная во все модели, чтобы разрешить отдельные вызовы `forward_features` + `forward_head`
* Все модели vision transformer и vision MLP обновлены так, чтобы возвращать непулл-ированные / не отобранные по токенам признаки из `forward_features`, для согласованности с CNN-моделями; отбор токенов или пуллинг теперь применяются в `forward_head`

### 2 февраля 2022
* [Chris Hughes](https://github.com/Chris-hughes10) вчера опубликовал на своём блоге подробный обзор `timm`. Стоит прочитать. [Getting Started with PyTorch Image Models (timm): A Practitioner’s Guide](https://towardsdatascience.com/getting-started-with-pytorch-image-models-timm-a-practitioners-guide-4e77b4bf9055)
* В настоящее время я готовлюсь к слиянию ветки `norm_norm_norm` обратно в master (версия 0.6.x) примерно на следующей неделе.
  * Изменения более масштабные, чем обычно, и могут дестабилизировать работу и сломать некоторые способы использования API моделей (стремимся к полной обратной совместимости). Поэтому будьте осторожны с установкой через `pip install git+https://github.com/rwightman/pytorch-image-models`!
  * Релизы `0.5.x` и ветка `0.5.x` останутся стабильными с одним-двумя cherry-pick'ами, пока ситуация не прояснится. Если вам нужна стабильность, рекомендуем пока устанавливать пакет через pypi.

### 14 января 2022
* Версия 0.5.4 с релизом будет опубликована в pypi. С момента последнего обновления в pypi прошло довольно много времени, и рискованные изменения скоро будут объединены в основную ветку....
* Добавлены модели ConvNeXT с весами из официальной реализации (https://github.com/facebookresearch/ConvNeXt), несколько улучшений производительности, совместимость с функциями timm
* Попробовал обучить несколько небольших (~1.8-3M параметров) / оптимизированных для мобильных устройств моделей, некоторые пока хорошо работают, впереди ещё много...
  * `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
* Модели TinyNet, добавленные [rsomani95](https://github.com/rsomani95)
* LCNet добавлен через архитектуру MobileNetV3

