G-Paris
add github link
4e1b644
---
title: Sam3 Annotation Tool
emoji: 💻
colorFrom: blue
colorTo: purple
sdk: gradio
sdk_version: 6.0.2
app_file: app.py
pinned: false
license: apache-2.0
short_description: generate segmentation image datasets using sam3
---
# SAM3 Annotation Tool
GP's interactive Gradio app to generate train datasets with annotations for one or multiple images using SAM3.
Latest code lives on github
https://github.com/G-Paris/sam3-annotation-tool
This was a big exploration of how to vibe-code my way through such a project. So give the tool some slack if you're trying to make some changes to it :)
## Features
* **Generate masks using prompts, input boxes or a combination**
* **Discard masks that are not relevant**
* **Finetune masks using point refinement**
* **Export dataset zipped or unzipped, zipped uploads directly to cvat**
## Extra
* **Zoom and move around higher res images**
* **Define cropped area to increase SAM3 inference resolution**
* **Append masks from multiple SAM inference calls per image**
* **Save&load progress when working with larger amount of images**
## Quickstart
### Prerequisites
1. **Install `uv`**
This project uses `uv` for fast Python package management.
**Linux/macOS:**
```bash
curl -LsSf https://astral.sh/uv/install.sh | sh
```
**Windows:**
```powershell
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
```
2. **Hugging Face Token**
The SAM3 model (`facebook/sam3`) is hosted on Hugging Face and may be gated. You need an access token to download it.
1. Create a Hugging Face account if you don't have one.
2. **Request Access**: Visit the [facebook/sam3 model card](https://huggingface.co/facebook/sam3) and accept the license terms to request access. You must do this before the model can be downloaded.
3. Go to [Settings > Access Tokens](https://huggingface.co/settings/tokens).
4. Create a new token with **Read** permissions. You only need read access to the SAM3 repository.
### Installation & Running
1. **Clone the repository**
```bash
git clone https://github.com/G-Paris/sam3-annotation-tool.git
cd sam3-annotation-tool
```
2. **Install dependencies**
Use `uv` to sync the project environment:
```bash
# Create virtual environment and install dependencies from uv.lock
uv sync
```
3. **Run the Application**
Use `uv run` to start the app.
You must provide your Hugging Face token (with access to `facebook/sam3`).
**Linux/macOS:**
```bash
export HF_TOKEN="hf_..."
uv run app.py
```
**Windows (PowerShell):**
```powershell
$env:HF_TOKEN="hf_..."
uv run app.py
```
*Tip: You can also create a `.env` file (not committed) to store your token.*
4. **Access the Interface**
Once the application starts, open your browser and navigate to the local URL provided in the terminal (typically `http://127.0.0.1:7860`).
## License & Legal Disclaimer
**This Tool (The Code): Apache License 2.0**
The source code of this annotation tool (UI, wrapper logic, data management) is licensed under the [Apache License 2.0](LICENSE). You are free to use, modify, and distribute this software for commercial and non-commercial purposes, provided you include the original license.
**The Model (SAM 3): Meta Custom License**
This tool uses the **Segment Anything Model 3 (SAM 3)** by Meta. The model weights and core SAM 3 definitions are subject to **Meta's Custom License**, which may have different restrictions (especially regarding commercial use or redistributing the weights).
* **We do NOT bundle SAM 3 weights** in this repository.
* The model is downloaded automatically from Hugging Face (`facebook/sam3`) using your access token.
* By using this tool, you agree to comply with Meta's license terms for SAM 3.
**Please review the separate license terms for SAM 3 explicitly on their [Hugging Face Model Card](https://huggingface.co/facebook/sam3).**
## Project Structure
- `app.py`: Main Gradio application entry point and UI definition.
- `src/sam3_annotation_tool/`: Source code for the application logic.
- `controller.py`: Manages application state and business logic.
- `inference.py`: Handles model loading and inference (SAM3).
- `schemas.py`: Pydantic data models for type safety.
- `view_helpers.py`: UI-specific helper functions and event handlers.
- `dataset_manager.py`: YOLO dataset export and management.
- `theme.py`: Custom UI theme.
- `utils.py`: General helper functions for image processing.
- `scripts/`: Utility scripts for dataset operations (cleanup, verification, analysis).
- `tests/`: Unit and integration tests.
- `pyproject.toml`: Project configuration and dependencies.
- `uv.lock`: Locked dependency versions for reproducibility.