You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
MAI/docker-compose.yml

102 lines
4.0 KiB
YAML

name: mai-fpv
x-fpv-env: &fpv-env
FPV_MODEL_PATH: /app/best.pt
FPV_SOURCE: ${FPV_SOURCE:-/data/input/source.mp4}
FPV_SOURCE_MODE: ${FPV_SOURCE_MODE:-file}
FPV_VIDEO_REALTIME: ${FPV_VIDEO_REALTIME:-1}
FPV_SHOW_OUTPUT: ${FPV_SHOW_OUTPUT:-0}
FPV_SAVE_INFER_VIDEO: ${FPV_SAVE_INFER_VIDEO:-1}
FPV_OUT_VIDEO_PATH: ${FPV_OUT_VIDEO_PATH:-/data/out/out_infer.mp4}
FPV_ARCHIVE_RECORD_MODE: ${FPV_ARCHIVE_RECORD_MODE:-fragments}
FPV_DETECTION_CLIP_MAX_GAP_SEC: ${FPV_DETECTION_CLIP_MAX_GAP_SEC:-15}
FPV_UI_FRAME_EXPORT_ENABLE: ${FPV_UI_FRAME_EXPORT_ENABLE:-1}
FPV_UI_FRAME_EXPORT_PATH: ${FPV_UI_FRAME_EXPORT_PATH:-/dev/shm/fpv-latest.jpg}
FPV_UI_FRAME_EXPORT_EVERY: ${FPV_UI_FRAME_EXPORT_EVERY:-1}
FPV_UI_FRAME_EXPORT_JPEG_QUALITY: ${FPV_UI_FRAME_EXPORT_JPEG_QUALITY:-82}
FPV_UI_FRAME_EXPORT_MAX_FPS: ${FPV_UI_FRAME_EXPORT_MAX_FPS:-50}
FPV_REALTIME_SKIP_STALE_FRAMES: ${FPV_REALTIME_SKIP_STALE_FRAMES:-1}
FPV_REALTIME_MAX_SKIP_FRAMES: ${FPV_REALTIME_MAX_SKIP_FRAMES:-8}
FPV_REALTIME_PREVIEW_SKIPPED_FRAMES: ${FPV_REALTIME_PREVIEW_SKIPPED_FRAMES:-1}
FPV_REALTIME_ANALYSIS_EVERY: ${FPV_REALTIME_ANALYSIS_EVERY:-2}
FPV_GUIDANCE_EXPORT_ENABLE: ${FPV_GUIDANCE_EXPORT_ENABLE:-1}
FPV_GUIDANCE_EXPORT_PATH: ${FPV_GUIDANCE_EXPORT_PATH:-/data/guidance/guidance_state.json}
FPV_ERROR_OUTPUT_ENABLE: ${FPV_ERROR_OUTPUT_ENABLE:-1}
FPV_ERROR_OUTPUT_PROTOCOL: ${FPV_ERROR_OUTPUT_PROTOCOL:-guidance_v1}
FPV_ERROR_OUTPUT_HOST: ${FPV_ERROR_OUTPUT_HOST:-host.docker.internal}
FPV_ERROR_OUTPUT_PORT: ${FPV_ERROR_OUTPUT_PORT:-5010}
FPV_ERROR_OUTPUT_OBJECT_ID: ${FPV_ERROR_OUTPUT_OBJECT_ID:-1}
FPV_ERROR_OUTPUT_UNITS: ${FPV_ERROR_OUTPUT_UNITS:-px}
FPV_ERROR_OUTPUT_EVERY: ${FPV_ERROR_OUTPUT_EVERY:-1}
FPV_ERROR_OUTPUT_HFOV_DEG: ${FPV_ERROR_OUTPUT_HFOV_DEG:-90}
FPV_ERROR_OUTPUT_VFOV_DEG: ${FPV_ERROR_OUTPUT_VFOV_DEG:-60}
FPV_ERROR_OUTPUT_RANGE_M: ${FPV_ERROR_OUTPUT_RANGE_M:-1}
FPV_AUTOPILOT_ENABLE: ${FPV_AUTOPILOT_ENABLE:-1}
FPV_AUTOPILOT_BACKEND: ${FPV_AUTOPILOT_BACKEND:-json}
FPV_AUTOPILOT_JSON_PATH: ${FPV_AUTOPILOT_JSON_PATH:-/data/autopilot/autopilot_cmd.json}
FPV_PROTO_UDP_ENABLE: ${FPV_PROTO_UDP_ENABLE:-1}
FPV_PROTO_UDP_HOST: ${FPV_PROTO_UDP_HOST:-192.168.1.10}
FPV_PROTO_UDP_PORT: ${FPV_PROTO_UDP_PORT:-5005}
services:
fpv-tracker:
profiles: ["standalone"]
build:
context: .
dockerfile: Dockerfile
args:
PYTORCH_INDEX_URL: ${PYTORCH_INDEX_URL:-https://download.pytorch.org/whl/cu128}
image: ${FPV_IMAGE:-fpv-tracker:cu128-offline}
init: true
gpus: all
restart: "no"
environment: *fpv-env
volumes:
- type: bind
source: .
target: /app
- type: bind
source: ${FPV_DATA_DIR:-./runtime-data}
target: /data
- type: bind
source: ${FPV_INPUT_FILE:-./runtime-data/input/source.mp4}
target: /data/input/source.mp4
read_only: true
- type: bind
source: ${FPV_MODEL_FILE:-./best.pt}
target: /app/best.pt
read_only: true
command: >
sh -c "python3 main.py 2>&1 | tee /data/logs/main.log"
fpv-ui:
image: ${FPV_IMAGE:-fpv-tracker:cu128-offline}
init: true
gpus: all
restart: unless-stopped
command: ["python3", "ui_server.py"]
environment:
<<: *fpv-env
FPV_DATA_DIR: /data
FPV_UI_HOST: ${FPV_UI_HOST:-0.0.0.0}
FPV_UI_PORT: 8080
FPV_UI_LOG_PATH: /data/logs/main.log
FPV_UI_FRAME_PATH: ${FPV_UI_FRAME_PATH:-/dev/shm/fpv-latest.jpg}
FPV_UI_GUIDANCE_PATH: /data/guidance/guidance_state.json
FPV_UI_OUT_DIR: /data/out
FPV_UI_INPUT_DIR: /data/input
FPV_CAMERA_BRIDGE_URL: ${FPV_CAMERA_BRIDGE_URL:-http://host.docker.internal:8091/stream.mjpg}
volumes:
- type: bind
source: .
target: /app
- type: bind
source: ${FPV_DATA_DIR:-./runtime-data}
target: /data
- type: bind
source: ${FPV_MODEL_FILE:-./best.pt}
target: /app/best.pt
read_only: true
ports:
- "${FPV_UI_BIND:-127.0.0.1}:${FPV_UI_PORT:-8080}:8080/tcp"