ONNX 模型库
返回模型

说明文档

EfficientNet

EfficientNet 模型由 Mingxing Tan 和 Quoc V. Le 在论文 EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks 中提出。EfficientNet 是一系列图像分类模型,在达到最先进准确率的同时,比之前的模型更小、更快一个数量级。这里的特定版本是 EfficientNet-ES(EdgeTPU-Small)。

我们开发了一个可由 AMD Ryzen AI 支持的修改版本。

模型描述

论文摘要如下:

卷积神经网络(ConvNets)通常在固定的资源预算下开发,如果有更多资源可用,则会扩大规模以提高准确率。在本文中,我们系统地研究了模型缩放,发现仔细平衡网络深度、宽度和分辨率可以获得更好的性能。基于这一观察,我们提出了一种新的缩放方法,使用简单但高效的复合系数统一缩放深度/宽度/分辨率的所有维度。我们在 MobileNets 和 ResNet 上展示了这种方法的有效性。为了更进一步,我们使用神经架构搜索设计了一个新的基准网络,并将其扩展以获得一系列模型,称为 EfficientNets,它们比之前的 ConvNets 实现了更好的准确率和效率。特别是,我们的 EfficientNet-B7 在 ImageNet 上实现了最先进的 84.3% top-1 准确率,同时比现有的最佳 ConvNet 小 8.4 倍,推理速度快 6.1 倍。我们的 EfficientNets 也具有良好的迁移性,在 CIFAR-100(91.7%)、Flowers(98.8%)和其他 3 个迁移学习数据集上实现了最先进的准确率,参数量减少了一个数量级。

原始代码可在这里找到。

预期用途与限制

您可以使用原始模型进行图像分类。请参阅模型中心以查找您感兴趣的任务的微调版本。

如何使用

安装

  1. 按照 Ryzen AI Installation 为 Ryzen AI 准备环境。

  2. 运行以下脚本安装此模型的先决条件。

    pip install -r requirements.txt 
    

测试与评估

  • 推理单张图片(图像分类):

    import onnxruntime
    import argparse
    from PIL import Image 
    import torchvision.transforms as transforms 
    
    parser = argparse.ArgumentParser()
    parser.add_argument('--onnx_path', type=str, default=\"EfficientNet_int.onnx\", required=False)
    parser.add_argument('--image_path', type=str, required=True)
    
    args = parser.parse_args()
    
    def read_image():
      # Read a PIL image 
      image = Image.open(args.image_path)
      normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
      
      transform = transforms.Compose([
        transforms.ToTensor(),
        transforms.Resize((224, 224)),
        normalize,
      ])
      img_tensor = transform(image).unsqueeze(0)
      return img_tensor.numpy()
    
    
    def main():
      so = onnxruntime.SessionOptions()
      ort_session = onnxruntime.InferenceSession(
        args.onnx_path, so, providers=['CUDAExecutionProvider'])
      ort_inputs = {
        \"WrapModel::input_0\": read_image()
      }
      output = ort_session.run(None, ort_inputs)[0]
      print(\"class id =\", output[0].argmax())
    
    
    if __name__ == \"__main__\":
      main()
    
  • 使用 eval_onnx.py 评估 ImageNet 验证数据集(50,000 张图片)。

    python eval_onnx.py --onnx_model EfficientNet_int.onnx --ipu --provider_config Path\To\vaip_config.json --data_dir /Path/To/Your/Dataset
    

性能

​ 数据集:ImageNet 验证数据集(50,000 张图片)。

指标 IPU 上的准确率
top1 和 top5 准确率 77.72% / 93.78%

引用

@article{EfficientNet,
 author       = {Mingxing Tan and Quoc V. Le},
  title       = {Searching for MobileNetV3},
  year        = {2019},
  url         = {https://arxiv.org/abs/1905.11946},
}

amd/efficientnet-es

作者 amd

image-classification
↓ 0 ♥ 0

创建时间: 2023-12-04 09:02:55+00:00

更新时间: 2024-01-09 08:32:48+00:00

在 Hugging Face 上查看

文件 (7)

.gitattributes
EfficientNet_int.onnx ONNX
EfficientNet_int_nhwc.onnx ONNX
README.md
eval_onnx.py
infer_onnx.py
requirements.txt