Skip to content
Announcements6 min read

Potato 2.1: 인스턴스 표시, 비주얼 AI, 스팬 연결

Potato 2.1.0은 인스턴스 표시 시스템, 이미지 및 비디오 어노테이션을 위한 비주얼 AI 지원, 스팬 연결, 다중 필드 스팬, 레이아웃 커스터마이징을 제공합니다.

Potato Team

참고: 이 게시물은 출시 당시의 Potato 2.1을 설명합니다. 일부 설정 키와 기능은 이후 버전에서 업데이트되었습니다. 최신 설정 구문은 현재 문서를 참조하세요.

Potato 2.1.0이 출시되었습니다. 다섯 가지를 추가했습니다. 제대로 된 인스턴스 표시 시스템, 이미지 및 비디오 어노테이션을 위한 AI 지원, 스팬 연결, 다중 필드 스팬, 그리고 사용자 정의 레이아웃입니다.

인스턴스 표시 시스템

2.1의 가장 큰 추가 사항은 instance_display 설정 블록입니다. 이전에는 라디오 버튼 옆에 이미지를 표시하려면 min_annotations: 0으로 image_annotation 스키마를 만드는 것 같은 번거로운 우회책이 필요했습니다. 이제 무엇을 표시할지와 무엇을 수집할지를 별도로 지정할 수 있습니다.

yaml
instance_display:
  layout:
    direction: horizontal
    gap: 24px
  fields:
    - key: image_url
      type: image
      label: "Image to Classify"
      display_options:
        max_width: 600
        zoomable: true
    - key: description
      type: text
      label: "Context"
 
annotation_schemes:
  - annotation_type: radio
    name: category
    labels: [nature, urban, people, objects]

11가지 콘텐츠 유형을 지원합니다. text, html, image, video, audio, dialogue, pairwise, code, spreadsheet, document, pdf입니다. 여러 표시 필드를 어떤 어노테이션 스키마와도 조합할 수 있고, 가로 또는 세로로 배치할 수 있으며, span_target: true로 텍스트 필드에 스팬 어노테이션을 켤 수 있습니다.

사람들이 요청해 온 기능 중 하나는 턴별 대화 평가입니다. 개별 대화 턴에 인라인 리커트 위젯을 넣을 수 있어, 어노테이터가 대화 화면을 벗어나지 않고 특정 화자를 평가할 수 있습니다.

전체 인스턴스 표시 문서 읽기 →

다중 필드 스팬 어노테이션

스팬 어노테이션이 이제 target_field 옵션을 받아들이며, 이를 통해 같은 인스턴스 내의 둘 이상의 텍스트 필드에 걸쳐 어노테이션할 수 있습니다. 원본 문서와 요약문 양쪽 모두에서 엔터티를 표시하는 요약 평가 같은 작업에 필요합니다.

yaml
annotation_schemes:
  - annotation_type: span
    name: source_entities
    target_field: "source_text"
    labels: [PERSON, ORGANIZATION, LOCATION]
 
  - annotation_type: span
    name: summary_entities
    target_field: "summary"
    labels: [PERSON, ORGANIZATION, LOCATION]

출력 어노테이션은 필드 이름을 키로 사용하므로, 각 스팬이 어느 텍스트 필드에서 왔는지 명확합니다.

업데이트된 스팬 어노테이션 문서 읽기 →

스팬 연결

새로운 span_link 어노테이션 유형은 관계 추출을 처리합니다. 이미 어노테이션한 스팬들 사이에 유형이 지정된 관계를 만듭니다. 이는 지식 그래프 구축, 상호참조 해소, 담화 분석 같은 작업을 다룹니다.

yaml
annotation_schemes:
  - annotation_type: span
    name: entities
    labels:
      - name: "PERSON"
        color: "#3b82f6"
      - name: "ORGANIZATION"
        color: "#22c55e"
 
  - annotation_type: span_link
    name: relations
    span_schema: entities
    link_types:
      - name: "WORKS_FOR"
        directed: true
        allowed_source_labels: ["PERSON"]
        allowed_target_labels: ["ORGANIZATION"]
        color: "#dc2626"
      - name: "COLLABORATES_WITH"
        directed: false
        allowed_source_labels: ["PERSON"]
        allowed_target_labels: ["PERSON"]
        color: "#06b6d4"

링크는 방향이 있거나 없을 수 있고, n항(둘 이상의 스팬을 연결)이 될 수 있으며, 텍스트 위에 그려진 호로 표시됩니다. 레이블 제약을 통해 각 관계 유형에 어떤 엔터티 유형이 참여할 수 있는지 지정할 수 있습니다.

전체 스팬 연결 문서 읽기 →

비주얼 AI 지원

Potato 2.1은 네 개의 비전 엔드포인트를 추가하여, 이미지 및 비디오 어노테이션에 AI 지원을 처음으로 제공합니다. 지금까지 AI 기능은 텍스트에서만 작동했습니다.

네 개의 비전 엔드포인트

YOLO는 로컬 추론으로 빠르고 정밀한 객체 검출을 할 때 사용하기 좋습니다. YOLOv8 변형과 개방형 어휘 검출을 위한 YOLO-World를 지원합니다.

yaml
ai_support:
  enabled: true
  endpoint_type: "yolo"
  ai_config:
    model: "yolov8m.pt"
    confidence_threshold: 0.5
    iou_threshold: 0.45

Ollama Vision은 Ollama를 통해 비전-언어 모델을 로컬에서 실행합니다. LLaVA, Llama 3.2 Vision, Qwen2.5-VL, BakLLaVA, Moondream을 지원합니다.

