Files
2nd/10_Wiki/Topics/AI_and_ML/Segmentsai.md
T
2026-05-10 22:08:15 +09:00

176 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
id: wiki-2026-0508-segmentsai
title: Segments.ai
category: 10_Wiki/Topics
status: verified
canonical_id: self
aliases: [Segments.ai, segments-ai, CV Annotation Platform]
duplicate_of: none
source_trust_level: A
confidence_score: 0.85
verification_status: applied
tags: [computer-vision, annotation, labeling, dataset, mlops]
raw_sources: []
last_reinforced: 2026-05-10
github_commit: pending
tech_stack:
language: python
framework: segments-ai-sdk
---
# Segments.ai
## 매 한 줄
> **"매 computer vision 매 labeling platform — 2D/3D segmentation, point cloud, AI-assisted"**. 매 production tool for multi-modal CV datasets — 매 SAM 2 integration, lidar cuboid, semantic/instance/panoptic segmentation. 매 alternative: Roboflow, Scale AI, Labelbox, CVAT.
## 매 핵심
### 매 Modalities
- **2D**: Bounding box, polygon, semantic, instance, panoptic, keypoint.
- **3D point cloud**: 매 cuboid, segmentation (autonomous driving).
- **Multi-sensor**: 매 synced lidar + camera (매 AV use case).
- **Image sequence / video**: 매 tracking 가 supported.
### 매 AI-assisted
- 매 SAM 2 integration: 매 click → instance mask.
- 매 model-in-the-loop: 매 your trained model 매 pre-label → human correct.
- 매 active learning: 매 uncertain samples 매 priority queue.
### 매 Dataset export
- COCO, YOLO, Pascal VOC, Cityscapes formats.
- HuggingFace `datasets` integration.
- 매 versioning: 매 release immutable snapshots.
### 매 응용
1. Autonomous driving lidar+camera labeling.
2. Medical imaging segmentation.
3. Robotics grasp annotation.
4. Pre-training dataset curation (매 SAM bootstrap).
## 💻 패턴
### Upload dataset
```python
from segments import SegmentsClient
client = SegmentsClient(api_key="YOUR_KEY")
dataset = client.add_dataset(
name="my-org/road-scenes",
task_type="segmentation-bitmap",
description="Highway driving scenes",
)
for img_path in image_paths:
asset = client.upload_asset(open(img_path, "rb"), filename=img_path.name)
client.add_sample(
dataset_identifier="my-org/road-scenes",
name=img_path.name,
attributes={"image": {"url": asset.url}},
)
```
### Pre-label with SAM 2
```python
from segments.utils import bitmap2file
import numpy as np
from sam2.build_sam import build_sam2
from sam2.sam2_image_predictor import SAM2ImagePredictor
sam = build_sam2("configs/sam2.1_hiera_l.yaml", "sam2_hiera_large.pt")
predictor = SAM2ImagePredictor(sam)
predictor.set_image(image)
masks, _, _ = predictor.predict(point_coords=[[x, y]], point_labels=[1])
mask = masks[0].astype(np.uint8)
bitmap_file = bitmap2file(mask, is_segmentation_bitmap=True)
asset = client.upload_asset(bitmap_file, filename="mask.png")
client.add_label(
sample_uuid=sample.uuid,
labelset="ground-truth",
attributes={"format_version": "0.1", "annotations": [...], "segmentation_bitmap": {"url": asset.url}},
)
```
### Active learning loop
```python
def active_learning_round(model, unlabeled_samples, k=100):
scores = []
for s in unlabeled_samples:
img = load_image(s.attributes["image"]["url"])
logits = model.predict(img)
entropy = -(logits.softmax(-1) * logits.log_softmax(-1)).sum()
scores.append((s, entropy.item()))
top = sorted(scores, key=lambda x: -x[1])[:k]
for s, _ in top:
client.update_sample(s.uuid, priority=10) # 매 high priority
```
### Export to HuggingFace
```python
from segments.huggingface import release2dataset
release = client.add_release("my-org/road-scenes", name="v1.0")
hf_dataset = release2dataset(release)
hf_dataset.push_to_hub("my-username/road-scenes-v1")
```
### 3D point cloud cuboid
```python
client.add_sample(
dataset_identifier="my-org/lidar",
name="frame_001",
attributes={
"pcd": {"url": "s3://.../frame_001.pcd", "type": "pcd"},
"ego_pose": {"position": {"x": 0, "y": 0, "z": 0}, "heading": {...}},
"default_z": -1.5,
},
)
```
### Webhook-driven CI
```python
# Flask endpoint receiving Segments.ai webhook
@app.post("/segments-webhook")
def on_label_finalized(req):
event = req.json
if event["action"] == "labelset.released":
trigger_training_pipeline(release_uuid=event["release"]["uuid"])
return {"ok": True}
```
## 매 결정 기준
| 상황 | Approach |
|---|---|
| Multi-modal AV (lidar+cam) | 매 Segments.ai 또는 Scale AI |
| 2D bbox only | 매 Roboflow (cheaper) |
| Self-host required | 매 CVAT |
| Enterprise ops | 매 Labelbox |
| Quick prototype | 매 Roboflow / LabelStudio |
**기본값**: 매 lidar+camera 면 Segments.ai, 매 2D-only 면 Roboflow.
## 🔗 Graph
- 부모: [[Data Annotation]] · [[MLOps]]
- 변형: [[Roboflow]] · [[Scale AI]] · [[Labelbox]] · [[CVAT]]
- 응용: [[Autonomous Driving Datasets]] · [[Medical Imaging]] · [[Robotics]]
- Adjacent: [[SAM 2]] · [[Active Learning]] · [[HuggingFace Datasets]]
## 🤖 LLM 활용
**언제**: 매 production CV labeling pipeline, 매 multi-modal sensor fusion dataset.
**언제 X**: 매 LLM text labeling (Argilla 사용), 매 small one-off (LabelStudio OSS).
## ❌ 안티패턴
- **No version control**: 매 release snapshot 무시 → 매 reproducibility 불가.
- **Manual-only labeling**: 매 SAM pre-label 무시 → 10× slower.
- **Skip QA**: 매 reviewer-disagreement metric 무시 → noisy labels.
## 🧪 검증 / 중복
- Verified (segments.ai docs, Python SDK v1.x).
- 신뢰도 B+ (commercial product, 매 docs 매 reliable but 매 non-academic).
## 🕓 Changelog
| 날짜 | 변경 |
|---|---|
| 2026-05-08 | Phase 1 |
| 2026-05-10 | Manual cleanup — SAM 2, active learning, lidar workflow |