ASSPP(Atrous Separable Spatial Pyramid Pooling) 구현
nn.Conv2d는 2D Convolution layer class로, 이미지나 2D 데이터의 특징 추출에 주로 사용되며 합성곱 신경망(CNN)에서 핵심적인 레이어 중 하나이다.
nn.Conv2d(in_channels, out_channels, kernel_size, stride=1,
padding=0, dilation=1, groups=1, bias=True)
- in_channels (int): 입력 채널의 개수. 예를 들어, RGB 이미지의 경우 3개의 채널을 가지므로 in_channels는 3
- out_channels (int): 출력 채널의 개수, 즉 컨볼루션 필터의 개수입니다. 이 값이 클수록 더 복잡한 특징을 학습할 수 있지만, 모델의 파라미터 수가 증가함
- kernel_size (int 또는 tuple): 컨볼루션 필터의 크기. 예를 들어, 3x3 필터의 경우 kernel_size는 3 또는 (3, 3)으로 지정할 수 있다. Deptwise Separable convolution의 경우 11C 크기의 Convolution Filter를 적용하므로 (1, 1, 3) 등으로 표현
- stride (int 또는 tuple, optional): 필터의 이동 간격, 즉 스트라이드(stride)입니다. 기본값은 1, 더 큰 값으로 설정하면 출력 특징 맵의 크기가 작아짐
- padding (int 또는 tuple, optional): 입력 데이터의 가장자리에 추가되는 패딩의 크기입니다. 기본값은 0, 패딩을 사용하면 출력 특징 맵의 크기를 보존하면서 입력 데이터의 가장자리 정보를 유지할 수 있음
- dilation (int 또는 tuple, optional): 딜레이션(dilation) 레이트. 딜레이션은 필터의 간격을 더 크게 두어 더 넓은 영역의 정보를 가져오는 데 사용됨. 기본값은 1, 값이 커질수록 필터의 영역이 더 넓어짐
예를 들면, Atrous Convolution에서 기존 Convolution과 다르게 필터 내부에 빈 공간을 둔 채 작동하는데, 이 빈 공간을 얼마나 둘지 결정하는 파라미터값 rate(=r)과 같음
- groups (int, optional): 입력 및 출력 채널을 묶는(grouping) 개수입니다. 기본값은 1이며, 값이 크면 채널 간의 관련성을 줄이는 효과가 있음
- bias (bool, optional): 편향(bias)을 사용할지 여부를 결정하는 플래그입니다. 기본값은 True이며, False로 설정하면 bias 사용 X
nn.Conv2d