| --- |
| title: Wildlife Re-Identification Demo |
| emoji: 🐾 |
| colorFrom: green |
| colorTo: indigo |
| sdk: gradio |
| sdk_version: 6.5.1 |
| app_file: app.py |
| pinned: false |
| license: apache-2.0 |
| short_description: Pipeline for individual animal identification. |
| --- |
| |
| # Wildlife Re-Identification: A Coarse-to-Fine Approach |
|
|
| Welcome to the **Wildlife Re-ID Demo**! This tool demonstrates a two-step AI pipeline designed to identify individual animals (like "Marty the Zebra" or "Snowball the Bear") from photographs. |
|
|
| It uses a **"Coarse-to-Fine"** architecture, first narrowing down the list of suspects, and then carefully verifying the details. |
|
|
| ## How It Works |
|
|
| This system does not just look at the image once. It uses two different AI models working together. |
|
|
| ### Step 1: The "Coarse" Search (ArcFace) |
| **Goal:** Find the most likely candidates quickly. |
|
|
| * **The Model:** A ResNet50 neural network trained with **ArcFace Loss**. |
| * **The Process:** |
| 1. The model looks at the input image and summarizes it into a list of 512 numbers (an "embedding"). |
| 2. It compares this embedding against the known animals in our gallery. |
| 3. It mathematically calculates which known animals are "closest" to the new photo. |
| * **Analogy:** Imagine scanning a crowd and saying, *"Okay, that looks roughly like Marty, or maybe Alex."* It's fast, but it might get confused by similar-looking animals. |
|
|
| ### Step 2: The "Fine" Verification (LightGlue) |
| **Goal:** Verify the identity by checking the details. |
|
|
| * **The Model:** **LightGlue** (deep feature matcher). |
| * **The Process:** |
| 1. The system takes the Top 3 unique candidates from Step 1. |
| 2. It looks at the original images pixel-by-pixel to find matching geometric features (like the corner of an eye, a specific stripe pattern, or an ear notch). |
| 3. It draws green lines connecting these matching points. |
| * **Analogy:** Taking out a magnifying glass and saying, *"Let me check the stripe pattern on the shoulder to be 100% sure."* |
|
|
| --- |
|
|
| ## Understanding the Output |
|
|
| When you run the demo, you will see three results for every query: |
|
|
| 1. **Candidate 1:** The best guess from the Coarse (ArcFace) model. |
| 2. **Candidate 2 & 3:** The next best *unique* individuals (the "runners-up"). |
|
|
| **What do the numbers mean?** |
| * **Coarse Confidence:** How similar the "summary" of the face is (0-100%). |
| * **Geometric Matches:** The number of physical points that match between the two images. |
|
|
| --- |
|
|
| ## Technologies Used |
|
|
| * **Framework:** PyTorch & Gradio |
| * **Backbone:** ResNet50 (Fine-tuned on MiewID/Unified ReID data) |
| * **Loss Function:** ArcFace (Additive Angular Margin Loss) |
| * **Re-Ranker:** LightGlue (Local Feature Matching) |
|
|
| ## About the Project |
| This demo explores the intersection of **Computer Vision** and **Cognitive Systems Engineering**. By revealing the "runners-up" and visualizing the feature matches, we aim to make the AI's decision-making process transparent and understandable for human users. |
|
|
| ## Credits |
| This project was built by Connor Kannally and Sal Hargis at The Ohio State University under Dr. Wei-Lun (Harry) Chao |