ONNX 模型库
返回模型

说明文档

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 形状输出)。

原始模型

局限性

  • 输入必须调整为 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