Mercurial Hosting > traffic-intelligence
diff scripts/train-object-classification.py @ 961:ec1682ed999f
added computation of confusion matrix and improved default parameter for block normalization for SVM classification
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Sun, 05 Nov 2017 23:45:47 -0500 |
parents | 238008f81c16 |
children | 2757efeabbb4 |
line wrap: on
line diff
--- a/scripts/train-object-classification.py Fri Oct 20 16:59:32 2017 -0400 +++ b/scripts/train-object-classification.py Sun Nov 05 23:45:47 2017 -0500 @@ -18,18 +18,11 @@ parser.add_argument('--nu', dest = 'nu', help = 'SVM nu', default = 0, type = int) parser.add_argument('--svmp', dest = 'svmP', help = 'SVM p', default = 0, type = int) parser.add_argument('--cfg', dest = 'configFilename', help = 'name of the classifier configuration file', required = True) -# parser.add_argument('-s', dest = 'rescaleSize', help = 'rescale size of image samples', default = 64, type = int) -# parser.add_argument('-o', dest = 'nOrientations', help = 'number of orientations in HoG', default = 9, type = int) -# parser.add_argument('-p', dest = 'nPixelsPerCell', help = 'number of pixels per cell', default = 8, type = int) -# parser.add_argument('-c', dest = 'nCellsPerBlock', help = 'number of cells per block', default = 2, type = int) +parser.add_argument('--compute-classifications', dest = 'computeClassifications', help = 'compute the confusion matrix on the training data', action = 'store_true') args = parser.parse_args() classifierParams = storage.ClassifierParameters(args.configFilename) -# rescaleSize = (args.rescaleSize, args.rescaleSize) -# nPixelsPerCell = (args.nPixelsPerCell, args.nPixelsPerCell) -# nCellsPerBlock = (args.nCellsPerBlock, args.nCellsPerBlock) - imageDirectories = {'pedestrian': args.directoryName + "/Pedestrians/", 'bicycle': args.directoryName + "/Cyclists/", 'car': args.directoryName + "/Vehicles/"} @@ -57,20 +50,28 @@ # Training the Support Vector Machine print "Training Pedestrian-Cyclist-Vehicle Model" model = ml.SVM(args.svmType, args.kernelType, args.degree, args.gamma, args.coef0, args.cvalue, args.nu, args.svmP) -model.train(np.concatenate(trainingSamplesPBV.values()), np.concatenate(trainingLabelsPBV.values())) +classifications = model.train(np.concatenate(trainingSamplesPBV.values()), np.concatenate(trainingLabelsPBV.values()), True) +if args.computeClassifications: + print(classifications) model.save(args.directoryName + "/modelPBV.xml") print "Training Cyclist-Vehicle Model" model = ml.SVM(args.svmType, args.kernelType, args.degree, args.gamma, args.coef0, args.cvalue, args.nu, args.svmP) -model.train(np.concatenate(trainingSamplesBV.values()), np.concatenate(trainingLabelsBV.values())) +classifications = model.train(np.concatenate(trainingSamplesBV.values()), np.concatenate(trainingLabelsBV.values()), True) +if args.computeClassifications: + print(classifications) model.save(args.directoryName + "/modelBV.xml") print "Training Pedestrian-Cyclist Model" model = ml.SVM(args.svmType, args.kernelType, args.degree, args.gamma, args.coef0, args.cvalue, args.nu, args.svmP) -model.train(np.concatenate(trainingSamplesPB.values()), np.concatenate(trainingLabelsPB.values())) +classifications = model.train(np.concatenate(trainingSamplesPB.values()), np.concatenate(trainingLabelsPB.values()), True) +if args.computeClassifications: + print(classifications) model.save(args.directoryName + "/modelPB.xml") print "Training Pedestrian-Vehicle Model" model = ml.SVM(args.svmType, args.kernelType, args.degree, args.gamma, args.coef0, args.cvalue, args.nu, args.svmP) -model.train(np.concatenate(trainingSamplesPV.values()), np.concatenate(trainingLabelsPV.values())) +classifications = model.train(np.concatenate(trainingSamplesPV.values()), np.concatenate(trainingLabelsPV.values()), True) +if args.computeClassifications: + print(classifications) model.save(args.directoryName + "/modelPV.xml")