more clustering
Signed-off-by: James Ketrenos <james_git@ketrenos.com>
This commit is contained in:
parent
0e7dbd5239
commit
3b3c915080
@ -193,17 +193,36 @@ def update_face_identity(identities, face, closest):
|
|||||||
|
|
||||||
def cluster_faces(face):
|
def cluster_faces(face):
|
||||||
identities = []
|
identities = []
|
||||||
|
perc = -1
|
||||||
for i, face in enumerate(faces):
|
for i, face in enumerate(faces):
|
||||||
print(f'Clustering {i+1}/{len(faces)}')
|
new_perc = int(100 * (i+1) / len(faces))
|
||||||
|
if new_perc != perc:
|
||||||
|
perc = new_perc
|
||||||
|
print(f'Clustering faces {perc}% complete with {len(identities)} identities.')
|
||||||
closest = find_nearest_face(faces, identities, face, threshold = 0.25)
|
closest = find_nearest_face(faces, identities, face, threshold = 0.25)
|
||||||
if closest == None:
|
if closest == None:
|
||||||
print(f'Face {i+1} does not have any matches.')
|
|
||||||
continue
|
continue
|
||||||
identity = update_face_identity(identities, face, closest)
|
identity = update_face_identity(identities, face, closest)
|
||||||
# if identity['faces'] > 2:
|
# if identity['faces'] > 2:
|
||||||
# print(f'Updated identity {identity["id"]} to hold {identity["faces"]} faces.')
|
# print(f'Updated identity {identity["id"]} to hold {identity["faces"]} faces.')
|
||||||
return identities
|
return identities
|
||||||
|
|
||||||
|
def cluster_identities(identities):
|
||||||
|
perc = -1
|
||||||
|
last_len = 0
|
||||||
|
while last_len != len(identities):
|
||||||
|
last_len = len(identities)
|
||||||
|
for i, identity in enumerate(identities):
|
||||||
|
new_perc = int(100 * (i+1) / len(identities))
|
||||||
|
if new_perc != perc:
|
||||||
|
perc = new_perc
|
||||||
|
print(f'Clustering identities {perc}% complete with {len(identities)} identities.')
|
||||||
|
closest = find_nearest_face([], identities, face, threshold = 0.25)
|
||||||
|
if closest == None:
|
||||||
|
continue
|
||||||
|
update_face_identity(identities, identity, closest)
|
||||||
|
return identities
|
||||||
|
|
||||||
def identity_get_faces(item):
|
def identity_get_faces(item):
|
||||||
return item['faces']
|
return item['faces']
|
||||||
|
|
||||||
@ -233,11 +252,14 @@ with conn:
|
|||||||
face['descriptors'] = np.frombuffer(descriptors)
|
face['descriptors'] = np.frombuffer(descriptors)
|
||||||
|
|
||||||
identities = cluster_faces(faces)
|
identities = cluster_faces(faces)
|
||||||
|
#identities = cluster_identities(identities)
|
||||||
identities.sort(reverse = True, key = identity_get_faces)
|
identities.sort(reverse = True, key = identity_get_faces)
|
||||||
|
sum = 0
|
||||||
for identity in identities:
|
for identity in identities:
|
||||||
|
sum += identity['faces']
|
||||||
print(f'{identity["id"]} has {identity["faces"]} faces')
|
print(f'{identity["id"]} has {identity["faces"]} faces')
|
||||||
|
|
||||||
print(f'{len(identities)} identities seeded.')
|
print(f'{len(identities)} identities seeded with {sum} faces.')
|
||||||
|
|
||||||
exit(0)
|
exit(0)
|
||||||
if False:
|
if False:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user