Expand description
版面检测:PP-DocLayoutV3(HGNetV2-L 骨干 + RT-DETR 式混合编码器 + 可变形注意力解码器),
输入整页图,输出带类别的区域框(正文、标题、公式、公式编号、表格、图……),按预测的阅读顺序排。
结构照 transformers 的 modeling_pp_doclayout_v3.py、modeling_hgnet_v2.py,预处理与后处理照
image_processing_pp_doclayout_v3.py(均 Apache-2.0)。掩码转多边形不做。
流程:预处理(preprocess,拉伸到 800×800)→ 骨干(hgnet)→ 混合编码器(encoder,
含掩码特征)→ 选查询(query,掩码外接框作初始参考框)→ 解码器(decoder,可变形注意力在
deform)→ 后处理(postprocess)。
Modules§
- config
- 模型配置(config.json)里推理要用的字段,缺省值取 transformers
PPDocLayoutV3Config的类属性。 只支持 PP-DocLayoutV3 发布权重用到的那种结构,遇到别的取值直接报错,不默默算错。 - decoder
- 解码器(
PPDocLayoutV3Decoder):6 层(自注意力 + 可变形交叉注意力 + 前馈),每层之后用框头迭代 修正参考框。类别头、框头与编码器的enc_score_head、enc_bbox_head共用权重(_tied_weights_keys, 权重文件里没有另存)。阅读顺序头(decoder_order_head+ 全局指针)只算最后一层。逐层掩码输出不算。 - encoder
- 混合编码器(
PPDocLayoutV3HybridEncoder,RT-DETR 式):骨干后三段各投影到同一通道 → 最高层做 层内自注意力(AIFI)→ 自顶向下 FPN + 自底向上 PAN 融合;另外用融合结果和骨干第一段算掩码特征。 RepVGG 块的两路卷积在载入时并成一个 3×3,结果只差浮点舍入。 - hgnet
- HGNetV2 骨干。结构照 transformers 的
modeling_hgnet_v2.py(Apache-2.0):stem + 4 段 HG 块, 块里若干卷积的输出连同输入按通道拼起来,再过两个 1×1 卷积聚合。批归一化在载入时并进卷积。 配置(段数、块数、每块层数、核大小、是否轻量块)都从权重推出来,不写死 L 档的表。 - preprocess
- 预处理:整页图拉伸到固定尺寸(不保长宽比),双三次插值(不抗锯齿),取整回 8 位,再缩放到 0–1、
减均值除标准差。语义照 transformers 的
PPDocLayoutV3ImageProcessor(Apache-2.0):torchvision 的resize(antialias=False)走F.interpolate(mode="bicubic", align_corners=False)。