> 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/workflows/ko/blocks/blocks/video-processing/identify-changes.md).

# 변경 사항 식별

임베딩 벡터를 시간에 따라 추적하고, 코사인 유사도 변화를 측정하며, 변화율 통계를 계산하고, 변화 감지, 이상 모니터링, 변화율 분석, 시계열 패턴 감지 워크플로에서 변화가 예상보다 빠르거나 느리게 발생할 때 이상으로 표시하여, 과거 기준과 비교해 비정상적인 속도로 데이터 패턴이 바뀌는 시점과 변화를 식별합니다.

## 이 블록의 작동 방식

이 블록은 임베딩이 시간에 따라 얼마나 빠르게 변하는지 모니터링하고 현재 변화율을 과거 패턴과 비교하여 변화를 감지합니다. 이 블록은:

1. 현재 데이터 포인트의 특징을 나타내는 임베딩 벡터를 수신합니다
2. 임베딩을 단위 길이로 정규화합니다:
   * 코사인 유사도 계산을 위해 임베딩을 단위 벡터(길이 = 1)로 변환합니다
   * 거리 기반 메트릭이 아니라 각도 유사도를 사용한 비교를 가능하게 합니다
   * 정규화를 건너뛰어 0 벡터를 우아하게 처리합니다
3. 샘플 수와 워밍업 상태를 추적합니다:
   * 처리된 각 임베딩에 대해 샘플 카운터를 증가시킵니다
   * 아직 워밍업 기간인지(샘플 < 워밍업 매개변수) 판단합니다
   * 워밍업 동안에는 기준선 설정을 허용하기 위해 이상값이 식별되지 않습니다
4. 다음 세 가지 전략 중 하나를 사용하여 임베딩 평균과 표준편차에 대한 실행 통계를 유지합니다:

   **지수 이동 평균(EMA) 전략의 경우:**

   * smoothing\_factor를 사용한 지수 이동 평균으로 평균과 분산을 업데이트합니다
   * 더 최근의 임베딩에 더 큰 가중치가 부여됩니다(smoothing\_factor에 의해 제어됨)
   * 과거 맥락을 유지하면서 최근 추세에 빠르게 적응합니다
   * smoothing\_factor가 응답성을 결정합니다(값이 높을수록 최근 변화에 더 민감함)

   **단순 이동 평균(SMA) 전략의 경우:**

   * Welford 방법을 사용하여 실행 평균과 분산을 계산합니다
   * 모든 과거 샘플이 통계에 동일하게 기여합니다
   * 시간에 따라 안정적이고 편향되지 않은 추정치를 제공합니다
   * 일관적이고 장기적인 추적에 매우 적합합니다

   **슬라이딩 윈도우 전략의 경우:**

   * 최근 임베딩의 고정 크기 윈도우(window\_size)를 유지합니다
   * 윈도우 크기를 초과하면 가장 오래된 임베딩을 제거합니다(FIFO)
   * 윈도우 내용만으로 평균과 표준편차를 계산합니다
   * 오래된 정보를 버리고 최근 추세에 빠르게 적응합니다
5. 현재 임베딩과 실행 평균 사이의 코사인 유사도를 계산합니다:
   * 현재 임베딩이 일반적인 임베딩 패턴과 얼마나 유사한지 측정합니다
   * 코사인 유사도는 -1(반대)에서 1(동일)까지의 범위를 가집니다
   * 1에 가까운 값은 임베딩이 기준과 유사함을 나타냅니다
   * 1에서 더 멀리 떨어진 값은 임베딩이 기준과 다름을 나타냅니다
6. 코사인 유사도 통계를 모니터링하여 변화율을 추적합니다:
   * 코사인 유사도 값의 실행 평균과 표준편차를 유지합니다
   * 코사인 유사도 추적에도 동일한 전략(EMA, SMA 또는 슬라이딩 윈도우)을 사용합니다
   * 임베딩이 과거 변화율과 비교해 얼마나 빠르게 변하고 있는지 측정합니다
   * 평균 변화율과 변화율의 변동성을 모두 추적합니다
7. 현재 코사인 유사도에 대한 z-점수를 계산합니다:
   * 현재 코사인 유사도가 평균에서 표준편차 기준으로 몇 개인지 측정합니다
   * z-점수 = (현재\_코사인\_유사도 - 평균\_코사인\_유사도) / 코사인\_유사도\_표준편차
   * 양의 z-점수는 평소보다 더 빠른 변화를 나타냅니다
   * 음의 z-점수는 평소보다 더 느린 변화를 나타냅니다
