ohhoohho/PE-Core-S16-384
模型介绍
文件和版本
Pull Requests
讨论
分析

PE-Core-S16-384 — 昇腾 NPU 部署

Perception Encoder (PE-Core-S16-384) 图像特征提取与零样本分类模型在华为 Ascend NPU 上的推理部署。

模型信息

属性值
模型架构PE-Core-S16-384 (Perception Encoder Small, patch 16)
模型类型CLIP 风格视觉-语言对比学习编码器
输入尺寸384 × 384
输出特征1024-dim L2 归一化图像特征向量
视觉参数量~90M (Vision tower)
论文Perception Encoder (arXiv 2504.13181)
模型来源HuggingFace (facebook/PE-Core-S16-384) · AtomGit 镜像
timm 模型名PE-Core-S-16-384

环境要求

  • 操作系统: Ubuntu 22.04 / openEuler 22.03+
  • 昇腾驱动: Ascend NPU Driver + Firmware (≥ 23.0.rc1)
  • CANN: 昇腾 AI 处理器配套软件 (≥ 7.0.0)
  • Python: 3.9 ~ 3.11
  • PyTorch: ≥ 2.0.0
  • torch_npu: 对应 CANN 版本
  • timm: ≥ 1.0.0 (支持 PE-Core 模型)

快速开始

1. 环境准备

# 安装 PyTorch 与 torch_npu(根据 CANN 版本选择对应 whl)
# 以 CANN 8.0.0 / PyTorch 2.2.0 为例:
pip install torch==2.2.0
pip install torch-npu==2.2.0

# 验证 NPU 可用
python -c "import torch; import torch_npu; print(torch.npu.is_available())"
# 应输出: True

2. 安装依赖

pip install -r requirements.txt

3. 模型权重准备

权重可通过以下方式获取:

方式一:自动下载(推荐)

推理脚本会在首次运行时自动从 HuggingFace Hub 或 timm 缓存下载权重。

方式二:从 AtomGit 镜像克隆

# 克隆模型权重仓库
git lfs install
git clone https://ai.gitcode.com/hf_mirrors/facebook/PE-Core-S16-384.git
# 推理时通过 --model_path 指定本地路径

4. 执行推理

# 模式一:图像特征提取(默认)
python inference.py --image_path /path/to/your/image.jpg

# 模式二:零样本 ImageNet-1k 分类(需安装 open_clip)
python inference.py --image_path /path/to/your/image.jpg --mode classify

# 强制 CPU 推理
python inference.py --image_path /path/to/your/image.jpg --cpu

# 指定本地模型路径
python inference.py --image_path /path/to/your/image.jpg --model_path ./PE-Core-S16-384

# 输出 Top-10 分类结果
python inference.py --image_path /path/to/your/image.jpg --mode classify --topk 10

推理示例

特征提取模式

[INFO] 推理设备: npu:0
[INFO] 加载模型: PE-Core-S-16-384
[INFO] 模型加载完成,参数量: 90,123,456
[INFO] 输入尺寸: (3, 384, 384)
[INFO] 特征维度: 1024
[INFO] 输入图像: /path/to/image.jpg  (384×384)
============================================================
  图像特征提取完成
============================================================
  特征维度: 1024
  特征范数: 1.0000  (应接近 1.0, 表示 L2 归一化)
  特征向量 (前 10 维): [0.023, -0.045, 0.067, ...]
  推理耗时: 25.34 ms
  设备: npu:0
============================================================

零样本分类模式

[INFO] 推理设备: npu:0
[INFO] 加载模型: PE-Core-S-16-384
[INFO] 模型加载完成,参数量: 90,123,456
[INFO] 输入尺寸: (3, 384, 384)
[INFO] 输入图像: /path/to/image.jpg  (384×384)
============================================================
  Top-5 零样本分类结果
============================================================
  #1: golden retriever (207) — 85.23%
  #2: Labrador retriever (208) — 5.41%
  #3: English setter (155) — 2.13%
  #4: Irish setter (156) — 1.67%
  #5: English foxhound (161) — 0.98%
============================================================
  推理耗时: 28.56 ms
  设备: npu:0
============================================================

项目结构

PE-Core-S16-384/
├── inference.py        # 推理脚本(支持 embed / classify 两种模式)
├── README.md           # 部署说明文档
├── requirements.txt    # 环境依赖清单
└── assets/             # 截图素材(后续补充)
    ├── agent_workflow.png     # 部署流程图
    ├── npu_device_call.png    # NPU 设备调用截图
    └── model_result.png       # 推理结果截图

参考链接

  • Perception Encoder 论文 (arXiv 2504.13181)
  • GitHub (facebookresearch/perception_models)
  • timm 文档
  • 昇腾 PyTorch (torch_npu)
  • AtomGit 模型仓

License

Apache 2.0