> 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/buffer.md).

# 버퍼

최근 입력을 FIFO(선입선출) 큐에 저장하여 마지막 N개 값의 슬라이딩 윈도우 버퍼를 유지하고, 가장 새로운 요소는 앞에 추가하며 버퍼가 지정된 길이를 초과하면 가장 오래된 요소는 자동으로 제거하여, 시계열 데이터 수집, 프레임 기록 추적, 배치 처리 준비, 슬라이딩 윈도우 분석 워크플로를 가능하게 합니다.

## 이 블록의 작동 방식

이 블록은 자신에게 전달된 가장 최근 값을 저장하는 순환 버퍼를 유지하여, 시간이 지남에 따라 데이터의 슬라이딩 윈도우를 만듭니다. 이 블록은:

1. 모든 유형의 입력 데이터(이미지, 탐지 결과, 값 등)와 구성 매개변수(버퍼 길이 및 패딩 옵션)를 받습니다
2. 워크플로 실행 전반에 걸쳐 유지되는 내부 버퍼를 유지합니다:
   * 블록이 처음 생성될 때 버퍼는 빈 목록으로 초기화됩니다
   * 버퍼 상태는 워크플로 실행 동안 유지됩니다
   * 각 버퍼 블록 인스턴스는 각각 별도의 버퍼를 유지합니다
3. 버퍼에 새 데이터를 추가합니다:
   * 가장 최신 값을 버퍼 배열의 시작 부분(인덱스 0)에 삽입합니다
   * 가장 최근 값이 버퍼의 앞에 표시됩니다
   * 오래된 값은 배열의 뒤쪽 위치로 이동합니다
4. 버퍼 크기를 관리합니다:
   * 버퍼 길이가 지정된 `길이` 매개변수를 초과하면 가장 오래된 요소를 제거합니다
   * 가장 최근의 값만 유지합니다 `길이` 값
   * 슬라이딩 윈도우 크기를 자동으로 유지합니다
5. 선택적 패딩을 적용합니다:
   * 만약 `패딩` 가 True이면: 버퍼를 `None` 값으로 채워 정확히 `길이` 개 요소가 될 때까지
   * 보다 적은 수의 `길이` 값이 수신된 경우에도
   * 만약 `패딩` 가 False이면: 버퍼 크기는 0에서 `길이` 값이 추가됨에 따라 증가한 다음, 그 상태를 유지합니다 `길이`
6. 버퍼링된 배열을 반환합니다:
   * 버퍼링된 값을 순서대로(가장 최신값 먼저) 포함한 목록을 출력합니다
   * 목록 길이는 `길이` (패딩이 활성화된 경우) 또는 현재 버퍼 크기(패딩이 비활성화된 경우)
   * 값은 가장 최근 항목(인덱스 0)에서 가장 오래된 항목(마지막 인덱스) 순으로 정렬됩니다

버퍼는 새로운 데이터가 앞쪽에 들어오고 용량에 도달하면 오래된 데이터가 뒤쪽으로 나가는 슬라이딩 윈도우 패턴을 구현합니다. 이렇게 하면 최근 값의 시계열 기록이 생성되며, 이전 프레임, 탐지 결과 또는 측정값을 되돌아봐야 하는 작업에 유용합니다. 이 버퍼는 모든 데이터 유형과 함께 작동하므로, 이미지, 탐지 결과, 숫자 값 또는 기타 워크플로 출력에 유연하게 사용할 수 있습니다.

## 일반적인 사용 사례

* **프레임 기록 추적**: 시간적 분석을 위해 최근 비디오 프레임의 기록을 유지합니다(예: 프레임 시퀀스 추적, 최근 이미지 기록 유지, 비교를 위한 프레임 수집), 시계열 프레임 분석 워크플로를 가능하게 합니다
* **탐지 기록**: 추세 분석 또는 비교를 위해 최근 탐지 결과를 버퍼링합니다(예: 시간에 따른 탐지 변화 추적, 현재 탐지와 이전 탐지 비교, 탐지 패턴 분석), 탐지 기록 워크플로를 가능하게 합니다
* **배치 처리 준비**: 함께 처리하기 전에 여러 값을 수집합니다(예: 최근 이미지 일괄 처리, 여러 탐지 결과 집계, 배치 작업을 위한 데이터 준비), 배치 처리 워크플로를 가능하게 합니다
* **슬라이딩 윈도우 분석**: 데이터의 순환 창에 대해 분석을 수행합니다(예: 최근 프레임의 추세 분석, 이동 평균 계산, 시퀀스의 변화 감지), 슬라이딩 윈도우 분석 워크플로를 가능하게 합니다
* **시각화 시퀀스**: 애니메이션 또는 시퀀스 시각화를 위해 최근 데이터를 유지합니다(예: 프레임 시퀀스 생성, 시계열 변화 시각화, 최근 기록 표시), 시계열 시각화 워크플로를 가능하게 합니다
* **시계열 비교**: 현재 값을 최근 과거 값과 비교합니다(예: 현재 프레임과 이전 프레임 비교, 시간에 따른 변화 감지, 시계열 패턴 분석), 시계열 비교 워크플로를 가능하게 합니다

## 다른 블록에 연결하기

이 블록은 모든 유형의 데이터(이미지, 탐지 결과, 값 등)를 받아 버퍼링된 출력 배열을 생성합니다:

* **값을 출력하는 모든 블록 뒤에** : 버퍼링할 값을 생성하는 블록 뒤에(예: 이미지 소스의 이미지를 버퍼링, 탐지 모델의 탐지 결과를 버퍼링, 분석 블록의 값을 버퍼링), 데이터 버퍼링 워크플로를 가능하게 합니다
* **배열을 처리하는 블록 앞에** : 배치 또는 과거 데이터를 제공하기 위해(예: 버퍼링된 이미지 처리, 탐지 배열 분석, 값 시퀀스 작업), 배열 처리 워크플로를 가능하게 합니다
* **시각화 블록 이전** : 시퀀스 또는 시계열 데이터를 표시하기 위해(예: 프레임 시퀀스 시각화, 탐지 기록 표시, 시계열 패턴 표시), 시계열 시각화 워크플로를 가능하게 합니다
* **분석 블록 앞에** : 과거 데이터가 필요한 블록 앞에(예: 시간에 따른 추세 분석, 현재와 과거 비교, 시계열 처리), 시계열 분석 워크플로를 가능하게 합니다
* **집계 블록 앞에** : 집계를 위한 여러 값을 제공하기 위해(예: 버퍼링된 값 집계, 여러 탐지 결과 처리, 최근 데이터 결합), 집계 워크플로를 가능하게 합니다
* **시계열 처리 파이프라인에서** : 최근 기록을 유지해야 하는 경우(예: 시간에 따른 변화 추적, 프레임 시퀀스 유지, 시계열 분석을 위한 데이터 수집), 시계열 처리 워크플로를 가능하게 합니다

## 요구 사항

이 블록은 모든 유형의 데이터(이미지, 탐지 결과, 값 등)와 함께 작동합니다. 버퍼는 동일한 워크플로 인스턴스 내에서 워크플로 실행 간에 상태를 유지합니다. 그 `길이` 매개변수는 버퍼에 유지할 값의 최대 개수를 결정합니다.  `패딩` 가 활성화되면, 버퍼는 항상 정확히 `길이` 개 요소를 반환합니다( `None` 필요한 경우 패딩됨).  `패딩` 가 비활성화되면, 버퍼는 0에서 `길이` 값이 추가됨에 따라 개 요소까지 증가한 다음, `길이` 오래된 값을 제거하여 개 요소를 유지합니다. 버퍼는 워크플로 실행 동안 유지되며 워크플로가 다시 시작되면 초기화됩니다.

### 유형 식별자

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

### 속성

| **이름** | **유형** | **설명**                                                                                                                                                                                                         | 참조 |
| ------ | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -- |
| `name` | `str`  | 이 단계에 대한 고유 식별자를 입력하세요..                                                                                                                                                                                       | ❌  |
| `길이`   | `정수`   | 버퍼에 유지할 요소의 최대 수입니다. 버퍼가 이 길이를 초과하면 가장 오래된 요소는 자동으로 제거됩니다. 슬라이딩 윈도우의 크기를 결정합니다. 0보다 커야 합니다. 일반적인 값은 프레임 시퀀스의 경우 2-10 범위이며, 더 긴 기록에는 더 높은 값이 사용됩니다..                                                            | ❌  |
| `패딩`   | `bool` | 일관된 버퍼 크기를 유지하기 위해 패딩을 활성화합니다. True이면 버퍼는 `None` 값으로 채워 정확히 `길이` 개 요소로 패딩되어 출력이 항상 `길이` 개 항목을 갖도록 보장합니다. False이면 버퍼는 0에서 `길이` 값이 추가됨에 따라 증가한 다음, `길이` 오래된 값을 제거하여 유지합니다. 다운스트림 블록이 고정 크기 배열을 요구할 때 패딩을 사용하세요.. | ❌  |

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

### 런타임 호환성

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

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

### 입력 및 출력 바인딩

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

<details>

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

* 입력
  * `데이터` (*Union\[*[*`list_of_values`*](/workflows/ko/developer-guide/developer-guide/kinds/list-of-values.md)*,* [*`이미지`*](/workflows/ko/developer-guide/developer-guide/kinds/image.md)*,* [*`*`*](/workflows/ko/developer-guide/developer-guide/kinds/wildcard.md)*]*): 버퍼에 추가할 모든 유형의 입력 데이터입니다. 이미지, 탐지 결과, 값 또는 다른 워크플로 출력일 수 있습니다. 가장 최근 값은 버퍼 배열의 시작 부분에 추가됩니다. 버퍼는 가장 최근 값의 슬라이딩 윈도우를 유지합니다..
* 출력
  * `출력` ([`list_of_values`](/workflows/ko/developer-guide/developer-guide/kinds/list-of-values.md)): 모든 유형의 값 목록.

</details>

<details>

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

```json
{
	    "name": "<your_step_name_here>",
	    "type": "roboflow_core/buffer@v1",
	    "data": "$steps.visualization",
	    "length": 5,
	    "pad": true
	}
```

</details>
