diff --git a/.gitattributes b/.gitattributes index 8fa4ffaf..ea79281b 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,2 +1,3 @@ *.png filter=lfs diff=lfs merge=lfs -text -*.jpeg filter=lfs diff=lfs merge=lfs -text \ No newline at end of file +*.jpeg filter=lfs diff=lfs merge=lfs -text +*.webp filter=lfs diff=lfs merge=lfs -text diff --git a/README.md b/README.md index 4e17e6b3..f78d171d 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ If you are acquainted with running dockerized applications using Nvidia GPUs: Trying the demo you will find how to craft the following showcase: -![](samples/peoplenet-blur-demo-loop-400.webp) +![](samples/peoplenet_detector/assets/peoplenet-blur-demo-loop-400.webp) ```bash git clone https://github.com/insight-platform/Savant.git @@ -44,8 +44,8 @@ curl --silent -O -- https://hello.savant.video/peoplenet.html # if Jetson ../../utils/check-environment-compatible && docker compose -f docker-compose.l4t.yml up -# open 'rtsp://127.0.0.1:8554/city-traffic-processed' in your player -# or visit 'http://127.0.0.1:8888/city-traffic-processed/' (LL-HLS) +# open 'rtsp://127.0.0.1:554/stream' in your player +# or visit 'http://127.0.0.1:888/stream/' (LL-HLS) # Ctrl+C to stop running the compose bundle diff --git a/docs/adapters.md b/docs/adapters.md index 92a76841..d19ce843 100644 --- a/docs/adapters.md +++ b/docs/adapters.md @@ -624,7 +624,7 @@ The adapter parameters are set with environment variables: - `ZMQ_TYPE` - ZeroMQ socket type for the adapter's input; the default value is `SUB`, can also be set to `ROUTER` or `REP`; - `ZMQ_BIND` - flag specifies whether the adapter's input should be bound or connected to the specified endpoint; If `True`, the input is bound; otherwise, it's connected; the default value is `False`. -**Note**: When `DEV_MODE=False` the stream is available at: +**Note**: When `DEV_MODE=True` the stream is available at: - RTSP - `rtsp://:554/stream`; - RTMP - `rtmp://:1935/stream`; - HLS - `http://:888/stream`; diff --git a/samples/README.md b/samples/README.md index 7a6cf7bf..21090e52 100644 --- a/samples/README.md +++ b/samples/README.md @@ -19,7 +19,7 @@ Sample Location: [peoplenet_detector](./peoplenet_detector) Preview: -![](peoplenet-blur-demo-loop-400.webp) +![](peoplenet_detector/assets/peoplenet-blur-demo-loop-400.webp) ### Car Detection and Classification (Nvidia detectors and classifiers, Nvidia tracker) @@ -27,15 +27,15 @@ Sample Location: [nvidia_car_classification](./nvidia_car_classification) Preview: -![](nvidia-car-classification-loop-400.webp) +![](nvidia_car_classification/assets/nvidia-car-classification-loop-400.webp) -### Line crossing demo +### Traffic meter demo -Sample Location: [line_crossing](./line_crossing) +Sample Location: [traffic_meter](./traffic_meter) Preview: -![](line-crossing-loop-400.webp) +![](traffic_meter/assets/traffic-meter-loop-400.webp) ## Utility And Coding Examples @@ -45,6 +45,6 @@ Sample Location: [opencv_cuda_bg_remover_mog2](./opencv_cuda_bg_remover_mog2) Preview: -![](opencv_cuda_bg_remover_mog2-800.webp) +![](opencv_cuda_bg_remover_mog2/assets/opencv_cuda_bg_remover_mog2-800.webp) diff --git a/samples/stub_imgs/smpte100_1280x720.jpeg b/samples/assets/stub_imgs/smpte100_1280x720.jpeg similarity index 100% rename from samples/stub_imgs/smpte100_1280x720.jpeg rename to samples/assets/stub_imgs/smpte100_1280x720.jpeg diff --git a/samples/stub_imgs/smpte100_1280x900.jpeg b/samples/assets/stub_imgs/smpte100_1280x900.jpeg similarity index 100% rename from samples/stub_imgs/smpte100_1280x900.jpeg rename to samples/assets/stub_imgs/smpte100_1280x900.jpeg diff --git a/samples/line-crossing-loop-400.webp b/samples/line-crossing-loop-400.webp deleted file mode 100644 index ca1a9e25..00000000 Binary files a/samples/line-crossing-loop-400.webp and /dev/null differ diff --git a/samples/line-crossing-loop.webp b/samples/line-crossing-loop.webp deleted file mode 100644 index 87f96e4c..00000000 Binary files a/samples/line-crossing-loop.webp and /dev/null differ diff --git a/samples/line_crossing/docker-compose.l4t.yml b/samples/line_crossing/docker-compose.l4t.yml deleted file mode 100644 index 47f02bf5..00000000 --- a/samples/line_crossing/docker-compose.l4t.yml +++ /dev/null @@ -1,102 +0,0 @@ -version: "3.3" -services: - rtsp-server: - image: aler9/rtsp-simple-server - ports: - - "1935:1935" - - "8554:8554" - - "8888:8888" - environment: - - RTSP_PROTOCOLS=tcp - rtsp-stream: - image: linuxserver/ffmpeg:version-4.4-cli - links: - - "rtsp-server:rtsp-server" - depends_on: - - rtsp-server - command: -re -stream_loop -1 -i https://eu-central-1.linodeobjects.com/savant-data/line-crossing/AVG-TownCentre.mp4 -c copy -bsf:v h264_mp4toannexb -f rtsp rtsp://rtsp-server:8554/town-centre - healthcheck: - test: ["CMD", "ffprobe", "rtsp://rtsp-server:8554/town-centre"] - interval: 5s - start_period: 5s - module: - build: - context: . - dockerfile: docker/Dockerfile.l4t - volumes: - - zmq_sockets:/tmp/zmq-sockets - - ../../models/line_crossing:/models - - ../../downloads/line_crossing:/downloads - - .:/opt/savant/samples/line_crossing - command: samples/line_crossing/module-${DETECTOR}.yml - environment: - - ZMQ_SRC_ENDPOINT=ipc:///tmp/zmq-sockets/input-video.ipc - - ZMQ_SRC_TYPE=SUB - - ZMQ_SRC_BIND=True - - ZMQ_SINK_ENDPOINT=ipc:///tmp/zmq-sockets/output-video.ipc - - ZMQ_SINK_TYPE=PUB - - ZMQ_SINK_BIND=True - deploy: - resources: - reservations: - devices: - - driver: nvidia - count: 1 - capabilities: [gpu] - rtsp-source: - image: ghcr.io/insight-platform/savant-adapters-gstreamer-l4t:latest - volumes: - - zmq_sockets:/tmp/zmq-sockets - links: - - "rtsp-server:rtsp-server" - depends_on: - rtsp-stream: - condition: service_healthy - environment: - - ZMQ_ENDPOINT=ipc:///tmp/zmq-sockets/input-video.ipc - - ZMQ_TYPE=PUB - - ZMQ_BIND=False - - RTSP_URI=rtsp://rtsp-server:8554/town-centre - - SOURCE_ID=town-centre-processed - - SYNC_OUTPUT=True - entrypoint: /opt/savant/adapters/gst/sources/rtsp.sh - always-on-sink: - image: ghcr.io/insight-platform/savant-adapters-deepstream-l4t:latest - volumes: - - zmq_sockets:/tmp/zmq-sockets - - ../stub_imgs:/stub_imgs - links: - - "rtsp-server:rtsp-server" - depends_on: - - rtsp-server - environment: - - ZMQ_ENDPOINT=ipc:///tmp/zmq-sockets/output-video.ipc - - ZMQ_TYPE=SUB - - ZMQ_BIND=False - - RTSP_URI=rtsp://rtsp-server:8554/town-centre-processed - - SOURCE_ID=town-centre-processed - - STUB_FILE_LOCATION=/stub_imgs/smpte100_1280x720.jpeg - command: python -m adapters.ds.sinks.always_on_rtsp - deploy: - resources: - reservations: - devices: - - driver: nvidia - count: 1 - capabilities: [gpu] - graphite: - image: graphiteapp/graphite-statsd - graphana: - image: grafana/grafana-oss - volumes: - - ./graphana_datasources:/etc/grafana/provisioning/datasources/ - - ./graphana_dashboards:/etc/grafana/provisioning/dashboards/ - ports: - - "3000:3000" - environment: - - GF_AUTH_ANONYMOUS_ENABLED=true - - GF_AUTH_ANONYMOUS_ORG_NAME=Main Org. - - GF_AUTH_ANONYMOUS_ORG_ROLE=Viewer - -volumes: - zmq_sockets: diff --git a/samples/line_crossing/docker-compose.x86.yml b/samples/line_crossing/docker-compose.x86.yml deleted file mode 100644 index 526f9deb..00000000 --- a/samples/line_crossing/docker-compose.x86.yml +++ /dev/null @@ -1,102 +0,0 @@ -version: "3.3" -services: - rtsp-server: - image: aler9/rtsp-simple-server - ports: - - "1935:1935" - - "8554:8554" - - "8888:8888" - environment: - - RTSP_PROTOCOLS=tcp - rtsp-stream: - image: linuxserver/ffmpeg:version-4.4-cli - links: - - "rtsp-server:rtsp-server" - depends_on: - - rtsp-server - command: -re -stream_loop -1 -i https://eu-central-1.linodeobjects.com/savant-data/line-crossing/AVG-TownCentre.mp4 -c copy -bsf:v h264_mp4toannexb -f rtsp rtsp://rtsp-server:8554/town-centre - healthcheck: - test: ["CMD", "ffprobe", "rtsp://rtsp-server:8554/town-centre"] - interval: 5s - start_period: 5s - module: - build: - context: . - dockerfile: docker/Dockerfile.x86 - volumes: - - zmq_sockets:/tmp/zmq-sockets - - ../../models/line_crossing:/models - - ../../downloads/line_crossing:/downloads - - .:/opt/savant/samples/line_crossing - command: samples/line_crossing/module-${DETECTOR}.yml - environment: - - ZMQ_SRC_ENDPOINT=ipc:///tmp/zmq-sockets/input-video.ipc - - ZMQ_SRC_TYPE=SUB - - ZMQ_SRC_BIND=True - - ZMQ_SINK_ENDPOINT=ipc:///tmp/zmq-sockets/output-video.ipc - - ZMQ_SINK_TYPE=PUB - - ZMQ_SINK_BIND=True - deploy: - resources: - reservations: - devices: - - driver: nvidia - count: 1 - capabilities: [gpu] - rtsp-source: - image: ghcr.io/insight-platform/savant-adapters-gstreamer:latest - volumes: - - zmq_sockets:/tmp/zmq-sockets - links: - - "rtsp-server:rtsp-server" - depends_on: - rtsp-stream: - condition: service_healthy - environment: - - ZMQ_ENDPOINT=ipc:///tmp/zmq-sockets/input-video.ipc - - ZMQ_TYPE=PUB - - ZMQ_BIND=False - - RTSP_URI=rtsp://rtsp-server:8554/town-centre - - SOURCE_ID=town-centre-processed - - SYNC_OUTPUT=True - entrypoint: /opt/savant/adapters/gst/sources/rtsp.sh - always-on-sink: - image: ghcr.io/insight-platform/savant-adapters-deepstream:latest - volumes: - - zmq_sockets:/tmp/zmq-sockets - - ../stub_imgs:/stub_imgs - links: - - "rtsp-server:rtsp-server" - depends_on: - - rtsp-server - environment: - - ZMQ_ENDPOINT=ipc:///tmp/zmq-sockets/output-video.ipc - - ZMQ_TYPE=SUB - - ZMQ_BIND=False - - RTSP_URI=rtsp://rtsp-server:8554/town-centre-processed - - SOURCE_ID=town-centre-processed - - STUB_FILE_LOCATION=/stub_imgs/smpte100_1280x720.jpeg - command: python -m adapters.ds.sinks.always_on_rtsp - deploy: - resources: - reservations: - devices: - - driver: nvidia - count: 1 - capabilities: [gpu] - graphite: - image: graphiteapp/graphite-statsd - graphana: - image: grafana/grafana-oss - volumes: - - ./graphana_datasources:/etc/grafana/provisioning/datasources/ - - ./graphana_dashboards:/etc/grafana/provisioning/dashboards/ - ports: - - "3000:3000" - environment: - - GF_AUTH_ANONYMOUS_ENABLED=true - - GF_AUTH_ANONYMOUS_ORG_NAME=Main Org. - - GF_AUTH_ANONYMOUS_ORG_ROLE=Viewer - -volumes: - zmq_sockets: diff --git a/samples/nvidia-car-classification-loop-400.webp b/samples/nvidia-car-classification-loop-400.webp deleted file mode 100644 index 71634cc5..00000000 Binary files a/samples/nvidia-car-classification-loop-400.webp and /dev/null differ diff --git a/samples/nvidia-car-classification-loop.webp b/samples/nvidia-car-classification-loop.webp deleted file mode 100644 index b562381a..00000000 Binary files a/samples/nvidia-car-classification-loop.webp and /dev/null differ diff --git a/samples/nvidia_car_classification/README.md b/samples/nvidia_car_classification/README.md index 026d1e88..fada4236 100644 --- a/samples/nvidia_car_classification/README.md +++ b/samples/nvidia_car_classification/README.md @@ -4,7 +4,7 @@ The app reproduces [deepstream-test2 app](https://github.com/NVIDIA-AI-IOT/deeps Preview: -![](../nvidia-car-classification-loop.webp) +![](assets/nvidia-car-classification-loop.webp) Tested on platforms: @@ -36,8 +36,8 @@ curl --silent -O -- https://hello.savant.video/cars.html # if Jetson ../../utils/check-environment-compatible && docker compose -f docker-compose.l4t.yml up -# open 'rtsp://127.0.0.1:8554/nvidia-sample-processed' in your player -# or visit 'http://127.0.0.1:8888/nvidia-sample-processed/' (LL-HLS) +# open 'rtsp://127.0.0.1:554/stream' in your player +# or visit 'http://127.0.0.1:888/stream/' (LL-HLS) # Ctrl+C to stop running the compose bundle diff --git a/samples/nvidia_car_classification/assets/nvidia-car-classification-loop-400.webp b/samples/nvidia_car_classification/assets/nvidia-car-classification-loop-400.webp new file mode 100644 index 00000000..d239de84 --- /dev/null +++ b/samples/nvidia_car_classification/assets/nvidia-car-classification-loop-400.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c02a46aa1d71c4d50dad5e2122a7e2b24eb932de1deb5195a4875c705c5ee40c +size 1096266 diff --git a/samples/nvidia_car_classification/assets/nvidia-car-classification-loop.webp b/samples/nvidia_car_classification/assets/nvidia-car-classification-loop.webp new file mode 100644 index 00000000..2e055f6c --- /dev/null +++ b/samples/nvidia_car_classification/assets/nvidia-car-classification-loop.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cea74c114b2119f58a5dd39523b90f496c9d82c334572fbc21a3ffc0aed6adef +size 7767456 diff --git a/samples/nvidia_car_classification/docker-compose.l4t.yml b/samples/nvidia_car_classification/docker-compose.l4t.yml index df843919..1fbe4c4c 100644 --- a/samples/nvidia_car_classification/docker-compose.l4t.yml +++ b/samples/nvidia_car_classification/docker-compose.l4t.yml @@ -1,26 +1,20 @@ version: "3.3" services: - rtsp-server: - image: aler9/rtsp-simple-server + + video-loop-source: + image: ghcr.io/insight-platform/savant-adapters-gstreamer-l4t:latest restart: unless-stopped - ports: - - "1935:1935" - - "8554:8554" - - "8888:8888" + volumes: + - zmq_sockets:/tmp/zmq-sockets + - /tmp/video-loop-source-downloads:/tmp/video-loop-source-downloads environment: - - RTSP_PROTOCOLS=tcp - rtsp-stream: - image: linuxserver/ffmpeg:version-4.4-cli - restart: unless-stopped - links: - - "rtsp-server:rtsp-server" - depends_on: - - rtsp-server - command: -re -stream_loop -1 -i https://eu-central-1.linodeobjects.com/savant-data/nvidia-car-classification/deepstream_sample_720p.mp4 -c copy -bsf:v h264_mp4toannexb -f rtsp rtsp://rtsp-server:8554/nvidia-sample - healthcheck: - test: ["CMD", "ffprobe", "rtsp://rtsp-server:8554/nvidia-sample"] - interval: 5s - start_period: 5s + - LOCATION=https://eu-central-1.linodeobjects.com/savant-data/nvidia-car-classification/deepstream_sample_720p.mp4 + - DOWNLOAD_PATH=/tmp/video-loop-source-downloads + - ZMQ_ENDPOINT=pub+connect:ipc:///tmp/zmq-sockets/input-video.ipc + - SOURCE_ID=nvidia-sample-processed + - SYNC_OUTPUT=True + entrypoint: /opt/savant/adapters/gst/sources/video_loop.sh + module: image: ghcr.io/insight-platform/savant-deepstream-l4t:latest restart: unless-stopped @@ -31,12 +25,9 @@ services: - .:/opt/savant/samples/nvidia_car_classification command: samples/nvidia_car_classification/module.yml environment: - - ZMQ_SRC_ENDPOINT=ipc:///tmp/zmq-sockets/input-video.ipc - - ZMQ_SRC_TYPE=SUB - - ZMQ_SRC_BIND=True - - ZMQ_SINK_ENDPOINT=ipc:///tmp/zmq-sockets/output-video.ipc - - ZMQ_SINK_TYPE=PUB - - ZMQ_SINK_BIND=True + - ZMQ_SRC_ENDPOINT=sub+bind:ipc:///tmp/zmq-sockets/input-video.ipc + - ZMQ_SINK_ENDPOINT=pub+bind:ipc:///tmp/zmq-sockets/output-video.ipc + - FPS_PERIOD=1000 deploy: resources: reservations: @@ -44,41 +35,23 @@ services: - driver: nvidia count: 1 capabilities: [gpu] - rtsp-source: - image: ghcr.io/insight-platform/savant-adapters-gstreamer-l4t:latest - restart: unless-stopped - volumes: - - zmq_sockets:/tmp/zmq-sockets - links: - - "rtsp-server:rtsp-server" - depends_on: - rtsp-stream: - condition: service_healthy - environment: - - ZMQ_ENDPOINT=ipc:///tmp/zmq-sockets/input-video.ipc - - ZMQ_TYPE=PUB - - ZMQ_BIND=False - - RTSP_URI=rtsp://rtsp-server:8554/nvidia-sample - - SOURCE_ID=nvidia-sample-processed - - SYNC_OUTPUT=True - entrypoint: /opt/savant/adapters/gst/sources/rtsp.sh + always-on-sink: image: ghcr.io/insight-platform/savant-adapters-deepstream-l4t:latest restart: unless-stopped + ports: + - "554:554" # RTSP + - "1935:1935" # RTMP + - "888:888" # HLS + - "8889:8889" # WebRTC volumes: - zmq_sockets:/tmp/zmq-sockets - - ../stub_imgs:/stub_imgs - links: - - "rtsp-server:rtsp-server" - depends_on: - - rtsp-server + - ../assets/stub_imgs:/stub_imgs environment: - - ZMQ_ENDPOINT=ipc:///tmp/zmq-sockets/output-video.ipc - - ZMQ_TYPE=SUB - - ZMQ_BIND=False - - RTSP_URI=rtsp://rtsp-server:8554/nvidia-sample-processed + - ZMQ_ENDPOINT=sub+connect:ipc:///tmp/zmq-sockets/output-video.ipc - SOURCE_ID=nvidia-sample-processed - STUB_FILE_LOCATION=/stub_imgs/smpte100_1280x720.jpeg + - DEV_MODE=True command: python -m adapters.ds.sinks.always_on_rtsp deploy: resources: diff --git a/samples/nvidia_car_classification/docker-compose.x86.yml b/samples/nvidia_car_classification/docker-compose.x86.yml index 6f15b53c..d7dbcca9 100644 --- a/samples/nvidia_car_classification/docker-compose.x86.yml +++ b/samples/nvidia_car_classification/docker-compose.x86.yml @@ -1,26 +1,20 @@ version: "3.3" services: - rtsp-server: - image: aler9/rtsp-simple-server + + video-loop-source: + image: ghcr.io/insight-platform/savant-adapters-gstreamer:latest restart: unless-stopped - ports: - - "1935:1935" - - "8554:8554" - - "8888:8888" + volumes: + - zmq_sockets:/tmp/zmq-sockets + - /tmp/video-loop-source-downloads:/tmp/video-loop-source-downloads environment: - - RTSP_PROTOCOLS=tcp - rtsp-stream: - image: linuxserver/ffmpeg:version-4.4-cli - restart: unless-stopped - links: - - "rtsp-server:rtsp-server" - depends_on: - - rtsp-server - command: -re -stream_loop -1 -i https://eu-central-1.linodeobjects.com/savant-data/nvidia-car-classification/deepstream_sample_720p.mp4 -c copy -bsf:v h264_mp4toannexb -f rtsp rtsp://rtsp-server:8554/nvidia-sample - healthcheck: - test: ["CMD", "ffprobe", "rtsp://rtsp-server:8554/nvidia-sample"] - interval: 5s - start_period: 5s + - LOCATION=https://eu-central-1.linodeobjects.com/savant-data/nvidia-car-classification/deepstream_sample_720p.mp4 + - DOWNLOAD_PATH=/tmp/video-loop-source-downloads + - ZMQ_ENDPOINT=pub+connect:ipc:///tmp/zmq-sockets/input-video.ipc + - SOURCE_ID=nvidia-sample-processed + - SYNC_OUTPUT=True + entrypoint: /opt/savant/adapters/gst/sources/video_loop.sh + module: image: ghcr.io/insight-platform/savant-deepstream:latest restart: unless-stopped @@ -31,12 +25,9 @@ services: - .:/opt/savant/samples/nvidia_car_classification command: samples/nvidia_car_classification/module.yml environment: - - ZMQ_SRC_ENDPOINT=ipc:///tmp/zmq-sockets/input-video.ipc - - ZMQ_SRC_TYPE=SUB - - ZMQ_SRC_BIND=True - - ZMQ_SINK_ENDPOINT=ipc:///tmp/zmq-sockets/output-video.ipc - - ZMQ_SINK_TYPE=PUB - - ZMQ_SINK_BIND=True + - ZMQ_SRC_ENDPOINT=sub+bind:ipc:///tmp/zmq-sockets/input-video.ipc + - ZMQ_SINK_ENDPOINT=pub+bind:ipc:///tmp/zmq-sockets/output-video.ipc + - FPS_PERIOD=1000 deploy: resources: reservations: @@ -44,41 +35,23 @@ services: - driver: nvidia count: 1 capabilities: [gpu] - rtsp-source: - image: ghcr.io/insight-platform/savant-adapters-gstreamer:latest - restart: unless-stopped - volumes: - - zmq_sockets:/tmp/zmq-sockets - links: - - "rtsp-server:rtsp-server" - depends_on: - rtsp-stream: - condition: service_healthy - environment: - - ZMQ_ENDPOINT=ipc:///tmp/zmq-sockets/input-video.ipc - - ZMQ_TYPE=PUB - - ZMQ_BIND=False - - RTSP_URI=rtsp://rtsp-server:8554/nvidia-sample - - SOURCE_ID=nvidia-sample-processed - - SYNC_OUTPUT=True - entrypoint: /opt/savant/adapters/gst/sources/rtsp.sh + always-on-sink: image: ghcr.io/insight-platform/savant-adapters-deepstream:latest restart: unless-stopped + ports: + - "554:554" # RTSP + - "1935:1935" # RTMP + - "888:888" # HLS + - "8889:8889" # WebRTC volumes: - zmq_sockets:/tmp/zmq-sockets - - ../stub_imgs:/stub_imgs - links: - - "rtsp-server:rtsp-server" - depends_on: - - rtsp-server + - ../assets/stub_imgs:/stub_imgs environment: - - ZMQ_ENDPOINT=ipc:///tmp/zmq-sockets/output-video.ipc - - ZMQ_TYPE=SUB - - ZMQ_BIND=False - - RTSP_URI=rtsp://rtsp-server:8554/nvidia-sample-processed + - ZMQ_ENDPOINT=sub+connect:ipc:///tmp/zmq-sockets/output-video.ipc - SOURCE_ID=nvidia-sample-processed - STUB_FILE_LOCATION=/stub_imgs/smpte100_1280x720.jpeg + - DEV_MODE=True command: python -m adapters.ds.sinks.always_on_rtsp deploy: resources: diff --git a/samples/opencv_cuda_bg_remover_mog2-800.webp b/samples/opencv_cuda_bg_remover_mog2-800.webp deleted file mode 100644 index dc2f8a4e..00000000 Binary files a/samples/opencv_cuda_bg_remover_mog2-800.webp and /dev/null differ diff --git a/samples/opencv_cuda_bg_remover_mog2.webp b/samples/opencv_cuda_bg_remover_mog2.webp deleted file mode 100644 index b50a7f16..00000000 Binary files a/samples/opencv_cuda_bg_remover_mog2.webp and /dev/null differ diff --git a/samples/opencv_cuda_bg_remover_mog2/README.md b/samples/opencv_cuda_bg_remover_mog2/README.md index f94d7133..71d3175e 100644 --- a/samples/opencv_cuda_bg_remover_mog2/README.md +++ b/samples/opencv_cuda_bg_remover_mog2/README.md @@ -6,7 +6,7 @@ The left side represents the orignial frame; the right side represents the framw Preview: -![](../opencv_cuda_bg_remover_mog2.webp) +![](assets/opencv_cuda_bg_remover_mog2.webp) Features: @@ -51,8 +51,8 @@ curl --silent -O -- https://hello.savant.video/opencv_cuda_bg_remover_mog2.html # if Jetson ../../utils/check-environment-compatible && docker compose -f docker-compose.l4t.yml up -# open 'rtsp://127.0.0.1:8554/road-traffic-processed' in your player -# or visit 'http://127.0.0.1:8888/road-traffic-processed/' (LL-HLS) +# open 'rtsp://127.0.0.1:554/stream' in your player +# or visit 'http://127.0.0.1:888/stream/' (LL-HLS) # Ctrl+C to stop running the compose bundle diff --git a/samples/opencv_cuda_bg_remover_mog2/assets/opencv_cuda_bg_remover_mog2-800.webp b/samples/opencv_cuda_bg_remover_mog2/assets/opencv_cuda_bg_remover_mog2-800.webp new file mode 100644 index 00000000..7982b479 --- /dev/null +++ b/samples/opencv_cuda_bg_remover_mog2/assets/opencv_cuda_bg_remover_mog2-800.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e30a71c04bee2a75d233dbc7d7a0f981aa85128aefee83897568d5d5af4338ae +size 2252710 diff --git a/samples/opencv_cuda_bg_remover_mog2/assets/opencv_cuda_bg_remover_mog2.webp b/samples/opencv_cuda_bg_remover_mog2/assets/opencv_cuda_bg_remover_mog2.webp new file mode 100644 index 00000000..6a173d84 --- /dev/null +++ b/samples/opencv_cuda_bg_remover_mog2/assets/opencv_cuda_bg_remover_mog2.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e4213d995a9c7cfb06324c69ba31b80c4cd453db6836fc1b8578d914b26adea +size 9016860 diff --git a/samples/opencv_cuda_bg_remover_mog2/stub_img/smpte100_2560x720.jpeg b/samples/opencv_cuda_bg_remover_mog2/assets/stub_img/smpte100_2560x720.jpeg similarity index 100% rename from samples/opencv_cuda_bg_remover_mog2/stub_img/smpte100_2560x720.jpeg rename to samples/opencv_cuda_bg_remover_mog2/assets/stub_img/smpte100_2560x720.jpeg diff --git a/samples/opencv_cuda_bg_remover_mog2/docker-compose.l4t.yml b/samples/opencv_cuda_bg_remover_mog2/docker-compose.l4t.yml index fb323ff8..48d85c01 100644 --- a/samples/opencv_cuda_bg_remover_mog2/docker-compose.l4t.yml +++ b/samples/opencv_cuda_bg_remover_mog2/docker-compose.l4t.yml @@ -1,28 +1,20 @@ version: "3.3" services: - rtsp-server: - image: aler9/rtsp-simple-server - restart: unless-stopped - ports: - - "1935:1935" - - "8554:8554" - - "8888:8888" - environment: - - RTSP_PROTOCOLS=tcp - road-traffic: - image: linuxserver/ffmpeg:version-4.4-cli + + video-loop-source: + image: ghcr.io/insight-platform/savant-adapters-gstreamer-l4t:latest restart: unless-stopped volumes: - - ../../data/:/data - links: - - "rtsp-server:rtsp-server" - depends_on: - - rtsp-server - command: -re -stream_loop -1 -i https://eu-central-1.linodeobjects.com/savant-data/opencv_cuda_bg_remover_mog2/road_traffic.mp4 -c copy -bsf:v h264_mp4toannexb -f rtsp rtsp://rtsp-server:8554/road-traffic - healthcheck: - test: ["CMD", "ffprobe", "rtsp://rtsp-server:8554/road-traffic"] - interval: 5s - start_period: 5s + - zmq_sockets:/tmp/zmq-sockets + - /tmp/video-loop-source-downloads:/tmp/video-loop-source-downloads + environment: + - LOCATION=https://eu-central-1.linodeobjects.com/savant-data/opencv_cuda_bg_remover_mog2/road_traffic.mp4 + - DOWNLOAD_PATH=/tmp/video-loop-source-downloads + - ZMQ_ENDPOINT=pub+connect:ipc:///tmp/zmq-sockets/input-video.ipc + - SOURCE_ID=road-traffic-processed + - SYNC_OUTPUT=True + entrypoint: /opt/savant/adapters/gst/sources/video_loop.sh + module: image: ghcr.io/insight-platform/savant-deepstream-l4t:latest restart: unless-stopped @@ -31,12 +23,9 @@ services: - ..:/opt/savant/samples command: samples/opencv_cuda_bg_remover_mog2/demo.yml environment: - - ZMQ_SRC_ENDPOINT=ipc:///tmp/zmq-sockets/input-video.ipc - - ZMQ_SRC_TYPE=SUB - - ZMQ_SRC_BIND=True - - ZMQ_SINK_ENDPOINT=ipc:///tmp/zmq-sockets/output-video.ipc - - ZMQ_SINK_TYPE=PUB - - ZMQ_SINK_BIND=True + - ZMQ_SRC_ENDPOINT=sub+bind:ipc:///tmp/zmq-sockets/input-video.ipc + - ZMQ_SINK_ENDPOINT=pub+bind:ipc:///tmp/zmq-sockets/output-video.ipc + - FPS_PERIOD=1000 deploy: resources: reservations: @@ -44,41 +33,23 @@ services: - driver: nvidia count: 1 capabilities: [gpu] - rtsp-source: - image: ghcr.io/insight-platform/savant-adapters-gstreamer-l4t:latest - restart: unless-stopped - volumes: - - zmq_sockets:/tmp/zmq-sockets - links: - - "rtsp-server:rtsp-server" - depends_on: - road-traffic: - condition: service_healthy - environment: - - ZMQ_ENDPOINT=ipc:///tmp/zmq-sockets/input-video.ipc - - ZMQ_TYPE=PUB - - ZMQ_BIND=False - - RTSP_URI=rtsp://rtsp-server:8554/road-traffic - - SOURCE_ID=road-traffic-processed - - SYNC_OUTPUT=True - entrypoint: /opt/savant/adapters/gst/sources/rtsp.sh + always-on-sink: image: ghcr.io/insight-platform/savant-adapters-deepstream-l4t:latest restart: unless-stopped + ports: + - "554:554" # RTSP + - "1935:1935" # RTMP + - "888:888" # HLS + - "8889:8889" # WebRTC volumes: - zmq_sockets:/tmp/zmq-sockets - - ./stub_img:/stub_img - links: - - "rtsp-server:rtsp-server" - depends_on: - - rtsp-server + - ./assets/stub_img:/stub_img environment: - - ZMQ_ENDPOINT=ipc:///tmp/zmq-sockets/output-video.ipc - - ZMQ_TYPE=SUB - - ZMQ_BIND=False - - RTSP_URI=rtsp://rtsp-server:8554/road-traffic-processed + - ZMQ_ENDPOINT=sub+connect:ipc:///tmp/zmq-sockets/output-video.ipc - SOURCE_ID=road-traffic-processed - STUB_FILE_LOCATION=/stub_img/smpte100_2560x720.jpeg + - DEV_MODE=True command: python -m adapters.ds.sinks.always_on_rtsp deploy: resources: diff --git a/samples/opencv_cuda_bg_remover_mog2/docker-compose.x86.yml b/samples/opencv_cuda_bg_remover_mog2/docker-compose.x86.yml index fb4e52e9..24bbb92d 100644 --- a/samples/opencv_cuda_bg_remover_mog2/docker-compose.x86.yml +++ b/samples/opencv_cuda_bg_remover_mog2/docker-compose.x86.yml @@ -1,28 +1,20 @@ version: "3.3" services: - rtsp-server: - image: aler9/rtsp-simple-server - restart: unless-stopped - ports: - - "1935:1935" - - "8554:8554" - - "8888:8888" - environment: - - RTSP_PROTOCOLS=tcp - road-traffic: - image: linuxserver/ffmpeg:version-4.4-cli + + video-loop-source: + image: ghcr.io/insight-platform/savant-adapters-gstreamer:latest restart: unless-stopped volumes: - - ../../data/:/data - links: - - "rtsp-server:rtsp-server" - depends_on: - - rtsp-server - command: -re -stream_loop -1 -i https://eu-central-1.linodeobjects.com/savant-data/opencv_cuda_bg_remover_mog2/road_traffic.mp4 -c copy -bsf:v h264_mp4toannexb -f rtsp rtsp://rtsp-server:8554/road-traffic - healthcheck: - test: ["CMD", "ffprobe", "rtsp://rtsp-server:8554/road-traffic"] - interval: 5s - start_period: 5s + - zmq_sockets:/tmp/zmq-sockets + - /tmp/video-loop-source-downloads:/tmp/video-loop-source-downloads + environment: + - LOCATION=https://eu-central-1.linodeobjects.com/savant-data/opencv_cuda_bg_remover_mog2/road_traffic.mp4 + - DOWNLOAD_PATH=/tmp/video-loop-source-downloads + - ZMQ_ENDPOINT=pub+connect:ipc:///tmp/zmq-sockets/input-video.ipc + - SOURCE_ID=road-traffic-processed + - SYNC_OUTPUT=True + entrypoint: /opt/savant/adapters/gst/sources/video_loop.sh + module: image: ghcr.io/insight-platform/savant-deepstream:latest restart: unless-stopped @@ -31,12 +23,9 @@ services: - ..:/opt/savant/samples command: samples/opencv_cuda_bg_remover_mog2/demo.yml environment: - - ZMQ_SRC_ENDPOINT=ipc:///tmp/zmq-sockets/input-video.ipc - - ZMQ_SRC_TYPE=SUB - - ZMQ_SRC_BIND=True - - ZMQ_SINK_ENDPOINT=ipc:///tmp/zmq-sockets/output-video.ipc - - ZMQ_SINK_TYPE=PUB - - ZMQ_SINK_BIND=True + - ZMQ_SRC_ENDPOINT=sub+bind:ipc:///tmp/zmq-sockets/input-video.ipc + - ZMQ_SINK_ENDPOINT=pub+bind:ipc:///tmp/zmq-sockets/output-video.ipc + - FPS_PERIOD=1000 deploy: resources: reservations: @@ -44,41 +33,23 @@ services: - driver: nvidia count: 1 capabilities: [gpu] - rtsp-source: - image: ghcr.io/insight-platform/savant-adapters-gstreamer:latest - restart: unless-stopped - volumes: - - zmq_sockets:/tmp/zmq-sockets - links: - - "rtsp-server:rtsp-server" - depends_on: - road-traffic: - condition: service_healthy - environment: - - ZMQ_ENDPOINT=ipc:///tmp/zmq-sockets/input-video.ipc - - ZMQ_TYPE=PUB - - ZMQ_BIND=False - - RTSP_URI=rtsp://rtsp-server:8554/road-traffic - - SOURCE_ID=road-traffic-processed - - SYNC_OUTPUT=True - entrypoint: /opt/savant/adapters/gst/sources/rtsp.sh + always-on-sink: image: ghcr.io/insight-platform/savant-adapters-deepstream:latest restart: unless-stopped + ports: + - "554:554" # RTSP + - "1935:1935" # RTMP + - "888:888" # HLS + - "8889:8889" # WebRTC volumes: - zmq_sockets:/tmp/zmq-sockets - - ./stub_img:/stub_img - links: - - "rtsp-server:rtsp-server" - depends_on: - - rtsp-server + - ./assets/stub_img:/stub_img environment: - - ZMQ_ENDPOINT=ipc:///tmp/zmq-sockets/output-video.ipc - - ZMQ_TYPE=SUB - - ZMQ_BIND=False - - RTSP_URI=rtsp://rtsp-server:8554/road-traffic-processed + - ZMQ_ENDPOINT=sub+connect:ipc:///tmp/zmq-sockets/output-video.ipc - SOURCE_ID=road-traffic-processed - STUB_FILE_LOCATION=/stub_img/smpte100_2560x720.jpeg + - DEV_MODE=True command: python -m adapters.ds.sinks.always_on_rtsp deploy: resources: @@ -89,4 +60,4 @@ services: capabilities: [gpu] volumes: - zmq_sockets: \ No newline at end of file + zmq_sockets: diff --git a/samples/peoplenet-blur-demo-loop-400.webp b/samples/peoplenet-blur-demo-loop-400.webp deleted file mode 100644 index 9017a356..00000000 Binary files a/samples/peoplenet-blur-demo-loop-400.webp and /dev/null differ diff --git a/samples/peoplenet-blur-demo-loop.webp b/samples/peoplenet-blur-demo-loop.webp deleted file mode 100644 index d783db0b..00000000 Binary files a/samples/peoplenet-blur-demo-loop.webp and /dev/null differ diff --git a/samples/peoplenet_detector/README.md b/samples/peoplenet_detector/README.md index 0e94d22d..9ca65509 100644 --- a/samples/peoplenet_detector/README.md +++ b/samples/peoplenet_detector/README.md @@ -9,7 +9,7 @@ The **Blue** Icon represents how many people with blurred faces in the scene. Preview: -![](../peoplenet-blur-demo-loop.webp) +![](assets/peoplenet-blur-demo-loop.webp) Features: @@ -57,8 +57,8 @@ curl --silent -O -- https://hello.savant.video/peoplenet.html # if Jetson ../../utils/check-environment-compatible && docker compose -f docker-compose.l4t.yml up -# open 'rtsp://127.0.0.1:8554/city-traffic-processed' in your player -# or visit 'http://127.0.0.1:8888/city-traffic-processed/' (LL-HLS) +# open 'rtsp://127.0.0.1:554/stream' in your player +# or visit 'http://127.0.0.1:888/stream/' (LL-HLS) # Ctrl+C to stop running the compose bundle diff --git a/samples/peoplenet_detector/assets/peoplenet-blur-demo-loop-400.webp b/samples/peoplenet_detector/assets/peoplenet-blur-demo-loop-400.webp new file mode 100644 index 00000000..439cde5f --- /dev/null +++ b/samples/peoplenet_detector/assets/peoplenet-blur-demo-loop-400.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57286baed77893ddaa84a6422abd20573723a76384ee8eed91a4eb7115f01eed +size 2445956 diff --git a/samples/peoplenet_detector/assets/peoplenet-blur-demo-loop.webp b/samples/peoplenet_detector/assets/peoplenet-blur-demo-loop.webp new file mode 100644 index 00000000..209757f2 --- /dev/null +++ b/samples/peoplenet_detector/assets/peoplenet-blur-demo-loop.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de855d4025db0dc2555485c39147d9480b628b912f948fe223684896094bda35 +size 6258406 diff --git a/samples/peoplenet_detector/sprites/blue_man/2_001.png b/samples/peoplenet_detector/assets/sprites/blue_man/2_001.png similarity index 100% rename from samples/peoplenet_detector/sprites/blue_man/2_001.png rename to samples/peoplenet_detector/assets/sprites/blue_man/2_001.png diff --git a/samples/peoplenet_detector/sprites/blue_man/2_002.png b/samples/peoplenet_detector/assets/sprites/blue_man/2_002.png similarity index 100% rename from samples/peoplenet_detector/sprites/blue_man/2_002.png rename to samples/peoplenet_detector/assets/sprites/blue_man/2_002.png diff --git a/samples/peoplenet_detector/sprites/blue_man/2_003.png b/samples/peoplenet_detector/assets/sprites/blue_man/2_003.png similarity index 100% rename from samples/peoplenet_detector/sprites/blue_man/2_003.png rename to samples/peoplenet_detector/assets/sprites/blue_man/2_003.png diff --git a/samples/peoplenet_detector/sprites/blue_man/2_004.png b/samples/peoplenet_detector/assets/sprites/blue_man/2_004.png similarity index 100% rename from samples/peoplenet_detector/sprites/blue_man/2_004.png rename to samples/peoplenet_detector/assets/sprites/blue_man/2_004.png diff --git a/samples/peoplenet_detector/sprites/blue_man/2_005.png b/samples/peoplenet_detector/assets/sprites/blue_man/2_005.png similarity index 100% rename from samples/peoplenet_detector/sprites/blue_man/2_005.png rename to samples/peoplenet_detector/assets/sprites/blue_man/2_005.png diff --git a/samples/peoplenet_detector/sprites/blue_man/2_006.png b/samples/peoplenet_detector/assets/sprites/blue_man/2_006.png similarity index 100% rename from samples/peoplenet_detector/sprites/blue_man/2_006.png rename to samples/peoplenet_detector/assets/sprites/blue_man/2_006.png diff --git a/samples/peoplenet_detector/sprites/blue_man/2_007.png b/samples/peoplenet_detector/assets/sprites/blue_man/2_007.png similarity index 100% rename from samples/peoplenet_detector/sprites/blue_man/2_007.png rename to samples/peoplenet_detector/assets/sprites/blue_man/2_007.png diff --git a/samples/peoplenet_detector/sprites/blue_man/2_008.png b/samples/peoplenet_detector/assets/sprites/blue_man/2_008.png similarity index 100% rename from samples/peoplenet_detector/sprites/blue_man/2_008.png rename to samples/peoplenet_detector/assets/sprites/blue_man/2_008.png diff --git a/samples/peoplenet_detector/sprites/blue_man/2_009.png b/samples/peoplenet_detector/assets/sprites/blue_man/2_009.png similarity index 100% rename from samples/peoplenet_detector/sprites/blue_man/2_009.png rename to samples/peoplenet_detector/assets/sprites/blue_man/2_009.png diff --git a/samples/peoplenet_detector/sprites/blue_man/2_010.png b/samples/peoplenet_detector/assets/sprites/blue_man/2_010.png similarity index 100% rename from samples/peoplenet_detector/sprites/blue_man/2_010.png rename to samples/peoplenet_detector/assets/sprites/blue_man/2_010.png diff --git a/samples/peoplenet_detector/sprites/green_man/1_001.png b/samples/peoplenet_detector/assets/sprites/green_man/1_001.png similarity index 100% rename from samples/peoplenet_detector/sprites/green_man/1_001.png rename to samples/peoplenet_detector/assets/sprites/green_man/1_001.png diff --git a/samples/peoplenet_detector/sprites/green_man/1_002.png b/samples/peoplenet_detector/assets/sprites/green_man/1_002.png similarity index 100% rename from samples/peoplenet_detector/sprites/green_man/1_002.png rename to samples/peoplenet_detector/assets/sprites/green_man/1_002.png diff --git a/samples/peoplenet_detector/sprites/green_man/1_003.png b/samples/peoplenet_detector/assets/sprites/green_man/1_003.png similarity index 100% rename from samples/peoplenet_detector/sprites/green_man/1_003.png rename to samples/peoplenet_detector/assets/sprites/green_man/1_003.png diff --git a/samples/peoplenet_detector/sprites/green_man/1_004.png b/samples/peoplenet_detector/assets/sprites/green_man/1_004.png similarity index 100% rename from samples/peoplenet_detector/sprites/green_man/1_004.png rename to samples/peoplenet_detector/assets/sprites/green_man/1_004.png diff --git a/samples/peoplenet_detector/sprites/green_man/1_005.png b/samples/peoplenet_detector/assets/sprites/green_man/1_005.png similarity index 100% rename from samples/peoplenet_detector/sprites/green_man/1_005.png rename to samples/peoplenet_detector/assets/sprites/green_man/1_005.png diff --git a/samples/peoplenet_detector/sprites/green_man/1_006.png b/samples/peoplenet_detector/assets/sprites/green_man/1_006.png similarity index 100% rename from samples/peoplenet_detector/sprites/green_man/1_006.png rename to samples/peoplenet_detector/assets/sprites/green_man/1_006.png diff --git a/samples/peoplenet_detector/sprites/green_man/1_007.png b/samples/peoplenet_detector/assets/sprites/green_man/1_007.png similarity index 100% rename from samples/peoplenet_detector/sprites/green_man/1_007.png rename to samples/peoplenet_detector/assets/sprites/green_man/1_007.png diff --git a/samples/peoplenet_detector/sprites/green_man/1_008.png b/samples/peoplenet_detector/assets/sprites/green_man/1_008.png similarity index 100% rename from samples/peoplenet_detector/sprites/green_man/1_008.png rename to samples/peoplenet_detector/assets/sprites/green_man/1_008.png diff --git a/samples/peoplenet_detector/sprites/green_man/1_009.png b/samples/peoplenet_detector/assets/sprites/green_man/1_009.png similarity index 100% rename from samples/peoplenet_detector/sprites/green_man/1_009.png rename to samples/peoplenet_detector/assets/sprites/green_man/1_009.png diff --git a/samples/peoplenet_detector/sprites/green_man/1_010.png b/samples/peoplenet_detector/assets/sprites/green_man/1_010.png similarity index 100% rename from samples/peoplenet_detector/sprites/green_man/1_010.png rename to samples/peoplenet_detector/assets/sprites/green_man/1_010.png diff --git a/samples/peoplenet_detector/sprites/logo_insight.png b/samples/peoplenet_detector/assets/sprites/logo_insight.png similarity index 100% rename from samples/peoplenet_detector/sprites/logo_insight.png rename to samples/peoplenet_detector/assets/sprites/logo_insight.png diff --git a/samples/peoplenet_detector/docker-compose.l4t.yml b/samples/peoplenet_detector/docker-compose.l4t.yml index 26c9eac7..6867bdc8 100644 --- a/samples/peoplenet_detector/docker-compose.l4t.yml +++ b/samples/peoplenet_detector/docker-compose.l4t.yml @@ -1,26 +1,20 @@ version: "3.3" services: - rtsp-server: - image: aler9/rtsp-simple-server + + video-loop-source: + image: ghcr.io/insight-platform/savant-adapters-gstreamer-l4t:latest restart: unless-stopped - ports: - - "1935:1935" - - "8554:8554" - - "8888:8888" + volumes: + - zmq_sockets:/tmp/zmq-sockets + - /tmp/video-loop-source-downloads:/tmp/video-loop-source-downloads environment: - - RTSP_PROTOCOLS=tcp - city-traffic: - image: linuxserver/ffmpeg:version-4.4-cli - restart: unless-stopped - links: - - "rtsp-server:rtsp-server" - depends_on: - - rtsp-server - command: -re -stream_loop -1 -i https://eu-central-1.linodeobjects.com/savant-data/demo/Free_City_Street_Footage.mp4 -c copy -bsf:v h264_mp4toannexb -f rtsp rtsp://rtsp-server:8554/city-traffic - healthcheck: - test: ["CMD", "ffprobe", "rtsp://rtsp-server:8554/city-traffic"] - interval: 5s - start_period: 5s + - LOCATION=https://eu-central-1.linodeobjects.com/savant-data/demo/Free_City_Street_Footage.mp4 + - DOWNLOAD_PATH=/tmp/video-loop-source-downloads + - ZMQ_ENDPOINT=pub+connect:ipc:///tmp/zmq-sockets/input-video.ipc + - SOURCE_ID=city-traffic + - SYNC_OUTPUT=True + entrypoint: /opt/savant/adapters/gst/sources/video_loop.sh + module: build: context: . @@ -33,12 +27,9 @@ services: - ..:/opt/savant/samples command: samples/peoplenet_detector/demo.yml environment: - - ZMQ_SRC_ENDPOINT=ipc:///tmp/zmq-sockets/input-video.ipc - - ZMQ_SRC_TYPE=SUB - - ZMQ_SRC_BIND=True - - ZMQ_SINK_ENDPOINT=ipc:///tmp/zmq-sockets/output-video.ipc - - ZMQ_SINK_TYPE=PUB - - ZMQ_SINK_BIND=True + - ZMQ_SRC_ENDPOINT=sub+bind:ipc:///tmp/zmq-sockets/input-video.ipc + - ZMQ_SINK_ENDPOINT=pub+bind:ipc:///tmp/zmq-sockets/output-video.ipc + - FPS_PERIOD=1000 deploy: resources: reservations: @@ -46,41 +37,24 @@ services: - driver: nvidia count: 1 capabilities: [gpu] - rtsp-source: - image: ghcr.io/insight-platform/savant-adapters-gstreamer-l4t:latest - restart: unless-stopped - volumes: - - zmq_sockets:/tmp/zmq-sockets - links: - - "rtsp-server:rtsp-server" - depends_on: - city-traffic: - condition: service_healthy - environment: - - ZMQ_ENDPOINT=ipc:///tmp/zmq-sockets/input-video.ipc - - ZMQ_TYPE=PUB - - ZMQ_BIND=False - - RTSP_URI=rtsp://rtsp-server:8554/city-traffic - - SOURCE_ID=city-traffic-processed - - SYNC_OUTPUT=True - entrypoint: /opt/savant/adapters/gst/sources/rtsp.sh + always-on-sink: image: ghcr.io/insight-platform/savant-adapters-deepstream-l4t:latest restart: unless-stopped + ports: + - "554:554" # RTSP + - "1935:1935" # RTMP + - "888:888" # HLS + - "8889:8889" # WebRTC volumes: - zmq_sockets:/tmp/zmq-sockets - - ../stub_imgs:/stub_imgs - links: - - "rtsp-server:rtsp-server" - depends_on: - - rtsp-server + - ../assets/stub_imgs:/stub_imgs environment: - - ZMQ_ENDPOINT=ipc:///tmp/zmq-sockets/output-video.ipc - - ZMQ_TYPE=SUB - - ZMQ_BIND=False - - RTSP_URI=rtsp://rtsp-server:8554/city-traffic-processed - - SOURCE_ID=city-traffic-processed + - ZMQ_ENDPOINT=sub+connect:ipc:///tmp/zmq-sockets/output-video.ipc + - SOURCE_ID=city-traffic + - FRAMERATE=25/1 - STUB_FILE_LOCATION=/stub_imgs/smpte100_1280x900.jpeg + - DEV_MODE=True command: python -m adapters.ds.sinks.always_on_rtsp deploy: resources: diff --git a/samples/peoplenet_detector/docker-compose.x86.yml b/samples/peoplenet_detector/docker-compose.x86.yml index 0d06012c..5826d79b 100644 --- a/samples/peoplenet_detector/docker-compose.x86.yml +++ b/samples/peoplenet_detector/docker-compose.x86.yml @@ -1,26 +1,20 @@ version: "3.3" services: - rtsp-server: - image: aler9/rtsp-simple-server + + video-loop-source: + image: ghcr.io/insight-platform/savant-adapters-gstreamer:latest restart: unless-stopped - ports: - - "1935:1935" - - "8554:8554" - - "8888:8888" + volumes: + - zmq_sockets:/tmp/zmq-sockets + - /tmp/video-loop-source-downloads:/tmp/video-loop-source-downloads environment: - - RTSP_PROTOCOLS=tcp - city-traffic: - image: linuxserver/ffmpeg:version-4.4-cli - restart: unless-stopped - links: - - "rtsp-server:rtsp-server" - depends_on: - - rtsp-server - command: -re -stream_loop -1 -i https://eu-central-1.linodeobjects.com/savant-data/demo/Free_City_Street_Footage.mp4 -c copy -bsf:v h264_mp4toannexb -f rtsp rtsp://rtsp-server:8554/city-traffic - healthcheck: - test: ["CMD", "ffprobe", "rtsp://rtsp-server:8554/city-traffic"] - interval: 5s - start_period: 5s + - LOCATION=https://eu-central-1.linodeobjects.com/savant-data/demo/Free_City_Street_Footage.mp4 + - DOWNLOAD_PATH=/tmp/video-loop-source-downloads + - ZMQ_ENDPOINT=pub+connect:ipc:///tmp/zmq-sockets/input-video.ipc + - SOURCE_ID=city-traffic + - SYNC_OUTPUT=True + entrypoint: /opt/savant/adapters/gst/sources/video_loop.sh + module: build: context: . @@ -33,12 +27,9 @@ services: - ..:/opt/savant/samples command: samples/peoplenet_detector/demo.yml environment: - - ZMQ_SRC_ENDPOINT=ipc:///tmp/zmq-sockets/input-video.ipc - - ZMQ_SRC_TYPE=SUB - - ZMQ_SRC_BIND=True - - ZMQ_SINK_ENDPOINT=ipc:///tmp/zmq-sockets/output-video.ipc - - ZMQ_SINK_TYPE=PUB - - ZMQ_SINK_BIND=True + - ZMQ_SRC_ENDPOINT=sub+bind:ipc:///tmp/zmq-sockets/input-video.ipc + - ZMQ_SINK_ENDPOINT=pub+bind:ipc:///tmp/zmq-sockets/output-video.ipc + - FPS_PERIOD=1000 deploy: resources: reservations: @@ -46,41 +37,24 @@ services: - driver: nvidia count: 1 capabilities: [gpu] - rtsp-source: - image: ghcr.io/insight-platform/savant-adapters-gstreamer:latest - restart: unless-stopped - volumes: - - zmq_sockets:/tmp/zmq-sockets - links: - - "rtsp-server:rtsp-server" - depends_on: - city-traffic: - condition: service_healthy - environment: - - ZMQ_ENDPOINT=ipc:///tmp/zmq-sockets/input-video.ipc - - ZMQ_TYPE=PUB - - ZMQ_BIND=False - - RTSP_URI=rtsp://rtsp-server:8554/city-traffic - - SOURCE_ID=city-traffic-processed - - SYNC_OUTPUT=True - entrypoint: /opt/savant/adapters/gst/sources/rtsp.sh + always-on-sink: image: ghcr.io/insight-platform/savant-adapters-deepstream:latest restart: unless-stopped + ports: + - "554:554" # RTSP + - "1935:1935" # RTMP + - "888:888" # HLS + - "8889:8889" # WebRTC volumes: - zmq_sockets:/tmp/zmq-sockets - - ../stub_imgs:/stub_imgs - links: - - "rtsp-server:rtsp-server" - depends_on: - - rtsp-server + - ../assets/stub_imgs:/stub_imgs environment: - - ZMQ_ENDPOINT=ipc:///tmp/zmq-sockets/output-video.ipc - - ZMQ_TYPE=SUB - - ZMQ_BIND=False - - RTSP_URI=rtsp://rtsp-server:8554/city-traffic-processed - - SOURCE_ID=city-traffic-processed + - ZMQ_ENDPOINT=sub+connect:ipc:///tmp/zmq-sockets/output-video.ipc + - SOURCE_ID=city-traffic + - FRAMERATE=25/1 - STUB_FILE_LOCATION=/stub_imgs/smpte100_1280x900.jpeg + - DEV_MODE=True command: python -m adapters.ds.sinks.always_on_rtsp deploy: resources: diff --git a/samples/peoplenet_detector/overlay.py b/samples/peoplenet_detector/overlay.py index 1cf4bf08..4c2cd475 100644 --- a/samples/peoplenet_detector/overlay.py +++ b/samples/peoplenet_detector/overlay.py @@ -37,7 +37,7 @@ def __init__(self, **kwargs): self.counters_height, self.counters_font_thickness, self.font_face ) - sprites_path = Path(__file__).parent.resolve() / 'sprites' + sprites_path = Path(__file__).parent.resolve() / 'assets' / 'sprites' self.logo = load_sprite( str(sprites_path / 'logo_insight.png'), diff --git a/samples/line_crossing/.env b/samples/traffic_meter/.env similarity index 100% rename from samples/line_crossing/.env rename to samples/traffic_meter/.env diff --git a/samples/line_crossing/README.md b/samples/traffic_meter/README.md similarity index 72% rename from samples/line_crossing/README.md rename to samples/traffic_meter/README.md index 067870a8..d8bfee6c 100644 --- a/samples/line_crossing/README.md +++ b/samples/traffic_meter/README.md @@ -1,10 +1,10 @@ -# Line crossing demo +# Traffic meter demo -The pipeline detects when people cross a user-configured line and the direction of the crossing. The crossing events are attached to individual tracks, counted for each source separately and the counters are displayed on the frame. The crossing events are also stored with Graphite and displayed on a Graphana dashboard. +The pipeline detects when people cross a user-configured line and the direction of the crossing. The crossing events are attached to individual tracks, counted for each source separately and the counters are displayed on the frame. The crossing events are also stored with Graphite and displayed on a Grafana dashboard. Preview: -![](../line-crossing-loop.webp) +![](assets/traffic-meter-loop.webp) Tested on platforms: @@ -25,12 +25,12 @@ Run the demo: ```bash git clone https://github.com/insight-platform/Savant.git -cd Savant/samples/line_crossing +cd Savant/samples/traffic_meter git lfs pull # if you want to share with us where are you from # run the following command, it is completely optional -curl --silent -O -- https://hello.savant.video/line_crossing.html +curl --silent -O -- https://hello.savant.video/traffic_meter.html # if x86 ../../utils/check-environment-compatible && docker compose -f docker-compose.x86.yml up @@ -38,10 +38,10 @@ curl --silent -O -- https://hello.savant.video/line_crossing.html # if Jetson ../../utils/check-environment-compatible && docker compose -f docker-compose.l4t.yml up -# open 'rtsp://127.0.0.1:8554/town-centre-processed' in your player -# or visit 'http://127.0.0.1:8888/town-centre-processed/' (LL-HLS) +# open 'rtsp://127.0.0.1:554/stream' in your player +# or visit 'http://127.0.0.1:888/stream/' (LL-HLS) -# for pre-configured Graphana dashboard visit +# for pre-configured Grafana dashboard visit # http://127.0.0.1:3000/d/WM6WimE4z/entries-exits?orgId=1&refresh=5s # Ctrl+C to stop running the compose bundle @@ -50,4 +50,4 @@ curl --silent -O -- https://hello.savant.video/line_crossing.html cd ../.. ``` -To create a custom Graphana dashboard, sign in with `admin\admin` credentials. +To create a custom Grafana dashboard, sign in with `admin\admin` credentials. diff --git a/samples/traffic_meter/assets/traffic-meter-loop-400.webp b/samples/traffic_meter/assets/traffic-meter-loop-400.webp new file mode 100644 index 00000000..6e34bb6c --- /dev/null +++ b/samples/traffic_meter/assets/traffic-meter-loop-400.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:92115eea594a11a81b0e6f66b172d99d94efb73681187b7896f148d101daffcf +size 1753628 diff --git a/samples/traffic_meter/assets/traffic-meter-loop.webp b/samples/traffic_meter/assets/traffic-meter-loop.webp new file mode 100644 index 00000000..be72d881 --- /dev/null +++ b/samples/traffic_meter/assets/traffic-meter-loop.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:336395e016b89bae691be5637949cde30c97f46eae2f56f87b5eac8c4ec09e66 +size 13791888 diff --git a/samples/line_crossing/config_tracker_NvDCF_perf.yml b/samples/traffic_meter/config_tracker_NvDCF_perf.yml similarity index 100% rename from samples/line_crossing/config_tracker_NvDCF_perf.yml rename to samples/traffic_meter/config_tracker_NvDCF_perf.yml diff --git a/samples/traffic_meter/docker-compose.l4t.yml b/samples/traffic_meter/docker-compose.l4t.yml new file mode 100644 index 00000000..2555a30e --- /dev/null +++ b/samples/traffic_meter/docker-compose.l4t.yml @@ -0,0 +1,79 @@ +version: "3.3" +services: + + video-loop-source: + image: ghcr.io/insight-platform/savant-adapters-gstreamer-l4t:latest + restart: unless-stopped + volumes: + - zmq_sockets:/tmp/zmq-sockets + - /tmp/video-loop-source-downloads:/tmp/video-loop-source-downloads + environment: + - LOCATION=https://eu-central-1.linodeobjects.com/savant-data/traffic-meter/AVG-TownCentre.mp4 + - DOWNLOAD_PATH=/tmp/video-loop-source-downloads + - ZMQ_ENDPOINT=pub+connect:ipc:///tmp/zmq-sockets/input-video.ipc + - SOURCE_ID=town-centre-processed + - SYNC_OUTPUT=True + entrypoint: /opt/savant/adapters/gst/sources/video_loop.sh + + module: + build: + context: . + dockerfile: docker/Dockerfile.l4t + volumes: + - zmq_sockets:/tmp/zmq-sockets + - ../../models/traffic_meter:/models + - ../../downloads/traffic_meter:/downloads + - .:/opt/savant/samples/traffic_meter + command: samples/traffic_meter/module-${DETECTOR}.yml + environment: + - ZMQ_SRC_ENDPOINT=sub+bind:ipc:///tmp/zmq-sockets/input-video.ipc + - ZMQ_SINK_ENDPOINT=pub+bind:ipc:///tmp/zmq-sockets/output-video.ipc + - FPS_PERIOD=1000 + deploy: + resources: + reservations: + devices: + - driver: nvidia + count: 1 + capabilities: [gpu] + + always-on-sink: + image: ghcr.io/insight-platform/savant-adapters-deepstream-l4t:latest + restart: unless-stopped + ports: + - "554:554" # RTSP + - "1935:1935" # RTMP + - "888:888" # HLS + - "8889:8889" # WebRTC + volumes: + - zmq_sockets:/tmp/zmq-sockets + - ../assets/stub_imgs:/stub_imgs + environment: + - ZMQ_ENDPOINT=sub+connect:ipc:///tmp/zmq-sockets/output-video.ipc + - SOURCE_ID=town-centre-processed + - STUB_FILE_LOCATION=/stub_imgs/smpte100_1280x720.jpeg + - DEV_MODE=True + command: python -m adapters.ds.sinks.always_on_rtsp + deploy: + resources: + reservations: + devices: + - driver: nvidia + count: 1 + capabilities: [gpu] + graphite: + image: graphiteapp/graphite-statsd + grafana: + image: grafana/grafana-oss + volumes: + - ./grafana_datasources:/etc/grafana/provisioning/datasources/ + - ./grafana_dashboards:/etc/grafana/provisioning/dashboards/ + ports: + - "3000:3000" + environment: + - GF_AUTH_ANONYMOUS_ENABLED=true + - GF_AUTH_ANONYMOUS_ORG_NAME=Main Org. + - GF_AUTH_ANONYMOUS_ORG_ROLE=Viewer + +volumes: + zmq_sockets: diff --git a/samples/traffic_meter/docker-compose.x86.yml b/samples/traffic_meter/docker-compose.x86.yml new file mode 100644 index 00000000..7397e8db --- /dev/null +++ b/samples/traffic_meter/docker-compose.x86.yml @@ -0,0 +1,79 @@ +version: "3.3" +services: + + video-loop-source: + image: ghcr.io/insight-platform/savant-adapters-gstreamer:latest + restart: unless-stopped + volumes: + - zmq_sockets:/tmp/zmq-sockets + - /tmp/video-loop-source-downloads:/tmp/video-loop-source-downloads + environment: + - LOCATION=https://eu-central-1.linodeobjects.com/savant-data/traffic-meter/AVG-TownCentre.mp4 + - DOWNLOAD_PATH=/tmp/video-loop-source-downloads + - ZMQ_ENDPOINT=pub+connect:ipc:///tmp/zmq-sockets/input-video.ipc + - SOURCE_ID=town-centre-processed + - SYNC_OUTPUT=True + entrypoint: /opt/savant/adapters/gst/sources/video_loop.sh + + module: + build: + context: . + dockerfile: docker/Dockerfile.x86 + volumes: + - zmq_sockets:/tmp/zmq-sockets + - ../../models/traffic_meter:/models + - ../../downloads/traffic_meter:/downloads + - .:/opt/savant/samples/traffic_meter + command: samples/traffic_meter/module-${DETECTOR}.yml + environment: + - ZMQ_SRC_ENDPOINT=sub+bind:ipc:///tmp/zmq-sockets/input-video.ipc + - ZMQ_SINK_ENDPOINT=pub+bind:ipc:///tmp/zmq-sockets/output-video.ipc + - FPS_PERIOD=1000 + deploy: + resources: + reservations: + devices: + - driver: nvidia + count: 1 + capabilities: [gpu] + + always-on-sink: + image: ghcr.io/insight-platform/savant-adapters-deepstream:latest + restart: unless-stopped + ports: + - "554:554" # RTSP + - "1935:1935" # RTMP + - "888:888" # HLS + - "8889:8889" # WebRTC + volumes: + - zmq_sockets:/tmp/zmq-sockets + - ../assets/stub_imgs:/stub_imgs + environment: + - ZMQ_ENDPOINT=sub+connect:ipc:///tmp/zmq-sockets/output-video.ipc + - SOURCE_ID=town-centre-processed + - STUB_FILE_LOCATION=/stub_imgs/smpte100_1280x720.jpeg + - DEV_MODE=True + command: python -m adapters.ds.sinks.always_on_rtsp + deploy: + resources: + reservations: + devices: + - driver: nvidia + count: 1 + capabilities: [gpu] + graphite: + image: graphiteapp/graphite-statsd + grafana: + image: grafana/grafana-oss + volumes: + - ./grafana_datasources:/etc/grafana/provisioning/datasources/ + - ./grafana_dashboards:/etc/grafana/provisioning/dashboards/ + ports: + - "3000:3000" + environment: + - GF_AUTH_ANONYMOUS_ENABLED=true + - GF_AUTH_ANONYMOUS_ORG_NAME=Main Org. + - GF_AUTH_ANONYMOUS_ORG_ROLE=Viewer + +volumes: + zmq_sockets: diff --git a/samples/line_crossing/docker/Dockerfile.l4t b/samples/traffic_meter/docker/Dockerfile.l4t similarity index 100% rename from samples/line_crossing/docker/Dockerfile.l4t rename to samples/traffic_meter/docker/Dockerfile.l4t diff --git a/samples/line_crossing/docker/Dockerfile.x86 b/samples/traffic_meter/docker/Dockerfile.x86 similarity index 100% rename from samples/line_crossing/docker/Dockerfile.x86 rename to samples/traffic_meter/docker/Dockerfile.x86 diff --git a/samples/line_crossing/graphana_dashboards/dashboards.yml b/samples/traffic_meter/grafana_dashboards/dashboards.yml similarity index 100% rename from samples/line_crossing/graphana_dashboards/dashboards.yml rename to samples/traffic_meter/grafana_dashboards/dashboards.yml diff --git a/samples/line_crossing/graphana_dashboards/entries_exits_sum.json b/samples/traffic_meter/grafana_dashboards/entries_exits_sum.json similarity index 96% rename from samples/line_crossing/graphana_dashboards/entries_exits_sum.json rename to samples/traffic_meter/grafana_dashboards/entries_exits_sum.json index f54cfeb1..17e9e1a1 100644 --- a/samples/line_crossing/graphana_dashboards/entries_exits_sum.json +++ b/samples/traffic_meter/grafana_dashboards/entries_exits_sum.json @@ -115,7 +115,7 @@ }, "refCount": 0, "refId": "A", - "target": "stats_counts.savant.module.line_crossing.town-centre-processed.person.entry" + "target": "stats_counts.savant.module.traffic_meter.town-centre-processed.person.entry" }, { "datasource": { @@ -125,7 +125,7 @@ "hide": false, "refCount": 0, "refId": "B", - "target": "stats_counts.savant.module.line_crossing.town-centre-processed.person.exit" + "target": "stats_counts.savant.module.traffic_meter.town-centre-processed.person.exit" } ], "title": "Entries and exits", diff --git a/samples/line_crossing/graphana_datasources/graphite.yml b/samples/traffic_meter/grafana_datasources/graphite.yml similarity index 100% rename from samples/line_crossing/graphana_datasources/graphite.yml rename to samples/traffic_meter/grafana_datasources/graphite.yml diff --git a/samples/line_crossing/line_config.yml b/samples/traffic_meter/line_config.yml similarity index 100% rename from samples/line_crossing/line_config.yml rename to samples/traffic_meter/line_config.yml diff --git a/samples/line_crossing/line_crossing.py b/samples/traffic_meter/line_crossing.py similarity index 96% rename from samples/line_crossing/line_crossing.py rename to samples/traffic_meter/line_crossing.py index 03d19d94..41ed1af6 100644 --- a/samples/line_crossing/line_crossing.py +++ b/samples/traffic_meter/line_crossing.py @@ -4,7 +4,7 @@ from savant.gstreamer import Gst from savant.deepstream.meta.frame import NvDsFrameMeta from savant.deepstream.pyfunc import NvDsPyFuncPlugin -from samples.line_crossing.utils import TwoLinesCrossingTracker, Point, Direction +from samples.traffic_meter.utils import TwoLinesCrossingTracker, Point, Direction class ConditionalDetectorSkip(NvDsPyFuncPlugin): @@ -46,10 +46,10 @@ def __init__(self, **kwargs): self.cross_events = defaultdict(lambda: defaultdict(list)) # metrics namescheme - # savant.module.line_crossing.source_id.obj_class_label.exit - # savant.module.line_crossing.source_id.obj_class_label.entry + # savant.module.traffic_meter.source_id.obj_class_label.exit + # savant.module.traffic_meter.source_id.obj_class_label.entry self.stats_client = StatsClient( - 'graphite', 8125, prefix='savant.module.line_crossing' + 'graphite', 8125, prefix='savant.module.traffic_meter' ) def on_source_eos(self, source_id: str): diff --git a/samples/line_crossing/module-peoplenet.yml b/samples/traffic_meter/module-peoplenet.yml similarity index 80% rename from samples/line_crossing/module-peoplenet.yml rename to samples/traffic_meter/module-peoplenet.yml index 22c0d92b..5679d957 100644 --- a/samples/line_crossing/module-peoplenet.yml +++ b/samples/traffic_meter/module-peoplenet.yml @@ -1,4 +1,4 @@ -name: ${oc.env:MODULE_NAME, 'line-crossing'} +name: ${oc.env:MODULE_NAME, 'traffic-meter'} parameters: frame: @@ -15,7 +15,7 @@ parameters: output_frame: codec: h264 draw_func: - module: samples.line_crossing.overlay + module: samples.traffic_meter.overlay # specify the drawfunc's python class from the module class_name: Overlay kwargs: @@ -28,10 +28,10 @@ pipeline: elements: - element: pyfunc - module: samples.line_crossing.line_crossing + module: samples.traffic_meter.line_crossing class_name: ConditionalDetectorSkip kwargs: - config_path: ${oc.env:PROJECT_PATH}/samples/line_crossing/line_config.yml + config_path: ${oc.env:PROJECT_PATH}/samples/traffic_meter/line_config.yml # person detector - element: nvinfer@detector @@ -59,15 +59,15 @@ pipeline: - element: nvtracker properties: ll-lib-file: /opt/nvidia/deepstream/deepstream/lib/libnvds_nvmultiobjecttracker.so - ll-config-file: ${oc.env:PROJECT_PATH}/samples/line_crossing/config_tracker_NvDCF_perf.yml + ll-config-file: ${oc.env:PROJECT_PATH}/samples/traffic_meter/config_tracker_NvDCF_perf.yml tracker-width: 960 # 640 # must be a multiple of 32 tracker-height: 544 # 384 display-tracking-id: 0 - element: pyfunc - module: samples.line_crossing.line_crossing + module: samples.traffic_meter.line_crossing class_name: LineCrossing kwargs: - config_path: ${oc.env:PROJECT_PATH}/samples/line_crossing/line_config.yml + config_path: ${oc.env:PROJECT_PATH}/samples/traffic_meter/line_config.yml stale_track_del_period: 5000 target_obj_label: ${parameters.detected_object.label} diff --git a/samples/line_crossing/module-yolov8m.yml b/samples/traffic_meter/module-yolov8m.yml similarity index 78% rename from samples/line_crossing/module-yolov8m.yml rename to samples/traffic_meter/module-yolov8m.yml index c3aeaaec..62cb740e 100644 --- a/samples/line_crossing/module-yolov8m.yml +++ b/samples/traffic_meter/module-yolov8m.yml @@ -1,4 +1,4 @@ -name: ${oc.env:MODULE_NAME, 'line-crossing'} +name: ${oc.env:MODULE_NAME, 'traffic-meter'} parameters: frame: @@ -15,7 +15,7 @@ parameters: output_frame: codec: h264 draw_func: - module: samples.line_crossing.overlay + module: samples.traffic_meter.overlay # specify the drawfunc's python class from the module class_name: Overlay kwargs: @@ -30,10 +30,10 @@ pipeline: elements: - element: pyfunc - module: samples.line_crossing.line_crossing + module: samples.traffic_meter.line_crossing class_name: ConditionalDetectorSkip kwargs: - config_path: ${oc.env:PROJECT_PATH}/samples/line_crossing/line_config.yml + config_path: ${oc.env:PROJECT_PATH}/samples/traffic_meter/line_config.yml # detector - element: nvinfer@detector @@ -56,15 +56,15 @@ pipeline: - element: nvtracker properties: ll-lib-file: /opt/nvidia/deepstream/deepstream/lib/libnvds_nvmultiobjecttracker.so - ll-config-file: ${oc.env:PROJECT_PATH}/samples/line_crossing/config_tracker_NvDCF_perf.yml + ll-config-file: ${oc.env:PROJECT_PATH}/samples/traffic_meter/config_tracker_NvDCF_perf.yml tracker-width: 960 # 640 # must be a multiple of 32 tracker-height: 544 # 384 display-tracking-id: 0 - element: pyfunc - module: samples.line_crossing.line_crossing + module: samples.traffic_meter.line_crossing class_name: LineCrossing kwargs: - config_path: ${oc.env:PROJECT_PATH}/samples/line_crossing/line_config.yml + config_path: ${oc.env:PROJECT_PATH}/samples/traffic_meter/line_config.yml stale_track_del_period: 5000 target_obj_label: ${parameters.detected_object.label} diff --git a/samples/line_crossing/nvdsinfer_model_builder.patch b/samples/traffic_meter/nvdsinfer_model_builder.patch similarity index 100% rename from samples/line_crossing/nvdsinfer_model_builder.patch rename to samples/traffic_meter/nvdsinfer_model_builder.patch diff --git a/samples/line_crossing/overlay.py b/samples/traffic_meter/overlay.py similarity index 98% rename from samples/line_crossing/overlay.py rename to samples/traffic_meter/overlay.py index de48a1d3..43834969 100644 --- a/samples/line_crossing/overlay.py +++ b/samples/traffic_meter/overlay.py @@ -4,7 +4,7 @@ from savant.deepstream.drawfunc import NvDsDrawFunc from savant.deepstream.meta.frame import NvDsFrameMeta, BBox from savant.utils.artist import Position, Artist -from samples.line_crossing.utils import Direction, RandColorIterator +from samples.traffic_meter.utils import Direction, RandColorIterator class Overlay(NvDsDrawFunc): diff --git a/samples/line_crossing/utils.py b/samples/traffic_meter/utils.py similarity index 100% rename from samples/line_crossing/utils.py rename to samples/traffic_meter/utils.py