Files
RoRD-Layout-Recognation/docs/layout_matching_guide.md
2025-11-09 18:02:40 +08:00

6.4 KiB
Raw Permalink Blame History

IC版图匹配功能使用指南

本文档介绍如何使用增强版的match.py进行IC版图匹配实现输入大版图和小版图找到所有匹配区域并输出详细信息。

🎯 功能概述

输入

  • 大版图待搜索的大型IC版图图像
  • 小版图:要查找的目标模板图像

输出

  • 坐标信息:每个匹配区域的边界框坐标 (x, y, width, height)
  • 旋转角度:检测到的旋转角度 (0°, 90°, 180°, 270°)
  • 置信度:匹配质量评分 (0-1)
  • 相似度:模板与区域的相似程度 (0-1)
  • 差异描述:文本化的差异说明
  • 变换矩阵3x3单应性矩阵

🚀 快速开始

基本用法

python match.py \
    --layout data/large_layout.png \
    --template data/small_template.png \
    --output results/matching.png \
    --json_output results/matching.json

使用示例脚本

python examples/layout_matching_example.py \
    --layout data/large_layout.png \
    --template data/small_template.png \
    --model models/rord_model_best.pth

📋 命令行参数

必需参数

  • --layout: 大版图图像路径
  • --template: 小版图(模板)图像路径

可选参数

  • --config: 配置文件路径 (默认: configs/base_config.yaml)
  • --model_path: 模型权重路径
  • --output: 可视化结果保存路径
  • --json_output: JSON结果保存路径
  • --simple_format: 使用简单输出格式(兼容旧版本)
  • --fpn_off: 关闭FPN匹配路径
  • --no_nms: 关闭关键点去重

📊 输出格式详解

详细格式 (默认)

{
  "found_matches": true,
  "total_matches": 2,
  "matches": [
    {
      "bbox": {
        "x": 120,
        "y": 80,
        "width": 256,
        "height": 128
      },
      "rotation": 0,
      "confidence": 0.854,
      "similarity": 0.892,
      "inliers": 45,
      "scale": 1.0,
      "homography": [[1.0, 0.0, 120.0], [0.0, 1.0, 80.0], [0.0, 0.0, 1.0]],
      "description": "高度匹配, 无旋转"
    },
    {
      "bbox": {
        "x": 400,
        "y": 200,
        "width": 256,
        "height": 128
      },
      "rotation": 90,
      "confidence": 0.723,
      "similarity": 0.756,
      "inliers": 32,
      "scale": 0.8,
      "homography": [[0.0, -1.0, 528.0], [1.0, 0.0, 200.0], [0.0, 0.0, 1.0]],
      "description": "良好匹配, 旋转90度, 缩小1.25倍"
    }
  ]
}

字段说明

字段 类型 说明
bbox.x int 匹配区域左上角X坐标
bbox.y int 匹配区域左上角Y坐标
bbox.width int 匹配区域宽度
bbox.height int 匹配区域高度
rotation int 旋转角度 (0°, 90°, 180°, 270°)
confidence float 置信度 (0-1)
similarity float 相似度 (0-1)
inliers int 内点数量
scale float 匹配尺度
homography array 3x3变换矩阵
description string 差异描述

🔧 技术原理

1. 特征提取

  • 使用RoRD模型提取几何感知特征
  • 支持FPN多尺度特征金字塔
  • 旋转不变的关键点检测

2. 多尺度搜索

  • 在不同尺度下搜索模板
  • 支持模板缩放匹配
  • 多实例检测算法

3. 几何验证

  • RANSAC变换估计
  • 单应性矩阵计算
  • 旋转角度提取

4. 质量评估

  • 内点比例计算
  • 变换矩阵质量评估
  • 综合置信度评分

📈 质量指标说明

置信度 (Confidence)

基于内点比例和变换质量计算:

  • 0.8-1.0: 高质量匹配
  • 0.6-0.8: 良好匹配
  • 0.4-0.6: 中等匹配
  • 0.0-0.4: 低质量匹配

相似度 (Similarity)

基于匹配率和覆盖率计算:

  • 考虑模板关键点匹配率
  • 考虑版图区域覆盖率
  • 综合评估相似程度

差异描述

自动生成的文本描述:

  • 匹配质量等级
  • 旋转角度信息
  • 缩放变换信息

🎨 可视化结果

匹配可视化包含:

  • 绿色边界框标识匹配区域
  • 匹配编号标签
  • 置信度显示
  • 旋转角度信息
  • 差异描述摘要

🛠️ 高级配置

匹配参数调优

编辑configs/base_config.yaml中的匹配参数:

matching:
  keypoint_threshold: 0.5        # 关键点阈值
  ransac_reproj_threshold: 5.0   # RANSAC重投影阈值
  min_inliers: 15                # 最小内点数量
  pyramid_scales: [0.75, 1.0, 1.5]  # 搜索尺度
  use_fpn: true                  # 使用FPN
  nms:
    enabled: true
    radius: 4                    # NMS半径

性能优化

  1. GPU加速: 确保CUDA可用
  2. FPN优化: 大图使用FPN小图使用滑窗
  3. 尺度调整: 根据图像大小调整pyramid_scales
  4. 阈值调优: 根据应用场景调整keypoint_threshold

🔍 故障排除

常见问题

  1. 未找到匹配

    • 检查图像质量和分辨率
    • 降低keypoint_threshold
    • 减少min_inliers数量
  2. 误匹配过多

    • 提高keypoint_threshold
    • 增大ransac_reproj_threshold
    • 启用NMS去重
  3. 性能较慢

    • 使用FPN模式 (use_fpn: true)
    • 减少pyramid_scales数量
    • 调整滑窗口大小
  4. 内存不足

    • 减小图像尺寸
    • 降低批次大小
    • 使用CPU模式

调试技巧

  1. 可视化检查: 查看生成的可视化结果
  2. JSON分析: 检查详细的匹配数据
  3. 阈值调整: 逐步调整参数找到最佳设置
  4. 日志查看: 启用TensorBoard日志记录

📝 API集成

Python调用示例

import subprocess
import json

# 执行匹配
result = subprocess.run([
    'python', 'match.py',
    '--layout', 'large.png',
    '--template', 'small.png',
    '--json_output', 'temp.json'
], capture_output=True, text=True)

# 解析结果
with open('temp.json') as f:
    data = json.load(f)

if data['found_matches']:
    for match in data['matches']:
        bbox = match['bbox']
        print(f"位置: ({bbox['x']}, {bbox['y']})")
        print(f"置信度: {match['confidence']}")
        print(f"旋转: {match['rotation']}°")

🎯 应用场景

  1. IC设计验证: 检查设计是否符合规范
  2. IP保护: 检测版图抄袭和侵权
  3. 制造验证: 确认制造结果与设计一致
  4. 设计复用: 在新设计中查找复用的模块
  5. 质量检测: 自动化版图质量检查

📚 更多资源