Mercurial Hosting > traffic-intelligence
comparison 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 |
comparison
equal
deleted
inserted
replaced
810:082a5c2685f4 | 812:21f10332c72b |
---|---|
1128 | 1128 |
1129 ######################### | 1129 ######################### |
1130 # Utils to read .ini type text files for configuration, meta data... | 1130 # Utils to read .ini type text files for configuration, meta data... |
1131 ######################### | 1131 ######################### |
1132 | 1132 |
1133 class ClassifierParameters(VideoFilenameAddable): | |
1134 'Class for the parameters of object classifiers' | |
1135 def loadConfigFile(self, filename): | |
1136 from ConfigParser import ConfigParser | |
1137 from os import path | |
1138 | |
1139 config = ConfigParser() | |
1140 config.readfp(FakeSecHead(openCheck(filename))) | |
1141 self.sectionHeader = config.sections()[0] | |
1142 | |
1143 self.pedBikeCarSVMFilename = config.get(self.sectionHeader, 'pbv-svm-filename') | |
1144 self.bikeCarSVMFilename = config.get(self.sectionHeader, 'bv-svm-filename') | |
1145 self.percentIncreaseCrop = config.getfloat(self.sectionHeader, 'percent-increase-crop') | |
1146 self.minNPixels = config.getint(self.sectionHeader, 'min-npixels-crop') | |
1147 x = config.getint(self.sectionHeader, 'hog-rescale-size') | |
1148 self.hogRescaleSize = (x, x) | |
1149 self.hogNOrientations = config.getint(self.sectionHeader, 'hog-norientations') | |
1150 x = config.getint(self.sectionHeader, 'hog-npixels-cell') | |
1151 self.hogNPixelsPerCell = (x, x) | |
1152 x = config.getint(self.sectionHeader, 'hog-ncells-block') | |
1153 self.hogNCellsPerBlock = (x, x) | |
1154 | |
1155 self.speedAggregationMethod = config.get(self.sectionHeader, 'speed-aggregation-method') | |
1156 self.nFramesIgnoreAtEnds = config.getint(self.sectionHeader, 'nframes-ignore-at-ends') | |
1157 self.speedAggregationQuantile = config.getint(self.sectionHeader, 'speed-aggregation-quantile') | |
1158 self.minSpeedEquiprobable = config.getfloat(self.sectionHeader, 'min-speed-equiprobable') | |
1159 self.maxPedestrianSpeed = config.getfloat(self.sectionHeader, 'max-ped-speed') | |
1160 self.maxCyclistSpeed = config.getfloat(self.sectionHeader, 'max-cyc-speed') | |
1161 self.meanPedestrianSpeed = config.getfloat(self.sectionHeader, 'mean-ped-speed') | |
1162 self.stdPedestrianSpeed = config.getfloat(self.sectionHeader, 'std-ped-speed') | |
1163 self.locationCyclistSpeed = config.getfloat(self.sectionHeader, 'cyc-speed-loc') | |
1164 self.scaleCyclistSpeed = config.getfloat(self.sectionHeader, 'cyc-speed-scale') | |
1165 self.meanVehicleSpeed = config.getfloat(self.sectionHeader, 'mean-veh-speed') | |
1166 self.stdVehicleSpeed = config.getfloat(self.sectionHeader, 'std-veh-speed') | |
1167 | |
1168 def __init__(self, filename = None): | |
1169 if filename is not None: | |
1170 self.loadConfigFile(filename) | |
1171 | |
1172 def convertToFrames(self, frameRate, speedRatio = 3.6): | |
1173 '''Converts parameters with a relationship to time in 'native' frame time | |
1174 speedRatio is the conversion from the speed unit in the config file | |
1175 to the distance per second | |
1176 | |
1177 ie param(config file) = speedRatio x fps x param(used in program) | |
1178 eg km/h = 3.6 (m/s to km/h) x frame/s x m/frame''' | |
1179 denominator = frameRate*speedRatio | |
1180 #denominator2 = denominator**2 | |
1181 self.minSpeedEquiprobable = self.minSpeedEquiprobable/denominator | |
1182 self.maxPedestrianSpeed = self.maxPedestrianSpeed/denominator | |
1183 self.maxCyclistSpeed = self.maxCyclistSpeed/denominator | |
1184 self.meanPedestrianSpeed = self.meanPedestrianSpeed/denominator | |
1185 self.stdPedestrianSpeed = self.stdPedestrianSpeed/denominator | |
1186 self.meanVehicleSpeed = self.meanVehicleSpeed/denominator | |
1187 self.stdVehicleSpeed = self.stdVehicleSpeed/denominator | |
1188 # special case for the lognormal distribution | |
1189 self.locationCyclistSpeed = self.locationCyclistSpeed-log(denominator) | |
1190 #self.scaleCyclistSpeed = self.scaleCyclistSpeed | |
1191 | |
1192 | |
1133 class ProcessParameters(VideoFilenameAddable): | 1193 class ProcessParameters(VideoFilenameAddable): |
1134 '''Class for all parameters controlling data processing: input, | 1194 '''Class for all parameters controlling data processing: input, |
1135 method parameters, etc. for tracking, classification and safety | 1195 method parameters, etc. for tracking and safety |
1136 | 1196 |
1137 Note: framerate is already taken into account''' | 1197 Note: framerate is already taken into account''' |
1138 | 1198 |
1139 def loadConfigFile(self, filename): | 1199 def loadConfigFile(self, filename): |
1140 from ConfigParser import ConfigParser | 1200 from ConfigParser import ConfigParser |
1161 self.undistortedImageMultiplication = config.getfloat(self.sectionHeader, 'undistorted-size-multiplication') | 1221 self.undistortedImageMultiplication = config.getfloat(self.sectionHeader, 'undistorted-size-multiplication') |
1162 self.undistort = config.getboolean(self.sectionHeader, 'undistort') | 1222 self.undistort = config.getboolean(self.sectionHeader, 'undistort') |
1163 self.firstFrameNum = config.getint(self.sectionHeader, 'frame1') | 1223 self.firstFrameNum = config.getint(self.sectionHeader, 'frame1') |
1164 self.videoFrameRate = config.getfloat(self.sectionHeader, 'video-fps') | 1224 self.videoFrameRate = config.getfloat(self.sectionHeader, 'video-fps') |
1165 | 1225 |
1166 # Classification parameters | 1226 self.classifierFilename = config.get(self.sectionHeader, 'classifier-filename') |
1167 self.speedAggregationMethod = config.get(self.sectionHeader, 'speed-aggregation-method') | 1227 |
1168 self.nFramesIgnoreAtEnds = config.getint(self.sectionHeader, 'nframes-ignore-at-ends') | |
1169 self.speedAggregationQuantile = config.getint(self.sectionHeader, 'speed-aggregation-quantile') | |
1170 self.minSpeedEquiprobable = config.getfloat(self.sectionHeader, 'min-speed-equiprobable') | |
1171 self.minNPixels = config.getint(self.sectionHeader, 'min-npixels-crop') | |
1172 self.pedBikeCarSVMFilename = config.get(self.sectionHeader, 'pbv-svm-filename') | |
1173 self.bikeCarSVMFilename = config.get(self.sectionHeader, 'bv-svm-filename') | |
1174 self.maxPedestrianSpeed = config.getfloat(self.sectionHeader, 'max-ped-speed') | |
1175 self.maxCyclistSpeed = config.getfloat(self.sectionHeader, 'max-cyc-speed') | |
1176 self.meanPedestrianSpeed = config.getfloat(self.sectionHeader, 'mean-ped-speed') | |
1177 self.stdPedestrianSpeed = config.getfloat(self.sectionHeader, 'std-ped-speed') | |
1178 self.locationCyclistSpeed = config.getfloat(self.sectionHeader, 'cyc-speed-loc') | |
1179 self.scaleCyclistSpeed = config.getfloat(self.sectionHeader, 'cyc-speed-scale') | |
1180 self.meanVehicleSpeed = config.getfloat(self.sectionHeader, 'mean-veh-speed') | |
1181 self.stdVehicleSpeed = config.getfloat(self.sectionHeader, 'std-veh-speed') | |
1182 | |
1183 # Safety parameters | 1228 # Safety parameters |
1184 self.maxPredictedSpeed = config.getfloat(self.sectionHeader, 'max-predicted-speed')/3.6/self.videoFrameRate | 1229 self.maxPredictedSpeed = config.getfloat(self.sectionHeader, 'max-predicted-speed')/3.6/self.videoFrameRate |
1185 self.predictionTimeHorizon = config.getfloat(self.sectionHeader, 'prediction-time-horizon')*self.videoFrameRate | 1230 self.predictionTimeHorizon = config.getfloat(self.sectionHeader, 'prediction-time-horizon')*self.videoFrameRate |
1186 self.collisionDistance = config.getfloat(self.sectionHeader, 'collision-distance') | 1231 self.collisionDistance = config.getfloat(self.sectionHeader, 'collision-distance') |
1187 self.crossingZones = config.getboolean(self.sectionHeader, 'crossing-zones') | 1232 self.crossingZones = config.getboolean(self.sectionHeader, 'crossing-zones') |
1195 self.useFeaturesForPrediction = config.getboolean(self.sectionHeader, 'use-features-prediction') | 1240 self.useFeaturesForPrediction = config.getboolean(self.sectionHeader, 'use-features-prediction') |
1196 | 1241 |
1197 def __init__(self, filename = None): | 1242 def __init__(self, filename = None): |
1198 if filename is not None: | 1243 if filename is not None: |
1199 self.loadConfigFile(filename) | 1244 self.loadConfigFile(filename) |
1200 | |
1201 def convertToFrames(self, speedRatio = 3.6): | |
1202 '''Converts parameters with a relationship to time in 'native' frame time | |
1203 speedRatio is the conversion from the speed unit in the config file | |
1204 to the distance per second | |
1205 | |
1206 ie param(config file) = speedRatio x fps x param(used in program) | |
1207 eg km/h = 3.6 (m/s to km/h) x frame/s x m/frame''' | |
1208 denominator = self.videoFrameRate*speedRatio | |
1209 denominator2 = denominator**2 | |
1210 self.minSpeedEquiprobable = self.minSpeedEquiprobable/denominator | |
1211 self.maxPedestrianSpeed = self.maxPedestrianSpeed/denominator | |
1212 self.maxCyclistSpeed = self.maxCyclistSpeed/denominator | |
1213 self.meanPedestrianSpeed = self.meanPedestrianSpeed/denominator | |
1214 self.stdPedestrianSpeed = self.stdPedestrianSpeed/denominator | |
1215 self.meanVehicleSpeed = self.meanVehicleSpeed/denominator | |
1216 self.stdVehicleSpeed = self.stdVehicleSpeed/denominator | |
1217 # special case for the lognormal distribution | |
1218 self.locationCyclistSpeed = self.locationCyclistSpeed-log(denominator) | |
1219 #self.scaleCyclistSpeed = self.scaleCyclistSpeed | |
1220 | 1245 |
1221 class SceneParameters(object): | 1246 class SceneParameters(object): |
1222 def __init__(self, config, sectionName): | 1247 def __init__(self, config, sectionName): |
1223 from ConfigParser import NoOptionError | 1248 from ConfigParser import NoOptionError |
1224 from ast import literal_eval | 1249 from ast import literal_eval |