Y
YYPGD/nsfw_image_detector
模型介绍
文件和版本
Pull Requests
讨论
分析

nsfw_image_detector 昇腾NPU部署文档

1. 模型简介

模型名称: nsfw_image_detector(Freepik/nsfw_image_detector) 模型链接: Freepik/nsfw_image_detector 模型描述: Freepik 推出的快速 NSFW(不适宜内容)图像分类模型,基于 EVA02 ViT 视觉 Transformer 骨干微调,可将图像按 NSFW 程度分为 neutral / low / medium / high 四级,适用于内容审核、AIGC 平台安全过滤等场景。采用 MIT 许可证。 模型架构: EVA02(ViT base,patch14,输入 448x448),TimmWrapperForImageClassification 分类头 参数规模: 约 86M(165M 权重文件为 fp32/bf16 存储)


2. 环境依赖

依赖项版本要求说明
Python>= 3.10推荐 3.11
torch / torch_npu2.1.0+本环境为 torch 2.7.1+cpu + torch_npu
timm>= 1.0.28直接加载 EVA02 骨干(纯 timm 格式权重)
safetensors>= 0.4.0权重文件读取
Pillow / numpy-图像预处理与后处理
昇腾驱动CANN 8.0+npu-smi 可用即可

安装命令:

pip install --target /mnt/workspace/nsfw_image_detector/libs timm safetensors pillow numpy

注意:不要在 libs 里安装 torch/torchvision/torch_npu,使用系统自带版本。


3. 推理步骤

3.1 环境准备

# 检查 NPU 设备
npu-smi info
# 设置模型专属依赖路径
export PYTHONPATH=/mnt/workspace/nsfw_image_detector/libs:$PYTHONPATH

3.2 运行推理

python inference.py --model_path /home/developer/models/nsfw_image_detector

脚本内置示例输入(优先使用权重目录自带的样例图,否则自动合成测试图),自动选择设备 npu > cuda > cpu,输出四级分类概率到 outputs/result.json。

3.3 推理参数说明

参数类型默认值说明
--model_pathstr/home/developer/models/nsfw_image_detector本地模型权重目录(必传)
--input_imagestrNone输入图片路径,缺省用内置示例图
--output_dirstroutputs分类结果 JSON 输出目录

4. 测试样例及输出结果

样例 1:内置示例图四级分类

输入:

python inference.py --model_path /home/developer/models/nsfw_image_detector

输出:

[INFO] 设备类型: npu, device=npu:0
[INFO] 模型加载完成,加载耗时=3.37s
[INFO] 输入图像: synthetic_sample.png (size=(512, 512))
[INFO] 分类结果: neutral (confidence=0.9873)
[INFO] 各类别概率: {'neutral': 0.987301, 'low': 0.008412, 'medium': 0.003215, 'high': 0.001072}
[INFO] 结果已保存: outputs/result.json
耗时/elapsed: 0.812 s

样例 2:自定义图片内容审核

输入:

python inference.py --model_path /home/developer/models/nsfw_image_detector --input_image ./test_photo.jpg

输出:

[INFO] 设备类型: npu, device=npu:0
[INFO] 输入图像: test_photo.jpg (size=(1920, 1080))
[INFO] 分类结果: neutral (confidence=0.9655)
耗时/elapsed: 0.795 s

5. Agent适配截图

5.1 Agent适配全过程截图

Agent 适配流程

5.2 NPU设备调用截图

NPU 设备调用

5.3 模型适配结果截图

模型适配结果


6. 注意事项

  • 推理脚本通过 torch_npu 调用昇腾 NPU,输入张量为 float32(NPU 不支持 float64 算子)
  • 模型权重为纯 timm 格式(EVA02),推理脚本直接用 timm.create_model + load_state_dict 加载,不依赖 transformers;以本地路径加载,保证离线可跑
  • 注意:环境里系统 torchaudio 与 torch 2.7.1 存在 ABI 不兼容,若经 transformers 导入会触发崩溃,故本脚本绕开 transformers 直接用 timm
  • 官方预处理:图像 squash resize 到 448x448,归一化采用 CLIP mean/std(mean=[0.4815, 0.4578, 0.4082],std=[0.2686, 0.2613, 0.2758])
  • 输出为 4 类 softmax 概率,标签顺序 neutral → low → medium → high 对应 NSFW 程度递增
  • 模型权重遵循 MIT 许可证;*.safetensors 不入库