mirror of
https://github.com/hacksider/Deep-Live-Cam.git
synced 2026-07-15 14:37:24 +02:00
fix: bound face-cluster count by available embeddings (#1793)
`find_cluster_centroids()` iterates `k` from 1..`max_k` unconditionally. If `len(embeddings) < max_k`, `KMeans(n_clusters=k)` will raise `ValueError` when `k` exceeds the number of samples. This is an unhandled crash path on small datasets. Affected files: cluster_analysis.py Signed-off-by: Nguyen Van Nam <nam.nv205106@gmail.com>
This commit is contained in:
@@ -4,6 +4,18 @@ from typing import Any
|
||||
|
||||
|
||||
def find_cluster_centroids(embeddings, max_k=10) -> Any:
|
||||
n_samples = len(embeddings)
|
||||
if n_samples == 0:
|
||||
raise ValueError("embeddings must not be empty")
|
||||
if max_k < 1:
|
||||
raise ValueError("max_k must be at least 1")
|
||||
|
||||
max_k = min(max_k, n_samples)
|
||||
if max_k == 1:
|
||||
kmeans = KMeans(n_clusters=1, random_state=0)
|
||||
kmeans.fit(embeddings)
|
||||
return kmeans.cluster_centers_
|
||||
|
||||
inertia = []
|
||||
cluster_centroids = []
|
||||
K = range(1, max_k+1)
|
||||
|
||||
Reference in New Issue
Block a user