Industrial AI · Open Source
工業 AI · 開源框架

Industrial Image
Segmentation, Unified
工業影像分割
統一研究框架

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 合成資料擴增。

13
Segmentation Models
分割模型
3
FL Algorithms
聯邦學習演算法
DDPM
Data Synthesis
合成資料生成
SD900
Defect Dataset
瑕疵資料集

Everything you need for industrial segmentation research

工業分割研究所需的一切

From single-factory centralized training to multi-site federated learning, Lapin provides a modular, reproducible pipeline built on PyTorch.

從單一工廠的集中式訓練到跨站點的聯邦學習, Lapin 提供基於 PyTorch 的模組化、可重現研究流程。

🔬

13 Model Architectures

13 種分割架構

UNet, VMUNet, HVMUNet, U²-Net, TransUNet, and more — unified training & evaluation interface.

UNet、VMUNet、HVMUNet、U²-Net、TransUNet 等,統一訓練與評估介面。

🏭

Federated Learning

聯邦學習

Simulate multi-factory clients with FedAvg, FedProx, and SCAFFOLD. Supports IID and non-IID splits.

以 FedAvg、FedProx、SCAFFOLD 模擬多工廠客戶端,支援 IID 與 non-IID 切分。

✨

DDPM Synthesis

DDPM 合成擴增

Mask-conditioned diffusion model generates synthetic defect image-mask pairs to boost training data.

遮罩條件式擴散模型生成合成瑕疵影像-遮罩對,擴增訓練資料。

📊

Standard Metrics

標準評估指標

IoU, Dice, Accuracy, Sensitivity, and Specificity computed from confusion matrix.

IoU、Dice、Accuracy、Sensitivity、Specificity,由混淆矩陣計算。

📈

Experiment Tracking

實驗追蹤

TensorBoard logging built-in. Optional Weights & Biases integration for team collaboration.

內建 TensorBoard 紀錄,可選用 Weights & Biases 團隊協作。

⚙️

Modular Config

模組化設定

Swap models, datasets, and optimizers independently via configs/config.py.

透過 configs/config.py 獨立切換模型、資料集與優化器。

End-to-end research pipeline

端到端研究流程

Generate synthetic data, merge with real defects, then train and compare segmentation models.

生成合成資料、合併真實瑕疵樣本,再訓練並比較分割模型。

Real Surface
Images + Masks
真實表面
影像 + 遮罩
→
generation.train
DDPM
→
Synthetic
Image-Mask Pairs
合成
影像-遮罩對
→
Merge into
data/
合併至
data/
→
train.py
train_federated.py
→
Segmentation
Results
分割
結果

13 segmentation architectures

13 種分割架構

Select any model via --model flag. All share the same training loop and metrics.

透過 --model 參數選擇,共用相同訓練迴圈與評估指標。

UNetunet
VMUNetvmunet
VMUNet V2vmunet-v2
HVMUNethvmunet
U²-Netu2net
UNet++unetpp
UNet+++unetppp
TransUNettunet
ResUNetresunet
ResUNet++resunetpp
Att UNetattu
R2U-Netr2u
R2AttU-Netattr2u

Get up and running in minutes

數分鐘內開始使用

Installation

環境安裝

bash
git clone https://github.com/kanhaojun/lapin.git
cd lapin
conda create -n lapin python=3.8
conda activate lapin
pip install -r requirements.txt

Centralized Training

集中式訓練

bash
python train.py \
  --model unet \
  --dataset sd900 \
  --gpu 0 \
  --epochs 300

Federated Training

聯邦學習訓練

bash
python train_federated.py \
  --model unet \
  --dataset sd900combine \
  --method scaffold \
  --num-clients 23 \
  --gpu 0

DDPM Data Synthesis

DDPM 合成資料

bash
# 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

Project Structure

專案結構

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# 實驗輸出

Evaluation Metrics

評估指標

IoU Dice Accuracy Sensitivity Specificity