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}