> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/roboflow/roboflow-hi/workflows/build-a-workflow.md).

# एक Workflow बनाएँ

एक workflow blocks से बना होता है, जो विशिष्ट tasks करते हैं, जैसे model inference चलाना, logic perform करना, या external services के साथ interfacing करना।

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

### Overview

यह guide object detection model चलाने, predictions count करने, और model results visualize करने के लिए चार-block workflow बनाने की प्रक्रिया बताएगा। यहाँ है [final workflow template](https://app.roboflow.com/workflows/embed/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ3b3JrZmxvd0lkIjoiMmdqakJxMDV3Q01ac1hHM3hkeFAiLCJ3b3Jrc3BhY2VJZCI6ImtyT1RBYm5jRmhvUU1DZExPbGU0IiwidXNlcklkIjoiSW1GTElaU2tHYk55OXpiNFV1cWxNelBScHBRMiIsImlhdCI6MTczODE4ODk5MH0.f72WI5bdjtnwC8iqXF_XiUVarfOktIAH1egpsI0Oh4Q) जिसके साथ आप follow along कर सकते हैं।

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

<figure><img src="/files/4b60afbb39a724b20c1bafe9ebea527c26eb4772" alt="" width="563"><figcaption><p>Detect, Count, and Visualize Workflow</p></figcaption></figure>

### Block Connections

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

किसी location में block जोड़ने के लिए, उसे previous block को input के रूप में उपयोग करना होता है। उदाहरण के लिए, ऊपर दिखाए गए workflow में, *Property Definition* block *Object Detection* block के बाद आता है क्योंकि यह model block को input के रूप में उपयोग करता है। *Bounding Box Visualization* block दाईं ओर है, क्योंकि यह *Property Definition* block के output का उपयोग नहीं करता, लेकिन model output को reference करता है।

<figure><img src="/files/edcd97a8327277f1c3f4b31d50c8e250e78d03da" alt=""><figcaption><p>Model Comparison Workflow</p></figcaption></figure>

ऊपर दिए गए example workflow में, हमारे पास चार अलग-अलग pathways हैं, क्योंकि runtime पर हर branch parallel में execute होती है, और input के रूप में दूसरी branch blocks पर निर्भर नहीं करती।

### Builder Assist

Builder Assist यह नियंत्रित करता है कि workflow editor blocks को connect और insert करते समय आपको कितनी मदद दे। आप top-right navbar में toggle का उपयोग करके modes के बीच switch कर सकते हैं।

तीन modes हैं:

* **Auto** (default): जब blocks connect या insert किए जाते हैं, तो compatible input और output fields automatically wire कर देता है। जब आप blocks हटाते या disconnect करते हैं, तो builder downstream references को भी repair करता है।
* **Quick**: सुझाए गए connections और block recommendations दिखाता है, लेकिन उन्हें केवल तब लागू करता है जब आप explicitly accept करते हैं। अगर आप guidance चाहते हैं लेकिन builder आपके behalf पर changes न करे, तो यह useful है।
* **Manual**: कोई suggestions नहीं और कोई automatic wiring नहीं। आप हर connection खुद नियंत्रित करते हैं।

आपका चुना हुआ mode local रूप से save होता है, इसलिए यह sessions के across बना रहता है।

### Blocks की व्यवस्था करना

workflow editor आपके लिए आपके blocks की position तय कर सकता है। current blocks को arrange करने और उन्हें view में fit करने के लिए auto layout button (editor toolbar में sitemap icon) पर click करें।

button के पास वाला chevron दो options के साथ एक menu खोलता है:

* "Arrange now": layout को एक बार चलाता है, बिल्कुल button पर click करने जैसा।
* "Arrange automatically": जब यह on होता है, तो editor हर बार block जोड़ने या connection बदलने पर blocks को फिर से arrange करता है। किसी block को drag करने पर यह mode pause हो जाता है ताकि hand-placed layout सुरक्षित रहे।

आपकी choice प्रति workflow local रूप से save होती है।

### Workflow बनाना

#### Object Detection Model

सबसे पहले, एक *Object Detection Model* block जोड़ें। आप public pre-trained model चुन सकते हैं, जैसे YOLOv8n जो [COCO](https://universe.roboflow.com/microsoft/coco)पर trained है, या अपने workspace में fine-tuned model। मैं आगे pre-trained *yolov8n* model के साथ people और vehicles detect करने के लिए आगे बढ़ूँगा।

<figure><img src="/files/c5be16d22d3021e1ab21f0ce380cb81c15f2ce60" alt="" width="344"><figcaption></figcaption></figure>

object detection block में एक required image parameter होता है जो तय करता है कि model किस पर infer कर रहा है। कई optional parameters भी हैं, core वाले नीचे विस्तार से बताए गए हैं:

* Class Filter: classes की सूची जिन्हें model return करेगा। नोट: model हमेशा केवल वही classes return करेगा जिन पर उसे train किया गया है, इससे आप अनावश्यक classes को filter out कर सकते हैं।
* Confidence: इस confidence से नीचे वाले objects return नहीं किए जाएंगे।
* IoU threshold: higher threshold अधिक overlapping predictions return करेगा। 0.9 का मतलब है कि 90% या उससे कम overlap वाले objects return किए जाएंगे, जबकि 0.1 का मतलब है कि 10% से अधिक overlap वाले objects शामिल नहीं किए जाएंगे।
* Max Detections: अधिकतम number of objects जिन्हें model return करेगा
* Class Agnostic NMS: क्या overlap filtering को केवल same class वाले objects की तुलना और exclusion करनी चाहिए, या सभी classes की

#### Property Definition

property definition block आपको अपने data से relevant information extract करने देता है, जैसे image size, predicted classes, या detected objects की संख्या। इस example के लिए, हम object detection model द्वारा पाए गए objects की संख्या count करेंगे।

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

के लिए *Data* property, model predictions को reference करें। के लिए *Operations*, Count Items चुनें। यह configuration object detection model द्वारा की गई predictions की संख्या return करेगा।

#### Bounding Box Visualization

model results को visualize करने के लिए एक bounding box visualization block जोड़ें। के लिए *image* parameter, input image चुनें। predictions के लिए, model results चुनें। आप optional configuration properties का उपयोग करके bounding boxes का color और size वैकल्पिक रूप से बदल सकते हैं।

<figure><img src="/files/10d7fc9eba4fc897184968bf35bc8e51d1c5ea79" alt="" width="342"><figcaption></figcaption></figure>

#### Label Visualization

bounding boxes draw करने के अलावा, हम predictions के class names भी display करना चाहेंगे। ऐसा करने के लिए, एक *Label Visualization* block जोड़ें, bounding box visualization के बाद। एक ही image पर दोनों bounding boxes और labels draw करने के लिए, आप reference input image को *bounding\_box\_visualization* image के रूप में set करना चाहेंगे, input image को reference करने के बजाय। इससे labels bounding boxes के ऊपर draw होंगे।

<figure><img src="/files/9bcb7bac97513ce722909a458be4f54e731c6460" alt="" width="343"><figcaption></figcaption></figure>

आप optional *Text* parameter को बदलकर display text को class name से confidence, या class name और confidence में बदल सकते हैं।

### Changes सहेजना

अपने changes को draft के रूप में save करने के लिए "Save" पर click करें। Workflow editor edit करते समय automatically save नहीं करता।

अपने changes को live करने के लिए, Workflow publish करें। यदि आपने Workflow deploy किया है, तो आपका published version उन सभी devices पर चलना शुरू कर देगा जहाँ Workflow deploy किया गया है।

अब जब आपके पास एक completed workflow है, इसे test करने का समय है।