yaml
ai_support:
  enabled: true
  endpoint_type: "ollama_vision"
  ai_config:
    model: "llava:latest"
    base_url: "http://localhost:11434"

OpenAI Vision은 GPT-4o와 설정 가능한 디테일 수준으로 클라우드 기반 비전 분석을 수행합니다.

yaml
ai_support:
  enabled: true
  endpoint_type: "openai_vision"
  ai_config:
    api_key: "${OPENAI_API_KEY}"
    model: "gpt-4o"
    detail: "auto"

Anthropic Vision은 이미지 이해 및 분류를 위해 Claude의 비전 기능을 사용합니다.

yaml
ai_support:
  enabled: true
  endpoint_type: "anthropic_vision"
  ai_config:
    api_key: "${ANTHROPIC_API_KEY}"
    model: "claude-sonnet-4-20250514"

이미지 AI 기능

이미지 작업에서 비주얼 AI는 네 가지 지원 모드를 제공합니다.

  • 검출은 레이블에 맞는 객체를 찾아 점선 오버레이로 제안 바운딩 박스를 그립니다
  • 사전 어노테이션(Auto)은 이미지 내 모든 객체를 검출하고 사람이 검토할 제안을 생성합니다
  • 분류는 선택한 영역이나 이미지 전체에 레이블을 지정하고 신뢰도 점수를 제공합니다
  • 힌트는 정확한 위치를 드러내지 않으면서 어노테이터를 올바른 방향으로 안내하며, 교육에 유용합니다
yaml
annotation_schemes:
  - annotation_type: image_annotation
    name: object_detection
    tools: [bbox, polygon]
    labels:
      - name: "person"
        color: "#FF6B6B"
      - name: "car"
        color: "#4ECDC4"
    ai_support:
      enabled: true
      features:
        detection: true
        pre_annotate: true
        classification: false
        hint: true

비디오 AI 기능

비디오 작업에서 비주얼 AI는 장면 검출(장면 경계를 찾아 시간적 세그먼트를 제안), 키프레임 검출(중요한 순간을 골라냄), 객체 추적(프레임 전반에 걸쳐 객체가 어디에 있는지 제안)을 추가합니다.

수락 및 거부 워크플로

AI 제안은 점선 오버레이로 표시됩니다. 어노테이터는 하나를 수락하거나(더블 클릭), 하나를 거부하거나(우클릭), 전체를 수락하거나, 전체를 지울 수 있습니다. 사람이 계속 관여하고, AI는 지루한 첫 번째 작업만 처리합니다.

비주얼 엔드포인트와 텍스트 엔드포인트 분리

텍스트 작업과 비주얼 작업을 서로 다른 AI 엔드포인트로 지정할 수 있어, 각 콘텐츠 유형이 그에 맞는 모델을 사용합니다.

yaml
ai_support:
  enabled: true
  endpoint_type: "ollama"          # Text annotations
  visual_endpoint_type: "yolo"     # Image/video annotations
  ai_config:
    model: "llama3.2"
  visual_ai_config:
    model: "yolov8m.pt"
    confidence_threshold: 0.5

전체 비주얼 AI 지원 문서 읽기 →

레이아웃 커스터마이징

Potato 2.1은 사용자 정의 비주얼 레이아웃을 만들 수 있게 해줍니다. 기본적으로 편집 가능한 layouts/task_layout.html 파일을 생성하며, CSS 그리드 레이아웃, 색상으로 구분된 옵션, 섹션 스타일링이 포함된 자체 HTML 템플릿으로 교체할 수 있습니다.

yaml
task_layout: layouts/custom_task_layout.html

project-hub/layout-examples/에 세 가지 예시 레이아웃이 있습니다. 콘텐츠 모더레이션 예시에는 경고 배너, 2열 그리드, 색상으로 구분된 심각도가 있습니다. 대화 QA 예시는 사건 메타데이터, 원형 리커트 평가, 그룹화된 평가를 보여줍니다. 의료 검토 예시는 구조화된 보고 스타일을 사용합니다.

사용자 정의 레이아웃은 새로운 instance_display 시스템과 잘 어울립니다. 표시 콘텐츠는 사용자 정의 어노테이션 양식 위에 렌더링됩니다.

전체 레이아웃 커스터마이징 문서 읽기 →

그 밖의 개선 사항

레이블 근거

힌트, 키워드 강조, 레이블 제안에 네 번째 AI 기능이 더해졌습니다. 근거는 각 레이블이 적용될 수 있는 이유에 대한 균형 잡힌 설명을 작성하여, 어노테이터가 그저 추측하는 대신 분류 뒤의 추론을 볼 수 있도록 돕습니다.

yaml
ai_support:
  features:
    rationales:
      enabled: true

버그 수정 및 테스트

  • 더 나은 안정성을 위한 50개 이상의 새로운 테스트
  • 어노테이션 유형 전반의 반응형 디자인 수정
  • 이제 레이아웃 예시가 포함된, 더 정돈된 project-hub

v2.1로 업그레이드하기

bash
pip install --upgrade potato-annotation

기존 v2.0 설정은 변경 없이 계속 작동합니다. 새로운 것은 모두 instance_display, span_link 스키마, 비주얼 AI 엔드포인트 같은 추가 설정 블록을 통한 선택 사항입니다.

시작하기

전체 변경 로그와 변경된 설정 키는 저장소의 v2.1.0 릴리스 노트를 참조하세요.


질문이나 의견이 있으신가요? 저희 Discord에 참여하거나 GitHub에 이슈를 열어 주세요.