Various fixes (#20774)
Some checks are pending
CI / AMD64 Build (push) Waiting to run
CI / ARM Build (push) Waiting to run
CI / Jetson Jetpack 6 (push) Waiting to run
CI / AMD64 Extra Build (push) Blocked by required conditions
CI / ARM Extra Build (push) Blocked by required conditions
CI / Synaptics Build (push) Blocked by required conditions
CI / Assemble and push default build (push) Blocked by required conditions

* Change order of deletion

* Add debug log for camera enabled

* Add more face debug logs

* Set jetson numpy version
This commit is contained in:
Nicolas Mowen 2025-11-03 09:05:03 -07:00 committed by GitHub
parent 59963fc47e
commit 5529432856
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 10 additions and 5 deletions

View File

@ -1 +1,2 @@
cuda-python == 12.6.*; platform_machine == 'aarch64' cuda-python == 12.6.*; platform_machine == 'aarch64'
numpy == 1.26.*; platform_machine == 'aarch64'

View File

@ -166,6 +166,7 @@ class FaceRealTimeProcessor(RealTimeProcessorApi):
camera = obj_data["camera"] camera = obj_data["camera"]
if not self.config.cameras[camera].face_recognition.enabled: if not self.config.cameras[camera].face_recognition.enabled:
logger.debug(f"Face recognition disabled for camera {camera}, skipping")
return return
start = datetime.datetime.now().timestamp() start = datetime.datetime.now().timestamp()
@ -208,6 +209,7 @@ class FaceRealTimeProcessor(RealTimeProcessorApi):
person_box = obj_data.get("box") person_box = obj_data.get("box")
if not person_box: if not person_box:
logger.debug(f"No person box available for {id}")
return return
rgb = cv2.cvtColor(frame, cv2.COLOR_YUV2RGB_I420) rgb = cv2.cvtColor(frame, cv2.COLOR_YUV2RGB_I420)
@ -233,7 +235,8 @@ class FaceRealTimeProcessor(RealTimeProcessorApi):
try: try:
face_frame = cv2.cvtColor(face_frame, cv2.COLOR_RGB2BGR) face_frame = cv2.cvtColor(face_frame, cv2.COLOR_RGB2BGR)
except Exception: except Exception as e:
logger.debug(f"Failed to convert face frame color for {id}: {e}")
return return
else: else:
# don't run for object without attributes # don't run for object without attributes
@ -251,6 +254,7 @@ class FaceRealTimeProcessor(RealTimeProcessorApi):
# no faces detected in this frame # no faces detected in this frame
if not face: if not face:
logger.debug(f"No face attributes found for {id}")
return return
face_box = face.get("box") face_box = face.get("box")
@ -274,6 +278,7 @@ class FaceRealTimeProcessor(RealTimeProcessorApi):
res = self.recognizer.classify(face_frame) res = self.recognizer.classify(face_frame)
if not res: if not res:
logger.debug(f"Face recognizer returned no result for {id}")
self.__update_metrics(datetime.datetime.now().timestamp() - start) self.__update_metrics(datetime.datetime.now().timestamp() - start)
return return

View File

@ -158,11 +158,13 @@ class EmbeddingMaintainer(threading.Thread):
self.realtime_processors: list[RealTimeProcessorApi] = [] self.realtime_processors: list[RealTimeProcessorApi] = []
if self.config.face_recognition.enabled: if self.config.face_recognition.enabled:
logger.debug("Face recognition enabled, initializing FaceRealTimeProcessor")
self.realtime_processors.append( self.realtime_processors.append(
FaceRealTimeProcessor( FaceRealTimeProcessor(
self.config, self.requestor, self.event_metadata_publisher, metrics self.config, self.requestor, self.event_metadata_publisher, metrics
) )
) )
logger.debug("FaceRealTimeProcessor initialized successfully")
if self.config.classification.bird.enabled: if self.config.classification.bird.enabled:
self.realtime_processors.append( self.realtime_processors.append(

View File

@ -214,7 +214,7 @@ function ModelCard({ config, onClick, onDelete }: ModelCardProps) {
const handleDelete = useCallback(async () => { const handleDelete = useCallback(async () => {
try { try {
// First, remove from config to stop the processor await axios.delete(`classification/${config.name}`);
await axios.put("/config/set", { await axios.put("/config/set", {
requires_restart: 0, requires_restart: 0,
update_topic: `config/classification/custom/${config.name}`, update_topic: `config/classification/custom/${config.name}`,
@ -227,9 +227,6 @@ function ModelCard({ config, onClick, onDelete }: ModelCardProps) {
}, },
}); });
// Then, delete the model data and files
await axios.delete(`classification/${config.name}`);
toast.success(t("toast.success.deletedModel", { count: 1 }), { toast.success(t("toast.success.deletedModel", { count: 1 }), {
position: "top-center", position: "top-center",
}); });