8. z-점수를 백분위로 변환합니다:
   * 오차 함수(erf)를 사용하여 z-점수를 백분위 위치로 변환합니다
   * 백분위는 현재 변화율이 과거 변화율 중 어디에 위치하는지를 나타냅니다
   * 0.0에 가까운 값은 비정상적으로 느린 변화를 의미합니다(낮은 백분위)
   * 1.0에 가까운 값은 비정상적으로 빠른 변화를 의미합니다(높은 백분위)
9. 백분위 임계값을 기준으로 이상값 상태를 판단합니다:
   * 백분위가 threshold\_percentile/2보다 낮으면 이상값으로 표시합니다(비정상적으로 느린 변화)
   * 백분위가 (1 - threshold\_percentile/2)보다 높으면 이상값으로 표시합니다(비정상적으로 빠른 변화)
   * 비정상적으로 빠른 변화율과 비정상적으로 느린 변화율을 모두 감지합니다
10. 다음 반복을 위해 실행 통계를 업데이트합니다:
    * 선택한 전략을 사용하여 임베딩 평균과 표준편차를 업데이트합니다
    * 선택한 전략을 사용하여 코사인 유사도 평균과 표준편차를 업데이트합니다
    * 워크플로 실행 간 상태를 유지합니다
11. 여섯 개의 출력을 반환합니다:
    * **is\_outlier**: 변화율이 이상인지 여부를 나타내는 불리언 플래그
    * **percentile**: 변화율이 과거에 어느 위치인지 나타내는 0.0-1.0 범위의 실수 값
    * **z\_score**: 평균 변화율에서 몇 표준편차 떨어져 있는지 나타내는 실수 값
    * **average**: 현재 평균 임베딩 벡터(과거 임베딩의 실행 평균)
    * **std**: 임베딩의 현재 표준편차 벡터(각 차원별 변동성)
    * **warming\_up**: 아직 워밍업 기간인지 나타내는 불리언 플래그

이 블록은 **변화율** 을 단순히 이상값을 감지하는 대신 모니터링합니다. 임베딩이 얼마나 빠르게 변하는지 추적하고 이를 과거 변화 패턴과 비교합니다. 임베딩이 과거보다 훨씬 빠르거나 느리게 변하면 이 블록은 이를 이상으로 표시합니다. 따라서 갑작스러운 패턴 변화, 장면의 예상치 못한 변화, 비정상적인 행동 패턴을 감지하는 데 이상적입니다. 세 가지 전략(EMA, SMA, 슬라이딩 윈도우)은 응답성과 안정성 사이의 서로 다른 절충점을 제공합니다.

## 일반적인 사용 사례

* **변화 감지**: 장면, 환경 또는 패턴이 예상치 못하게 변할 때 감지합니다(예: 장면 변화 감지, 갑작스러운 패턴 전환 식별, 예상치 못한 환경 변화 표시). 이를 통해 변화 감지 워크플로를 구현할 수 있습니다
* **이상 모니터링**: 행동 또는 패턴의 비정상적인 변화를 모니터링합니다(예: 비정상적인 행동 변화 감지, 비정상적인 패턴 변동 모니터링, 예상치 못한 변화율 표시). 이를 통해 이상 모니터링 워크플로를 구현할 수 있습니다
* **변화율 분석**: 데이터 스트림에서 비정상적인 변화율을 분석하고 감지합니다(예: 비정상적으로 빠른 변화 감지, 비정상적으로 느린 변화 식별, 변화율 패턴 모니터링). 이를 통해 변화율 분석 워크플로를 구현할 수 있습니다
* **시계열 패턴 감지**: 시계열 패턴이 예상 변화율에서 벗어날 때를 식별합니다(예: 패턴 중단 감지, 타임라인 이상 식별, 시계열 불일치 표시). 이를 통해 시계열 패턴 감지 워크플로를 구현할 수 있습니다
* **품질 모니터링**: 품질 또는 특성의 예상치 못한 변화를 모니터링합니다(예: 품질 저하 감지, 예상치 못한 품질 변화 식별, 특성 변동 모니터링). 이를 통해 품질 모니터링 워크플로를 구현할 수 있습니다
* **이벤트 감지**: 비정상적인 변화율을 기반으로 중요한 이벤트를 감지합니다(예: 중요한 이벤트 감지, 중요한 변화 식별, 주목할 만한 패턴 전환 표시). 이를 통해 이벤트 감지 워크플로를 구현할 수 있습니다

