Skip to content
Announcements7 min read

Potato 2.1: instance display, visual AI, और span linking

Potato 2.1.0 में instance display की व्यवस्था, इमेज और वीडियो एनोटेशन के लिए visual AI समर्थन, span linking, कई फ़ील्ड पर span, और लेआउट में फेरबदल की सुविधा आई है।

Potato Team

ध्यान दें: यह पोस्ट Potato 2.1 का वह रूप बताती है जो रिलीज़ के वक़्त था। कुछ कॉन्फ़िगरेशन key और सुविधाएँ बाद के संस्करणों में बदल चुकी हैं। कॉन्फ़िगरेशन का मौजूदा सिंटैक्स ताज़ा दस्तावेज़ में देखें।

Potato 2.1.0 आ गया है। इसमें पाँच चीज़ें जुड़ी हैं: instance display की एक ढंग की व्यवस्था, इमेज और वीडियो एनोटेशन में AI की मदद, span linking, कई फ़ील्ड पर span, और अपने हिसाब से बनाए लेआउट।

Instance display की व्यवस्था

2.1 में सबसे बड़ी चीज़ instance_display कॉन्फ़िग ब्लॉक है। इससे पहले कोई इमेज radio बटन के साथ दिखानी हो तो घुमा-फिराकर काम चलाना पड़ता था, जैसे 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। किसी भी एनोटेशन स्कीमा के साथ कई display फ़ील्ड मिलाई जा सकती हैं, उन्हें आड़ा या खड़ा रखा जा सकता है, और टेक्स्ट फ़ील्ड पर span_target: true से span एनोटेशन चालू किया जा सकता है।

एक सुविधा जिसकी माँग लोग करते रहे हैं, वह है बातचीत के हर turn पर अलग रेटिंग। आप किसी एक turn पर सीधे एक Likert विजेट लगा सकते हैं, ताकि एनोटेटर बातचीत के view से हटे बिना किसी ख़ास वक्ता को आँक सके।

Instance display के पूरे दस्तावेज़ पढ़ें →

कई फ़ील्ड पर span एनोटेशन

Span एनोटेशन अब target_field विकल्प लेता है, जिससे एक ही instance की एक से ज़्यादा टेक्स्ट फ़ील्ड पर एनोटेशन किया जा सकता है। सारांश के मूल्यांकन जैसे कार्यों में इसकी ज़रूरत पड़ती है, जहाँ मूल दस्तावेज़ और सारांश, दोनों में entity चिह्नित करनी होती हैं।

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

आउटपुट में एनोटेशन फ़ील्ड के नाम से रखे जाते हैं, इसलिए साफ़ रहता है कि कौन-सा span किस टेक्स्ट फ़ील्ड से आया।

Span एनोटेशन के अपडेट किए गए दस्तावेज़ पढ़ें →

Span linking

नया span_link एनोटेशन टाइप relation extraction के लिए है: आप पहले से एनोटेट किए गए span के बीच तयशुदा क़िस्म के रिश्ते बनाते हैं। इससे knowledge graph बनाने, coreference resolution, और discourse विश्लेषण जैसे कार्य सधते हैं।

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-ary भी (दो से ज़्यादा span को जोड़ते हुए), और टेक्स्ट के ऊपर चाप के रूप में दिखते हैं। लेबल पर लगी शर्तों से आप तय करते हैं कि किस रिश्ते में किस क़िस्म की entity शामिल हो सकती है।

Span linking के पूरे दस्तावेज़ पढ़ें →

Visual AI समर्थन

Potato 2.1 में चार vision endpoint जुड़े हैं, जिनसे पहली बार इमेज और वीडियो एनोटेशन में AI की मदद मिलती है। अब तक AI सुविधाएँ सिर्फ़ टेक्स्ट पर चलती थीं।

चार vision endpoint

तेज़ और सटीक object detection के लिए, स्थानीय inference के साथ, YOLO ही चुनिए। यह YOLOv8 के रूपों और open-vocabulary detection के लिए 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 के ज़रिए vision-language मॉडल स्थानीय रूप से चलाता है। यह 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 के साथ क्लाउड पर vision विश्लेषण करता है, और detail का स्तर आप तय कर सकते हैं।

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

Anthropic Vision इमेज समझने और उनका वर्गीकरण करने के लिए Claude की vision क्षमताओं का इस्तेमाल करता है।

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

इमेज पर AI सुविधाएँ

