返回模型
说明文档
UVDoc 网格输出 - 文档矫正 ONNX 模型
这是 UVDoc 文档矫正模型的 ONNX 导出版本,
修改为输出坐标网格而非图像。这支持通过 cv2.remap() 实现高分辨率文档矫正。
模型描述
UVDoc 是一个深度学习模型,用于校正拍摄文档中的透视畸变和弯曲。与输出固定 288x288 图像的 PaddlePaddle ONNX 变体不同,此版本输出可应用于任意分辨率图像的坐标映射网格。
核心区别:网格输出 vs 图像输出
| 方法 | 输出 | 质量 |
|---|---|---|
| 图像输出模型 | 288x288 RGB 图像 | 差(必须放大) |
| 此网格输出模型 | 45x31 坐标网格 | 原生分辨率 |
模型详情
- 架构: UVDoc(基于 ResNet 的编码器-解码器)
- 输入:
(1, 3, 720, 496)- RGB 图像,归一化 [0, 1] - 输出:
(1, 2, 45, 31)- [-1, 1] 范围内的坐标网格 - ONNX Opset: 16
- 大小: ~30 MB
输入规格
| 属性 | 值 |
|---|---|
| 形状 | (batch, 3, 720, 496) |
| 格式 | RGB(非 BGR) |
| 范围 | [0, 1](归一化) |
| 布局 | NCHW(批次, 通道, 高度, 宽度) |
输出规格
| 属性 | 值 |
|---|---|
| 形状 | (batch, 2, 45, 31) |
| 通道 | 2(x, y 坐标) |
| 范围 | [-1, 1](归一化坐标) |
| 布局 | NCHW(批次, 通道, 高度, 宽度) |
使用方法
使用 ONNX Runtime (Python)
import cv2
import numpy as np
import onnxruntime as ort
# 加载模型
session = ort.InferenceSession("UVDoc_grid.onnx", providers=['CPUExecutionProvider'])
# 加载并预处理图像
image = cv2.imread("warped_document.jpg")
h_orig, w_orig = image.shape[:2]
# 准备模型输入(720x496 RGB 归一化)
img_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
resized = cv2.resize(img_rgb, (496, 720)) # 宽度, 高度
blob = resized.astype(np.float32) / 255.0
blob = np.transpose(blob, (2, 0, 1))[None] # (1, 3, 720, 496)
# 运行推理
result = session.run(None, {'image': blob})[0] # (1, 2, 45, 31)
# 将网格转换为 remap 坐标
grid = np.transpose(result[0], (1, 2, 0)) # (45, 31, 2)
grid_up = cv2.resize(grid, (w_orig, h_orig), interpolation=cv2.INTER_LINEAR)
map_x = ((grid_up[..., 0] + 1) / 2) * (w_orig - 1)
map_y = ((grid_up[..., 1] + 1) / 2) * (h_orig - 1)
# 对原始高分辨率图像应用矫正
unwarped = cv2.remap(
image,
map_x.astype(np.float32),
map_y.astype(np.float32),
interpolation=cv2.INTER_CUBIC,
borderMode=cv2.BORDER_REPLICATE
)
cv2.imwrite("unwarped_document.jpg", unwarped)
使用 HuggingFace Hub
from huggingface_hub import hf_hub_download
model_path = hf_hub_download(
repo_id="YOUR_USERNAME/uvdoc-grid-onnx",
filename="UVDoc_grid.onnx"
)
训练详情
此模型未重新训练。它是原始 UVDoc 权重的直接 ONNX 导出,来源为 tanguymagne/UVDoc,并添加了一个包装器以仅输出 2D 坐标网格(舍弃 3D 形状输出)。
原始模型
- 论文: UVDoc: Neural Grid-based Document Unwarping
- 作者: Floor Verhoeven, Tanguy Magne, Olga Sorkine-Hornung (ETH Zurich)
- 发表: SIGGRAPH Asia 2023
- 原始仓库: tanguymagne/UVDoc
局限性
- 输入必须调整为 720x496 才能进行推理(网格输出始终为 45x31)
- 对具有可见文本/内容的文档效果最佳(需要特征进行网格估计)
- 可能无法很好地处理极端透视畸变
- CPU 推理每张图像约需 100-200ms
引用
如果您使用此模型,请引用原始 UVDoc 论文:
@inproceedings{UVDoc,
title={{UVDoc}: Neural Grid-based Document Unwarping},
author={Floor Verhoeven and Tanguy Magne and Olga Sorkine-Hornung},
booktitle = {SIGGRAPH ASIA, Technical Papers},
year = {2023},
url={https://doi.org/10.1145/3610548.3618174}
}
许可证
此 ONNX 导出版本采用 Apache 2.0 许可证提供。原始 UVDoc 模型也采用 Apache 2.0 许可证。有关完整的许可证详情,请参阅原始仓库。
fredcallagan/uvdoc-grid-onnx
作者 fredcallagan
image-to-image
onnx
↓ 0
♥ 1
创建时间: 2026-01-12 21:05:44+00:00
更新时间: 2026-01-12 21:12:34+00:00
在 Hugging Face 上查看文件 (7)
.gitattributes
LICENSE
README.md
UVDoc_grid.onnx
ONNX
UVDoc_grid.onnx.data
config.json
example.py