forked from dsutanto/chicken-counting-sukawarna-det
docs: generalize Day 0 DOC arrival as headcount count only with cycle-specific weigh-in
This commit is contained in:
1 parent
ff7a679207
commit
19af5d1e41
5 files changed
+7
-7
No files matched your search
@@ -182,7 +182,7 @@ CREATE TABLE batch_runs (
|
||||
);
|
||||
```
|
||||
|
||||
> **Note**: Weight counting and growth curves start at **Cycle Day 1** (Day 0 = DOC arrival baseline 42.0g). Daily aggregations feed into the central Audrix `CHICKEN_COUNTING` (`cc_id`) and `CHICKEN_WEIGHT` (`cw_id`) tables.
|
||||
> **Note**: Weight counting and growth curves start at **Cycle Day 1** (Day 0 = DOC arrival headcount count only, as each cycle has a distinct DOC arrival weight). Daily aggregations feed into the central Audrix `CHICKEN_COUNTING` (`cc_id`) and `CHICKEN_WEIGHT` (`cw_id`) tables.
|
||||
|
||||
Data is inserted automatically by the batch runner when `location` and `db_path` are configured in the batch YAML, or manually via:
|
||||
|
||||
|
||||
@@ -85,7 +85,7 @@ erDiagram
|
||||
int total_days "NOT NULL"
|
||||
date start_date "NOT NULL (Day 0)"
|
||||
date end_date "NOT NULL"
|
||||
int doc_in_weight "NOT NULL (e.g. 42g standard)"
|
||||
int doc_in_weight "NOT NULL (Initial DOC weight for this cycle)"
|
||||
int doc_in_count "NOT NULL (Stocking inventory)"
|
||||
varchar status "30 NOT NULL"
|
||||
timestamp created_at "NOT NULL"
|
||||
@@ -170,7 +170,7 @@ erDiagram
|
||||
int cycle_id FK "References CYCLES"
|
||||
date date "NOT NULL"
|
||||
int age "NOT NULL (Cycle Day: 1+)"
|
||||
int doc_weight "NOT NULL (Starting DOC baseline, e.g. 42g)"
|
||||
int doc_weight "NOT NULL (Cycle-specific initial DOC weight)"
|
||||
float average_weight "NOT NULL (predicted_weight_g from edge)"
|
||||
int chicken_count "NOT NULL (n_weight_samples)"
|
||||
float uniformity "NOT NULL (Flock weight uniformity %)"
|
||||
|
||||
@@ -256,7 +256,7 @@ The pipeline supports ONNX (`.onnx`), PyTorch (`.pt`), and hardware-accelerated
|
||||
The pipeline dynamically adjusts detection, counting, and weight estimation based on flock age:
|
||||
|
||||
- **Day 0 (`cycle_start_date`)**: Day-Old Chicks (DOC) arrival date (default: `"2026-05-22"`).
|
||||
- **Day 0 Rule**: **Counting ONLY** (initial stocking headcount inventory). Weight estimation is bypassed because Day 0 chicks have a fixed baseline ($42.0\text{ g}$).
|
||||
- **Day 0 Rule**: **Counting ONLY** (initial stocking headcount inventory). Vision weight estimation is bypassed on Day 0 as each cycle has its own specific DOC arrival weigh-in.
|
||||
- **Day 1+ Rule**: **Counting AND Weight Estimation** runs daily across all camera videos.
|
||||
- **`early_cycle` (Days 0–15)**: Automatically applies high-sensitivity detection thresholds (`conf: 0.12`, `min_box_area_px: 200`, `min_overlap_ratio: 0.25`) for small fast-moving chicks.
|
||||
- **`mid_cycle` (Days 16+)**: Preserves standard tuned per-camera defaults (`conf: 0.35–0.50`, `min_box_area_px: 2500–3000`).
|
||||
|
||||
@@ -348,7 +348,7 @@ All SQLite database rows and JSON outputs will automatically be stamped with `"s
|
||||
The edge chicken counting pipeline aggregates physical metric measurements and predicts chicken weights during daily counting runs. Full architecture and schema mapping are documented in [`ERD.md`](ERD.md).
|
||||
|
||||
### Day 0 vs. Day 1+ Lifecycle Rule
|
||||
- **Day 0 (`cycle_start_date`)**: Day-Old Chicks (DOC) arrival date (standard baseline $42.0\text{ g}$). **Counting ONLY** to establish starting inventory headcount.
|
||||
- **Day 0 (`cycle_start_date`)**: Day-Old Chicks (DOC) arrival date. **Counting ONLY** to establish starting inventory headcount. Vision weight estimation begins at Cycle Day 1 (as each cycle has its own specific DOC arrival weigh-in).
|
||||
- **Day 1+**: **Counting AND Weight Estimation** runs daily across all floor camera feeds.
|
||||
|
||||
### Data Architecture & Storage Files
|
||||
|
||||
@@ -411,7 +411,7 @@ def generate_excel_report(db_path, output_excel_path, target_date=None):
|
||||
|
||||
ws_growth["A1"] = "Flock Weight & Growth Trajectory Analytics (Cycle 7)"
|
||||
ws_growth["A1"].font = Font(name=font_family, size=14, bold=True, color="1F4E78")
|
||||
ws_growth["A2"] = "Growth curve tracking starts at Cycle Day 1 (Day 0: DOC Arrival Baseline 42.0g)"
|
||||
ws_growth["A2"] = "Growth curve tracking starts at Cycle Day 1 (Day 0: DOC Arrival Headcount Only)"
|
||||
ws_growth["A2"].font = Font(name=font_family, size=10, italic=True, color="595959")
|
||||
|
||||
growth_headers = [
|
||||
@@ -575,7 +575,7 @@ def generate_excel_report(db_path, output_excel_path, target_date=None):
|
||||
("Default Min Box Area (px)", "3000"),
|
||||
("Tracker Architecture", "BoT-SORT (persist=True, track_buffer=90)"),
|
||||
("Gate Counting Mode", "two_line (lines_y: [420, 730], direction: bottom_to_up)"),
|
||||
("Weight Counting Start Rule", "Cycle Day 1+ (Day 0 = DOC arrival baseline 42.0g)"),
|
||||
("Weight Counting Start Rule", "Cycle Day 1+ (Day 0 = DOC arrival counting only)"),
|
||||
("Camera Metric Calibration", "px_per_cm: CC1=19.5, CC2=20.2, CC3=19.8, CC4=19.2 (Default: 20.0)"),
|
||||
("Outlier Rejection Model", "FatChicken MAD Z-score (Day <=10: z<=3.0, Day 11-24: z<=2.5, Day >24: z<=2.0)"),
|
||||
("Weight Growth Baseline", "Gompertz Ross 308 / Cobb 500 (W_max=4650g, k=0.076, t_i=25.8)"),
|
||||
|
||||
Reference in new issue
Block a user