# Box Prompting

{% hint style="info" %}
Box Prompting은 여러 기능 중 하나입니다. [AI Labeling](https://docs.roboflow.com/roboflow/roboflow-ko/annotate/ai-labeling) 기능입니다. 이 기능을 사용하면 [크레딧이](https://docs.roboflow.com/roboflow/roboflow-ko/billing/credits) 우리의 [credits 페이지](https://roboflow.com/credits).
{% endhint %}

{% embed url="<https://www.youtube.com/watch?v=qvDRO8fRzhg>" %}
주석 툴바에서 Box Prompting을 활성화하세요.
{% endembed %}

Box Prompting은 하나 이상의 프롬프트 바운딩 박스를 사용해 유사한 객체에 대한 주석을 생성합니다. 각 예시는 모델을 미세 조정하며, 이미지가 추가될수록 성능이 향상됩니다. Box Prompting을 사용하면 데이터셋에 여러 번 등장하는 객체 주위에 바운딩 박스를 일일이 수동으로 그리는 데 드는 시간을 수시간 절약할 수 있습니다.

### 1단계: 각 클래스별로 최소 하나의 예시를 주석으로 추가하세요

Box Prompting을 사용하려면 예시로 제공할 최소 하나의 바운딩 박스 주석을 생성해야 합니다.

### 2단계: Box Prompting 도구를 활성화하세요

마법이 일어나는 것을 보려면 Box Prompting 도구가 활성화되어 있는지 확인하세요! Box Prompting은 주석을 기반으로 예측을 생성합니다. 주석을 저장하거나 삭제할 때마다 점선으로 표시된 예측이 나타납니다.

{% hint style="info" %}
예측은 주석이 아니며 이미지에서 벗어나면 저장되지 않습니다. 예측을 저장하는 방법은 4단계를 참조하세요.
{% endhint %}

### 3단계: 예측을 미세 조정하세요

여기서 다음을 할 수 있습니다:

#### **신뢰도 조정**

슬라이더를 사용해 confidence threshold를 조정하여 표시되는 예측 수를 조절하세요. confidence가 높을수록 예측 수는 줄어듭니다.

<figure><img src="https://3958014485-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M6S9nPJhEX9FYH6clfW%2Fuploads%2Fgit-blob-07b162e57967839d6994b874de016649369da2e3%2Fconfidence.png?alt=media" alt=""><figcaption><p>confidence threshold를 변경하여 표시되는 예측 수를 조정하세요.</p></figcaption></figure>

#### negative examples 제공하기

잘못된 예측이 있다면 해당 박스를 마우스 오른쪽 버튼으로 클릭하고 "Convert to Negative"를 선택하세요. 이렇게 하면 모델이 앞으로는 이 유형의 객체를 레이블링하지 않도록 학습됩니다. negative examples는 음영 처리되어 표시됩니다.

같은 마우스 오른쪽 버튼 메뉴를 통해 기존 주석을 negative로 변환할 수도 있습니다.

<figure><img src="https://3958014485-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M6S9nPJhEX9FYH6clfW%2Fuploads%2Fgit-blob-da8d79ecc0406a5e1d7b8cb8907cab1f40ceb488%2FConvert%20to%20Negative.gif?alt=media" alt=""><figcaption><p>잘못된 예측을 마우스 오른쪽 버튼으로 클릭하고 <strong>Convert to Negative를 선택하여</strong> negative prompt를 제공하세요.</p></figcaption></figure>

#### 추가 예시 추가하기

다른 레이블로 생성한 추가 주석은 이미지 내 서로 다른 객체를 모델이 구분하는 데 도움이 됩니다. 더 많은 예시를 추가한 후에는 "Predict"를 클릭하여 새 예측을 생성할 수 있습니다.

가장 좋은 결과를 위해 이미지에 있는 각 고유 객체마다 1\~2개의 예시를 제공하세요.

{% hint style="info" %}
confidence를 높게 설정하는 것보다 confidence를 낮추고 초과 예측을 negative로 변환하는 방식이 예측을 미세 조정하기 더 쉬울 수 있습니다.
{% endhint %}

### 4단계: 예측 승인하기

예측이 만족스러우면 "Approve Predictions"를 클릭하세요. 그러면 모든 예측이 주석으로 변환되며, 다른 곳으로 이동해도 저장되도록 보장됩니다.

여기서부터는 평소처럼 주석을 편집하고 삭제할 수 있습니다.

<figure><img src="https://3958014485-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M6S9nPJhEX9FYH6clfW%2Fuploads%2Fgit-blob-a9e51bb5ebabae5033c97d689cfe303de52de380%2Fapprove-preds.png?alt=media" alt=""><figcaption><p>예측을 승인하여 이미지에 저장하세요.</p></figcaption></figure>

### 5단계: 더 많은 이미지에 실행하기

#### 주석을 추가하면 이미지가 학습 세트에 포함됩니다.

이미지에 주석을 추가하면 Box Prompting은 사람이 직접 그리거나 편집한 주석이 있는 모든 이미지로 학습됩니다. (수정 없이 승인된 예측은 포함되지 않습니다.)

즉, 박스를 하나도 그리지 않고도 새 이미지에서 "Predict"를 클릭해 예측을 생성할 수 있습니다! 도구 메뉴에서 학습 세트에 포함된 이미지 수를 확인할 수 있습니다.

## 모범 사례

#### 시각적으로 구분되는 각 객체마다 예시를 제공하세요.

유사한 외형의 여러 객체가 포함된 이미지에서는 눈에 띄게 다른 색상, 크기 또는 카메라 각도 변형마다 최소 하나의 예시를 제공하면 도움이 될 수 있습니다.

#### 비슷한 이미지는 같은 주석 세션에서 주석을 추가하세요.

Box prompting은 이미지의 내용이 비슷할 때 가장 잘 작동하며, 예측을 생성하는 동안 학습 예시를 빠르게 재사용할 수 있게 해줍니다.

#### 오차 누적을 방지하려면 바운딩 박스를 더 정확하게 조정하세요.

종종 예측된 바운딩 박스가 실제보다 더 크게 나옵니다. 배경의 일부가 잘못 포함되지 않도록 크기를 줄이세요.

#### Box Prompting은 사진이나 정지 프레임에서 가장 잘 작동합니다.

문서나 컴퓨터 그래픽에 대해서도 예측을 제공할 수는 있지만, Box Prompting은 사진에서 반복되는 항목을 식별하는 데 가장 적합합니다.

#### 정확도를 높이기 위해 negative examples를 제공하세요.

특정 주석 클래스에서 false positive 예측이 발생하는 것을 발견하면, 마우스 오른쪽 버튼을 클릭하고 "Convert to Negative"를 선택하여 Box Prompting 모델에 negative example을 제공할 수 있습니다.

### 제한 사항

Box Prompting 모델은 추론 시 이미지를 축소해야 합니다. 따라서 큰 이미지에서 작은 항목을 감지하려고 하면 만족스럽지 않은 결과가 나올 수 있습니다.

가로세로 어느 한 변이 1000px 이하인 이미지에서 최적의 결과를 얻을 수 있으며, 이미지가 2000px 이상이고 작은 바운딩 박스(너비/높이의 약 5% 미만)가 있는 경우 잘 작동하지 않을 수 있다는 경고가 표시됩니다.

{% hint style="info" %}
이러한 제한은 Box Prompting에만 적용됩니다. model training 시에는 Tiling을 [전처리 단계로](https://docs.roboflow.com/roboflow/roboflow-ko/datasets/dataset-versions/image-preprocessing) 버전 생성 중에 적용하여 학습된 모델에서 이러한 영향을 방지할 수 있습니다.
{% endhint %}
