.. _cameras: ***************************** Camera Management ***************************** To configure video-based object monitoring, add cameras to FindFace Multi, grouping them subject to their location. .. note:: Privileges to create camera groups and cameras are managed in user's permissions (see :ref:`users`). .. rubric:: In this chapter: .. contents:: :local: .. _camera-group: Create Camera Group ============================ .. tip:: A default preconfigured camera group is available in the system. To create a group of cameras, do the following: #. Navigate to the :guilabel:`Preferences` tab. Click :guilabel:`Camera Groups`. #. Click :guilabel:`+`. |create_camera_group_en| .. |create_camera_group_en| image:: /_static/create_camera_group_en.png :scale: 60% .. |create_camera_group_ru| image:: /_static/create_camera_group_ru.png :scale: 60% #. On the :guilabel:`Information` tab, specify the group name. Add a comment if needed. |camera_group_en| .. |camera_group_en| image:: /_static/camera_group_en.png :scale: 80% .. |camera_group_ru| image:: /_static/camera_group_ru.png :scale: 80% #. If you want to allocate a certain ``findface-video-worker`` instance to process video streams from the group, create or select one or several allocation labels. .. note:: To complete the allocation, list the labels in the ``/etc/findface-video-worker-gpu.ini`` (``/etc/findface-video-worker-cpu.ini``) configuration file. See :ref:`video-allocation` for details. #. If you want to deduplicate events from cameras that belong to the same group, i. e. exclude coinciding events, check :guilabel:`Deduplicate Events` and specify the deduplication interval (interval between 2 consecutive checks for event uniqueness). .. warning:: Use deduplication with extreme caution. If cameras within a group observe different scenes, some objects may be skipped. See :ref:`deduplication` for details. #. By default, video from all camera groups is processed using the :ref:`generic confidence threshold `. To set an individual threshold for the camera group, check :guilabel:`Confidence Threshold` and specify the threshold value. .. include:: /_inclusions/threshold_important.rst #. Check :guilabel:`Active`. #. Click :guilabel:`Save`. #. On the :guilabel:`Permissions` tab, assign privileges on the camera group, specifying which user roles are allowed to change/view the camera group settings. |camera_group_permissions_en| .. |camera_group_permissions_en| image:: /_static/camera_group_permissions_en.png :scale: 80% .. |camera_group_permissions_ru| image:: /_static/camera_group_permissions_ru.png :scale: 80% #. Click :guilabel:`Save`. .. _add-camera: Add Camera ==================================== To add a camera, do the following: #. Navigate to the :guilabel:`Cameras` tab. #. Click :guilabel:`+`. |create_camera_en| .. |create_camera_en| image:: /_static/create_camera_en.png :scale: 60% .. |create_camera_ru| image:: /_static/create_camera_ru.png :scale: 60% #. On the :guilabel:`Settings` -> :guilabel:`Main` tab, enter the general camera information: |camera_en| .. |camera_en| image:: /_static/camera_en.png :scale: 80% .. |camera_ru| image:: /_static/camera_ru.png :scale: 80% * Specify the camera name. * Add the camera to a camera group. * Specify the camera URL (:guilabel:`Stream`). If the camera is :guilabel:`ONVIF`, select it from the list of detected devices to automatically load available settings and streams. .. note:: A camera object can also be used for integrating an edge device. :ref:`Learn more `. * If necessary, add a comment. * Check :guilabel:`Active`. #. On the :guilabel:`Settings` -> :guilabel:`Advanced` tab, fine-tune the camera: |camera_advanced_en| .. |camera_advanced_en| image:: /_static/camera_advanced_en.png :scale: 60% .. |camera_advanced_ru| image:: /_static/camera_advanced_ru.png :scale: 60% * Check detectors that you want to enable on this camera: faces, bodies, cars. * If needed, change the video orientation. .. important:: Be aware that the ``findface-security`` server rotates the video using post-processing tools. It can negatively affect performance. Rotate the video via the camera functionality wherever possible. * :guilabel:`Timeout in ms`: Specify the timeout in milliseconds for posting detected objects. * :guilabel:`Retrieve timestamps from stream`: Check to retrieve and post timestamps from the video stream. Uncheck the option to post the current date and time. * :guilabel:`Add to timestamps`: Add the specified number of seconds to timestamps from the stream. * :guilabel:`FFMPEG format`: Pass FFMPEG format (mxg, flv, etc.) if it cannot be detected automatically. * :guilabel:`FFMPEG parameters`: FFMPEG options for the video stream in the key-value format, for example, [“rtsp_transpotr=tcp”, “ss=00:20:00”]. * :guilabel:`Imotion threshold`: Minimum motion intensity to be detected by the motion detector. * :guilabel:`Verify SSL`: Check to enable verification of the server SSL certificate when the object tracker posts objects to the server over https. Uncheck the option if you use a self-signed certificate. #. (Optional) On the :guilabel:`GEO` tab, specify the camera geographical location. |camera_geo_en| .. |camera_geo_en| image:: /_static/camera_geo_en.png :scale: 80% .. |camera_geo_ru| image:: /_static/camera_geo_ru.png :scale: 80% #. On the :guilabel:`Analytics` tab, specify settings for each object type detector. |camera_analytics_en| .. |camera_analytics_en| image:: /_static/camera_analytics_en.png :scale: 60% .. |camera_analytics_ru| image:: /_static/camera_analytics_ru.png :scale: 60% * :guilabel:`Minimum object snapshot quality`: Minimum quality of an object snapshot to post. Do not change the default value without consulting with our technical experts (support@ntechlab.com). * :guilabel:`Minimum object size`: Minimum object size in pixels to post. * :guilabel:`Maximum object size`: Maximum object size in pixels to post. * :guilabel:`Compression quality`: Full frame compression quality. * :guilabel:`Offline mode`: Offline mode. Enable posting one snapshot of the best quality per entire track for each object. * :guilabel:`Time interval`: Time interval in seconds (integer or decimal) within which the object tracker picks up the best snapshot in the real-time mode. * :guilabel:`Post first object immediately`: Check to post the first object snapshot from a track immediately after it passes through the quality, size, and ROI filters, without waiting for the first ``Time interval`` to complete. The way the subsequent snapshots are posted will depend on the ``Post best snapshot`` value. Uncheck the option to post the first object snapshot only after the first ``Time interval`` completes. * :guilabel:`Post best snapshot`: Check to post the best snapshot obtained within each ``Time interval`` in the real-time mode, regardless of its quality. Uncheck the option to post the best snapshot only if its quality has improved compared to the previously posted snapshot. #. Click :guilabel:`Apply changes`. #. Specify the region of tracking within the camera field (:guilabel:`General` -> :guilabel:`Region of Tracking`) and detection zones (:guilabel:`Regions of Interest`) for each object type detector if necessary. Click :guilabel:`Apply changes`. |camera_tracking_en| .. |camera_tracking_en| image:: /_static/camera_tracking_en.png :scale: 70% .. |camera_tracking_ru| image:: /_static/camera_tracking_ru.png :scale: 70% |camera_zone_en| .. |camera_zone_en| image:: /_static/camera_zone_en.png :scale: 70% .. |camera_zone_ru| image:: /_static/camera_zone_ru.png :scale: 70% .. note:: Each created camera is associated with a so-called job, a video processing task that contains configuration settings and stream data and is assigned to ``findface-video-worker``. This task can be restarted (see :ref:`monitor-camera`). .. _monitor-camera: Monitor Camera Operation ============================ To monitor the operation of cameras, navigate to the :guilabel:`Cameras` tab. |monitor_cameras_en| .. |monitor_cameras_en| image:: /_static/monitor_cameras_en.png :scale: 55% .. |monitor_cameras_ru| image:: /_static/monitor_cameras_ru.png :scale: 55% Camera statuses: * Green: the video stream is being processed without errors. * Yellow: the video stream is being processed for less than 30 seconds, or one or more errors occurred when posting an object. * Red: the video stream cannot be processed. * Grey: camera disabled. .. tip:: You can configure the yellow and red statuses based on the portion of dropped frames and failed object postings. To do so, modify the following parameters in the ``/etc/findface-security/config.py`` configuration file: .. code:: sudo vi /etc/findface-security/config.py FFSECURITY = { ... # max camera frames_dropped percent 'MAX_CAMERA_DROPPED_FRAMES': {'yellow': 0.1, 'red': 0.3}, # max camera objects_failed percent 'MAX_CAMERA_FAILED_FACES': {'yellow': 0.1, 'red': 0.3}, ... } Each created camera is associated with a so called job, a video processing task that contains configuration settings and stream data and is assigned to ``findface-video-worker``. This task can be restarted. To restart a job, click |restart| in the :guilabel:`Action` column. In this case, the number of errors will be reset to ``0``. .. |restart| image:: /_static/restart_button.png :scale: 60% With a large number of cameras in the system, use the following filters: * :guilabel:`Camera groups`, * :guilabel:`Active`, * :guilabel:`Status`. For each camera, you will be provided with complete statistics such as current session duration, the number of successfully posted objects, the number of objects processed with errors after the last job restart, the number of frame drops, and other data. To consult these data, click the camera and go to the :guilabel:`Camera Info` tab. |camera_view_en| .. |camera_view_en| image:: /_static/camera_view_en.png :scale: 60% .. |camera_view_ru| image:: /_static/camera_view_ru.png :scale: 60% .. seealso:: * :ref:`video-allocation` * :ref:`deduplication` * :ref:`video-config`