Segmentation कार्यों के लिए polygon एनोटेशन
Potato में इमेज segmentation के लिए polygon बनाने के टूल कॉन्फ़िगर कीजिए, साथ में जटिल आकृतियों, एक-दूसरे पर चढ़े हिस्सों, कई श्रेणियों वाले polygon और COCO प्रारूप में निर्यात के सुझाव।
Polygon से आप ऑब्जेक्ट की सीमा एक-एक पिक्सल तक खींच सकते हैं, और semantic तथा instance segmentation को यही चाहिए। यह गाइड कॉन्फ़िग, बनाने की तरकीबें, और आकृतियाँ उलझ जाएँ तब क्या करें, तीनों पर चलती है।
Polygon बनाम bounding box
| Polygon कब | Bounding box कब |
|---|---|
| सीमाएँ सटीक चाहिए | मोटा-मोटी जगह बता देना काफ़ी है |
| ऑब्जेक्ट की आकृति बेतरतीब है | ऑब्जेक्ट लगभग आयताकार हैं |
| Segmentation मॉडल की ट्रेनिंग | Detection मॉडल की ट्रेनिंग |
| एक-दूसरे पर चढ़े ऑब्जेक्ट | अलग-अलग पड़े ऑब्जेक्ट |
| ज़्यादा सटीकता चाहिए | रफ़्तार पहले है |
बुनियादी polygon सेटअप
annotation_task_name: "Image Segmentation"
data_files:
- "data/images.json"
annotation_schemes:
- annotation_type: image_annotation
tools: [polygon]
name: segments
description: "Draw polygons around each object"
labels:
- name: road
color: "#808080"
- name: sidewalk
color: "#F5F5DC"
- name: building
color: "#8B4513"
- name: vegetation
color: "#228B22"
- name: sky
color: "#87CEEB"
- name: vehicle
color: "#FF6B6B"
- name: person
color: "#4ECDC4"Polygon बनाना
बुनियादी तरीक़ा
- टूलबार से एक लेबल चुनिए
- ऑब्जेक्ट के चारों ओर क्लिक करके बिंदु रखिए
- Polygon बंद करने के लिए डबल-क्लिक कीजिए या Enter दबाइए
- बिंदुओं को खिसकाकर ठीक कीजिए
- किसी किनारे पर क्लिक करके नया बिंदु जोड़िए
कीबोर्ड शॉर्टकट
Polygon संपादन के लिए Potato में शॉर्टकट पहले से मौजूद हैं:
- Enter: मौजूदा polygon बंद करना
- Escape: बनाना रद्द करना या चयन हटाना
- Delete: चुना हुआ बिंदु या polygon हटाना
- +/-: ज़ूम बढ़ाना और घटाना
- Space + खींचना: इमेज को इधर-उधर सरकाना
जब मामला उलझ जाए
एक-दूसरे पर चढ़े ऑब्जेक्ट
जहाँ ऑब्जेक्ट एक-दूसरे पर चढ़े हों, वहाँ एनोटेटर कई polygon बना देते हैं जो आपस में ओवरलैप करते हैं। Potato हर एक को अलग से रखता है, इसलिए जहाँ ऑब्जेक्ट एक-दूसरे को ढक रहे हों वहाँ भी instance-स्तर का एनोटेशन मिल जाता है।
टेढ़ी सीमाएँ
जिन ऑब्जेक्ट की सीमाएँ बेढब और घुमावदार हों, उनके लिए:
- घुमावदार किनारों पर ज़्यादा बिंदु लगाइए ताकि आकृति सही बने
- बारीक हिस्से खींचने से पहले ज़ूम कीजिए
- इधर-उधर कूदने के बजाय परिधि पर क्रम से चलिए
- बाद में edit mode में जाकर बिंदुओं को उनकी जगह पर सरकाइए
Semantic segmentation का सेटअप
पूरी इमेज के segmentation के लिए:
annotation_task_name: "Semantic Segmentation"
data_files:
- "data/images.json"
annotation_schemes:
- annotation_type: image_annotation
tools: [polygon]
name: semantic_segments
description: "Segment the entire image"
labels:
- name: background
color: "#000000"
- name: road
color: "#808080"
- name: sidewalk
color: "#F5F5DC"
- name: building
color: "#8B4513"
- name: vegetation
color: "#228B22"
- name: sky
color: "#87CEEB"
- name: person
color: "#4ECDC4"
- name: vehicle
color: "#FF6B6B"Instance segmentation का सेटअप
अलग-अलग ऑब्जेक्ट instance के लिए:
annotation_task_name: "Instance Segmentation"
data_files:
- "data/images.json"
annotation_schemes:
- annotation_type: image_annotation
tools: [polygon]
name: instances
description: "Draw polygons around each object instance"
labels:
- name: person
color: "#4ECDC4"
- name: car
color: "#FF6B6B"
- name: dog
color: "#FFEAA7"हर polygon अपने आप में एक एनोटेशन के तौर पर रखा जाता है, इसलिए आप एक ही श्रेणी के भीतर अलग-अलग instance पर नज़र रख सकते हैं।
पूरा कॉन्फ़िगरेशन उदाहरण
annotation_task_name: "Cityscapes-style Segmentation"
data_files:
- "data/urban_scenes.json"
annotation_schemes:
- annotation_type: image_annotation
tools: [polygon]
name: segments
description: "Segment all objects following Cityscapes protocol"
labels:
# Flat
- name: road
color: "#804080"
- name: sidewalk
color: "#F423E8"
# Construction
- name: building
color: "#464646"
- name: wall
color: "#666666"
- name: fence
color: "#BE9999"
# Nature
- name: vegetation
color: "#6B8E23"
- name: terrain
color: "#98FB98"
# Sky
- name: sky
color: "#4682B4"
# Human
- name: person
color: "#DC143C"
- name: rider
color: "#FF0000"
# Vehicle
- name: car
color: "#00008B"
- name: truck
color: "#000046"
- name: bus
color: "#003C64"
- name: motorcycle
color: "#0000E6"
- name: bicycle
color: "#770B20"आउटपुट प्रारूप
आउटपुट में हर polygon के साथ उसके हर बिंदु के निर्देशांक आते हैं:
{
"id": "img001",
"annotations": {
"segments": [
{
"label": "road",
"points": [[0, 600], [100, 580], [200, 590], [0, 600]]
},
{
"label": "car",
"points": [[450, 400], [520, 400], [520, 480], [450, 480]]
}
]
}
}साफ़-सुथरे polygon के लिए सुझाव
- बारीक सीमाएँ खींचते समय 2x या उससे ज़्यादा ज़ूम कीजिए।
- कीबोर्ड शॉर्टकट सीख लीजिए। बार-बार टूलबार तक जाने से ये कहीं तेज़ पड़ते हैं।
- पहले मोटा-मोटी रूपरेखा बनाइए, फिर लौटकर उसे सुधारिए।
- उतने ही बिंदु लगाइए जितने में आकृति बन जाए। ज़्यादा बिंदु का मतलब बेहतर नहीं है।
- बीच-बीच में रुकिए। बारीक polygon का काम जल्दी थका देता है।
अगले क़दम
- मिले-जुले workflow के लिए इसे bounding box के साथ जोड़िए
- Segmentation के लिए गुणवत्ता नियंत्रण सेट कीजिए
- समय के साथ चलने वाले डेटा के लिए वीडियो segmentation के बारे में पढ़िए
इमेज एनोटेशन टाइप जो कुछ कर सकता है (polygon, bbox, और बाक़ी ड्रॉइंग टूल), वह सब स्रोत दस्तावेज़ में है।
Polygon के पूरे दस्तावेज़ छवि एनोटेशन पर हैं।