본문 바로가기
딥러닝

딥러닝의 평균 전처리 시간, 평균 추론 속도, 평균 후처리 시간이란?

by jennyiscoding 2024. 12. 11.

각 시간은 영상 처리 파이프라인에서의 단계별 성능임.

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):
    • 픽셀 값을 모델이 훈련된 범위에 맞게 정규화해야 합니다.
    • 예를 들어, 0255 범위의 픽셀 값을 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. 전처리 시간:
    • 1.0ms 동안 비디오 프레임을 읽고, 색상 변환 및 텐서로 변환했습니다.
  2. 추론 속도:
    • 295.5ms 동안 모델이 프레임을 분석하고 결과를 예측했습니다.
  3. 후처리 시간:
    • 261.3ms 동안 예측된 결과를 정리하고 시각화했습니다.

최종 소요 시간:

  • 총 시간 = 1.0ms + 295.5ms + 261.3ms = 557.8ms

이 값들은 성능 병목을 찾는 데 유용합니다:

  • 전처리가 오래 걸리면 데이터 로딩과 전처리 최적화가 필요합니다.
  • 추론이 느리면 모델 경량화 또는 GPU 업그레이드를 고려해야 합니다.
  • 후처리가 느리면 후처리 코드 최적화가 필요합니다.