comparison scripts/learn-motion-patterns.py @ 927:c030f735c594

added assignment of trajectories to prototypes and cleanup of insert queries
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Tue, 11 Jul 2017 17:56:23 -0400
parents acb5379c5fd7
children 584b9405e494
comparison
equal deleted inserted replaced
926:dbd81710d515 927:c030f735c594
22 parser.add_argument('--optimize', dest = 'optimizeCentroid', help = 'recompute centroid at each assignment', action = 'store_true') 22 parser.add_argument('--optimize', dest = 'optimizeCentroid', help = 'recompute centroid at each assignment', action = 'store_true')
23 parser.add_argument('--random', dest = 'randomInitialization', help = 'random initialization of clustering algorithm', action = 'store_true') 23 parser.add_argument('--random', dest = 'randomInitialization', help = 'random initialization of clustering algorithm', action = 'store_true')
24 parser.add_argument('--subsample', dest = 'positionSubsamplingRate', help = 'rate of position subsampling (1 every n positions)', type = int) 24 parser.add_argument('--subsample', dest = 'positionSubsamplingRate', help = 'rate of position subsampling (1 every n positions)', type = int)
25 parser.add_argument('--display', dest = 'display', help = 'display trajectories', action = 'store_true') 25 parser.add_argument('--display', dest = 'display', help = 'display trajectories', action = 'store_true')
26 parser.add_argument('--save-similarities', dest = 'saveSimilarities', help = 'save computed similarities (in addition to prototypes)', action = 'store_true') 26 parser.add_argument('--save-similarities', dest = 'saveSimilarities', help = 'save computed similarities (in addition to prototypes)', action = 'store_true')
27 #parser.add_argument('--save-matches', dest = 'saveMatches', help = 'save the matched prototype information', action = 'store_true') 27 parser.add_argument('--save-matches', dest = 'saveMatches', help = 'saves the assignments of the objects (not for features) to the prototypes', action = 'store_true')
28 #parser.add_argument('--assign', dest = 'assign', help = 'saves the assignments of the objects (not for features) to the prototypes', action = 'store_true') # default is train, but one could want only to assign the objects to the loaded prototypes without learning
28 29
29 args = parser.parse_args() 30 args = parser.parse_args()
30 31
31 # use cases 32 # use cases
32 # 1. learn proto from one file, save in same or another (with traj) 33 # 1. learn proto from one file, save in same or another (with traj)
68 prototypeIndices, labels = ml.prototypeCluster(trajectories, similarities, args.minSimilarity, lambda x,y : lcss.computeNormalized(x, y), args.minClusterSize, args.optimizeCentroid, args.randomInitialization, True, None) # this line can be called again without reinitializing similarities 69 prototypeIndices, labels = ml.prototypeCluster(trajectories, similarities, args.minSimilarity, lambda x,y : lcss.computeNormalized(x, y), args.minClusterSize, args.optimizeCentroid, args.randomInitialization, True, None) # this line can be called again without reinitializing similarities
69 70
70 clusterSizes = ml.computeClusterSizes(labels, prototypeIndices, -1) 71 clusterSizes = ml.computeClusterSizes(labels, prototypeIndices, -1)
71 print(clusterSizes) 72 print(clusterSizes)
72 73
73
74 prototypes = [moving.Prototype(args.databaseFilename, objects[i].getNum(), prototypeType, clusterSizes[i]) for i in prototypeIndices] 74 prototypes = [moving.Prototype(args.databaseFilename, objects[i].getNum(), prototypeType, clusterSizes[i]) for i in prototypeIndices]
75 if args.outputPrototypeDatabaseFilename is None: 75 if args.outputPrototypeDatabaseFilename is None:
76 outputPrototypeDatabaseFilename = args.databaseFilename 76 outputPrototypeDatabaseFilename = args.databaseFilename
77 else: 77 else:
78 outputPrototypeDatabaseFilename = args.outputPrototypeDatabaseFilename 78 outputPrototypeDatabaseFilename = args.outputPrototypeDatabaseFilename
79 storage.savePrototypesToSqlite(outputPrototypeDatabaseFilename, prototypes) 79 storage.savePrototypesToSqlite(outputPrototypeDatabaseFilename, prototypes)
80 80
81 if args.saveSimilarities: 81 if args.saveSimilarities:
82 np.savetxt(utils.removeExtension(args.databaseFilename)+'-prototype-similarities.txt.gz', similarities, '%.4f') 82 np.savetxt(utils.removeExtension(args.databaseFilename)+'-prototype-similarities.txt.gz', similarities, '%.4f')
83 83
84 # if args.saveMatches: 84 labelsToProtoIndices = {protoId: i for i, protoId in enumerate(prototypeIndices)}
85 # out = storage.openCheck(utils.removeExtension(args.databaseFilename)+'prototypes-matches.csv', 'w') 85 if args.saveMatches: # or args.assign
86 # for o in ojbects: 86 # save in the db that contained originally the data
87 # out.write('') 87 # retirer les assignations anterieures?
88 storage.savePrototypeAssignmentsToSqlite(args.databaseFilename, objects, [labelsToProtoIndices[l] for l in labels], prototypes)
88 89
89 if args.display: 90 if args.display:
90 from matplotlib.pyplot import figure, show, axis 91 from matplotlib.pyplot import figure, show, axis
91 figure() 92 figure()
92 for i,o in enumerate(objects): 93 for i,o in enumerate(objects):