convolution (컨볼루션 연산, 합성곱신경망), Filter, Max pooling, Fully Connected Layer
=> CNN(convolution neural network)
CNN 모델 중 VGG 모델 많이 사용
PC에서는 Dot product과정이 Convolution Operation이지만,
모바일에선 Convolution Operation이 아니라 Matrix Multiplication으로 변환해서 수행
#GEMM기반의 매트릭스 연산을 Convolution 연산으로 바꿔서 푼 이유가
GEMM이 굉장히 빠르고 좋다는 가정 하에 했지만 모바일에서는 그리 좋지 않음.
=> 합성곱이 아닌 다른게 필요함.
#메모리 운영이 병목되는 상황에서 여러번 카피하여 새로운 매트릭스에 들어가는 것은 효율적이지 않음
=> 여러번 읽어야하며, 이는 실행 속도에 큰 영향을 줌
# 연속된 이미지의 경우에는 크게 변하지 않는 경우가 많은데, 그런 경우 프레임 간의 중복이 많아짐.
=> 크게 바뀌지 않는 이미지에서도 Deep Neural Network(DNN)를 해야하기 때문
=>이를 해결하기 위한 기술들이 많이 등장하고 있으니 알아보자.
ex)
Mobile GPU-Aware Processing
{Convolution operations directly on input //GEMM을 거치지 않고, 직접 컨볼루션 수행
- No matrix building overhead
- Less memory consumption
FFT-based convolution approximation //FFT를 기반으로 기존과 근사하게 하여 가속화하는 기술
Leverage local memory (high performaance cache inside GPU) //로컬캐쉬를 활용하여 연산을 빠르게 함
- Store reusable convolutional kernels inside the local memory
- It will be shared across multiple threads
Use half floating point (32bits -> 16bit) // 수의 표현 정확도를 32bit에서 16bit로 줄임으로서 연산을 가속시킴
}
Convolution Caching
- 2개의 연이은 이미지가 있을때, 컨볼루션 섬이 비슷하면 기존의 컨볼루션 이미지 재활용
- 다르면 그 부분만 컨볼루션 연산 수행
Matrix Decomposition
- 하나의 큰 매트릭스 연산을 여러개의 작은 매트릭스 연산으로 나눠서 수행하면 훨씬 더 빠른 속도로 가속화 가능
- 정확도의 저하가 생김
결론
딥러닝 기술의 많은 연구에 경우 정확도가 중요한 경우가 많지만,
다른 요소로 시스템에 잠재된 문제, 파워소모 등 고려해야함.
=> 자원의 제약이 큰 모바일 환경을 고려하여 딥러닝 기술을 IOT 기기에 활용해야함
accuracy의 문제 뿐만 아니라, latency, execution의 속도, power 소모 등 여러 시스템 문제에 대해서도
관심을 가지고 최적화 해주는 과정이 필요함