keras_cv_attention_models

GitHub
625 97 中等 1 次阅读 4天前MIT语言模型图像插件音频开发框架
AI 解读 由 AI 自动生成,仅供参考

keras_cv_attention_models 是一个专为 Keras 和 TensorFlow 生态打造的开源模型库,旨在让开发者能够轻松调用并复现当前最前沿的计算机视觉与语言模型。它解决了在 Keras 环境中难以直接获取最新学术成果(如 ConvNeXt、Swin Transformer、YOLOv8、LLaMA2 等)的痛点,将原本分散且实现复杂的论文代码统一封装为简洁易用的接口。

无论是需要快速验证想法的算法研究人员,还是致力于将先进模型部署到生产环境的工程师,都能从中受益。用户只需几行代码即可实例化包括识别、检测、分割乃至大语言模型在内的上百种架构,并支持加载预训练权重进行推理或微调。

其独特亮点在于极高的模型覆盖度,不仅囊括了 EfficientNet、MobileViT 等经典网络,更紧跟前沿收录了 Hiera、VanillaNet 等新锐模型。此外,它还提供了从 ImageNet/COCO 训练脚本到 TFLite 端侧转换的一站式工作流支持。需要注意的是,目前该库主要兼容传统 Keras 环境,若使用新版 TensorFlow 需进行特定配置。总体而言,它是连接学术创新与工程落地的高效桥梁。

使用场景

某工业质检团队需要在边缘设备(如 NVIDIA Jetson)上部署高精度缺陷检测模型,以实时识别生产线上的微小瑕疵。

没有 keras_cv_attention_models 时

  • 模型选择受限:开发者只能依赖官方 TensorFlow 库中有限的预训练模型(如 ResNet 或基础 YOLO),难以尝试最新的 EfficientViT、FastViT 等专为边缘计算优化的架构。
  • 复现成本高昂:若想使用论文中提出的先进模型(如 CoAtNet 或 Hiera),需手动从零编写复杂的注意力机制代码,耗时数周且极易引入 Bug。
  • 部署流程繁琐:将自定义模型转换为 TFLite 格式常在算子支持上报错,缺乏统一的转换脚本,导致模型无法在移动端流畅运行。
  • 权重加载困难:不同来源的预训练权重格式混乱,缺乏标准化的加载接口,经常因维度不匹配导致训练失败。

使用 keras_cv_attention_models 后

  • 架构即插即用:通过 kecam.models.FastViT() 等一行代码即可调用数十种前沿模型,直接获得针对边缘设备优化的网络结构。
  • 零样本快速验证:内置了完整的模型构建与权重自动下载功能,无需手动处理权重映射,几分钟内即可完成新架构的性能基准测试。
  • 一键端侧部署:工具原生支持 TFLite 转换流程,自动处理算子兼容性问题,让复杂注意力模型能顺利部署到产线工控机上。
  • 统一开发体验:提供标准化的训练与评估脚本(如 COCO/Imagenet),屏蔽了不同模型间的实现差异,让团队能专注于数据优化而非代码调试。

keras_cv_attention_models 将原本需要数周的研究与工程落地工作压缩至小时级,让中小团队也能轻松驾驭最前沿的视觉算法。

运行环境要求

操作系统
  • 未说明
GPU
  • 可选
  • 推理测试基于 NVIDIA Tesla T4 (CUDA 12.0.1)
  • 支持 CPU 运行
  • 若使用 PyTorch 后端需相应 GPU 环境
内存

未说明

依赖
notes重要警告:当前不兼容 Keras 3.x。若使用 TensorFlow>=2.16.0,必须手动安装 tf-keras 并设置环境变量 export TF_USE_LEGACY_KERAS=1,或在导入 Tensorflow 前先导入本包。不建议直接加载 .h5 模型文件,应通过代码构建模型后加载权重。支持切换 PyTorch 或 Keras Core 作为后端。
python未说明
tensorflow>=2.16.0 (需注意 Keras 兼容性)
tf-keras (当 TF>=2.16.0 时必需)
torch (可选后端)
thop (PyTorch 后端计算 FLOPs 时必需)
tf2onnx, onnx, onnxsim, onnxruntime (导出 ONNX 时必需)
matplotlib
pandas
numpy
keras_cv_attention_models hero image

快速开始

Keras_cv_attention_models


  • 警告:目前与 keras 3.x 不兼容。如果使用 tensorflow>=2.16.0,需要手动安装 pip install tf-keras~=$(pip show tensorflow | awk -F ': ' '/Version/{print $2}')。导入时,请先于 Tensorflow 导入本包,或设置 export TF_USE_LEGACY_KERAS=1
  • 不建议直接从 h5 文件下载并加载模型,最好通过构建模型后再加载权重,例如 import kecam; mm = kecam.models.LCNet050()
  • 用于 TF 的 coco_train_script.py 仍在测试中……

通用用法

基础

  • 默认导入 在 README 中使用时不会特别说明。
    import os
    import sys
    import tensorflow as tf
    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    from tensorflow import keras
    
  • 以 pip 包形式安装。kecam 是本包的简称。注意:pip 包 kecam 不设定任何后端要求,请确保事先已安装 Tensorflow 或 PyTorch。如需使用 PyTorch 后端,请参阅 Keras PyTorch 后端
    pip install -U kecam
    # 或
    pip install -U keras-cv-attention-models
    # 或
    pip install -U git+https://github.com/leondgarse/keras_cv_attention_models
    
    具体用法请参考各子目录。
  • 基础模型预测
    from keras_cv_attention_models import volo
    mm = volo.VOLO_d1(pretrained="imagenet")
    
    """ 运行预测 """
    import tensorflow as tf
    from tensorflow import keras
    from keras_cv_attention_models.test_images import cat
    img = cat()
    imm = keras.applications.imagenet_utils.preprocess_input(img, mode='torch')
    pred = mm(tf.expand_dims(tf.image.resize(imm, mm.input_shape[1:3]), 0)).numpy()
    pred = tf.nn.softmax(pred).numpy()  # 如果分类器激活函数不是 softmax
    print(keras.applications.imagenet_utils.decode_predictions(pred)[0])
    # [('n02124075', '埃及猫', 0.99664897),
    #  ('n02123045', '虎斑猫', 0.0007249644),
    #  ('n02123159', '虎猫', 0.00020345),
    #  ('n02127052', '猞猁', 5.4973923e-05),
    #  ('n02123597', '暹罗猫', 2.675306e-05)]
    
    或者直接使用模型预设的 preprocess_inputdecode_predictions
    from keras_cv_attention_models import coatnet
    mm = coatnet.CoAtNet0()
    
    from keras_cv_attention_models.test_images import cat
    preds = mm(mm.preprocess_input(cat()))
    print(mm.decode_predictions(preds))
    # [[('n02124075', '埃及猫', 0.9999875), ('n02123045', '虎斑猫', 5.194884e-06), ...]]
    
    预设的 preprocess_inputdecode_predictions 也兼容 PyTorch 后端。
    os.environ['KECAM_BACKEND'] = 'torch'
    
    from keras_cv_attention_models import caformer
    mm = caformer.CAFormerS18()
    # >>>> 使用 PyTorch 后端
    # >>>> 对齐输入形状:[3, 224, 224]
    # >>>> 从 ~/.keras/models/caformer_s18_224_imagenet.h5 加载预训练权重
    

