# 银河水滴步态特征提取完整示例

这个包完成以下流程：

1. 使用 ONNX Runtime CPU 和 `gait_detect.onnx` 从本地视频中检测、跟踪行人。
2. 导出每条行人轨迹的步态序列图片。
3. 调用银河水滴步态开放平台 API 提取 gait、ReID、face 特征。
4. 对输出的归一化特征做点积，生成相似度报告。

序列图片使用一次 multipart 批量上传：单次请求总大小最大 32 MB。图片按上传字段顺序作为序列帧，文件名不参与排序。

检测模型已经迁移为外部 ONNX 文件：

- Python：`python/gait_detect.onnx`
- C++：`cpp/gait_detect.onnx`
- C++ ONNX Runtime CPU 依赖：`cpp/third_party/onnxruntime-linux-x64/`

检测后处理沿用旧语义：score threshold、NMS threshold、topK、坐标还原、NMS 和序列跟踪逻辑保持一致。

## Python

```bash
cd python
python3 -m pip install -r requirements.txt
export WATRIX_GAIT_API_KEY="你的 API Key"
python3 watrix_gait_video_sequence_api_demo.py /path/to/video.mp4 \
  --base-url https://www.watrixgait.com \
  --output ./output
```

## C++

C++ 示例只使用 CPU 版 ONNX Runtime，不依赖 CUDA、cuDNN 或 TensorRT。

```bash
cd cpp
sudo apt-get install -y cmake g++ libopencv-dev libcurl4-openssl-dev nlohmann-json3-dev
./build.sh
export WATRIX_GAIT_API_KEY="你的 API Key"
export WATRIX_GAIT_BASE_URL="https://www.watrixgait.com"
./run_video_sequence_feature_demo.sh /path/to/video.mp4 ./output
```

输出目录中会生成：

```text
output/
  sequences/        # 本地检测跟踪导出的序列图片
  api_results/      # 每条序列的 API 原始返回
  summary.json      # 总体执行摘要
  similarity.json   # 点积相似度结果
```

平台返回的 gait_feature、reid_feature、face_feature 都已经归一化；同类型特征之间的点积就是余弦相似度。

## 替换模型

如果线上后续替换检测模型，只替换下载目录里的 `gait_detect.onnx`，然后重新打包 zip 即可。下载包内容改变后，用户重新下载新 zip；服务端 API 不需要重启。