## 다른 블록에 연결하기

이 블록은 임베딩을 입력으로 받아 is\_outlier, percentile, z\_score, average, std, warming\_up 출력을 생성합니다:

* **임베딩 모델 블록 다음에** (CLIP, Perception Encoder 등) 임베딩에서 변화율을 분석합니다(예: CLIP 임베딩에서 변화 감지, Perception Encoder 변화율 분석, 임베딩 기반 변화 모니터링). 이를 통해 임베딩-변화 워크플로를 구현할 수 있습니다
* **분류 또는 감지 블록 다음에** 임베딩과 함께 사용하여 비정상적인 변화 패턴을 식별합니다(예: 비정상적인 감지 변화 감지, 이상 분류 변화 표시, 예측 패턴 변화 모니터링). 이를 통해 예측-변화 워크플로를 구현할 수 있습니다
* **로직 블록 이전** Continue If와 같은 블록과 함께 변화 감지 결과에 따라 결정을 내립니다(예: 변화가 감지되면 계속, 변화율에 따라 필터링, 비정상적인 변화에서 작업 트리거). 이를 통해 변화 기반 의사결정 워크플로를 구현할 수 있습니다
* **알림 블록 앞에서** 변화 감지에 대해 알림을 보냅니다(예: 중요한 변화 알림, 패턴 전환 알림, 변화율 이상 알림). 이를 통해 변화 기반 알림 워크플로를 구현할 수 있습니다
* **데이터 저장 블록 앞에서** 변화 정보를 기록합니다(예: 변화 데이터 로깅, 변화 통계 저장, 변화율 메트릭 기록). 이를 통해 변화 데이터 로깅 워크플로를 구현할 수 있습니다
* **모니터링 파이프라인에서** 변화 감지가 지속적 모니터링의 일부인 경우(예: 관측 시스템의 변화 모니터링, 패턴 변동 추적, 모니터링 워크플로에서 이상 감지). 이를 통해 변화 모니터링 워크플로를 구현할 수 있습니다

## 요구 사항

이 블록은 입력으로 임베딩이 필요합니다(일반적으로 CLIP 또는 Perception Encoder와 같은 임베딩 모델 블록에서 제공됨). 이 블록은 워크플로 실행 간 내부 상태를 유지하며, 임베딩과 코사인 유사도 값 모두에 대한 실행 통계를 추적합니다. 워밍업 기간(처음 `워밍업` 샘플) 동안에는 이상값이 식별되지 않으며 블록은 is\_outlier=False, percentile=0.5, warming\_up=True를 반환합니다. 워밍업 후에는 블록이 선택한 전략(EMA, SMA 또는 슬라이딩 윈도우)을 사용하여 통계를 추적하고 변화율 이상을 감지합니다. threshold\_percentile 매개변수(0.0-1.0)는 민감도를 제어합니다. 값이 낮을수록 극단적인 변화율만 감지하고, 값이 높을수록 더 완만한 변화율 편차까지 감지합니다. 전략 선택은 응답성에 영향을 줍니다. EMA는 최근 추세에 빠르게 적응하고, SMA는 안정적인 장기 추적을 제공하며, 슬라이딩 윈도우는 빠르게 적응하지만 이전 정보를 버립니다. 이 블록은 일관된 임베딩 모델과 가장 잘 작동하며, 데이터의 예상 변동성과 변화 패턴에 따라 threshold\_percentile과 전략을 조정해야 할 수 있습니다.

### 유형 식별자

단계에서 다음 식별자를 사용하세요 `"type"` 필드: `roboflow_core/identify_changes@v1` 워크플로우에 이 블록을 단계로 추가하려면.

### 속성

