> 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-ko/workflows/build-a-workflow.md).

# Workflow 빌드

Workflow는 block으로 구성되며, 각 block은 모델 추론 실행, 로직 수행, 외부 서비스와의 연동 같은 특정 작업을 수행합니다.

사용 가능한 block 목록을 더 자세히 보려면, 다음을 확인하세요: [block documentation](https://inference.roboflow.com/workflows/blocks/).

### 개요

이 가이드는 object detection model을 실행하고, prediction을 집계하고, model 결과를 시각화하는 4개 block짜리 workflow를 만드는 방법을 다룹니다. 다음은 [최종 workflow 템플릿](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="/files/6b3496c93fb1d0d890f588c6f9dc5994d63b1a8f" alt="" width="563"><figcaption><p>Detect, Count, and Visualize Workflow</p></figcaption></figure>

### Block 연결

빌드를 시작하기 전에, block 연결이 어떻게 작동하는지 이해하는 것이 중요합니다.

특정 위치에 block을 추가하려면 이전 block을 input으로 사용해야 합니다. 예를 들어, 위에 표시된 workflow에서는 *Property Definition* block은 다음에 위치합니다: *Object Detection* block은 model block을 input으로 사용하기 때문입니다. The *Bounding Box Visualization* block은 오른쪽에 배치됩니다. 왜냐하면 해당 block은 다음 block의 output을 사용하지 않기 때문입니다: *Property Definition* block의 output은 사용하지 않지만, model output은 참조합니다.

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

위 예시 workflow에는 서로 다른 4개의 경로가 있습니다. 각 branch가 runtime에서 병렬로 실행되며, 다른 branch의 block을 input으로 사용하지 않기 때문입니다.

### Builder Assist

Builder Assist는 workflow editor가 block을 연결하고 삽입할 때 제공하는 도움의 정도를 제어합니다. 오른쪽 상단 navbar의 toggle로 mode를 전환할 수 있습니다.

mode는 3가지가 있습니다:

* **Auto**  (기본값): block이 연결되거나 삽입될 때 호환되는 input과 output field를 자동으로 연결합니다. 또한 block을 제거하거나 연결을 끊으면 builder가 downstream reference도 복구합니다.
* **Quick**: 추천 연결과 block 추천을 표시하지만, 직접 수락할 때만 적용됩니다. builder가 대신 변경하지 않으면서 안내만 받고 싶을 때 유용합니다.
* **Manual**: 추천도 없고 자동 연결도 없습니다. 모든 연결을 직접 제어합니다.

선택한 mode는 로컬에 저장되므로, 세션 간에도 유지됩니다.

### Workflow 만들기

#### Object Detection Model

먼저, 다음을 추가합니다: *Object Detection Model* block. COCO로 학습된 YOLOv8n 같은 공개 pre-trained model 또는 [COCO](https://universe.roboflow.com/microsoft/coco), 또는 workspace의 fine-tuned model을 선택할 수 있습니다. 저는 pre-trained *yolov8n* model을 사용해 사람과 차량을 감지하겠습니다.

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

object detection block에는 모델이 무엇을 추론할지 결정하는 필수 image parameter가 있습니다. 여러 optional parameter도 있으며, 핵심 항목은 아래에 자세히 설명되어 있습니다:

* Class Filter: model이 반환할 class 목록입니다. 참고: model은 항상 학습된 class만 반환하며, 이를 통해 불필요한 class를 걸러낼 수 있습니다.
* Confidence: 해당 confidence보다 낮은 object는 반환되지 않습니다.
* IoU threshold: threshold가 높을수록 겹치는 prediction이 더 많이 반환됩니다. 0.9는 겹침이 90% 이하인 object가 반환된다는 뜻이고, 0.1은 10%를 초과해 겹치는 object는 포함되지 않는다는 뜻입니다.
* Max Detections: model이 반환할 수 있는 object의 최대 개수입니다
* Class Agnostic NMS: overlap filtering에서 같은 class의 object만 비교하고 제외할지, 아니면 모든 class를 대상으로 할지 여부입니다

#### Property Definition

property definition block을 사용하면 image size, predicted class, 감지된 object 수 등 data에서 관련 정보를 추출할 수 있습니다. 이 예시에서는 object detection model이 찾은 object 수를 계산합니다.

<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 prediction을 참조합니다. 다음의 경우, *Operations*, Count Items를 선택합니다. 이 구성은 object detection model이 생성한 prediction 수를 반환합니다.

#### Bounding Box Visualization

model 결과를 시각화하려면 bounding box visualization block을 추가합니다. 다음의 *image* parameter에서는 input image를 선택합니다. prediction에서는 model 결과를 선택합니다. optional configuration property를 사용해 bounding box의 색상과 크기를 선택적으로 변경할 수 있습니다.

<figure><img src="/files/058027ee5493882179a7636b1d06c8302e187d4e" alt="" width="342"><figcaption></figcaption></figure>

#### Label Visualization

bounding box를 그리는 것 외에도 prediction의 class 이름을 표시해야 합니다. 이를 위해 다음을 추가합니다: *Label Visualization* block을 bounding box visualization 뒤에 배치합니다. 같은 image에 bounding box와 label을 모두 그리려면, reference input image를 다음으로 설정해야 합니다: *bounding\_box\_visualization* image로 설정하고, input image를 참조하지 마세요. 그러면 label이 bounding box 위에 그려집니다.

<figure><img src="/files/92eab617a18fb9fb4b7b55a34c66580c4333bba2" alt="" width="343"><figcaption></figcaption></figure>

다음 optional 항목을 변경할 수 있습니다: *Text* parameter를 사용하면 표시 텍스트를 class name, confidence, 또는 class name과 confidence로 변경할 수 있습니다.

### 변경 사항 저장

Workflow editor는 변경 사항을 draft로 자동 저장합니다. 편집 중에는 수동으로 저장할 필요가 없습니다.

변경 사항을 live로 반영하려면 Workflow를 publish하세요. Workflow를 deployed한 경우, published version이 Workflow가 배포된 모든 device에서 실행되기 시작합니다.

이제 완성된 workflow가 있으니, 테스트할 차례입니다.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.roboflow.com/roboflow/roboflow-ko/workflows/build-a-workflow.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
