TL;DR
이미지 전처리 파이프라인에서 CPU 기반 OpenCV 호출이 반복되는 Python 루프 때문에 GPU-resident 데이터 흐름에서 병목이 발생하자 저자는 torch.nn.functional만으로 레터박싱을 수행하는 Aspect-Pad를 개발해 공개했다. 구현은 각 이미지의 스케일과 패딩 오프셋을 텐서 연산으로 벡터화해 [B, C, H, W] 배치를 한 번에 처리하는 방식으로, Nvidia T4 환경에서 1920×1080을 512×512로 스케일링하는 배치 처리에서 OpenCV(순차 호출) 대비 총 실행시간 기준으로 7.8배 빠른 처리량을 보고했다. 다만 DataLoader에서 CPU 다중 워커와 결합된 전형적 CPU-중심 전처리에서는 OpenCV C++ 백엔드가 여전히 더 유리하며, GPU-상주 전처리나 DALI 스타일 워크플로에서만 Aspect-Pad가 CPU 병목을 제거해 실질적 이득을 제공한다.
실용적 조언
- GPU에 이미 데이터를 올려두고 배치 단위 전처리를 적용하는 파이프라인에서는 Python 레벨의 for 루프를 제거하고 텐서 연산으로 리사이즈와 패딩을 처리하면 처리량이 크게 개선된다. 텐서화 구현 시 각 이미지의 스케일·패드 오프셋을 벡터화해 브로드캐스트 연산으로 처리하면 GPU 병렬성을 극대화할 수 있다. 반면 DataLoader에서 num_workers로 CPU 병렬 로딩을 유지하는 구성이라면 OpenCV C++ 백엔드의 이점을 유지하는 편이 더 효율적이다.
섹션별 상세
용어 해설
- 레터박싱(종횡비 보존 패딩)(Letterboxing)
- — 이미지를 지정한 출력 해상도로 맞추기 위해 종횡비를 유지하면서 여백을 추가하거나 크기를 조정하는 처리 방식이다. 입력 이미지의 가로세로 비율을 유지하기 위해 먼저 축을 기준으로 리사이즈를 수행하고 남는 영역에 패딩을 채워 출력 크기를 만들며, 배치 처리에서는 각 이미지의 스케일·패딩을 개별적으로 계산해 적용해야 한다. 이 과정은 특히 OCR·검출 전처리에서 입력 해상도 통일과 공간적 왜곡 최소화에 중요한 역할을 한다.
- 배치 텐서(Batched Tensor)
- — 여러 이미지를 하나의 4차원 텐서 [B, C, H, W]로 합쳐 GPU에서 동시 연산할 수 있도록 구성한 데이터 표현이다. 배치 텐서는 동일한 연산을 한꺼번에 적용하여 메모리 접근과 연산 효율을 높이며, 전처리 단계에서도 리사이즈·패딩을 텐서 연산으로 대체하면 반복적인 Python 루프를 제거할 수 있다. 배치 처리는 특히 GPU-상주 파이프라인에서 CPU-호출 병목을 줄이는 핵심 수단이다.
- NVIDIA DALI
- — GPU 가속 데이터 로딩 및 증강 파이프라인을 제공하는 라이브러리로서 CPU-기반 전처리 병목을 완화하기 위해 설계되었다. DALI는 이미지 디코딩, 리사이즈, 크롭, 형변환 등을 GPU에서 파이프라인화하여 학습 중 데이터 준비 시간을 줄이며, GPU-기반 배치 전처리와 결합하면 전체 학습 처리량을 개선한다. 이 글의 맥락에서는 DALI 스타일의 워크플로와 GPU-상주 전처리의 유사 사례로 언급된다.
- torch.nn.functional
- — PyTorch에서 저수준 텐서 연산과 신경망 관련 함수들을 제공하는 모듈로서 연산을 직접 호출해 커스텀 변환을 구현할 때 사용된다. torch.nn.functional의 연산은 GPU에서 브로드캐스트·배치 연산으로 동작하므로 반복적인 Python 루프 대신 텐서 연산만으로 레터박스와 리사이즈를 처리하면 병렬 처리 이점을 얻을 수 있다. 이 글에서는 Aspect-Pad가 torch.nn.functional만 사용해 완전한 GPU 배치 전처리를 달성했다고 보고되었다.
언급된 도구
GPU에서 배치 레터박싱을 수행하는 PyTorch 네이티브 변환기
텐서 연산과 torch.nn.functional을 통해 GPU 상에서 배치 전처리를 구현하는 프레임워크
CPU 기반 이미지 리사이즈 및 패딩을 수행하는 라이브러리
언급된 리소스
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.