from keras_cv_attention_models.test_images import cat preds = mm(mm.preprocess_input(cat())) print(preds.shape) # torch.Size([1, 1000]) print(mm.decode_predictions(preds)) # [[('n02124075', '埃及猫', 0.8817097), ('n02123045', '虎斑猫', 0.009335292), ...]] ```

  • 设置 num_classes=0 以排除模型顶部的 GlobalAveragePooling2D + Dense 层。
    from keras_cv_attention_models import resnest
    mm = resnest.ResNest50(num_classes=0)
    print(mm.output_shape)
    # (None, 7, 7, 2048)
    
  • 如果 num_classes={自定义输出类别} 不是 10000,则会跳过加载头部的 Dense 层权重。这是因为使用了 model.load_weights(weight_file, by_name=True, skip_mismatch=True) 来加载权重。
    from keras_cv_attention_models import swin_transformer_v2
    
    mm = swin_transformer_v2.SwinTransformerV2Tiny_window8(num_classes=64)
    # >>>> 从 ~/.keras/models/swin_transformer_v2_tiny_window8_256_imagenet.h5 加载预训练权重
    # WARNING:tensorflow:由于权重 predictions/kernel:0 的形状不匹配,跳过加载第 601 层(名为 predictions)的权重。该权重期望形状为 (768, 64),而保存的权重形状为 (768, 1000)。
    # WARNING:tensorflow:由于权重 predictions/bias:0 的形状不匹配,跳过加载第 601 层(名为 predictions)的权重。该权重期望形状为 (64,),而保存的权重形状为 (1000,)。
    
  • 可以通过设置 pretrained="xxx.h5" 重新加载自己的模型权重。与直接调用 model.load_weights 相比,这种方法在重新加载具有不同 input_shape 且权重形状不匹配的模型时更为优越。
    import os
    from keras_cv_attention_models import coatnet
    pretrained = os.path.expanduser('~/.keras/models/coatnet0_224_imagenet.h5')
    mm = coatnet.CoAtNet1(input_shape=(384, 384, 3), pretrained=pretrained)  # 没什么意义,只是为了展示用法
    
  • 可以使用别名 kecam 代替 keras_cv_attention_models。它只是一个仅包含 from keras_cv_attention_models import *__init__.py 文件。
    import kecam
    mm = kecam.yolor.YOLOR_CSP()
    imm = kecam.test_images.dog_cat()
    preds = mm(mm.preprocess_input(imm))
    bboxs, lables, confidences = mm.decode_predictions(preds)[0]
    kecam.coco.show_image_with_bboxes(imm, bboxs, lables, confidences)
    
  • 使用 TF 2.0 功能:FLOPs 计算 #32809 中的方法计算 FLOPs。对于 PyTorch 后端,需要安装 thoppip install thop
    from keras_cv_attention_models import coatnet, resnest, model_surgery
    
    model_surgery.get_flops(coatnet.CoAtNet0())
    # >>>> FLOPs: 4,221,908,559, GFLOPs: 4.2219G
    model_surgery.get_flops(resnest.ResNest50())
    # >>>> FLOPs: 5,378,399,992, GFLOPs: 5.3784G
    
  • [已弃用] tensorflow_addons 默认不会被导入。如果直接从 h5 文件中加载依赖于 GroupNormalization 的模型(如 MobileViTV2),则需要先手动导入 tensorflow_addons
    import tensorflow_addons as tfa
    
    model_path = os.path.expanduser('~/.keras/models/mobilevit_v2_050_256_imagenet.h5')
    mm = keras.models.load_model(model_path)
    
  • 将 TF 模型导出为 ONNX 格式。对于 TF 需要 tf2onnxpip install onnx tf2onnx onnxsim onnxruntime。对于 PyTorch 后端,PyTorch 本身支持导出 ONNX 模型。
    from keras_cv_attention_models import volo, nat, model_surgery
    mm = nat.DiNAT_Small(pretrained=True)
    model_surgery.export_onnx(mm, fuse_conv_bn=True, batch_size=1, simplify=True)
    # 导出的简化 ONNX:dinat_small.onnx
    
    # 运行测试
    from keras_cv_attention_models.imagenet import eval_func
    aa = eval_func.ONNXModelInterf(mm.name + '.onnx')
    inputs = np.random.uniform(size=[1, *mm.input_shape[1:]]).astype('float32')
    print(f"{np.allclose(aa(inputs), mm(inputs), atol=1e-5) = }")
    # np.allclose(aa(inputs), mm(inputs), atol=1e-5) = True
    
  • 模型摘要 model_summary.csv 包含汇总的模型信息。
    • params 表示模型参数数量,单位为 M
    • flops 表示 FLOPs 数量,单位为 G
    • input 表示模型输入形状
    • acc_metrics 表示识别模型的 Imagenet Top1 Accuracy,检测模型的 COCO val AP
    • inference_qps 表示使用 batch_size=1 + trtexec 时的 T4 推理每秒查询数
    • extra 表示是否有额外的训练信息。
    from keras_cv_attention_models import plot_func
    plot_series = [
        "efficientnetv2", 'tinynet', 'lcnet', 'mobilenetv3', 'fasternet', 'fastervit', 'ghostnet',
        'inceptionnext', 'efficientvit_b', 'mobilevit', 'convnextv2', 'efficientvit_m', 'hiera',
    ]
    plot_func.plot_model_summary(
        plot_series, model_table="model_summary.csv", log_scale_x=True, allow_extras=['mae_in1k_ft1k']
    )
    

    model_summary

  • 代码格式 使用 line-length=160
    find ./* -name "*.py" | grep -v __init__ | xargs -I {} black -l 160 {}
    

T4 推理

  • 模型表格中的 T4 推理 数据是在 Tesla T4 上使用 trtexec 测试得到的,使用的环境为 CUDA=12.0.1-1, Driver=525.60.13。所有模型均使用 PyTorch 后端导出为 ONNX 格式,且仅使用 batch_size=1注意:这些数据仅供参考,在不同的批量大小、基准测试工具、平台或实现方式下可能会有所不同
  • 所有结果均在 colab 的 trtexec.ipynb 中测试完成,因此任何人都可以复现。
    os.environ["KECAM_BACKEND"] = "torch"
    
    from keras_cv_attention_models import convnext, test_images, imagenet
    # >>>> 使用 PyTorch 后端
    mm = convnext.ConvNeXtTiny()
    mm.export_onnx(simplify=True)
    # 导出的 ONNX:convnext_tiny.onnx
    # 正在运行 onnxsim.simplify...
    # 导出的简化 ONNX:convnext_tiny.onnx
    
    # ONNX 运行测试
    tt = imagenet.eval_func.ONNXModelInterf('convnext_tiny.onnx')
    print(mm.decode_predictions(tt(mm.preprocess_input(test_images.cat()))))
    # [[('n02124075', '埃及猫', 0.880507), ('n02123045', '虎斑猫', 0.0047998047), ...]]
    
    """ 运行 trtexec 基准测试 """
    !trtexec --onnx=convnext_tiny.onnx --fp16 --allowGPUFallback --useSpinWait --useCudaGraph
    

  • attention_layers 仅是一个 __init__.py 文件,它导入了模型架构中定义的核心层。例如来自 botnetRelativePositionalEmbedding,来自 volooutlook_attention,以及其他许多 Positional Embedding Layers / Attention Blocks
    from keras_cv_attention_models import attention_layers
    aa = attention_layers.RelativePositionalEmbedding()
    print(f"{aa(tf.ones([1, 4, 14, 16, 256])).shape = }")
    # aa(tf.ones([1, 4, 14, 16, 256])).shape = TensorShape([1, 4, 14, 16, 14, 16])
    

模型手术

  • model_surgery 包含在模型构建后用于修改模型参数的函数。
from keras_cv_attention_models import model_surgery
mm = keras.applications.ResNet50()  # 可训练参数:25,583,592

# 将所有ReLU替换为PReLU。可训练参数:25,606,312
mm = model_surgery.replace_ReLU(mm, target_activation='PReLU')

# 融合卷积层和批归一化层。可训练参数:25,553,192
mm = model_surgery.convert_to_fused_conv_bn_model(mm)

ImageNet 训练与评估

  • ImageNet 包含更详细的使用说明及一些对比结果。
  • 使用 tensorflow_datasets 初始化 ImageNet 数据集 #9
  • 对于自定义数据集,可以使用 custom_dataset_script.py 创建一个 json 格式的文件,该文件可用作训练时的 --data_name xxx.json 参数;详细用法请参见 自定义识别数据集
  • 另一种创建自定义数据集的方法是使用 tfds.load,请参考 编写自定义数据集 和 @Medicmind 的 从 tfds 创建私有 tensorflow_datasets #48
  • 使用 keras_cv_attention_models 在 AWS Sagemaker 上运行估算器任务的示例,请参见 @Medicmind 提供的 AWS Sagemaker 脚本示例
  • aotnet.AotNet50 的默认参数设置是一种典型的 ResNet50 架构,其中 Conv2D 使用 use_bias=False,且填充方式类似于 PyTorch
  • train_script.py 的默认参数配置类似于 ResNet 再出击:timm 中改进的训练流程 中的 A3 配置,即 batch_size=256, input_shape=(160, 160)
    # 默认启用抗锯齿缩放,可通过设置 `--disable_antialias` 关闭。
    CUDA_VISIBLE_DEVICES='0' TF_XLA_FLAGS="--tf_xla_auto_jit=2" python3 train_script.py --seed 0 -s aotnet50
    
    # 使用输入尺寸 (224, 224) 进行评估。
    # 抗锯齿的使用应与训练时一致。
    CUDA_VISIBLE_DEVICES='1' python3 eval_script.py -m aotnet50_epoch_103_val_acc_0.7674.h5 -i 224 --central_crop 0.95
    # >>>> 准确率 top1: 0.78466 top5: 0.94088
    
    aotnet50_imagenet
  • 从断点恢复:通过设置 --restore_path--initial_epoch 来实现,其他参数保持不变。restore_path 的优先级高于 modeladditional_model_kwargs,同时会恢复 optimizerlossinitial_epoch 主要用于学习率调度器。如果不确定停止的位置,可以查看 checkpoints/{save_name}_hist.json
    import json
    with open("checkpoints/aotnet50_hist.json", "r") as ff:
        aa = json.load(ff)
    len(aa['lr'])
    # 41 ==> 已完成 41 个 epoch,因此 initial_epoch 为 41,从第 42 个 epoch 开始继续训练。
    
    CUDA_VISIBLE_DEVICES='0' TF_XLA_FLAGS="--tf_xla_auto_jit=2" python3 train_script.py --seed 0 -r checkpoints/aotnet50_latest.h5 -I 41
    # >>>> 从模型:checkpoints/aotnet50_latest.h5 恢复
    # 第 42/105 个 epoch
    
  • eval_script.py 用于评估模型的准确率。EfficientNetV2 自测 ImageNet 准确率 #19 展示了不同参数如何影响模型的准确率。
    # 评估预训练的内置模型
    CUDA_VISIBLE_DEVICES='1' python3 eval_script.py -m regnet.RegNetZD8
    # 评估预训练的 timm 模型
    CUDA_VISIBLE_DEVICES='1' python3 eval_script.py -m timm.models.resmlp_12_224 --input_shape 224
    
    # 评估特定的 h5 模型
    CUDA_VISIBLE_DEVICES='1' python3 eval_script.py -m checkpoints/xxx.h5
    # 评估特定的 tflite 模型
    CUDA_VISIBLE_DEVICES='1' python3 eval_script.py -m xxx.tflite
    
  • 渐进式训练 参考 PDF 2104.00298 EfficientNetV2:更小的模型和更快的训练。AotNet50 A3 渐进式输入尺寸 96 128 160
    CUDA_VISIBLE_DEVICES='1' TF_XLA_FLAGS="--tf_xla_auto_jit=2" python3 progressive_train_script.py \
    --progressive_epochs 33 66 -1 \
    --progressive_input_shapes 96 128 160 \
    --progressive_magnitudes 2 4 6 \
    -s aotnet50_progressive_3_lr_steps_100 --seed 0
    
    aotnet50_progressive_160
  • 使用 freeze_backbonefreeze_norm_layers 进行迁移学习:EfficientNetV2B0 在 cifar10 上进行迁移学习,测试冻结骨干网络 #55
  • CIFAR10 上的 Token Label 训练与测试 #57目前效果未达预期Token label 是对 Github zihangJiang/TokenLabeling 的实现,相关论文为 PDF 2104.10858 所有 token 都重要:用于训练更好视觉 Transformer 的 Token Labeling

COCO 训练与评估

  • 目前仍在测试中

  • COCO 提供了更详细的使用说明。

  • custom_dataset_script.py 可用于生成 json 格式的文件,该文件可作为 --data_name xxx.json 参数用于训练。详细用法请参见 自定义检测数据集

  • coco_train_script.py 的默认参数为 EfficientDetD0,配置为 input_shape=(256, 256, 3), batch_size=64, mosaic_mix_prob=0.5, freeze_backbone_epochs=32, total_epochs=105。从技术上讲,任何 金字塔结构骨干 + EfficientDet / YOLOX 头部 / YOLOR 头部 + 无锚点 / yolor / efficientdet 锚点 的组合都是支持的。

  • 目前支持四种类型的锚点,参数 anchors_mode 用于控制使用哪种锚点,取值为 ["efficientdet", "anchor_free", "yolor", "yolov8"]。对于 det_header 预设,默认为 None

  • 注意:YOLOV8 的边界框输出长度默认为 regression_len=64。通常其他检测模型为 4,而对于 yolov8 则是 reg_max=16 -> regression_len = 16 * 4 == 64

    anchors_mode use_object_scores num_anchors anchor_scale aspect_ratios num_scales grid_zero_start
    efficientdet False 9 4 [1, 2, 0.5] 3 False
    anchor_free True 1 1 [1] 1 True
    yolor True 3 None 预设 None offset=0.5
    yolov8 False 1 1 [1] 1 False
    # 默认 EfficientDetD0
    CUDA_VISIBLE_DEVICES='0' python3 coco_train_script.py
    # 默认 EfficientDetD0 使用 input_shape 512、优化器 adamw、冻结骨干 16 轮、总共 50 + 5 轮
    CUDA_VISIBLE_DEVICES='0' python3 coco_train_script.py -i 512 -p adamw --freeze_backbone_epochs 16 --lr_decay_steps 50
    
    # EfficientNetV2B0 骨干 + EfficientDetD0 检测头部
    CUDA_VISIBLE_DEVICES='0' python3 coco_train_script.py --backbone efficientnet.EfficientNetV2B0 --det_header efficientdet.EfficientDetD0
    # ResNest50 骨干 + EfficientDetD0 头部,使用类似 yolox 的无锚点锚点
    CUDA_VISIBLE_DEVICES='0' python3 coco_train_script.py --backbone resnest.ResNest50 --anchors_mode anchor_free
    # UniformerSmall32 骨干 + EfficientDetD0 头部,使用 yolor 锚点
    CUDA_VISIBLE_DEVICES='0' python3 coco_train_script.py --backbone uniformer.UniformerSmall32 --anchors_mode yolor
    
    # 典型的 YOLOXS,使用无锚点锚点
    CUDA_VISIBLE_DEVICES='0' python3 coco_train_script.py --det_header yolox.YOLOXS --freeze_backbone_epochs 0
    # YOLOXS 使用 efficientdet 锚点
    CUDA_VISIBLE_DEVICES='0' python3 coco_train_script.py --det_header yolox.YOLOXS --anchors_mode efficientdet --freeze_backbone_epochs 0
    # CoAtNet0 骨干 + YOLOX 头部,使用 yolor 锚点
    CUDA_VISIBLE_DEVICES='0' python3 coco_train_script.py --backbone coatnet.CoAtNet0 --det_header yolox.YOLOX --anchors_mode yolor
    
    # 典型的 YOLOR_P6,使用 yolor 锚点
    CUDA_VISIBLE_DEVICES='0' python3 coco_train_script.py --det_header yolor.YOLOR_P6 --freeze_backbone_epochs 0
    # YOLOR_P6 使用无锚点锚点
    CUDA_VISIBLE_DEVICES='0' python3 coco_train_script.py --det_header yolor.YOLOR_P6 --anchors_mode anchor_free --freeze_backbone_epochs 0
    # ConvNeXtTiny 骨干 + YOLOR 头部,使用 efficientdet 锚点
    CUDA_VISIBLE_DEVICES='0' python3 coco_train_script.py --backbone convnext.ConvNeXtTiny --det_header yolor.YOLOR --anchors_mode yolor
    

    注:COCO 训练仍在测试中,参数和默认行为可能会发生变化。如果您愿意参与开发,请自行承担风险。

  • coco_eval_script.py 用于在 COCO 验证集上评估模型的 AP / AR。它依赖于 pip install pycocotools,该包不在项目依赖中。更多用法请参见 COCO 评估

    # EfficientDetD0 使用双线性插值,不启用抗锯齿
    CUDA_VISIBLE_DEVICES='1' python3 coco_eval_script.py -m efficientdet.EfficientDetD0 --resize_method bilinear --disable_antialias
    # >>>> [COCOEvalCallback] input_shape: (512, 512), pyramid_levels: [3, 7], anchors_mode: efficientdet
    
    # YOLOX 使用 BGR 输入格式
    CUDA_VISIBLE_DEVICES='1' python3 coco_eval_script.py -m yolox.YOLOXTiny --use_bgr_input --nms_method hard --nms_iou_or_sigma 0.65
    # >>>> [COCOEvalCallback] input_shape: (416, 416), pyramid_levels: [3, 5], anchors_mode: anchor_free
    
    # YOLOR / YOLOV7 使用 letterbox_pad 等技巧
    CUDA_VISIBLE_DEVICES='1' python3 coco_eval_script.py -m yolor.YOLOR_CSP --nms_method hard --nms_iou_or_sigma 0.65 \
    --nms_max_output_size 300 --nms_topk -1 --letterbox_pad 64 --input_shape 704
    # >>>> [COCOEvalCallback] input_shape: (704, 704), pyramid_levels: [3, 5], anchors_mode: yolor
    
    # 指定 h5 模型
    CUDA_VISIBLE_DEVICES='1' python3 coco_eval_script.py -m checkpoints/yoloxtiny_yolor_anchor.h5
    # >>>> [COCOEvalCallback] input_shape: (416, 416), pyramid_levels: [3, 5], anchors_mode: yolor
    
  • [实验性] 使用 PyTorch 后端进行训练

    import os, sys, torch
    os.environ["KECAM_BACKEND"] = "torch"
    
    from keras_cv_attention_models.yolov8 import train, yolov8
    from keras_cv_attention_models import efficientnet
    
    global_device = torch.device("cuda:0") if torch.cuda.is_available() and int(os.environ.get("CUDA_VISIBLE_DEVICES", "0")) >= 0 else torch.device("cpu")
    # 模型可训练参数:7,023,904,GFLOPs:8.1815G
    bb = efficientnet.EfficientNetV2B0(input_shape=(3, 640, 640), num_classes=0)
    model = yolov8.YOLOV8_N(backbone=bb, classifier_activation=None,pretrained=None).to(global_device)  # 注意:classifier_activation=None
    # 模型 = yolov8.YOLOV8_N(input_shape=(3, None, None),classifier_activation=None,pretrained=None).to(global_device)
    ema = train.train(model, dataset_path="coco.json", initial_epoch=0)
    

    yolov8_training

CLIP 训练与评估

  • CLIP 提供了更详细的使用说明。
  • custom_dataset_script.py 可用于生成 tsvjson 格式的文件,该文件可作为 --data_name xxx.tsv 用于训练。详细用法请参见 自定义字幕数据集
  • 使用 clip_train_script.py 在 COCO 字幕数据上训练 默认的 --data_path 是一个测试数据集 datasets/coco_dog_cat/captions.tsv
    CUDA_VISIBLE_DEVICES=1 TF_XLA_FLAGS="--tf_xla_auto_jit=2" python clip_train_script.py -i 160 -b 128 \
    --text_model_pretrained None --data_path coco_captions.tsv
    
    通过设置 KECAM_BACKEND='torch' 使用 PyTorch 后端进行训练
    KECAM_BACKEND='torch' CUDA_VISIBLE_DEVICES=1 python clip_train_script.py -i 160 -b 128 \
    --text_model_pretrained None --data_path coco_captions.tsv
    
    clip_torch_tf

文本训练

  • 目前这只是一个简单的实现,基于 Github karpathy/nanoGPT 修改而来。
  • 使用 text_train_script.py 进行训练 由于数据集是随机采样的,需要指定 steps_per_epoch
    CUDA_VISIBLE_DEVICES=1 TF_XLA_FLAGS="--tf_xla_auto_jit=2" python text_train_script.py -m LLaMA2_15M \
    --steps_per_epoch 8000 --batch_size 8 --tokenizer SentencePieceTokenizer
    
    通过设置 KECAM_BACKEND='torch' 使用 PyTorch 后端进行训练
    KECAM_BACKEND='torch' CUDA_VISIBLE_DEVICES=1 python text_train_script.py -m LLaMA2_15M \
    --steps_per_epoch 8000 --batch_size 8 --tokenizer SentencePieceTokenizer
    
    绘图
    from keras_cv_attention_models import plot_func
    hists = ['checkpoints/text_llama2_15m_tensorflow_hist.json', 'checkpoints/text_llama2_15m_torch_hist.json']
    plot_func.plot_hists(hists, addition_plots=['val_loss', 'lr'], skip_first=3)
    
    text_tf_torch

DDPM 训练

  • Stable Diffusion 提供了更详细的使用说明。
  • 注意:使用 PyTorch 后端效果更好,TensorFlow 后端在类似 --epochs 200 的训练日志中似乎更容易过拟合,且评估速度大约慢 5 倍。[???]
  • 数据集 可以是一个仅包含图像的目录,用于仅使用图像的基础 DDPM 训练;也可以是一个按照 自定义识别数据集 创建的识别 JSON 文件,该文件将使用标签作为指令进行训练。
    python custom_dataset_script.py --train_images cifar10/train/ --test_images cifar10/test/
    # >>>> 总训练样本数:50000,总测试样本数:10000,类别数:10
    # >>>> 已保存至:cifar10.json
    
  • 使用 ddpm_train_script.py 在带有标签的 CIFAR10 数据集上训练 默认的 --data_path 是内置的 cifar10
    # 将 --eval_interval 设置为 50,因为 TensorFlow 的评估速度较慢 [???]
    TF_XLA_FLAGS="--tf_xla_auto_jit=2" CUDA_VISIBLE_DEVICES=1 python ddpm_train_script.py --eval_interval 50
    
    通过设置 KECAM_BACKEND='torch' 使用 PyTorch 后端进行训练
    KECAM_BACKEND='torch' CUDA_VISIBLE_DEVICES=1 python ddpm_train_script.py
    
    ddpm_unet_test_E100

可视化

  • Visualizing 用于可视化卷积神经网络的滤波器或注意力图得分。
  • make_and_apply_gradcam_heatmap 用于 Grad-CAM 类激活可视化。
    from keras_cv_attention_models import visualizing, test_images, resnest
    mm = resnest.ResNest50()
    img = test_images.dog()
    superimposed_img, heatmap, preds = visualizing.make_and_apply_gradcam_heatmap(mm, img, layer_name="auto")
    
  • plot_attention_score_maps 用于模型注意力得分图的可视化。
    from keras_cv_attention_models import visualizing, test_images, botnet
    img = test_images.dog()
    _ = visualizing.plot_attention_score_maps(botnet.BotNetSE33T(), img)
    

TFLite 转换

  • 目前 TFLite 不支持 tf.image.extract_patchesperm 长度大于 4 的 tf.transpose。某些操作在最新版本或 tf-nightly 版本中可能已支持,例如之前不支持的 gelugroups>1Conv2D 现在已经可以正常使用。如果遇到问题,可以尝试更新 TensorFlow 版本。
  • 更多讨论请参见 将训练好的 Keras CV 注意力模型转换为 TFLite #17。一些速度测试结果可以在 如何加速量化模型的推理 #44 中找到。
  • 使用最新版 TensorFlow 时,无需再使用诸如 model_surgery.convert_groups_conv2d_2_split_conv2dmodel_surgery.convert_gelu_to_approximate 等函数。
  • 不支持将 VOLOHaloNet 模型转换为 TFLite 格式,因为这些模型需要更长的 tf.transpose perm
  • model_surgery.convert_dense_to_conv 会将所有具有 3D 或 4D 输入的 Dense 层转换为 Conv1DConv2D,因为当前 TFLite 的 xnnpack 尚不支持此类操作。
    from keras_cv_attention_models import beit, model_surgery, efficientformer, mobilevit
    
    mm = efficientformer.EfficientFormerL1()
    mm = model_surgery.convert_dense_to_conv(mm)  # 将所有 Dense 层转换
    converter = tf.lite.TFLiteConverter.from_keras_model(mm)
    open(mm.name + ".tflite", "wb").write(converter.convert())
    
    模型 Dense, use_xnnpack=false Conv, use_xnnpack=false Conv, use_xnnpack=true
    MobileViT_S 推理(平均)215371 us 推理(平均)163836 us 推理(平均)163817 us
    EfficientFormerL1 推理(平均)126829 us 推理(平均)107053 us 推理(平均)107132 us
  • model_surgery.convert_extract_patches_to_conv 会将 tf.image.extract_patches 转换为等效的 Conv2D 实现:
    from keras_cv_attention_models import cotnet, model_surgery
    from keras_cv_attention_models.imagenet import eval_func
    
    mm = cotnet.CotNetSE50D()
    mm = model_surgery.convert_groups_conv2d_2_split_conv2d(mm)
    # mm = model_surgery.convert_gelu_to_approximate(mm)  # 如果使用最新版 TFLite,则无需此步骤
    mm = model_surgery.convert_extract_patches_to_conv(mm)
    converter = tf.lite.TFLiteConverter.from_keras_model(mm)
    open(mm.name + ".tflite", "wb").write(converter.convert())
    test_inputs = np.random.uniform(size=[1, *mm.input_shape[1:]])
    print(np.allclose(mm(test_inputs), eval_func.TFLiteModelInterf(mm.name + '.tflite')(test_inputs), atol=1e-7))
    # True
    
  • model_surgery.prepare_for_tflite 是上述功能的组合:
    from keras_cv_attention_models import beit, model_surgery
    
    mm = beit.BeitBasePatch16()
    mm = model_surgery.prepare_for_tflite(mm)
    converter = tf.lite.TFLiteConverter.from_keras_model(mm)
    open(mm.name + ".tflite", "wb").write(converter.convert())
    
  • 检测模型 包括 efficinetdetyoloxyolor,可以直接转换为 TFLite 格式。如果需要将 DecodePredictions 也包含在 TFLite 模型中,则需将 DecodePredictionsuse_static_output 设置为 True,因为 TFLite 要求输出形状更加静态。模型的输出形状将固定为 [batch, max_output_size, 6]。其中最后一维 6 表示 [bbox_top, bbox_left, bbox_bottom, bbox_right, label_index, confidence],有效预测是那些 confidence > 0 的结果。
    """ 初始化模型 """
    from keras_cv_attention_models import efficientdet
    model = efficientdet.EfficientDetD0(pretrained="coco")
    
    """ 创建带有 DecodePredictions 的模型,并设置 `use_static_output=True` """
    model.decode_predictions.use_static_output = True
    # 如有需要,可调整 score_threshold 和 iou_or_sigma 等参数。
    nn = model.decode_predictions(model.outputs[0], score_threshold=0.5)
    bb = keras.models.Model(model.inputs[0], nn)
    
    """ 转换为 TFLite """
    converter = tf.lite.TFLiteConverter.from_keras_model(bb)
    open(bb.name + ".tflite", "wb").write(converter.convert())
    
    """ 推理测试 """
    from keras_cv_attention_models.imagenet import eval_func
    from keras_cv_attention_models import test_images
    
    dd = eval_func.TFLiteModelInterf(bb.name + ".tflite")
    imm = test_images.cat()
    inputs = tf.expand_dims(tf.image.resize(imm, dd.input_shape[1:-1]), 0)
    inputs = keras.applications.imagenet_utils.preprocess_input(inputs, mode='torch')
    preds = dd(inputs)[0]
    print(f"{preds.shape = }")
    # preds.shape = (100, 6)
    
    pred = preds[preds[:, -1] > 0]
    bboxes, labels, confidences = pred[:, :4], pred[:, 4], pred[:, -1]
    print(f"{bboxes = }, {labels = }, {confidences = }")
    # bboxes = array([[0.22825494, 0.47238672, 0.816262  , 0.8700745 ]], dtype=float32),
    # labels = array([16.], dtype=float32),
    # confidences = array([0.8309707], dtype=float32)
    
    """ 显示结果 """
    from keras_cv_attention_models.coco import data
    data.show_image_with_bboxes(imm, bboxes, labels, confidences, num_classes=90)
    

使用 PyTorch 作为后端

  • 实验性 Keras PyTorch 后端
  • 设置环境变量 export KECAM_BACKEND='torch' 以启用此 PyTorch 后端。
  • 目前支持大多数识别和检测模型,除了 hornet*gf / nfnets / volo。对于检测模型,在运行预测时使用 torchvision.ops.nms
  • 基本模型构建和预测
    • 如果可用,将加载与 TensorFlow 版本相同的 h5 权重。
    • 注意:input_shape 将自动适配图像数据格式。给定 input_shape=(224, 224, 3)input_shape=(3, 224, 224),如果使用 channels_first 格式,两者都会被设置为 (3, 224, 224)
    • 注意:模型默认设置为 eval 模式。
    os.environ['KECAM_BACKEND'] = 'torch'
    from keras_cv_attention_models import res_mlp
    mm = res_mlp.ResMLP12()
    # >>>> 从 ~/.keras/models/resmlp12_imagenet.h5 加载预训练权重
    print(f"{mm.input_shape = }")
    # mm.input_shape = [None, 3, 224, 224]
    
    import torch
    print(f"{isinstance(mm, torch.nn.Module) = }")
    # isinstance(mm, torch.nn.Module) = True
    
    # 运行预测
    from keras_cv_attention_models.test_images import cat
    print(mm.decode_predictions(mm(mm.preprocess_input(cat())))[0])
    # [('n02124075', 'Egyptian_cat', 0.9597896), ('n02123045', 'tabby', 0.012809471), ...]
    
  • 导出典型的 PyTorch onnx / pth
    import torch
    torch.onnx.export(mm, torch.randn(1, 3, *mm.input_shape[2:]), mm.name + ".onnx")
    
    # 或者通过 export_onnx
    mm.export_onnx()
    # 导出的 onnx 文件:resmlp12.onnx
    
    mm.export_pth()
    # 导出的 pth 文件:resmlp12.pth
    
  • 将权重保存为 h5 文件。该 h5 文件也可以在典型的 TensorFlow 后端模型中加载。目前仅支持权重,不包含模型结构。
    mm.save_weights("foo.h5")
    
  • 使用 compile 和 fit 进行训练 注意:损失函数的参数应为 y_true, y_pred,而典型的 PyTorch 损失函数使用 y_pred, y_true
    import torch
    from keras_cv_attention_models.backend import models, layers
    mm = models.Sequential([layers.Input([3, 32, 32]), layers.Conv2D(32, 3), layers.GlobalAveragePooling2D(), layers.Dense(10)])
    if torch.cuda.is_available():
        _ = mm.to("cuda")
    xx = torch.rand([64, *mm.input_shape[1:]])
    yy = torch.functional.F.one_hot(torch.randint(0, mm.output_shape[-1], size=[64]), mm.output_shape[-1]).float()
    loss = lambda y_true, y_pred: (y_true - y_pred.float()).abs().mean()
    # 将检查关键字参数以调用 `self.train_compile` 或 `torch.nn.Module.compile`
    mm.compile(optimizer="AdamW", loss=loss, metrics='acc', grad_accumulate=4)
    mm.fit(xx, yy, epochs=2, batch_size=4)
    

使用 keras core 作为后端

  • [实验性] 设置环境变量 export KECAM_BACKEND='keras_core' 以启用此 keras_core 后端。不使用 keras>3.0,因为它仍然无法与 TensorFlow==2.15.0 编译。
  • keras-core 有自己的后端,支持 tensorflow / torch / jax,只需编辑 ~/.keras/keras.json 中的 "backend" 值即可。
  • 当前大多数识别模型都支持,除了 HaloNet / BotNet,同时支持 GPT2 / LLaMA2
  • 基本模型构建和预测
    !pip install sentencepiece  # llama2 分词器所需
    os.environ['KECAM_BACKEND'] = 'keras_core'
    os.environ['KERAS_BACKEND'] = 'jax'
    import kecam
    print(f"{kecam.backend.backend() = }")
    # kecam.backend.backend() = 'jax'
    mm = kecam.llama2.LLaMA2_42M()
    # >>>> 从 ~/.keras/models/llama2_42m_tiny_stories.h5 加载预训练权重
    mm.run_prediction('当夜幕降临,一位少女站在森林边缘。她手中,')
    # >>>> 从文件 ~/.keras/datasets/llama_tokenizer.model 加载分词器
    # <s>
    # 当夜幕降临,一位少女站在森林边缘。她手中拿着一颗美丽的钻石。所有人都惊讶地望着它。
    # “那是什么?”一个孩子问道。
    # “那是一颗钻石,”少女说道。
    # ...
    

识别模型

AotNet

  • Keras AotNet 只是一个类似于 ResNet / ResNetV2 的框架,通过设置如 attn_typesse_ratio 等参数来应用不同类型的注意力层。其工作方式类似于 timm 中的 byoanet / byobnet
  • 默认参数设置为典型的 ResNet 架构,其中 Conv2D 不使用偏置,填充方式类似于 PyTorch。
    from keras_cv_attention_models import aotnet
    # 混合了 se、outlook、halo、mhsa 和 cot_attention,总参数量为 2100 万。
    # 50 只是一个大于相对 `num_block` 的数字。
    attn_types = [None, "outlook", ["bot", "halo"] * 50, "cot"],
    se_ratio = [0.25, 0, 0, 0],
    model = aotnet.AotNet50V2(attn_types=attn_types, se_ratio=se_ratio, stem_type="deep", strides=1)
    model.summary()
    

BEiT

模型 参数 FLOPs 输入 Top1 Acc T4 推理
BeitBasePatch16, 21k_ft1k 86.53M 17.61G 224 85.240 321.226 qps
- 21k_ft1k, 384 86.74M 55.70G 384 86.808 164.705 qps
BeitLargePatch16, 21k_ft1k 304.43M 61.68G 224 87.476 105.998 qps
- 21k_ft1k, 384 305.00M 191.65G 384 88.382 45.7307 qps
- 21k_ft1k, 512 305.67M 363.46G 512 88.584 21.3097 qps

BEiTV2

模型 参数量 FLOPs 输入 Top1 精度 T4 推理
BeitV2BasePatch16 86.53M 17.61G 224 85.5 322.52 qps
- 21k_ft1k 86.53M 17.61G 224 86.5 322.52 qps
BeitV2LargePatch16 304.43M 61.68G 224 87.3 105.734 qps
- 21k_ft1k 304.43M 61.68G 224 88.4 105.734 qps

BotNet

模型 参数量 FLOPs 输入 Top1 精度 T4 推理
BotNet50 21M 5.42G 224 746.454 qps
BotNet101 41M 9.13G 224 448.102 qps
BotNet152 56M 12.84G 224 316.671 qps
BotNet26T 12.5M 3.30G 256 79.246 1188.84 qps
BotNextECA26T 10.59M 2.45G 256 79.270 1038.19 qps
BotNetSE33T 13.7M 3.89G 256 81.2 610.429 qps

CAFormer

模型 参数量 FLOPs 输入分辨率 Top1 准确率 T4 推理速度
CAFormerS18 26M 4.1G 224 83.6 399.127 qps
- 384 26M 13.4G 384 85.0 181.993 qps
- 21k_ft1k 26M 4.1G 224 84.1 399.127 qps
- 21k_ft1k, 384 26M 13.4G 384 85.4 181.993 qps
CAFormerS36 39M 8.0G 224 84.5 204.328 qps
- 384 39M 26.0G 384 85.7 102.04 qps
- 21k_ft1k 39M 8.0G 224 85.8 204.328 qps
- 21k_ft1k, 384 39M 26.0G 384 86.9 102.04 qps
CAFormerM36 56M 13.2G 224 85.2 162.257 qps
- 384 56M 42.0G 384 86.2 65.6188 qps
- 21k_ft1k 56M 13.2G 224 86.6 162.257 qps
- 21k_ft1k, 384 56M 42.0G 384 87.5 65.6188 qps
CAFormerB36 99M 23.2G 224 85.5 116.865 qps
- 384 99M 72.2G 384 86.4 50.0244 qps
- 21k_ft1k 99M 23.2G 224 87.4 116.865 qps
- 21k_ft1k, 384 99M 72.2G 384 88.1 50.0244 qps
模型 参数量 FLOPs 输入分辨率 Top1 准确率 T4 推理速度
ConvFormerS18 27M 3.9G 224 83.0 295.114 qps
- 384 27M 11.6G 384 84.4 145.923 qps
- 21k_ft1k 27M 3.9G 224 83.7 295.114 qps
- 21k_ft1k, 384 27M 11.6G 384 85.0 145.923 qps
ConvFormerS36 40M 7.6G 224 84.1 161.609 qps
- 384 40M 22.4G 384 85.4 80.2101 qps
- 21k_ft1k 40M 7.6G 224 85.4 161.609 qps
- 21k_ft1k, 384 40M 22.4G 384 86.4 80.2101 qps
ConvFormerM36 57M 12.8G 224 84.5 130.161 qps
- 384 57M 37.7G 384 85.6 63.9712 qps
- 21k_ft1k 57M 12.8G 224 86.1 130.161 qps
- 21k_ft1k, 384 57M 37.7G 384 86.9 63.9712 qps
ConvFormerB36 100M 22.6G 224 84.8 98.0751 qps
- 384 100M 66.5G 384 85.7 48.5897 qps
- 21k_ft1k 100M 22.6G 224 87.0 98.0751 qps
- 21k_ft1k, 384 100M 66.5G 384 87.6 48.5897 qps

CMT

模型 参数量 FLOPs 输入尺寸 Top1准确率 T4推理速度
CMTTiny, (自训练105轮) 9.5M 0.65G 160 77.4 315.566 qps
- (305轮) 9.5M 0.65G 160 78.94 315.566 qps
- 224, (微调69轮) 9.5M 1.32G 224 80.73 254.87 qps
CMTTiny_torch, (1000轮) 9.5M 0.65G 160 79.2 338.207 qps
CMTXS_torch 15.2M 1.58G 192 81.8 241.288 qps
CMTSmall_torch 25.1M 4.09G 224 83.5 171.109 qps
CMTBase_torch 45.7M 9.42G 256 84.5 103.34 qps

CoaT

模型 参数量 FLOPs 输入尺寸 Top1准确率 T4推理速度
CoaTLiteTiny 5.7M 1.60G 224 77.5 450.27 qps
CoaTLiteMini 11M 2.00G 224 79.1 452.884 qps
CoaTLiteSmall 20M 3.97G 224 81.9 248.846 qps
CoaTTiny 5.5M 4.33G 224 78.3 152.495 qps
CoaTMini 10M 6.78G 224 81.0 124.845 qps

CoAtNet

模型 参数量 FLOPs 输入尺寸 Top1准确率 T4推理速度
CoAtNet0, 160, (105轮) 23.3M 2.09G 160 80.48 584.059 qps
CoAtNet0, (305轮) 23.8M 4.22G 224 82.79 400.333 qps
CoAtNet0 25M 4.6G 224 82.0 400.333 qps
- use_dw_strides=False 25M 4.2G 224 81.6 461.197 qps
CoAtNet1 42M 8.8G 224 83.5 206.954 qps
- use_dw_strides=False 42M 8.4G 224 83.3 228.938 qps
CoAtNet2 75M 16.6G 224 84.1 156.359 qps
- use_dw_strides=False 75M 15.7G 224 84.1 165.846 qps
CoAtNet2, 21k_ft1k 75M 16.6G 224 87.1 156.359 qps
CoAtNet3 168M 34.7G 224 84.5 95.0703 qps
CoAtNet3, 21k_ft1k 168M 34.7G 224 87.6 95.0703 qps
CoAtNet3, 21k_ft1k 168M 203.1G 512 87.9 95.0703 qps
CoAtNet4, 21k_ft1k 275M 360.9G 512 88.1 74.6022 qps
CoAtNet4, 21k_ft1k, PT-RA-E150 275M 360.9G 512 88.56 74.6022 qps

ConvNeXt

模型 参数量 FLOPs 输入尺寸 Top1准确率 T4推理速度
ConvNeXtTiny 28M 4.49G 224 82.1 361.58 qps
- 21k_ft1k 28M 4.49G 224 82.9 361.58 qps
- 21k_ft1k, 384 28M 13.19G 384 84.1 182.134 qps
ConvNeXtSmall 50M 8.73G 224 83.1 202.007 qps
- 21k_ft1k 50M 8.73G 224 84.6 202.007 qps
- 21k_ft1k, 384 50M 25.67G 384 85.8 108.125 qps
ConvNeXtBase 89M 15.42G 224 83.8 160.036 qps
- 384 89M 45.32G 384 85.1 83.3095 qps
- 21k_ft1k 89M 15.42G 224 85.8 160.036 qps
- 21k_ft1k, 384 89M 45.32G 384 86.8 83.3095 qps
ConvNeXtLarge 198M 34.46G 224 84.3 102.27 qps
- 384 198M 101.28G 384 85.5 47.2086 qps
- 21k_ft1k 198M 34.46G 224 86.6 102.27 qps
- 21k_ft1k, 384 198M 101.28G 384 87.5 47.2086 qps
ConvNeXtXlarge, 21k_ft1k 350M 61.06G 224 87.0 40.5776 qps
- 21k_ft1k, 384 350M 179.43G 384 87.8 21.797 qps
ConvNeXtXXLarge, clip 846M 198.09G 256 88.6

ConvNeXtV2

模型 参数量 FLOPs 输入大小 Top1 准确率 T4 推理速度
ConvNeXtV2Atto 3.7M 0.55G 224 76.7 705.822 qps
ConvNeXtV2Femto 5.2M 0.78G 224 78.5 728.02 qps
ConvNeXtV2Pico 9.1M 1.37G 224 80.3 591.502 qps
ConvNeXtV2Nano 15.6M 2.45G 224 81.9 471.918 qps
- 21k_ft1k 15.6M 2.45G 224 82.1 471.918 qps
- 21k_ft1k, 384 15.6M 7.21G 384 83.4 213.802 qps
ConvNeXtV2Tiny 28.6M 4.47G 224 83.0 301.982 qps
- 21k_ft1k 28.6M 4.47G 224 83.9 301.982 qps
- 21k_ft1k, 384 28.6M 13.1G 384 85.1 139.578 qps
ConvNeXtV2Base 89M 15.4G 224 84.9 132.575 qps
- 21k_ft1k 89M 15.4G 224 86.8 132.575 qps
- 21k_ft1k, 384 89M 45.2G 384 87.7 66.5729 qps
ConvNeXtV2Large 198M 34.4G 224 85.8 86.8846 qps
- 21k_ft1k 198M 34.4G 224 87.3 86.8846 qps
- 21k_ft1k, 384 198M 101.1G 384 88.2 24.4542 qps
ConvNeXtV2Huge 660M 115G 224 86.3
- 21k_ft1k 660M 337.9G 384 88.7
- 21k_ft1k, 384 660M 600.8G 512 88.9

CoTNet

模型 参数量 FLOPs 输入大小 Top1 准确率 T4 推理速度
CotNet50 22.2M 3.25G 224 81.3 324.913 qps
CotNetSE50D 23.1M 4.05G 224 81.6 513.077 qps
CotNet101 38.3M 6.07G 224 82.8 183.824 qps
CotNetSE101D 40.9M 8.44G 224 83.2 251.487 qps
CotNetSE152D 55.8M 12.22G 224 84.0 175.469 qps
CotNetSE152D 55.8M 24.92G 320 84.6 175.469 qps

CSPNeXt

模型 参数量 FLOPs 输入大小 Top1 准确率 T4 推理速度
CSPNeXtTiny 2.73M 0.34G 224 69.44
CSPNeXtSmall 4.89M 0.66G 224 74.41
CSPNeXtMedium 13.05M 1.92G 224 79.27
CSPNeXtLarge 27.16M 4.19G 224 81.30
CSPNeXtXLarge 48.85M 7.75G 224 82.10

DaViT

模型 参数量 FLOPs 输入大小 Top1 准确率 T4 推理速度
DaViT_T 28.36M 4.56G 224 82.8% 224.563 qps
DaViT_S 49.75M 8.83G 224 84.2% 145.838 qps
DaViT_B 87.95M 15.55G 224 84.6% 114.527 qps
DaViT_L, 21k_ft1k 196.8M 103.2G 384 87.5% 34.7015 qps
DaViT_H, 1.5B 348.9M 327.3G 512 90.2% 12.363 qps
DaViT_G, 1.5B 1.406B 1.022T 512 90.4%

DiNAT

模型 参数量 FLOPs 输入大小 Top1 准确率 T4 推理速度
DiNAT_Mini 20.0M 2.73G 224 81.8% 83.9943 qps
DiNAT_Tiny 27.9M 4.34G 224 82.7% 61.1902 qps
DiNAT_Small 50.7M 7.84G 224 83.8% 41.0343 qps
DiNAT_Base 89.8M 13.76G 224 84.4% 30.1332 qps
DiNAT_Large, 21k_ft1k 200.9M 30.58G 224 86.6% 18.4936 qps
- 21k, (num_classes=21841) 200.9M 30.58G 224
- 21k_ft1k, 384 200.9M 89.86G 384 87.4%
DiNAT_Large_K11, 21k_ft1k 201.1M 92.57G 384 87.5%

DINOv2

模型 参数量 FLOPs 输入大小 Top1 准确率 T4 推理速度
DINOv2_ViT_Small14 22.83M 47.23G 518 81.1% 165.271 qps
DINOv2_ViT_Base14 88.12M 152.6G 518 84.5% 54.9769 qps
DINOv2_ViT_Large14 306.4M 509.6G 518 86.3% 17.4108 qps
DINOv2_ViT_Giant14 1139.6M 1790.3G 518 86.5%

EdgeNeXt

模型 参数量 FLOPs 输入大小 Top1 准确率 T4 推理速度
EdgeNeXt_XX_Small 1.33M 266M 256 71.23% 902.957 qps
EdgeNeXt_X_Small 2.34M 547M 256 74.96% 638.346 qps
EdgeNeXt_Small 5.59M 1.27G 256 79.41% 536.762 qps
- usi 5.59M 1.27G 256 81.07% 536.762 qps
EdgeNeXt_Base 18.5M 3.86G 256 82.47% 383.461 qps
- usi 18.5M 3.86G 256 83.31% 383.461 qps
- 21k_ft1k 18.5M 3.86G 256 83.68% 383.461 qps

EfficientFormer

模型 参数量 FLOPs 输入大小 Top1 准确率 T4 推理速度
EfficientFormerL1, distill 12.3M 1.31G 224 79.2% 1214.22 qps
EfficientFormerL3, distill 31.4M 3.95G 224 82.4% 596.705 qps
EfficientFormerL7, distill 74.4M 9.79G 224 83.3% 298.434 qps

EfficientFormerV2

模型 参数量 FLOPs 输入 Top1准确率 T4推理
EfficientFormerV2S0, 知识蒸馏 3.60M 405.2M 224 76.2 1114.38 qps
EfficientFormerV2S1, 知识蒸馏 6.19M 665.6M 224 79.7 841.186 qps
EfficientFormerV2S2, 知识蒸馏 12.7M 1.27G 224 82.0 573.9 qps
EfficientFormerV2L, 知识蒸馏 26.3M 2.59G 224 83.5 377.224 qps

EfficientNet

模型 参数量 FLOPs 输入 Top1准确率 T4推理
EfficientNetV1B0 5.3M 0.39G 224 77.6 1129.93 qps
- 噪声学生 5.3M 0.39G 224 78.8 1129.93 qps
EfficientNetV1B1 7.8M 0.70G 240 79.6 758.639 qps
- 噪声学生 7.8M 0.70G 240 81.5 758.639 qps
EfficientNetV1B2 9.1M 1.01G 260 80.5 668.959 qps
- 噪声学生 9.1M 1.01G 260 82.4 668.959 qps
EfficientNetV1B3 12.2M 1.86G 300 81.9 473.607 qps
- 噪声学生 12.2M 1.86G 300 84.1 473.607 qps
EfficientNetV1B4 19.3M 4.46G 380 83.3 265.244 qps
- 噪声学生 19.3M 4.46G 380 85.3 265.244 qps
EfficientNetV1B5 30.4M 10.40G 456 84.3 146.758 qps
- 噪声学生 30.4M 10.40G 456 86.1 146.758 qps
EfficientNetV1B6 43.0M 19.29G 528 84.8 88.0369 qps
- 噪声学生 43.0M 19.29G 528 86.4 88.0369 qps
EfficientNetV1B7 66.3M 38.13G 600 85.2 52.6616 qps
- 噪声学生 66.3M 38.13G 600 86.9 52.6616 qps
EfficientNetV1L2, 知识蒸馏 480.3M 477.98G 800 88.4

EfficientNetEdgeTPU

模型 参数量 FLOPs 输入 Top1准确率 T4推理
EfficientNetEdgeTPUSmall 5.49M 1.79G 224 78.07 1459.38 qps
EfficientNetEdgeTPUMedium 6.90M 3.01G 240 79.25 1028.95 qps
EfficientNetEdgeTPULarge 10.59M 7.94G 300 81.32 527.034 qps

EfficientNetV2

模型 参数量 FLOPs 输入大小 Top1 准确率 T4 推理吞吐量
EfficientNetV2B0 710万 0.72G 224 78.7% 1109.84 qps
- 21k_ft1k 710万 0.72G 224 77.55%? 1109.84 qps
EfficientNetV2B1 810万 1.21G 240 79.8% 842.372 qps
- 21k_ft1k 810万 1.21G 240 79.03%? 842.372 qps
EfficientNetV2B2 1010万 1.71G 260 80.5% 762.865 qps
- 21k_ft1k 1010万 1.71G 260 79.48%? 762.865 qps
EfficientNetV2B3 1440万 3.03G 300 82.1% 548.501 qps
- 21k_ft1k 1440万 3.03G 300 82.46%? 548.501 qps
EfficientNetV2T 1360万 3.18G 288 82.34% 496.483 qps
EfficientNetV2T_GC 1370万 3.19G 288 82.46% 368.763 qps
EfficientNetV2S 2150万 8.41G 384 83.9% 344.109 qps
- 21k_ft1k 2150万 8.41G 384 84.9% 344.109 qps
EfficientNetV2M 5410万 24.69G 480 85.2% 145.346 qps
- 21k_ft1k 5410万 24.69G 480 86.2% 145.346 qps
EfficientNetV2L 1.195亿 56.27G 480 85.7% 85.6514 qps
- 21k_ft1k 1.195亿 56.27G 480 86.9% 85.6514 qps
EfficientNetV2XL, 21k_ft1k 2.068亿 93.66G 512 87.2% 55.141 qps

EfficientViT_B

模型 参数量 FLOPs 输入尺寸 Top1 准确率 T4 推理速度
EfficientViT_B0 3.41M 0.12G 224 71.6 ? 1581.76 qps
EfficientViT_B1 9.10M 0.58G 224 79.4 943.587 qps
- 256 9.10M 0.78G 256 79.9 840.844 qps
- 288 9.10M 1.03G 288 80.4 680.088 qps
EfficientViT_B2 24.33M 1.68G 224 82.1 583.295 qps
- 256 24.33M 2.25G 256 82.7 507.187 qps
- 288 24.33M 2.92G 288 83.1 419.93 qps
EfficientViT_B3 48.65M 4.14G 224 83.5 329.764 qps
- 256 48.65M 5.51G 256 83.8 288.605 qps
- 288 48.65M 7.14G 288 84.2 229.992 qps
EfficientViT_L1 52.65M 5.28G 224 84.48 503.068 qps
EfficientViT_L2 63.71M 6.98G 224 85.05 396.255 qps
- 384 63.71M 20.7G 384 85.98 207.322 qps
EfficientViT_L3 246.0M 27.6G 224 85.814 174.926 qps
- 384 246.0M 81.6G 384 86.408 86.895 qps

EfficientViT_M

模型 参数量 FLOPs 输入尺寸 Top1 准确率 T4 推理速度
EfficientViT_M0 2.35M 79.4M 224 63.2 814.522 qps
EfficientViT_M1 2.98M 167M 224 68.4 948.041 qps
EfficientViT_M2 4.19M 201M 224 70.8 906.286 qps
EfficientViT_M3 6.90M 263M 224 73.4 758.086 qps
EfficientViT_M4 8.80M 299M 224 74.3 672.891 qps
EfficientViT_M5 12.47M 522M 224 77.1 577.254 qps

EVA

模型 参数量 FLOPs 输入尺寸 Top1 准确率 T4 推理速度
EvaLargePatch14, 21k_ft1k 304.14M 61.65G 196 88.59 115.532 qps
- 21k_ft1k, 336 304.53M 191.55G 336 89.20 53.3467 qps
EvaGiantPatch14, clip 1012.6M 267.40G 224 89.10
- m30m 1013.0M 621.45G 336 89.57
- m30m 1014.4M 1911.61G 560 89.80

EVA02

模型 参数量 FLOPs 输入大小 Top1 准确率 T4 推理速度
EVA02TinyPatch14, mim_in22k_ft1k 5.76M 4.72G 336 80.658 320.123 qps
EVA02SmallPatch14, mim_in22k_ft1k 22.13M 15.57G 336 85.74 161.774 qps
EVA02BasePatch14, mim_in22k_ft22k_ft1k 87.12M 107.6G 448 88.692 34.3962 qps
EVA02LargePatch14, mim_m38m_ft22k_ft1k 305.08M 363.68G 448 90.054

FasterNet

模型 参数量 FLOPs 输入大小 Top1 准确率 T4 推理速度
FasterNetT0 3.9M 0.34G 224 71.9 1890.83 qps
FasterNetT1 7.6M 0.85G 224 76.2 1788.16 qps
FasterNetT2 15.0M 1.90G 224 78.9 1353.12 qps
FasterNetS 31.1M 4.55G 224 81.3 818.814 qps
FasterNetM 53.5M 8.72G 224 83.0 436.383 qps
FasterNetL 93.4M 15.49G 224 83.5 319.809 qps

FasterViT

模型 参数量 FLOPs 输入大小 Top1 准确率 T4 推理速度
FasterViT0 31.40M 3.51G 224 82.1 716.809 qps
FasterViT1 53.37M 5.52G 224 83.2 491.971 qps
FasterViT2 75.92M 9.00G 224 84.2 377.006 qps
FasterViT3 159.55M 18.75G 224 84.9 216.481 qps
FasterViT4 351.12M 41.57G 224 85.4 71.6303 qps
FasterViT5 957.52M 114.08G 224 85.6
FasterViT6, +.2 1360.33M 144.13G 224 85.8

FastViT

模型 参数量 FLOPs 输入分辨率 Top1 准确率 T4 推理速度
FastViT_T8 4.03M 0.65G 256 76.2 1020.29 qps
- 蒸馏版 4.03M 0.65G 256 77.2 1020.29 qps
- deploy=True 3.99M 0.64G 256 76.2 1323.14 qps
FastViT_T12 7.55M 1.34G 256 79.3 734.867 qps
- 蒸馏版 7.55M 1.34G 256 80.3 734.867 qps
- deploy=True 7.50M 1.33G 256 79.3 956.332 qps
FastViT_S12 9.47M 1.74G 256 79.9 666.669 qps
- 蒸馏版 9.47M 1.74G 256 81.1 666.669 qps
- deploy=True 9.42M 1.74G 256 79.9 881.429 qps
FastViT_SA12 11.58M 1.88G 256 80.9 656.95 qps
- 蒸馏版 11.58M 1.88G 256 81.9 656.95 qps
- deploy=True 11.54M 1.88G 256 80.9 833.011 qps
FastViT_SA24 21.55M 3.66G 256 82.7 371.84 qps
- 蒸馏版 21.55M 3.66G 256 83.4 371.84 qps
- deploy=True 21.49M 3.66G 256 82.7 444.055 qps
FastViT_SA36 31.53M 5.44G 256 83.6 267.986 qps
- 蒸馏版 31.53M 5.44G 256 84.2 267.986 qps
- deploy=True 31.44M 5.43G 256 83.6 325.967 qps
FastViT_MA36 44.07M 7.64G 256 83.9 211.928 qps
- 蒸馏版 44.07M 7.64G 256 84.6 211.928 qps
- deploy=True 43.96M 7.63G 256 83.9 274.559 qps

FBNetV3

模型 参数量 FLOPs 输入分辨率 Top1 准确率 T4 推理速度
FBNetV3B 5.57M 539.82M 256 79.15 713.882 qps
FBNetV3D 10.31M 665.02M 256 79.68 635.963 qps
FBNetV3G 16.62M 1379.30M 256 82.05 478.835 qps

FlexiViT

模型 参数量 FLOPs 输入分辨率 Top1 准确率 T4 推理速度
FlexiViTSmall 22.06M 5.36G 240 82.53 744.578 qps
FlexiViTBase 86.59M 20.33G 240 84.66 301.948 qps
FlexiViTLarge 304.47M 71.09G 240 85.64 105.187 qps

GCViT

模型 参数量 FLOPs 输入尺寸 Top1 准确率 下载链接
GCViT_XXTiny 12.0M 2.15G 224 79.9 337.7 qps
GCViT_XTiny 20.0M 2.96G 224 82.0 255.625 qps
GCViT_Tiny 28.2M 4.83G 224 83.5 174.553 qps
GCViT_Tiny2 34.5M 6.28G 224 83.7
GCViT_Small 51.1M 8.63G 224 84.3 131.577 qps
GCViT_Small2 68.6M 11.7G 224 84.8
GCViT_Base 90.3M 14.9G 224 85.0 105.845 qps
GCViT_Large 202.1M 32.8G 224 85.7
- 21k_ft1k 202.1M 32.8G 224 86.6
- 21k_ft1k, 384 202.9M 105.1G 384 87.4
- 21k_ft1k, 512 203.8M 205.1G 512 87.6

GhostNet

模型 参数量 FLOPs 输入尺寸 Top1 准确率 T4 推理速度
GhostNet_050 2.59M 42.6M 224 66.88 1272.25 qps
GhostNet_100 5.18M 141.7M 224 74.16 1167.4 qps
GhostNet_130 7.36M 227.7M 224 75.79 1024.49 qps
- ssld 7.36M 227.7M 224 79.38 1024.49 qps

GhostNetV2

模型 参数量 FLOPs 输入尺寸 Top1 准确率 T4 推理速度
GhostNetV2_100 6.12M 168.5M 224 75.3 797.088 qps
GhostNetV2_130 8.96M 271.1M 224 76.9 722.668 qps
GhostNetV2_160 12.39M 400.9M 224 77.8 572.268 qps

GMLP

模型 参数量 FLOPs 输入尺寸 Top1 准确率 T4 推理速度
GMLPTiny16 6M 1.35G 224 72.3 234.187 qps
GMLPS16 20M 4.44G 224 79.6 138.363 qps
GMLPB16 73M 15.82G 224 81.6 77.816 qps

GPViT

模型 参数量 FLOPs 输入尺寸 Top1 准确率 T4 推理速度
GPViT_L1 9.59M 6.15G 224 80.5 210.166 qps
GPViT_L2 24.2M 15.74G 224 83.4 139.656 qps
GPViT_L3 36.7M 23.54G 224 84.1 131.284 qps
GPViT_L4 75.5M 48.29G 224 84.3 94.1899 qps

HaloNet

模型 参数量 FLOPs 输入大小 Top1 准确率 T4 推理速度
HaloNextECA26T 10.7M 2.43G 256 79.50 1028.93 qps
HaloNet26T 12.5M 3.18G 256 79.13 1096.79 qps
HaloNetSE33T 13.7M 3.55G 256 80.99 582.008 qps
HaloRegNetZB 11.68M 1.97G 224 81.042 575.961 qps
HaloNet50T 22.7M 5.29G 256 81.70 512.677 qps
HaloBotNet50T 22.6M 5.02G 256 82.0 431.616 qps

Hiera

模型 参数量 FLOPs 输入大小 Top1 准确率 T4 推理速度
HieraTiny, mae_in1k_ft1k 27.91M 4.93G 224 82.8 644.356 qps
HieraSmall, mae_in1k_ft1k 35.01M 6.44G 224 83.8 491.669 qps
HieraBase, mae_in1k_ft1k 51.52M 9.43G 224 84.5 351.542 qps
HieraBasePlus, mae_in1k_ft1k 69.90M 12.71G 224 85.2 291.446 qps
HieraLarge, mae_in1k_ft1k 213.74M 40.43G 224 86.1 111.042 qps
HieraHuge, mae_in1k_ft1k 672.78M 125.03G 224 86.9

HorNet

模型 参数量 FLOPs 输入大小 Top1 准确率 T4 推理速度
HorNetTiny 22.4M 4.01G 224 82.8 222.665 qps
HorNetTinyGF 23.0M 3.94G 224 83.0
HorNetSmall 49.5M 8.87G 224 83.8 166.998 qps
HorNetSmallGF 50.4M 8.77G 224 84.0
HorNetBase 87.3M 15.65G 224 84.2 133.842 qps
HorNetBaseGF 88.4M 15.51G 224 84.3
HorNetLarge 194.5M 34.91G 224 86.8 89.8254 qps
HorNetLargeGF 196.3M 34.72G 224 87.0
HorNetLargeGF 201.8M 102.0G 384 87.7

IFormer

模型 参数量 FLOPs 输入大小 Top1 准确率 T4 推理速度
IFormerSmall 19.9M 4.88G 224 83.4 254.392 qps
- 384 20.9M 16.29G 384 84.6 128.98 qps
IFormerBase 47.9M 9.44G 224 84.6 147.868 qps
- 384 48.9M 30.86G 384 85.7 77.8391 qps
IFormerLarge 86.6M 14.12G 224 84.6 113.434 qps
- 384 87.7M 45.74G 384 85.8 60.0292 qps

InceptionNeXt

模型 参数量 FLOPs 输入大小 Top1准确率 T4推理速度
InceptionNeXtTiny 28.05M 4.21G 224 82.3 606.527 qps
InceptionNeXtSmall 49.37M 8.39G 224 83.5 329.01 qps
InceptionNeXtBase 86.67M 14.88G 224 84.0 260.639 qps
- 384 86.67M 43.73G 384 85.2 142.888 qps

LCNet

模型 参数量 FLOPs 输入大小 Top1准确率 T4推理速度
LCNet050 1.88M 46.02M 224 63.10 3107.89 qps
- ssld 1.88M 46.02M 224 66.10 3107.89 qps
LCNet075 2.36M 96.82M 224 68.82 3083.55 qps
LCNet100 2.95M 158.28M 224 72.10 2752.6 qps
- ssld 2.95M 158.28M 224 74.39 2752.6 qps
LCNet150 4.52M 338.05M 224 73.71 2250.69 qps
LCNet200 6.54M 585.35M 224 75.18 2028.31 qps
LCNet250 9.04M 900.16M 224 76.60 1686.7 qps
- ssld 9.04M 900.16M 224 80.82 1686.7 qps

LeViT

模型 参数量 FLOPs 输入大小 Top1准确率 T4推理速度
LeViT128S, distill 7.8M 0.31G 224 76.6 800.53 qps
LeViT128, distill 9.2M 0.41G 224 78.6 628.714 qps
LeViT192, distill 11M 0.66G 224 80.0 597.299 qps
LeViT256, distill 19M 1.13G 224 81.6 538.885 qps
LeViT384, distill 39M 2.36G 224 82.6 460.139 qps

MaxViT

模型 参数量 FLOPs 输入分辨率 Top1 精度 T4 推理速度
MaxViT_Tiny 31M 5.6G 224 83.62% 195.283 qps
- 384 31M 17.7G 384 85.24% 92.5725 qps
- 512 31M 33.7G 512 85.72% 52.6485 qps
MaxViT_Small 69M 11.7G 224 84.45% 149.286 qps
- 384 69M 36.1G 384 85.74% 61.5757 qps
- 512 69M 67.6G 512 86.19% 34.7002 qps
MaxViT_Base 119M 24.2G 224 84.95% 74.7351 qps
- 384 119M 74.2G 384 86.34% 31.9028 qps
- 512 119M 138.5G 512 86.66% 17.8139 qps
- imagenet21k 135M 24.2G 224 74.7351 qps
- 21k_ft1k, 384 119M 74.2G 384 88.24% 31.9028 qps
- 21k_ft1k, 512 119M 138.5G 512 88.38% 17.8139 qps
MaxViT_Large 212M 43.9G 224 85.17% 58.0967 qps
- 384 212M 133.1G 384 86.40% 24.1388 qps
- 512 212M 245.4G 512 86.70% 13.063 qps
- imagenet21k 233M 43.9G 224 58.0967 qps
- 21k_ft1k, 384 212M 133.1G 384 88.32% 24.1388 qps
- 21k_ft1k, 512 212M 245.4G 512 88.46% 13.063 qps
MaxViT_XLarge, imagenet21k 507M 97.7G 224
- 21k_ft1k, 384 475M 293.7G 384 88.51%
- 21k_ft1k, 512 475M 535.2G 512 88.70%

MetaTransFormer

模型 参数量 FLOPs 输入分辨率 Top1 精度 T4 推理速度
MetaTransformerBasePatch16, laion_2b 86.86M 55.73G 384 85.4% 150.731 qps
MetaTransformerLargePatch14, laion_2b 304.53M 191.6G 336 88.1% 50.1536 qps

MLP混合器

模型 参数量 FLOPs 输入 Top1准确率 T4推理
MLPMixerS32, JFT 19.1M 1.01G 224 68.70 488.839 qps
MLPMixerS16, JFT 18.5M 3.79G 224 73.83 451.962 qps
MLPMixerB32, JFT 60.3M 3.25G 224 75.53 247.629 qps
- sam 60.3M 3.25G 224 72.47 247.629 qps
MLPMixerB16 59.9M 12.64G 224 76.44 207.423 qps
- 21k_ft1k 59.9M 12.64G 224 80.64 207.423 qps
- sam 59.9M 12.64G 224 77.36 207.423 qps
- JFT 59.9M 12.64G 224 80.00 207.423 qps
MLPMixerL32, JFT 206.9M 11.30G 224 80.67 95.1865 qps
MLPMixerL16 208.2M 44.66G 224 71.76 77.9928 qps
- 21k_ft1k 208.2M 44.66G 224 82.89 77.9928 qps
- JFT 208.2M 44.66G 224 84.82 77.9928 qps
- 448 208.2M 178.54G 448 83.91
- 448, JFT 208.2M 178.54G 448 86.78
MLPMixerH14, JFT 432.3M 121.22G 224 86.32
- 448, JFT 432.3M 484.73G 448 87.94

MobileNetV3

模型 参数量 FLOPs 输入 Top1准确率 T4推理
MobileNetV3Small050 1.29M 24.92M 224 57.89 2458.28 qps
MobileNetV3Small075 2.04M 44.35M 224 65.24 2286.44 qps
MobileNetV3Small100 2.54M 57.62M 224 67.66 2058.06 qps
MobileNetV3Large075 3.99M 156.30M 224 73.44 1643.78 qps
MobileNetV3Large100 5.48M 218.73M 224 75.77 1629.44 qps
- miil 5.48M 218.73M 224 77.92 1629.44 qps

MobileViT

模型 参数量 FLOPs 输入 Top1准确率 T4推理
MobileViT_XXS 1.3M 0.42G 256 69.0 1319.43 qps
MobileViT_XS 2.3M 1.05G 256 74.7 1019.57 qps
MobileViT_S 5.6M 2.03G 256 78.3 790.943 qps

MobileViT_V2

模型 参数量 FLOPs 输入分辨率 Top1准确率 T4推理速度
MobileViT_V2_050 1.37M 0.47G 256 70.18 718.337 qps
MobileViT_V2_075 2.87M 1.04G 256 75.56 642.323 qps
MobileViT_V2_100 4.90M 1.83G 256 78.09 591.217 qps
MobileViT_V2_125 7.48M 2.84G 256 79.65 510.25 qps
MobileViT_V2_150 10.6M 4.07G 256 80.38 466.482 qps
- 21k_ft1k 10.6M 4.07G 256 81.46 466.482 qps
- 21k_ft1k, 384 10.6M 9.15G 384 82.60 278.834 qps
MobileViT_V2_175 14.3M 5.52G 256 80.84 412.759 qps
- 21k_ft1k 14.3M 5.52G 256 81.94 412.759 qps
- 21k_ft1k, 384 14.3M 12.4G 384 82.93 247.108 qps
MobileViT_V2_200 18.4M 7.12G 256 81.17 394.325 qps
- 21k_ft1k 18.4M 7.12G 256 82.36 394.325 qps
- 21k_ft1k, 384 18.4M 16.2G 384 83.41 229.399 qps

MogaNet

模型 参数量 FLOPs 输入分辨率 Top1准确率 T4推理速度
MogaNetXtiny 2.96M 806M 224 76.5 398.488 qps
MogaNetTiny 5.20M 1.11G 224 79.0 362.409 qps
- 256 5.20M 1.45G 256 79.6 335.372 qps
MogaNetSmall 25.3M 4.98G 224 83.4 249.807 qps
MogaNetBase 43.7M 9.96G 224 84.2 133.071 qps
MogaNetLarge 82.5M 15.96G 224 84.6 84.2045 qps

NAT

模型 参数量 FLOPs 输入分辨率 Top1准确率 T4推理速度
NAT_Mini 20.0M 2.73G 224 81.8 85.2324 qps
NAT_Tiny 27.9M 4.34G 224 83.2 62.6147 qps
NAT_Small 50.7M 7.84G 224 83.7 41.1545 qps
NAT_Base 89.8M 13.76G 224 84.3 30.8989 qps

NFNets

模型 参数量 FLOPs 输入尺寸 Top1 准确率 T4 推理速度
NFNetL0 35.07M 7.13G 288 82.75
NFNetF0 71.5M 12.58G 256 83.6
NFNetF1 132.6M 35.95G 320 84.7
NFNetF2 193.8M 63.24G 352 85.1
NFNetF3 254.9M 115.75G 416 85.7
NFNetF4 316.1M 216.78G 512 85.9
NFNetF5 377.2M 291.73G 544 86.0
NFNetF6, sam 438.4M 379.75G 576 86.5
NFNetF7 499.5M 481.80G 608
ECA_NFNetL0 24.14M 7.12G 288 82.58
ECA_NFNetL1 41.41M 14.93G 320 84.01
ECA_NFNetL2 56.72M 30.12G 384 84.70
ECA_NFNetL3 72.04M 52.73G 448

PVT_V2

模型 参数量 FLOPs 输入尺寸 Top1 准确率 T4 推理速度
PVT_V2B0 3.7M 580.3M 224 70.5 561.593 qps
PVT_V2B1 14.0M 2.14G 224 78.7 392.408 qps
PVT_V2B2 25.4M 4.07G 224 82.0 210.476 qps
PVT_V2B2_linear 22.6M 3.94G 224 82.1 226.791 qps
PVT_V2B3 45.2M 6.96G 224 83.1 135.51 qps
PVT_V2B4 62.6M 10.19G 224 83.6 97.666 qps
PVT_V2B5 82.0M 11.81G 224 83.8 81.4798 qps

RegNetY

模型 参数量 FLOPs 输入尺寸 Top1 准确率 T4 推理速度
RegNetY040 20.65M 3.98G 224 82.3 749.277 qps
RegNetY064 30.58M 6.36G 224 83.0 436.946 qps
RegNetY080 39.18M 7.97G 224 83.17 513.43 qps
RegNetY160 83.59M 15.92G 224 82.0 338.046 qps
RegNetY320 145.05M 32.29G 224 82.5 188.508 qps

RegNetZ

模型 参数量 FLOPs 输入尺寸 Top1 准确率 T4 推理速度
RegNetZB16 9.72M 1.44G 224 79.868 751.035 qps
RegNetZC16 13.46M 2.50G 256 82.164 636.549 qps
RegNetZC16_EVO 13.49M 2.55G 256 81.9
RegNetZD32 27.58M 5.96G 256 83.422 459.204 qps
RegNetZD8 23.37M 3.95G 256 83.5 460.021 qps
RegNetZD8_EVO 23.46M 4.61G 256 83.42
RegNetZE8 57.70M 9.88G 256 84.5 274.97 qps

RepViT

模型 参数量 FLOPs 输入尺寸 Top1 准确率 T4 推理速度
RepViT_M09, 蒸馏 5.10M 0.82G 224 79.1
- deploy=True 5.07M 0.82G 224 79.1 966.72 qps
RepViT_M10, 蒸馏 6.85M 1.12G 224 80.3 1157.8 qps
- deploy=True 6.81M 1.12G 224 80.3
RepViT_M11, 蒸馏 8.29M 1.35G 224 81.2 846.682 qps
- deploy=True 8.24M 1.35G 224 81.2 1027.5 qps
RepViT_M15, 蒸馏 14.13M 2.30G 224 82.5
- deploy=True 14.05M 2.30G 224 82.5
RepViT_M23, 蒸馏 23.01M 4.55G 224 83.7
- deploy=True 22.93M 4.55G 224 83.7

ResMLP

模型 参数量 FLOPs 输入尺寸 Top1 准确率 T4 推理速度
ResMLP12 15M 3.02G 224 77.8 928.402 qps
ResMLP24 30M 5.98G 224 80.8 420.709 qps
ResMLP36 116M 8.94G 224 81.1 309.513 qps
ResMLP_B24 129M 100.39G 224 83.6 78.3015 qps
- 21k_ft1k 129M 100.39G 224 84.4 78.3015 qps

ResNeSt

模型 参数量 FLOPs 输入尺寸 Top1 准确率 T4 推理速度
ResNest50 28M 5.38G 224 81.03 534.627 qps
ResNest101 49M 13.33G 256 82.83 257.074 qps
ResNest200 71M 35.55G 320 83.84 118.183 qps
ResNest269 111M 77.42G 416 84.54 61.167 qps

ResNetD

模型 参数量 FLOPs 输入尺寸 Top1 准确率 T4 推理速度
ResNet50D 25.58M 4.33G 224 80.530 930.214 qps
ResNet101D 44.57M 8.04G 224 83.022 502.268 qps
ResNet152D 60.21M 11.75G 224 83.680 353.279 qps
ResNet200D 64.69M 15.25G 224 83.962 287.73 qps

ResNetQ

模型 参数量 FLOPs 输入尺寸 Top1 准确率 T4 推理速度
ResNet51Q 35.7M 4.87G 224 82.36 838.754 qps
ResNet61Q 36.8M 5.96G 224 730.245 qps

ResNeXt

模型 参数量 FLOPs 输入尺寸 Top1 准确率 T4 推理速度
ResNeXt50, (32×4d) 25M 4.23G 224 79.768 1041.46 qps
- SWSL 25M 4.23G 224 82.182 1041.46 qps
ResNeXt50D, (32×4d + 深层结构) 25M 4.47G 224 79.676 1010.94 qps
ResNeXt101, (32×4d) 42M 7.97G 224 80.334 571.652 qps
- SWSL 42M 7.97G 224 83.230 571.652 qps
ResNeXt101W, (32×8d) 89M 16.41G 224 79.308 367.431 qps
- SWSL 89M 16.41G 224 84.284 367.431 qps
ResNeXt101W_64, (64×4d) 83.46M 15.46G 224 82.46 377.83 qps

SwinTransformerV2

模型 参数量 FLOPs 输入尺寸 Top1 准确率 T4 推理速度
SwinTransformerV2Tiny_ns 28.3M 4.69G 224 81.8 289.205 qps
SwinTransformerV2Small_ns 49.7M 9.12G 224 83.5 169.645 qps
SwinTransformerV2Tiny_window8 28.3M 5.99G 256 81.8 275.547 qps
SwinTransformerV2Tiny_window16 28.3M 6.75G 256 82.8 217.207 qps
SwinTransformerV2Small_window8 49.7M 11.63G 256 83.7 157.559 qps
SwinTransformerV2Small_window16 49.7M 12.93G 256 84.1 129.953 qps
SwinTransformerV2Base_window8 87.9M 20.44G 256 84.2 126.294 qps
SwinTransformerV2Base_window16 87.9M 22.17G 256 84.6 99.634 qps
SwinTransformerV2Base_window16, 21k_ft1k 87.9M 22.17G 256 86.2 99.634 qps
SwinTransformerV2Base_window24, 21k_ft1k 87.9M 55.89G 384 87.1 35.0508 qps
SwinTransformerV2Large_window16, 21k_ft1k 196.7M 48.03G 256 86.9
SwinTransformerV2Large_window24, 21k_ft1k 196.7M 117.1G 384 87.6

TinyNet

模型 参数量 FLOPs 输入大小 Top1 准确率 T4 推理速度
TinyNetE 2.04M 25.22M 106 59.86 2152.36 qps
TinyNetD 2.34M 53.35M 152 66.96 1905.56 qps
TinyNetC 2.46M 103.22M 184 71.23 1353.44 qps
TinyNetB 3.73M 206.28M 188 74.98 1196.06 qps
TinyNetA 6.19M 343.74M 192 77.65 981.976 qps

TinyViT

模型 参数量 FLOPs 输入大小 Top1 准确率 T4 推理速度
TinyViT_5M,蒸馏 5.4M 1.3G 224 79.1 631.414 qps
- 21k_ft1k 5.4M 1.3G 224 80.7 631.414 qps
TinyViT_11M,蒸馏 11M 2.0G 224 81.5 509.818 qps
- 21k_ft1k 11M 2.0G 224 83.2 509.818 qps
TinyViT_21M,蒸馏 21M 4.3G 224 83.1 410.676 qps
- 21k_ft1k 21M 4.3G 224 84.8 410.676 qps
- 21k_ft1k,384 21M 13.8G 384 86.2 199.458 qps
- 21k_ft1k,512 21M 27.0G 512 86.5 122.846 qps

UniFormer

模型 参数量 FLOPs 输入大小 Top1 准确率 T4 推理速度
UniformerSmall32,token_label 22M 3.66G 224 83.4 577.334 qps
UniformerSmall64 22M 3.66G 224 82.9 562.794 qps
- token_label 22M 3.66G 224 83.4 562.794 qps
UniformerSmallPlus32 24M 4.24G 224 83.4 546.82 qps
- token_label 24M 4.24G 224 83.9 546.82 qps
UniformerSmallPlus64 24M 4.23G 224 83.4 538.193 qps
- token_label 24M 4.23G 224 83.6 538.193 qps
UniformerBase32,token_label 50M 8.32G 224 85.1 272.485 qps
UniformerBase64 50M 8.31G 224 83.8 286.963 qps
- token_label 50M 8.31G 224 84.8 286.963 qps
UniformerLarge64,token_label 100M 19.79G 224 85.6 154.761 qps
- token_label,384 100M 63.11G 384 86.3 75.3487 qps

VanillaNet

模型 参数量 FLOPs 输入尺寸 Top1 准确率 T4 推理速度
VanillaNet5 22.33M 8.46G 224 72.49 598.964 qps
- deploy=True 15.52M 5.17G 224 72.49 798.199 qps
VanillaNet6 56.12M 10.11G 224 76.36 465.031 qps
- deploy=True 32.51M 6.00G 224 76.36 655.944 qps
VanillaNet7 56.67M 11.84G 224 77.98 375.479 qps
- deploy=True 32.80M 6.90G 224 77.98 527.723 qps
VanillaNet8 65.18M 13.50G 224 79.13 341.157 qps
- deploy=True 37.10M 7.75G 224 79.13 479.328 qps
VanillaNet9 73.68M 15.17G 224 79.87 312.815 qps
- deploy=True 41.40M 8.59G 224 79.87 443.464 qps
VanillaNet10 82.19M 16.83G 224 80.57 277.871 qps
- deploy=True 45.69M 9.43G 224 80.57 408.082 qps
VanillaNet11 90.69M 18.49G 224 81.08 267.026 qps
- deploy=True 50.00M 10.27G 224 81.08 377.239 qps
VanillaNet12 99.20M 20.16G 224 81.55 229.987 qps
- deploy=True 54.29M 11.11G 224 81.55 358.076 qps
VanillaNet13 107.7M 21.82G 224 82.05 218.256 qps
- deploy=True 58.59M 11.96G 224 82.05 334.244 qps

ViT-5

模型 参数量 FLOPs 输入尺寸 Top1 准确率
ViT5_Small_Patch16 22.04M 4.73G 224 82.2
ViT5_Base_Patch16 86.54M 18.00G 224 84.2
ViT5_Base_Patch16 86.83M 56.19G 384 85.4
ViT5_Large_Patch16 304.3M 63.01G 224 84.9
ViT5_Large_Patch16 304.6M 193.2G 384 86.0

VOLO

模型 参数量 FLOPs 输入尺寸 Top1 准确率 T4 推理速度
VOLO_d1 27M 4.82G 224 84.2
- 384 27M 14.22G 384 85.2
VOLO_d2 59M 9.78G 224 85.2
- 384 59M 28.84G 384 86.0
VOLO_d3 86M 13.80G 224 85.4
- 448 86M 55.50G 448 86.3
VOLO_d4 193M 29.39G 224 85.7
- 448 193M 117.81G 448 86.8
VOLO_d5 296M 53.34G 224 86.1
- 448 296M 213.72G 448 87.0
- 512 296M 279.36G 512 87.1

WaveMLP

模型 参数量 FLOPs 输入大小 Top1 准确率 T4 推理速度
WaveMLP_T 17M 2.47G 224 80.9 523.4 qps
WaveMLP_S 30M 4.55G 224 82.9 203.445 qps
WaveMLP_M 44M 7.92G 224 83.3 147.155 qps
WaveMLP_B 63M 10.26G 224 83.6

检测模型

EfficientDet

模型 参数量 FLOPs 输入大小 COCO 验证集 AP 测试集 AP T4 推理速度
EfficientDetD0 3.9M 2.55G 512 34.3 34.6 248.009 qps
- Det-AdvProp 3.9M 2.55G 512 35.1 35.3 248.009 qps
EfficientDetD1 6.6M 6.13G 640 40.2 40.5 133.139 qps
- Det-AdvProp 6.6M 6.13G 640 40.8 40.9 133.139 qps
EfficientDetD2 8.1M 11.03G 768 43.5 43.9 89.0523 qps
- Det-AdvProp 8.1M 11.03G 768 44.3 44.3 89.0523 qps
EfficientDetD3 12.0M 24.95G 896 46.8 47.2 50.0498 qps
- Det-AdvProp 12.0M 24.95G 896 47.7 48.0 50.0498 qps
EfficientDetD4 20.7M 55.29G 1024 49.3 49.7 28.0086 qps
- Det-AdvProp 20.7M 55.29G 1024 50.4 50.4 28.0086 qps
EfficientDetD5 33.7M 135.62G 1280 51.2 51.5
- Det-AdvProp 33.7M 135.62G 1280 52.2 52.5
EfficientDetD6 51.9M 225.93G 1280 52.1 52.6
EfficientDetD7 51.9M 325.34G 1536 53.4 53.7
EfficientDetD7X 77.0M 410.87G 1536 54.4 55.1
EfficientDetLite0 3.2M 0.98G 320 27.5 26.41 599.616 qps
EfficientDetLite1 4.2M 1.97G 384 32.6 31.50 369.273 qps
EfficientDetLite2 5.3M 3.38G 448 36.2 35.06 278.263 qps
EfficientDetLite3 8.4M 7.50G 512 39.9 38.77 180.871 qps
EfficientDetLite3X 9.3M 14.01G 640 44.0 42.64 115.271 qps
EfficientDetLite4 15.1M 20.20G 640 44.4 43.18 95.4122 qps

YOLO_NAS

模型 参数量 FLOPs 输入大小 COCO 验证集 AP 测试集 AP T4 推理速度
YOLO_NAS_S 12.88M 16.96G 640 47.5 240.087 qps
- use_reparam_conv=False 12.18M 15.92G 640 47.5 345.595 qps
YOLO_NAS_M 33.86M 47.12G 640 51.55 128.96 qps
- use_reparam_conv=False 31.92M 43.91G 640 51.55 167.935 qps
YOLO_NAS_L 44.53M 64.53G 640 52.22 98.6069 qps
- use_reparam_conv=False 42.02M 59.95G 640 52.22 131.11 qps

YOLOR

模型 参数量 FLOPs 输入大小 COCO 验证集 AP 测试集 AP T4 推理速度
YOLOR_CSP 52.9M 60.25G 640 50.0 52.8 118.746 qps
YOLOR_CSPX 99.8M 111.11G 640 51.5 54.8 67.9444 qps
YOLOR_P6 37.3M 162.87G 1280 52.5 55.7 49.3128 qps
YOLOR_W6 79.9M 226.67G 1280 53.6 ? 56.9 40.2355 qps
YOLOR_E6 115.9M 341.62G 1280 50.3 ? 57.6 21.5719 qps
YOLOR_D6 151.8M 467.88G 1280 50.8 ? 58.2 16.6061 qps

YOLOV7

模型 参数量 FLOPs 输入大小 COCO 验证集 AP 测试集 AP T4 推理速度
YOLOV7_Tiny 6.23M 2.90G 416 33.3 845.903 qps
YOLOV7_CSP 37.67M 53.0G 640 51.4 137.441 qps
YOLOV7_X 71.41M 95.0G 640 53.1 82.0534 qps
YOLOV7_W6 70.49M 180.1G 1280 54.9 49.9841 qps
YOLOV7_E6 97.33M 257.6G 1280 56.0 31.3852 qps
YOLOV7_D6 133.9M 351.4G 1280 56.6 26.1346 qps
YOLOV7_E6E 151.9M 421.7G 1280 56.8 20.1331 qps

YOLOV8

模型 参数量 FLOPs 输入大小 COCO 验证集 AP 测试集 AP T4 推理速度
YOLOV8_N 3.16M 4.39G 640 37.3 614.042 qps
YOLOV8_S 11.17M 14.33G 640 44.9 349.528 qps
YOLOV8_M 25.90M 39.52G 640 50.2 160.212 qps
YOLOV8_L 43.69M 82.65G 640 52.9 104.452 qps
YOLOV8_X 68.23M 129.0G 640 53.9 66.0428 qps
YOLOV8_X6 97.42M 522.6G 1280 56.7 ? 17.4368 qps

YOLOX

模型 参数量 FLOPs 输入大小 COCO 验证集 AP 测试集 AP T4 推理速度
YOLOXNano 0.91M 0.53G 416 25.8 930.57 qps
YOLOXTiny 5.06M 3.22G 416 32.8 745.2 qps
YOLOXS 9.0M 13.39G 640 40.5 40.5 380.38 qps
YOLOXM 25.3M 36.84G 640 46.9 47.2 181.084 qps
YOLOXL 54.2M 77.76G 640 49.7 50.1 111.517 qps
YOLOXX 99.1M 140.87G 640 51.5 51.5 62.3189 qps

语言模型

GPT2

模型 参数量 FLOPs 词汇表大小 LAMBADA PPL T4 推理
GPT2_Base 163.04M 146.42G 50257 35.13 51.4483 qps
GPT2_Medium 406.29M 415.07G 50257 15.60 21.756 qps
GPT2_Large 838.36M 890.28G 50257 10.87
GPT2_XLarge, +.2 1.638B 1758.3G 50257 8.63

LLaMA2

模型 参数量 FLOPs 词汇表大小 验证损失 T4 推理
LLaMA2_15M 24.41M 4.06G 32000 1.072
LLaMA2_42M 58.17M 50.7G 32000 0.847
LLaMA2_110M 134.1M 130.2G 32000 0.760
LLaMA2_1B 1.10B 2.50T 32003
LLaMA2_7B 6.74B 14.54T 32000

Stable Diffusion

模型 参数量 FLOPs 输入 下载
ViTTextLargePatch14 123.1M 6.67G [None, 77] vit_text_large_patch14_clip.h5
编码器 34.16M 559.6G [None, 512, 512, 3] encoder_v1_5.h5
UNet 859.5M 404.4G [None, 64, 64, 4] unet_v1_5.h5
解码器 49.49M 1259.5G [None, 64, 64, 4] decoder_v1_5.h5

分割模型

YOLOV8 分割

模型 参数量 FLOPs 输入 COCO val mask AP T4 推理
YOLOV8_N_SEG 3.41M 6.02G 640 30.5
YOLOV8_S_SEG 11.82M 20.08G 640 36.8
YOLOV8_M_SEG 27.29M 52.33G 640 40.8
YOLOV8_L_SEG 46.00M 105.29G 640 42.6
YOLOV8_X_SEG 71.83M 164.30G 640 43.4

Segment Anything

模型 参数量 FLOPs 输入 COCO val mask AP T4 推理
MobileSAM 5.74M 39.4G 1024 41.0
TinySAM 5.74M 39.4G 1024 41.9
EfficientViT_SAM_L0 30.73M 35.4G 512 45.7

许可证

  • 本部分内容根据 Github rwightman/pytorch-image-models 复制并修改而来。
  • 代码。此处的代码采用 MIT 许可证。您有责任确保遵守此处的许可证以及任何依赖许可证的条款。在适用的情况下,我在文档字符串中链接了各个组件的来源或参考文献。如果您认为我遗漏了某些内容,请提交一个问题。迄今为止,此处提供的所有预训练权重均基于 ImageNet 和 COCO 数据集进行预训练,其中仅有少数几个模型还进行了额外的预训练。
  • ImageNet 预训练权重。ImageNet 数据集仅用于非商业性的研究目的(https://image-net.org/download)。这对其所生成的预训练权重的使用有何具体影响尚不明确。我使用 ImageNet 数据集训练的所有模型均出于研究目的,因此应假定原始数据集的许可证同样适用于这些权重。如果您打算将这些预训练权重用于商业产品,最好咨询法律意见。
  • COCO 预训练权重。应遵循 cocodataset 使用条款。COCO 数据集中的标注属于 COCO 联盟,并根据 知识共享署名 4.0 许可证授权。COCO 联盟并不拥有图像的版权。图像的使用必须遵守 Flickr 使用条款。图像的使用者应对数据集的使用承担全部责任,包括但不限于使用其从该数据集中创建的任何受版权保护的图像副本。
  • 基于除 ImageNet 和 COCO 之外的数据集进行预训练。此处包含或引用的若干权重是使用我无法访问的专有数据集进行预训练的,其中包括 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。

引用

  • BibTeX
    @misc{leondgarse,
      author = {Leondgarse},
      title = {Keras CV 注意力模型},
      year = {2022},
      publisher = {GitHub},
      journal = {GitHub 仓库},
      doi = {10.5281/zenodo.6506947},
      howpublished = {\url{https://github.com/leondgarse/keras_cv_attention_models}}
    }
    
  • 最新 DOIDOI

版本历史

cspnext2024/01/13
segment_anything2023/11/28
stable_diffusion2023/09/26
fastvit2023/08/19
llama22023/08/05
repvit2023/07/31
fastervit2023/06/19
hiera2023/06/11
assets2023/06/02
gpt22023/06/02
vanillanet2023/05/25
efficientvit2023/05/23
yolov82023/04/05
inceptionnext2023/04/05
fasternet2023/03/23
moganet2023/01/18
tinyvit2023/01/17
caformer2023/01/17
gpvit2023/01/15
iformer2023/01/14

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|昨天
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|2天前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

143.9k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

107.9k|★★☆☆☆|昨天
开发框架图像Agent

markitdown

MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|昨天
插件开发框架

LLMs-from-scratch

LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备

90.1k|★★★☆☆|昨天
语言模型图像Agent