검색 상세

선택적 버퍼 재사용을 통한 딥러닝 기반 객체 인식에서의 메모리 사용량 절감 기법

Memory Efficient Deep Learning-based Object Detection by Selective Reusing Buffers

초록/요약

Deep Neural Networks(DNNs)는 노드와 가중치 형태로 구성되어 있는 패턴 인식 기술 중 하나로, 이미지 분류와 객체 인식과 같은 인공지능 분야에서 높은 정확도를 보이면서 두각을 나타내고 있다. 이에 임베디드 시스템과 같이 계산 자원이 낮은 플렛폼에서도 DNNs를 도입하려는 시도가 증가하고 있다. 하지만 DNNs는 계산 복잡도와 더불어 메모리 사용량이 상당히 높아 임베디드 기기에서 수행하기에는 힘들다. 예로 들어, Convolutional Neural Network(CNN) 기반의 이미지 분류 및 객체 인식 기법은 이미지 1장에 대한 추론을 진행할 시 메모리 사용량이 1GB에 육박하는 모습을 보인다. 이러한 문제점을 해결하기 위해 모델 압축(model compression)을 통해 CNN의 연결 시냅스의 양을 줄이거나 양자화(quantization)를 통해 가중치의 크기를 줄임으로서 메모리 사용량을 절감하고, 이에 맞는 연산 가속기를 통해 수행시간까지 절감하는 연구들이 많이 등장하고 있다. 하지만 이러한 기법들은 본래의 CNN 기법에 적용할 시 일정 수준의 정확도 손실을 감수해야하는 문제점이 있다. 본 논문에서는 계층의 입출력을 저장하는 버퍼와 내부 데이터를 저장하는 임시 버퍼를 최소한으로 생성하고, 이를 재사용하여 정확도 손실 없이 메모리 사용량을 절감하는 기법을 제안한다. 단순한 구조인 이미지 분류 뿐만 아니라 복잡한 구조를 가지는 CNN기반의 객체 인식에서도 선택적 버퍼 재사용이 가능하도록 구성하였다. 실험 결과, 추론 정확도의 손실 없이 이미지 분류 기법에서 약 25.74%, 객체 인식 기법에서 약 55.51% 가량 메모리 사용량을 절감하였다.

more

목차

1. 서론 1
2. 배경 4
2.1. CNN 4
2.2. 이미지 분류 5
2.3. 객체 인식 7
2.4. GPGPU 8
3. 동기 및 기여 10
4. OpenCL 기반의 이미지 분류 및 객체 인식 구동을 위한 프레임워크 14
4.1. 구동 환경 및 구현 대상 선정 14
4.1.1. GPGPU 14
4.1.2. 이미지 분류 15
4.1.3. 객체 인식 16
4.2. 계층 구조와 가중치 확인 17
4.3. 연산 모듈 수행 19
4.3.1. 이미지 전처리 수행 20
4.3.2. 계층과 버퍼 호출 및 생성 20
4.3.3. 계층 별 연산 수행 23
5. 선택적 버퍼 재사용을 통한 객체 인식에서의 메모리 절감 기법 25
5.1. 현재의 버퍼 사용 25
5.2. 선택적 버퍼 재사용 알고리즘 26
5.2.1. VGGNet에서의 단순 버퍼 재사용 26
5.2.2. SSD에서의 선택적 버퍼 재사용 31
5.2.2.1. 병렬적 구조 인지 과정 31
5.2.2.2. 선택적 버퍼 재사용 알고리즘 35
5.2.3. 기타 최적화 38
5.2.3.1. 메모리 구조에 따른 최적화 38
5.2.3.2. 임시 버퍼의 공유 39
5.3. 성능 분석 40
5.3.1. 실험 환경 40
5.3.2. 실험 결과 41
5.3.2.1. VGGNet 41
5.3.2.2. SSD 42
6. 결론 및 향후 연구 43
참고문헌 44

more