feat: implement K{coop}-L{floor} standard, smart discovery, multi-coop runner, and move test runs to test_run_folder

This commit is contained in:
proitlab committed 2026-08-19 11:14:40 +07:00
1 parent 6723701424
commit b00923dc2b
24 files changed
+2068 -74

No files matched your search

+11
View File
@@ -0,0 +1,11 @@
#!/bin/bash
alias chicken-counter='PYTHONPATH=/home/asus/.Codes/chicken-counting-sukawarna-det/src python3 -m chicken_counter.cli'
# Declare the array
my_array=("2026-06-10" "2026-06-11" "2026-06-12" "2026-06-13" "2026-06-14" "2026-06-15" "2026-06-16" "2026-06-17" "2026-06-18" "2026-06-19")
# Loop through each item
for item in "${my_array[@]}"; do
chicken-counter batch --config configs/cycle7_batch.yaml --date ${item} --no-video
done
+38
View File
@@ -0,0 +1,38 @@
#!/bin/bash
set -u
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
if [ -d "$SCRIPT_DIR/../src" ]; then
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
else
PROJECT_ROOT="$SCRIPT_DIR"
fi
cd "$PROJECT_ROOT"
export PYTHONPATH="$PROJECT_ROOT/src"
if [ -f "$PROJECT_ROOT/venv/bin/python" ]; then
PYTHON="$PROJECT_ROOT/venv/bin/python"
else
PYTHON="python3"
fi
dates=(
"2026-06-10" "2026-06-11" "2026-06-12" "2026-06-13" "2026-06-14"
"2026-06-15" "2026-06-16" "2026-06-17" "2026-06-18" "2026-06-19"
)
cameras=("CC1" "CC2" "CC3" "CC4")
# Maximum parallel video jobs (default: 4)
MAX_JOBS="${MAX_JOBS:-4}"
echo "=== Starting per-video parallel processing with MAX_JOBS=$MAX_JOBS ==="
for date in "${dates[@]}"; do
echo "=== Starting batch for date: $date ==="
for cam in "${cameras[@]}"; do
echo "=== Launching $date ($cam) ==="
$PYTHON -m chicken_counter.cli batch --config configs/cycle7_batch_optimized.yaml --date "$date" --camera "$cam" --no-video &
done
wait || true
echo "=== Date $date completed ==="
done
echo "=== All video processing jobs completed ==="
+37
View File
@@ -0,0 +1,37 @@
#!/bin/bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
if [ -d "$SCRIPT_DIR/../src" ]; then
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
else
PROJECT_ROOT="$SCRIPT_DIR"
fi
cd "$PROJECT_ROOT"
export PYTHONPATH="$PROJECT_ROOT/src"
if [ -f "$PROJECT_ROOT/venv/bin/python" ]; then
PYTHON="$PROJECT_ROOT/venv/bin/python"
else
PYTHON="python3"
fi
dates=("$1")
else
dates=(
"2026-06-10" "2026-06-11" "2026-06-12" "2026-06-13" "2026-06-14"
"2026-06-15" "2026-06-16" "2026-06-17" "2026-06-18" "2026-06-19"
)
fi
echo "=== Starting Hybrid Execution Mode (Threaded CPU + Batched GPU) ==="
for date in "${dates[@]}"; do
echo "=== Running hybrid batch for date: $date ==="
$PYTHON -m chicken_counter.cli batch \
--config configs/cycle7_batch_optimized.yaml \
--date "$date" \
--mode hybrid \
--no-video
done
echo "=== All hybrid batch processing completed ==="
+49
View File
@@ -0,0 +1,49 @@
#!/bin/bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
export PYTHONPATH="$SCRIPT_DIR/src"
if [ -f "$SCRIPT_DIR/venv/bin/python" ]; then
PYTHON="$SCRIPT_DIR/venv/bin/python"
else
PYTHON="python3"
fi
CONFIG_FILE="${CONFIG_FILE:-configs/mortality_config.yaml}"
INPUT_PATH="${1:-}"
OUTPUT_DIR="${2:-}"
echo "=== Starting Whole-Image Mortality Chicken Detection ==="
echo "Config File: $CONFIG_FILE"
if [ -n "$INPUT_PATH" ]; then
echo "Input Path Override: $INPUT_PATH"
fi
if [ -n "$OUTPUT_DIR" ]; then
echo "Output Dir Override: $OUTPUT_DIR"
fi
CMD=($PYTHON -m chicken_counter.cli mortality --config "$CONFIG_FILE")
if [ -n "$INPUT_PATH" ]; then
CMD+=(--input "$INPUT_PATH")
fi
if [ -n "$OUTPUT_DIR" ]; then
CMD+=(--output-dir "$OUTPUT_DIR")
fi
if [ -n "${CONF:-}" ]; then
CMD+=(--conf "$CONF")
fi
if [ -n "${IOU:-}" ]; then
CMD+=(--iou "$IOU")
fi
if [ -n "${MIN_AREA:-}" ]; then
CMD+=(--min-area "$MIN_AREA")
fi
if [ -n "${DEDUPE_RADIUS:-}" ]; then
CMD+=(--dedupe-radius "$DEDUPE_RADIUS")
fi
"${CMD[@]}"
echo "=== Mortality Detection Completed ==="
+37
View File
@@ -0,0 +1,37 @@
#!/bin/bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
if [ -d "$SCRIPT_DIR/../src" ]; then
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
else
PROJECT_ROOT="$SCRIPT_DIR"
fi
cd "$PROJECT_ROOT"
export PYTHONPATH="$PROJECT_ROOT/src"
if [ -f "$PROJECT_ROOT/venv/bin/python" ]; then
PYTHON="$PROJECT_ROOT/venv/bin/python"
else
PYTHON="python3"
fi
dates=("$1")
else
dates=(
"2026-06-10" "2026-06-11" "2026-06-12" "2026-06-13" "2026-06-14"
"2026-06-15" "2026-06-16" "2026-06-17" "2026-06-18" "2026-06-19"
)
fi
echo "=== Starting Tensor Batching processing ==="
for date in "${dates[@]}"; do
echo "=== Running tensor batch for date: $date ==="
$PYTHON -m chicken_counter.cli batch \
--config configs/cycle7_batch_optimized.yaml \
--date "$date" \
--mode tensor_batching \
--no-video
done
echo "=== All tensor batch processing completed ==="
+37
View File
@@ -0,0 +1,37 @@
#!/bin/bash
set -u
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
if [ -d "$SCRIPT_DIR/../src" ]; then
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
else
PROJECT_ROOT="$SCRIPT_DIR"
fi
cd "$PROJECT_ROOT"
export PYTHONPATH="$PROJECT_ROOT/src"
if [ -f "$PROJECT_ROOT/venv/bin/python" ]; then
PYTHON="$PROJECT_ROOT/venv/bin/python"
else
PYTHON="python3"
fi
dates=(
"2026-05-23"
)
cameras=("CC1" "CC2" "CC3" "CC4")
# Maximum parallel video jobs (default: 4)
MAX_JOBS="${MAX_JOBS:-4}"
echo "=== Starting per-video parallel processing with video output for 2026-05-23 (MAX_JOBS=$MAX_JOBS) ==="
for date in "${dates[@]}"; do
echo "=== Starting batch for date: $date ==="
for cam in "${cameras[@]}"; do
echo "=== Launching $date ($cam) ==="
$PYTHON -m chicken_counter.cli batch --config configs/cycle7_batch_optimized.yaml --date "$date" --camera "$cam" --output-subdir output_video &
done
wait || true
echo "=== Date $date completed ==="
done
echo "=== All video processing jobs completed ==="
+40
View File
@@ -0,0 +1,40 @@
#!/bin/bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
if [ -d "$SCRIPT_DIR/../src" ]; then
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
else
PROJECT_ROOT="$SCRIPT_DIR"
fi
cd "$PROJECT_ROOT"
export PYTHONPATH="$PROJECT_ROOT/src"
if [ -f "$PROJECT_ROOT/venv/bin/python" ]; then
PYTHON="$PROJECT_ROOT/venv/bin/python"
else
PYTHON="python3"
fi
dates=(
"2026-05-24"
)
cameras=("CC1" "CC2" "CC3" "CC4")
# Maximum parallel video jobs (default: 4)
MAX_JOBS="${MAX_JOBS:-4}"
echo "=== Starting per-video parallel processing with video output for 2026-05-24 (MAX_JOBS=$MAX_JOBS) ==="
for date in "${dates[@]}"; do
for cam in "${cameras[@]}"; do
echo "=== Launching $date ($cam) ==="
$PYTHON -m chicken_counter.cli batch --config configs/cycle7_batch_optimized.yaml --date "$date" --camera "$cam" --output-subdir output_video &
# Throttle active background jobs to MAX_JOBS
while [ "$(jobs -r -p | wc -l)" -ge "$MAX_JOBS" ]; do
sleep 1
done
done
done
wait
echo "=== All video processing jobs completed ==="
+40
View File
@@ -0,0 +1,40 @@
#!/bin/bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
if [ -d "$SCRIPT_DIR/../src" ]; then
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
else
PROJECT_ROOT="$SCRIPT_DIR"
fi
cd "$PROJECT_ROOT"
export PYTHONPATH="$PROJECT_ROOT/src"
if [ -f "$PROJECT_ROOT/venv/bin/python" ]; then
PYTHON="$PROJECT_ROOT/venv/bin/python"
else
PYTHON="python3"
fi
dates=(
"2026-06-06"
)
cameras=("CC1" "CC2" "CC3" "CC4")
# Maximum parallel video jobs (default: 4)
MAX_JOBS="${MAX_JOBS:-4}"
echo "=== Starting per-video parallel processing with video output for 2026-06-06 (MAX_JOBS=$MAX_JOBS) ==="
for date in "${dates[@]}"; do
for cam in "${cameras[@]}"; do
echo "=== Launching $date ($cam) ==="
$PYTHON -m chicken_counter.cli batch --config configs/cycle7_batch_optimized.yaml --date "$date" --camera "$cam" --output-subdir output_video &
# Throttle active background jobs to MAX_JOBS
while [ "$(jobs -r -p | wc -l)" -ge "$MAX_JOBS" ]; do
sleep 1
done
done
done
wait
echo "=== All video processing jobs completed ==="
+40
View File
@@ -0,0 +1,40 @@
#!/bin/bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
if [ -d "$SCRIPT_DIR/../src" ]; then
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
else
PROJECT_ROOT="$SCRIPT_DIR"
fi
cd "$PROJECT_ROOT"
export PYTHONPATH="$PROJECT_ROOT/src"
if [ -f "$PROJECT_ROOT/venv/bin/python" ]; then
PYTHON="$PROJECT_ROOT/venv/bin/python"
else
PYTHON="python3"
fi
dates=(
"2026-06-16"
)
cameras=("CC1" "CC2" "CC3" "CC4")
# Maximum parallel video jobs (default: 4)
MAX_JOBS="${MAX_JOBS:-4}"
echo "=== Starting per-video parallel processing with video output for 2026-06-16 (MAX_JOBS=$MAX_JOBS) ==="
for date in "${dates[@]}"; do
for cam in "${cameras[@]}"; do
echo "=== Launching $date ($cam) ==="
$PYTHON -m chicken_counter.cli batch --config configs/cycle7_batch_optimized.yaml --date "$date" --camera "$cam" --output-subdir output_video &
# Throttle active background jobs to MAX_JOBS
while [ "$(jobs -r -p | wc -l)" -ge "$MAX_JOBS" ]; do
sleep 1
done
done
done
wait
echo "=== All video processing jobs completed ==="
+40
View File
@@ -0,0 +1,40 @@
#!/bin/bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
if [ -d "$SCRIPT_DIR/../src" ]; then
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
else
PROJECT_ROOT="$SCRIPT_DIR"
fi
cd "$PROJECT_ROOT"
export PYTHONPATH="$PROJECT_ROOT/src"
if [ -f "$PROJECT_ROOT/venv/bin/python" ]; then
PYTHON="$PROJECT_ROOT/venv/bin/python"
else
PYTHON="python3"
fi
dates=(
"2026-06-18"
)
cameras=("CC1" "CC2" "CC3" "CC4")
# Maximum parallel video jobs (default: 4)
MAX_JOBS="${MAX_JOBS:-4}"
echo "=== Starting per-video parallel processing with video output for 2026-06-18 (MAX_JOBS=$MAX_JOBS) ==="
for date in "${dates[@]}"; do
for cam in "${cameras[@]}"; do
echo "=== Launching $date ($cam) ==="
$PYTHON -m chicken_counter.cli batch --config configs/cycle7_batch_optimized.yaml --date "$date" --camera "$cam" --output-subdir output_video &
# Throttle active background jobs to MAX_JOBS
while [ "$(jobs -r -p | wc -l)" -ge "$MAX_JOBS" ]; do
sleep 1
done
done
done
wait
echo "=== All video processing jobs completed ==="