Files
mingxi_platform/mingxi-vision/engine/defect_classes.py
T

34 lines
1.4 KiB
Python
Raw Normal View History

from typing import Dict
DEFECT_CLASSES: Dict[int, dict] = {
# HRIPCB 数据集原始 6 类
0: {"name": "missing_hole", "zh": "缺孔", "severity": "fatal"},
1: {"name": "mouse_bite", "zh": "鼠咬", "severity": "major"},
2: {"name": "open_circuit", "zh": "断路", "severity": "fatal"},
3: {"name": "short_circuit", "zh": "短路", "severity": "fatal"},
4: {"name": "spur", "zh": "毛刺", "severity": "minor"},
5: {"name": "spurious_copper", "zh": "余铜", "severity": "major"},
# 扩展类(Phase 2 标注后加入训练)
6: {"name": "oxidation", "zh": "氧化", "severity": "minor"},
7: {"name": "solder_ball", "zh": "锡珠", "severity": "rework"},
8: {"name": "scratch", "zh": "划痕", "severity": "minor"},
9: {"name": "label_error", "zh": "标签错贴","severity": "rework"},
}
# 严重程度从低到高,用于比较 max_severity
SEVERITY_ORDER = ["none", "rework", "minor", "major", "fatal"]
def get_class_info(class_id: int) -> dict:
return DEFECT_CLASSES.get(class_id, {
"name": f"unknown_{class_id}",
"zh": f"未知_{class_id}",
"severity": "minor",
})
def max_severity(severities) -> str:
if not severities:
return "none"
return max(severities, key=lambda s: SEVERITY_ORDER.index(s) if s in SEVERITY_ORDER else 0)