Mercurial Hosting > traffic-intelligence
diff python/storage.py @ 812:21f10332c72b
moved the classification parameters from tracking.cfg to a new classifier.cfg and made all classification parameters apparent
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Fri, 10 Jun 2016 17:07:36 -0400 |
parents | 180b6b0231c0 |
children | ef8795dba5ed |
line wrap: on
line diff
--- a/python/storage.py Fri Jun 10 15:44:08 2016 -0400 +++ b/python/storage.py Fri Jun 10 17:07:36 2016 -0400 @@ -1130,9 +1130,69 @@ # Utils to read .ini type text files for configuration, meta data... ######################### +class ClassifierParameters(VideoFilenameAddable): + 'Class for the parameters of object classifiers' + def loadConfigFile(self, filename): + from ConfigParser import ConfigParser + from os import path + + config = ConfigParser() + config.readfp(FakeSecHead(openCheck(filename))) + self.sectionHeader = config.sections()[0] + + self.pedBikeCarSVMFilename = config.get(self.sectionHeader, 'pbv-svm-filename') + self.bikeCarSVMFilename = config.get(self.sectionHeader, 'bv-svm-filename') + self.percentIncreaseCrop = config.getfloat(self.sectionHeader, 'percent-increase-crop') + self.minNPixels = config.getint(self.sectionHeader, 'min-npixels-crop') + x = config.getint(self.sectionHeader, 'hog-rescale-size') + self.hogRescaleSize = (x, x) + self.hogNOrientations = config.getint(self.sectionHeader, 'hog-norientations') + x = config.getint(self.sectionHeader, 'hog-npixels-cell') + self.hogNPixelsPerCell = (x, x) + x = config.getint(self.sectionHeader, 'hog-ncells-block') + self.hogNCellsPerBlock = (x, x) + + self.speedAggregationMethod = config.get(self.sectionHeader, 'speed-aggregation-method') + self.nFramesIgnoreAtEnds = config.getint(self.sectionHeader, 'nframes-ignore-at-ends') + self.speedAggregationQuantile = config.getint(self.sectionHeader, 'speed-aggregation-quantile') + self.minSpeedEquiprobable = config.getfloat(self.sectionHeader, 'min-speed-equiprobable') + self.maxPedestrianSpeed = config.getfloat(self.sectionHeader, 'max-ped-speed') + self.maxCyclistSpeed = config.getfloat(self.sectionHeader, 'max-cyc-speed') + self.meanPedestrianSpeed = config.getfloat(self.sectionHeader, 'mean-ped-speed') + self.stdPedestrianSpeed = config.getfloat(self.sectionHeader, 'std-ped-speed') + self.locationCyclistSpeed = config.getfloat(self.sectionHeader, 'cyc-speed-loc') + self.scaleCyclistSpeed = config.getfloat(self.sectionHeader, 'cyc-speed-scale') + self.meanVehicleSpeed = config.getfloat(self.sectionHeader, 'mean-veh-speed') + self.stdVehicleSpeed = config.getfloat(self.sectionHeader, 'std-veh-speed') + + def __init__(self, filename = None): + if filename is not None: + self.loadConfigFile(filename) + + def convertToFrames(self, frameRate, speedRatio = 3.6): + '''Converts parameters with a relationship to time in 'native' frame time + speedRatio is the conversion from the speed unit in the config file + to the distance per second + + ie param(config file) = speedRatio x fps x param(used in program) + eg km/h = 3.6 (m/s to km/h) x frame/s x m/frame''' + denominator = frameRate*speedRatio + #denominator2 = denominator**2 + self.minSpeedEquiprobable = self.minSpeedEquiprobable/denominator + self.maxPedestrianSpeed = self.maxPedestrianSpeed/denominator + self.maxCyclistSpeed = self.maxCyclistSpeed/denominator + self.meanPedestrianSpeed = self.meanPedestrianSpeed/denominator + self.stdPedestrianSpeed = self.stdPedestrianSpeed/denominator + self.meanVehicleSpeed = self.meanVehicleSpeed/denominator + self.stdVehicleSpeed = self.stdVehicleSpeed/denominator + # special case for the lognormal distribution + self.locationCyclistSpeed = self.locationCyclistSpeed-log(denominator) + #self.scaleCyclistSpeed = self.scaleCyclistSpeed + + class ProcessParameters(VideoFilenameAddable): '''Class for all parameters controlling data processing: input, - method parameters, etc. for tracking, classification and safety + method parameters, etc. for tracking and safety Note: framerate is already taken into account''' @@ -1163,23 +1223,8 @@ self.firstFrameNum = config.getint(self.sectionHeader, 'frame1') self.videoFrameRate = config.getfloat(self.sectionHeader, 'video-fps') - # Classification parameters - self.speedAggregationMethod = config.get(self.sectionHeader, 'speed-aggregation-method') - self.nFramesIgnoreAtEnds = config.getint(self.sectionHeader, 'nframes-ignore-at-ends') - self.speedAggregationQuantile = config.getint(self.sectionHeader, 'speed-aggregation-quantile') - self.minSpeedEquiprobable = config.getfloat(self.sectionHeader, 'min-speed-equiprobable') - self.minNPixels = config.getint(self.sectionHeader, 'min-npixels-crop') - self.pedBikeCarSVMFilename = config.get(self.sectionHeader, 'pbv-svm-filename') - self.bikeCarSVMFilename = config.get(self.sectionHeader, 'bv-svm-filename') - self.maxPedestrianSpeed = config.getfloat(self.sectionHeader, 'max-ped-speed') - self.maxCyclistSpeed = config.getfloat(self.sectionHeader, 'max-cyc-speed') - self.meanPedestrianSpeed = config.getfloat(self.sectionHeader, 'mean-ped-speed') - self.stdPedestrianSpeed = config.getfloat(self.sectionHeader, 'std-ped-speed') - self.locationCyclistSpeed = config.getfloat(self.sectionHeader, 'cyc-speed-loc') - self.scaleCyclistSpeed = config.getfloat(self.sectionHeader, 'cyc-speed-scale') - self.meanVehicleSpeed = config.getfloat(self.sectionHeader, 'mean-veh-speed') - self.stdVehicleSpeed = config.getfloat(self.sectionHeader, 'std-veh-speed') - + self.classifierFilename = config.get(self.sectionHeader, 'classifier-filename') + # Safety parameters self.maxPredictedSpeed = config.getfloat(self.sectionHeader, 'max-predicted-speed')/3.6/self.videoFrameRate self.predictionTimeHorizon = config.getfloat(self.sectionHeader, 'prediction-time-horizon')*self.videoFrameRate @@ -1198,26 +1243,6 @@ if filename is not None: self.loadConfigFile(filename) - def convertToFrames(self, speedRatio = 3.6): - '''Converts parameters with a relationship to time in 'native' frame time - speedRatio is the conversion from the speed unit in the config file - to the distance per second - - ie param(config file) = speedRatio x fps x param(used in program) - eg km/h = 3.6 (m/s to km/h) x frame/s x m/frame''' - denominator = self.videoFrameRate*speedRatio - denominator2 = denominator**2 - self.minSpeedEquiprobable = self.minSpeedEquiprobable/denominator - self.maxPedestrianSpeed = self.maxPedestrianSpeed/denominator - self.maxCyclistSpeed = self.maxCyclistSpeed/denominator - self.meanPedestrianSpeed = self.meanPedestrianSpeed/denominator - self.stdPedestrianSpeed = self.stdPedestrianSpeed/denominator - self.meanVehicleSpeed = self.meanVehicleSpeed/denominator - self.stdVehicleSpeed = self.stdVehicleSpeed/denominator - # special case for the lognormal distribution - self.locationCyclistSpeed = self.locationCyclistSpeed-log(denominator) - #self.scaleCyclistSpeed = self.scaleCyclistSpeed - class SceneParameters(object): def __init__(self, config, sectionName): from ConfigParser import NoOptionError