Roboflow

Roboflow

Roboflow는 컴퓨터 비전(Computer Vision) 애플리케이션을 처음부터 끝까지 만들 수 있게 도와주는 엔드투엔드 플랫폼이에요. 데이터셋을 업로드하고 관리·어노테이션하는 부분부터 모델 훈련, 그리고 클라우드 GPU나 엣지 디바이스 배포까지 한 곳에서 처리할 수 있답니다. "아이디어에서 배포된 애플리케이션까지" 한 번에 갈 수 있다는 게 Roboflow의 핵심 가치예요.

출처: 문서

본문

Roboflow는 컴퓨터 비전 작업을 크게 네 가지 축으로 나눠서 지원해요.

  • 데이터셋 (Datasets): 이미지·비디오 데이터셋을 업로드하고, 관리하고, 어노테이션하고, 버전을 만들 수 있어요. 객체 감지(Object Detection), 분류(Classification), 세그멘테이션(Segmentation), 키포인트(Keypoints) 등 프로젝트 유형을 지원하며, S3·GCS·Azure 같은 클라우드 스토리지에서도 데이터를 가져올 수 있어요.
  • 모델 (Models): 몇 번의 클릭만으로 최신(state-of-the-art) 모델을 훈련할 수 있어요. 훈련 그래프를 실시간으로 보면서 진행 상황을 확인하고, 완료되면 mAP, precision, recall, F1 같은 평가 지표를 확인할 수 있어요.
  • 배포 (Deployments): 클라우드에서 모델을 실행하거나 Docker로 내 하드웨어에서 직접 실행할 수 있어요. 설정할 하드웨어가 따로 필요 없는 서버리스(Serverless) 방식도 지원해요.
  • 워크플로우 (Workflows): 다단계(multi-stage) 비전 워크플로우를 어디에서든 실행할 수 있어요.

데이터셋 관리와 어노테이션

Roboflow에서 데이터를 관리하고 라벨링할 수 있는 기능은 이렇게 나뉘어요.

  • Create & Annotate: 프로젝트 만들기, 이미지·비디오·어노테이션 업로드, 데이터셋 업로드/다운로드, Roboflow Annotate(수동 도구·단축키·팀 협업), 그리고 Label Assist, Smart Select, Box Prompting, Auto Label 같은 AI 라벨링 기능이 있어요.
  • Manage & Version: 배치·검색·클래스·태그로 데이터를 정리하고, 전처리(preprocessing)와 증강(augmentation)을 적용해 버전별 스냅샷을 만들 수 있어요. 클래스 균형과 이미지 크기 인사이트를 보여주는 Dataset Health Check도 제공해요.
  • Universe: 200k+ 개의 공개 데이터셋과 모델을 찾아보고, 포크(fork)해서 바로 활용할 수 있는 Roboflow Universe가 있어요.

모델 훈련 해보기 (짧은 비디오로 객체 감지 모델 만들기)

공식 가이드는 30초짜리 비디오 하나로 커스텀 객체 감지 모델을 만들어 API로 호출하는 흐름을 보여줘요. Roboflow가 비디오에서 프레임을 뽑고, Auto Label이 박스를 그리고, 그 데이터셋으로 모델을 훈련시켜요. 예시에서는 감자(potato) 감지 모델을 만드는데, 원하는 객체로 바꿔서 쓸 수 있어요.

  1. 프로젝트 만들기: app.roboflow.com에 로그인하고, Projects 탭에서 Object Detection 타입 프로젝트를 만들어요.
  2. 데이터 업로드: 이미지, 비디오, 어노테이션 파일, PDF를 업로드해요. 30초 비디오를 초당 1.4프레임으로 뽑으면 42장의 이미지가 생겨요. 데이터가 없다면 Roboflow Universe에서 데이터셋을 가져올 수도 있어요.
  3. Auto Label로 라벨링: 클래스 이름이나 객체 설명(여기서는 potato)을 입력하면 자동으로 라벨링해요. 신뢰도(confidence) 임계값을 높이면 확실한 박스만 유지해요.
  4. 어노테이션 리뷰: 각 이미지에서 박스를 확인하고, 잘못된 건 지우거나 Smart Select로 직접 그려서 보완해요.
  5. 버전 만들고 훈련: 이미지를 train, validation, test 세트로 나누고 RF-DETR(Medium) 같은 모델로 훈련시켜요. 라이브 훈련 그래프를 보면서 대기하고, 완료 시 mAP·precision·recall·F1 평가 지표를 확인해요.
  6. 모델 배포: 워크플로우에 사용하거나 단독으로 배포해요. 여기선 클라우드 호스팅 Serverless Cloud API를 사용해요.
  7. 결과 시각화: bounding box를 그리려면 Roboflow의 오픈소스 어노테이션 라이브러리인 supervision을 써요. 설치하고 JSON 예측 결과를 불러와 박스를 그려요.
