Local Binary Pattern Networks
1 Introduction
CNN기반의 모델들의 성능이 충분히 좋아지고 있지만, 이러한 알고리즘들이 해결해야할 첫번째는 메모리와 계산 효율성의 향상, 또한 모델의 크기 또한 작아져야 한다는 것입니다.
이 논문에서는 하드웨어에 적합한 비컨볼루셔널 연산을 제안합니다. 이는 end-to-end로 스크래치부터 학습이 가능합니다. 이 방법은 딥러닝 시대 이전에 제안되었던 local binary patterns (LBP) 211에 그 뿌리를 두고 있습니다. LBP를 딥 러닝 모델에 적용시키려는 시도는 이전에 있었지만, LBP가 수행하는 논리 연산(비교)가 컨볼루션 연산이 근본적으로 다름에서 오는 문제로 곧바로 CNN 프레임워크에 적용할 수가 없었습니다.
논문에서 제안하는 LBPNet에서는 계산 대신 비 컨볼루셔널 비교 연산을 수행합니다. Max-pooling이나 reLU와 같은 연산은 덧셈이나 곱셈이 필요가 없이 논리 연산만 필요하므로 실제로 컨볼루션 연산이 주된 계산을 차지하게 됩니다. 여기에서는 이것을 미분가능한 바이너리 패턴과 랜덤 프로젝션을 이용하여 풀고자 하였습니다. 결과적으로 LBPNet은 바이너리 연산을 이용하면서도 end-to-end로 학습이 가능하게 되었습니다.
2 Related Works
3 Local binary Pattern Network
LBPNet의 전파 과정은 LBP 연산과 채널 퓨전의 2개의 단계로 나누어집니다.
3.1 Patterns in LBPNets
LBPNet은 샘플링 포인트의 위치들로 정의되는 여러개의 패턴들로 구성되며, 이를 이용하여 여러 출력 채널들을 생성하게 됩니다. 패턴은 표준 분포로 랜덤하게 초기화됩니다. 학습 가능한 이 패턴들은 미리 비트 위치가 결정되어있습니다. 패턴 위치의 true-false 출력을 정해진 비트 위치에 넣어 출력 값을 구성하게 됩니다.
3.2 LBP operation
LBPNet은 먼저 입력된 이미지로부터 픽셀을 샘플링하고 샘플링된 픽셀의 중앙의 픽셀과 값을 비교를 합니다. 샘플링 픽셀이 더 큰 경우 비트를 1을, 그렇지 않으면 0을 내보냅니다. 다음 출력된 비트를 미리 정의된 비트 위치에 할당합니다. 이런 과정을 다음 장소로 옮겨 다시 수행합니다. 대부분의 경우 입력 이미지는 여러 채널을 가지고 있는데, 각 입력 채널에 대해 같은 과정을 수행합니다.
예를 들어 2개의 입력 채널이 있는 경우, 각 입력 채널에 대해 서로 다른 커널 패턴을 사용합니다. 각 커널이 4비트 출력을 내놓는다고 가정하면 총 8비트 출력이 생성됩니다. 이제 채널이 explosion되는 것을 막기 위하여 채널 퓨전을 할 것입니다.
3.3 Channel Fusion with Random Projection
이제 12연구의 랜덤 프로젝션을 사용하여 출력 중간 단계에서 출력 비트를 선택하고자 합니다. 이를 이용하면 거리를 유지하면서도 차원을 줄일 수 있습니다. 랜덤 프로젝션은 각 채널마다 미리 정의된 매핑 테이블을 이용하여 계산된 비트 중 프로젝션될 비트를 선택합니다. 프로젝션 맵은 초기화때부터 고정된 것을 사용하며, 같은 채널에서는 같은 매핑을 공유합니다. 사실은 고정된 매핑을 사용하기 때문에 프로젝션 되지 않는 비트는 계산할 필요가 없어지기 때문에 계산량을 낮추는 효과가 있습니다.
전체 전파 과정에서 곱셈 연산은 없고, 비교와 메모리 접근만 남게 됩니다. 따라서 LBPNets은 소프트웨어, 하드웨어 모든 관점에서 효율적입니다.
3.4 Network structures for LBPNet
LBP는 고주파 성분은 잘 추출할 수 있지만, 저주파성분은 상대적으로 약합니다. 따라서 residual 식의 구조를 사용하였습니다. 처음에는 기존의 Residual 모듈에서 컨볼루션을 LBP로 교체하고 이후에 1x1 컨볼루션을 수행한 다음 ReLU를 수행하였지만, LBP의 비트가 늘어날 수록 컨볼루션이 너무 많은 연산을 소모되었습니다. 따라서 LBP 연산에 랜덤 프로젝션을 적용하였습니다. LBP에서 출력된 픽셀은 늘 양수이므로, shifted rectified linear layer (shifted-ReLU)를 적용하였습니다. 이것은 LBP 최대 출력의 반 값보다 낮은 수는 0으로 만드는 것입니다.
전체 연산에 MAC 연산을 없게 하기 위하여 더하는 연산 대신, 입력 텐서와 shifted-ReLU의 출력을 채널 차원에서 붙이는 방법을 사용하였습니다.
3.5 Hardware Benefits
기존 컨볼루션 레이어를 LBP로 교체할 경우, 27배의 하드웨어 비용을 아깔 수 있으며, 153배의 에너지 감소 효과가 있었습니다.
4 Backward Propagation of LBPNet
4.1 Differentiability
먼저 비교 연산은 다음과 같이 shifted되고 scaled된 hyperbolic tangent 함수로 근사화 할 수 있습니다.
$$ I_p \gt I_c $$
$$ \frac{1}{2}(\tanh(\frac{I_p - I_c}{k}+1)) $$
여기서 $k$는 스케일 파라미터로 LBP레이어의 샘플링 포인트 수가 적당합니다.
4.2 Deformation with Optical Flow Theory
로컬 바이너리 패턴을 바꾸기 위해서 옵티컬 플로우 이론을 사용해보았습니다.
$$ \frac{\partial I}{\partial x}V_x + \frac{\partial I}{\partial y}V_y = - \frac{\partial I}{\partial t} \tag{4}$$
식 4는 옵티컬 플로우의 식을 나타내는데, $I$는 이미지 픽셀 값을, $V_x, V_y$는 같은 혹은 비슷한 이미지 들의 옵티컬 플로우를 나타냅니다. 식의 왼쪽은 이미지 그래디언트와 옵티컬 플로우 간의 내적으로 생각할 수 있으며, 이 내적은 서로 다른 이미지 간의 밝기 차의 -1을 곱한 것과 같다고 해석할 수 있습니다.
같은 클래스에 속하는 이미지 간의 차이를 최소화하는 것은 같은 클래스의 이미지에서는 비슷한 피쳐를 출력하는 것과 동일합니다. 하지만 이미지에 깔려 있는 옵티컬 플로우 방향과 매그니튜드를 알기는 어렵습니다. 또한 그래디언트를 옵티컬 플로우의 수직 방향으로 바꾸는 것으로는 최소화가 되질 않습니다. 따라서 식 4의 오른쪽 부분을 최소화하려면, 이미지간의 그래디언트를 최소화하는 방법 밖에 없습니다. 그래디언트를 바꾸는 것은 로컬 바이너리 패턴의 샘플링 위치를 바꿈으로써 가능합니다.
다음 식은 출력 로스가 FC레이어를 통해 들어온 그래디언트를 나타냅니다.
$$ \frac{\partial cost}{\partial position} = \sum_j (\Delta_j w_j) \frac{\partial g(s)}{\partial s} \frac{\partial s}{\partial I{i, p}} ( \frac{\mathbf{d}I_{i, p}}{\mathbf{d}x}\hat{x} + \frac{\mathbf{d}I_{i, p}}{\mathbf{d}y}\hat{y}) $$
이 식에서 $\Delta_j$는 역전파 에러, $\frac{\partial g(s)}{\partial s}$는 활성 함수의 도함수, $\frac{\partial s}{\partial I_{i, p}}$는 앞에서 설명한 hyperbolic tangent의 그래디언트입니다.
5 Experiments
6 Conclusion and Future Works