Files
karung-counting-feedmill-se…/docs/configuration.md
T

3.8 KiB
Raw Blame History

Configuration

Three layers: environment file → zone polygons → tracker/counter tuning. Template: .env.example. Production values live in .env (git-ignored).

1. .env (production keys — predict.py / counter_dashboard.py)

Key Default Meaning
OUTPUT_DIR /opt/jetson-counter Base dir for DB + state files
DB_PATH $OUTPUT_DIR/jetson_counter.db SQLite batches/daily summaries
STATE_FILE $OUTPUT_DIR/current_batch.json Live batch state (recovered on restart)
BATCH_MODE_FILE $OUTPUT_DIR/batch_mode.json Manual vs auto batch mode
LIVE_STREAM_FRAME_PATH /dev/shm/jetson-counter/live_frame.jpg Latest annotated frame (RAM disk, dashboard MJPEG reads this)
CAMERA_NAME CC1 Camera tag stored per batch
OBJECT_LABEL karung-pakan Object tag stored per batch
DAILY_CUTOFF_TIME 06:00 Counting-day boundary (get_counting_date)
SECRET_KEY — Flask session key (change in production)
DASHBOARD_HOST / DASHBOARD_PORT 0.0.0.0 / 5000 Dashboard bind
OFFICE_PORT 5721 Second dashboard port
FLASK_DEBUG false Flask debug
RTSP_URL — Camera stream URL
MODEL_PATH auto (models/v4-best.engine > .pt > v4-best (1).pt > models/model_karung_truk.engine > .pt) Override combined-model weights (predict.py)
MODEL_MODE B Model pipeline mode A/B/C/D (see models/README.md); also settable via --model-mode or dashboard (applies on restart)
BATCH_MERGE_THRESHOLD_SECONDS 300 Merge window for adjacent batches

On Windows dev machines these resolve to d:/Belajar/menghitung karung/....

2. src/config.py keys (v3 src/main.py --env)

⚠️ Different names from the table above — the v3 loader uses its own keys:

Key Default
LOCAL_RTSP / JETSON_RTSP ""
MODEL_SACK_PATH / MODEL_TRUCK_PATH ./models/best.engine, ./models/truck-detector.engine
COUNTING_LINE_Y / _X_START / _X_END 0.60 / 0.38 / 0.72 (fractions; initial line before ROI sync)
SACK_CONF_THRESHOLD / TRUCK_CONF_THRESHOLD 0.40 / 0.50
BATCH_TIMEOUT_SECONDS 30
CSV_OUTPUT_DIR ./output
DATA_SEED 42

CLI: python -m src.main --source video.mp4 --env .env.

3. zones.json (calibrated polygons, 1920×1080 reference)

  • palet / truck / counting — zone polygons (override the hardcoded defaults in predict_new.py:429-437); scaled to actual resolution at startup.
  • left_limit / right_limit (0.27578 / 0.72578) — counting X band.
  • duplicate_circle_radius / jarak_toleransi_duplikat — spatial anti-double-count.
  • min_valid_area (15000) — perspective-area floor for valid sacks.
  • max_reid_transit_distance (400), circle_stay_timeout_sec (10.0).
  • inference_stride (2), confirm_delay_sec (0.5), exit_confirm_delay_sec (6.0).
  • external_stream_url — MediaMTX restream endpoint.

Recalibrate with get_coordinates.py / get_calib_frame.py (calib_frame.jpg).

4. cfg/tracker.yaml (FastTrack/ByteTrack tuning)

track_buffer=60 (~2.4 s lost-track hold for worker occlusion), new_track_thresh=0.30 (anti-duplicate IDs), track_high/low_thresh=0.20/0.05, match_thresh=0.85, active_occ_to_lost_thresh=15, occ_reappear_window=60, enlarge_bbox_occ=1.15, occ_cover_thresh=0.6, Kalman offsets + init_iou_suppress=0.65. Falls back to stock bytetrack.yaml if the file is missing (src/tracking.py:39).

5. rpo_iki/configs/ (alternate engine)

area_truk*.json (per-camera truck areas), cameras.json (cam1/cam2 RTSP), counting_params.json (+ counting_params_last_truck.json, hot-reloaded by count.py), model_registry.json (pinned model + metrics), telegram.json (notification settings).