mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-02-17 08:35:21 +03:00
Clear classifier when new face is added
This commit is contained in:
parent
509a9d7863
commit
749010b512
@ -140,13 +140,15 @@ class EmbeddingMaintainer(threading.Thread):
|
|||||||
self.embeddings.text_embedding([data])[0], pack=False
|
self.embeddings.text_embedding([data])[0], pack=False
|
||||||
)
|
)
|
||||||
elif topic == EmbeddingsRequestEnum.register_face.value:
|
elif topic == EmbeddingsRequestEnum.register_face.value:
|
||||||
|
if not self.face_recognition_enabled:
|
||||||
|
return False
|
||||||
|
|
||||||
if data.get("cropped"):
|
if data.get("cropped"):
|
||||||
self.embeddings.embed_face(
|
self.embeddings.embed_face(
|
||||||
data["face_name"],
|
data["face_name"],
|
||||||
base64.b64decode(data["image"]),
|
base64.b64decode(data["image"]),
|
||||||
upsert=True,
|
upsert=True,
|
||||||
)
|
)
|
||||||
return True
|
|
||||||
else:
|
else:
|
||||||
img = cv2.imdecode(
|
img = cv2.imdecode(
|
||||||
np.frombuffer(
|
np.frombuffer(
|
||||||
@ -167,7 +169,8 @@ class EmbeddingMaintainer(threading.Thread):
|
|||||||
data["face_name"], webp.tobytes(), upsert=True
|
data["face_name"], webp.tobytes(), upsert=True
|
||||||
)
|
)
|
||||||
|
|
||||||
return False
|
self.face_classifier.clear_classifier()
|
||||||
|
return True
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Unable to handle embeddings request {e}")
|
logger.error(f"Unable to handle embeddings request {e}")
|
||||||
|
|
||||||
|
|||||||
@ -170,10 +170,14 @@ class FaceClassificationModel:
|
|||||||
self.classifier = SVC(kernel="linear", probability=True)
|
self.classifier = SVC(kernel="linear", probability=True)
|
||||||
self.classifier.fit(norms, labels)
|
self.classifier.fit(norms, labels)
|
||||||
|
|
||||||
|
def clear_classifier(self) -> None:
|
||||||
|
self.classifier = None
|
||||||
|
self.labeler = None
|
||||||
|
|
||||||
def classify_face(
|
def classify_face(
|
||||||
self, embedding: np.ndarray, rebuild_classifier: bool = False
|
self, embedding: np.ndarray
|
||||||
) -> Optional[tuple[str, float]]:
|
) -> Optional[tuple[str, float]]:
|
||||||
if not self.classifier or rebuild_classifier:
|
if not self.classifier:
|
||||||
self.__build_classifier()
|
self.__build_classifier()
|
||||||
|
|
||||||
res = self.classifier.predict([embedding])
|
res = self.classifier.predict([embedding])
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user