更新readme文件
This commit is contained in:
43
README.md
43
README.md
@@ -1,7 +1,7 @@
|
||||
# RoRD: 基于 AI 的集成电路版图识别
|
||||
|
||||
[//]: # (徽章占位符:您可以根据需要添加构建状态、版本号等徽章)
|
||||

|
||||

|
||||

|
||||
|
||||
## 📖 描述
|
||||
@@ -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×512,5 次):见 `docs/description/Performance_Benchmark.md`
|
||||
- FPN vs 滑窗对标脚本:`tests/benchmark_fpn.py`
|
||||
- 多骨干 A/B 基准脚本:`tests/benchmark_backbones.py`
|
||||
|
||||
* **预训练模型**: [链接待补充]
|
||||
* **验证集评估指标**:
|
||||
* 精确率: X
|
||||
* 召回率: Y
|
||||
* F1 分数: Z
|
||||
后续将在 GPU 与真实数据集上补充精度与速度的完整对标表格。
|
||||
|
||||
## 📄 许可协议
|
||||
|
||||
|
||||
Reference in New Issue
Block a user