arxanshxh2309/sentinex-ai-security-scanner-v2
GitHub: arxanshxh2309/sentinex-ai-security-scanner-v2
基于 YOLOv8 和 Bayesian 威胁评分的 AI 安检扫描器,用于在行李和 X 射线图像中检测武器与违禁品。
Stars: 0 | Forks: 0
# Sentinex AI Security Scanner v2
使用 YOLOv8、FastAPI 和 Bayesian 威胁评分实现的 AI 辅助行李与 X 射线威胁检测。
## 功能
- 用于武器和违禁品检测的 YOLOv8 训练 pipeline。
- 用于下载 Knife(刀)、Handgun(手枪)、Dagger(匕首)、Scissors(剪刀)和 Sword(剑)的 Google Open Images V7 下载器。
- 使用 CLAHE 对比度增强的可选 X 射线预处理。
- 带有 `POST /scan` 的 FastAPI 服务。
- 带有快速生产路径和可选 PyMC 采样的 Bayesian 威胁评估。
- 支持 ONNX、TensorRT 和 TorchScript 导出。
- 用于 GPU 训练的 Google Colab notebook。
## 仓库布局
```
Sentinex_Max_Training.ipynb Google Colab notebook
api/main.py FastAPI scanner service
datasets/download_datasets.py Open Images downloader
datasets/preprocess.py X-ray preprocessing
datasets/process_xray_dataset.py Dataset splitting
mcmc/bayesian_model.py Threat probability estimation
training/train_yolo.py Main YOLO training script
training/evaluate.py Evaluation and benchmarks
training/export_model.py Model export
training/tune_hyperparams.py Hyperparameter tuning
```
## 快速开始
```
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
```
下载训练数据集:
```
python datasets/download_datasets.py --source openimages
```
训练:
```
python training/train_yolo.py --model x --epochs 300
```
评估:
```
python training/evaluate.py
```
导出:
```
python training/export_model.py
```
## 运行 API
默认情况下,API 会查找:
```
runs/sentinex/max_train/weights/best.pt
```
启动服务器:
```
uvicorn api.main:app --reload
```
扫描图片:
```
curl -X POST http://localhost:8000/scan -F "file=@your_image.jpg"
```
有用的环境变量记录在 `.env.example` 中:
```
SENTINEX_MODEL=runs/sentinex/max_train/weights/best.pt
SENTINEX_CONF=0.15
SENTINEX_IOU=0.45
SENTINEX_IMGSZ=640
SENTINEX_TTA=false
SENTINEX_MCMC_SAMPLES=0
```
`SENTINEX_CONF=0.15` 倾向于召回率,这通常更适合安检扫描。如果误报过于频繁,请提高该值。启用 `SENTINEX_TTA=true` 会进行较慢但通常更敏感的推理。
## Docker
```
docker build -t sentinex-ai-security-scanner .
docker run --rm -p 8000:8000 -e SENTINEX_MODEL=/models/best.pt -v "${PWD}/runs/sentinex/max_train/weights:/models" sentinex-ai-security-scanner
```
## 测试
```
python -m unittest discover -s tests
```
## 提高检测成功率
为了获得更高的召回率和更好的实际性能:
- 在真实的行李/X 射线图像上进行训练,而不仅仅是自然的 Open Images 照片。
- 添加困难负样本:钥匙、工具、电子产品、电缆、笔和折叠金属物体。
- 保留来自不同扫描仪或图像源的独立测试集。
- 在每次运行后跟踪每个类别的 precision、recall、mAP50 和混淆矩阵。
- 对于筛查工作流,从较低的推理置信度(`0.10` 到 `0.20`)开始。
- 当延迟可接受时,对高风险扫描使用 test-time augmentation。
- 首先检查假阴性,然后添加针对性样本并重新训练。
## GitHub 说明
大型生成的 artifact 已被特意忽略:
- 下载的数据集
- `runs/`
- 训练权重 (`*.pt`, `*.onnx`, `*.engine`, `*.torchscript`)
- Python 缓存
请通过发布、云 bucket 或 model registry 单独上传模型权重,而不是直接将它们提交到代码仓库中。
## 许可证
本项目的代码采用 MIT 许可证授权 — 详情请参阅 [LICENSE](LICENSE.md) 文件。
注意:本项目依赖于 Ultralytics YOLOv8,后者采用 **AGPL-3.0** 许可证。该依赖项带有其自己的 copyleft 条款,与本仓库的 MIT 许可证分开。如果您使用或分发带有 YOLOv8 的本项目,请查看 Ultralytics 的许可义务。
标签:AV绕过, CNCF毕业项目, FastAPI, YOLOv8, 人工智能, 安全检查, 用户模式Hook绕过, 目标检测, 计算机视觉, 请求拦截, 贝叶斯推断, 逆向工具