ljj
commited on
Commit
·
1b0973e
0
Parent(s):
feat: init
Browse files- .gitattributes +50 -0
- .gitignore +36 -0
- README.md +35 -0
- best.ckpt +3 -0
- config.json +69 -0
- configuration.json +1 -0
- model.safetensors +3 -0
.gitattributes
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
*.7z filter=lfs diff=lfs merge=lfs -text
|
| 2 |
+
*.arrow filter=lfs diff=lfs merge=lfs -text
|
| 3 |
+
*.bin filter=lfs diff=lfs merge=lfs -text
|
| 4 |
+
*.bin.* filter=lfs diff=lfs merge=lfs -text
|
| 5 |
+
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
| 6 |
+
*.ftz filter=lfs diff=lfs merge=lfs -text
|
| 7 |
+
*.gz filter=lfs diff=lfs merge=lfs -text
|
| 8 |
+
*.h5 filter=lfs diff=lfs merge=lfs -text
|
| 9 |
+
*.joblib filter=lfs diff=lfs merge=lfs -text
|
| 10 |
+
*.lfs.* filter=lfs diff=lfs merge=lfs -text
|
| 11 |
+
*.model filter=lfs diff=lfs merge=lfs -text
|
| 12 |
+
*.msgpack filter=lfs diff=lfs merge=lfs -text
|
| 13 |
+
*.onnx filter=lfs diff=lfs merge=lfs -text
|
| 14 |
+
*.ot filter=lfs diff=lfs merge=lfs -text
|
| 15 |
+
*.parquet filter=lfs diff=lfs merge=lfs -text
|
| 16 |
+
*.pb filter=lfs diff=lfs merge=lfs -text
|
| 17 |
+
|
| 18 |
+
*.pth filter=lfs diff=lfs merge=lfs -text
|
| 19 |
+
*.rar filter=lfs diff=lfs merge=lfs -text
|
| 20 |
+
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
| 21 |
+
*.tar.* filter=lfs diff=lfs merge=lfs -text
|
| 22 |
+
*.tflite filter=lfs diff=lfs merge=lfs -text
|
| 23 |
+
*.tgz filter=lfs diff=lfs merge=lfs -text
|
| 24 |
+
*.xz filter=lfs diff=lfs merge=lfs -text
|
| 25 |
+
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 26 |
+
*.zstandard filter=lfs diff=lfs merge=lfs -text
|
| 27 |
+
*.tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 28 |
+
*.db* filter=lfs diff=lfs merge=lfs -text
|
| 29 |
+
*.ark* filter=lfs diff=lfs merge=lfs -text
|
| 30 |
+
**/*ckpt*data* filter=lfs diff=lfs merge=lfs -text
|
| 31 |
+
**/*ckpt*.meta filter=lfs diff=lfs merge=lfs -text
|
| 32 |
+
**/*ckpt*.index filter=lfs diff=lfs merge=lfs -text
|
| 33 |
+
|
| 34 |
+
|
| 35 |
+
*.gguf* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
*.ggml filter=lfs diff=lfs merge=lfs -text
|
| 37 |
+
*.llamafile* filter=lfs diff=lfs merge=lfs -text
|
| 38 |
+
*.pt2 filter=lfs diff=lfs merge=lfs -text
|
| 39 |
+
*.mlmodel filter=lfs diff=lfs merge=lfs -text
|
| 40 |
+
*.npy filter=lfs diff=lfs merge=lfs -text
|
| 41 |
+
*.npz filter=lfs diff=lfs merge=lfs -text
|
| 42 |
+
*.pickle filter=lfs diff=lfs merge=lfs -text
|
| 43 |
+
*.pkl filter=lfs diff=lfs merge=lfs -text
|
| 44 |
+
*.tar filter=lfs diff=lfs merge=lfs -text
|
| 45 |
+
*.wasm filter=lfs diff=lfs merge=lfs -text
|
| 46 |
+
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 47 |
+
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 48 |
+
|
| 49 |
+
best.ckpt filter=lfs diff=lfs merge=lfs -text
|
| 50 |
+
model.safetensors filter=lfs diff=lfs merge=lfs -text
|
.gitignore
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Python
|
| 2 |
+
__pycache__/
|
| 3 |
+
*.py[oc]
|
| 4 |
+
*.pyc
|
| 5 |
+
*.pyo
|
| 6 |
+
*.pyd
|
| 7 |
+
|
| 8 |
+
# IDE
|
| 9 |
+
.vscode/
|
| 10 |
+
.idea/
|
| 11 |
+
*.swp
|
| 12 |
+
*.swo
|
| 13 |
+
|
| 14 |
+
# OS
|
| 15 |
+
.DS_Store
|
| 16 |
+
Thumbs.db
|
| 17 |
+
desktop.ini
|
| 18 |
+
|
| 19 |
+
# Training outputs
|
| 20 |
+
checkpoints/
|
| 21 |
+
output/
|
| 22 |
+
logs/
|
| 23 |
+
tb_logs/
|
| 24 |
+
wandb/
|
| 25 |
+
runs/
|
| 26 |
+
|
| 27 |
+
# Temporary files
|
| 28 |
+
*.tmp
|
| 29 |
+
*.temp
|
| 30 |
+
|
| 31 |
+
# Secrets
|
| 32 |
+
.env
|
| 33 |
+
*.env
|
| 34 |
+
secrets.json
|
| 35 |
+
credentials.json
|
| 36 |
+
api_keys.json
|
README.md
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# ExamInk-Seg
|
| 2 |
+
|
| 3 |
+
基于 PyTorch Lightning 的墨迹二值分割模型。输入 RGB 图像,输出 1 通道墨迹掩码。
|
| 4 |
+
|
| 5 |
+
## 模型信息
|
| 6 |
+
|
| 7 |
+
- **架构**:U-Net++ (segmentation_models_pytorch) + ResNet50 编码器 (ImageNet 预训练)
|
| 8 |
+
- **任务**:手写/试卷墨迹二值分割
|
| 9 |
+
- **框架**:PyTorch Lightning
|
| 10 |
+
- **输入**:3 通道 RGB,按 ImageNet 均值/方差归一化
|
| 11 |
+
- **输出**:1 通道 logits 掩码;对 logits 取 sigmoid 得到概率
|
| 12 |
+
|
| 13 |
+
## 训练概要
|
| 14 |
+
|
| 15 |
+
- **Loss**:0.8 * Dice (from logits) + 0.2 * BCEWithLogits (pos_weight=2.0)
|
| 16 |
+
- **指标**:IoU 与 F1(阈值 0.3 和 0.5)
|
| 17 |
+
- **训练裁剪**:1024,随机裁剪 / 有墨迹优先裁剪,水平翻转
|
| 18 |
+
- **优化器**:AdamW (lr 3e-5, weight_decay 1e-5)
|
| 19 |
+
- **学习率调度**:ReduceLROnPlateau,监控 val_iou_05(mode=max, factor=0.5, patience=2, min_lr=1e-7)
|
| 20 |
+
|
| 21 |
+
## 文件
|
| 22 |
+
|
| 23 |
+
- `config.json`:模型结构与训练超参数
|
| 24 |
+
- `model.safetensors`:导出权重
|
| 25 |
+
- `best.ckpt`:PyTorch Lightning checkpoint
|
| 26 |
+
|
| 27 |
+
## 推理说明
|
| 28 |
+
|
| 29 |
+
- 归一化:mean=(0.485, 0.456, 0.406),std=(0.229, 0.224, 0.225)
|
| 30 |
+
- 对 logits 取 `sigmoid` 得到二值掩码概率
|
| 31 |
+
- 验证/推理使用滑窗:tile=1024,stride=768,可选水平翻转 TTA
|
| 32 |
+
|
| 33 |
+
## 许可证
|
| 34 |
+
|
| 35 |
+
MIT
|
best.ckpt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:8621c86f398fa2d4c298ffce66a683c25ba367ba3ea4449a81c2cf138e5c6241
|
| 3 |
+
size 614284713
|
config.json
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"architectures": [
|
| 3 |
+
"InkEraserModel"
|
| 4 |
+
],
|
| 5 |
+
"model_type": "unet_plus_plus",
|
| 6 |
+
"encoder_name": "resnet50",
|
| 7 |
+
"encoder_weights": "imagenet",
|
| 8 |
+
"in_channels": 3,
|
| 9 |
+
"classes": 1,
|
| 10 |
+
"decoder_attention_type": "scse",
|
| 11 |
+
"activation": "sigmoid",
|
| 12 |
+
"framework": "pytorch-lightning",
|
| 13 |
+
"task": "binary-segmentation",
|
| 14 |
+
"input_normalization": {
|
| 15 |
+
"mean": [
|
| 16 |
+
0.485,
|
| 17 |
+
0.456,
|
| 18 |
+
0.406
|
| 19 |
+
],
|
| 20 |
+
"std": [
|
| 21 |
+
0.229,
|
| 22 |
+
0.224,
|
| 23 |
+
0.225
|
| 24 |
+
],
|
| 25 |
+
"max_pixel_value": 255.0
|
| 26 |
+
},
|
| 27 |
+
"training_config": {
|
| 28 |
+
"optimizer": "AdamW",
|
| 29 |
+
"lr": 3e-05,
|
| 30 |
+
"weight_decay": 1e-05,
|
| 31 |
+
"loss": {
|
| 32 |
+
"dice_weight": 0.8,
|
| 33 |
+
"bce_weight": 0.2,
|
| 34 |
+
"bce_pos_weight": 2.0,
|
| 35 |
+
"dice_from_logits": true
|
| 36 |
+
},
|
| 37 |
+
"metrics": [
|
| 38 |
+
"iou_03",
|
| 39 |
+
"iou_05",
|
| 40 |
+
"f1_03",
|
| 41 |
+
"f1_05"
|
| 42 |
+
],
|
| 43 |
+
"scheduler": {
|
| 44 |
+
"name": "ReduceLROnPlateau",
|
| 45 |
+
"mode": "max",
|
| 46 |
+
"monitor": "val_iou_05",
|
| 47 |
+
"factor": 0.5,
|
| 48 |
+
"patience": 2,
|
| 49 |
+
"min_lr": 1e-07
|
| 50 |
+
},
|
| 51 |
+
"train": {
|
| 52 |
+
"batch_size": 6,
|
| 53 |
+
"crop_size": 1024,
|
| 54 |
+
"accumulate_grad_batches": 4,
|
| 55 |
+
"precision": "bf16-mixed",
|
| 56 |
+
"max_epochs": 200,
|
| 57 |
+
"min_epochs": 5
|
| 58 |
+
}
|
| 59 |
+
},
|
| 60 |
+
"inference": {
|
| 61 |
+
"sliding_window": {
|
| 62 |
+
"tile": 1024,
|
| 63 |
+
"stride": 768,
|
| 64 |
+
"tta_hflip": true
|
| 65 |
+
}
|
| 66 |
+
},
|
| 67 |
+
"description": "ExamInk-Seg 二值墨迹分割模型(U-Net++ + ResNet50 编码器)。",
|
| 68 |
+
"license": "MIT"
|
| 69 |
+
}
|
configuration.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"framework":"pytorch-lightning","task":"binary-segmentation"}
|
model.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:f23fa08ab21b5acce191c29c3f96dced710ad36cd20a319ca4bdb79f9432c42f
|
| 3 |
+
size 204810588
|