Что нового
Введение
Модели
Функции
Результаты
Начало работы (документация)
Сценарии обучения, проверки и вывода
Потрясающие ресурсы PyTorch
Лицензии
Цитирование
Очистка использования усилителя torch, чтобы избежать вызовов, специфичных для cuda, объединение поддержки устройств Ascend (NPU) от MengqingCao, которые теперь должны работать в PyTorch 2.5 с новой функцией автозагрузки расширений устройств. Протестировал Intel Arc (XPU) и в Pytorch 2.5, и он (в основном) работал.
Исправлена ошибка при импорте из устаревшего пути timm.models.registry
, увеличен приоритет существующих предупреждений об устаревании, чтобы они были видимыми.
Перенесите веса InternViT-300M (https://huggingface.co/OpenGVLab/InternViT-300M-448px) на timm
как vit_intern300m_patch14_448
Предварительная активация (ResNetV2) версии 18/18d/34/34d моделей ResNet, добавленных по запросу (веса ожидаются)
Релиз 1.0.10
Добавлена модель и веса MambaOut (https://github.com/yuweihao/MambaOut). Дерзкий взгляд на модели видения SSM без SSM (по сути, ConvNeXt с стробированием). Сочетание исходных весов + пользовательские вариации и веса.
модель | img_size | топ1 | топ5 | param_count |
---|---|---|---|---|
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 | 288 | 86,912 | 98,236 | 101,66 |
mambaout_base_plus_rw.sw_e150_in12k_ft_in1k | 224 | 86,632 | 98.156 | 101,66 |
mambaout_base_tall_rw.sw_e500_in1k | 288 | 84,974 | 97,332 | 86,48 |
mambaout_base_wide_rw.sw_e500_in1k | 288 | 84,962 | 97.208 | 94,45 |
mambaout_base_short_rw.sw_e500_in1k | 288 | 84,832 | 97,27 | 88,83 |
mambaout_base.in1k | 288 | 84,72 | 96,93 | 84,81 |
mambaout_small_rw.sw_e450_in1k | 288 | 84.598 | 97.098 | 48,5 |
mambaout_small.in1k | 288 | 84,5 | 96,974 | 48,49 |
mambaout_base_wide_rw.sw_e500_in1k | 224 | 84.454 | 96,864 | 94,45 |
mambaout_base_tall_rw.sw_e500_in1k | 224 | 84.434 | 96,958 | 86,48 |
mambaout_base_short_rw.sw_e500_in1k | 224 | 84.362 | 96,952 | 88,83 |
mambaout_base.in1k | 224 | 84.168 | 96,68 | 84,81 |
mambaout_small.in1k | 224 | 84.086 | 96,63 | 48,49 |
mambaout_small_rw.sw_e450_in1k | 224 | 84.024 | 96,752 | 48,5 |
mambaout_tiny.in1k | 288 | 83.448 | 96,538 | 26.55 |
mambaout_tiny.in1k | 224 | 82,736 | 96,1 | 26.55 |
mambaout_kobe.in1k | 288 | 81.054 | 95,718 | 9.14 |
mambaout_kobe.in1k | 224 | 79,986 | 94,986 | 9.14 |
mambaout_femto.in1k | 288 | 79,848 | 95,14 | 7.3 |
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 - 89,42 топ-1
vit_so400m_patch14_siglip_gap_378.webli_ft_in1k - 89,03
Кодер SigLIP SO400M ViT из недавнего многоязычного (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 — 73,20 топ-1 @ 224
convnext_zepto_rms.ra4_e3600_r224_in1k — 72,81 @ 224
Добавьте набор крошечных тестовых моделей для улучшения модульных тестов и нишевых приложений с низким уровнем ресурсов (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 - 65,81 топ-1 @ 256, 64,76 @ 224
Добавьте варианты MobileNetV3-Large, обученные по рецепту MNV4 Small.
mobilenetv3_large_150d.ra4_e3600_r256_in1k - 81,81 @ 320, 80,94 @ 256
mobilenetv3_large_100.ra4_e3600_r224_in1k - 77,16 @ 256, 76,31 @ 224
Обновленные модели SBB ViT, обученные на ImageNet-12k и доработанные на ImageNet-1k, бросают вызов множеству гораздо более крупных и медленных моделей.
модель | топ1 | топ5 | param_count | img_size |
---|---|---|---|---|
vit_mediumd_patch16_reg4_gap_384.sbb2_e200_in12k_ft_in1k | 87.438 | 98,256 | 64.11 | 384 |
vit_mediumd_patch16_reg4_gap_256.sbb2_e200_in12k_ft_in1k | 86,608 | 97,934 | 64.11 | 256 |
vit_betwixt_patch16_reg4_gap_384.sbb2_e200_in12k_ft_in1k | 86,594 | 98.02 | 60,4 | 384 |
vit_betwixt_patch16_reg4_gap_256.sbb2_e200_in12k_ft_in1k | 85,734 | 97,61 | 60,4 | 256 |
Веса MobileNet-V1 1.25, EfficientNet-B1 и ResNet50-D с базовым рецептом проверки MNV4
модель | топ1 | топ5 | param_count | img_size |
---|---|---|---|---|
resnet50d.ra4_e3600_r224_in1k | 81,838 | 95,922 | 25.58 | 288 |
effectnet_b1.ra4_e3600_r240_in1k | 81.440 | 95.700 | 7,79 | 288 |
resnet50d.ra4_e3600_r224_in1k | 80.952 | 95.384 | 25.58 | 224 |
effectnet_b1.ra4_e3600_r240_in1k | 80.406 | 95.152 | 7,79 | 240 |
mobilenetv1_125.ra4_e3600_r224_in1k | 77.600 | 93.804 | 6.27 | 256 |
mobilenetv1_125.ra4_e3600_r224_in1k | 76,924 | 93.234 | 6.27 | 224 |
Добавьте опорную арку SAM2 (HieraDet) и поддержку весовой нагрузки.
Добавить Hiera, тренированные с малыми весами, с использованием abswin pos, встроить в in12k и точно настроить на 1k.
модель | топ1 | топ5 | 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 |
Добавьте RDNet («DenseNets Reloaded», https://arxiv.org/abs/2403.19588), спасибо, Донхён Ким.
Добавьте веса mobilenet_edgetpu_v2_m
с рецептом на основе ra4
mnv4-small. 80,1% топ-1 при 224 и 80,7 при 256.
Версия 1.0.8
Больше весов MobileNet-v4, предварительное обучение ImageNet-12k с тонкой настройкой и сглаженные модели ConvLarge.
модель | топ1 | top1_err | топ5 | top5_err | param_count | img_size |
---|---|---|---|---|---|---|
mobilenetv4_conv_aa_large.e230_r448_in12k_ft_in1k | 84,99 | 15.01 | 97.294 | 2,706 | 32,59 | 544 |
mobilenetv4_conv_aa_large.e230_r384_in12k_ft_in1k | 84,772 | 15.228 | 97.344 | 2,656 | 32,59 | 480 |
mobilenetv4_conv_aa_large.e230_r448_in12k_ft_in1k | 84,64 | 15.36 | 97.114 | 2,886 | 32,59 | 448 |
mobilenetv4_conv_aa_large.e230_r384_in12k_ft_in1k | 84.314 | 15,686 | 97.102 | 2,898 | 32,59 | 384 |
mobilenetv4_conv_aa_large.e600_r384_in1k | 83,824 | 16.176 | 96,734 | 3.266 | 32,59 | 480 |
mobilenetv4_conv_aa_large.e600_r384_in1k | 83.244 | 16,756 | 96.392 | 3,608 | 32,59 | 384 |
mobilenetv4_hybrid_medium.e200_r256_in12k_ft_in1k | 82,99 | 17.01 | 96,67 | 3.33 | 11.07 | 320 |
mobilenetv4_hybrid_medium.e200_r256_in12k_ft_in1k | 82,364 | 17,636 | 96.256 | 3,744 | 11.07 | 256 |
Впечатляющие базовые проблемы MobileNet-V1 и EfficientNet-B0 (https://huggingface.co/blog/rwightman/mobilenet-baselines)
модель | топ1 | top1_err | топ5 | top5_err | param_count | img_size |
---|---|---|---|---|---|---|
effectnet_b0.ra4_e3600_r224_in1k | 79,364 | 20,636 | 94,754 | 5.246 | 5.29 | 256 |
effectnet_b0.ra4_e3600_r224_in1k | 78,584 | 21.416 | 94,338 | 5,662 | 5.29 | 224 |
mobilenetv1_100h.ra4_e3600_r224_in1k | 76,596 | 23.404 | 93,272 | 6.728 | 5.28 | 256 |
mobilenetv1_100.ra4_e3600_r224_in1k | 76.094 | 23.906 | 93.004 | 6.996 | 4.23 | 256 |
mobilenetv1_100h.ra4_e3600_r224_in1k | 75,662 | 24.338 | 92.504 | 7.496 | 5.28 | 224 |
mobilenetv1_100.ra4_e3600_r224_in1k | 75.382 | 24,618 | 92,312 | 7,688 | 4.23 | 224 |
В модели vit и swin v1/v2 добавлен прототип функции set_input_size()
позволяющий изменять размер изображения, размер патча и размер окна после создания модели.
Улучшена поддержка в swin обработки разных размеров, в дополнение к аргументам set_input_size
, always_partition
и strict_img_size
были добавлены в __init__
чтобы обеспечить более гибкие ограничения размера ввода.
Исправьте неупорядоченную информацию об индексах для промежуточной оболочки функции «Getter», извлеките или ранжируйте индексы для нее.
Добавьте для тестирования несколько tiny
моделей параметров <.5M, которые фактически обучаются на ImageNet-1k.
модель | топ1 | top1_err | топ5 | 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 reg, спасибо Promisery
Прочие исправления
Еще 3 гибридных веса MobileNetV4 с другой схемой инициализации веса MQA
модель | топ1 | top1_err | топ5 | top5_err | param_count | img_size |
---|---|---|---|---|---|---|
mobilenetv4_hybrid_large.ix_e600_r384_in1k | 84,356 | 15,644 | 96,892 | 3.108 | 37,76 | 448 |
mobilenetv4_hybrid_large.ix_e600_r384_in1k | 83.990 | 16.010 | 96.702 | 3.298 | 37,76 | 384 |
mobilenetv4_hybrid_medium.ix_e550_r384_in1k | 83.394 | 16,606 | 96,760 | 3.240 | 11.07 | 448 |
mobilenetv4_hybrid_medium.ix_e550_r384_in1k | 82,968 | 17.032 | 96,474 | 3.526 | 11.07 | 384 |
mobilenetv4_hybrid_medium.ix_e550_r256_in1k | 82.492 | 17.508 | 96,278 | 3,722 | 11.07 | 320 |
mobilenetv4_hybrid_medium.ix_e550_r256_in1k | 81.446 | 18.554 | 95.704 | 4.296 | 11.07 | 256 |
Весовая нагрузка florence2 в модели DaViT
Добавлены модели MobileNetV4 и первоначальный набор обученных timm
весов:
модель | топ1 | top1_err | топ5 | top5_err | param_count | img_size |
---|---|---|---|---|---|---|
mobilenetv4_hybrid_large.e600_r384_in1k | 84,266 | 15.734 | 96,936 | 3.064 | 37,76 | 448 |
mobilenetv4_hybrid_large.e600_r384_in1k | 83.800 | 16.200 | 96,770 | 3.230 | 37,76 | 384 |
mobilenetv4_conv_large.e600_r384_in1k | 83.392 | 16,608 | 96,622 | 3.378 | 32,59 | 448 |
mobilenetv4_conv_large.e600_r384_in1k | 82,952 | 17.048 | 96,266 | 3,734 | 32,59 | 384 |
mobilenetv4_conv_large.e500_r256_in1k | 82,674 | 17.326 | 96,31 | 3,69 | 32,59 | 320 |
mobilenetv4_conv_large.e500_r256_in1k | 81,862 | 18.138 | 95,69 | 4.31 | 32,59 | 256 |
mobilenetv4_hybrid_medium.e500_r224_in1k | 81,276 | 18,724 | 95,742 | 4.258 | 11.07 | 256 |
mobilenetv4_conv_medium.e500_r256_in1k | 80,858 | 19.142 | 95,768 | 4.232 | 9,72 | 320 |
mobilenetv4_hybrid_medium.e500_r224_in1k | 80.442 | 19.558 | 95,38 | 4,62 | 11.07 | 224 |
mobilenetv4_conv_blur_medium.e500_r224_in1k | 80.142 | 19.858 | 95.298 | 4.702 | 9,72 | 256 |
mobilenetv4_conv_medium.e500_r256_in1k | 79,928 | 20.072 | 95.184 | 4,816 | 9,72 | 256 |
mobilenetv4_conv_medium.e500_r224_in1k | 79,808 | 20.192 | 95.186 | 4,814 | 9,72 | 256 |
mobilenetv4_conv_blur_medium.e500_r224_in1k | 79.438 | 20,562 | 94,932 | 5.068 | 9,72 | 224 |
mobilenetv4_conv_medium.e500_r224_in1k | 79.094 | 20.906 | 94,77 | 5.23 | 9,72 | 224 |
mobilenetv4_conv_small.e2400_r224_in1k | 74,616 | 25.384 | 92.072 | 7.928 | 3,77 | 256 |
mobilenetv4_conv_small.e1200_r224_in1k | 74.292 | 25.708 | 92.116 | 7.884 | 3,77 | 256 |
mobilenetv4_conv_small.e2400_r224_in1k | 73,756 | 26.244 | 91.422 | 8.578 | 3,77 | 224 |
mobilenetv4_conv_small.e1200_r224_in1k | 73.454 | 26.546 | 91,34 | 8,66 | 3,77 | 224 |
Apple MobileCLIP (https://arxiv.org/pdf/2311.17049, FastViT и ViT-B) добавлена поддержка модели башни изображения и веса (часть поддержки OpenCLIP).
ViTamin (https://arxiv.org/abs/2404.02132) Добавлена модель и вес башни изображения CLIP (часть поддержки OpenCLIP).
OpenAI CLIP Модифицированное моделирование башни изображения ResNet и поддержка веса (через ByobNet). Рефакторинг AttentionPool2d.
Поддержка загрузки весов PaliGemma jax в модели SigLIP ViT со средним пулом.
Добавьте модели Hiera из Meta (https://github.com/facebookresearch/hiera).
Добавить флаг normalize=
для трансформ, вернуть ненормализованный torch.Tensor с оригинальным dytpe (для chug
)
Выпуск версии 1.0.3
Searching for Better ViT Baselines (For the GPU Poor)
выпущены веса и варианты vit. Изучение форм модели между Tiny и Base.
модель | топ1 | топ5 | param_count | img_size |
---|---|---|---|---|
vit_mediumd_patch16_reg4_gap_256.sbb_in12k_ft_in1k | 86.202 | 97,874 | 64.11 | 256 |
vit_betwixt_patch16_reg4_gap_256.sbb_in12k_ft_in1k | 85.418 | 97,48 | 60,4 | 256 |
vit_mediumd_patch16_rope_reg1_gap_256.sbb_in1k | 84.322 | 96,812 | 63,95 | 256 |
vit_betwixt_patch16_rope_reg4_gap_256.sbb_in1k | 83.906 | 96,684 | 60,23 | 256 |
vit_base_patch16_rope_reg1_gap_256.sbb_in1k | 83,866 | 96,67 | 86,43 | 256 |
vit_medium_patch16_rope_reg1_gap_256.sbb_in1k | 83,81 | 96,824 | 38,74 | 256 |
vit_betwixt_patch16_reg4_gap_256.sbb_in1k | 83,706 | 96,616 | 60,4 | 256 |
vit_betwixt_patch16_reg1_gap_256.sbb_in1k | 83,628 | 96,544 | 60,4 | 256 |
vit_medium_patch16_reg4_gap_256.sbb_in1k | 83,47 | 96,622 | 38,88 | 256 |
vit_medium_patch16_reg1_gap_256.sbb_in1k | 83.462 | 96,548 | 38,88 | 256 |
vit_little_patch16_reg4_gap_256.sbb_in1k | 82,514 | 96.262 | 22.52 | 256 |
vit_wee_patch16_reg1_gap_256.sbb_in1k | 80.256 | 95.360 | 13.42 | 256 |
vit_pwee_patch16_reg1_gap_256.sbb_in1k | 80.072 | 95.136 | 15.25 | 256 |
vit_mediumd_patch16_reg4_gap_256.sbb_in12k | Н/Д | Н/Д | 64.11 | 256 |
vit_betwixt_patch16_reg4_gap_256.sbb_in12k | Н/Д | Н/Д | 60,4 | 256 |
Добавлен помощник AttentionExtract для извлечения карт внимания из моделей timm
. См. пример в #1232 (комментарий).
forward_intermediates()
усовершенствован и добавлен в большее количество моделей, включая некоторые ConvNets, которые имеют другие методы извлечения.
1017 из 1047 моделей архитектур поддерживают features_only=True
извлечение функций. Остальные 34 архитектуры могут поддерживаться, но в зависимости от приоритетных запросов.
Удалите аннотированные функции torch.jit.script, включая старые активации JIT. Конфликт с динамо-машиной и динамо-машиной при использовании работают гораздо лучше.
Готовясь к давно назревшему выпуску 1.0, уже некоторое время все стабильно.
Важная функция, которой некоторое время отсутствовало: features_only=True
поддержка моделей ViT с плоскими скрытыми состояниями или нестандартными макетами модулей (на данный момент охватывающими 'vit_*', 'twins_*', 'deit*', 'beit*', 'mvitv2*', 'eva*', 'samvit_*', 'flexivit*'
)
Поддержка вышеуказанных функций обеспечивается с помощью нового API-интерфейса forward_intermediates()
, который можно использовать с модулем упаковки функций или напрямую.
модель = timm.create_model('vit_base_patch16_224')final_feat, промежуточные = model.forward_intermediates(вход) output = model.forward_head(final_feat) # объединение + классификатор headprint(final_feat.shape)torch.Size([2, 197, 768]) for f в промежуточных продуктах:print(f.shape)torch.Size([2, 768, 14, 14])torch.Size([2, 768, 14, 14])torch.Size([2, 768, 14, 14])torch.Size([2, 768, 14, 14])torch.Size ([2, 768, 14, 14])torch.Size([2, 768, 14, 14])torch.Size([2, 768, 14, 14])torch.Size([2, 768, 14, 14])torch.Size([2, 768, 14, 14])torch.Size([2, 768, 14, 14])torch.Size([2, 768, 14, 14])torch.Size([ 2, 768, 14, 14])print(output.shape)torch.Size([2, 1000])
model = timm.create_model('eva02_base_patch16_clip_224', pretrained=True, img_size=512, Features_only=True, out_indices=(-3, -2,))output = model(torch.randn(2, 3, 512, 512)) для вывода o: print(o.shape) torch.Size([2, 768, 32, 32])torch.Size([2, 768, 32, 32])
Добавлены грузики башни машинного зрения TinyCLIP, спасибо Тьен Тран
Добавлены модели Next-ViT. Адаптировано с https://github.com/bytedance/Next-ViT.
Добавлены модели HGNet и PP-HGNetV2. Адаптировано с https://github.com/PaddlePaddle/PaddleClas от SeeFun.
Удален файл setup.py, перенесен на сборку на основе pyproject.toml, поддерживаемую PDM.
Добавьте обновленную модель EMA, используя _for_each, чтобы уменьшить накладные расходы.
Поддержка аргументов устройства в сценарии обучения для устройств без графического процессора.
Прочие исправления и небольшие дополнения.
Минимальная поддерживаемая версия Python увеличена до 3.8.
Релиз 0.9.16
Наборы данных и рефакторинг преобразований
Поддержка потокового (итеративного) набора данных HuggingFace ( --dataset hfids:org/dataset
)
Настройка оболочки веб-набора данных для улучшения получения информации о разделении, возможность автоматического получения разделений из поддерживаемого набора веб-данных HF-концентратора.
Протестированная потоковая передача datasets
ВЧ и оболочки набора веб-данных из концентратора ВЧ с недавними загрузками timm
ImageNet на https://huggingface.co/timm
Сделайте входные и целевые ключи столбца/поля согласованными для всех наборов данных и передавайте их через аргументы.
Полная монохромная поддержка при использовании, например: --input-size 1 224 224
или --in-chans 1
, соответствующим образом устанавливает преобразование изображений PIL в наборе данных.
Улучшено несколько альтернативных преобразований обрезки и изменения размера (ResizeKeepRatio, RandomCropOrPad и т. д.) для использования в проекте AI документа PixParse.
Добавьте датчик джиттера цвета в стиле SimCLR, а также параметры размытия в оттенках серого и по Гауссу для дополнений и аргументов.
Разрешить поезд без набора проверки ( --val-split ''
) в скрипте поезда
Добавьте аргументы --bce-sum
(сумма по классу dim) и --bce-pos-weight
(положительное взвешивание) для обучения, поскольку они являются обычными настройками потерь BCE. Я часто жестко программировал
Добавлены модели EfficientViT-Large, спасибо SeeFun
Исправлена совместимость с Python 3.7, поддержка скоро будет прекращена.
Прочие исправления
Релиз 0.9.12
Добавлена значительная гибкость для моделей 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.
Использование: #2035
Обновлены CSV-файлы imagenet eval и test set с последними моделями.
Ввод vision_transformer.py
и очистка документа от Laureηt
Версия 0.9.11
Добавлены веса DFN (сети фильтрации данных) и MetaCLIP ViT.
Добавлен вес модели ViT DINOv2 «регистрация» (https://huggingface.co/papers/2309.16588, https://huggingface.co/papers/2304.07193)
Добавить варианты quickgelu
ViT для весов OpenAI, DFN, MetaCLIP, которые его используют (менее эффективно).
Улучшенный набор текста добавлен в ResNet, MobileNet-v3 благодаря Aryan.
ImageNet-12k с тонкой настройкой (из LAION-2B CLIP) convnext_xxlarge
Версия 0.9.9
Веса башни изображений SigLIP поддерживаются в vision_transformer.py
.
Большой потенциал для тонкой настройки и последующего использования функций.
Экспериментальная поддержка «регистрации» в моделях vit в соответствии с требованиями Vision Transformers Need Registers.
Обновлен RepViT с новым выпуском веса. Спасибо, Вангао
Добавить поддержку изменения размера патча (при предварительно тренированной весовой нагрузке) в модели Swin.
Ожидается выпуск версии 0.9.8
TinyViT добавлен пользователем SeeFun
Исправьте EfficientViT (MIT) для использования torch.autocast, чтобы он вернулся к версии PT 1.10.
Версия 0.9.7
Модели изображений Py T orch ( timm
) — это набор моделей изображений, слоев, утилит, оптимизаторов, планировщиков, загрузчиков данных/дополнений, а также эталонных сценариев обучения/проверки, целью которых является объединение широкого спектра моделей SOTA с возможностью для воспроизведения результатов обучения ImageNet.
Здесь представлены работы многих других. Я постарался убедиться, что все исходные материалы указаны через ссылки на github, документы arxiv и т. д. в README, документации и строках документации по коду. Пожалуйста, дайте мне знать, если я что-то пропустил.
Все семейства архитектур моделей включают варианты с предварительно обученными весами. Есть конкретные варианты моделей без весов, это НЕ ошибка. Помощь в тренировках с новыми или лучшими весами всегда приветствуется.
Агрегирование вложенных трансформаторов — https://arxiv.org/abs/2105.12723
БЭиТ - https://arxiv.org/abs/2106.08254
Большая передача ResNetV2 (BiT) — https://arxiv.org/abs/1912.11370
Трансформаторы с узким местом - https://arxiv.org/abs/2101.11605
CaiT (Внимание к классам в преобразователях изображений) — https://arxiv.org/abs/2103.17239
CoaT (комасштабные преобразователи изображений с преобразованием внимания) — https://arxiv.org/abs/2104.06399
CoAtNet (Свертка и внимание) — https://arxiv.org/abs/2106.04803
ConvNeXt - https://arxiv.org/abs/2201.03545
ConvNeXt-V2 - http://arxiv.org/abs/2301.00808
ConViT (мягкие сверточные индуктивные преобразователи зрения) — https://arxiv.org/abs/2103.10697
CspNet (межэтапные частичные сети) — https://arxiv.org/abs/1911.11929
ДеиТ - https://arxiv.org/abs/2012.12877
ДеиТ-III - https://arxiv.org/pdf/2204.07118.pdf
DenseNet - https://arxiv.org/abs/1608.06993
ДЛА - https://arxiv.org/abs/1707.06484
DPN (двухканальная сеть) — https://arxiv.org/abs/1707.01629
EdgeNeXt - https://arxiv.org/abs/2206.10589
EfficientFormer - https://arxiv.org/abs/2206.01191
EfficientNet (семейство MBConvNet)
EfficientNet NoisyStudent (B0-B7, L2) — https://arxiv.org/abs/1911.04252
EfficientNet AdvProp (B0-B8) — https://arxiv.org/abs/1911.09665
EfficientNet (B0-B7) — https://arxiv.org/abs/1905.11946
EfficientNet-EdgeTPU (S, M, L) – https://ai.googleblog.com/2019/08/efficientnet-edgetpu-creating.html
EfficientNet V2 - https://arxiv.org/abs/2104.00298
FBNet-C - https://arxiv.org/abs/1812.03443
MixNet - https://arxiv.org/abs/1907.09595
MNASNet B1, A1 (сжатие-возбуждение) и малый — https://arxiv.org/abs/1807.11626
MobileNet-V2 - https://arxiv.org/abs/1801.04381
Однопутевой NAS — https://arxiv.org/abs/1904.02877
TinyNet - https://arxiv.org/abs/2010.14819
EfficientViT (MIT) - https://arxiv.org/abs/2205.14756
EfficientViT (MSRA) - https://arxiv.org/abs/2305.07027
Выход в открытый космос - https://arxiv.org/abs/2211.07636
ЕВА-02 - https://arxiv.org/abs/2303.11331
ФастВиТ - https://arxiv.org/abs/2303.14189
ФлексиВиТ - https://arxiv.org/abs/2212.08013
FocalNet (сети фокальной модуляции) — https://arxiv.org/abs/2203.11926
GCViT (преобразователь глобального контекстного зрения) — https://arxiv.org/abs/2206.09959
GhostNet - https://arxiv.org/abs/1911.11907
GhostNet-V2 - https://arxiv.org/abs/2211.12905
gMLP - https://arxiv.org/abs/2105.08050
Сети с эффективным использованием графического процессора — https://arxiv.org/abs/2006.14090
Halo Nets - https://arxiv.org/abs/2103.12731
HGNet/HGNet-V2 — подлежит уточнению
HRNet - https://arxiv.org/abs/1908.07919
InceptionNeXt - https://arxiv.org/abs/2303.16900
Начало-V3 - https://arxiv.org/abs/1512.00567
Inception-ResNet-V2 и Inception-V4 — https://arxiv.org/abs/1602.07261
Лямбда-сети — https://arxiv.org/abs/2102.08602
LeViT (Трансформатор зрения в одежде ConvNet) - https://arxiv.org/abs/2104.01136
MaxViT (Многоосевой преобразователь зрения) — https://arxiv.org/abs/2204.01697
MetaFormer (PoolFormer-v2, ConvFormer, CAFormer) - https://arxiv.org/abs/2210.13452
MLP-Микшер - https://arxiv.org/abs/2105.01601
MobileCLIP - https://arxiv.org/abs/2311.17049
MobileNet-V3 (MBConvNet с эффективной головкой) — https://arxiv.org/abs/1905.02244
FBNet-V3 - https://arxiv.org/abs/2006.02049
HardCoRe-NAS - https://arxiv.org/abs/2102.11646
LCNet - https://arxiv.org/abs/2109.15099
MobileNetV4 - https://arxiv.org/abs/2404.10518
MobileOne - https://arxiv.org/abs/2206.04040
МобилВиТ - https://arxiv.org/abs/2110.02178
MobileViT-V2 - https://arxiv.org/abs/2206.02680
MViT-V2 (Улучшенный многомасштабный преобразователь машинного зрения) — https://arxiv.org/abs/2112.01526
NASNet-A - https://arxiv.org/abs/1707.07012
НесТ - https://arxiv.org/abs/2105.12723
Некст-ВиТ - https://arxiv.org/abs/2207.05501
NFNet-F - https://arxiv.org/abs/2102.06171
NF-RegNet/NF-ResNet - https://arxiv.org/abs/2101.08692
PNasNet - https://arxiv.org/abs/1712.00559
PoolFormer (МетаФормер) - https://arxiv.org/abs/2111.11418
Vision Transformer на основе пула (PiT) — https://arxiv.org/abs/2103.16302
PVT-V2 (Улучшенный пирамидальный преобразователь зрения) — https://arxiv.org/abs/2106.13797
RDNet (Перезагрузка DenseNets) — https://arxiv.org/abs/2403.19588
РегНет - https://arxiv.org/abs/2003.13678
RegNetZ - https://arxiv.org/abs/2103.06877
РепВГГ - https://arxiv.org/abs/2101.03697
RepGhostNet — https://arxiv.org/abs/2211.06088
РепВиТ - https://arxiv.org/abs/2307.09283
ResMLP - https://arxiv.org/abs/2105.03404
Реснет/Реснекст
ResNet (v1b/v1.5) — https://arxiv.org/abs/1512.03385
ResNeXt - https://arxiv.org/abs/1611.05431
«Мешок с хитростями» / вариации глюона C, D, E, S - https://arxiv.org/abs/1812.01187
Предварительно обученный Instagram со слабым контролем (WSL) / настроенный ImageNet ResNeXt101 — https://arxiv.org/abs/1805.00932
Полуконтролируемый (SSL)/полуслабо контролируемый (SWSL) ResNet/ResNeXts — https://arxiv.org/abs/1905.00546
ECA-Net (ECAResNet) - https://arxiv.org/abs/1910.03151v4
Сети сжатия и возбуждения (SEResNet) — https://arxiv.org/abs/1709.01507
ResNet-RS - https://arxiv.org/abs/2103.07579
Res2Net - https://arxiv.org/abs/1904.01169
РесНеСт - https://arxiv.org/abs/2004.08955
ReXNet - https://arxiv.org/abs/2007.00992
SelecSLS - https://arxiv.org/abs/1907.00837
Сети выборочного ядра - https://arxiv.org/abs/1903.06586
Sequencer2D - https://arxiv.org/abs/2205.01972
Swin S3 (AutoFormerV2) - https://arxiv.org/abs/2111.14725
Свинцовый трансформатор - https://arxiv.org/abs/2103.14030
Swin Transformer V2 - https://arxiv.org/abs/2111.09883
Трансформер-иН-Трансформер (ТНТ) - https://arxiv.org/abs/2103.00112
TResNet - https://arxiv.org/abs/2003.13630
Близнецы (Пространственное внимание в преобразователях зрения) - https://arxiv.org/pdf/2104.13840.pdf
Висформер - https://arxiv.org/abs/2104.12533
Трансформатор видения - https://arxiv.org/abs/2010.11929
Витамин - https://arxiv.org/abs/2404.02132
VOLO (Vision Outlooker) — https://arxiv.org/abs/2106.13112
VovNet V2 и V1 - https://arxiv.org/abs/1911.06667
Xception - https://arxiv.org/abs/1610.02357
Xception (Modified Aligned, Gluon) — https://arxiv.org/abs/1802.02611
Xception (Modified Aligned, TF) — https://arxiv.org/abs/1802.02611
XCiT (преобразователи кросс-ковариационных изображений) — https://arxiv.org/abs/2106.09681
Включенные оптимизаторы доступны через фабричные методы create_optimizer
/ create_optimizer_v2
:
adabelief
реализация AdaBelief, адаптированная из https://github.com/juntang-zhuang/Adabelief-Optimizer — https://arxiv.org/abs/2010.07468.
adafactor
адаптирован из реализации FAIRSeq - https://arxiv.org/abs/1804.04235
adahessian
Дэвида Сэмюэля - https://arxiv.org/abs/2006.00719
adamp
и sgdp
от Naver ClovAI - https://arxiv.org/abs/2006.08217
adan
реализация Адана, адаптированная из https://github.com/sail-sg/Adan — https://arxiv.org/abs/2208.06677.
lamb
реализация Lamb и LambC (с отсечением доверия), очищенная и модифицированная для поддержки использования с XLA — https://arxiv.org/abs/1904.00962
lars
реализацию LARS и LARC (с ограничением доверия) - https://arxiv.org/abs/1708.03888
lion
и реализация Lion адаптированы из https://github.com/google/automl/tree/master/lion - https://arxiv.org/abs/2302.06675
lookahead
адаптирован из impl Лиама - https://arxiv.org/abs/1907.08610
madgrad
— и реализация MADGRAD, адаптированная с https://github.com/facebookresearch/madgrad — https://arxiv.org/abs/2101.11075
nadam
реализация Адама с импульсом Нестерова
nadamw
реализация AdamW (Адама с разделенным распадом веса) с импульсом Нестерова. Упрощенная реализация на основе https://github.com/mlcommons/algorithmic-efficiency.
novograd
Масаси Кимура - https://arxiv.org/abs/1905.11286
radam
Лиюань Лю - https://arxiv.org/abs/1908.03265
rmsprop_tf
я адаптировал из PyTorch RMSProp. Воспроизводит значительно улучшенное поведение Tensorflow RMSProp.
sgdw
и реализация SGD с несвязанным распадом веса
оптимизаторы fused
по имени с установленным NVIDIA Apex
оптимизаторы bits
по имени с установленными BitsAndBytes
Случайное стирание из Чжунь Чжун - https://arxiv.org/abs/1708.04896)
Путаница - https://arxiv.org/abs/1710.09412
CutMix - https://arxiv.org/abs/1905.04899
AutoAugment (https://arxiv.org/abs/1805.09501) и RandAugment (https://arxiv.org/abs/1909.13719) Конфигурации ImageNet, смоделированные после реализации для обучения EfficientNet (https://github.com/tensorflow/tpu/ blob/master/models/official/efficientnet/autoaugment.py)
AugMix с потерей JSD, JSD с поддержкой чистого + расширенного микширования также работает с AutoAugment и RandAugment - https://arxiv.org/abs/1912.02781
SplitBachNorm - позволяет разделить слои нормы партии на чистые и дополненные (вспомогательные нормы партии) данные.
DropPath, также известный как «Стохастическая глубина» — https://arxiv.org/abs/1603.09382
ДропБлок - https://arxiv.org/abs/1810.12890
Пул размытия — https://arxiv.org/abs/1904.11486
Включено несколько (менее распространенных) функций, которые я часто использую в своих проектах. Многие из их дополнений являются причиной того, что я сохраняю свой собственный набор моделей вместо использования чужих через PIP:
Все модели имеют общий интерфейс конфигурации по умолчанию и API для
доступ/изменение классификатора — get_classifier
и reset_classifier
выполнение прямого прохода только по функциям forward_features
(см. документацию)
это позволяет легко писать согласованные сетевые оболочки, которые работают с любой моделью.
Все модели поддерживают извлечение многомасштабных карт объектов (пирамид объектов) с помощью create_model (см. документацию).
create_model(name, features_only=True, out_indices=..., output_stride=...)
Аргумент создания out_indices
указывает, какие карты объектов возвращать. Эти индексы отсчитываются от 0 и обычно соответствуют уровню объектов C(i + 1)
.
Аргумент создания output_stride
управляет выходным шагом сети с помощью расширенных сверток. Большинство сетей по умолчанию имеют шаг 32. Не все сети поддерживают это.
количество каналов карты объектов, уровень уменьшения (шаг) можно запросить ПОСЛЕ создания модели через элемент .feature_info
Все модели имеют согласованный предварительно подготовленный весовой загрузчик, который при необходимости адаптирует последнюю линейную линию, а при желании — от 3 до 1 канала входа.
Высокопроизводительные эталонные сценарии обучения, проверки и вывода, которые работают в нескольких режимах процесса/графического процессора:
NVIDIA DDP с одним графическим процессором на процесс, наличие нескольких процессов с APEX (дополнительно AMP смешанной точности)
PyTorch DistributedDataParallel с несколькими графическими процессорами, один процесс (AMP отключен, так как при включении происходит сбой)
PyTorch с одним графическим процессором и одним процессом (дополнительно AMP)
Реализация динамического глобального пула, которая позволяет выбирать между средним пулом, максимальным пулом, средним + макс или concat([среднее, макс]) при создании модели. Все глобальные пулы по умолчанию являются адаптивными средними и совместимы с предварительно обученными весами.
Оболочка «Пул тестового времени», которая может обертывать любую из включенных моделей и обычно обеспечивает повышенную производительность при выполнении вывода с входными изображениями, размер которых превышает размер обучения. Идея адаптирована из оригинальной реализации DPN при портировании (https://github.com/cypw/DPNs)
Планировщики скорости обучения
Планировщики AllenNLP
FAIRseq lr_scheduler
SGDR: стохастический градиентный спуск с теплым перезапуском (https://arxiv.org/abs/1608.03983)
Идеи, взятые из
Планировщики включают step
, cosine
с перезапусками, tanh
с перезапусками, plateau
«Пространство-глубина» от mrT23 (https://arxiv.org/abs/1801.04590) – оригинальная статья?
Адаптивное отсечение градиента (https://arxiv.org/abs/2102.06171, https://github.com/deepmind/deepmind-research/tree/master/nfnets)
Обширный выбор модулей канального и/или пространственного внимания:
Узкий трансформатор - https://arxiv.org/abs/2101.11605
CBAM - https://arxiv.org/abs/1807.06521
Эффективное сжатие-возбуждение (ESE) - https://arxiv.org/abs/1911.06667
Эффективное внимание канала (ECA) – https://arxiv.org/abs/1910.03151
Сбор-возбуждение (GE) - https://arxiv.org/abs/1810.12348
Глобальный контекст (GC) — https://arxiv.org/abs/1904.11492.
Гало - https://arxiv.org/abs/2103.12731
Инволюция - https://arxiv.org/abs/2103.06255
Лямбда-слой — https://arxiv.org/abs/2102.08602
Нелокальный (Нидерланды) - https://arxiv.org/abs/1711.07971
Сжатие и возбуждение (SE) - https://arxiv.org/abs/1709.01507
Выборочное ядро (SK) - (https://arxiv.org/abs/1903.06586
Сплит (SPLAT) - https://arxiv.org/abs/2004.08955
Смещенное окно (SWIN) — https://arxiv.org/abs/2103.14030
Результаты проверки модели можно найти в таблицах результатов.
Официальную документацию можно найти по адресу https://huggingface.co/docs/hub/timm. Предоставление документации приветствуется.
Начало работы с моделями изображений PyTorch (timm): Руководство для практикующего Криса Хьюза — это обширная запись в блоге, подробно освещающая многие аспекты timm
.
timmdocs — это альтернативный набор документации для timm
. Большое спасибо Аману Ароре за его усилия по созданию тиммдоков.
paperswithcode — хороший ресурс для просмотра моделей в timm
.
Корневая папка репозитория содержит сценарии обучения, проверки и вывода, которые работают с включенными моделями и другими функциями этого репозитория. Их можно адаптировать для других наборов данных и вариантов использования с небольшими хаками. См. документацию.
Одним из величайших достоинств PyTorch является сообщество и его вклад. Ниже перечислены некоторые из моих любимых ресурсов, которые хорошо сочетаются с представленными здесь моделями и компонентами.
Детектор2 - https://github.com/facebookresearch/detectron2
Модели сегментации (семантические) — https://github.com/qubvel/segmentation_models.pytorch
EfficientDet (Obj Det, Semantic скоро) — https://github.com/rwightman/efficientdet-pytorch
Альбументации - https://github.com/albumentations-team/albumentations
Корния - https://github.com/kornia/kornia
RepDistiller — https://github.com/HobbitLong/RepDistiller
torchdistill - https://github.com/yoshitomo-matsubara/torchdistill
Обучение метрике PyTorch — https://github.com/KevinMusgrave/pytorch-metric-learning
фастай - https://github.com/fastai/fastai
Код здесь лицензирован Apache 2.0. Я позаботился о том, чтобы любой включенный или адаптированный сторонний код имел совместимые (разрешительные) лицензии, такие как MIT, BSD и т. д. Я постарался избежать любых конфликтов GPL/LGPL. Тем не менее, вы несете ответственность за обеспечение соблюдения лицензий здесь и условий любых зависимых лицензий. Там, где это возможно, я связал источники/ссылки на различные компоненты в строках документации. Если вы думаете, что я что-то пропустил, пожалуйста, создайте проблему.
На данный момент все предварительно обученные веса, доступные здесь, предварительно обучены в ImageNet, а некоторые из них имеют дополнительную предварительную подготовку (см. Дополнительное примечание ниже). ImageNet был выпущен только для некоммерческих исследовательских целей (https://image-net.org/download). Неясно, как это повлияет на использование предварительно обученных весов из этого набора данных. Любые модели, которые я обучил с помощью ImageNet, созданы для исследовательских целей, и следует предположить, что к весам применяется исходная лицензия на набор данных. Если вы собираетесь использовать предварительно обученные веса в коммерческом продукте, лучше всего обратиться за юридической консультацией.
Несколько включенных здесь весов или ссылок были предварительно обучены с использованием собственных наборов данных, к которым у меня нет доступа. К ним относятся модели Facebook WSL, SSL, SWSL ResNe(Xt) и Google Noisy Student EfficientNet. Модели Facebook имеют явную некоммерческую лицензию (CC-BY-NC 4.0, https://github.com/facebookresearch/semi-supervised-ImageNet1K-models, https://github.com/facebookresearch/WSL-Images). . Модели Google, похоже, не имеют каких-либо ограничений, кроме лицензии Apache 2.0 (и проблем ImageNet). В любом случае с любыми вопросами вам следует обращаться в Facebook или Google.
@misc{rw2019timm, автор = {Росс Уайтман}, title = {PyTorch Image Models}, год = {2019}, издатель = {GitHub}, журнал = {репозиторий GitHub}, doi = {10.5281/zenodo.4414861}, Howpublished = {url{https://github.com/rwightman/pytorch-image-models}}}