Potato 2.1: instance display, visual AI, और span linking
Potato 2.1.0 में instance display की व्यवस्था, इमेज और वीडियो एनोटेशन के लिए visual AI समर्थन, span linking, कई फ़ील्ड पर span, और लेआउट में फेरबदल की सुविधा आई है।
ध्यान दें: यह पोस्ट 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 स्कीमा बना देना। अब आप अलग-अलग बता सकते हैं कि दिखाना क्या है और इकट्ठा क्या करना है।
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 चिह्नित करनी होती हैं।
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 विश्लेषण जैसे कार्य सधते हैं।
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 को सँभालता है।
ai_support:
enabled: true
endpoint_type: "yolo"
ai_config:
model: "yolov8m.pt"
confidence_threshold: 0.5
iou_threshold: 0.45Ollama Vision, Ollama के ज़रिए vision-language मॉडल स्थानीय रूप से चलाता है। यह LLaVA, Llama 3.2 Vision, Qwen2.5-VL, BakLLaVA, और Moondream को सँभालता है।
ai_support:
enabled: true
endpoint_type: "ollama_vision"
ai_config:
model: "llava:latest"
base_url: "http://localhost:11434"OpenAI Vision, GPT-4o के साथ क्लाउड पर vision विश्लेषण करता है, और detail का स्तर आप तय कर सकते हैं।
ai_support:
enabled: true
endpoint_type: "openai_vision"
ai_config:
api_key: "${OPENAI_API_KEY}"
model: "gpt-4o"
detail: "auto"Anthropic Vision इमेज समझने और उनका वर्गीकरण करने के लिए Claude की vision क्षमताओं का इस्तेमाल करता है।
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 एनोटेटर को सही दिशा में मोड़ देते हैं, बिना सटीक जगह बताए, जो प्रशिक्षण में काम आता है
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 पर भेज सकते हैं, ताकि हर तरह की सामग्री के लिए उसके लायक़ मॉडल चले:
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.5Visual AI समर्थन के पूरे दस्तावेज़ पढ़ें →
लेआउट में फेरबदल
Potato 2.1 में आप अपने हिसाब से दिखने वाले लेआउट बना सकते हैं। डिफ़ॉल्ट रूप से यह एक layouts/task_layout.html फ़ाइल बना देता है जिसे संपादित किया जा सकता है, और आप उसकी जगह अपना HTML टेम्पलेट रख सकते हैं, CSS grid लेआउट, रंग से पहचाने जाने वाले विकल्प और section की सजावट के साथ।
task_layout: layouts/custom_task_layout.htmlproject-hub/layout-examples/ में तीन नमूना लेआउट हैं। content moderation वाले में चेतावनी का banner, दो कॉलम का grid, और रंग से दिखाई गई गंभीरता है। dialogue QA वाला केस का मेटाडेटा, गोल Likert रेटिंग, और समूह में रखे आकलन दिखाता है। medical review वाला रिपोर्ट लिखने की एक तयशुदा शैली अपनाता है।
अपने बनाए लेआउट नए instance_display सिस्टम के साथ ठीक चलते हैं: दिखाई जाने वाली सामग्री आपके एनोटेशन फ़ॉर्म के ऊपर रेंडर होती है।
लेआउट फेरबदल के पूरे दस्तावेज़ पढ़ें →
बाक़ी सुधार
लेबल के लिए तर्क
hint, keyword highlighting और label suggestion के साथ AI की एक चौथी क्षमता जुड़ी है। तर्क यह लिखकर देते हैं कि कोई लेबल क्यों लग सकता है, दोनों पक्ष रखते हुए, जिससे एनोटेटर अंदाज़ा लगाने के बजाय वर्गीकरण के पीछे की सोच देख पाता है।
ai_support:
features:
rationales:
enabled: trueबग सुधार और जाँच
- भरोसे के लिए 50 से ज़्यादा नए टेस्ट
- अलग-अलग एनोटेशन टाइप में responsive डिज़ाइन की गड़बड़ियाँ ठीक
- project-hub ज़्यादा साफ़-सुथरा, अब लेआउट के नमूनों के साथ
v2.1 पर अपग्रेड करना
pip install --upgrade potato-annotationआपके मौजूदा v2.0 config बिना बदलाव के चलते रहेंगे। जो कुछ नया है वह चुनने पर ही लागू होता है, instance_display, span_link स्कीमा और visual AI endpoint जैसे अलग कॉन्फ़िग ब्लॉक के ज़रिए।
शुरुआत करना
- नया क्या है, v2.1 की सुविधाओं का पूरा ब्योरा
- इंस्टेंस डिस्प्ले, कई माध्यमों की सामग्री दिखाना
- Visual AI सपोर्ट, इमेज और वीडियो एनोटेशन के लिए AI
- Span लिंकिंग, entity के बीच रिश्तों का एनोटेशन
- लेआउट कस्टमाइज़ेशन, अपने HTML टेम्पलेट
पूरा changelog और जो कॉन्फ़िग key बदली हैं, वे रिपॉज़िटरी के v2.1.0 रिलीज़ नोट्स में हैं।
सवाल या सुझाव हैं? हमारे Discord से जुड़िए या GitHub पर issue खोलिए।