pip install supervision
import cv2
import supervision as sv

detections = sv.Detections.from_inference(result)
image = cv2.imread(image_path)
image = sv.BoxAnnotator().annotate(image, detections)
cv2.imwrite("annotated.jpg", image)

Serverless Cloud API로 모델 호출하기

Serverless Cloud API는 Roboflow 클라우드의 GPU에서 모델과 워크플로우를 실행해요. 이미지를 보내면 결과를 돌려받는 구조라서 설정할 하드웨어나 유지할 서버가 없어요. "taxi", "blue bus", "bush" 같은 단어만으로 이미지 속 객체를 찾는 SAM3 모델을 쓸 수도 있어요.

먼저 API 키를 환경 변수로 만들어요.

export ROBOFLOW_API_KEY="your-key-here"

의존성을 설치해요. supervision은 cv2와 numpy를 함께 가져와요.

pip install -U supervision

그 다음 serverless.roboflow.com/sam3/concept_segment로 POST 요청을 보내 객체를 찾아요. sv.Detections.from_sam3가 그 결과를 supervision이 그릴 수 있는 형태로 바꿔줘요.

import os
import base64
import cv2
import requests
import supervision as sv

image = sv.load_image_from_url("https://media.roboflow.com/quickstart/traffic.jpg")
image_b64 = base64.b64encode(content).decode("utf-8")
h, w = image.shape[:2]

response = requests.post(
    "https://serverless.roboflow.com/sam3/concept_segment",
    headers={"Authorization": f"Bearer {os.environ['ROBOFLOW_API_KEY']}"},
    json={
        "image": {"type": "base64", "value": image_b64},
        "prompts": [
            {"type": "text", "text": "taxi"},
            {"type": "text", "text": "blue bus"},
            {"type": "text", "text": "bush"},
        ],
    },
)

detections = sv.Detections.from_sam3(response.json(), (w, h))
annotated = sv.MaskAnnotator().annotate(image.copy(), detections)
cv2.imwrite("sam3.jpg", annotated)

SDK를 쓰는 방식도 있어요. inference-sdksupervision을 설치하면 InferenceHTTPClient로 더 간단하게 클라우드에 이미지를 보내고 결과를 받을 수 있어요.

pip install -U inference-sdk supervision
import os
import cv2
import supervision as sv
from inference_sdk import InferenceHTTPClient, InferenceConfiguration

image = sv.load_image_from_url("https://media.roboflow.com/quickstart/traffic.jpg")
h, w = image.shape[:2]

client = InferenceHTTPClient(
    api_url="https://serverless.roboflow.com",
    api_key=os.environ["ROBOFLOW_API_KEY"],
).configure(
    InferenceConfiguration(confidence_threshold=0.5)
)

AI 에이전트와 CLI/SDK

Roboflow는 개발자 경험도 중요하게 생각해요. Roboflow CLIPython SDK를 제공하고, 비전 앱을 개발할 수 있는 AI 에이전트(Agents) 기능과 MCP 서버도 지원해요. 덕분에 비전 파이프라인을 코드로 직접 다루거나, 에이전트 기반 워크플로우에 통합할 수 있어요.

더 알아보기 (Learn more)