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.
102 lines
4.0 KiB
YAML
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"
|