style: format K*-L*.yaml configs with exact inline comments and flow-style [x, y] coordinates
This commit is contained in:
1 parent
b00923dc2b
commit
8fe2f88f12
10 files changed
+510
-860
No files matched your search
+51
-86
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
|
|
||||||
Reference in new issue
Block a user