Fachuan 图片方向分类器
基于 ConvNeXtV2-Atto 微调的四方向图片分类 ONNX 模型,专为票据/文档图片自动旋转设计。
模型信息
| 项目 | 值 |
|---|---|
| 基础模型 | facebook/convnextv2-atto-1k-224 |
| 参数量 | 3.7M |
| 输入分辨率 | 384 × 384 |
| 输入格式 | float32 [1, 3, 384, 384],ImageNet 归一化 |
| 输出 | float32 [1, 4] → 0° / 90° / 180° / 270° |
| 验证准确率 | 99.6% |
| 模型大小 | ~13 MB(INT8 量化) |
分类含义
| 类别索引 | 目录名 | 含义 | 后端旋转角度 |
|---|---|---|---|
| 0 | 0 | 正向,无需旋转 | 0° |
| 1 | 180 | 上下颠倒 | 180° |
| 2 | 270 | 逆时针旋转 | -90° |
| 3 | 90 | 顺时针旋转 | -270° |
快速使用
import numpy as np
import onnxruntime as ort
from PIL import Image
session = ort.InferenceSession("fachuan-orientation-classifier.onnx")
img = Image.open("receipt.jpg").convert("RGB").resize((384, 384))
arr = np.array(img, dtype=np.float32).transpose(2, 0, 1) / 255.0
mean = np.array([0.485, 0.456, 0.406]).reshape(3, 1, 1)
std = np.array([0.229, 0.224, 0.225]).reshape(3, 1, 1)
arr = ((arr - mean) / std).unsqueeze(0)
logits = session.run(None, {"pixel_values": arr})[0]
predicted_class = int(np.argmax(logits, axis=1)[0])
ROTATION_MAP = {0: 0, 1: 180, 2: -90, 3: -270}
print(f"预测方向: {predicted_class}°, 需旋转: {ROTATION_MAP[predicted_class]}°")
训练数据
使用法穿(Fachuan)项目内部票据图片训练,包含发票、收据、微信聊天截图等场景。
- 训练集:1116 张(279 张原始图 × 4 个旋转角度)
- 验证集:276 张
- 数据增强:RandomResizedCrop、ColorJitter
训练元信息
许可证
MIT License