Image Quality Classification - EfficientNet-B0
基于 EfficientNet-B0 的图片内容分级模型,支持 L1-L4 四级分类。
分类标准
| 等级 |
说明 |
示例 |
| L1 |
轻度性感内容 |
正常身材+性感内衣/衣物遮挡下体,姿势正常无性暗示 |
| L2 |
中度性感内容 |
夸张身材+衣着性感/较少,姿势有较强性暗示 |
| L3 |
重度性感内容 |
裸露(半裸/全裸),私密部位暴露 |
| L4 |
色情内容 |
明确性行为/性交内容 |
详细分级标准见 数据准备文档
模型性能
基准测试
| 项目 |
值 |
| 模型 |
0.onnx |
| 架构 |
EfficientNet-B0 |
| 大小 |
14.2 MB |
| 精度 |
FP32 |
| 设备 |
CPU |
推理速度
| 指标 |
值 |
| Mean |
82.04 ms |
| Median |
96.23 ms |
| P99 |
188.17 ms |
| Min |
11.72 ms |
| Max |
209.72 ms |
| FPS |
12 |
分类精度
| 等级 |
准确率 |
| Overall |
82.50% (n=1400) |
| L1 |
87.47% |
| L2 |
73.31% |
| L3 |
84.87% |
| L4 |
82.93% |
使用方式
ONNX Runtime 推理
import onnxruntime as ort
import numpy as np
from PIL import Image
from torchvision import transforms
session = ort.InferenceSession("0.onnx")
input_name = session.get_inputs()[0].name
transform = transforms.Compose([
transforms.Resize(256),
transforms.CenterCrop(224),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406],
std=[0.229, 0.224, 0.225]),
])
img = Image.open("image.jpg").convert("RGB")
input_tensor = transform(img).unsqueeze(0).numpy()
outputs = session.run(None, {input_name: input_tensor})[0]
pred_id = np.argmax(outputs, axis=1)[0]
class_names = ["L1", "L2", "L3", "L4"]
print(f"预测等级: {class_names[pred_id]}")
命令行推理
python inference.py --model 0.onnx --image /path/to/image.jpg
权重文件
| 文件名 |
大小 |
说明 |
| 0.onnx |
14.2 MB |
FP32 ONNX 模型(最佳权重) |
训练
训练代码位于 image_L_class_train,基于 EfficientNet-B0 + timm 训练框架。
训练数据
- 来源:Civitai 图片分级标注
- 分级:L1-L4 四类
- 数据量:约 6000 张
部署建议
- CPU 推理: ONNX Runtime 直接部署,单张约 80ms
- GPU 推理: 可用 TensorRT 优化,速度提升 5-10 倍
- INT8 量化: 可进一步压缩体积至 ~5MB,速度提升 2-3 倍