配送任务视频 门头 / 交付 时刻检测推理服务(ONNX 视觉 + faster-whisper ASR 融合)。
dmvisit_service 下载 MP4 到 FTP 后,异步调用 POST /analyzedelivery_media_snapshot 表)py 启动器)FFMPEG_DIRmodels/ 目录下放置训练导出的 ONNX:storefront_int8.onnx / handover_int8.onnx(或 float 版)version.jsoncd server/snapshot_infer
py -m pip install -r requirements.txt
# 训练依赖(仅训练机)
# py -m pip install -r training/requirements-train.txt
$env:SNAPSHOT_MODEL_DIR = "./models"
$env:WHISPER_MODEL = "tiny"
$env:SNAPSHOT_SAMPLE_FPS = "0.5"
py -m uvicorn app.main:app --host 0.0.0.0 --port 8095
Linux:
cd server/snapshot_infer
python3 -m pip install -r requirements.txt
export SNAPSHOT_MODEL_DIR=./models WHISPER_MODEL=tiny SNAPSHOT_SAMPLE_FPS=0.5
python3 -m uvicorn app.main:app --host 0.0.0.0 --port 8095
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /health |
返回 status, modelVersion, ONNX/ASR 加载状态 |
| POST | /analyze |
主推理(请求/响应 camelCase,与 Java DTO 对齐) |
/health 示例{
"status": "ok",
"modelVersion": "1.0.0",
"onnxStorefrontLoaded": true,
"onnxHandoverLoaded": true,
"asrAvailable": true
}
status=degraded 表示 ONNX 未加载完整,需部署模型文件。
application-dev.yml / application-pro.yml:
snapshot:
infer:
base-url: http://127.0.0.1:8095
sample-fps: 0.5
fail-open-mock: false # 生产必须为 false
fail-open-mock: true 在无 ONNX 时回退 25%/75% mockfail-open-mock: false,推理失败写入 snapshot_status=3cd server/snapshot_infer/training
py -m pip install -r requirements-train.txt
# 1. 准备标注 JSONL -> data/annotations.jsonl
# 2. 抽帧打标
py prepare_dataset.py -c config.yaml
# 3. 训练
py train.py -c config.yaml
# 4. 导出 ONNX(Windows 若 INT8 量化崩溃,会自动使用 float .onnx)
py export_onnx.py -c config.yaml --version 1.0.0
# 或跳过量化:py export_onnx.py -c config.yaml --version 1.0.0 --no-quantize
# 5. 评估
py evaluate.py -c config.yaml --annotations ../data/annotations.jsonl
*_int8.onnx部分 Windows 环境上 onnxruntime.quantization 会进程崩溃(exit 3221225477)。**不影响使用**:
storefront.onnx / handover.onnx(float32)version.json 会记录实际文件名若必须 INT8,可在 Linux 训练机执行 export_onnx.py,或尝试 py -m pip install onnxruntime==1.16.3 后重试。
| 脚本 | 用途 |
|---|---|
tools/export_media_list.py --mysql |
从 DB 导出待标注清单 |
tools/export_feedback.py |
导出人工纠正反馈为训练 JSONL |
tools/benchmark_cpu.py <video_url> |
CPU 单条压测 |
GET http://127.0.0.1:8095/healthonnxStorefrontLoaded=false → 检查 models/ 路径与环境变量 SNAPSHOT_MODEL_DIRcollection_media.snapshot_messageserver/db/business.delivery_media_snapshot_feedback.sql — 人工纠正反馈表