Visualization Utilities¶
Tools for plotting, attention maps, and visual analysis.
Overview¶
PrimateFace provides visualization utilities for model interpretation, result analysis, and figure generation.
Quick Start¶
from dinov2.visualization import create_visualization
# Generate feature visualization
viz = create_visualization(
images=["primate1.jpg", "primate2.jpg"],
features=extracted_features,
method="umap"
)
Feature Visualization¶
UMAP Plots¶
from dinov2.visualization import plot_umap
# Visualize feature space
plot_umap(
embeddings=dinov2_features,
labels=species_labels,
save_path="umap_plot.png",
perplexity=30
)
t-SNE Plots¶
from dinov2.visualization import plot_tsne
# Alternative dimensionality reduction
plot_tsne(
embeddings=features,
labels=labels,
n_components=2
)
Attention Maps¶
DINOv2 Attention¶
from dinov2.visualization import visualize_attention
# Show what the model focuses on
attention_map = visualize_attention(
model=dinov2_model,
image="primate_face.jpg",
layer=-1, # Last layer
head=0 # Attention head
)
Pose Model Heatmaps¶
from evals.core.visualization import plot_heatmaps
# Visualize keypoint confidence
plot_heatmaps(
image="primate.jpg",
heatmaps=model_output.heatmaps,
keypoint_names=KEYPOINT_NAMES
)
Result Visualization¶
Detection Results¶
from demos.viz_utils import draw_boxes
# Draw bounding boxes
result_img = draw_boxes(
image=img,
boxes=detections,
scores=confidence_scores,
threshold=0.5
)
Pose Results¶
from demos.viz_utils import draw_keypoints
# Draw facial landmarks
result_img = draw_keypoints(
image=img,
keypoints=landmarks,
connections=FACIAL_CONNECTIONS,
point_size=3
)
Performance Plots¶
Model Comparison¶
from evals.visualize_eval_results import plot_comparison
# Compare multiple models
plot_comparison(
results={
"MMPose": mmpose_results,
"DeepLabCut": dlc_results,
"SLEAP": sleap_results
},
metric="nme",
save_path="comparison.png"
)
Learning Curves¶
from evals.core.visualization import plot_learning_curve
# Training progress
plot_learning_curve(
train_losses=train_loss_history,
val_losses=val_loss_history,
save_path="learning_curve.png"
)
Distribution Plots¶
Genus Distribution¶
from evals.plot_genus_distribution import plot_distribution
# Dataset composition
plot_distribution(
coco_json="annotations.json",
save_path="genus_distribution.png"
)
Error Distribution¶
from evals.core.visualization import plot_error_distribution
# Analyze error patterns
plot_error_distribution(
errors=nme_scores,
bins=50,
save_path="error_dist.png"
)
Interactive Visualization¶
Gradio Interface¶
from docs.gradio.primateface_server import launch_demo
# Launch web interface
launch_demo(
model_path="model.pth",
share=True # Get public URL
)
Video Visualization¶
Trajectory Overlay¶
from demos.viz_utils import visualize_trajectory
# Show movement over time
visualize_trajectory(
video_path="primate_video.mp4",
keypoints_sequence=tracked_keypoints,
output_path="trajectory_video.mp4"
)
Export Options¶
High-Quality Figures¶
import matplotlib.pyplot as plt
# Publication-ready figures
plt.figure(dpi=300, figsize=(10, 6))
# ... create plot ...
plt.savefig("figure.pdf", bbox_inches='tight')
Animation Export¶
from matplotlib import animation
# Create animated visualization
anim = animation.FuncAnimation(fig, update_func, frames=100)
anim.save("animation.gif", writer='pillow', fps=30)