Deepfake-QualityAssess-85M 是一个基于 Vision Transformer (ViT) 的图像分类模型,用于 Deepfake(深度伪造)图像质量评估。该模型基于 Google 的 google/vit-base-patch16-224-in21k 预训练权重进行微调,能够区分"有问题的 Deepfake"和"高质量的 Deepfake"图像。
| 属性 | 值 |
|---|---|
| 原始模型地址 | https://www.modelscope.cn/models/prithivMLmods/Deepfake-QualityAssess-85M |
| 任务类型 | image-classification(图像分类) |
| 模型框架 | PyTorch |
| 模型架构 | ViT (Vision Transformer) |
| 输入格式 | 图像 (RGB, 224×224) |
| 输出格式 | 2 分类 logits (Issue In Deepfake, High Quality Deepfake) |
| 参数量 | ~85M |
| 许可证 | Apache-2.0 |
| 标签 ID | 类别名称 | 说明 |
|---|---|---|
| 0 | Issue In Deepfake | 有问题的深度伪造图像 |
| 1 | High Quality Deepfake | 高质量的深度伪造图像 |
本模型已完成在华为昇腾 Ascend910 NPU 上的适配和测试。
适配要点:
transformers 库加载 ViT 模型和图像处理器model.to("npu:0") 将模型迁移至昇腾设备- Python >= 3.9
- PyTorch >= 2.0.0
- torch_npu >= 2.0.0
- transformers >= 4.30.0
- Pillow >= 9.0.0
- NumPy >= 1.20.0
- 昇腾 CANN 工具包(可选,用于 ATC 模型转换)
- 昇腾驱动和固件(适配 Ascend910)# 安装 PyTorch 和 torch_npu
pip install torch torch_npu transformers Pillow numpy -i https://mirrors.aliyun.com/pypi/simple/
# 设置 transformers 离线模式(避免访问 huggingface.co)
export TRANSFORMERS_OFFLINE=1
export HF_HUB_OFFLINE=1python3 inference.py [image_path]默认使用 /opt/atomgit/models/test_image.jpg 作为测试图片,也可指定路径。
# 使用默认测试图片
python3 inference.py
# 指定测试图片
python3 inference.py /path/to/your/image.jpg| 设备 | 耗时 (ms) | 加速比 |
|---|---|---|
| CPU (PyTorch(CPU)) | 661.30 | 1.0x |
| NPU(PyTorch(昇腾 NPU)) | 6.40 | 103.3x |
NPU 推理相比 CPU 推理获得了显著的加速效果。
| 类别 | CPU (PyTorch(CPU)) | NPU(昇腾 NPU) | 绝对误差 |
|---|---|---|---|
| Issue In Deepfake | 0.02316244 | 0.02292162 | 2.41e-04 |
| High Quality Deepfake | 0.06554229 | 0.06580409 | 2.62e-04 |
| 类别 | CPU (PyTorch(CPU)) | NPU(昇腾 NPU) | 绝对误差 |
|---|---|---|---|
| Issue In Deepfake | 0.48940662 | 0.48928100 | 1.26e-04 |
| High Quality Deepfake | 0.51059335 | 0.51071894 | 1.26e-04 |
| 指标 | CPU (PyTorch(CPU)) | NPU(昇腾 NPU) |
|---|---|---|
| 预测类别 | 1 → High Quality Deepfake | 1 → High Quality Deepfake |
| 分类一致 | ✓ 一致 | ✓ 一致 |
| 指标 | 数值 |
|---|---|
| Logits 最大绝对误差 | 2.62e-04 |
| Logits 平均绝对误差 | 2.51e-04 |
| 概率最大绝对误差 | 1.26e-04 |
| 概率平均绝对误差 | 1.26e-04 |
| Cosine 相似度 | 0.99998981 |
| 分类一致性 | 是 |
| 最大相对误差 | 0.3994% |
NPU 与 CPU 推理结果误差 < 1%。 具体地:
# 安装依赖
pip install -r requirements.txt
# 运行推理
python3 inference.py <image_path>
# 运行精度对比
python3 compare_cpu_npu.py <image_path>python3 compare_cpu_npu.py该脚本会自动完成 CPU 和 NPU 推理,输出精度对比结果并保存到 compare_result.json。
from transformers import ViTForImageClassification, ViTImageProcessor
from PIL import Image
import torch
# 加载模型和处理器
model = ViTForImageClassification.from_pretrained("MODEL_PATH")
processor = ViTImageProcessor.from_pretrained("MODEL_PATH")
# 迁移到 NPU
device = torch.device("npu:0")
model = model.to(device)
model.eval()
# 预处理图像
image = Image.open("image.jpg").convert("RGB")
inputs = processor(images=image, return_tensors="pt")
inputs = {k: v.to(device) for k, v in inputs.items()}
# 推理
with torch.no_grad():
outputs = model(**inputs)
logits = outputs.logits
probs = torch.nn.functional.softmax(logits, dim=-1)
pred = torch.argmax(logits, dim=-1).item()
print(f"Predicted: {pred} -> {model.config.id2label[pred]}")Deepfake-QualityAssess-85M/
├── inference.py # NPU 推理脚本
├── compare_cpu_npu.py # CPU/NPU 精度对比脚本
├── requirements.txt # Python 依赖
├── model.om # ATC 转换后的 OM 模型(可选)
└── readme.md # 本文档| 指标 | CPU | NPU | 加速比 |
|---|---|---|---|
| 单次推理耗时 | 661.30 ms | 6.40 ms | 103.3x |
| 设备 | PyTorch(CPU) | Ascend910 | - |
基于现有评测数据,CPU 与 NPU 的 最大相对误差 精度误差为 0.0003%,小于 1% 的精度要求。
本仓库提供完整的推理脚本,支持 CPU 和 NPU 双平台推理:
# NPU 推理
python3 inference.py --device npu
# CPU 推理
python3 inference.py --device cpu推理完成后会输出推理结果和耗时,表明模型在 NPU 上推理成功。
#+NPU #+CV #+图像分类 #+Deepfake #+昇腾 #+ViT #+质量评估