For the complete documentation index, see llms.txt. This page is also available as Markdown.

감지 합의

여러 감지 모델의 예측을 결합하여 객체 존재 여부에 대한 결정을 내립니다.

다수결 합의 전략을 사용하여 여러 모델의 탐지 예측을 결합하고, 서로 다른 모델로부터 충분한 표를 받은 겹치는 탐지를 병합하며, 그 속성(신뢰도 점수, 바운딩 박스, 마스크)을 통합된 합의 탐지로 집계하여 정확도와 신뢰성을 높입니다.

이 블록의 작동 방식

이 블록은 탐지를 수락하기 전에 모델 간 일치(합의)를 요구함으로써 여러 탐지 모델의 예측을 융합합니다. 이 블록은:

  1. 객체 탐지, 인스턴스 분할 또는 키포인트 탐지 모델을 포함한 여러 모델 소스의 탐지 예측을 입력으로 받습니다

  2. 바운딩 박스 간의 교집합 대 합집합(IoU)을 계산하여 공간적으로 겹치는 서로 다른 모델의 탐지를 매칭합니다

  3. 겹치는 탐지를 IoU 임계값과 비교하여 동일한 객체를 나타내는지 판단합니다

  4. 다른 모델에서 일치하는 탐지를 찾아 각 탐지에 대한 "표"를 계산합니다(활성화된 경우 클래스 인식을 따름)

  5. 최소 표 수(required_votes)을 충족해야 탐지를 합의 출력의 일부로 수락합니다

  6. 구성 가능한 모드로 일치하는 탐지의 속성을 집계합니다:

    • 신뢰도 집계: average, max 또는 min을 사용하여 신뢰도 점수를 결합합니다

    • 좌표 집계: average(평균 좌표), max(가장 큰 박스) 또는 min(가장 작은 박스)으로 바운딩 박스를 병합합니다

    • 마스크 집계 (인스턴스 분할의 경우): union, intersection, max 또는 min으로 마스크를 결합합니다

    • 클래스 선택: 다수결(average), 가장 높은 신뢰도(max) 또는 가장 낮은 신뢰도(min)를 기준으로 클래스 이름을 선택합니다

  7. 선택적 기준(고려할 특정 클래스, 최소 신뢰도 임계값)에 따라 탐지를 필터링합니다

  8. 합의 결과에 필요한 객체 수(클래스별 또는 총합)가 존재하는지 확인하여 객체 존재 여부를 판단합니다

  9. 병합된 합의 탐지, 객체 존재 표시기 및 존재 신뢰도 점수를 반환합니다

이 블록은 클래스 인식 또는 클래스 비인식 매칭을 지원합니다: 다음 경우 class_aware 가 true이면, 서로 다른 모델에서 클래스 이름이 일치하는 탐지만 동일한 객체에 대한 표로 간주됩니다. false이면, 겹치는 모든 탐지(클래스와 무관)가 표에 기여합니다. 클래스 인식 모드는 더 보수적이며 합의에서 클래스 일관성을 보장하는 반면, 클래스 비인식 모드는 서로 다른 클래스 간 투표를 허용하지만 서로 다른 객체 유형의 탐지를 병합할 수 있습니다.

일반적인 사용 사례

  • 다중 모델 앙상블: 예를 들어 사람에 최적화된 모델 하나와 차량에 최적화된 다른 모델 하나처럼 여러 특화 모델의 예측을 결합하여 전체 탐지 정확도를 높이고, 한 모델만 보는 탐지는 걸러내면서 각 모델의 강점을 활용합니다

  • 오탐 감소: 탐지를 수락하기 전에 여러 모델의 합의를 요구합니다(예: 3개 모델 중 2개가 객체를 탐지해야 함). 한 모델만 본 탐지를 걸러내어 오탐을 줄입니다

  • 탐지 신뢰성 향상: 다수결 투표를 사용하여 탐지에 대한 신뢰도를 높입니다(예: 3개 모델의 겹치는 탐지를 병합하고 2개 이상의 표를 받은 것만 유지). 높은 신뢰도로 여러 모델이 동의한 탐지만 보존되도록 합니다

  • 객체 존재 감지: 합의를 기준으로 특정 객체가 존재하는지 판단합니다(예: 모델 전체에서 최소 2개의 "person" 탐지가 있는지 확인하고, 집계된 신뢰도로 존재 여부를 판단). 구성 가능한 임계값으로 견고한 객체 존재 확인을 가능하게 합니다

  • 클래스별 합의: 클래스별로 서로 다른 합의 요구사항을 적용합니다(예: "car"에는 3표가 필요하지만 "person"에는 2표만 필요). 중요한 객체에는 더 엄격한 기준을 적용하고, 일반적인 탐지에는 더 관대하게 처리할 수 있습니다

  • 특화 모델 융합: 범용 모델과 특화 모델을 결합합니다(예: 범용 객체 탐지기 + 특화 번호판 탐지기). 폭넓은 범위와 특정 전문성을 모두 활용하는 통합 탐지 시스템을 만듭니다

