color 2D input image $x_i$를 일련의 layers를 통해 다양한 $C$ classes에 대한 probability vector $\hat{y}_i$에 매핑
각 layer는 다음으로 구성
학습된 필터를 통해 이전 layer output과의 convolution 연산(첫 번째 layer의 경우 input image와의 convolution 연산)
rectified linear function을 통해 전달($relu(x) = max(x,0)$)
local neighborhoods에 대한 max pooling(optional)
feature maps을 거쳐 정규화를 거치는 local contrast operation(optional)
네트워크의 상위 몇 계층은 fully-connected layers이며 최종 layer는 softmax classifier
$N$개의 large labeled images set $\left\{x,y \right\}$를 통해 모델을 훈련
$y_i$는 true class를 포함한 discrete variable
$\hat{y}$와 $y_i$를 비교하기 위해 image classification에 적합한 cross-entropy loss function을 사용
convolutional layers의 filters, fully-connected layers의 weight, biases 등은 네트워크 전체에 걸쳐 파라미터에 대한 loss의 미분을 backpropagating하며, stochastic gradient descent를 통해 업데이트하여 학습
convnet의 작동 원리를 이해하기 위해선 중간 layer의 feature activity를 해석해야하기 때문에 이러한 activity들을 input pixel space로 되돌리는 방식을 제안
feature map 내에서 주어진 activation이 어떠한 input pattern에서 비롯되었는지를 확인
Deconvolutional Network(deconvnet)을 활용
deconvnet은 convnet과 동일하게 filtering과 pooling으로 구성되지만 이와 반대로 작동
pixel을 feature에 매핑하는 것이 아닌 feature를 pixel에 매핑
deconvnet의 원논문에서는 이를 unsupervised learning을 위한 방법으로 제시했지만, 본 논문에선 이미 학습된 convnet의 검사 용도로만 활용되며, 학습 능력을 사용하진 x
convnet을 검사하기 위해 convnet의 각 layer에 deconvnet을 붙여 image pixel로 돌아가는 연속된 경로 제공
먼저 input image가 convnet에 주어지고, layer 전체에서 feature를 계산
주어진 convnet activation을 확인하기 위해 layer의 다른 모든 activation은 0으로 설정하고, 생성된 feature map을 해당 layer에 부착된 deconvnet layer에 input으로 전달
선택된 activation의 원인이 된 하위 layer의 activity를 unpool, rectify, filter를 거쳐 reconstruct
reconstruction을 생성하는 과정(projection)에서는 convnet의 max pooling 과정에서 생성된 switch setting을 사용
이러한 switch setting은 주어진 input image에 고유하기 때문에, 한 번의 activation을 통해 얻어진 reconstruction은 원본 input image의 작은 조각과 유사
reconstruction은 feature activation에 대한 기여도에 따라 가중치가 부여된 구조
input image의 어떤 부분이 모델 훈련 과정에서 중요하게 작용했는지를 확인 가능
projection 과정은 generative process를 포함하지 않기 때문에 모델에서 추출된샘플이 아님
Unpooling
convnet의 max pooling 연산은 비가역적(non-invertible)이기 때문에 역함수를 계산할 수 없지만, 각 pooling 영역 내 최대값들의 위치를 switch 변수에 기록하여 대략적인 inverse를 얻을 수 있음
deconvnet의 unpooling 연산에서는 switches를 사용하여 상위 layer의 reconstructions를 stimulus의 구조를 보존하면서 적절한 위치로 배치시킴
Rectification
convnet은 feature map이 항상 양수이게 해주는 ReLU 비선형 함수를 사용
각 layer의 적절한 feature reconstructions 또한 항상 양수여야 하기 때문에 ReLU 사용
음수 값에 대한 복원은 불가능한데, 이는 결과에 큰 영향을 미치지 않음
Filtering
convnet은 학습된 filter를 사용하여 이전 layer의 feature map에 대한 convolution 연산을 수행
deconvnet에서는 동일한 filter의 transposed version을 사용
이전 layer의 ouput이 아닌 rectified map에 적용
실제로는 각 filter를 수직, 수평으로 뒤집은 형태
💡 transposed convolution : 처음 transposed convolution은 input data를 abstract spatial representation으로 compress하기 위해 convolution 연산을 사용한 이후, 이를 다시 decompress하는 경우에 사용되었다. 그 예시로 convolutional auto-encoder의 복원 과정과, semantic segmentation 분야를 들 수 있다.
transposed convolution 방법이 전통적인 upsampling 방법론들보다 훨씬 유연하게 활용이 가능한 것은 사실이지만, 먼저 최적의 kernel weight를 학습하지 않으면 이를 적용하지 못한다는 단점이 있다. 또한 output에 checkerboard artifacts가 발생할 수 있다. 여기서 checkerboard artifacts란, 다음 그림과 같이 이미지를 매우 가깝게 보는 경우 checkerboard 패턴이 보이는 것을 말한다.
transposed convolution의 과정은 다음과 같다. 이는 실제 커널을 수직, 수평으로 flip한 필터를 사용하는 convolution 연산이라고 생각할 수 있다. 아래 그림에서는 커널 내 다크 블루 색상이 본래 오른쪽 하단에 있었는데, 연산 과정에서는 왼쪽 상단으로 옮긴 것을 확인할 수 있다.
모델이 1번 완전히 훈련이 끝난 후의 feature visualization으로, 주어진 feature map에 대한 가장 강력한 activation 9개를 나타냄
각 layer에서의 projection은 네트워크의 계층적 특성을 나타냄
Layer 2 : input image의 코너 부분이나 엣지 및 색상 등 단순한 부분을 나타냄
Layer 3 : 좀 더 복잡한 부분, 즉 유사한 질감 표현 등을 나타냄(Row 1, Col 1에서의 mesh pattern 등)
Layer 4 : 상당한 편차가 있지만 좀 더 class-specific한 부분을 나타냄(개의 얼굴, 새의 다리 등)
Layer 5 : 위치나 자세의 변화를 포함하는 전체적인 객체를 나타냄
Feature Evolution during Training
주어진 feature map을 pixel space로 project하는 과정에서 가장 강력한 activation의 훈련 과정에서의 변화
이미지 내에서의 갑작스러운 변화는 가장 강력한 activation이 생성되면서 발생
[1,2,5,10,20,30,40,64] epoch에서 각 layer의 변화를 나타낸 것으로, 하위 layer에서는 비교적 적은 epoch만에 수렴하는 것처럼 볼 수 있지만, 상위 layer의 경우 40-50 이상의 많은 epoch를 학습해야 수렴
모델이 완전히 수렴할 때까지 충분한 학습이 필요함을 입증
Feature Invariance
Feature Invariance란, input image가 변화하여도 모델의 output은 크게 변하지 않는 정도를 말함
5개의 샘플 이미지에 대해 위치 이동(translation), 크기 변환(scaling), 회전 변환(rotation)을 수행한 이미지를 통해 모델의 가장상단 및 하단인 layer 1와 layer 7 각각의 feature vector와 변환을 하지 않은 이미지에 대한 feature 간의 Euclidean distance을 확인
a2~c2는 layer 1, a3~c3는 layer 7에 대하여 변환을 하지 않은 이미지의 feature와의 Euclidean distance를 나타냄
a4~c4는 이미지가 변환되었을 때 각 이미지에 대한 실제 레이블에 대한 probability를 나타냄
layer 1에서는 색상, 엣지 등 단순한 영역을 나타내기 때문에 작은 변화에도 큰 차이가 발생하지만, 이후 점점 그 영향이 작아짐
모델의 output은 translation과 scaling에서는 비교적 안정적이지만, rotation에서는 불안정
회전 대칭(rotational symmetry)이 있는 entertainment center 등의 객체는 비교적 안정적임으로 제외
이미지 분류 모델이 이미지 내 객체의 위치를 실제로 파악하는지, 혹은 주변의 context를 통해 분류하는 것인지 확인하기 위해 input image의 다양한 부분을 grey square로 가린 후 분류 결과를 확인
input image 내 객체가 grey square에 의해 가려지면 layer 5(fully-connected layer 이전 마지막 layer)의 feature map의 activity와 올바른 클래스를 예측할 확률이 모두 현저히 떨어져 모델이 객체를 잘 localize하는 것을 확인
첫 번째 포메라니안 이미지의 예시에서는 개의 얼굴을 가릴 경우 feature map의 activity도 가장 덜 활발하며(파란색으로 표시), 올바른 클래스를 예측할 확률도 떨어짐(파란색)
💡 CNN 모델은 convolution filter를 기반으로한 convolution 연산과 이를 통해 생성된 feature map의 요약 과정으로 볼 수 있는 pooling 등을 거쳐 이미지에 대한 특징을 학습하고, 이를 통해 분류를 수행하는 모델이다. 그러나 AlexNet이 ImageNet 데이터셋에 대하여 상당히 좋은 성능을 보여주었음에도 불구하고, 왜 좋은 성능이 나타나는지 내부 작동 과정에 대해선 알 수 없었다. 이러한 문제점을 해결하기 위해 'ZFNet'은 기존의 'AlexNet' 모델에서의 pooling, convolution, activation 등을 반대로 수행하는 deconvnet 모델을 활용하여 이미지 분류 과정을 시각화하고, 이를 통해 첫 번째 layer에서의 문제점을 발견해 간단한 모델 아키텍처 수정으로 분류 성능을 향상시켰다.
ZFNet의 의미는 결국 CNN 모델의 중간 layer들이 어떤 특징을 학습하고, 어떤 과정을 거쳐 이미지 분류를 수행하는지를 확인할 수 있다는 점에 있다. 또한 이러한 시각화 방법을 잘 사용하여 CNN 모델이 수행해야하는 문제를 해결하기 위해 잘 작동하고 있는지 또한 확인할 수 있다.
color 2D input image xi를 일련의 layers를 통해 다양한 C classes에 대한 probability vector ˆyi에 매핑
각 layer는 다음으로 구성
학습된 필터를 통해 이전 layer output과의 convolution 연산(첫 번째 layer의 경우 input image와의 convolution 연산)
rectified linear function을 통해 전달(relu(x)=max(x,0))
local neighborhoods에 대한 max pooling(optional)
feature maps을 거쳐 정규화를 거치는 local contrast operation(optional)
네트워크의 상위 몇 계층은 fully-connected layers이며 최종 layer는 softmax classifier
N개의 large labeled images set {x,y}를 통해 모델을 훈련
yi는 true class를 포함한 discrete variable
ˆy와 yi를 비교하기 위해 image classification에 적합한 cross-entropy loss function을 사용
convolutional layers의 filters, fully-connected layers의 weight, biases 등은 네트워크 전체에 걸쳐 파라미터에 대한 loss의 미분을 backpropagating하며, stochastic gradient descent를 통해 업데이트하여 학습
convnet의 작동 원리를 이해하기 위해선 중간 layer의 feature activity를 해석해야하기 때문에 이러한 activity들을 input pixel space로 되돌리는 방식을 제안
feature map 내에서 주어진 activation이 어떠한 input pattern에서 비롯되었는지를 확인
Deconvolutional Network(deconvnet)을 활용
deconvnet은 convnet과 동일하게 filtering과 pooling으로 구성되지만 이와 반대로 작동
pixel을 feature에 매핑하는 것이 아닌 feature를 pixel에 매핑
deconvnet의 원논문에서는 이를 unsupervised learning을 위한 방법으로 제시했지만, 본 논문에선 이미 학습된 convnet의 검사 용도로만 활용되며, 학습 능력을 사용하진 x
convnet을 검사하기 위해 convnet의 각 layer에 deconvnet을 붙여 image pixel로 돌아가는 연속된 경로 제공
먼저 input image가 convnet에 주어지고, layer 전체에서 feature를 계산
주어진 convnet activation을 확인하기 위해 layer의 다른 모든 activation은 0으로 설정하고, 생성된 feature map을 해당 layer에 부착된 deconvnet layer에 input으로 전달
선택된 activation의 원인이 된 하위 layer의 activity를 unpool, rectify, filter를 거쳐 reconstruct
reconstruction을 생성하는 과정(projection)에서는 convnet의 max pooling 과정에서 생성된 switch setting을 사용
이러한 switch setting은 주어진 input image에 고유하기 때문에, 한 번의 activation을 통해 얻어진 reconstruction은 원본 input image의 작은 조각과 유사
reconstruction은 feature activation에 대한 기여도에 따라 가중치가 부여된 구조
input image의 어떤 부분이 모델 훈련 과정에서 중요하게 작용했는지를 확인 가능
projection 과정은 generative process를 포함하지 않기 때문에 모델에서 추출된샘플이 아님
Unpooling
convnet의 max pooling 연산은 비가역적(non-invertible)이기 때문에 역함수를 계산할 수 없지만, 각 pooling 영역 내 최대값들의 위치를 switch 변수에 기록하여 대략적인 inverse를 얻을 수 있음
deconvnet의 unpooling 연산에서는 switches를 사용하여 상위 layer의 reconstructions를 stimulus의 구조를 보존하면서 적절한 위치로 배치시킴
Rectification
convnet은 feature map이 항상 양수이게 해주는 ReLU 비선형 함수를 사용
각 layer의 적절한 feature reconstructions 또한 항상 양수여야 하기 때문에 ReLU 사용
음수 값에 대한 복원은 불가능한데, 이는 결과에 큰 영향을 미치지 않음
Filtering
convnet은 학습된 filter를 사용하여 이전 layer의 feature map에 대한 convolution 연산을 수행
deconvnet에서는 동일한 filter의 transposed version을 사용
이전 layer의 ouput이 아닌 rectified map에 적용
실제로는 각 filter를 수직, 수평으로 뒤집은 형태
💡 transposed convolution : 처음 transposed convolution은 input data를 abstract spatial representation으로 compress하기 위해 convolution 연산을 사용한 이후, 이를 다시 decompress하는 경우에 사용되었다. 그 예시로 convolutional auto-encoder의 복원 과정과, semantic segmentation 분야를 들 수 있다.
transposed convolution 방법이 전통적인 upsampling 방법론들보다 훨씬 유연하게 활용이 가능한 것은 사실이지만, 먼저 최적의 kernel weight를 학습하지 않으면 이를 적용하지 못한다는 단점이 있다. 또한 output에 checkerboard artifacts가 발생할 수 있다. 여기서 checkerboard artifacts란, 다음 그림과 같이 이미지를 매우 가깝게 보는 경우 checkerboard 패턴이 보이는 것을 말한다.
transposed convolution의 과정은 다음과 같다. 이는 실제 커널을 수직, 수평으로 flip한 필터를 사용하는 convolution 연산이라고 생각할 수 있다. 아래 그림에서는 커널 내 다크 블루 색상이 본래 오른쪽 하단에 있었는데, 연산 과정에서는 왼쪽 상단으로 옮긴 것을 확인할 수 있다.
모델이 1번 완전히 훈련이 끝난 후의 feature visualization으로, 주어진 feature map에 대한 가장 강력한 activation 9개를 나타냄
각 layer에서의 projection은 네트워크의 계층적 특성을 나타냄
Layer 2 : input image의 코너 부분이나 엣지 및 색상 등 단순한 부분을 나타냄
Layer 3 : 좀 더 복잡한 부분, 즉 유사한 질감 표현 등을 나타냄(Row 1, Col 1에서의 mesh pattern 등)
Layer 4 : 상당한 편차가 있지만 좀 더 class-specific한 부분을 나타냄(개의 얼굴, 새의 다리 등)
Layer 5 : 위치나 자세의 변화를 포함하는 전체적인 객체를 나타냄
Feature Evolution during Training
주어진 feature map을 pixel space로 project하는 과정에서 가장 강력한 activation의 훈련 과정에서의 변화
이미지 내에서의 갑작스러운 변화는 가장 강력한 activation이 생성되면서 발생
[1,2,5,10,20,30,40,64] epoch에서 각 layer의 변화를 나타낸 것으로, 하위 layer에서는 비교적 적은 epoch만에 수렴하는 것처럼 볼 수 있지만, 상위 layer의 경우 40-50 이상의 많은 epoch를 학습해야 수렴
모델이 완전히 수렴할 때까지 충분한 학습이 필요함을 입증
Feature Invariance
Feature Invariance란, input image가 변화하여도 모델의 output은 크게 변하지 않는 정도를 말함
5개의 샘플 이미지에 대해 위치 이동(translation), 크기 변환(scaling), 회전 변환(rotation)을 수행한 이미지를 통해 모델의 가장상단 및 하단인 layer 1와 layer 7 각각의 feature vector와 변환을 하지 않은 이미지에 대한 feature 간의 Euclidean distance을 확인
a2~c2는 layer 1, a3~c3는 layer 7에 대하여 변환을 하지 않은 이미지의 feature와의 Euclidean distance를 나타냄
a4~c4는 이미지가 변환되었을 때 각 이미지에 대한 실제 레이블에 대한 probability를 나타냄
layer 1에서는 색상, 엣지 등 단순한 영역을 나타내기 때문에 작은 변화에도 큰 차이가 발생하지만, 이후 점점 그 영향이 작아짐
모델의 output은 translation과 scaling에서는 비교적 안정적이지만, rotation에서는 불안정
회전 대칭(rotational symmetry)이 있는 entertainment center 등의 객체는 비교적 안정적임으로 제외
이미지 분류 모델이 이미지 내 객체의 위치를 실제로 파악하는지, 혹은 주변의 context를 통해 분류하는 것인지 확인하기 위해 input image의 다양한 부분을 grey square로 가린 후 분류 결과를 확인
input image 내 객체가 grey square에 의해 가려지면 layer 5(fully-connected layer 이전 마지막 layer)의 feature map의 activity와 올바른 클래스를 예측할 확률이 모두 현저히 떨어져 모델이 객체를 잘 localize하는 것을 확인
첫 번째 포메라니안 이미지의 예시에서는 개의 얼굴을 가릴 경우 feature map의 activity도 가장 덜 활발하며(파란색으로 표시), 올바른 클래스를 예측할 확률도 떨어짐(파란색)
💡 CNN 모델은 convolution filter를 기반으로한 convolution 연산과 이를 통해 생성된 feature map의 요약 과정으로 볼 수 있는 pooling 등을 거쳐 이미지에 대한 특징을 학습하고, 이를 통해 분류를 수행하는 모델이다. 그러나 AlexNet이 ImageNet 데이터셋에 대하여 상당히 좋은 성능을 보여주었음에도 불구하고, 왜 좋은 성능이 나타나는지 내부 작동 과정에 대해선 알 수 없었다. 이러한 문제점을 해결하기 위해 'ZFNet'은 기존의 'AlexNet' 모델에서의 pooling, convolution, activation 등을 반대로 수행하는 deconvnet 모델을 활용하여 이미지 분류 과정을 시각화하고, 이를 통해 첫 번째 layer에서의 문제점을 발견해 간단한 모델 아키텍처 수정으로 분류 성능을 향상시켰다.
ZFNet의 의미는 결국 CNN 모델의 중간 layer들이 어떤 특징을 학습하고, 어떤 과정을 거쳐 이미지 분류를 수행하는지를 확인할 수 있다는 점에 있다. 또한 이러한 시각화 방법을 잘 사용하여 CNN 모델이 수행해야하는 문제를 해결하기 위해 잘 작동하고 있는지 또한 확인할 수 있다.