Workflow परिभाषा सिंटैक्स
Workflow Definition JSON सिंटैक्स: संस्करण मार्कर, इनपुट, स्टेप्स, सेलेक्टर्स, और आउटपुट।
Roboflow Workflows में, Workflow Definition आंतरिक "प्रोग्रामिंग भाषा" है। यह विभिन्न ब्लॉक्स के आपसी इंटरैक्शन को परिभाषित करने का एक संरचित तरीका प्रदान करती है, जिसमें आवश्यक इनपुट, आउटपुट और कॉन्फ़िगरेशन निर्दिष्ट किए जाते हैं। इस सिंटैक्स का उपयोग करके, उपयोगकर्ता बिना UI के वर्कफ़्लो बना सकते हैं।
आइए शुरुआत करते हैं इसमें बनाई गई Workflow Definition की जाँच से इस ट्यूटोरियल और इसका चरण-दर-चरण विश्लेषण करें।
वर्कफ़्लो परिभाषा
{
"version": "1.0",
"inputs": [
{
"type": "WorkflowImage",
"name": "image"
},
{
"type": "WorkflowParameter",
"name": "model",
"default_value": "rfdetr-small"
}
],
"steps": [
{
"type": "roboflow_core/roboflow_object_detection_model@v1",
"name": "model",
"images": "$inputs.image",
"model_id": "$inputs.model"
},
{
"type": "roboflow_core/dynamic_crop@v1",
"name": "dynamic_crop",
"images": "$inputs.image",
"predictions": "$steps.model.predictions"
},
{
"type": "roboflow_core/roboflow_classification_model@v1",
"name": "model_1",
"images": "$steps.dynamic_crop.crops",
"model_id": "dog-breed-xpaq6/1"
},
{
"type": "roboflow_core/detections_classes_replacement@v1",
"name": "detections_classes_replacement",
"object_detection_predictions": "$steps.model.predictions",
"classification_predictions": "$steps.model_1.predictions"
},
{
"type": "roboflow_core/bounding_box_visualization@v1",
"name": "bounding_box_visualization",
"predictions": "$steps.detections_classes_replacement.predictions",
"image": "$inputs.image"
},
{
"type": "roboflow_core/label_visualization@v1",
"name": "label_visualization",
"predictions": "$steps.detections_classes_replacement.predictions",
"image": "$steps.bounding_box_visualization.image"
}
],
"outputs": [
{
"type": "JsonField",
"name": "detections",
"coordinates_system": "own",
"selector": "$steps.detections_classes_replacement.predictions"
},
{
"type": "JsonField",
"name": "visualisation",
"coordinates_system": "own",
"selector": "$steps.label_visualization.image"
}
]
}संस्करण सूचक
हर Workflow Definition संस्करण पैरामीटर से शुरू होती है, जो Workflows Execution Engine के संगत संस्करण को निर्दिष्ट करता है। Roboflow इन संस्करणों को प्रबंधित करने के लिए Semantic Versioning का उपयोग करता है और पिछली संगतता सुनिश्चित करने के लिए प्रत्येक प्रमुख रिलीज़ से एक संस्करण बनाए रखता है। इसका अर्थ है कि Execution Engine संस्करण 1.0.0 के लिए परिभाषित एक वर्कफ़्लो संस्करण 1.3.4 के साथ और अन्य नए संस्करणों के साथ काम करेगा, लेकिन अधिक हाल के संस्करणों के लिए बनाए गए वर्कफ़्लो पहले वाले संस्करणों के साथ संगत नहीं भी हो सकते हैं।
Roboflow Hosted प्लेटफ़ॉर्म पर लोड किए गए Execution Engine संस्करणों की सूची यहाँ उपलब्ध है GET /workflows/execution_engine/versions किसी भी Inference सर्वर पर।
इनपुट्स
हमारे उदाहरण वर्कफ़्लो में दो इनपुट निर्दिष्ट हैं:
[
{
"type": "WorkflowImage", "name": "image"
},
{
"type": "WorkflowParameter", "name": "model", "default_value": "rfdetr-small"
}
]परिभाषा में यह प्रविष्टि दो प्लेसहोल्डर बनाती है, जिन्हें वर्कफ़्लो चलाते समय डेटा से भरा जा सकता है।
पहले प्लेसहोल्डर का नाम छवि है और इसका प्रकार है WorkflowImage. यह विशेष इनपुट प्रकार बैच-उन्मुख है, जिसका अर्थ है कि यह रनटाइम पर एक या अधिक छवियाँ एकल बैच के रूप में प्रोसेस करने के लिए स्वीकार कर सकता है। आप इस प्रकार के कई इनपुट जोड़ सकते हैं WorkflowImageऔर अपेक्षा की जाती है कि इन प्लेसहोल्डरों को दिया गया डेटा समान संख्या में तत्वों वाला होगा। वैकल्पिक रूप से, आप आकारों के इनपुट मिला सकते हैं N और 1, जहाँ N बैच में तत्वों की संख्या को दर्शाता है।
दूसरा प्लेसहोल्डर एक सीधा-सादा WorkflowParameter है जिसका नाम model है। इस प्रकार का इनपुट उपयोगकर्ताओं को हाइपरपैरामीटर — जैसे मॉडल वेरिएंट, कॉन्फ़िडेंस थ्रेशोल्ड, और संदर्भ मान — रनटाइम पर इंजेक्ट करने की अनुमति देता है। अपेक्षा यह नहीं की जाती कि मान तत्वों का बैच होगा, इसलिए जब आप एक सूची प्रदान करते हैं, तो उसे बैच के बजाय तत्वों की सूची के रूप में समझा जाएगा, और प्रत्येक को अलग-अलग प्रोसेस किया जाएगा।
वर्कफ़्लोज़ में बैच-उन्मुख डेटा प्रोसेसिंग की प्रकृति के बारे में अधिक विवरण यहाँ.
सामान्य बैच-उन्मुख इनपुट्स
चूँकि Execution Engine v1.3.0 (inference रिलीज़ v0.27.0), Workflows किसी भी प्रकार और आयामीयता. ये इनपुट्स फिलहाल लागू नहीं किए गए हैं, लेकिन हमें उम्मीद है कि जैसे-जैसे इकोसिस्टम बढ़ेगा, वे और अधिक उपयोगी होते जाएँगे।
सामान्य बैच-उन्मुख इनपुट्स को परिभाषित करना
यदि आप WorkflowImage इनपुट को सामान्य बैच-उन्मुख इनपुट से बदलना चाहते हैं, तो निम्न संरचना का उपयोग करें:
इसके अतिरिक्त, यदि आपकी छवि उच्चतर आयामीय स्तरपर होनी चाहिए, तो आयामीयता गुण जोड़ें:
यह छवि वर्कफ़्लो रन में डेटा के अपेक्षित प्रारूप को बदल देगा - dimensionality=2 लागू करता है छवि छवियों के नेस्टेड बैच के लिए - अर्थात् छवियों की सूची की सूची।
चरण
जैसा कि उल्लेख किया गया यहाँहै, चरण Workflow blocks के उदाहरण होते हैं जो अन्य चरणों के इनपुट और आउटपुट से जुड़े होते हैं ताकि यह निर्धारित किया जा सके कि डेटा वर्कफ़्लो के माध्यम से कैसे बहता है। आइए उदाहरण चरण परिभाषा देखें:
प्रत्येक चरण के लिए दो सामान्य गुण हैं type और name. Type बताता है कि कौन सा block लोड करना है और name चरण का अद्वितीय पहचानकर्ता देता है, जिसके आधार पर अन्य चरण दिए गए चरण के आउटपुट को संदर्भित कर सकते हैं।
शेष दो गुण घोषित करते हैं selectors (इसे हम Workflows में references कहते हैं) इनपुट्स के लिए - छवि और model. वर्कफ़्लो चलाते समय, उन प्लेसहोल्डरों में भेजा गया डेटा प्रोसेस करने के लिए block को दिया जाएगा।
हमारा दस्तावेज़ीकरण दिखाता है कि प्रत्येक block की संरचना क्या है और उदाहरण देता है कि प्रत्येक block को वर्कफ़्लो चरण के रूप में कैसे उपयोग किया जा सकता है। हमारा blocks collection देखें यहाँ जहाँ आप यह पा सकते हैं कि block data inputs, outputs और configuration properties क्या हैं।
blocks के इनपुट डेटा bindings (जैसे छवियाँ property) को बैच-उन्मुख इनपुट्स और चरण आउटपुट्स के लिए selectors से भरा जा सकता है। blocks की configuration properties (जैसे model_id) आमतौर पर या तो वर्कफ़्लो परिभाषा में hardcoded मानों से भरी जा सकती हैं (उन्हें रनटाइम पर बदला नहीं जा सकता) या प्रकार के इनपुट्स के selectors से WorkflowParameter. उदाहरण के लिए, एक वैध परिभाषा तब प्राप्त की जा सकती है जब model_id या तो "$inputs.image" या rfdetr-small.
आइए अब देखें कि चरण आउटपुट्स को दूसरे चरण के इनपुट्स के रूप में कैसे संदर्भित किया जाता है:
इस विशेष मामले में, predictions गुण step नामक आउटपुट को परिभाषित करता है model. Selector की संरचना इस प्रकार है: $steps.{step_name}.{step_output_name}. इस संदर्भ के कारण, model चरण dynamic_crop से जुड़ा हुआ है और रनटाइम में model predictions dynamic crop को पास किए जाएँगे और image cropping प्रक्रिया के लिए संदर्भ के रूप में काम करेंगे।
आउटपुट्स
Workflow Definition का यह अनुभाग निर्दिष्ट करता है कि workflow execution से प्रतिक्रिया कैसी दिखेगी। प्रत्येक response field की परिभाषाएँ कुछ इस प्रकार दिखती हैं:
यह सेलेक्टर किसी इनपुट या किसी चरण आउटपुट को संदर्भित कर सकता है। इसके अतिरिक्त, आप "coordinates_system" गुण निर्दिष्ट कर सकते हैं, जो दो मान स्वीकार करता है: "own" या "parent". यह गुण उन आउटपुट्स के लिए प्रासंगिक है जो model detections प्रदान करते हैं और detections के लिए उपयोग किए जाने वाले coordinate system को निर्धारित करता है। यह तब महत्वपूर्ण हो जाता है जब प्राथमिक मॉडल की predictions से प्राप्त image crops पर द्वितीयक object detection model लागू किया जाता है। ऐसे मामलों में, द्वितीयक model की predictions crops के coordinates पर आधारित होती हैं, न कि मूल input image पर। यह सुनिश्चित करने के लिए कि इन coordinates को parent coordinate system में वापस translate न किया जाए, सेट करें "coordinates_system": "own" (पैरेंट डिफ़ॉल्ट विकल्प है).
इसके अतिरिक्त, output selectors wildcards ($steps.step_nane.*") का समर्थन करते हैं ताकि किसी विशिष्ट चरण के सभी outputs को लिया जा सके।
यह पूरी तरह समझने के लिए कि output structure कैसे बनाया जाता है - पढ़ें Workflows में डेटा प्रोसेसिंग.
अंतिम अपडेट
क्या यह उपयोगी था?