다른 블록과 연결하기

이 블록의 합의 예측은 다음과 연결할 수 있습니다:

  • 여러 탐지 모델 블록 (예: Object Detection Model, Instance Segmentation Model)에서 서로 다른 모델의 예측을 받아, 다수결과 공간적 겹침 매칭을 기반으로 합의 탐지로 융합합니다

  • 시각화 블록 (예: Bounding Box Visualization, Polygon Visualization, Label Visualization)에서 병합된 합의 탐지를 표시하여, 향상된 정확도의 여러 모델 통합 결과를 보여줍니다

  • 집계 및 분석 블록 (예: Line Counter, Time in Zone, Velocity)에서 합의 탐지를 집계하거나 분석하여, 여러 모델의 일치에 기반한 더 신뢰할 수 있는 지표를 제공합니다

  • 데이터 저장 블록 (예: Local File Sink, CSV Formatter, Roboflow Dataset Upload, Webhook Sink)로 합의 탐지 결과를 저장하거나 전송하여, 여러 모델의 합의를 나타내는 융합 예측을 보관합니다

  • 흐름 제어 블록 (예: Continue If)에서 다음을 기준으로 하위 처리 흐름을 조건부로 트리거합니다 object_present 표시기 또는 presence_confidence 점수에 따라 객체 존재에 대한 여러 모델의 합의에 반응하는 워크플로를 가능하게 합니다

  • 필터링 블록 (예: Detections Filter)에서 추가 기준을 바탕으로 합의 탐지를 더 세밀하게 다듬어, 합의 융합 후 다단계 필터링을 가능하게 합니다

유형 식별자

step에서 다음 식별자를 사용하세요 "type" 필드: roboflow_core/detections_consensus@v1 를 워크플로에 단계로 추가합니다.

속성

이름

유형

설명

참조

name

str

이 단계에 고유 식별자를 입력하세요..

required_votes

int

합의 출력에서 탐지를 수락하기 위해 필요한 최소 표 수(서로 다른 모델에서 일치하는 탐지 수)입니다. 이 임계값보다 적은 표를 받은 탐지는 필터링됩니다. 예를 들어 2로 설정하면, 합의 결과에 나타나려면 최소 2개의 모델이 IoU 임계값보다 큰 겹치는 객체를 탐지해야 합니다. 값이 높을수록 더 엄격한 합의 요구사항이 되어 오탐은 줄지만, 더 적은 모델이 본 탐지를 놓칠 수 있습니다..

class_aware

bool

true이면, 서로 다른 모델에서 클래스 이름이 일치하는 탐지만 동일한 객체에 대한 표로 간주됩니다. false이면, 겹치는 모든 탐지(클래스와 무관)가 표에 기여합니다. 클래스 인식 모드는 더 보수적이며 합의에서 클래스 일관성을 보장하는 반면, 클래스 비인식 모드는 서로 다른 클래스 간 투표를 허용하지만 서로 다른 객체 유형의 탐지를 병합할 수 있습니다..

iou_threshold

실수

서로 다른 모델의 탐지를 동일한 객체로 간주하기 위한 교집합 대 합집합(IoU) 임계값입니다. 이 임계값보다 IoU가 높은 탐지는 서로 겹치는 것으로 간주되어 서로에게 표를 기여합니다. 더 낮은 값(예: 0.2)은 더 관대하여 겹침이 적은 탐지도 매칭하며, 더 높은 값(예: 0.5)은 매칭에 더 강한 공간적 겹침을 요구합니다. 일반적인 값 범위는 0.2~0.5입니다..

신뢰도

실수

병합된 합의 탐지에 적용되는 신뢰도 임계값입니다. 집계된 신뢰도 점수가 이 임계값을 초과하는 탐지만 출력에 포함됩니다. 신뢰도 필터링을 비활성화하려면 0.0으로 설정하세요. 값이 높을수록 낮은 신뢰도의 합의 탐지를 걸러내어 출력 품질은 향상되지만, 유효하지만 신뢰도가 낮은 탐지를 제거할 수 있습니다..

