door_state_v20260511 — MobileNetV3-L 224 (4-class)
cvat2 #11 image-level tag (state ∈ unknown/open/closed/mixed). 4-class CE + WeightedRandomSampler。
注意:cvat manifest 中 unknown 類別在 train/val/test 全為 0 樣本 — 實際資料只有 3 個 active class (open/closed/mixed)。模型架構保留 4 個 output 但 unknown logit 未訓練。
Test 指標
| accuracy | macro F1 | N |
| 0.8366 | 0.5815 | 1640 |
Per-class metrics
| class | P | R | F1 |
| unknown | 0.0000 | 0.0000 | 0.0000 |
| open | 0.6222 | 0.4878 | 0.5469 |
| closed | 0.8646 | 0.9123 | 0.8878 |
| mixed | 0.8732 | 0.9099 | 0.8912 |
Confusion matrix (rows=true, cols=pred)
| unknown | open | closed | mixed | row total |
| unknown | 0 | 0 | 0 | 0 | 0 |
| open | 0 | 140 | 40 | 107 | 287 |
| closed | 0 | 16 | 364 | 19 | 399 |
| mixed | 0 | 69 | 17 | 868 | 954 |
| col total | 0 | 225 | 421 | 994 | 1640 |
Sample inference (test, 3 per class with samples)
truth=open → pred=open (61%)

truth=open → pred=open (96%)

truth=open → pred=open (99%)

truth=closed → pred=closed (100%)

truth=closed → pred=closed (100%)

truth=closed → pred=closed (100%)

truth=mixed → pred=mixed (100%)

truth=mixed → pred=mixed (100%)

truth=mixed → pred=mixed (100%)

Training history
| epoch | train_loss | val_acc | val_macro_f1 |
| 1 | 1.5521 | 0.7049 | 0.5015 |
| 2 | 0.2231 | 0.8891 | 0.6558 |
| 3 | 0.0889 | 0.8918 | 0.6567 |
| 4 | 0.0445 | 0.8744 | 0.6389 |
| 5 | 0.0222 | 0.8946 | 0.6486 |
| 6 | 0.0191 | 0.9221 | 0.6701 |
| 7 | 0.0122 | 0.9248 | 0.6738 |
| 8 | 0.0090 | 0.9083 | 0.6674 |
| 9 | 0.0088 | 0.9166 | 0.6688 |
| 10 | 0.0045 | 0.9203 | 0.6666 |
| 11 | 0.0062 | 0.9193 | 0.6747 |
| 12 | 0.0030 | 0.9175 | 0.6649 |
| 13 | 0.0029 | 0.9120 | 0.6598 |
| 14 | 0.0040 | 0.9047 | 0.6619 |
| 15 | 0.0044 | 0.9102 | 0.6634 |
| 16 | 0.0028 | 0.9313 | 0.6761 |
| 17 | 0.0014 | 0.9313 | 0.6761 |
| 18 | 0.0019 | 0.9258 | 0.6741 |
| 19 | 0.0021 | 0.9322 | 0.6772 |
| 20 | 0.0031 | 0.9331 | 0.6830 |
| 21 | 0.0015 | 0.9258 | 0.6736 |
| 22 | 0.0026 | 0.9322 | 0.6790 |
| 23 | 0.0030 | 0.9267 | 0.6723 |
| 24 | 0.0016 | 0.9239 | 0.6731 |
| 25 | 0.0021 | 0.9313 | 0.6772 |
| 26 | 0.0027 | 0.9322 | 0.6778 |
| 27 | 0.0020 | 0.9303 | 0.6761 |
| 28 | 0.0029 | 0.9322 | 0.6778 |
| 29 | 0.0054 | 0.9303 | 0.6761 |
| 30 | 0.0024 | 0.9322 | 0.6784 |
Config
{
"version": "v20260511",
"task": "door_state image classification (4-class)",
"backbone": "mobilenetv3_large_100",
"params_M": 4.207156,
"img_size": 224,
"hyperparams": {
"batch": 128,
"epochs": 30,
"lr": 0.0003,
"wd": 0.01
},
"labels": [
"unknown",
"open",
"closed",
"mixed"
],
"best_val_macro_f1": 0.6830110617839775,
"best_epoch": 20,
"epochs_run": 30,
"train_time_s": 532.9745559692383,
"test_metrics": {
"acc": 0.8365853658536585,
"macro_f1": 0.5814625773150699,
"per_class": {
"unknown": {
"precision": 0.0,
"recall": 0.0,
"f1": 0.0
},
"open": {
"precision": 0.6222222222222222,
"recall": 0.4878048780487805,
"f1": 0.546875
},
"closed": {
"precision": 0.8646080760095012,
"recall": 0.9122807017543859,
"f1": 0.8878048780487805
},
"mixed": {
"precision": 0.8732394366197183,
"recall": 0.909853249475891,
"f1": 0.891170431211499
}
},
"confusion_matrix": [
[
0,
0,
0,
0
],
[
0,
140,
40,
107
],
[
0,
16,
364,
19
],
[
0,
69,
17,
868
]
],
"n": 1640
}
}