J'essaie d'utiliser l'algorithme de chuchotement chinois pour le regroupement de visages. J'ai utilisé dlib et python pour extraire des caractéristiques pour chaque face et mappé en 128 D comme décrit par Davisking à https://github.com/davisking/dlib/blob/master/examples/dnn_face_recognition_ex.cpp.Clustering de visages utilisant l'algorithme de Whispers chinois
Ensuite, j'ai construit un graphique en suivant les instructions qui y sont données. J'ai implémenté l'algorithme des chuchotements chinois et appliqué à ce graphe. Quelqu'un peut-il me dire quelle erreur j'ai faite? Quelqu'un peut-il télécharger le code python pour le regroupement des visages en utilisant l'algorithme des chuchotements chinois? Voici mon code de chuchotements chinois:
import networkx as nx
import random
from random import shuffle
import math
def chinese_whispers(nodes,edges,iterations):
G = nx.Graph()
G.add_nodes_from(nodes)
#print(G.node)
for n, v in enumerate(nodes):
G.node[n]['class'] = v
#print(n,v)
G.add_edges_from(edges)
#gn=G.nodes()
#for node in gn:
#print((node,G[node],G.node,G.node[node]))
#(0, {16: {'weight': 0.49846761956907698}, 14: {'weight': 0.55778036559581601}, 7: {'weight': 0.43902511314524784}}, {'class': 0})
for z in range(0, iterations):
gn = G.nodes()
# I randomize the nodes to give me an arbitrary start point
shuffle(gn)
for node in gn:
neighs = G[node]
classes = {}
# do an inventory of the given nodes neighbours and edge weights
for ne in neighs:
if isinstance(ne, int):
key=G.node[ne]['class']
if key in classes:
classes[key] += G[node][ne]['weight']
else:
classes[key] = G[node][ne]['weight']
# find the class with the highest edge weight sum
max = 0
maxclass = 0
for c in classes:
if classes[c] > max:
max = classes[c]
maxclass = c
# set the class of target node to the winning local class
G.node[node]['class'] = maxclass
n_clusters = []
for node in G.nodes():
n_clusters.append(G.node[node]['class'])
return(n_clusters)
Voici le code d'extraction de caractéristiques du visage et le codage de chaque faces en 128 D et vecteur de construction de ces graphique pour appliquer chuchotements chinois. Je ne comprends pas ce que je fais mal. Est-ce que quelqu'un peut m'aider à ce sujet? Merci d'avance.
Bienvenue dans Stack Overflow. Veuillez prendre le temps de lire [The Tour] (http://stackoverflow.com/tour) et de consulter le contenu du [Centre d'aide] (http://stackoverflow.com/help/asking) quoi et comment vous pouvez demandez ici. –
"Mais je n'ai pas obtenu une bonne précision" n'est pas une description très utile du problème. Stack Overflow est mieux utilisé pour résoudre des problèmes spécifiques, et ce genre de question – Rook