This runbook collects the most common commands and troubleshooting steps for aerotrack.
Start the stack:
docker-compose up --buildStop the stack:
docker-compose downCheck service status:
docker-compose psTail logs:
docker-compose logs -fHealth check:
curl http://localhost:8000/healthMetadata check:
curl http://localhost:8000/metadataSingle-frame detection:
curl -X POST "http://localhost:8000/detect" \
-H "accept: application/json" \
-F "file=@/absolute/path/to/frame.jpg"Clip-level tracking:
curl -X POST "http://localhost:8000/track" \
-H "accept: application/json" \
-F "file=@/absolute/path/to/clip.mp4"Generate a smoke-test clip:
python scripts/make_smoke_clip.py \
--image data/raw/VisDrone2019-DET-val/images/0000271_01401_d_0000380.jpg \
--output outputs/smoke.mp4Generate the smoke-test clip from the API container:
docker-compose exec api python scripts/make_smoke_clip.py \
--image data/raw/VisDrone2019-DET-val/images/0000271_01401_d_0000380.jpg \
--output outputs/smoke.mp4Local validation run inside Docker:
docker-compose exec api python -m src.train \
--data data/visdrone/VisDrone.yaml \
--epochs 1 \
--imgsz 640 \
--batch 2 \
--mlflow-tracking-uri http://mlflow:5000Higher-cost run:
docker-compose exec api python -m src.train \
--data data/visdrone/VisDrone.yaml \
--epochs 50 \
--imgsz 1024 \
--batch 8 \
--mlflow-tracking-uri http://mlflow:5000- Confirm
.dockerignoreexists - Make sure
data/is not being sent into the image build context
- Check whether the host-side port is free
- Confirm
MLFLOW_BACKEND_STORE_URIuses an absolute SQLite path likesqlite:////mlflow/mlflow.db
- That is expected if the base YOLO weights need to download on first use
- For demos, preload the weights or point
AEROTRACK_MODEL_PATHto a local model file
- That usually indicates the process was killed under memory pressure
- Reduce
--imgszand--batch - Prefer GPU-backed or higher-memory machines for the full default training profile
- The runtime training code rewrites the dataset YAML path to the local/container path when needed
- Confirm
data/visdrone/VisDrone.yamlexists and the images / labels directories are populated