Training Media Server updates the training database. However, the training is not used in analysis operations until Media Server has synchronized with the database. Synchronization loads the data from the database into memory and makes it ready for use. Synchronization is necessary because several Media Servers can share a single database, and you can use any Media Server to perform training.
The default configuration ensures that analysis uses the latest training data, but you can customize Media Server for your use case.
The default configuration ensures that analysis uses the latest training data, no matter how often you train Media Server and how much training data you add to the database.
Before it starts a process
action that requires training data, Media Server synchronizes with the training database and waits for the synchronization to complete. This is because the SyncDatabase
parameter - available for face recognition, object recognition, and image classification tasks - has a default value of TRUE
.
Media Server also synchronizes with the database at regular intervals (by default, every second). You can configure the interval between each synchronization by setting the SyncInterval
parameter in the [Database]
section of the configuration file. This is important for processing video streams, because when you process a stream Media Server could continue running the same action for days or weeks. Automatic synchronization ensures that Media Server regularly loads the latest training without you having to intervene.
In some cases, you might want to control when Media Server synchronizes with the training database:
process
requests all use the same training. If you are processing discrete files, you might perform training in bulk and then process batches of files.To change the frequency at which Media Server automatically synchronizes with the database, or disable scheduled synchronization completely, set the parameter SyncInterval
in the [Database]
section of the configuration file.
To prevent Media Server synchronizing with the database before it starts a process
action, set SyncDatabase=False
in the relevant analysis tasks. With this setting, be aware that process
requests could use outdated training. This is especially likely if you add large amounts of training data to the database and then immediately start a process
action, because Media Server might not have finished training before it starts processing.
If you disable automatic synchronization but want to ensure that Media Server has synchronized with the latest training, run the SyncFaces
, SyncObjects
, and SyncClassifiers
actions before you send the process
action. These actions force Media Server to synchronize with the database. After they complete, you can be sure that Media Server is using the latest training data.
With automatic synchronization, described above, Media Server loads all training data into memory. If you have an extremely large training database that contains many face databases, object databases, and classifiers, this can consume a significant amount of memory.
You can remove all face databases, object databases, or classifiers from memory by setting SyncInterval=0
(to disable the automatic synchronization) and running the action UnsyncFaces
, UnsyncObjects
, or UnsyncClassifiers
.
You can then load the training you need using one of the following methods:
[TaskName]
section for your analysis tasks, set SyncDatabase=TRUE
. Media Server will load the training it needs to complete the tasks.[TaskName]
section for your analysis task, set SyncDatabase=FALSE
. Then, manually load the training data you need by running the actions SyncFaces
, SyncObjects
, and SyncClassifiers
. You can add the database
parameter to the SyncFaces
and SyncObjects
actions to choose which database to load into memory.
|