.. _episodes: ********************************************** Organize Events with Episodes ********************************************** To monitor the real-time face identification in live videos, use the :guilabel:`Events` and :guilabel:`Episodes` tabs. Besides monitoring, both tabs allow you to access the history of identification events. This section is about the :guilabel:`Episodes`. .. seealso:: * :ref:`events` An episode is a set of identification events that feature faces of the same person, detected within a specific period of time. As events on the :guilabel:`Events` tab show up in an arbitrary order, a large number of miscellaneous events can make the work difficult and unproductive. With the episodes, the system uses AI to organize incoming events based on the faces similarity and detection time. This allows for easy processing of diverse events, even in large numbers. .. tip:: Search for faces through the event database and dossier database on the :guilabel:`Search` tab. .. tip:: To perform the face identification in archived videos, see :ref:`offline-video`. .. rubric:: In this chapter: .. contents:: :local: About Episodes ====================== An episode is a set of identification events that feature faces of the same person, detected within a certain period of time. There are two types of episodes: * LIVE: an episode is currently active, with more events to be possibly added. * Closed: an episode is closed, no events can be added. Episode Settings ======================= To configure the episodes, use the ``findface-security`` configuration file. You need the following parameters into the ``FFSECURITY`` section: * ``EPISODE_SEARCH_INTERVAL``: The period of time preceding an event, within which the system searches the biometric database for events with similar faces. If no such an event is found, the system creates a new episode. Otherwise, it picks up the most relevant event from a LIVE episode after sorting out the 100 most recent similar faces. .. note:: The threshold similarity in episodes differs from that for face verification. See :ref:`settings`. * ``EPISODE_MAX_DURATION``: The maximum episode duration in seconds. After this time, an episode automatically closes. * ``EPISODE_EVENT_TIMEOUT``: The maximum time in seconds since the last event has been added to an episode. After this time, an episode automatically closes. * ``EPISODE_KEEP_ONLY_BEST_EVENT``: When closing an episode, delete all events in it, except the one with the best face. Use this option to save disk space. .. code:: sudo vi /etc/findface-security/config.py ... FFSECURITY = { ... 'EPISODE_KEEP_ONLY_BEST_EVENT': True, 'EPISODE_SEARCH_INTERVAL': 60, 'EPISODE_MAX_DURATION': 300, 'EPISODE_EVENT_TIMEOUT': 30, ... } ... .. seealso:: To see episodes work, navigate to the :guilabel:`Episodes` tab. See :ref:`episodes` for details. Grant Rights for Episodes ============================== A user receives a notification of a new episode if they have rights for the first event. Viewing new events in the episode also requires proper rights. The right for an event consists of the rights for a corresponding camera and watch list. .. note:: To see unmatched events, you only need the rights for a camera. To manage rights of a role for the entire ``Episode`` entity, open permissions for this role and adjust the ``eventepisode`` permission. .. tip:: See :ref:`users`. |role_permissions_en| .. |role_permissions_en| image:: /_static/role_permissions_en.png :scale: 60% .. |role_permissions_ru| image:: /_static/role_permissions_ru.png :scale: 60% View Episodes ============================================================== You can find the list of episodes with filters and statistics on the :guilabel:`Episodes` tab. Once a face is detected, it is either added to an existing LIVE episode, or used as a starting point of a new episode. Each episode is assigned an identifier which can be later used to filter events and episodes. |episodes_en| .. |episodes_en| image:: /_static/episodes_en.png :scale: 50% .. |episodes_ru| image:: /_static/episodes_ru.png :scale: 50% When working with episodes, the following default filters may come in handy: * :guilabel:`Dossier`: display episodes only for a selected dossier. * :guilabel:`Watch lists`: display episodes only for a selected dossier category (watch list). .. note:: To view only unmatched faces on the episode list, select :guilabel:`Unmatched` in this filter. * :guilabel:`Matches`: display episodes only with/without matches, or all episodes. * :guilabel:`Acknowledged`: display only acknowledged/unacknowledged episodes, or all episodes. * :guilabel:`Cameras`: display only episodes from a selected camera. * :guilabel:`Camera groups`: display only episodes from a selected group of cameras. * :guilabel:`Start`, :guilabel:`End`: display only episodes that occurred within a certain time period. * :guilabel:`id`: display an episode with a given ID. You can also filter episodes by face liveness and face features (if applicable). To view the events added to an episode, click it on the list. You will be redirected to the :guilabel:`Events` tab with the corresponding episode ID set in the :guilabel:`Episode` filter: |episodes_events_en| .. |episodes_events_en| image:: /_static/episodes_events_en.png :scale: 50% .. |episodes_events_ru| image:: /_static/episodes_events_ru.png :scale: 50% Work with the :guilabel:`Events` tab as described in :ref:`events`. Event and Episode Acknowledging ======================================= To acknowledge an entire episode, click :guilabel:`Not accepted` for this episode on the list. As a result, all events in the episode will be automatically acknowledged, including those that are yet-to-appear (in the case of a LIVE episode). |accept_episode_en| .. |accept_episode_en| image:: /_static/accept_episode_en.png :scale: 70% .. |accept_episode_ru| image:: /_static/accept_episode_ru.png :scale: 70% An episode is also automatically acknowledged after acknowledging all its events one by one. Filter Events by Episode ID =============================== To display events by episode ID, either use the :guilabel:`id` filter on the :guilabel:`Episodes` tab or the :guilabel:`Episode ID` filter on the :guilabel:`Events` tab.