001package org.openimaj.demos.sandbox.tldcpp.videotld;
002
003import java.io.File;
004
005import org.openimaj.demos.sandbox.tldcpp.detector.DetectorCascade;
006
007/**
008 * Configuration options and defaults
009 * @author Sina Samangooei (ss@ecs.soton.ac.uk)
010 *
011 */
012public class TLDConfig {
013        
014        static class Settings{
015                private boolean m_useProportionalShift;
016                private boolean m_varianceFilterEnabled;
017                private boolean m_ensembleClassifierEnabled;
018                private boolean m_nnClassifierEnabled;
019                private boolean m_loadModel;
020                private boolean m_trackerEnabled;
021                private boolean m_selectManually;
022                private boolean m_learningEnabled;
023                private boolean m_showOutput;
024                private boolean m_showNotConfident;
025                private boolean m_showForeground;
026                private boolean m_alternating;
027                private boolean m_exportModelAfterRun;
028                private int m_minScale;
029                private int m_maxScale;
030                private int m_numFeatures;
031                private int m_numTrees;
032                private float m_thetaP;
033                private float m_thetaN;
034                private int m_minSize;
035                private int m_seed;
036                private double m_threshold;
037                private float m_proportionalShift;
038                private String m_modelExportFile;
039
040                public Settings(){
041                        m_useProportionalShift = true;
042                        m_varianceFilterEnabled = true;
043                        m_ensembleClassifierEnabled = true;
044                        m_nnClassifierEnabled = true;
045                        m_loadModel = false;
046                        m_trackerEnabled = true;
047                        m_selectManually = false;
048                        m_learningEnabled = true;
049                        m_showOutput = true;
050                        m_showNotConfident = true;
051                        m_showForeground = false;
052                        m_alternating = false;
053                        m_exportModelAfterRun = false;
054                        m_minScale = -10;
055                        m_maxScale = 10;
056                        m_numFeatures = 10;
057                        m_numTrees = 10;
058                        m_thetaP = 0.65f;
059                        m_thetaN = 0.5f;
060                        m_minSize = 25;
061                        m_seed = 0;
062                        m_threshold = 0.7;
063                        m_proportionalShift = 0.1f;
064                        m_modelExportFile = "model";
065                }
066        }
067        
068        /**
069         * initialise with defaults
070         * @param main
071         */
072        public static void tldConfig(TLDMain main) {
073                Settings m_settings = new Settings();
074                main.tld.trackerEnabled = m_settings.m_trackerEnabled;
075                main.showOutput = m_settings.m_showOutput;
076                main.printResults = new File("results.txt");
077                main.saveDir = new File("savedir");
078                main.threshold = m_settings.m_threshold;
079                main.showForeground = m_settings.m_showForeground;
080                main.showNotConfident = m_settings.m_showNotConfident;
081                main.tld.alternating = m_settings.m_alternating;
082                main.tld.learningEnabled = m_settings.m_learningEnabled;
083                main.selectManually = m_settings.m_selectManually;
084                main.exportModelAfterRun = m_settings.m_exportModelAfterRun;
085                main.modelExportFile = new File(m_settings.m_modelExportFile);
086                main.loadModel = m_settings.m_loadModel;
087                main.seed = m_settings.m_seed;
088
089                DetectorCascade detectorCascade = main.tld.detectorCascade;
090                detectorCascade.getVarianceFilter().enabled = m_settings.m_varianceFilterEnabled;
091                detectorCascade.getEnsembleClassifier().enabled = m_settings.m_ensembleClassifierEnabled;
092                detectorCascade.getNNClassifier().enabled = m_settings.m_nnClassifierEnabled;
093
094                // classifier
095                detectorCascade.useShift = m_settings.m_useProportionalShift;
096                detectorCascade.shift = m_settings.m_proportionalShift;
097                detectorCascade.minScale = m_settings.m_minScale;
098                detectorCascade.maxScale = m_settings.m_maxScale;
099                detectorCascade.minSize = m_settings.m_minSize;
100                detectorCascade.numTrees = m_settings.m_numTrees;
101                detectorCascade.numFeatures = m_settings.m_numFeatures;
102                detectorCascade.getNNClassifier().thetaTP = m_settings.m_thetaP;
103                detectorCascade.getNNClassifier().thetaFP = m_settings.m_thetaN;
104                
105        }
106
107}