|
--- |
|
title: Imagebind |
|
emoji: 📚 |
|
colorFrom: red |
|
colorTo: green |
|
sdk: docker |
|
pinned: false |
|
license: mit |
|
short_description: Small imagebind api implementation |
|
--- |
|
|
|
# ImageBind API Implementation |
|
|
|
A FastAPI implementation of Facebook's ImageBind model for cross-modal embeddings. |
|
|
|
## Local Setup |
|
|
|
1. Install system dependencies: |
|
|
|
```bash |
|
sudo apt-get update && sudo apt-get install -y ffmpeg libsndfile1 |
|
``` |
|
|
|
2. Create and activate a virtual environment: |
|
|
|
```bash |
|
python -m venv venv |
|
source venv/bin/activate # On Windows: venv\Scripts\activate |
|
``` |
|
|
|
3. Install Python dependencies: |
|
|
|
```bash |
|
pip install --no-cache-dir --upgrade -r requirements.txt |
|
``` |
|
|
|
4. Download and setup ImageBind: |
|
|
|
```bash |
|
python setup_imagebind.py |
|
pip install --no-cache-dir . |
|
``` |
|
|
|
## Docker Setup |
|
|
|
Build and run the container: |
|
|
|
```bash |
|
docker build -t imagebind-api . |
|
docker run -p 7860:7860 imagebind-api |
|
``` |
|
|
|
## API Endpoints |
|
|
|
The API will be available at `http://localhost:7860` with the following endpoints: |
|
|
|
### POST `/compute_embeddings` |
|
|
|
Generate embeddings for images, audio files, and text. |
|
|
|
### POST `/compute_similarities` |
|
|
|
Compute similarities between embeddings with advanced filtering options: |
|
|
|
- Threshold filtering for minimum similarity scores |
|
- Top-K results limitation |
|
- Optional self-similarity inclusion |
|
- Score normalization |
|
- Detailed match information including original file/text references |
|
- Statistical analysis of similarity scores |
|
|
|
### GET `/health` |
|
|
|
Basic health check endpoint |
|
|
|
For detailed API documentation, visit `http://localhost:7860/docs` |
|
|
|
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference |
|
|
|
## API Authentication |
|
|
|
The API uses Bearer token authentication. You need to include an authorization header with your API token in all requests: |
|
|
|
```bash |
|
# Set your API token as an environment variable |
|
export API_TOKEN="your-api-token-here" |
|
|
|
# Example curl request with authentication |
|
curl -X POST "http://localhost:7860/compute_embeddings" \ |
|
-H "Authorization: Bearer ${API_TOKEN}" \ |
|
-H "Content-Type: multipart/form-data" \ |
|
-F "texts=example text" |
|
``` |
|
|
|
When running the Docker container, you can set the API token as an environment variable: |
|
|
|
```bash |
|
docker run -p 7860:7860 -e API_TOKEN="your-api-token-here" imagebind-api |
|
``` |
|
|