In order to run FilterForward, you need the following:
- A base neural network (e.g., MobileNet), in Caffe, to generate feature vectors
- A microclassifier (MC) (lightweight binary classifier), in TensorFlow, which takes a feature vector as input
- A FilterForward configuration file
A microclassifier is a binary classifier which takes as input a feature vector consisting of a rectangular crop of the rows/columns of the activations generated by the base neural network. The output of the microclassifier should be a probability between 0 and 1
A microclassifier has the same constraints as any other TensorFlow model used in SAF in that it should be a "frozen" graph (with the weights and architecture in same file).
Each line in the FilterForward configuration file should either be:
- A comment prefixed by the character
"#" - A comma-separated list indicating the configuration a single microclassifier (see below)
Each non-comment row appends an additional layer to the hierarchy, and is defined by the following column format:
- Number of copies of this MC to run
- Layer to extract from the base DNN
- Feature crop x-min
- Feature crop y-min
- Feature crop x-max
- Feature crop y-max
- Path to MC model file
- Name of MC input layer
- Name of MC output layer
- Dimension of MC output layer
- MC threshold
- K-voting K
- IFF max buffer length
- IFF timeout
filterforward --config-dir <path to config dir> --ff-conf <path to FilterForward config file> --model <name of base DNN> --fields <fields to backhaul> --output-dir <path to output dir> --camera <name of camera>
Run filterforward -h to see additional options, such as neural network batch
size.