| **이름**                 | **유형**  | **설명**                                                                                                                                                                                                                                                                            | 참조 |
| ---------------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -- |
| `name`                 | `str`   | 워크플로우에서 단계의 고유 이름.                                                                                                                                                                                                                                                                | ❌  |
| `전략`                   | `str`   | 임베딩 및 변화율 통계를 추적하기 위한 통계 전략입니다. '지수 이동 평균(EMA)': 최근 추세에 빠르게 적응하며 최신 데이터에 더 큰 가중치를 둡니다. '단순 이동 평균(SMA)': 안정적인 장기 추적, 모든 데이터가 동일하게 기여합니다. '슬라이딩 윈도우': 빠른 적응, 최근 window\_size 샘플만 사용합니다. EMA는 적응형 모니터링에 가장 적합하고, SMA는 안정적인 추적에, 슬라이딩 윈도우는 빠른 적응에 가장 적합합니다..                          | ❌  |
| `threshold_percentile` | `float` | 변화율 이상 감지를 위한 백분위 임계값입니다. 범위는 0.0-1.0입니다. threshold\_percentile/2보다 낮거나 (1 - threshold\_percentile/2)보다 높은 변화율은 이상값으로 표시됩니다. 낮은 값(예: 0.05)은 극단적인 변화율만 감지하며 매우 엄격합니다. 높은 값(예: 0.3)은 더 완만한 변화율 편차를 감지하며 더 민감합니다. 기본값 0.2는 하위 10%와 상위 10%의 변화율을 이상값으로 간주합니다. 예상되는 변화율 변동에 따라 조정하세요.. | ✅  |
| `워밍업`                  | `정수`    | 변화 감지가 시작되기 전에 필요한 초기 데이터 포인트 수입니다. 워밍업 동안에는 변화율 기준선 설정을 위해 이상값이 식별되지 않습니다(is\_outlier=False). 통계 분석을 위해 최소 2개는 필요합니다. 일반적인 범위: 3-100개 샘플. 값이 높을수록 기준선은 더 안정적이지만 변화 감지가 지연됩니다. 값이 낮을수록 더 빨리 감지할 수 있지만 초기 정확도는 떨어질 수 있습니다..                                                        | ✅  |
| `smoothing_factor`     | `float` | 지수 이동 평균 전략을 위한 평활화 계수(alpha)입니다. 범위는 0.0-1.0입니다. 최근 데이터에 대한 응답성을 제어합니다. 값이 높을수록 최근 변화에 통계가 더 민감해지고, 값이 낮을수록 더 많은 과거 맥락을 유지합니다. 예: 0.1은 현재 값에 10%, 과거 평균에 90%의 가중치를 둡니다. 일반적인 범위: 0.05-0.3. 전략이 '지수 이동 평균(EMA)'일 때만 사용됩니다..                                                       | ✅  |
| `window_size`          | `정수`    | 슬라이딩 윈도우에서 유지할 최근 임베딩의 최대 개수입니다. 이를 초과하면 가장 오래된 임베딩이 제거됩니다(FIFO). 더 큰 윈도우는 더 안정적인 통계를 제공하지만 변화에 더 느리게 적응합니다. 더 작은 윈도우는 더 빠르게 적응하지만 안정성이 떨어질 수 있습니다. 전략이 '슬라이딩 윈도우'일 때만 사용됩니다. 최소 2 이상이어야 합니다. 일반적인 범위: 5-50개 임베딩..                                                                | ✅  |

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

### 런타임 호환성

`소프트` - 런타임 `호스팅 서버리스`, `전용 배포`; 실행 `원격`; 입력 `비디오` : 이 블록은 프로세스 메모리에서 비디오별 상태를 유지합니다(video\_metadata.video\_identifier로 키 지정). 상태 비저장 또는 다중 복제 HTTP 런타임에서 원격 단계 실행을 사용하면 연속 요청이 서로 다른 작업자 프로세스에서 처리될 수 있으므로, 상태가 호출 사이에 초기화되어 추적 / 카운팅 / 집계를 위한 출력은 의미가 없어집니다. 안정적인 프레임 간 결과를 위해 지속적인 WebRTC 세션에서 로컬 단계 실행을 사용하세요.

`소프트` - 입력 `이미지` : 이 블록은 비디오나 반복 프레임 워크플로의 시간적 문맥에 의존합니다. 정지 이미지/사진에는 추적, 비교, 집계 또는 시각화할 의미 있는 히스토리가 없으므로 이 블록은 거의 또는 전혀 이점을 제공하지 않습니다.

### 입력 및 출력 바인딩

사용 가능한 연결은 바인딩 유형에 따라 달라집니다. 어떤 바인딩 유형인지 확인하세요 `변경 사항 식별` 버전 `v1` 을 가지고 있는지.

<details>

<summary>입력 및 출력 바인딩</summary>

