更新readme文件

This commit is contained in:
Jiao77
2025-10-20 13:39:31 +08:00
parent 1217e360b9
commit d6d00cf088

View File

@@ -1,7 +1,7 @@
# RoRD: 基于 AI 的集成电路版图识别
[//]: # (徽章占位符:您可以根据需要添加构建状态、版本号等徽章)
![Python Version](https://img.shields.io/badge/Python-3.8%2B-blue)
![Python Version](https://img.shields.io/badge/Python-3.12-blue)
![License](https://img.shields.io/badge/License-Apache%202.0-orange.svg)
## 📖 描述
@@ -12,12 +12,13 @@ IC 版图在匹配时可能出现多种方向0°、90°、180°、270° 及
### ✨ 主要功能
* **模型实现**:基于 D2-Net 架构,使用 PyTorch 实现了适用于 IC 版图的 RoRD 模型,**专门针对几何结构学习优化**。
* **模型实现**:基于 D2-Net 思路,使用 PyTorch 实现了适用于 IC 版图的 RoRD 模型,**专门针对几何结构学习优化**;支持可切换骨干(`vgg16` / `resnet34` / `efficientnet_b0`
* **数据加载**:提供了自定义的 `ICLayoutDataset` 类,用于加载光栅化的 IC 版图图像,支持**曼哈顿几何感知采样**。
* **训练脚本**:通过**几何感知损失函数**训练模型,学习**几何结构描述子**而非纹理特征,确保对二值化、稀疏性、重复结构的鲁棒性。
* **评估脚本**:可在验证集上评估模型性能,**专门针对IC版图特征**计算几何一致性指标。
* **匹配工具**使用训练好的模型进行**几何结构匹配**,有效区分重复图形并支持多实例检测
* **匹配工具**支持 FPN 多尺度推理与滑窗两种路径,并提供半径 NMS 去重;可直接输出多实例匹配结果
* **灵活配置与日志**:引入 OmegaConf 驱动的 YAML 配置 (`configs/*.yaml`),配合 `utils.config_loader` 与 TensorBoard 监控实现参数/路径集中管理。
* **性能工具**:提供 FPN vs 滑窗的对标脚本与多骨干 A/B 基准脚本,便于快速评估速度/显存与精度。
## 🛠️ 安装
@@ -58,7 +59,7 @@ RoRD-Layout-Recognation/
│ ├── loss_function.md
│ └── NextStep.md
├── models/
│ └── rord.py # RoRD 模型定义
│ └── rord.py # RoRD 模型与 FPN多骨干支持
├── utils/
│ ├── config_loader.py # YAML 配置加载与路径转换
│ ├── data_utils.py
@@ -66,7 +67,10 @@ RoRD-Layout-Recognation/
├── losses.py # 几何感知损失集合
├── train.py # 训练脚本YAML + TensorBoard
├── evaluate.py # 评估脚本
├── match.py # 模板匹配脚本
├── match.py # 模板匹配脚本FPN / 滑窗 + NMS
├── tests/
│ ├── benchmark_fpn.py # FPN vs 滑窗性能对标
│ └── benchmark_backbones.py # 多骨干 A/B 前向基准
├── config.py # 兼容旧流程的 YAML 读取 shim
├── pyproject.toml
└── README.md
@@ -78,6 +82,11 @@ RoRD-Layout-Recognation/
- **旧配置兼容**`config.py` 现在仅作为兼容层,将 YAML 配置转换成原有的 Python 常量,便于逐步迁移历史代码。
- **损失与数据解耦**`losses.py` 汇总几何感知损失,`data/ic_dataset.py``utils/data_utils.py` 分离数据准备逻辑,便于扩展新的采样策略或损失项。
- **日志体系**`logging` 配置节配合 TensorBoard 集成,`train.py``evaluate.py``match.py` 可统一写入 `log_dir/子任务/experiment_name`
- **模型配置扩展**
- `model.backbone.name`: `vgg16 | resnet34 | efficientnet_b0`
- `model.backbone.pretrained`: 是否加载 ImageNet 预训练
- `model.attention`: `enabled/type/places`(默认关闭,可选 `cbam` / `se`
- `model.fpn`: `enabled/out_channels/levels`
## 🚀 使用方法
@@ -163,7 +172,7 @@ python train.py --help
- 最佳模型:`rord_model_best.pth`
- 最终模型:`rord_model_final.pth`
### <EFBFBD> TensorBoard 实验追踪
### 📈 TensorBoard 实验追踪
`configs/base_config.yaml` 中新增的 `logging` 区块用于控制 TensorBoard
@@ -195,7 +204,7 @@ TensorBoard 中将展示:
- `evaluate.py`:精确率 / 召回率 / F1 分数;
- `match.py`(配合 `--tb_log_matches`):每个匹配实例的内点数量、尺度和总检测数量。
### <EFBFBD>🚀 快速开始示例
### 🚀 快速开始示例
```bash
# 1. 安装依赖
uv sync
@@ -287,6 +296,15 @@ model:
out_channels: 256
levels: [2, 3, 4]
backbone:
name: "vgg16" # 可选vgg16 | resnet34 | efficientnet_b0
pretrained: false
attention:
enabled: false
type: "none" # 可选none | cbam | se
places: [] # 插入位置backbone_high | det_head | desc_head
matching:
use_fpn: true
nms:
@@ -329,14 +347,13 @@ uv run python match.py --config configs/base_config.yaml --no_nms \
**关键区别**: 传统方法学习纹理特征,我们的方法**学习几何结构特征**完美适应IC版图的二值化、稀疏性、重复结构和曼哈顿几何特征。
## 📊 结果
可参考以下文档与脚本复现并查看最新结果:
[待补充:请在此处添加预训练模型的链接或基准测试结果。]
- CPU 多骨干 A/B 基准512×5125 次):见 `docs/description/Performance_Benchmark.md`
- FPN vs 滑窗对标脚本:`tests/benchmark_fpn.py`
- 多骨干 A/B 基准脚本:`tests/benchmark_backbones.py`
* **预训练模型**: [链接待补充]
* **验证集评估指标**:
* 精确率: X
* 召回率: Y
* F1 分数: Z
后续将在 GPU 与真实数据集上补充精度与速度的完整对标表格。
## 📄 许可协议