Shallow-dusty/Argus-YOLOv12-Crack
GitHub: Shallow-dusty/Argus-YOLOv12-Crack
一个基于YOLOv12n和EMA注意力改进的墙壁裂缝检测模型,用于提升小数据集上的检测精度和泛化性。
Stars: 0 | Forks: 0
# Argus YOLOv12 裂缝检测
[English](./README.en.md) · 中文
基于 YOLOv12n 的墙壁裂缝检测改进研究。在 YOLOv12n baseline 上进行候选模块横向筛选、EMA 深度消融及推荐配置稳健性验证,并在三个跨域数据集(Road Damage / Crack500 / DeepCrack)上观察泛化边界。
## 核心结果
数据集:wall_crack_v2_split(2366/295/297,单类裂痕,CC BY 4.0)。
| 口径 | 配置 | mAP50 |
|---|---|:---:|
| **推荐配置 · Kaggle n=3 mean ± std** | `YOLOv12n + EMA(P3+P4, factor=16)` | **0.73070 ± 0.00672** |
| 推荐配置 · RTX 3070 n=3 mean ± std | 同上 | 0.73689 ± 0.00400 |
| 跨平台一致性 · 同配置 / 同种子 | seed=0 | Δ = +0.063 pp |
| 单种子峰值(非主要推荐) | `YOLOv12n + EMA(P3+P4, factor=32), seed=0` | 0.74517 |
| 对照基线 | `YOLOv12n baseline` | 0.70561 |
完整数据见 [`docs/COMPARISON_TABLE.md`](./docs/COMPARISON_TABLE.md)。
## 项目结构
```
.
├── configs/ # 训练配置 YAML(baseline / 各模块 / 跨数据集对照)
├── models/ # YOLOv12n 结构 YAML 与改进变体
├── src/ # 训练入口与自定义模块
├── scripts/ # 数据集 setup、数值校验、可视化等工具
├── kaggle_kernels/ # Kaggle 自包含训练脚本(脱敏后模板)
├── web/ # FastAPI + React 可视化平台
├── docs/ # 命名口径 / 对比表 / 结果索引 / 复现步骤
└── prep/ # 基础知识补课材料
```
详细布局见 [`docs/PROJECT_STRUCTURE.md`](./docs/PROJECT_STRUCTURE.md)。
## 快速开始
```
# 1. 创建环境
conda create -n yolo python=3.10 -y
conda activate yolo
pip install ultralytics==8.4.21 opencv-python==4.13.0.92
# 2. 准备数据集(主数据 + Road Damage)
bash scripts/setup_datasets.sh
# 3. 训练推荐配置
python src/train.py --config configs/ema-p34-factor16.yaml
# 4. 评估 test split
python scripts/evaluate_test_split.py --preset paper-core
# 5. 用 results.csv 自动验证所有数值声称
python scripts/verify_paper_claims.py
```
完整复现指南见 [`docs/REPRODUCE.md`](./docs/REPRODUCE.md)。
## 预训练权重
推荐配置的预训练 `best.pt` 已发布在 Hugging Face:
**https://huggingface.co/ShallowDusty/argus-yolov12-crack**
```
from huggingface_hub import hf_hub_download
from ultralytics import YOLO
weights = hf_hub_download(
repo_id="ShallowDusty/argus-yolov12-crack",
filename="kaggle/ema-p34-factor16-seed0.pt",
)
model = YOLO(weights)
```
仓库内含 Kaggle n=3 / RTX 3070 n=3 / 跨域 T6 / 基线对照共 10 份权重。
## Web 演示
项目附带 FastAPI + React 可视化平台 (`web/`),可在浏览器中:
- 现场推理对比 baseline 与推荐配置
- 浏览 T1–T6 实验证据表
- 查看 EMA 消融矩阵、推荐配置 n=3 稳健性、test split 与跨域压力测试
```
# 后端
PYTHONPATH=web/backend conda run -n yolo \
uvicorn app.main:app --host 127.0.0.1 --port 8000
# 前端
cd web/frontend && npm install && npm run dev -- --host 0.0.0.0
```
打开 http://127.0.0.1:5173。部署模板见 [`web/README.md`](./web/README.md)。
## 数据集与许可
| 数据集 | 来源 | 许可 |
|---|---|---|
| `wall_crack_v2_split`(主要数据) | Roboflow Universe (`athena-cheung-sftri/wall-crack-3`) | CC BY 4.0 |
| Road Damage Dataset (RDD2022) | Maeda et al. / sekilab/RoadDamageDetector | CC BY 4.0 |
| Crack500(可选 T6) | Yang et al. 2019, FPHBN, Temple University | 学术公开 |
| DeepCrack(可选 T6) | Zou et al. 2019 | 学术公开 |
Crack500 与 DeepCrack 是分割数据集,本仓库不自动转换;如需复现 T6 的 mask→bbox 流程,请自行处理。
## 局限性
- 推荐配置在主要数据上的提升幅度为 +2~+3 pp(mAP50),这是单类小数据集(< 3000 张)下的结论。
- 跨域压力测试(T6)的模型排序不稳定,**不**构成 EMA 跨数据集优越性的证据。
- 复杂度评估(参数量 / 浮点运算量 / FPS)不在本仓库主结论范围内。
- 本仓库侧重 YOLOv12n 在墙壁裂缝单类小数据集上的模块改进与稳健性验证;不包含模型推理延迟/部署优化等工程评估。
- 完整论文 PDF 不在本仓库发布。
## 引用
```
@software{argus_yolov12_crack_2026,
author = {Shallow},
title = {{Argus YOLOv12 Crack: Wall Crack Detection with YOLOv12n + EMA Attention}},
year = {2026},
url = {https://github.com/Shallow-dusty/Argus-YOLOv12-Crack},
license = {MIT}
}
```
亦可使用 GitHub 的 "Cite this repository" 按钮(基于 [`CITATION.cff`](./CITATION.cff))。
## 致谢
- [Ultralytics YOLO](https://github.com/ultralytics/ultralytics) 训练/推理框架
- EMA / ECA / CA / SimAM / CBAM 各原模块作者
- Roboflow Universe 数据集贡献者
- sekilab/RoadDamageDetector 团队
## 许可
[MIT License](./LICENSE) © 2026 Shallow
标签:AV绕过, EMA注意力机制, FastAPI, Kaggle, Python, React, SEO优化, Syscalls, Ultralytics, YOLOv12n, 墙壁裂缝检测, 工程输出, 建筑维护, 技术栈, 数据集处理, 无后门, 模型改进, 泛化验证, 注意力模块, 消融研究, 深度学习, 特征金字塔网络, 目标检测, 研究项目, 缺陷检测, 计算机视觉, 训练配置, 论文阶段, 评估指标, 跨域数据集, 逆向工具