Spaces:
Running
Running
File size: 5,270 Bytes
4518f25 4f2b4bb 4518f25 4f2b4bb 4518f25 4f2b4bb 4518f25 4f2b4bb |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 |
---
title: SAM2 Segmentation API
emoji: 🎯
colorFrom: purple
colorTo: blue
sdk: docker
app_port: 7860
pinned: false
license: apache-2.0
---
# 🎯 SAM2 Segmentation API
Мощный REST API для сегментации объектов на изображениях с использованием Meta SAM2 (Segment Anything Model 2).
## ✨ Возможности
- **🎯 Box Prompts** - выделение прямоугольником
- **🖌️ Brush Prompts** - рисование кистью (зеленый = объект, красный = фон, белый = объект)
- **📍 Point Prompts** - клики по объектам
- **🔥 Batch API** - обработка множественных объектов за один запрос
- **🖼️ Extract Objects** - автоматическое извлечение объектов с прозрачностью
- **⚡ REST API** - полная документация в Swagger UI
## 🚀 Быстрый старт
### Web интерфейс
После запуска Space откройте:
- **Простой интерфейс**: `/web` - Box промпты
- **Продвинутый**: `/web/advanced` - Box + Brush промпты
- **API документация**: `/docs` - Swagger UI
### API Endpoints
#### POST `/segment/batch` - Батчинг API (рекомендуется)
Обрабатывает множественные объекты за один запрос.
**Пример запроса:**
```json
{
"image": "data:image/jpeg;base64,...",
"prompts": [
{
"id": 0,
"type": "mask",
"data": "data:image/png;base64,...",
"label": "person",
"selected": true
}
],
"options": {
"extract_objects": true,
"include_masks": false,
"clean_masks": true
}
}
```
#### POST `/segment` - Простая сегментация
С box промптом:
```bash
curl -X POST "/segment?box_x1=50&box_y1=50&box_x2=300&box_y2=400&extract_objects=true" \
-F "file=@image.jpg"
```
## 📊 Производительность
⚠️ **CPU Version**: Работает на бесплатном CPU tier Hugging Face Spaces. Скорость обработки: ~5-10 секунд на изображение.
Для более быстрой обработки рекомендуется upgrade на GPU (Settings → Hardware).
## 🎨 Форматы масок
API поддерживает несколько форматов масок:
- **🟢 Зеленый** (R<100, G>150, B<100) - foreground (объект)
- **⚪ Белый** (R>200, G>200, B>200) - foreground (объект)
- **🔴 Красный** (R>150, G<100, B<100) - background (исключить)
## 🔧 Технологии
- Meta SAM2 2.1 (Segment Anything Model)
- FastAPI
- PyTorch
- OpenCV
- Pydantic
## 📝 Примеры использования
### Python
```python
import requests
import base64
# Загрузить изображение
with open("image.jpg", "rb") as f:
image_b64 = base64.b64encode(f.read()).decode()
# Отправить запрос
response = requests.post(
"https://YOUR-SPACE.hf.space/segment/batch",
json={
"image": f"data:image/jpeg;base64,{image_b64}",
"prompts": [{
"id": 0,
"type": "box",
"data": "",
"bbox": {"x_min": 0.1, "y_min": 0.2, "x_max": 0.5, "y_max": 0.8},
"label": "person",
"selected": True
}],
"options": {"extract_objects": True}
}
)
result = response.json()
print(f"Обработано объектов: {len(result['results'])}")
```
### JavaScript
```javascript
const response = await fetch('https://YOUR-SPACE.hf.space/segment/batch', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
image: imageBase64,
prompts: [{
id: 0,
type: "box",
data: "",
bbox: {x_min: 0.1, y_min: 0.2, x_max: 0.5, y_max: 0.8},
label: "person",
selected: true
}],
options: {extract_objects: true}
})
});
const result = await response.json();
console.log(`Обработано: ${result.results.length} объектов`);
```
## 📚 Документация
Полная интерактивная документация доступна по адресу `/docs` после запуска Space.
## 🤝 Поддержка
- Модель: SAM 2.1 Hiera Tiny (для CPU)
- Форматы изображений: JPG, PNG, WEBP, BMP
- Максимальный размер: рекомендуется до 2048x2048px для разумной скорости
## ⚡ Оптимизация для мобильных приложений
1. Уменьшайте размер изображения перед отправкой (1024x1024)
2. Используйте `include_masks: false` если контуры не нужны
3. Кэшируйте результаты на клиенте
4. Используйте батчинг API для множественных объектов
## 📄 Лицензия
Apache 2.0
## 🔗 Ссылки
- [SAM2 GitHub](https://github.com/facebookresearch/sam2)
- [SAM2 Paper](https://arxiv.org/abs/2408.00714)
|