Mercurial > hg > nsaunier > 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 |
