Lapin is a research framework for industrial surface-defect segmentation. Train 13 architectures with centralized or federated pipelines, and augment datasets with mask-conditioned DDPM synthesis — all in one codebase.
Lapin 是面向工業表面瑕疵分割的研究框架。 在統一程式碼庫中,支援 13 種分割架構的集中式與聯邦學習訓練, 並整合遮罩條件式 DDPM 合成資料擴增。
From single-factory centralized training to multi-site federated learning, Lapin provides a modular, reproducible pipeline built on PyTorch.
從單一工廠的集中式訓練到跨站點的聯邦學習, Lapin 提供基於 PyTorch 的模組化、可重現研究流程。
UNet, VMUNet, HVMUNet, U²-Net, TransUNet, and more — unified training & evaluation interface.
UNet、VMUNet、HVMUNet、U²-Net、TransUNet 等,統一訓練與評估介面。
Simulate multi-factory clients with FedAvg, FedProx, and SCAFFOLD. Supports IID and non-IID splits.
以 FedAvg、FedProx、SCAFFOLD 模擬多工廠客戶端,支援 IID 與 non-IID 切分。
Mask-conditioned diffusion model generates synthetic defect image-mask pairs to boost training data.
遮罩條件式擴散模型生成合成瑕疵影像-遮罩對,擴增訓練資料。
IoU, Dice, Accuracy, Sensitivity, and Specificity computed from confusion matrix.
IoU、Dice、Accuracy、Sensitivity、Specificity,由混淆矩陣計算。
TensorBoard logging built-in. Optional Weights & Biases integration for team collaboration.
內建 TensorBoard 紀錄,可選用 Weights & Biases 團隊協作。
Swap models, datasets, and optimizers independently via configs/config.py.
透過 configs/config.py 獨立切換模型、資料集與優化器。
Generate synthetic data, merge with real defects, then train and compare segmentation models.
生成合成資料、合併真實瑕疵樣本,再訓練並比較分割模型。
Select any model via --model flag. All share the same training loop and metrics.
透過 --model 參數選擇,共用相同訓練迴圈與評估指標。
unetvmunetvmunet-v2hvmunetu2netunetppunetppptunetresunetresunetppattur2uattr2ugit clone https://github.com/kanhaojun/lapin.git cd lapin conda create -n lapin python=3.8 conda activate lapin pip install -r requirements.txt
python train.py \ --model unet \ --dataset sd900 \ --gpu 0 \ --epochs 300
python train_federated.py \ --model unet \ --dataset sd900combine \ --method scaffold \ --num-clients 23 \ --gpu 0
# Train DDPM python -m generation.train \ --run-name sd900_ddpm \ --image-path data/sd900_gen/images \ --mask-path data/sd900_gen/masks \ --gpu 0 # Sample synthetic pairs python -m generation.sample \ --run-name sd900_ddpm \ --output data/synthetic/sd900_ddpm \ --gpu 0
lapin/ ├── train.py # Centralized segmentation training# 集中式分割訓練 ├── train_federated.py # Federated segmentation training# 聯邦分割訓練 ├── generation/ # Mask-conditioned DDPM synthesis# 遮罩條件式 DDPM │ ├── train.py │ ├── sample.py │ └── eval_fid.py ├── engine.py # Training / validation loops# 訓練 / 驗證迴圈 ├── models/ # 13 segmentation architectures# 13 種分割模型 ├── federated/ # FL data split & SCAFFOLD# 聯邦切分與 SCAFFOLD ├── data/ # SD900 dataset (user-provided)# SD900 資料集 └── results/ # Experiment outputs# 實驗輸出