1x1 convolution은 필터 사이즈가 1x1이라는 것을 의미한다. 즉 feature map의 feature 하나에 대해 convolution 연산을 진행한다. 1x1 컨볼루션은 대표적으로 병목 구조나 depthwise-convolution 차원 축소를 해야 하는 경우에 빈번하게 사용된다.

image.png

위 그림은 1x1 convolution을 의미하며 일반적인 conv 연산과 동일한데, 단지 필터 사이즈가 1*1인 것이다. 그림에서 Input의 채널이 192므로 이때 만약 128채널로 줄이고 싶으면 1x1 convolution 필터를 128개 만들어 연산하면 된다.

https://docs.google.com/document/d/1wNDGZJz1CvhVs8EXaWQmPngjczNCdYLSEBah_dRGDdM/edit?pli=1&tab=t.0

1. 연산량을 줄일 수 있다.

image.png

여기서 채널 수가 줄어들었다가 다시 늘이는 부분을 병목 구조라고 한다. 채널 수 조절은 계산량 감소에 직접적으로 영향을 주게 되어 네트워크를 구성할 때 좀 더 깊게 구성할 수 있도록 도움을 준다.

  1. 빨간색 글씨는 해당 과정에서 사용되는 전체 파라미터 개수를 의미한다.
  2. 초록색 글씨는 컨볼루션 필터가 가지는 파라미터 수
  3. 파란색 글씨는 필터 크기를 나타내며 초록색 글씨와 곱해 최종 파라미터 수를 구하게 된다.

2. 활성화 함수를 추가할 수 있어서 비선형성이 늘어난다.

1*1 Conv를 사용할 때 ReLU Activation을 지속적으로 사용하여 모델 비선형성을 증가 시켜준다. 비선형성이 증가한다는 것은 그만큼 복잡한 패턴을 좀 더 잘 인식할수 있게 된다는 의미와 비슷하다.

3. 차원을 줄이면서 중요 피처를 다시 한 번 manifold 가능

4. 채널 간 정보 결합