How t-mclaurin/individual-penguin-identification works
This research project builds an open-set penguin re-identification workflow: prepare individual images, train an embedding model, evaluate it, and use embeddings for visualization or population estimation. The README documents the broader workflow; sampled source confirms image cropping, tag occlusion, splitting, model construction, and embedding/population routines. Some training and evaluation wiring is documented but not fully visible in the excerpts, so links between those stages follow the README rather than inferred helper calls.
Main entry points: train_gridsearch.py Grid-search training · crop.py Detection crops · create_tf_data_csv.py Dataset splitting · pop_est_test.py Known threshold test
Components 21
Image preparation
- Detection crops
Code/crop.py - Tag occlusion
Code/tag_occluder.py - Histogram normalization
Code/database_preprocess.py - Dataset splitting
Code/utils/create_tf_data_csv.py
Model learning
- Grid-search training
Code/train_gridsearch.py - Embedding model
Code/model.py - Image augmentation
Code/utils/augmentation.py - Triplet mining
Code/utils/mining.py - Recognition evaluation
Code/train_gridsearch.py
Embedding analysis
- Embedding map
Code/updated_visualise_embeddings.py - Split-coloured map
Code/colour_visualise_embeddings.py - Medoid and poles
Code/medoid_poles_vis_embeddings.py
Population estimation
- Known threshold test
Code/pop_est_test.py - Unlabelled estimate
Code/unlabelled_pop_est.py
Other components
- Researcher
- Source photos
- MegaDetector
- Detection JSON
- Split metadata
- Trained weights
- Population results
Connections 33
- Researcher → Source photos: provides
- Researcher → MegaDetector: runs detection
- Source photos → MegaDetector: scans
- MegaDetector → Detection JSON: writes results
- Researcher → Detection crops: configures
- Source photos → Detection crops: reads images
- Detection JSON → Detection crops: provides boxes
- Detection crops → Tag occlusion: supplies images
- Tag occlusion → Histogram normalization: copies images
- Researcher → Dataset splitting: runs split
- Dataset splitting → Source photos: reads dataset
- Dataset splitting → Split metadata: writes labels
- Researcher → Grid-search training: starts search
- Grid-search training → Split metadata: uses splits
- Grid-search training → Embedding model: builds model
- Grid-search training → Trained weights: saves weights
- Grid-search training → Recognition evaluation: computes metrics
- Grid-search training → Image augmentation: uses augmentation
- Grid-search training → Triplet mining: uses mining
- Researcher → Embedding map: runs visualization
- Trained weights → Embedding map: loads weights
- Researcher → Split-coloured map: runs visualization
- Trained weights → Split-coloured map: loads weights
- Split metadata → Split-coloured map: labels images
- Researcher → Medoid and poles: runs visualization
- Trained weights → Medoid and poles: loads weights
- Split metadata → Medoid and poles: labels images
- Researcher → Known threshold test: tests thresholds
- Trained weights → Known threshold test: provides model
- Researcher → Unlabelled estimate: estimates population
- Trained weights → Unlabelled estimate: loads weights
- Unlabelled estimate → Population results: plots counts
- Known threshold test → Population results: plots errors