adjust debug

This commit is contained in:
Alberto-Audrix committed 2026-07-24 11:42:18 +07:00
1 parent f7ef038def
commit a7ce970f78
5 files changed
+86 -47

No files matched your search

+60 -44
View File
@@ -36,6 +36,11 @@ MODEL_PATH = os.getenv("MODEL_PATH", "/opt/jetson-counter/yolo11n.rknn")
CAMERA_NAME = os.getenv("CAMERA_NAME", "CC1")
OBJECT_LABEL = os.getenv("OBJECT_LABEL", "object")
CLASS_OBJECT = os.getenv("CLASS_OBJECT", "object")
# Human-readable feeder names used in count logs, e.g.
# "Total karung di kandang_bawah_feeder_kanan: 5"
FEEDER_LEFT_NAME = os.getenv("FEEDER_LEFT_NAME", f"{CAMERA_NAME}_feeder_kiri")
FEEDER_RIGHT_NAME = os.getenv("FEEDER_RIGHT_NAME", f"{CAMERA_NAME}_feeder_kanan")
DEBUG_TRACKING = os.getenv("DEBUG_TRACKING", "").lower() == "true"
# Left feeder zone (fractions of frame width/height). Absolute pixel overrides
# win when set (ZONE_LEFT_X1 … ZONE_LEFT_Y2).
@@ -733,6 +738,12 @@ def feeder_cooldown_sec(feeder):
return ZONE_COOLDOWN_RIGHT_SEC
def feeder_display_name(feeder):
if feeder == "left":
return FEEDER_LEFT_NAME
return FEEDER_RIGHT_NAME
def feeder_in_cooldown(feeder, mono, last_count_mono):
"""True if this feeder is still inside its post-count cooldown window."""
cooldown = feeder_cooldown_sec(feeder)
@@ -1397,40 +1408,40 @@ def run():
object_boxes_xyxy, object_scores
)
if os.getenv("DEBUG_TRACKING", "").lower() == "true":
if len(object_boxes_xyxy) > 0:
scores_str = (
f" scores: {object_scores.round(3).tolist()}"
if len(object_scores) > 0
else ""
if DEBUG_TRACKING and len(object_boxes_xyxy) > 0:
scores_str = (
f" scores: {object_scores.round(3).tolist()}"
if len(object_scores) > 0
else ""
)
tracks_str = (
f" det->track: {dict(object_det_to_track)}"
if object_det_to_track
else ""
)
zone_str = ""
if object_zone_state:
left_ids = sorted(
tid
for tid, st in object_zone_state.items()
if st.get("side") == "left"
)
tracks_str = (
f" det->track: {dict(object_det_to_track)}"
if object_det_to_track
else ""
)
zone_str = ""
if object_zone_state:
left_ids = sorted(
tid
for tid, st in object_zone_state.items()
if st.get("side") == "left"
)
right_ids = sorted(
tid
for tid, st in object_zone_state.items()
if st.get("side") == "right"
)
if left_ids:
zone_str += f" left_counted: {left_ids}"
if right_ids:
zone_str += f" right_counted: {right_ids}"
print(
f"[DEBUG F{frame_idx}] dets={len(object_boxes_xyxy)} "
f"tracks={len(object_track_map)} "
f"zone_L={zone_left} zone_R={zone_right}{scores_str}"
f"{tracks_str}{zone_str}"
right_ids = sorted(
tid
for tid, st in object_zone_state.items()
if st.get("side") == "right"
)
if left_ids:
zone_str += f" left_counted: {left_ids}"
if right_ids:
zone_str += f" right_counted: {right_ids}"
print(
f"[DEBUG F{frame_idx}] dets={len(object_boxes_xyxy)} "
f"tracks={len(object_track_map)} "
f"zone_L={zone_left} zone_R={zone_right}{scores_str}"
f"{tracks_str}{zone_str}",
flush=True,
)
# --- zone entry detection only on DETECTED objects this frame ---
# (tracker still updates every frame to preserve IDs, but we do NOT
@@ -1457,13 +1468,14 @@ def run():
object_zone_state[tid] = _copy_zone_state(
object_zone_state[src_tid]
)
if os.getenv("DEBUG_TRACKING", "").lower() == "true":
if DEBUG_TRACKING:
src_st = object_zone_state.get(tid, {})
print(
f"[DEBUG F{frame_idx}] INHERIT prev for new tid={tid} "
f"from tid={src_tid} ({inherited[0]:.1f},{inherited[1]:.1f})"
f" counted={src_st.get('counted', False)}"
f" side={src_st.get('side')}"
f" side={src_st.get('side')}",
flush=True,
)
if tid not in object_zone_state:
@@ -1506,10 +1518,11 @@ def run():
if is_duplicate_cross(recent, cx, cy, frame_idx):
st["counted"] = True
st["side"] = feeder
if os.getenv("DEBUG_TRACKING", "").lower() == "true":
if DEBUG_TRACKING:
print(
f"[DEBUG F{frame_idx}] DUP ZONE IGNORED: tid={tid} "
f"cx={cx:.1f} cy={cy:.1f} feeder={feeder}"
f"cx={cx:.1f} cy={cy:.1f} feeder={feeder}",
flush=True,
)
object_tracked[tid] = (cx, cy, mono)
continue
@@ -1517,22 +1530,17 @@ def run():
if feeder_in_cooldown(feeder, mono, last_count_mono):
st["counted"] = True
st["side"] = feeder
if os.getenv("DEBUG_TRACKING", "").lower() == "true":
if DEBUG_TRACKING:
cool = feeder_cooldown_sec(feeder)
elapsed = mono - (last_count_mono.get(feeder) or mono)
print(
f"[DEBUG F{frame_idx}] COOLDOWN IGNORED: tid={tid} "
f"feeder={feeder} elapsed={elapsed:.2f}s / {cool}s"
f"feeder={feeder} elapsed={elapsed:.2f}s / {cool}s",
flush=True,
)
object_tracked[tid] = (cx, cy, mono)
continue
if os.getenv("DEBUG_TRACKING", "").lower() == "true":
print(
f"[DEBUG F{frame_idx}] ZONE ENTER: tid={tid} "
f"cx={cx:.1f} cy={cy:.1f} feeder={feeder}"
)
recent.append((frame_idx, cx, cy))
st["counted"] = True
st["side"] = feeder
@@ -1540,9 +1548,17 @@ def run():
if feeder == "left":
counter_left += 1
count_left_pulse = COUNT_PULSE_FRAMES
feeder_total = counter_left
else:
counter_right += 1
count_right_pulse = COUNT_PULSE_FRAMES
feeder_total = counter_right
# Frigate-style count log, e.g.
# "Total karung di kandang_bawah_feeder_kanan: 5"
print(
f"Total {OBJECT_LABEL} di {feeder_display_name(feeder)}: {feeder_total}",
flush=True,
)
store.record_zone_entry(tid, feeder)
if cross_logger:
cross_logger.write_row(