OpenVisualCloud / Smart-City-Sample

The smart city reference pipeline shows how to integrate various media building blocks, with analytics powered by the OpenVINO™ Toolkit, for traffic or stadium sensing, analytics and management tasks.
BSD 3-Clause "New" or "Revised" License
186 stars 80 forks source link

Face Recognition pipeline error #806

Closed dhaval-zala-aivid closed 2 years ago

dhaval-zala-aivid commented 2 years ago

Hii @nnshah1

Get the error in the face recognition pipeline. We are working with two different Smart-City-Sample. one with VA_SERVING_TAG="v0.3.0-alpha" and openvisualcloud/xeon-ubuntu1804-analytics-gst:20.10 where this pipeline works successfully. While in another Smart-City-Sample with VA_SERVING_TAG="v0.4.1-beta" and openvisualcloud/xeone3-ubuntu1804-analytics-gst:21.3 we got the error with the same pipeline...

Here is the pipeline..... { "name": "sec-unauthorized-access", "version": 2, "type": "GStreamer", "template": "rtspsrc udp-buffer-size=212992 name=source ! queue ! rtph264depay ! h264parse ! video/x-h264 ! tee name=t ! queue ! decodebin ! videoconvert name=\"videoconvert\" ! video/x-raw,format=BGRx ! queue leaky=upstream ! gvadetect ie-config=CPU_BIND_THREAD=NO model-instance-id=detection model=\"{models[face-detection-retail-0005][1][network]}\" model-proc=\"{models[face-detection-retail-0005][1][proc]}\" name=\"detection\" ! queue ! gvaclassify model=\"{models[facial_landmarks_35_adas_0002][1][network]}\" model-proc=\"{models[facial_landmarks_35_adas_0002][1][proc]}\" name=\"landmarks\" model-instance-id=landmarks ! queue ! gvaclassify model=\"{models[face_recognition][1][network]}\" model-proc=\"{models[face_recognition][1][proc]}\" name=\"recognition\" model-instance-id=recognition ! queue ! gvapython name=\"identify\" module=\"custom_transforms/vas_identify\" class=\"Identify\" ! queue ! gvametaconvert name=\"metaconvert\" ! queue ! gvametapublish method=mqtt name=\"destination\" ! tee name = tt ! queue ! gvawatermark ! videoconvert ! jpegenc ! gvapython name=\"capture\" module=\"custom_transforms/vas_identify\" class=\"Capture\" ! queue ! appsink name=appsink t. ! queue ! splitmuxsink max-size-time=300000000000 max-files=5 name=\"splitmuxsink\"", "description": "Object Detection Pipeline", "parameters": { "type": "object", "properties": { "identify": { "element": { "name":"identify", "property":"kwarg", "format":"json" }, "type": "object", "properties": { "enroll": { "type":"boolean" }, "gallery": { "type":"string" }, "threshold": { "type":"number" }, "label": { "type":"string" }, "index": { "type":"integer" }, "max_enrolled_tensors": { "type":"integer" } } }, "device": { "element": ["detection","landmarks","recognition"], "type": "string" }, "inference-interval": { "element": ["detection","landmarks","recognition"], "type": "integer", "minimum": 1, "maximum": 4294967295, "default": 1 }, "cpu-throughput-streams": { "element": ["detection","landmarks","recognition"], "type": "integer", "minimum": 0, "maximum": 3, "default": 1 }, "n-threads": { "element": "videoconvert", "type": "integer", "default": 1 }, "nireq": { "element": ["detection","landmarks","recognition"], "type": "integer", "minimum": 1, "maximum": 64, "default": 2 }, "recording_prefix": { "type":"string", "default":"recording" } } } }

Error is ..... Screenshot from 2022-02-19 09-58-44

Please suggest, a possible solution or reason why this would happen.

nnshah1 commented 2 years ago

@dhaval-zala-aivid Can you share the pipeline request? (the source, destination, parameters used to start the pipeline)

And also increase LOG_LEVEL to DEBUG (via environment variable) or log_level to DEBUG via vaserving.start in runva start

dhaval-zala-aivid commented 2 years ago

@nnshah1 pipeline request... `

VAServing.start({ 'model_dir': '/home/models', 'pipeline_dir': '/home/pipelines', 'max_running_pipelines': 1, 'log_level': 'DEBUG' })

source={ "type": "uri", "uri": uri, }

destination={ "type": "mqtt", "host": mqtthost, "clientid": algorithm, "topic": topic }

tags={ "sensor": sensor, "location": location, "algorithm": algorithmName, "office": { "lat": office[0], "lon": office[1] }, }

parameters = { "inference-interval": every_nth_frame, "recording_prefix": "/tmp/rec/" + sensor } parameters.update(options)

pipeline = VAServing.pipeline(self._pipeline, self._version)`

Logs after increasing log_level to DEBUG frpipelineerror

dhaval-zala-aivid commented 2 years ago

@nnshah1 Thank you for your support. I have replaced the value of EVERY_NTH_FRAME by 1, now the pipeline is running fine. Earlier EVERY_NTH_FRAME was 1.

dhaval-zala-aivid commented 2 years ago

@nnshah1

I got a new issue with the same pipeline and pipeline request that the processed avg_fps remains zero and elapsed_time is increasing continuously... Please suggest, a possible solution.

Screenshot from 2022-02-25 13-19-03

nnshah1 commented 2 years ago

This pipeline is remaining in the 'queued' state and so hasn't reached playing - are there multiple streams being handled by the same Pipeline Server instance? if so in the runva.py application I would double check the max running streams parameters - if it is set to 1 that could cause a pipeline to remain in queued state.

Another timing issue could be generation of kernels if running on GPU (takes an initialization time before running) -

dhaval-zala-aivid commented 2 years ago

@nnshah1

  1. We are running one pipeline Server instance for one stream only. That's why we set max_running_pipelines is 1.
  2. We are not running pipeline on GPU.
nnshah1 commented 2 years ago

With the latest DL Streamer Pipeline Server (https://github.com/dlstreamer/pipeline-server/releases/tag/v0.7.1-beta) - I'm able to run the following template:

"template": [
    "urisourcebin name=source ! decodebin ! videoconvert name=videoconvert ! video/x-raw,format=BGRx",
    " ! gvadetect model-instance-id=detection model={models[face-detection-adas-0001][1][network]} name=detection",
    " ! gvaclassify model={models[facial-landmarks-35-adas-0002][1][network]} model-proc={models[facial-landmarks-35-adas-0002][1][proc]} name=landmarks model-instance-id=landmarks",
    " ! gvaclassify model={models[face-reidentification-retail-0095][1][network]} model-proc={models[face-reidentification-retail-0095][1][proc]} name=recognition model-instance-id=recognition",
    " ! gvapython name=identify module=/home/object_identification/extensions/vas_identify.py class=Identify",
    " ! gvametaconvert name=metaconvert ! queue ! gvametapublish name=destination",
    " ! appsink name=appsink"
    ]

Is the error you are seeing specific to VA_SERVING_TAG="v0.4.1-beta" and openvisualcloud/xeone3-ubuntu1804-analytics-gst:21.3?

dhaval-zala-aivid commented 2 years ago

@nnshah1 Thank you for the suggestion. As of now, the pipeline is working but we don't know the RCA. We can close the issue.