classes_to_consider

List[str]

합의 절차에 포함할 클래스 이름의 선택적 목록입니다. 제공되면 해당 클래스의 탐지만 투표와 병합에 고려되며, 다른 모든 클래스는 합의 매칭 전에 필터링됩니다. 관련 없는 탐지는 무시하면서 특정 객체 유형에 합의를 집중하려면 이것을 사용하세요. None이면 모든 클래스가 합의에 참여합니다..

required_objects

Optional[Dict[str, int], int]

객체 존재를 판단하는 데 필요한 선택적 최소 객체 수입니다. 정수(모든 클래스의 총 객체 수) 또는 클래스 이름을 클래스별 최소 개수에 매핑한 딕셔너리일 수 있습니다. object_present 출력과 함께 사용되어 각 클래스의 객체가 충분히 탐지되었는지 판단합니다. 예를 들어 3은 총 3개 이상의 객체가 있어야 함을 의미하고, {'person': 2, 'car': 1}은 최소 2명의 사람과 1대의 차가 필요함을 의미합니다. None이면 객체 존재 여부는 합의 탐지가 하나라도 있는지만으로 결정됩니다..

presence_confidence_aggregation

AggregationMode

존재 신뢰도 점수를 계산하기 위한 집계 모드입니다. 객체 존재 신뢰도를 계산할 때 신뢰도 값을 어떻게 결합할지 결정합니다: 'average'(평균 신뢰도), 'max'(가장 높은 신뢰도) 또는 'min'(가장 낮은 신뢰도). 이 모드는 필요한 객체가 존재한다는 신뢰도를 나타내는 presence_confidence 출력에 적용됩니다..

detections_merge_confidence_aggregation

AggregationMode

겹치는 탐지의 신뢰도 점수를 병합하기 위한 집계 모드입니다. 'average'는 평균 신뢰도(다수결 접근 방식)를 계산하고, 'max'는 일치하는 탐지 중 가장 높은 신뢰도를 사용하며, 'min'은 가장 낮은 신뢰도를 사용합니다. 클래스 선택에서 'average'는 다수결(가장 흔한 클래스)을 의미하고, 'max'는 가장 높은 신뢰도를 가진 탐지의 클래스를 선택하며, 'min'은 가장 낮은 신뢰도를 가진 탐지의 클래스를 선택합니다..

detections_merge_coordinates_aggregation

AggregationMode

겹치는 탐지의 바운딩 박스 좌표를 병합하기 위한 집계 모드입니다. 'average'는 모든 일치 박스의 평균 좌표를 계산하고(균형 잡힌 접근), 'max'는 가장 큰 박스를 취하며(가장 포괄적), 'min'은 가장 작은 박스를 취합니다(가장 보수적). 이 모드는 바운딩 박스에만 적용되며, 마스크 집계에는 대신 detections_merge_mask_aggregation이 사용됩니다..

detections_merge_mask_aggregation

MaskAggregationMode

겹치는 탐지의 세분화 마스크를 병합하기 위한 집계 모드입니다. 'union'은 모든 마스크를 가능한 가장 큰 영역으로 결합하고(가장 포괄적), 'intersection'은 겹치는 영역만 취하며(가장 보수적), 'max'는 가장 큰 마스크를 선택하고, 'min'은 가장 작은 마스크를 선택합니다. 이 모드는 마스크가 있는 인스턴스 분할 탐지에만 적용되며, 바운딩 박스 탐지에는 대신 detections_merge_coordinates_aggregation이 사용됩니다..

해당 참조 열은 워크플로 런타임에서 사용할 수 있는 동적 값으로 속성을 매개변수화할 수 있음을 나타냅니다. 자세한 내용은 워크플로 런타임. 자세한 내용은 바인딩 를 참조하세요.

입력 및 출력 바인딩

사용 가능한 연결은 바인딩 종류에 따라 달라집니다. 어떤 바인딩 종류가 있는지 확인하세요 감지 결과 합의 버전 v1 가 있습니다.

