# एक Workflow बनाएं

एक Workflow ब्लॉकों से मिलकर बना होता है, जो विशिष्ट कार्य करते हैं, जैसे मॉडल इनफरेंस चलाना, लॉजिक लागू करना, या बाहरी सेवाओं के साथ इंटरफ़ेस करना।

उपलब्ध ब्लॉकों की सूची पर गहराई से देखने के लिए, हमारी [block documentation](https://inference.roboflow.com/workflows/blocks/).

### ओवरव्यू

यह मार्गदर्शिका एक चार-ब्लॉक Workflow बनाने के बारे में बताएगी जो एक object detection मॉडल चलाएगी, predictions की गिनती करेगी, और मॉडल के परिणामों का visualization करेगी। यहाँ है [final workflow template](https://app.roboflow.com/workflows/embed/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ3b3JrZmxvd0lkIjoiMmdqakJxMDV3Q01ac1hHM3hkeFAiLCJ3b3Jrc3BhY2VJZCI6ImtyT1RBYm5jRmhvUU1DZExPbGU0IiwidXNlcklkIjoiSW1GTElaU2tHYk55OXpiNFV1cWxNelBScHBRMiIsImlhdCI6MTczODE4ODk5MH0.f72WI5bdjtnwC8iqXF_XiUVarfOktIAH1egpsI0Oh4Q) अनुसरण करने के लिए।

{% embed url="<https://app.roboflow.com/workflows/embed/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ3b3JrZmxvd0lkIjoiMmdqakJxMDV3Q01ac1hHM3hkeFAiLCJ3b3Jrc3BhY2VJZCI6ImtyT1RBYm5jRmhvUU1DZExPbGU0IiwidXNlcklkIjoiSW1GTElaU2tHYk55OXpiNFV1cWxNelBScHBRMiIsImlhdCI6MTczODE4ODk5MH0.f72WI5bdjtnwC8iqXF_XiUVarfOktIAH1egpsI0Oh4Q>" fullWidth="false" %}

<figure><img src="https://2698615118-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M6S9nPJhEX9FYH6clfW%2Fuploads%2Fgit-blob-3320b2627ac743a17afb97f63c70993b4cbe3b51%2FCleanShot%202025-01-29%20at%2015.25.03%402x.png?alt=media" alt="" width="563"><figcaption><p>Detect, Count, and Visualize Workflow</p></figcaption></figure>

### Block Connections

बिल्डिंग शुरू करने से पहले, यह समझना महत्वपूर्ण है कि block connections कैसे काम करते हैं।

किसी स्थान पर एक ब्लॉक जोड़ने के लिए, उसे पिछले ब्लॉक को इनपुट के रूप में उपयोग करना होगा। उदाहरण के लिए, ऊपर दिखाए गए workflow में, *Property Definition* ब्लॉक के बाद आता है *Object Detection* क्योंकि यह मॉडल ब्लॉक का उपयोग इनपुट के रूप में करता है। *Bounding Box Visualization* ब्लॉक दाईं ओर है, क्योंकि यह *Property Definition* ब्लॉक के आउटपुट का उपयोग नहीं करता है, लेकिन मॉडल आउटपुट का संदर्भ लेता है।

<figure><img src="https://2698615118-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M6S9nPJhEX9FYH6clfW%2Fuploads%2Fgit-blob-79fa8c10219b4a7e8e0696acceae5e297f05f70f%2FCleanShot%202025-01-29%20at%2016.31.28%402x.png?alt=media" alt=""><figcaption><p>Model Comparison Workflow</p></figcaption></figure>

ऊपर के उदाहरण workflow में, हमारे पास चार अलग रास्ते हैं, क्योंकि प्रत्येक शाखा रनटाइम पर समानांतर में निष्पादित होती है, और अन्य शाखा ब्लॉकों पर इनपुट के रूप में निर्भर नहीं करती।

### एक Workflow बनाना

#### Object Detection Model

पहले, एक *Object Detection Model* ब्लॉक जोड़ें। आप एक सार्वजनिक pre-trained मॉडल चुन सकते हैं, जैसे YOLOv8n जो [COCO](https://universe.roboflow.com/microsoft/coco)पर प्रशिक्षित है, या अपने Workspace में फाइन-ट्यून किया गया मॉडल चुन सकते हैं। मैं pre-trained *yolov8n* मॉडल के साथ आगे बढ़ूँगा ताकि लोग और वाहन पहचाने जा सकें।

<figure><img src="https://2698615118-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M6S9nPJhEX9FYH6clfW%2Fuploads%2Fgit-blob-bc18512f57a057976473b7d03cc7ee3a884e67e3%2FCleanShot%202025-01-29%20at%2015.30.31%402x.png?alt=media" alt="" width="344"><figcaption></figcaption></figure>

object detection ब्लॉक में एक आवश्यक image पैरामीटर होता है जो निर्धारित करता है कि मॉडल किस पर inference कर रहा है। कई वैकल्पिक पैरामीटर हैं, मुख्य को नीचे विस्तार से बताया गया है:

* Class Filter: उन क्लासों की सूची जिन्हें मॉडल लौटाएगा। नोट: मॉडल हमेशा केवल उन्हीं क्लासों को लौटाएगा जिन पर वह प्रशिक्षित है, यह आपको अनावश्यक क्लासों को फ़िल्टर करने की अनुमति देता है।
* Confidence: उन वस्तुओं को लौटाया नहीं जाएगा जिनकी confidence इससे कम होगी।
* IoU threshold: एक उच्च threshold अधिक overlapping predictions लौटाएगा। 0.9 का मतलब है कि 90% या उससे कम overlap वाली वस्तुएं लौटाई जाएंगी, जबकि 0.1 का मतलब है कि 10% से अधिक overlap वाली वस्तुएं शामिल नहीं की जाएंगी।
* Max Detections: वस्तुओं की अधिकतम संख्या जिसे मॉडल लौटाएगा
* Class Agnostic NMS: क्या overlap फ़िल्टरिंग केवल एक ही क्लास वाली वस्तुओं की तुलना और बहिष्करण करेगी, या सभी क्लासों के साथ तुलना करेगी

#### Property Definition

Property definition ब्लॉक आपको अपने डेटा से प्रासंगिक जानकारी निकालने देता है, जैसे छवि का आकार,予icted क्लासेस, या पाए गए ऑब्जेक्ट्स की संख्या। इस उदाहरण के लिए, हम object detection मॉडल द्वारा पाए गए ऑब्जेक्ट्स की संख्या गिनेंगे।

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXc507UbRnkEH6XMdrfmwVZbHcK6x6K5THwnt1RmEk8iXSojwvmiA_q6KwRXV9bJudYnW7NMTQKKb9GqGxm_P0VjbuOoGWcDsM5NoQckl9jV4YcjYQFIvYoCgvd_YnQTNJLlwdbZwA?key=yGJPQzp1abf4J7pT0mnBw8w4" alt="" width="375"><figcaption></figcaption></figure>

For the *Data* property, reference the model predictions. For the *Operations*, select Count Items. This configuration will return the number of predictions made by the object detection model.

#### Bounding Box Visualization

मॉडल परिणामों को visualize करने के लिए एक bounding box visualization ब्लॉक जोड़ें। *image* पैरामीटर के लिए, इनपुट image चुनें। predictions के लिए, मॉडल परिणाम चुनें। आप वैकल्पिक configuration properties का उपयोग करके bounding boxes का रंग और आकार बदल सकते हैं।

<figure><img src="https://2698615118-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M6S9nPJhEX9FYH6clfW%2Fuploads%2Fgit-blob-c02309fdf720d80b86c1de59ed126c7b7d9a2f9d%2FCleanShot%202025-01-29%20at%2015.31.50%402x.png?alt=media" alt="" width="342"><figcaption></figcaption></figure>

#### Label Visualization

Bounding boxes ड्रॉ करने के अलावा, हम predictions के क्लास नाम भी दिखाना चाहेंगे। इसके लिए, bounding box visualization के बाद एक *Label Visualization* ब्लॉक जोड़ें। एक ही छवि पर दोनों bounding boxes और labels ड्रॉ करने के लिए, आप संदर्भ इनपुट इमेज को *bounding\_box\_visualization* image के रूप में सेट करना चाहेंगे, बजाय कि इनपुट image का संदर्भ लेने के। यह labels को bounding boxes के ऊपर ड्रॉ करेगा।

<figure><img src="https://2698615118-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M6S9nPJhEX9FYH6clfW%2Fuploads%2Fgit-blob-cdcb7551292e790e706a1451b75bd3dcca6b28eb%2FCleanShot%202025-01-29%20at%2016.17.06%402x.png?alt=media" alt="" width="343"><figcaption></figcaption></figure>

आप वैकल्पिक *Text* पैरामीटर बदलकर डिस्प्ले टेक्स्ट को class name, confidence, या class name और confidence में बदल सकते हैं।

### Save Changes

जब आप अपना Workflow बनाना समाप्त कर लें, तो "Save Workflow" पर क्लिक करें। यदि आपने Workflow को deploy किया हुआ है, तो आपका सहेजा गया Workflow उन सभी डिवाइसों पर चलना शुरू कर देगा जहाँ Workflow तैनात किया गया है।

अब जब आपके पास एक पूरा workflow है, तो इसे टेस्ट करने का समय है।
