Create and Train a Classifier
This section describes how to create and train a classifier. For more information about the actions that are discussed, refer to the Media Server Reference.
To create and train a classifier
-
Create a new classifier with the action
CreateClassifier
.curl http://localhost:14000/action=CreateClassifier -F classifier=vehicles
-
Add classes to the classifier with the action
CreateClass
. Repeat this action for each class that you want to add.curl http://localhost:14000/action=CreateClass -F classifier=vehicles -F identifier=car
-
Add training images to a class with the action
AddClassImages
. Run this action as many times as necessary to add sufficient training images to each class.curl http://localhost:14000/action=AddClassImages -F classifier=vehicles -F identifier=car -F imagedata=@cars/1.jpg,cars/2.jpg
-
Choose the number of training iterations to run by setting the
iterations
training option with the actionSetClassifierTrainingOption
.curl http://localhost:14000/action=SetClassifierTrainingOption -F classifier=vehicles -F key=iterations -F value=1000
-
(Optional) To take snapshots of the classifier at regular intervals during training, set the
snapshot_frequency
training option. When you take snapshots, Media Server also sets aside images for evaluating the performance of the classifier. If you want to change the proportion of images that are set aside, you can set thevalidation_proportion
training option.curl http://localhost:14000/action=SetClassifierTrainingOption -F classifier=vehicles -F key=snapshot_frequency -F value=250
-
Train the classifier by running the action
BuildClassifier
:curl http://localhost:14000/action=BuildClassifier -F classifier=vehicles
This action is asynchronous, so Media Server returns a token. You can use the
QueueInfo
action to check the status of the request.When the
BuildClassifier
action has finished, you can use the classifier. If you did not enable snapshots, the training process is complete. -
If you enabled snapshots, test the performance of the classifier and select the snapshot to use.
-
Run the
ListClassifiers
action to list the snapshots that are available.curl http://localhost:14000/action=ListClassifiers
The response to this action includes an index number for each snapshot.
-
Run the
TestClassifierSnapshot
action for each snapshot that you want to evaluate. The action is asynchronous, so Media Server returns a token. You can use theQueueInfo
action to check the status of your request(s).curl http://localhost:14000/action=TestClassifierSnapshot -F classifier=vehicles -F snapshotindex=0
-
Review the results with the
GetClassifierSnapshotStatistics
action.curl http://localhost:14000/action=GetClassifierSnapshotStatistics -F classifier=vehicles
-
If one of the snapshots provides acceptable performance, select the snapshot by running the action
SelectClassifierSnapshot
.curl http://localhost:14000/action=SelectClassifierSnapshot -F classifier=vehicles -F snapshotindex=3
If none of the snapshots provides acceptable performance, you might need to add additional training data or run more training iterations.
-