* 입력
  * `embedding` ([*`embedding`*](/workflows/ko/developer-guide/developer-guide/kinds/embedding.md)): 현재 데이터 포인트의 특징을 나타내는 임베딩 벡터입니다. 일반적으로 CLIP 또는 Perception Encoder와 같은 임베딩 모델에서 제공됩니다. 임베딩은 코사인 유사도 계산을 위해 단위 길이로 정규화됩니다. 이 블록은 현재 임베딩을 실행 평균과 비교하고 시간에 따른 변화율을 추적합니다..
  * `threshold_percentile` ([*`0에서 1 사이의 실수`*](/workflows/ko/developer-guide/developer-guide/kinds/float-zero-to-one.md)): 변화율 이상 감지를 위한 백분위 임계값입니다. 범위는 0.0-1.0입니다. threshold\_percentile/2보다 낮거나 (1 - threshold\_percentile/2)보다 높은 변화율은 이상값으로 표시됩니다. 낮은 값(예: 0.05)은 극단적인 변화율만 감지하며 매우 엄격합니다. 높은 값(예: 0.3)은 더 완만한 변화율 편차를 감지하며 더 민감합니다. 기본값 0.2는 하위 10%와 상위 10%의 변화율을 이상값으로 간주합니다. 예상되는 변화율 변동에 따라 조정하세요..
  * `워밍업` ([*`정수`*](/workflows/ko/developer-guide/developer-guide/kinds/integer.md)): 변화 감지가 시작되기 전에 필요한 초기 데이터 포인트 수입니다. 워밍업 동안에는 변화율 기준선 설정을 위해 이상값이 식별되지 않습니다(is\_outlier=False). 통계 분석을 위해 최소 2개는 필요합니다. 일반적인 범위: 3-100개 샘플. 값이 높을수록 기준선은 더 안정적이지만 변화 감지가 지연됩니다. 값이 낮을수록 더 빨리 감지할 수 있지만 초기 정확도는 떨어질 수 있습니다..
  * `smoothing_factor` ([*`0에서 1 사이의 실수`*](/workflows/ko/developer-guide/developer-guide/kinds/float-zero-to-one.md)): 지수 이동 평균 전략을 위한 평활화 계수(alpha)입니다. 범위는 0.0-1.0입니다. 최근 데이터에 대한 응답성을 제어합니다. 값이 높을수록 최근 변화에 통계가 더 민감해지고, 값이 낮을수록 더 많은 과거 맥락을 유지합니다. 예: 0.1은 현재 값에 10%, 과거 평균에 90%의 가중치를 둡니다. 일반적인 범위: 0.05-0.3. 전략이 '지수 이동 평균(EMA)'일 때만 사용됩니다..
  * `window_size` ([*`정수`*](/workflows/ko/developer-guide/developer-guide/kinds/integer.md)): 슬라이딩 윈도우에서 유지할 최근 임베딩의 최대 개수입니다. 이를 초과하면 가장 오래된 임베딩이 제거됩니다(FIFO). 더 큰 윈도우는 더 안정적인 통계를 제공하지만 변화에 더 느리게 적응합니다. 더 작은 윈도우는 더 빠르게 적응하지만 안정성이 떨어질 수 있습니다. 전략이 '슬라이딩 윈도우'일 때만 사용됩니다. 최소 2 이상이어야 합니다. 일반적인 범위: 5-50개 임베딩..
* 출력
  * `is_outlier` ([`boolean`](/workflows/ko/developer-guide/developer-guide/kinds/boolean.md)): 불리언 플래그.
  * `percentile` ([`0에서 1 사이의 실수`](/workflows/ko/developer-guide/developer-guide/kinds/float-zero-to-one.md)): `float` 범위 내 값 `[0.0, 1.0]`.
  * `z_score` ([`float`](/workflows/ko/developer-guide/developer-guide/kinds/float.md)): 실수 값입니다.
  * `average` ([`embedding`](/workflows/ko/developer-guide/developer-guide/kinds/embedding.md)): 벡터 임베딩을 나타내는 부동소수점 숫자 목록입니다..
  * `std` ([`embedding`](/workflows/ko/developer-guide/developer-guide/kinds/embedding.md)): 벡터 임베딩을 나타내는 부동소수점 숫자 목록입니다..
  * `warming_up` ([`boolean`](/workflows/ko/developer-guide/developer-guide/kinds/boolean.md)): 불리언 플래그.

</details>

<details>

<summary>예시 JSON 정의</summary>

```json
{
	    "name": "<your_step_name_here>",
	    "type": "roboflow_core/identify_changes@v1",
	    "strategy": "지수 이동 평균(EMA)",
	    "embedding": "$steps.clip.embedding",
	    "threshold_percentile": 0.2,
	    "warmup": 3,
	    "smoothing_factor": 0.1,
	    "window_size": 10
	}
```

</details>
