How bbvisual/countex works
CountEx is a fine-grained visual counting system: users specify a target and a distractor, optionally with visual exemplars, and the model predicts the target count while suppressing the distractor. Its main workflow is data preparation, model inference and training, then evaluation. The repository also contains a separate count-only-supervision extension, with density-only and detection-prior/alternating-training variants. Edges reflect the README and shown source references; unsampled subsystem details and links are omitted where their wiring is not evidenced.
Main entry points: CountEX.py CountEx Model · train.py Training Entry · utils.py Data Preparation · CountEXStage2.py Detection-Prior Model
Components 21
CountEx Core
- Data Preparation
src/utils.py - CountEx Model
src/hf_model/CountEX.py - Matching Losses
src/criterion.py - Fine-Grained Trainer
src/trainer.py - Training Entry
src/train.py
Count-Only Extension
- Count-Only Data Tools
count_only/src - Count-Only Model Variants
count_only/src/hf_model - Density-Only Model
count_only/src/hf_model/CountEXDensityOnly.py - Detection-Prior Model
count_only/src/hf_model/CountEXStage2.py - Alternating Trainer
count_only/src/alternating_trainer.py - Count-Only Training
count_only/src/train.py - Alternating Training Entry
count_only/src/train_alternating.py
Modeling Infrastructure
- Grounding DINO
src/hf_model/modeling_grounding_dino.py
Evaluation
- Core Evaluation
src/eval.py - Count-Only Evaluation
count_only/src/eval.py - Density Evaluation
count_only/src/eval_density.py - Localization Evaluation
count_only/src/eval_localization.py - Matched Evaluations
count_only/src/eval_matched.py
Other components
- Researcher
- CoCount Dataset
- PairTally Benchmark
Connections 29
- Researcher → CoCount Dataset: selects data
README.md - CoCount Dataset → Training Entry: trains on
README.md - Researcher → CountEx Model: specifies query
README.md - Data Preparation → Fine-Grained Trainer: prepares batches
src/trainer.py - Training Entry → CountEx Model: loads model
src/train.py - Training Entry → Matching Losses: configures loss
src/train.py - Training Entry → Fine-Grained Trainer: creates trainer
src/train.py - Training Entry → Data Preparation: uses utilities
src/train.py - CountEx Model → Grounding DINO: extends backbone
src/hf_model/CountEX.py - Fine-Grained Trainer → Data Preparation: uses utilities
src/trainer.py - Core Evaluation → CountEx Model: evaluates model
src/eval.py - Core Evaluation → Data Preparation: uses utilities
src/eval.py - Researcher → PairTally Benchmark: selects benchmark
README.md - PairTally Benchmark → Core Evaluation: evaluates transfer
README.md - Researcher → Count-Only Data Tools: prepares supervision
count_only/src/build_acc_only_dataset.py - Count-Only Training → Count-Only Model Variants: selects variants
count_only/src/train.py - Count-Only Training → Fine-Grained Trainer: uses trainer
count_only/src/train.py - Count-Only Training → Matching Losses: uses losses
count_only/src/train.py - Count-Only Model Variants → Grounding DINO: uses backbone
count_only/src/hf_model/CountEX.py - Density-Only Model → Grounding DINO: uses backbone
count_only/src/hf_model/CountEXDensityOnly.py - Detection-Prior Model → CountEx Model: extends model
count_only/src/hf_model/CountEXStage2.py - Alternating Training Entry → Detection-Prior Model: loads variant
count_only/src/train_alternating.py - Alternating Training Entry → Alternating Trainer: creates trainer
count_only/src/train_alternating.py - Alternating Trainer → Data Preparation: uses utilities
count_only/src/alternating_trainer.py - Count-Only Evaluation → CountEx Model: evaluates model
count_only/src/eval.py - Density Evaluation → Density-Only Model: evaluates model
count_only/src/eval_density.py - Density Evaluation → Detection-Prior Model: evaluates variant
count_only/src/eval_density.py - Localization Evaluation → Detection-Prior Model: evaluates variant
count_only/src/eval_localization.py - Matched Evaluations → Detection-Prior Model: evaluates variant
count_only/src/eval_matched.py