seneserisen/industrial-quality-anomaly-monitor
GitHub: seneserisen/industrial-quality-anomaly-monitor
可复现的 Python 工业制造异常检测流水线,提供合成数据生成、双方法异常检测与工程报告导出能力。
Stars: 0 | Forks: 0
# 工业质量异常监控器
这是一个可复现的制造数据项目,旨在生成真实的生产测量数据、检测异常过程行为,并导出工程 KPI 和可视化报告。
这个作品集项目将工业生产经验与实用的 Python、数据验证、统计监控、机器学习、测试、Docker 以及 CI/CD 结合在一起。
## 项目展示的内容
- 带有可控故障注入的合成多机台生产数据
- 使用稳健的 median/MAD 统计数据的可解释异常检测
- 特定于机器或产线的稳健参考基线
- 使用 Isolation Forest 的多元异常检测
- 数据验证和明确的错误消息
- 在标签可用时进行 Precision、recall 和 F1 评估
- CSV、JSON 和 PNG 报告产物
- 单元测试、集成测试和命令行测试
- 跨 Python 3.10–3.12 的 GitHub Actions
- 容器化命令行执行
## 受监控的工艺变量
| 信号 | 工程意义 |
|---|---|
| `temperature_c` | 工艺或设备的热力状态 |
| `vibration_mm_s` | 机械健康状况及潜在的轴承磨损 |
| `pressure_bar` | 气动或液压工艺的稳定性 |
| `cycle_time_s` | 吞吐量和工艺延迟指标 |
| `quality_score` | 简化的下游质量测量 |
注入的故障模式包括过热、轴承磨损、压力损失和慢循环行为。
## 快速开始
```
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e ".[dev]"
```
生成确定性数据集:
```
quality-monitor generate \
--rows 3000 \
--machines 4 \
--anomaly-rate 0.04 \
--seed 42 \
--output data/production_data.csv
```
运行全局可解释基线:
```
quality-monitor analyse \
--input data/production_data.csv \
--output-dir artifacts/robust-z \
--method robust-z \
--threshold 4.0
```
运行特定于机台的稳健基线:
```
quality-monitor analyse \
--input data/production_data.csv \
--output-dir artifacts/machine-aware \
--method robust-z \
--threshold 4.0 \
--group-column machine_id \
--min-group-size 20
```
`--group-column` 用于选择定义独立参考总体的列。这可以是机器、产线、产品系列、班次或其他操作分组。行数少于 `--min-group-size` 的分组将使用全局基线,因为其自身的 median 和变异性估计会不稳定。
目前仅稳健 Z-score 方法支持分组基线。Isolation Forest 使用完整的多元数据集。
运行多元模型:
```
quality-monitor analyse \
--input data/production_data.csv \
--output-dir artifacts/isolation-forest \
--method isolation-forest \
--contamination 0.04
```
分析将生成:
```
artifacts/
├── metrics.json
├── monitoring_summary.png
└── scored_production_data.csv
```
## 复现的 KPI 输出
全局稳健 Z-score 命令使用随机种子 `42`、4% 的注入异常率和 `4.0` 的阈值执行:
```
{
"detected_anomalies": 122,
"detected_anomaly_rate": 0.04066666666666666,
"f1_score": 0.9917355371900827,
"injected_anomalies": 120,
"precision": 0.9836065573770492,
"recall": 1.0,
"rows": 3000
}
```
完整的测量输出存储在 [`examples/robust_z_metrics.json`](examples/robust_z_metrics.json) 中。这些优异的结果反映了人为设定的、高度可分的合成故障特征,绝不能将其视为真实工厂的预期性能。生产数据集需要校准、专家评审和维护事件标签。
## 为什么使用两种检测方法?
### 稳健 Z-score
与 mean 和标准差相比,median 和 median 绝对偏差对极端测量值的敏感度更低。在工程评审期间,跨特征的最大稳健得分易于检查和解释。
稳健检测器既可以计算一个全局参考分布,也可以计算诸如机器等分组的独立分布。分组基线减少了由合理的机器偏差引起的误报,并能揭示被全局总体掩盖的局部异常。
### Isolation Forest
Isolation Forest 学习多元结构,能够识别异常组合,例如温度略微升高同时伴随振动和 cycle-time 漂移。它的直接可解释性较差,因此稳健基线依然很有价值。
## 开发
```
make install
make lint
make test
make demo
```
或者直接运行工具:
```
ruff check .
pytest --cov=quality_monitor --cov-report=term-missing
```
## Docker
```
docker build -t industrial-quality-monitor .
docker run --rm -v "$PWD:/workspace" industrial-quality-monitor \
generate --rows 1000 --output /workspace/data/production_data.csv
```
## 仓库结构
```
.
├── .github/workflows/ci.yml
├── docs/architecture.md
├── src/quality_monitor/
│ ├── cli.py
│ ├── data_generation.py
│ ├── detectors.py
│ ├── pipeline.py
│ └── reporting.py
├── tests/
├── Dockerfile
├── Makefile
└── pyproject.toml
```
请参阅 [docs/architecture.md](docs/architecture.md) 了解数据流、设计决策和扩展点。
## 负责任地使用
本仓库是一个作品集和学习系统,而不是经过认证的质检产品。阈值、传感器校准、维护决策和安全操作必须由领域专家使用真实的工艺上下文进行验证。
## 作者
Sadik Enes Erisen — 自主技术硕士,FAU Erlangen-Nürnberg;电气与电子工程学士。
## 许可证
MIT
标签:Apex, Python, 安全规则引擎, 工业制造, 异常检测, 数据工程, 无后门, 机器学习, 统计监控, 请求拦截, 逆向工具