- Black box 모델인 CNN의 내부 동작을 가시화하는 방법들에 대해 설명한다
- CNN의 내부 동작을 확인하기 위해 모델의 결정 이유를 추론해내거나 데이터가 처리되는 과정을 살펴보는 방법들이 있다
- 성능이 낮은 모델을 개선하는 데에도 사용할 수 있음은 물론, 높은 성능에 신뢰도를 더하여 건전한 개발을 도울 수 있다
- 딥러닝 모델의 특성을 더 깊이 알아내기 위해 적용했던 직관들과 결과 예시 사진들을 통해, 알고리즘 자체와 처리된 데이터들의 특성을 파악할 수 있는 능력을 기르는 시간이 되면 좋겠다
- 분명 더 나은 모델을 개발하는 데에 큰 밑거름이 될 거라 믿는다
Filter weight visualization
가장 간단한 방법으로 필터를 visualization하는 방벙이다
위처럼 각 filter를 떼어내보면 각종 영상처리 필터와 같은 color edge detector, 각도 detector, 블록 detector 등 과 같은 다양한 기본적은 operation 들이 학습되었다
입력에 convolution을 취한 activation map 도 시각화 할 수 있다
이렇게 간단한 visualization을 통해서 CNN의 첫 layer가 어떤것을 보고 어떤 행동을 하는것인지를 조금 이해할 수 있다
더 뒤쪽 layer을 filter 자체의 차원수가 높아서 visualization 할 수 있는 형태가 아니다
그래서 차원수가 높아서 사람이 직관적으로 알아볼수 있는 형태가 나오지 않는다
Types of neural network visualization
모델 자체를 분석하는데 강점을 둔 방법들과
하나의 입력데이터에서 부터 모델이 어떤 결론을 내었을때 어째서 그런 결론이 도달하게 되었는지 출력을 분석하는 방법들도 있다
왼쪽으로 갈수록 모델을 이해하기 위한 분석에 가깝고 오른쪽으로 갈수록 데이터 결과를 분석하는데 초점을 맞춘 기준들이다
Layer activation - behaviors of mid - to high-level hidden units
Maximally activating patches - Example
Maximally activating patches - patch acquisition
지금까지는 activation을 분석하기 위해서 데이터를 사용했는데
이제는 예제 데이터를 사용하지 않고 네트워크가 내재하고 기억하고 있는 이미지가 어떤것인지 분석하는 방법을 소개한다
via Backprogation - Example
via Backpropagation - Derivatives of a class score with respect to input domain
위 방법은 input 이 들어가서 최종 출력에 대해서 input단에서 어떤 부분이 민감했는지를 찾는 방버으로 볼 수 있다
Guided backpropagation
foward 에 올라갈때 relu의 패턴도 0으로 만들어주고 반대로 backward할때도 음수값을 으로 만들어 준다
Guided backpropagation - comparison
backprop 이나 DeConv 방법보다도 굉장히 clear하게 이해가 된다
두 마스크를 모두 사용한 것이 forward 할때도 결과에 긍정적인 영향을 미치는 양수들을 참조하고 동시에 backward 할때도 gradient를 통해서 더 강화하는 움직임을 activation들을 고른것이다
이 두개의 조건을 만족하는 activation들이 실제적으로 최종 결과를 만들어냈을때 더 깨끗하고 좋은 결과를 만든다고 파악
CAM - Example
Global average pooling (GAP) layer instead of the FC layer
Derivation of CAM : Changing the order of the operations
CAM은 global average pooling을 적용하기 전이기 때문에 아직 공간에 대한 정보가 남아있다
by visualizing CAM, we can interpret why the network classified the input to that class
GAP layer enables localization without supervision
CAM 적용이 가능한 제약으로는 마지막 layer의 구성이 GAP과 FC layer 로 이루어져야 한다는게 단점이다
Requires a modification of the network architecture and re-training
ResNet and GoogLeNet already have the GAP layer
하지만 모든 architecture 가 이렇게 설계되어 있지 않다 그래서 구조를 변경하지 않고 재학습도 필요없이 미리 학습된 네트워크에서 CAM을 뽑을수 있는 방법으로 Grad-CAM 이 제안됬다
Grad-CAM - Example
Get the CAM result without modifying and re-training the original network
Measure magnitudes of gradients as neuron importance weights
이전에 gradient를 backpropagation해서 saliency map을 유도했던 방법을 응용해서 weight를 구한다
With ReLu, we focus on the positive effect only
activation map하고 weight 하고 선형 결합을 하는데 CAM과는 다르게 ReLu를 사용해서 양수값만 사용한다
Grad-CAM works with any task head
딱히 CNN backbone 외에는 필요한 특수한 구조나 요구조건이 없다
SCOUTER - Example