基于算子谱神经网络的超声损伤检测 - 从 3D 超声时空信号到 2D 缺陷图的跨模态映射
本项目实现了两种深度学习模型,用于从3D 时空超声信号映射到2D 缺陷图:
- OperatorMapper3D ⭐: 基于低秩算子分解的 3D 卷积网络(推荐)(待开发为使用超声检测相关算子如拉普拉斯算子、小波基等构造空间函数和算子)
- LSTMMapper3D: 基于双向 LSTM 的时序特征提取网络
核心技术:
- 3D 卷积 + 残差连接提取时空特征
- 低秩算子分解降低参数量
- 动态组合损失函数(Focal + Tversky + BCE)
- Cosine Annealing 学习率调度 + Dice 早停策略
# 使用uv(推荐,速度快10-100倍)
pip install uv
uv pip install -e .# 测试3D模型基础功能(约30秒)
uv run python tests/test_models_3d.py
# 快速训练验证(约2分钟)
uv run python tests/test_models_3d.py --train-smoke --epochs 5# 标准训练(推荐配置)
uv run python scripts/train_3d_models.py --model operator --epochs 100 --visualize
# 自定义训练
uv run python scripts/train_3d_models.py \
--model operator \
--epochs 150 \
--batch-size 8 \
--lr 5e-4 \
--img-size 64 \
--n-train 800 \
--n-val 200| 参数 | 默认值 | 影响 | 调优建议 |
|---|---|---|---|
--rank |
128 | 算子秩维度 | ↑ 提高表达力,↓ 降低过拟合 |
--latent-dim |
2048 | 潜在空间维度 | ↑ 增强特征,↑ 内存占用 |
--img-size |
64 | 输出图像尺寸 | 32/64/128(越大越精细) |
| 参数 | 默认值 | 影响 | 调优建议 |
|---|---|---|---|
--lr |
5e-4 | 学习率 | 不收敛 ↑,震荡 ↓ |
--batch-size |
8 | 批次大小 | GPU 允许时 ↑,OOM 时 ↓ |
--epochs |
100 | 训练轮数 | Dice<0.7 时 ↑ 至 150-200 |
| 参数 | 默认值 | 影响 | 调优建议 |
|---|---|---|---|
--nx,--ny |
51 | 空间分辨率 | ↓ 加速训练,↑ 提高精度 |
--sig-len |
1000 | 时间序列长度 | ↓ 减少内存,↑ 细节信息 |
--n-train |
800 | 训练样本数 | ↑ 提升泛化,↑ 训练时间 |
性能对比(100 epochs):
| 配置 | Dice Score | 训练时间(GPU) | 内存占用 |
|---|---|---|---|
| 快速测试 (32×32, 400 样本) | 0.38 | 15 分钟 | 4GB |
| 标准配置 (64×64, 800 样本) | 0.65 | 45 分钟 | 8GB |
| 高精度 (128×128, 1600 样本) | 0.72 | 2 小时 | 16GB |
3D Signal (ny×nx×sig_len)
↓
[3D Conv Blocks] → 提取时空特征
(32→64→128→256 channels, 残差连接)
↓
[Low-Rank Operator] → 降维映射 (W = B@A)
(rank=128, compression ratio~0.05)
↓
[Enhanced Decoder] → 渐进上采样
(4×4 → 8×8 → 16×16 → ... → img_size)
↓
2D Defect Image (img_size×img_size)
参数量: ~2M
最佳 Dice: 0.65-0.75(100 epochs)
3D Signal → 2D Spatial Conv → LSTM → Decoder → 2D Image
参数量: ~1.5M
最佳 Dice: 0.55-0.68(100 epochs)
ONet_Based_UDE/
├── src/cross_modal/
│ ├── dataset/ # 3D数据集
│ ├── models/
| | |— base_model.py # 模型抽象基类
│ │ ├── operator_mapper_3d.py # 算子映射器
│ │ ├── lstm_mapper_3d.py # LSTM映射器
│ │ └── losses.py # 动态损失函数
│ └── trainers/ # 训练器
│ ├── config_3d.py # 训练配置
│ └── trainer_3d.py # 训练逻辑
├── scripts/
│ └── train_3d_models.py # 训练脚本
├── tests/
│ ├── test_models_3d.py # 模型测试
│ └── test_dataset.py # 数据集测试
├── docs/ # 详细文档
└── legacy/ # 1D模型(已弃用)
# 运行所有测试(A-G: 基础功能)
uv run python tests/test_models_3d.py
# 包含训练冒烟测试(A-H)
uv run python tests/test_models_3d.py --train-smoke --epochs 10- ✅ A. 模型初始化和前向传播
- ✅ B. 动态输出尺寸适配(32/64/128)
- ✅ C. 批处理功能(1/4/8)
- ✅ D. 模型保存/加载
- ✅ E. 与 3D 数据集集成
- ✅ F. 损失函数计算
- ✅ G. GPU/CPU 兼容性
- ✅ H. 训练冒烟测试(可选)
-
首次使用: 从小规模开始验证
uv run python tests/test_models_3d.py --train-smoke --epochs 5 --n-train 64
-
标准训练: 使用默认配置
uv run python scripts/train_3d_models.py --model operator --epochs 100
-
冲击高精度: 增加轮数和样本
uv run python scripts/train_3d_models.py --epochs 200 --n-train 1600 --img-size 128
- Dice 不提升: 检查
results/training_curves.png,调整学习率或增加数据 - 训练过慢: 减小
--nx,--ny,--sig-len - GPU 内存不足: 降低
--batch-size或--img-size - 过拟合严重: 增加训练样本或降低模型复杂度
| 文档 | 说明 |
|---|---|
| TESTING_GUIDE.md | 测试脚本使用指南 |
| 3D_MODELS_GUIDE.md | 3D 模型详细说明 |
| UV_GUIDE.md | uv 依赖管理工具 |
Q: CUDA Out of Memory?
A: --batch-size 4 或 --img-size 32
Q: Dice Score 过低(<0.5)?
A: 增加 --epochs 200 或检查数据质量
Q: 如何切换到 LSTM 模型?
A: --model lstm(参数量更小,精度略低)
Q: 训练后模型在哪?
A: checkpoints/best_model_3d_dice.pth(最佳 Dice)或 checkpoints/best_model_3d.pth(最佳 Loss)或在results目录下查看训练曲线和可视化结果
[1] Kiruluta, A., Lemos, A., & Burity, P. (2025). Operator-Based Machine Intelligence: A Hilbert Space Framework for Spectral Learning and Symbolic Reasoning (1st ed.). arXiv. https://doi.org/10.48550/ARXIV.2507.21189
本项目中 OperatorMapper3D 的理论基础来源于该论文提出的基于希尔伯特空间的算子谱学习框架,通过低秩算子分解实现高效的跨模态映射。
如果您在研究中使用了本项目,请按以下格式引用:
@software{onet_based_ude_2025,
title = {ONet\_Based\_UDE: Operator-Based Neural Network for Ultrasonic Damage Evaluation},
author = {2p1c},
year = {2025},
url = {https://github.com/2p1c/ONet_Based_UDE},
note = {基于算子谱神经网络的超声损伤检测 - 从3D超声时空信号到2D缺陷图的跨模态映射}
}本项目采用 MIT 许可证 - 详见 LICENSE 文件
- PyTorch 团队提供的深度学习框架
- 3D 卷积网络和算子理论的相关研究
最后更新: 2024 年
项目状态: 积极维护中 🚀
当前最佳: OperatorMapper3D (Dice ~0.70, 100 epochs)