style: format K*-L*.yaml configs with exact inline comments and flow-style [x, y] coordinates

This commit is contained in:
proitlab committed 2026-08-19 11:27:49 +07:00
1 parent b00923dc2b
commit 8fe2f88f12
10 files changed
+510 -860

No files matched your search

+51 -86
View File
@@ -1,14 +1,15 @@
batch: batch:
root_dir: ../VIDEOS/cycle7/K1-L1 root_dir: "../VIDEOS/cycle7/K1-L1"
camera_glob: '*cam{num}_*.mp4' camera_glob: "*cam{num}_*.mp4"
output_subdir: output output_subdir: output
compress_max_mb: 200 compress_max_mb: 200
delete_intermediate: false delete_intermediate: false
checkpoint_every_n_frames: 3000 checkpoint_every_n_frames: 3000
location: K1-L1 location: K1-L1
db_path: db/chicken_counts.db db_path: db/chicken_counts.db
cycle_start_date: '2026-05-22' cycle_start_date: "2026-05-22" #day 0
execution_mode: parallel_processes execution_mode: parallel_processes # parallel_processes (default) | tensor_batching | hybrid
stages: stages:
early_cycle: early_cycle:
day_min: 0 day_min: 0
@@ -17,25 +18,23 @@ stages:
conf: 0.1 conf: 0.1
min_box_area_px: 100 min_box_area_px: 100
roi: roi:
min_overlap_ratio: 0.1 min_overlap_ratio: 0.1 # 0.25
mid_cycle: mid_cycle:
day_min: 16 day_min: 16
day_max: 999 day_max: 999
defaults: defaults:
detection: detection:
model_path: models/NUC5070_chicken-detection-model-v26n-300e-best-2026-05-02-NEW.engine model_path: models/NUC5070_chicken-detection-model-v26n-300e-best-2026-05-02-NEW.engine # TensorRT engine (RTX 5070)
classes: classes: [0]
- 0 ignored_classes: [1, 2]
ignored_classes: conf: 0.40 # mild lift vs 0.35; 0.55 was undercounting
- 1
- 2
conf: 0.4
iou: 0.55 iou: 0.55
imgsz: 640 imgsz: 640
device: '0' device: "0"
min_box_area_px: 3000 min_box_area_px: 3000
validate_while_inside: true validate_while_inside: true
dedupe_radius_px: 0 dedupe_radius_px: 0 # off for CC1/CC4; CC2/CC3 enable below
dedupe_frames: 12 dedupe_frames: 12
detection_zone: detection_zone:
enabled: true enabled: true
@@ -48,9 +47,7 @@ defaults:
track_buffer: 90 track_buffer: 90
gate: gate:
mode: two_line mode: two_line
lines_y: lines_y: [420, 730]
- 420
- 730
direction: bottom_to_up direction: bottom_to_up
motion: motion:
enabled: true enabled: true
@@ -60,9 +57,9 @@ defaults:
reverse_enter_threshold: -1.5 reverse_enter_threshold: -1.5
reverse_exit_threshold: -0.5 reverse_exit_threshold: -0.5
debounce_frames: 12 debounce_frames: 12
min_features: 40 min_features: 40 # ↓ 60 → less optical flow computation
max_corners: 50 max_corners: 50 # ↓ 80 → fewer corner featuresis
stride_frames: 3 stride_frames: 3 # ↑ 2 → motion detection every 3rd frame
flow_scale: 0.5 flow_scale: 0.5
quality_level: 0.01 quality_level: 0.01
min_distance: 8 min_distance: 8
@@ -71,116 +68,84 @@ defaults:
show_boxes: true show_boxes: true
show_track_trails: false show_track_trails: false
trail_length: 20 trail_length: 20
show_center_marker: false show_center_marker: false # ✗ → save 1 circle per chicken
show_track_ring: false show_track_ring: false
count_anchor: count_anchor: [780, 120]
- 780
- 120
inside_box_only: true inside_box_only: true
validated_only: true validated_only: true # NEW → only draw counted chickens
pending_blink: true pending_blink: true
pending_colors: pending_colors:
- - 255 - [255, 255, 0]
- 255 - [0, 255, 255]
- 0
- - 0
- 255
- 255
display: display:
show_window: false show_window: false
encoder: auto encoder: auto
output_bitrate_kbps: 2000 output_bitrate_kbps: 2000 # ↓ 4000 → faster encoding
codec_preference: codec_preference: [avc1, mp4v, H264]
- avc1
- mp4v
- H264
performance: performance:
half: false half: false
overlay_buffer_reuse: true overlay_buffer_reuse: true
inference_stride: 2 inference_stride: 2
stream: stream:
enabled: true enabled: true # required for dashboard live feed
shm_dir: /dev/shm shm_dir: /dev/shm
interval_frames: 5 interval_frames: 5
feedback: feedback:
enabled: true enabled: true
every_n_frames: 3000 every_n_frames: 3000
save_images: false save_images: false # ✗ → disable checkpoint JPEG I/O spikes
log_to_terminal: true log_to_terminal: true
roi: roi:
inset_left_px: 60 inset_left_px: 60
inset_right_px: 60 inset_right_px: 60
inset_top_px: 0 inset_top_px: 0
inset_bottom_px: 0 inset_bottom_px: 0
min_overlap_ratio: 0.3 min_overlap_ratio: 0.30
cameras: cameras:
CC1: CC1:
camera_num: 1 camera_num: 1
count_anchor: count_anchor: [780, 120]
- 780
- 120
detection: detection:
min_box_area_px: 2500 min_box_area_px: 2500
conf: 0.35 conf: 0.35
roi: roi:
points: points:
- - 250 - [250, 330]
- 330 - [1650, 330]
- - 1650 - [1650, 720]
- 330 - [250, 720]
- - 1650
- 720
- - 250
- 720
CC2: CC2:
camera_num: 2 camera_num: 2
count_anchor: count_anchor: [900, 120]
- 900
- 120
detection: detection:
conf: 0.5 conf: 0.5 # From 0.45
dedupe_radius_px: 32 dedupe_radius_px: 32
dedupe_frames: 24 dedupe_frames: 24 # From 18
roi: roi:
points: points:
- - 20 - [20, 380]
- 380 - [1880, 380]
- - 1880 - [1880, 720]
- 380 - [20, 720]
- - 1880
- 720
- - 20
- 720
CC3: CC3:
camera_num: 3 camera_num: 3
count_anchor: count_anchor: [900, 120]
- 900
- 120
detection: detection:
dedupe_radius_px: 24 dedupe_radius_px: 24
dedupe_frames: 16 dedupe_frames: 16 # From 12
roi: roi:
points: points:
- - 20 - [20, 330]
- 330 - [1880, 330]
- - 1880 - [1880, 720]
- 330 - [20, 720]
- - 1880
- 720
- - 20
- 720
CC4: CC4:
camera_num: 4 camera_num: 4
count_anchor: count_anchor: [700, 120]
- 700
- 120
roi: roi:
points: points:
- - 50 - [50, 330]
- 330 - [1450, 330]
- - 1450 - [1450, 720]
- 330 - [50, 720]
- - 1450
- 720
- - 50
- 720
+51 -86
View File
@@ -1,14 +1,15 @@
batch: batch:
root_dir: ../VIDEOS/cycle7/K1-L2 root_dir: "../VIDEOS/cycle7/K1-L2"
camera_glob: '*cam{num}_*.mp4' camera_glob: "*cam{num}_*.mp4"
output_subdir: output output_subdir: output
compress_max_mb: 200 compress_max_mb: 200
delete_intermediate: false delete_intermediate: false
checkpoint_every_n_frames: 3000 checkpoint_every_n_frames: 3000
location: K1-L2 location: K1-L2
db_path: db/chicken_counts.db db_path: db/chicken_counts.db
cycle_start_date: '2026-05-22' cycle_start_date: "2026-05-22" #day 0
execution_mode: parallel_processes execution_mode: parallel_processes # parallel_processes (default) | tensor_batching | hybrid
stages: stages:
early_cycle: early_cycle:
day_min: 0 day_min: 0
@@ -17,25 +18,23 @@ stages:
conf: 0.1 conf: 0.1
min_box_area_px: 100 min_box_area_px: 100
roi: roi:
min_overlap_ratio: 0.1 min_overlap_ratio: 0.1 # 0.25
mid_cycle: mid_cycle:
day_min: 16 day_min: 16
day_max: 999 day_max: 999
defaults: defaults:
detection: detection:
model_path: models/NUC5070_chicken-detection-model-v26n-300e-best-2026-05-02-NEW.engine model_path: models/NUC5070_chicken-detection-model-v26n-300e-best-2026-05-02-NEW.engine # TensorRT engine (RTX 5070)
classes: classes: [0]
- 0 ignored_classes: [1, 2]
ignored_classes: conf: 0.40 # mild lift vs 0.35; 0.55 was undercounting
- 1
- 2
conf: 0.4
iou: 0.55 iou: 0.55
imgsz: 640 imgsz: 640
device: '0' device: "0"
min_box_area_px: 3000 min_box_area_px: 3000
validate_while_inside: true validate_while_inside: true
dedupe_radius_px: 0 dedupe_radius_px: 0 # off for CC1/CC4; CC2/CC3 enable below
dedupe_frames: 12 dedupe_frames: 12
detection_zone: detection_zone:
enabled: true enabled: true
@@ -48,9 +47,7 @@ defaults:
track_buffer: 90 track_buffer: 90
gate: gate:
mode: two_line mode: two_line
lines_y: lines_y: [420, 730]
- 420
- 730
direction: bottom_to_up direction: bottom_to_up
motion: motion:
enabled: true enabled: true
@@ -60,9 +57,9 @@ defaults:
reverse_enter_threshold: -1.5 reverse_enter_threshold: -1.5
reverse_exit_threshold: -0.5 reverse_exit_threshold: -0.5
debounce_frames: 12 debounce_frames: 12
min_features: 40 min_features: 40 # ↓ 60 → less optical flow computation
max_corners: 50 max_corners: 50 # ↓ 80 → fewer corner featuresis
stride_frames: 3 stride_frames: 3 # ↑ 2 → motion detection every 3rd frame
flow_scale: 0.5 flow_scale: 0.5
quality_level: 0.01 quality_level: 0.01
min_distance: 8 min_distance: 8
@@ -71,116 +68,84 @@ defaults:
show_boxes: true show_boxes: true
show_track_trails: false show_track_trails: false
trail_length: 20 trail_length: 20
show_center_marker: false show_center_marker: false # ✗ → save 1 circle per chicken
show_track_ring: false show_track_ring: false
count_anchor: count_anchor: [780, 120]
- 780
- 120
inside_box_only: true inside_box_only: true
validated_only: true validated_only: true # NEW → only draw counted chickens
pending_blink: true pending_blink: true
pending_colors: pending_colors:
- - 255 - [255, 255, 0]
- 255 - [0, 255, 255]
- 0
- - 0
- 255
- 255
display: display:
show_window: false show_window: false
encoder: auto encoder: auto
output_bitrate_kbps: 2000 output_bitrate_kbps: 2000 # ↓ 4000 → faster encoding
codec_preference: codec_preference: [avc1, mp4v, H264]
- avc1
- mp4v
- H264
performance: performance:
half: false half: false
overlay_buffer_reuse: true overlay_buffer_reuse: true
inference_stride: 2 inference_stride: 2
stream: stream:
enabled: true enabled: true # required for dashboard live feed
shm_dir: /dev/shm shm_dir: /dev/shm
interval_frames: 5 interval_frames: 5
feedback: feedback:
enabled: true enabled: true
every_n_frames: 3000 every_n_frames: 3000
save_images: false save_images: false # ✗ → disable checkpoint JPEG I/O spikes
log_to_terminal: true log_to_terminal: true
roi: roi:
inset_left_px: 60 inset_left_px: 60
inset_right_px: 60 inset_right_px: 60
inset_top_px: 0 inset_top_px: 0
inset_bottom_px: 0 inset_bottom_px: 0
min_overlap_ratio: 0.3 min_overlap_ratio: 0.30
cameras: cameras:
CC1: CC1:
camera_num: 1 camera_num: 1
count_anchor: count_anchor: [780, 120]
- 780
- 120
detection: detection:
min_box_area_px: 2500 min_box_area_px: 2500
conf: 0.35 conf: 0.35
roi: roi:
points: points:
- - 250 - [250, 330]
- 330 - [1650, 330]
- - 1650 - [1650, 720]
- 330 - [250, 720]
- - 1650
- 720
- - 250
- 720
CC2: CC2:
camera_num: 2 camera_num: 2
count_anchor: count_anchor: [900, 120]
- 900
- 120
detection: detection:
conf: 0.5 conf: 0.5 # From 0.45
dedupe_radius_px: 32 dedupe_radius_px: 32
dedupe_frames: 24 dedupe_frames: 24 # From 18
roi: roi:
points: points:
- - 20 - [20, 380]
- 380 - [1880, 380]
- - 1880 - [1880, 720]
- 380 - [20, 720]
- - 1880
- 720
- - 20
- 720
CC3: CC3:
camera_num: 3 camera_num: 3
count_anchor: count_anchor: [900, 120]
- 900
- 120
detection: detection:
dedupe_radius_px: 24 dedupe_radius_px: 24
dedupe_frames: 16 dedupe_frames: 16 # From 12
roi: roi:
points: points:
- - 20 - [20, 330]
- 330 - [1880, 330]
- - 1880 - [1880, 720]
- 330 - [20, 720]
- - 1880
- 720
- - 20
- 720
CC4: CC4:
camera_num: 4 camera_num: 4
count_anchor: count_anchor: [700, 120]
- 700
- 120
roi: roi:
points: points:
- - 50 - [50, 330]
- 330 - [1450, 330]
- - 1450 - [1450, 720]
- 330 - [50, 720]
- - 1450
- 720
- - 50
- 720
+51 -86
View File
@@ -1,14 +1,15 @@
batch: batch:
root_dir: ../VIDEOS/cycle7/K2-L1 root_dir: "../VIDEOS/cycle7/K2-L1"
camera_glob: '*cam{num}_*.mp4' camera_glob: "*cam{num}_*.mp4"
output_subdir: output output_subdir: output
compress_max_mb: 200 compress_max_mb: 200
delete_intermediate: false delete_intermediate: false
checkpoint_every_n_frames: 3000 checkpoint_every_n_frames: 3000
location: K2-L1 location: K2-L1
db_path: db/chicken_counts.db db_path: db/chicken_counts.db
cycle_start_date: '2026-05-22' cycle_start_date: "2026-05-22" #day 0
execution_mode: parallel_processes execution_mode: parallel_processes # parallel_processes (default) | tensor_batching | hybrid
stages: stages:
early_cycle: early_cycle:
day_min: 0 day_min: 0
@@ -17,25 +18,23 @@ stages:
conf: 0.1 conf: 0.1
min_box_area_px: 100 min_box_area_px: 100
roi: roi:
min_overlap_ratio: 0.1 min_overlap_ratio: 0.1 # 0.25
mid_cycle: mid_cycle:
day_min: 16 day_min: 16
day_max: 999 day_max: 999
defaults: defaults:
detection: detection:
model_path: models/NUC5070_chicken-detection-model-v26n-300e-best-2026-05-02-NEW.engine model_path: models/NUC5070_chicken-detection-model-v26n-300e-best-2026-05-02-NEW.engine # TensorRT engine (RTX 5070)
classes: classes: [0]
- 0 ignored_classes: [1, 2]
ignored_classes: conf: 0.40 # mild lift vs 0.35; 0.55 was undercounting
- 1
- 2
conf: 0.4
iou: 0.55 iou: 0.55
imgsz: 640 imgsz: 640
device: '0' device: "0"
min_box_area_px: 3000 min_box_area_px: 3000
validate_while_inside: true validate_while_inside: true
dedupe_radius_px: 0 dedupe_radius_px: 0 # off for CC1/CC4; CC2/CC3 enable below
dedupe_frames: 12 dedupe_frames: 12
detection_zone: detection_zone:
enabled: true enabled: true
@@ -48,9 +47,7 @@ defaults:
track_buffer: 90 track_buffer: 90
gate: gate:
mode: two_line mode: two_line
lines_y: lines_y: [420, 730]
- 420
- 730
direction: bottom_to_up direction: bottom_to_up
motion: motion:
enabled: true enabled: true
@@ -60,9 +57,9 @@ defaults:
reverse_enter_threshold: -1.5 reverse_enter_threshold: -1.5
reverse_exit_threshold: -0.5 reverse_exit_threshold: -0.5
debounce_frames: 12 debounce_frames: 12
min_features: 40 min_features: 40 # ↓ 60 → less optical flow computation
max_corners: 50 max_corners: 50 # ↓ 80 → fewer corner featuresis
stride_frames: 3 stride_frames: 3 # ↑ 2 → motion detection every 3rd frame
flow_scale: 0.5 flow_scale: 0.5
quality_level: 0.01 quality_level: 0.01
min_distance: 8 min_distance: 8
@@ -71,116 +68,84 @@ defaults:
show_boxes: true show_boxes: true
show_track_trails: false show_track_trails: false
trail_length: 20 trail_length: 20
show_center_marker: false show_center_marker: false # ✗ → save 1 circle per chicken
show_track_ring: false show_track_ring: false
count_anchor: count_anchor: [780, 120]
- 780
- 120
inside_box_only: true inside_box_only: true
validated_only: true validated_only: true # NEW → only draw counted chickens
pending_blink: true pending_blink: true
pending_colors: pending_colors:
- - 255 - [255, 255, 0]
- 255 - [0, 255, 255]
- 0
- - 0
- 255
- 255
display: display:
show_window: false show_window: false
encoder: auto encoder: auto
output_bitrate_kbps: 2000 output_bitrate_kbps: 2000 # ↓ 4000 → faster encoding
codec_preference: codec_preference: [avc1, mp4v, H264]
- avc1
- mp4v
- H264
performance: performance:
half: false half: false
overlay_buffer_reuse: true overlay_buffer_reuse: true
inference_stride: 2 inference_stride: 2
stream: stream:
enabled: true enabled: true # required for dashboard live feed
shm_dir: /dev/shm shm_dir: /dev/shm
interval_frames: 5 interval_frames: 5
feedback: feedback:
enabled: true enabled: true
every_n_frames: 3000 every_n_frames: 3000
save_images: false save_images: false # ✗ → disable checkpoint JPEG I/O spikes
log_to_terminal: true log_to_terminal: true
roi: roi:
inset_left_px: 60 inset_left_px: 60
inset_right_px: 60 inset_right_px: 60
inset_top_px: 0 inset_top_px: 0
inset_bottom_px: 0 inset_bottom_px: 0
min_overlap_ratio: 0.3 min_overlap_ratio: 0.30
cameras: cameras:
CC1: CC1:
camera_num: 1 camera_num: 1
count_anchor: count_anchor: [780, 120]
- 780
- 120
detection: detection:
min_box_area_px: 2500 min_box_area_px: 2500
conf: 0.35 conf: 0.35
roi: roi:
points: points:
- - 250 - [250, 330]
- 330 - [1650, 330]
- - 1650 - [1650, 720]
- 330 - [250, 720]
- - 1650
- 720
- - 250
- 720
CC2: CC2:
camera_num: 2 camera_num: 2
count_anchor: count_anchor: [900, 120]
- 900
- 120
detection: detection:
conf: 0.5 conf: 0.5 # From 0.45
dedupe_radius_px: 32 dedupe_radius_px: 32
dedupe_frames: 24 dedupe_frames: 24 # From 18
roi: roi:
points: points:
- - 20 - [20, 380]
- 380 - [1880, 380]
- - 1880 - [1880, 720]
- 380 - [20, 720]
- - 1880
- 720
- - 20
- 720
CC3: CC3:
camera_num: 3 camera_num: 3
count_anchor: count_anchor: [900, 120]
- 900
- 120
detection: detection:
dedupe_radius_px: 24 dedupe_radius_px: 24
dedupe_frames: 16 dedupe_frames: 16 # From 12
roi: roi:
points: points:
- - 20 - [20, 330]
- 330 - [1880, 330]
- - 1880 - [1880, 720]
- 330 - [20, 720]
- - 1880
- 720
- - 20
- 720
CC4: CC4:
camera_num: 4 camera_num: 4
count_anchor: count_anchor: [700, 120]
- 700
- 120
roi: roi:
points: points:
- - 50 - [50, 330]
- 330 - [1450, 330]
- - 1450 - [1450, 720]
- 330 - [50, 720]
- - 1450
- 720
- - 50
- 720
+51 -86
View File
@@ -1,14 +1,15 @@
batch: batch:
root_dir: ../VIDEOS/cycle7/K2-L2 root_dir: "../VIDEOS/cycle7/K2-L2"
camera_glob: '*cam{num}_*.mp4' camera_glob: "*cam{num}_*.mp4"
output_subdir: output output_subdir: output
compress_max_mb: 200 compress_max_mb: 200
delete_intermediate: false delete_intermediate: false
checkpoint_every_n_frames: 3000 checkpoint_every_n_frames: 3000
location: K2-L2 location: K2-L2
db_path: db/chicken_counts.db db_path: db/chicken_counts.db
cycle_start_date: '2026-05-22' cycle_start_date: "2026-05-22" #day 0
execution_mode: parallel_processes execution_mode: parallel_processes # parallel_processes (default) | tensor_batching | hybrid
stages: stages:
early_cycle: early_cycle:
day_min: 0 day_min: 0
@@ -17,25 +18,23 @@ stages:
conf: 0.1 conf: 0.1
min_box_area_px: 100 min_box_area_px: 100
roi: roi:
min_overlap_ratio: 0.1 min_overlap_ratio: 0.1 # 0.25
mid_cycle: mid_cycle:
day_min: 16 day_min: 16
day_max: 999 day_max: 999
defaults: defaults:
detection: detection:
model_path: models/NUC5070_chicken-detection-model-v26n-300e-best-2026-05-02-NEW.engine model_path: models/NUC5070_chicken-detection-model-v26n-300e-best-2026-05-02-NEW.engine # TensorRT engine (RTX 5070)
classes: classes: [0]
- 0 ignored_classes: [1, 2]
ignored_classes: conf: 0.40 # mild lift vs 0.35; 0.55 was undercounting
- 1
- 2
conf: 0.4
iou: 0.55 iou: 0.55
imgsz: 640 imgsz: 640
device: '0' device: "0"
min_box_area_px: 3000 min_box_area_px: 3000
validate_while_inside: true validate_while_inside: true
dedupe_radius_px: 0 dedupe_radius_px: 0 # off for CC1/CC4; CC2/CC3 enable below
dedupe_frames: 12 dedupe_frames: 12
detection_zone: detection_zone:
enabled: true enabled: true
@@ -48,9 +47,7 @@ defaults:
track_buffer: 90 track_buffer: 90
gate: gate:
mode: two_line mode: two_line
lines_y: lines_y: [420, 730]
- 420
- 730
direction: bottom_to_up direction: bottom_to_up
motion: motion:
enabled: true enabled: true
@@ -60,9 +57,9 @@ defaults:
reverse_enter_threshold: -1.5 reverse_enter_threshold: -1.5
reverse_exit_threshold: -0.5 reverse_exit_threshold: -0.5
debounce_frames: 12 debounce_frames: 12
min_features: 40 min_features: 40 # ↓ 60 → less optical flow computation
max_corners: 50 max_corners: 50 # ↓ 80 → fewer corner featuresis
stride_frames: 3 stride_frames: 3 # ↑ 2 → motion detection every 3rd frame
flow_scale: 0.5 flow_scale: 0.5
quality_level: 0.01 quality_level: 0.01
min_distance: 8 min_distance: 8
@@ -71,116 +68,84 @@ defaults:
show_boxes: true show_boxes: true
show_track_trails: false show_track_trails: false
trail_length: 20 trail_length: 20
show_center_marker: false show_center_marker: false # ✗ → save 1 circle per chicken
show_track_ring: false show_track_ring: false
count_anchor: count_anchor: [780, 120]
- 780
- 120
inside_box_only: true inside_box_only: true
validated_only: true validated_only: true # NEW → only draw counted chickens
pending_blink: true pending_blink: true
pending_colors: pending_colors:
- - 255 - [255, 255, 0]
- 255 - [0, 255, 255]
- 0
- - 0
- 255
- 255
display: display:
show_window: false show_window: false
encoder: auto encoder: auto
output_bitrate_kbps: 2000 output_bitrate_kbps: 2000 # ↓ 4000 → faster encoding
codec_preference: codec_preference: [avc1, mp4v, H264]
- avc1
- mp4v
- H264
performance: performance:
half: false half: false
overlay_buffer_reuse: true overlay_buffer_reuse: true
inference_stride: 2 inference_stride: 2
stream: stream:
enabled: true enabled: true # required for dashboard live feed
shm_dir: /dev/shm shm_dir: /dev/shm
interval_frames: 5 interval_frames: 5
feedback: feedback:
enabled: true enabled: true
every_n_frames: 3000 every_n_frames: 3000
save_images: false save_images: false # ✗ → disable checkpoint JPEG I/O spikes
log_to_terminal: true log_to_terminal: true
roi: roi:
inset_left_px: 60 inset_left_px: 60
inset_right_px: 60 inset_right_px: 60
inset_top_px: 0 inset_top_px: 0
inset_bottom_px: 0 inset_bottom_px: 0
min_overlap_ratio: 0.3 min_overlap_ratio: 0.30
cameras: cameras:
CC1: CC1:
camera_num: 1 camera_num: 1
count_anchor: count_anchor: [780, 120]
- 780
- 120
detection: detection:
min_box_area_px: 2500 min_box_area_px: 2500
conf: 0.35 conf: 0.35
roi: roi:
points: points:
- - 250 - [250, 330]
- 330 - [1650, 330]
- - 1650 - [1650, 720]
- 330 - [250, 720]
- - 1650
- 720
- - 250
- 720
CC2: CC2:
camera_num: 2 camera_num: 2
count_anchor: count_anchor: [900, 120]
- 900
- 120
detection: detection:
conf: 0.5 conf: 0.5 # From 0.45
dedupe_radius_px: 32 dedupe_radius_px: 32
dedupe_frames: 24 dedupe_frames: 24 # From 18
roi: roi:
points: points:
- - 20 - [20, 380]
- 380 - [1880, 380]
- - 1880 - [1880, 720]
- 380 - [20, 720]
- - 1880
- 720
- - 20
- 720
CC3: CC3:
camera_num: 3 camera_num: 3
count_anchor: count_anchor: [900, 120]
- 900
- 120
detection: detection:
dedupe_radius_px: 24 dedupe_radius_px: 24
dedupe_frames: 16 dedupe_frames: 16 # From 12
roi: roi:
points: points:
- - 20 - [20, 330]
- 330 - [1880, 330]
- - 1880 - [1880, 720]
- 330 - [20, 720]
- - 1880
- 720
- - 20
- 720
CC4: CC4:
camera_num: 4 camera_num: 4
count_anchor: count_anchor: [700, 120]
- 700
- 120
roi: roi:
points: points:
- - 50 - [50, 330]
- 330 - [1450, 330]
- - 1450 - [1450, 720]
- 330 - [50, 720]
- - 1450
- 720
- - 50
- 720
+51 -86
View File
@@ -1,14 +1,15 @@
batch: batch:
root_dir: ../VIDEOS/cycle7/K3-L1 root_dir: "../VIDEOS/cycle7/K3-L1"
camera_glob: '*cam{num}_*.mp4' camera_glob: "*cam{num}_*.mp4"
output_subdir: output output_subdir: output
compress_max_mb: 200 compress_max_mb: 200
delete_intermediate: false delete_intermediate: false
checkpoint_every_n_frames: 3000 checkpoint_every_n_frames: 3000
location: K3-L1 location: K3-L1
db_path: db/chicken_counts.db db_path: db/chicken_counts.db
cycle_start_date: '2026-05-22' cycle_start_date: "2026-05-22" #day 0
execution_mode: parallel_processes execution_mode: parallel_processes # parallel_processes (default) | tensor_batching | hybrid
stages: stages:
early_cycle: early_cycle:
day_min: 0 day_min: 0
@@ -17,25 +18,23 @@ stages:
conf: 0.1 conf: 0.1
min_box_area_px: 100 min_box_area_px: 100
roi: roi:
min_overlap_ratio: 0.1 min_overlap_ratio: 0.1 # 0.25
mid_cycle: mid_cycle:
day_min: 16 day_min: 16
day_max: 999 day_max: 999
defaults: defaults:
detection: detection:
model_path: models/NUC5070_chicken-detection-model-v26n-300e-best-2026-05-02-NEW.engine model_path: models/NUC5070_chicken-detection-model-v26n-300e-best-2026-05-02-NEW.engine # TensorRT engine (RTX 5070)
classes: classes: [0]
- 0 ignored_classes: [1, 2]
ignored_classes: conf: 0.40 # mild lift vs 0.35; 0.55 was undercounting
- 1
- 2
conf: 0.4
iou: 0.55 iou: 0.55
imgsz: 640 imgsz: 640
device: '0' device: "0"
min_box_area_px: 3000 min_box_area_px: 3000
validate_while_inside: true validate_while_inside: true
dedupe_radius_px: 0 dedupe_radius_px: 0 # off for CC1/CC4; CC2/CC3 enable below
dedupe_frames: 12 dedupe_frames: 12
detection_zone: detection_zone:
enabled: true enabled: true
@@ -48,9 +47,7 @@ defaults:
track_buffer: 90 track_buffer: 90
gate: gate:
mode: two_line mode: two_line
lines_y: lines_y: [420, 730]
- 420
- 730
direction: bottom_to_up direction: bottom_to_up
motion: motion:
enabled: true enabled: true
@@ -60,9 +57,9 @@ defaults:
reverse_enter_threshold: -1.5 reverse_enter_threshold: -1.5
reverse_exit_threshold: -0.5 reverse_exit_threshold: -0.5
debounce_frames: 12 debounce_frames: 12
min_features: 40 min_features: 40 # ↓ 60 → less optical flow computation
max_corners: 50 max_corners: 50 # ↓ 80 → fewer corner featuresis
stride_frames: 3 stride_frames: 3 # ↑ 2 → motion detection every 3rd frame
flow_scale: 0.5 flow_scale: 0.5
quality_level: 0.01 quality_level: 0.01
min_distance: 8 min_distance: 8
@@ -71,116 +68,84 @@ defaults:
show_boxes: true show_boxes: true
show_track_trails: false show_track_trails: false
trail_length: 20 trail_length: 20
show_center_marker: false show_center_marker: false # ✗ → save 1 circle per chicken
show_track_ring: false show_track_ring: false
count_anchor: count_anchor: [780, 120]
- 780
- 120
inside_box_only: true inside_box_only: true
validated_only: true validated_only: true # NEW → only draw counted chickens
pending_blink: true pending_blink: true
pending_colors: pending_colors:
- - 255 - [255, 255, 0]
- 255 - [0, 255, 255]
- 0
- - 0
- 255
- 255
display: display:
show_window: false show_window: false
encoder: auto encoder: auto
output_bitrate_kbps: 2000 output_bitrate_kbps: 2000 # ↓ 4000 → faster encoding
codec_preference: codec_preference: [avc1, mp4v, H264]
- avc1
- mp4v
- H264
performance: performance:
half: false half: false
overlay_buffer_reuse: true overlay_buffer_reuse: true
inference_stride: 2 inference_stride: 2
stream: stream:
enabled: true enabled: true # required for dashboard live feed
shm_dir: /dev/shm shm_dir: /dev/shm
interval_frames: 5 interval_frames: 5
feedback: feedback:
enabled: true enabled: true
every_n_frames: 3000 every_n_frames: 3000
save_images: false save_images: false # ✗ → disable checkpoint JPEG I/O spikes
log_to_terminal: true log_to_terminal: true
roi: roi:
inset_left_px: 60 inset_left_px: 60
inset_right_px: 60 inset_right_px: 60
inset_top_px: 0 inset_top_px: 0
inset_bottom_px: 0 inset_bottom_px: 0
min_overlap_ratio: 0.3 min_overlap_ratio: 0.30
cameras: cameras:
CC1: CC1:
camera_num: 1 camera_num: 1
count_anchor: count_anchor: [780, 120]
- 780
- 120
detection: detection:
min_box_area_px: 2500 min_box_area_px: 2500
conf: 0.35 conf: 0.35
roi: roi:
points: points:
- - 250 - [250, 330]
- 330 - [1650, 330]
- - 1650 - [1650, 720]
- 330 - [250, 720]
- - 1650
- 720
- - 250
- 720
CC2: CC2:
camera_num: 2 camera_num: 2
count_anchor: count_anchor: [900, 120]
- 900
- 120
detection: detection:
conf: 0.5 conf: 0.5 # From 0.45
dedupe_radius_px: 32 dedupe_radius_px: 32
dedupe_frames: 24 dedupe_frames: 24 # From 18
roi: roi:
points: points:
- - 20 - [20, 380]
- 380 - [1880, 380]
- - 1880 - [1880, 720]
- 380 - [20, 720]
- - 1880
- 720
- - 20
- 720
CC3: CC3:
camera_num: 3 camera_num: 3
count_anchor: count_anchor: [900, 120]
- 900
- 120
detection: detection:
dedupe_radius_px: 24 dedupe_radius_px: 24
dedupe_frames: 16 dedupe_frames: 16 # From 12
roi: roi:
points: points:
- - 20 - [20, 330]
- 330 - [1880, 330]
- - 1880 - [1880, 720]
- 330 - [20, 720]
- - 1880
- 720
- - 20
- 720
CC4: CC4:
camera_num: 4 camera_num: 4
count_anchor: count_anchor: [700, 120]
- 700
- 120
roi: roi:
points: points:
- - 50 - [50, 330]
- 330 - [1450, 330]
- - 1450 - [1450, 720]
- 330 - [50, 720]
- - 1450
- 720
- - 50
- 720
+51 -86
View File
@@ -1,14 +1,15 @@
batch: batch:
root_dir: ../VIDEOS/cycle7/K3-L2 root_dir: "../VIDEOS/cycle7/K3-L2"
camera_glob: '*cam{num}_*.mp4' camera_glob: "*cam{num}_*.mp4"
output_subdir: output output_subdir: output
compress_max_mb: 200 compress_max_mb: 200
delete_intermediate: false delete_intermediate: false
checkpoint_every_n_frames: 3000 checkpoint_every_n_frames: 3000
location: K3-L2 location: K3-L2
db_path: db/chicken_counts.db db_path: db/chicken_counts.db
cycle_start_date: '2026-05-22' cycle_start_date: "2026-05-22" #day 0
execution_mode: parallel_processes execution_mode: parallel_processes # parallel_processes (default) | tensor_batching | hybrid
stages: stages:
early_cycle: early_cycle:
day_min: 0 day_min: 0
@@ -17,25 +18,23 @@ stages:
conf: 0.1 conf: 0.1
min_box_area_px: 100 min_box_area_px: 100
roi: roi:
min_overlap_ratio: 0.1 min_overlap_ratio: 0.1 # 0.25
mid_cycle: mid_cycle:
day_min: 16 day_min: 16
day_max: 999 day_max: 999
defaults: defaults:
detection: detection:
model_path: models/NUC5070_chicken-detection-model-v26n-300e-best-2026-05-02-NEW.engine model_path: models/NUC5070_chicken-detection-model-v26n-300e-best-2026-05-02-NEW.engine # TensorRT engine (RTX 5070)
classes: classes: [0]
- 0 ignored_classes: [1, 2]
ignored_classes: conf: 0.40 # mild lift vs 0.35; 0.55 was undercounting
- 1
- 2
conf: 0.4
iou: 0.55 iou: 0.55
imgsz: 640 imgsz: 640
device: '0' device: "0"
min_box_area_px: 3000 min_box_area_px: 3000
validate_while_inside: true validate_while_inside: true
dedupe_radius_px: 0 dedupe_radius_px: 0 # off for CC1/CC4; CC2/CC3 enable below
dedupe_frames: 12 dedupe_frames: 12
detection_zone: detection_zone:
enabled: true enabled: true
@@ -48,9 +47,7 @@ defaults:
track_buffer: 90 track_buffer: 90
gate: gate:
mode: two_line mode: two_line
lines_y: lines_y: [420, 730]
- 420
- 730
direction: bottom_to_up direction: bottom_to_up
motion: motion:
enabled: true enabled: true
@@ -60,9 +57,9 @@ defaults:
reverse_enter_threshold: -1.5 reverse_enter_threshold: -1.5
reverse_exit_threshold: -0.5 reverse_exit_threshold: -0.5
debounce_frames: 12 debounce_frames: 12
min_features: 40 min_features: 40 # ↓ 60 → less optical flow computation
max_corners: 50 max_corners: 50 # ↓ 80 → fewer corner featuresis
stride_frames: 3 stride_frames: 3 # ↑ 2 → motion detection every 3rd frame
flow_scale: 0.5 flow_scale: 0.5
quality_level: 0.01 quality_level: 0.01
min_distance: 8 min_distance: 8
@@ -71,116 +68,84 @@ defaults:
show_boxes: true show_boxes: true
show_track_trails: false show_track_trails: false
trail_length: 20 trail_length: 20
show_center_marker: false show_center_marker: false # ✗ → save 1 circle per chicken
show_track_ring: false show_track_ring: false
count_anchor: count_anchor: [780, 120]
- 780
- 120
inside_box_only: true inside_box_only: true
validated_only: true validated_only: true # NEW → only draw counted chickens
pending_blink: true pending_blink: true
pending_colors: pending_colors:
- - 255 - [255, 255, 0]
- 255 - [0, 255, 255]
- 0
- - 0
- 255
- 255
display: display:
show_window: false show_window: false
encoder: auto encoder: auto
output_bitrate_kbps: 2000 output_bitrate_kbps: 2000 # ↓ 4000 → faster encoding
codec_preference: codec_preference: [avc1, mp4v, H264]
- avc1
- mp4v
- H264
performance: performance:
half: false half: false
overlay_buffer_reuse: true overlay_buffer_reuse: true
inference_stride: 2 inference_stride: 2
stream: stream:
enabled: true enabled: true # required for dashboard live feed
shm_dir: /dev/shm shm_dir: /dev/shm
interval_frames: 5 interval_frames: 5
feedback: feedback:
enabled: true enabled: true
every_n_frames: 3000 every_n_frames: 3000
save_images: false save_images: false # ✗ → disable checkpoint JPEG I/O spikes
log_to_terminal: true log_to_terminal: true
roi: roi:
inset_left_px: 60 inset_left_px: 60
inset_right_px: 60 inset_right_px: 60
inset_top_px: 0 inset_top_px: 0
inset_bottom_px: 0 inset_bottom_px: 0
min_overlap_ratio: 0.3 min_overlap_ratio: 0.30
cameras: cameras:
CC1: CC1:
camera_num: 1 camera_num: 1
count_anchor: count_anchor: [780, 120]
- 780
- 120
detection: detection:
min_box_area_px: 2500 min_box_area_px: 2500
conf: 0.35 conf: 0.35
roi: roi:
points: points:
- - 250 - [250, 330]
- 330 - [1650, 330]
- - 1650 - [1650, 720]
- 330 - [250, 720]
- - 1650
- 720
- - 250
- 720
CC2: CC2:
camera_num: 2 camera_num: 2
count_anchor: count_anchor: [900, 120]
- 900
- 120
detection: detection:
conf: 0.5 conf: 0.5 # From 0.45
dedupe_radius_px: 32 dedupe_radius_px: 32
dedupe_frames: 24 dedupe_frames: 24 # From 18
roi: roi:
points: points:
- - 20 - [20, 380]
- 380 - [1880, 380]
- - 1880 - [1880, 720]
- 380 - [20, 720]
- - 1880
- 720
- - 20
- 720
CC3: CC3:
camera_num: 3 camera_num: 3
count_anchor: count_anchor: [900, 120]
- 900
- 120
detection: detection:
dedupe_radius_px: 24 dedupe_radius_px: 24
dedupe_frames: 16 dedupe_frames: 16 # From 12
roi: roi:
points: points:
- - 20 - [20, 330]
- 330 - [1880, 330]
- - 1880 - [1880, 720]
- 330 - [20, 720]
- - 1880
- 720
- - 20
- 720
CC4: CC4:
camera_num: 4 camera_num: 4
count_anchor: count_anchor: [700, 120]
- 700
- 120
roi: roi:
points: points:
- - 50 - [50, 330]
- 330 - [1450, 330]
- - 1450 - [1450, 720]
- 330 - [50, 720]
- - 1450
- 720
- - 50
- 720
+51 -86
View File
@@ -1,14 +1,15 @@
batch: batch:
root_dir: ../VIDEOS/cycle7/K4-L1 root_dir: "../VIDEOS/cycle7/K4-L1"
camera_glob: '*cam{num}_*.mp4' camera_glob: "*cam{num}_*.mp4"
output_subdir: output output_subdir: output
compress_max_mb: 200 compress_max_mb: 200
delete_intermediate: false delete_intermediate: false
checkpoint_every_n_frames: 3000 checkpoint_every_n_frames: 3000
location: K4-L1 location: K4-L1
db_path: db/chicken_counts.db db_path: db/chicken_counts.db
cycle_start_date: '2026-05-22' cycle_start_date: "2026-05-22" #day 0
execution_mode: parallel_processes execution_mode: parallel_processes # parallel_processes (default) | tensor_batching | hybrid
stages: stages:
early_cycle: early_cycle:
day_min: 0 day_min: 0
@@ -17,25 +18,23 @@ stages:
conf: 0.1 conf: 0.1
min_box_area_px: 100 min_box_area_px: 100
roi: roi:
min_overlap_ratio: 0.1 min_overlap_ratio: 0.1 # 0.25
mid_cycle: mid_cycle:
day_min: 16 day_min: 16
day_max: 999 day_max: 999
defaults: defaults:
detection: detection:
model_path: models/NUC5070_chicken-detection-model-v26n-300e-best-2026-05-02-NEW.engine model_path: models/NUC5070_chicken-detection-model-v26n-300e-best-2026-05-02-NEW.engine # TensorRT engine (RTX 5070)
classes: classes: [0]
- 0 ignored_classes: [1, 2]
ignored_classes: conf: 0.40 # mild lift vs 0.35; 0.55 was undercounting
- 1
- 2
conf: 0.4
iou: 0.55 iou: 0.55
imgsz: 640 imgsz: 640
device: '0' device: "0"
min_box_area_px: 3000 min_box_area_px: 3000
validate_while_inside: true validate_while_inside: true
dedupe_radius_px: 0 dedupe_radius_px: 0 # off for CC1/CC4; CC2/CC3 enable below
dedupe_frames: 12 dedupe_frames: 12
detection_zone: detection_zone:
enabled: true enabled: true
@@ -48,9 +47,7 @@ defaults:
track_buffer: 90 track_buffer: 90
gate: gate:
mode: two_line mode: two_line
lines_y: lines_y: [420, 730]
- 420
- 730
direction: bottom_to_up direction: bottom_to_up
motion: motion:
enabled: true enabled: true
@@ -60,9 +57,9 @@ defaults:
reverse_enter_threshold: -1.5 reverse_enter_threshold: -1.5
reverse_exit_threshold: -0.5 reverse_exit_threshold: -0.5
debounce_frames: 12 debounce_frames: 12
min_features: 40 min_features: 40 # ↓ 60 → less optical flow computation
max_corners: 50 max_corners: 50 # ↓ 80 → fewer corner featuresis
stride_frames: 3 stride_frames: 3 # ↑ 2 → motion detection every 3rd frame
flow_scale: 0.5 flow_scale: 0.5
quality_level: 0.01 quality_level: 0.01
min_distance: 8 min_distance: 8
@@ -71,116 +68,84 @@ defaults:
show_boxes: true show_boxes: true
show_track_trails: false show_track_trails: false
trail_length: 20 trail_length: 20
show_center_marker: false show_center_marker: false # ✗ → save 1 circle per chicken
show_track_ring: false show_track_ring: false
count_anchor: count_anchor: [780, 120]
- 780
- 120
inside_box_only: true inside_box_only: true
validated_only: true validated_only: true # NEW → only draw counted chickens
pending_blink: true pending_blink: true
pending_colors: pending_colors:
- - 255 - [255, 255, 0]
- 255 - [0, 255, 255]
- 0
- - 0
- 255
- 255
display: display:
show_window: false show_window: false
encoder: auto encoder: auto
output_bitrate_kbps: 2000 output_bitrate_kbps: 2000 # ↓ 4000 → faster encoding
codec_preference: codec_preference: [avc1, mp4v, H264]
- avc1
- mp4v
- H264
performance: performance:
half: false half: false
overlay_buffer_reuse: true overlay_buffer_reuse: true
inference_stride: 2 inference_stride: 2
stream: stream:
enabled: true enabled: true # required for dashboard live feed
shm_dir: /dev/shm shm_dir: /dev/shm
interval_frames: 5 interval_frames: 5
feedback: feedback:
enabled: true enabled: true
every_n_frames: 3000 every_n_frames: 3000
save_images: false save_images: false # ✗ → disable checkpoint JPEG I/O spikes
log_to_terminal: true log_to_terminal: true
roi: roi:
inset_left_px: 60 inset_left_px: 60
inset_right_px: 60 inset_right_px: 60
inset_top_px: 0 inset_top_px: 0
inset_bottom_px: 0 inset_bottom_px: 0
min_overlap_ratio: 0.3 min_overlap_ratio: 0.30
cameras: cameras:
CC1: CC1:
camera_num: 1 camera_num: 1
count_anchor: count_anchor: [780, 120]
- 780
- 120
detection: detection:
min_box_area_px: 2500 min_box_area_px: 2500
conf: 0.35 conf: 0.35
roi: roi:
points: points:
- - 250 - [250, 330]
- 330 - [1650, 330]
- - 1650 - [1650, 720]
- 330 - [250, 720]
- - 1650
- 720
- - 250
- 720
CC2: CC2:
camera_num: 2 camera_num: 2
count_anchor: count_anchor: [900, 120]
- 900
- 120
detection: detection:
conf: 0.5 conf: 0.5 # From 0.45
dedupe_radius_px: 32 dedupe_radius_px: 32
dedupe_frames: 24 dedupe_frames: 24 # From 18
roi: roi:
points: points:
- - 20 - [20, 380]
- 380 - [1880, 380]
- - 1880 - [1880, 720]
- 380 - [20, 720]
- - 1880
- 720
- - 20
- 720
CC3: CC3:
camera_num: 3 camera_num: 3
count_anchor: count_anchor: [900, 120]
- 900
- 120
detection: detection:
dedupe_radius_px: 24 dedupe_radius_px: 24
dedupe_frames: 16 dedupe_frames: 16 # From 12
roi: roi:
points: points:
- - 20 - [20, 330]
- 330 - [1880, 330]
- - 1880 - [1880, 720]
- 330 - [20, 720]
- - 1880
- 720
- - 20
- 720
CC4: CC4:
camera_num: 4 camera_num: 4
count_anchor: count_anchor: [700, 120]
- 700
- 120
roi: roi:
points: points:
- - 50 - [50, 330]
- 330 - [1450, 330]
- - 1450 - [1450, 720]
- 330 - [50, 720]
- - 1450
- 720
- - 50
- 720
+51 -86
View File
@@ -1,14 +1,15 @@
batch: batch:
root_dir: ../VIDEOS/cycle7/K4-L2 root_dir: "../VIDEOS/cycle7/K4-L2"
camera_glob: '*cam{num}_*.mp4' camera_glob: "*cam{num}_*.mp4"
output_subdir: output output_subdir: output
compress_max_mb: 200 compress_max_mb: 200
delete_intermediate: false delete_intermediate: false
checkpoint_every_n_frames: 3000 checkpoint_every_n_frames: 3000
location: K4-L2 location: K4-L2
db_path: db/chicken_counts.db db_path: db/chicken_counts.db
cycle_start_date: '2026-05-22' cycle_start_date: "2026-05-22" #day 0
execution_mode: parallel_processes execution_mode: parallel_processes # parallel_processes (default) | tensor_batching | hybrid
stages: stages:
early_cycle: early_cycle:
day_min: 0 day_min: 0
@@ -17,25 +18,23 @@ stages:
conf: 0.1 conf: 0.1
min_box_area_px: 100 min_box_area_px: 100
roi: roi:
min_overlap_ratio: 0.1 min_overlap_ratio: 0.1 # 0.25
mid_cycle: mid_cycle:
day_min: 16 day_min: 16
day_max: 999 day_max: 999
defaults: defaults:
detection: detection:
model_path: models/NUC5070_chicken-detection-model-v26n-300e-best-2026-05-02-NEW.engine model_path: models/NUC5070_chicken-detection-model-v26n-300e-best-2026-05-02-NEW.engine # TensorRT engine (RTX 5070)
classes: classes: [0]
- 0 ignored_classes: [1, 2]
ignored_classes: conf: 0.40 # mild lift vs 0.35; 0.55 was undercounting
- 1
- 2
conf: 0.4
iou: 0.55 iou: 0.55
imgsz: 640 imgsz: 640
device: '0' device: "0"
min_box_area_px: 3000 min_box_area_px: 3000
validate_while_inside: true validate_while_inside: true
dedupe_radius_px: 0 dedupe_radius_px: 0 # off for CC1/CC4; CC2/CC3 enable below
dedupe_frames: 12 dedupe_frames: 12
detection_zone: detection_zone:
enabled: true enabled: true
@@ -48,9 +47,7 @@ defaults:
track_buffer: 90 track_buffer: 90
gate: gate:
mode: two_line mode: two_line
lines_y: lines_y: [420, 730]
- 420
- 730
direction: bottom_to_up direction: bottom_to_up
motion: motion:
enabled: true enabled: true
@@ -60,9 +57,9 @@ defaults:
reverse_enter_threshold: -1.5 reverse_enter_threshold: -1.5
reverse_exit_threshold: -0.5 reverse_exit_threshold: -0.5
debounce_frames: 12 debounce_frames: 12
min_features: 40 min_features: 40 # ↓ 60 → less optical flow computation
max_corners: 50 max_corners: 50 # ↓ 80 → fewer corner featuresis
stride_frames: 3 stride_frames: 3 # ↑ 2 → motion detection every 3rd frame
flow_scale: 0.5 flow_scale: 0.5
quality_level: 0.01 quality_level: 0.01
min_distance: 8 min_distance: 8
@@ -71,116 +68,84 @@ defaults:
show_boxes: true show_boxes: true
show_track_trails: false show_track_trails: false
trail_length: 20 trail_length: 20
show_center_marker: false show_center_marker: false # ✗ → save 1 circle per chicken
show_track_ring: false show_track_ring: false
count_anchor: count_anchor: [780, 120]
- 780
- 120
inside_box_only: true inside_box_only: true
validated_only: true validated_only: true # NEW → only draw counted chickens
pending_blink: true pending_blink: true
pending_colors: pending_colors:
- - 255 - [255, 255, 0]
- 255 - [0, 255, 255]
- 0
- - 0
- 255
- 255
display: display:
show_window: false show_window: false
encoder: auto encoder: auto
output_bitrate_kbps: 2000 output_bitrate_kbps: 2000 # ↓ 4000 → faster encoding
codec_preference: codec_preference: [avc1, mp4v, H264]
- avc1
- mp4v
- H264
performance: performance:
half: false half: false
overlay_buffer_reuse: true overlay_buffer_reuse: true
inference_stride: 2 inference_stride: 2
stream: stream:
enabled: true enabled: true # required for dashboard live feed
shm_dir: /dev/shm shm_dir: /dev/shm
interval_frames: 5 interval_frames: 5
feedback: feedback:
enabled: true enabled: true
every_n_frames: 3000 every_n_frames: 3000
save_images: false save_images: false # ✗ → disable checkpoint JPEG I/O spikes
log_to_terminal: true log_to_terminal: true
roi: roi:
inset_left_px: 60 inset_left_px: 60
inset_right_px: 60 inset_right_px: 60
inset_top_px: 0 inset_top_px: 0
inset_bottom_px: 0 inset_bottom_px: 0
min_overlap_ratio: 0.3 min_overlap_ratio: 0.30
cameras: cameras:
CC1: CC1:
camera_num: 1 camera_num: 1
count_anchor: count_anchor: [780, 120]
- 780
- 120
detection: detection:
min_box_area_px: 2500 min_box_area_px: 2500
conf: 0.35 conf: 0.35
roi: roi:
points: points:
- - 250 - [250, 330]
- 330 - [1650, 330]
- - 1650 - [1650, 720]
- 330 - [250, 720]
- - 1650
- 720
- - 250
- 720
CC2: CC2:
camera_num: 2 camera_num: 2
count_anchor: count_anchor: [900, 120]
- 900
- 120
detection: detection:
conf: 0.5 conf: 0.5 # From 0.45
dedupe_radius_px: 32 dedupe_radius_px: 32
dedupe_frames: 24 dedupe_frames: 24 # From 18
roi: roi:
points: points:
- - 20 - [20, 380]
- 380 - [1880, 380]
- - 1880 - [1880, 720]
- 380 - [20, 720]
- - 1880
- 720
- - 20
- 720
CC3: CC3:
camera_num: 3 camera_num: 3
count_anchor: count_anchor: [900, 120]
- 900
- 120
detection: detection:
dedupe_radius_px: 24 dedupe_radius_px: 24
dedupe_frames: 16 dedupe_frames: 16 # From 12
roi: roi:
points: points:
- - 20 - [20, 330]
- 330 - [1880, 330]
- - 1880 - [1880, 720]
- 330 - [20, 720]
- - 1880
- 720
- - 20
- 720
CC4: CC4:
camera_num: 4 camera_num: 4
count_anchor: count_anchor: [700, 120]
- 700
- 120
roi: roi:
points: points:
- - 50 - [50, 330]
- 330 - [1450, 330]
- - 1450 - [1450, 720]
- 330 - [50, 720]
- - 1450
- 720
- - 50
- 720
+51 -86
View File
@@ -1,14 +1,15 @@
batch: batch:
root_dir: ../VIDEOS/cycle7/K5-L1 root_dir: "../VIDEOS/cycle7/K5-L1"
camera_glob: '*cam{num}_*.mp4' camera_glob: "*cam{num}_*.mp4"
output_subdir: output output_subdir: output
compress_max_mb: 200 compress_max_mb: 200
delete_intermediate: false delete_intermediate: false
checkpoint_every_n_frames: 3000 checkpoint_every_n_frames: 3000
location: K5-L1 location: K5-L1
db_path: db/chicken_counts.db db_path: db/chicken_counts.db
cycle_start_date: '2026-05-22' cycle_start_date: "2026-05-22" #day 0
execution_mode: parallel_processes execution_mode: parallel_processes # parallel_processes (default) | tensor_batching | hybrid
stages: stages:
early_cycle: early_cycle:
day_min: 0 day_min: 0
@@ -17,25 +18,23 @@ stages:
conf: 0.1 conf: 0.1
min_box_area_px: 100 min_box_area_px: 100
roi: roi:
min_overlap_ratio: 0.1 min_overlap_ratio: 0.1 # 0.25
mid_cycle: mid_cycle:
day_min: 16 day_min: 16
day_max: 999 day_max: 999
defaults: defaults:
detection: detection:
model_path: models/NUC5070_chicken-detection-model-v26n-300e-best-2026-05-02-NEW.engine model_path: models/NUC5070_chicken-detection-model-v26n-300e-best-2026-05-02-NEW.engine # TensorRT engine (RTX 5070)
classes: classes: [0]
- 0 ignored_classes: [1, 2]
ignored_classes: conf: 0.40 # mild lift vs 0.35; 0.55 was undercounting
- 1
- 2
conf: 0.4
iou: 0.55 iou: 0.55
imgsz: 640 imgsz: 640
device: '0' device: "0"
min_box_area_px: 3000 min_box_area_px: 3000
validate_while_inside: true validate_while_inside: true
dedupe_radius_px: 0 dedupe_radius_px: 0 # off for CC1/CC4; CC2/CC3 enable below
dedupe_frames: 12 dedupe_frames: 12
detection_zone: detection_zone:
enabled: true enabled: true
@@ -48,9 +47,7 @@ defaults:
track_buffer: 90 track_buffer: 90
gate: gate:
mode: two_line mode: two_line
lines_y: lines_y: [420, 730]
- 420
- 730
direction: bottom_to_up direction: bottom_to_up
motion: motion:
enabled: true enabled: true
@@ -60,9 +57,9 @@ defaults:
reverse_enter_threshold: -1.5 reverse_enter_threshold: -1.5
reverse_exit_threshold: -0.5 reverse_exit_threshold: -0.5
debounce_frames: 12 debounce_frames: 12
min_features: 40 min_features: 40 # ↓ 60 → less optical flow computation
max_corners: 50 max_corners: 50 # ↓ 80 → fewer corner featuresis
stride_frames: 3 stride_frames: 3 # ↑ 2 → motion detection every 3rd frame
flow_scale: 0.5 flow_scale: 0.5
quality_level: 0.01 quality_level: 0.01
min_distance: 8 min_distance: 8
@@ -71,116 +68,84 @@ defaults:
show_boxes: true show_boxes: true
show_track_trails: false show_track_trails: false
trail_length: 20 trail_length: 20
show_center_marker: false show_center_marker: false # ✗ → save 1 circle per chicken
show_track_ring: false show_track_ring: false
count_anchor: count_anchor: [780, 120]
- 780
- 120
inside_box_only: true inside_box_only: true
validated_only: true validated_only: true # NEW → only draw counted chickens
pending_blink: true pending_blink: true
pending_colors: pending_colors:
- - 255 - [255, 255, 0]
- 255 - [0, 255, 255]
- 0
- - 0
- 255
- 255
display: display:
show_window: false show_window: false
encoder: auto encoder: auto
output_bitrate_kbps: 2000 output_bitrate_kbps: 2000 # ↓ 4000 → faster encoding
codec_preference: codec_preference: [avc1, mp4v, H264]
- avc1
- mp4v
- H264
performance: performance:
half: false half: false
overlay_buffer_reuse: true overlay_buffer_reuse: true
inference_stride: 2 inference_stride: 2
stream: stream:
enabled: true enabled: true # required for dashboard live feed
shm_dir: /dev/shm shm_dir: /dev/shm
interval_frames: 5 interval_frames: 5
feedback: feedback:
enabled: true enabled: true
every_n_frames: 3000 every_n_frames: 3000
save_images: false save_images: false # ✗ → disable checkpoint JPEG I/O spikes
log_to_terminal: true log_to_terminal: true
roi: roi:
inset_left_px: 60 inset_left_px: 60
inset_right_px: 60 inset_right_px: 60
inset_top_px: 0 inset_top_px: 0
inset_bottom_px: 0 inset_bottom_px: 0
min_overlap_ratio: 0.3 min_overlap_ratio: 0.30
cameras: cameras:
CC1: CC1:
camera_num: 1 camera_num: 1
count_anchor: count_anchor: [780, 120]
- 780
- 120
detection: detection:
min_box_area_px: 2500 min_box_area_px: 2500
conf: 0.35 conf: 0.35
roi: roi:
points: points:
- - 250 - [250, 330]
- 330 - [1650, 330]
- - 1650 - [1650, 720]
- 330 - [250, 720]
- - 1650
- 720
- - 250
- 720
CC2: CC2:
camera_num: 2 camera_num: 2
count_anchor: count_anchor: [900, 120]
- 900
- 120
detection: detection:
conf: 0.5 conf: 0.5 # From 0.45
dedupe_radius_px: 32 dedupe_radius_px: 32
dedupe_frames: 24 dedupe_frames: 24 # From 18
roi: roi:
points: points:
- - 20 - [20, 380]
- 380 - [1880, 380]
- - 1880 - [1880, 720]
- 380 - [20, 720]
- - 1880
- 720
- - 20
- 720
CC3: CC3:
camera_num: 3 camera_num: 3
count_anchor: count_anchor: [900, 120]
- 900
- 120
detection: detection:
dedupe_radius_px: 24 dedupe_radius_px: 24
dedupe_frames: 16 dedupe_frames: 16 # From 12
roi: roi:
points: points:
- - 20 - [20, 330]
- 330 - [1880, 330]
- - 1880 - [1880, 720]
- 330 - [20, 720]
- - 1880
- 720
- - 20
- 720
CC4: CC4:
camera_num: 4 camera_num: 4
count_anchor: count_anchor: [700, 120]
- 700
- 120
roi: roi:
points: points:
- - 50 - [50, 330]
- 330 - [1450, 330]
- - 1450 - [1450, 720]
- 330 - [50, 720]
- - 1450
- 720
- - 50
- 720
+51 -86
View File
@@ -1,14 +1,15 @@
batch: batch:
root_dir: ../VIDEOS/cycle7/K5-L2 root_dir: "../VIDEOS/cycle7/K5-L2"
camera_glob: '*cam{num}_*.mp4' camera_glob: "*cam{num}_*.mp4"
output_subdir: output output_subdir: output
compress_max_mb: 200 compress_max_mb: 200
delete_intermediate: false delete_intermediate: false
checkpoint_every_n_frames: 3000 checkpoint_every_n_frames: 3000
location: K5-L2 location: K5-L2
db_path: db/chicken_counts.db db_path: db/chicken_counts.db
cycle_start_date: '2026-05-22' cycle_start_date: "2026-05-22" #day 0
execution_mode: parallel_processes execution_mode: parallel_processes # parallel_processes (default) | tensor_batching | hybrid
stages: stages:
early_cycle: early_cycle:
day_min: 0 day_min: 0
@@ -17,25 +18,23 @@ stages:
conf: 0.1 conf: 0.1
min_box_area_px: 100 min_box_area_px: 100
roi: roi:
min_overlap_ratio: 0.1 min_overlap_ratio: 0.1 # 0.25
mid_cycle: mid_cycle:
day_min: 16 day_min: 16
day_max: 999 day_max: 999
defaults: defaults:
detection: detection:
model_path: models/NUC5070_chicken-detection-model-v26n-300e-best-2026-05-02-NEW.engine model_path: models/NUC5070_chicken-detection-model-v26n-300e-best-2026-05-02-NEW.engine # TensorRT engine (RTX 5070)
classes: classes: [0]
- 0 ignored_classes: [1, 2]
ignored_classes: conf: 0.40 # mild lift vs 0.35; 0.55 was undercounting
- 1
- 2
conf: 0.4
iou: 0.55 iou: 0.55
imgsz: 640 imgsz: 640
device: '0' device: "0"
min_box_area_px: 3000 min_box_area_px: 3000
validate_while_inside: true validate_while_inside: true
dedupe_radius_px: 0 dedupe_radius_px: 0 # off for CC1/CC4; CC2/CC3 enable below
dedupe_frames: 12 dedupe_frames: 12
detection_zone: detection_zone:
enabled: true enabled: true
@@ -48,9 +47,7 @@ defaults:
track_buffer: 90 track_buffer: 90
gate: gate:
mode: two_line mode: two_line
lines_y: lines_y: [420, 730]
- 420
- 730
direction: bottom_to_up direction: bottom_to_up
motion: motion:
enabled: true enabled: true
@@ -60,9 +57,9 @@ defaults:
reverse_enter_threshold: -1.5 reverse_enter_threshold: -1.5
reverse_exit_threshold: -0.5 reverse_exit_threshold: -0.5
debounce_frames: 12 debounce_frames: 12
min_features: 40 min_features: 40 # ↓ 60 → less optical flow computation
max_corners: 50 max_corners: 50 # ↓ 80 → fewer corner featuresis
stride_frames: 3 stride_frames: 3 # ↑ 2 → motion detection every 3rd frame
flow_scale: 0.5 flow_scale: 0.5
quality_level: 0.01 quality_level: 0.01
min_distance: 8 min_distance: 8
@@ -71,116 +68,84 @@ defaults:
show_boxes: true show_boxes: true
show_track_trails: false show_track_trails: false
trail_length: 20 trail_length: 20
show_center_marker: false show_center_marker: false # ✗ → save 1 circle per chicken
show_track_ring: false show_track_ring: false
count_anchor: count_anchor: [780, 120]
- 780
- 120
inside_box_only: true inside_box_only: true
validated_only: true validated_only: true # NEW → only draw counted chickens
pending_blink: true pending_blink: true
pending_colors: pending_colors:
- - 255 - [255, 255, 0]
- 255 - [0, 255, 255]
- 0
- - 0
- 255
- 255
display: display:
show_window: false show_window: false
encoder: auto encoder: auto
output_bitrate_kbps: 2000 output_bitrate_kbps: 2000 # ↓ 4000 → faster encoding
codec_preference: codec_preference: [avc1, mp4v, H264]
- avc1
- mp4v
- H264
performance: performance:
half: false half: false
overlay_buffer_reuse: true overlay_buffer_reuse: true
inference_stride: 2 inference_stride: 2
stream: stream:
enabled: true enabled: true # required for dashboard live feed
shm_dir: /dev/shm shm_dir: /dev/shm
interval_frames: 5 interval_frames: 5
feedback: feedback:
enabled: true enabled: true
every_n_frames: 3000 every_n_frames: 3000
save_images: false save_images: false # ✗ → disable checkpoint JPEG I/O spikes
log_to_terminal: true log_to_terminal: true
roi: roi:
inset_left_px: 60 inset_left_px: 60
inset_right_px: 60 inset_right_px: 60
inset_top_px: 0 inset_top_px: 0
inset_bottom_px: 0 inset_bottom_px: 0
min_overlap_ratio: 0.3 min_overlap_ratio: 0.30
cameras: cameras:
CC1: CC1:
camera_num: 1 camera_num: 1
count_anchor: count_anchor: [780, 120]
- 780
- 120
detection: detection:
min_box_area_px: 2500 min_box_area_px: 2500
conf: 0.35 conf: 0.35
roi: roi:
points: points:
- - 250 - [250, 330]
- 330 - [1650, 330]
- - 1650 - [1650, 720]
- 330 - [250, 720]
- - 1650
- 720
- - 250
- 720
CC2: CC2:
camera_num: 2 camera_num: 2
count_anchor: count_anchor: [900, 120]
- 900
- 120
detection: detection:
conf: 0.5 conf: 0.5 # From 0.45
dedupe_radius_px: 32 dedupe_radius_px: 32
dedupe_frames: 24 dedupe_frames: 24 # From 18
roi: roi:
points: points:
- - 20 - [20, 380]
- 380 - [1880, 380]
- - 1880 - [1880, 720]
- 380 - [20, 720]
- - 1880
- 720
- - 20
- 720
CC3: CC3:
camera_num: 3 camera_num: 3
count_anchor: count_anchor: [900, 120]
- 900
- 120
detection: detection:
dedupe_radius_px: 24 dedupe_radius_px: 24
dedupe_frames: 16 dedupe_frames: 16 # From 12
roi: roi:
points: points:
- - 20 - [20, 330]
- 330 - [1880, 330]
- - 1880 - [1880, 720]
- 330 - [20, 720]
- - 1880
- 720
- - 20
- 720
CC4: CC4:
camera_num: 4 camera_num: 4
count_anchor: count_anchor: [700, 120]
- 700
- 120
roi: roi:
points: points:
- - 50 - [50, 330]
- 330 - [1450, 330]
- - 1450 - [1450, 720]
- 330 - [50, 720]
- - 1450
- 720
- - 50
- 720