इमेज वाले कार्यों में visual AI चार तरह से मदद करता है:

  • Detection आपके लेबल से मेल खाते ऑब्जेक्ट ढूँढ़ता है और सुझाव के तौर पर बिंदुदार bounding box खींच देता है
  • पूर्व-एनोटेशन (Auto) इमेज में हर ऑब्जेक्ट पहचानता है और सुझाव बना देता है, जिन्हें कोई व्यक्ति देख ले
  • Classification किसी चुने हुए हिस्से या पूरी इमेज पर लेबल लगाता है और साथ में confidence भी देता है
  • Hint एनोटेटर को सही दिशा में मोड़ देते हैं, बिना सटीक जगह बताए, जो प्रशिक्षण में काम आता है
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 सुविधाएँ

वीडियो वाले कार्यों में visual AI से scene detection (यह दृश्यों की सीमाएँ ढूँढ़कर समय के हिस्से सुझाता है), keyframe detection (यह अहम पलों को छाँटता है), और object tracking (यह बताता है कि कोई ऑब्जेक्ट अलग-अलग फ़्रेम में कहाँ है) मिलते हैं।

मानने और ख़ारिज करने का तरीक़ा

AI के सुझाव बिंदुदार overlay के रूप में दिखते हैं। एनोटेटर किसी एक को मान सकता है (डबल-क्लिक), किसी एक को ख़ारिज कर सकता है (राइट-क्लिक), सब मान सकता है, या सब हटा सकता है। फ़ैसला इंसान के हाथ में रहता है, AI सिर्फ़ उबाऊ पहला दौर निपटाता है।

Visual और text endpoint अलग-अलग

टेक्स्ट वाले और visual कार्यों को आप अलग-अलग AI endpoint पर भेज सकते हैं, ताकि हर तरह की सामग्री के लिए उसके लायक़ मॉडल चले:

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

Visual AI समर्थन के पूरे दस्तावेज़ पढ़ें →

लेआउट में फेरबदल

Potato 2.1 में आप अपने हिसाब से दिखने वाले लेआउट बना सकते हैं। डिफ़ॉल्ट रूप से यह एक layouts/task_layout.html फ़ाइल बना देता है जिसे संपादित किया जा सकता है, और आप उसकी जगह अपना HTML टेम्पलेट रख सकते हैं, CSS grid लेआउट, रंग से पहचाने जाने वाले विकल्प और section की सजावट के साथ।

yaml
task_layout: layouts/custom_task_layout.html

project-hub/layout-examples/ में तीन नमूना लेआउट हैं। content moderation वाले में चेतावनी का banner, दो कॉलम का grid, और रंग से दिखाई गई गंभीरता है। dialogue QA वाला केस का मेटाडेटा, गोल Likert रेटिंग, और समूह में रखे आकलन दिखाता है। medical review वाला रिपोर्ट लिखने की एक तयशुदा शैली अपनाता है।

अपने बनाए लेआउट नए instance_display सिस्टम के साथ ठीक चलते हैं: दिखाई जाने वाली सामग्री आपके एनोटेशन फ़ॉर्म के ऊपर रेंडर होती है।

लेआउट फेरबदल के पूरे दस्तावेज़ पढ़ें →

बाक़ी सुधार

लेबल के लिए तर्क

hint, keyword highlighting और label suggestion के साथ AI की एक चौथी क्षमता जुड़ी है। तर्क यह लिखकर देते हैं कि कोई लेबल क्यों लग सकता है, दोनों पक्ष रखते हुए, जिससे एनोटेटर अंदाज़ा लगाने के बजाय वर्गीकरण के पीछे की सोच देख पाता है।

yaml
ai_support:
  features:
    rationales:
      enabled: true

बग सुधार और जाँच

  • भरोसे के लिए 50 से ज़्यादा नए टेस्ट
  • अलग-अलग एनोटेशन टाइप में responsive डिज़ाइन की गड़बड़ियाँ ठीक
  • project-hub ज़्यादा साफ़-सुथरा, अब लेआउट के नमूनों के साथ

v2.1 पर अपग्रेड करना

bash
pip install --upgrade potato-annotation

आपके मौजूदा v2.0 config बिना बदलाव के चलते रहेंगे। जो कुछ नया है वह चुनने पर ही लागू होता है, instance_display, span_link स्कीमा और visual AI endpoint जैसे अलग कॉन्फ़िग ब्लॉक के ज़रिए।

शुरुआत करना

पूरा changelog और जो कॉन्फ़िग key बदली हैं, वे रिपॉज़िटरी के v2.1.0 रिलीज़ नोट्स में हैं।


सवाल या सुझाव हैं? हमारे Discord से जुड़िए या GitHub पर issue खोलिए।