입력 및 출력 바인딩
  • 입력

    • predictions_batches (Union[instance_segmentation_prediction, keypoint_detection_prediction, object_detection_prediction]): 여러 모델의 탐지 예측에 대한 참조 목록입니다. 각 모델의 예측은 동일한 입력 이미지에 대해 이루어져야 합니다. 예측은 객체 탐지, 인스턴스 분할 또는 키포인트 탐지 모델에서 올 수 있습니다. 이 블록은 모델 간 겹치는 탐지를 매칭하고, 합의 출력에서 탐지를 수락하기 전에 최소 표 수(required_votes)를 요구합니다. 최소 하나의 예측 소스가 필요합니다. 배치 처리를 지원합니다..

    • required_votes (정수): 합의 출력에서 탐지를 수락하기 위해 필요한 최소 표 수(서로 다른 모델에서 일치하는 탐지 수)입니다. 이 임계값보다 적은 표를 받은 탐지는 필터링됩니다. 예를 들어 2로 설정하면, 합의 결과에 나타나려면 최소 2개의 모델이 IoU 임계값보다 큰 겹치는 객체를 탐지해야 합니다. 값이 높을수록 더 엄격한 합의 요구사항이 되어 오탐은 줄지만, 더 적은 모델이 본 탐지를 놓칠 수 있습니다..

    • class_aware (boolean): true이면, 서로 다른 모델에서 클래스 이름이 일치하는 탐지만 동일한 객체에 대한 표로 간주됩니다. false이면, 겹치는 모든 탐지(클래스와 무관)가 표에 기여합니다. 클래스 인식 모드는 더 보수적이며 합의에서 클래스 일관성을 보장하는 반면, 클래스 비인식 모드는 서로 다른 클래스 간 투표를 허용하지만 서로 다른 객체 유형의 탐지를 병합할 수 있습니다..

    • iou_threshold (float_zero_to_one): 서로 다른 모델의 탐지를 동일한 객체로 간주하기 위한 교집합 대 합집합(IoU) 임계값입니다. 이 임계값보다 IoU가 높은 탐지는 서로 겹치는 것으로 간주되어 서로에게 표를 기여합니다. 더 낮은 값(예: 0.2)은 더 관대하여 겹침이 적은 탐지도 매칭하며, 더 높은 값(예: 0.5)은 매칭에 더 강한 공간적 겹침을 요구합니다. 일반적인 값 범위는 0.2~0.5입니다..

    • 신뢰도 (float_zero_to_one): 병합된 합의 탐지에 적용되는 신뢰도 임계값입니다. 집계된 신뢰도 점수가 이 임계값을 초과하는 탐지만 출력에 포함됩니다. 신뢰도 필터링을 비활성화하려면 0.0으로 설정하세요. 값이 높을수록 낮은 신뢰도의 합의 탐지를 걸러내어 출력 품질은 향상되지만, 유효하지만 신뢰도가 낮은 탐지를 제거할 수 있습니다..

    • classes_to_consider (list_of_values): 합의 절차에 포함할 클래스 이름의 선택적 목록입니다. 제공되면 해당 클래스의 탐지만 투표와 병합에 고려되며, 다른 모든 클래스는 합의 매칭 전에 필터링됩니다. 관련 없는 탐지는 무시하면서 특정 객체 유형에 합의를 집중하려면 이것을 사용하세요. None이면 모든 클래스가 합의에 참여합니다..

    • required_objects (Union[딕셔너리, 정수]): 객체 존재를 판단하는 데 필요한 선택적 최소 객체 수입니다. 정수(모든 클래스의 총 객체 수) 또는 클래스 이름을 클래스별 최소 개수에 매핑한 딕셔너리일 수 있습니다. object_present 출력과 함께 사용되어 각 클래스의 객체가 충분히 탐지되었는지 판단합니다. 예를 들어 3은 총 3개 이상의 객체가 있어야 함을 의미하고, {'person': 2, 'car': 1}은 최소 2명의 사람과 1대의 차가 필요함을 의미합니다. None이면 객체 존재 여부는 합의 탐지가 하나라도 있는지만으로 결정됩니다..

  • 출력

    • predictions (Union[object_detection_prediction, instance_segmentation_prediction]): 탐지된 경계 상자를 sv.Detections(...) 객체 형태로 반환하는 예측, 만약 object_detection_prediction 또는 탐지된 경계 상자와 세분화 마스크를 sv.Detections(...) 객체 형태로 반환하는 예측, 만약 instance_segmentation_prediction.

    • object_present (Union[boolean, 딕셔너리]): 불리언 플래그 if boolean 또는 딕셔너리 if 딕셔너리.

    • presence_confidence (Union[float_zero_to_one, 딕셔너리]): 실수 범위 내 값 [0.0, 1.0] if float_zero_to_one 또는 딕셔너리 if 딕셔너리.

예시 JSON 정의

마지막 업데이트

도움이 되었나요?