Files
RoRD-Layout-Recognation/README.md

175 lines
4.2 KiB
Markdown
Raw Normal View History

2025-06-07 23:45:32 +08:00
基于 AI 的集成电路版图识别RoRD 模型
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
描述
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
本项目实现了 RoRDRotation-Robust Descriptors模型用于集成电路IC版图识别。RoRD 是一种先进的局部特征匹配方法,具有旋转鲁棒性,特别适合于 IC 版图因为它们可能以各种方向出现0°、90°、180°、270°及其镜像。项目通过自监督学习和随机旋转增强解决了数据稀缺性、几何多变性、动态扩展性和结构复杂性等挑战。
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
项目包括:
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
模型实现:适用于 IC 版图的 RoRD 模型,使用 PyTorch基于 D2-Net 架构。
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
数据加载:自定义数据集类 ICLayoutDataset用于加载光栅化的 IC 版图图像。
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
训练脚本:通过随机旋转进行自监督训练,确保模型对旋转鲁棒。
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
评估脚本:在验证集上评估模型性能,计算精确率、召回率和 F1 分数。
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
匹配工具:使用训练好的模型进行模板匹配,支持多实例匹配和可视化。
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
安装
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
环境要求
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
Python 3.8 或更高版本
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
CUDA可选用于 GPU 加速)
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
依赖安装
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
使用 uv 安装依赖库:
2025-06-08 14:49:40 +08:00
```bash
2025-06-07 23:45:32 +08:00
uv add torch torchvision opencv-python numpy Pillow
uv lock
uv sync
2025-06-08 14:49:40 +08:00
```
2025-06-07 23:45:32 +08:00
或者使用 pip
2025-06-08 14:49:40 +08:00
```bash
2025-06-07 23:45:32 +08:00
pip install torch torchvision opencv-python numpy Pillow
2025-06-08 14:49:40 +08:00
```
2025-06-07 23:45:32 +08:00
使用方法
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
项目结构
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
ic_layout_recognition/
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
├── data/
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
│ ├── ic_dataset.py
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
├── utils/
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
│ ├── transforms.py
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
├── models/
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
│ ├── rord.py
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
├── train.py
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
├── evaluate.py
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
├── match.py
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
├── requirements.txt
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
└── README.md
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
训练
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
运行以下命令训练模型:
2025-06-08 14:49:40 +08:00
```bash
2025-06-07 23:45:32 +08:00
python train.py --data_dir path/to/layouts --save_dir path/to/save
2025-06-08 14:49:40 +08:00
```
2025-06-07 23:45:32 +08:00
--data_dir包含 PNG 格式 IC 版图图像的目录。
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
--save_dir模型权重保存目录。训练过程使用自监督学习通过随机旋转生成训练对优化关键点检测和描述子生成。
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
评估
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
运行以下命令评估模型性能:
2025-06-08 14:49:40 +08:00
```bash
2025-06-07 23:45:32 +08:00
python evaluate.py --model_path path/to/model.pth --val_dir path/to/val/images --annotations_dir path/to/val/annotations --templates path/to/templates
2025-06-08 14:49:40 +08:00
```
2025-06-07 23:45:32 +08:00
--model_path训练好的模型权重路径。
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
--val_dir验证集图像目录。
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
--annotations_dirJSON 格式的真实标注目录。
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
--templates模板图像路径列表。评估结果包括精确率、召回率和 F1 分数,基于 IoUIntersection over Union阈值。
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
模板匹配
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
运行以下命令进行模板匹配:
2025-06-08 14:49:40 +08:00
```bash
2025-06-07 23:45:32 +08:00
python match.py --model_path path/to/model.pth --layout_path path/to/layout.png --template_path path/to/template.png --output_path path/to/output.png
2025-06-08 14:49:40 +08:00
```
2025-06-07 23:45:32 +08:00
--layout_path版图图像路径。
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
--template_path模板图像路径。
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
--output_path可视化结果保存路径可选。匹配过程使用 RoRD 模型提取关键点和描述子通过互最近邻MNN匹配和 RANSAC 几何验证,生成边界框并支持多实例匹配。
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
数据准备
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
训练数据
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
格式PNG 格式的 IC 版图图像,从 GDSII 或 OASIS 文件光栅化。
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
要求:数据集应包含多个版图图像,建议分辨率适中(如 1024x1024
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
路径:存储在 path/to/layouts 目录中。
验证数据
图像PNG 格式的验证集图像,存储在 path/to/val/images。
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
注释JSON 格式的真实标注,存储在 path/to/val/annotations示例{
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
"boxes": [
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
{"template": "template1.png", "x": 100, "y": 200, "width": 50, "height": 50},
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
{"template": "template2.png", "x": 300, "y": 400, "width": 60, "height": 60}
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
]
2025-06-08 14:49:40 +08:00
2025-06-07 23:45:32 +08:00
}
模板:模板图像存储在 path/to/templates文件名需与注释中的 template 字段一致。
模型
2025-06-08 14:49:40 +08:00
RoRD 模型基于 D2-Net 架构,使用 VGG-16 作为骨干网络。它包括:
2025-06-07 23:45:32 +08:00
2025-06-08 14:49:40 +08:00
检测头:用于关键点检测,输出概率图。
2025-06-07 23:45:32 +08:00
2025-06-08 14:49:40 +08:00
描述子头:生成旋转鲁棒的 128 维描述子,适配 IC 版图的 8 个离散旋转方向。模型通过自监督学习训练使用随机旋转0°~360°生成训练对优化检测重复性和描述子相似性。
2025-06-07 23:45:32 +08:00
2025-06-08 14:49:40 +08:00
结果
2025-06-07 23:45:32 +08:00
2025-06-08 14:49:40 +08:00
[待补充:如果有预训练模型或基准测试结果,请在此列出。例如:]
2025-06-07 23:45:32 +08:00
2025-06-08 14:49:40 +08:00
预训练模型:[链接](待补充)
2025-06-07 23:45:32 +08:00
2025-06-08 14:49:40 +08:00
验证集评估指标精确率X召回率YF1 分数Z
2025-06-07 23:45:32 +08:00