comparison scripts/learn-motion-patterns.py @ 1032:d0e339359d8a

work in progress
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Tue, 19 Jun 2018 17:07:50 -0400
parents cc5cb04b04b0
children 8ffb3ae9f3d2
comparison
equal deleted inserted replaced
1031:045cb04ad7b8 1032:d0e339359d8a
73 similarities = -np.ones((nTrajectories, nTrajectories)) 73 similarities = -np.ones((nTrajectories, nTrajectories))
74 similarityFunc = lambda x,y : lcss.computeNormalized(x, y) 74 similarityFunc = lambda x,y : lcss.computeNormalized(x, y)
75 # the next line can be called again without reinitializing similarities 75 # the next line can be called again without reinitializing similarities
76 if args.learn: 76 if args.learn:
77 prototypeIndices = ml.prototypeCluster(trajectories, similarities, args.minSimilarity, similarityFunc, args.optimizeCentroid, args.randomInitialization, initialPrototypeIndices) 77 prototypeIndices = ml.prototypeCluster(trajectories, similarities, args.minSimilarity, similarityFunc, args.optimizeCentroid, args.randomInitialization, initialPrototypeIndices)
78 # assignment is done if explicitly passed as argument or if working on the same database (starting prototypes from scratch and assigning them)
79 else: 78 else:
80 prototypeIndices = initialPrototypeIndices 79 prototypeIndices = initialPrototypeIndices
81 80
82 if args.assign: 81 if args.assign:
82 if not args.learn and args.minClusterSize >= 1:
83 print('Warning: you did not learn the prototypes and you are using minimum cluster size of {}, which may lead to removing prototypes and assigning them to others'.format(args.minClusterSize))
83 prototypeIndices, labels = ml.assignToPrototypeClusters(trajectories, prototypeIndices, similarities, args.minSimilarity, similarityFunc, args.minClusterSize) 84 prototypeIndices, labels = ml.assignToPrototypeClusters(trajectories, prototypeIndices, similarities, args.minSimilarity, similarityFunc, args.minClusterSize)
84 clusterSizes = ml.computeClusterSizes(labels, prototypeIndices, -1) 85 clusterSizes = ml.computeClusterSizes(labels, prototypeIndices, -1)
85 print(clusterSizes) 86 print(clusterSizes)
86 87
87 if args.learn or args.assign: 88 if args.learn or args.assign:
88 prototypes = [] 89 prototypes = []
89 for i in prototypeIndices: 90 for i in prototypeIndices:
90 if args.assign: 91 if args.assign:
91 nMatchings = clusterSizes[i]-1 92 nMatchings = clusterSizes[i]-1
92 else: 93 #else:
93 nMatchings = 0 94 # nMatchings = 0
94 if i<len(initialPrototypes): 95 if i<len(initialPrototypes):
95 initialPrototypes[i].nMatchings += nMatchings 96 if args.assign:
97 initialPrototypes[i].nMatchings += nMatchings
96 prototypes.append(initialPrototypes[i]) 98 prototypes.append(initialPrototypes[i])
97 else: 99 else:
98 prototypes.append(moving.Prototype(args.databaseFilename, objects[i-len(initialPrototypes)].getNum(), trajectoryType, nMatchings)) 100 prototypes.append(moving.Prototype(args.databaseFilename, objects[i-len(initialPrototypes)].getNum(), trajectoryType, nMatchings))
99 101
100 if args.outputPrototypeDatabaseFilename is None: 102 if args.outputPrototypeDatabaseFilename is None: