각 시간은 영상 처리 파이프라인에서의 단계별 성능임.
1. 평균 전처리 시간 (Preprocess Time)
의미
- 입력 데이터를 모델에 맞게 전처리하는 데 걸리는 시간입니다.
- 예를 들어, 비디오 프레임을 읽고 모델이 요구하는 형태로 변환하는 과정이 포함됩니다.
TSM이 요구하는 형태는?
TSM 모델은 비디오 데이터를 처리할 때 시간에 따른 프레임의 순서와 구조를 중요하게 다룹니다. 이를 위해 TSM 모델은 다음과 같은 입력 형태를 요구합니다:
- 입력 형태 (Shape):
- (Batch, Channel, Frames, Height, Width)
- 예를 들어, (1, 3, 8, 224, 224)는 1개의 샘플, 3개의 채널 (RGB), 8개의 프레임, 224x224 해상도를 의미합니다.
- 프레임 수:
- TSM 모델은 한 번의 인퍼런스에 여러 프레임을 필요로 합니다.
- 예를 들어, **num_clips=8**로 설정되면 8개의 프레임이 필요합니다.
- RGB 채널:
- 입력 영상은 3채널 RGB 이미지여야 합니다 (BGR이 아닌 RGB).
- OpenCV는 기본적으로 BGR로 이미지를 읽기 때문에 BGR → RGB 변환이 필요합니다.
- 크기 (Height x Width):
- 보통 224x224 픽셀로 이미지를 리사이즈해야 합니다.
- 모델이 훈련될 때 사용된 입력 크기와 일치해야 합니다.
- 정규화 (Normalization):
- 픽셀 값을 모델이 훈련된 범위에 맞게 정규화해야 합니다.
- 예를 들어, 0
255 범위의 픽셀 값을 01 사이로 스케일링하거나, - 평균 및 표준편차를 이용해 정규화합니다.
전처리 단계 예시 (TSM 모델용)
1. BGR → RGB 변환
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
2. 리사이즈 (224x224)
img = cv2.resize(img, (224, 224))
3. 텐서로 변환
PyTorch 텐서 형태 (Channel, Height, Width)로 변환합니다.
import torch img_tensor = torch.from_numpy(img).permute(2, 0, 1).float() # (H, W, C) → (C, H, W)
4. 정규화
TSM 모델이 훈련될 때 사용한 평균 및 표준편차로 정규화합니다.
mean = torch.tensor([0.485, 0.456, 0.406]).view(3, 1, 1) std = torch.tensor([0.229, 0.224, 0.225]).view(3, 1, 1) img_tensor = (img_tensor / 255.0 - mean) / std
5. 프레임 스택
여러 프레임을 스택해서 (Batch, Channel, Frames, Height, Width) 형태로 만듭니다.
batch_tensor = img_tensor.unsqueeze(0).unsqueeze(2) # (1, 3, 1, 224, 224)
----------------------------------------------------------------------------------------------------------------
2. 평균 추론 속도 (Inference Time)
의미
- 모델이 실제로 예측을 수행하는 데 소요되는 시간입니다.
- 입력 데이터를 모델에 전달하고 출력을 받는 과정입니다.
포함되는 작업
- 모델의 순전파 (Forward Pass)
- 계산 그래프 내에서 텐서 연산 수행 (예: CNN, Transformer 등)
- GPU/CPU에서의 병렬 연산
중요성
- 모델의 성능 지표를 나타냅니다.
- 추론 속도가 느리면 실시간 처리가 불가능해집니다.
- 모델 최적화 및 하드웨어 업그레이드를 통해 개선할 수 있습니다.
----------------------------------------------------------------------------------------------------------------
3. 평균 후처리 시간 (Postprocess Time)
의미
- 모델의 출력을 사람이 이해할 수 있는 형태로 가공하는 데 걸리는 시간입니다.
- 예측된 결과를 정리하고 시각화하거나, 특정 기준에 맞게 처리하는 과정이 포함됩니다.
포함되는 작업
- 모델 출력에서 상위 예측 추출 (Top-K 결과)
- 예측 확률(score) 정리
- 결과를 비디오에 오버레이 (시각화)
- 텍스트 레이블 매칭
중요성
- 빠른 후처리는 최종 결과를 신속하게 보여줍니다.
- 느린 후처리는 사용자 경험에 부정적 영향을 미칠 수 있습니다.
요약
단계의미중요성
전처리 시간 | 입력 데이터를 모델이 요구하는 형태로 변환 | 느리면 GPU 유휴 시간 증가 |
추론 속도 | 모델이 예측을 수행하는 데 걸리는 시간 | 모델 성능 및 실시간 처리 여부 결정 |
후처리 시간 | 예측 결과를 가공하고 시각화하는 시간 | 최종 결과의 신속한 전달 및 사용자 경험 개선 |
예시로 이해하기
출력 예시를 다시 살펴보면:
Speed: 1.0ms preprocess, 295.5ms inference, 261.3ms postprocess per image
이 예시의 의미:
- 전처리 시간:
- 1.0ms 동안 비디오 프레임을 읽고, 색상 변환 및 텐서로 변환했습니다.
- 추론 속도:
- 295.5ms 동안 모델이 프레임을 분석하고 결과를 예측했습니다.
- 후처리 시간:
- 261.3ms 동안 예측된 결과를 정리하고 시각화했습니다.
최종 소요 시간:
- 총 시간 = 1.0ms + 295.5ms + 261.3ms = 557.8ms
이 값들은 성능 병목을 찾는 데 유용합니다:
- 전처리가 오래 걸리면 데이터 로딩과 전처리 최적화가 필요합니다.
- 추론이 느리면 모델 경량화 또는 GPU 업그레이드를 고려해야 합니다.
- 후처리가 느리면 후처리 코드 최적화가 필요합니다.
'딥러닝' 카테고리의 다른 글
다운로드 할 파일 총 용량 알아보는 법 (0) | 2024.12.11 |
---|---|
인강) 코렙 시작하기 (4) | 2024.12.11 |
kinetics 600 데이터셋 비디오 특정클래스만 다운받기 (0) | 2024.12.11 |
TSM(Temporal Shift Module) train (0) | 2024.12.10 |
mmdetection 장점, 백본, 모델에 대한 설명 (0) | 2024.12.10 |