Convolutional Middle Layers
M차원 합성곱 연산자
c_in: 입력 채널 수 (number of input channels)
c_out: 출력 채널 수
k: 커널 크기
s:스트라이드 크기
p:패딩 크기
커널의 크기가 같다면 k,k,k--> k로 표현한다. 논문 예시 Conv3D(128, 64, 3, (2,1,1), (1,1,1)) 입력 128 출력 64 커널사이즈 3 스트라이드 (2,1,1), 패딩(1,1,1) 로 표현된것을 볼 수있다. Z Y X 순서
각각의 ConvMD는 3D conv, BN, ReLu로 이뤄져 있고 ConvMD를 통해 voxel-wise feature를 합치고 점점 수용영역(receptive field)를 늘려가며 shape 표현의 맥락(context)를 추가해 나간다.
목적: Voxel간의 특징을 점진적으로 통합하여 물체의 3D형상을 이해하는 데 필요한 정보를 추가하는 것
위 사진은 2D Convolution과 3D Convolution을 보여주고있다.
| 특징 | 2D Convolution | 3D Convolution |
| 연산 | 2D Conv(k x k) | 3D Conv(k x k x k) |
| 차원 | X,Y | X,Y,Z |
| 학습 정보 | 2D 공간적 특징(Edge,Texture) | 3D 공간적 맥, Voxel간 상호작용 |
| 적용 예시 | 객체 탐지 | LiDAR 기반 3D 객체탐지 |
BN layer( Batch Normalization): Conv3D 연산뒤에 적용되는 레이어로 미니배치(mini-batch) 단위로 입력 특징 맵의 평균과 분산을 정규화(normalize)하는 레이어이다. 이 과정을 통해 그레디언트 소실문제, 과적합 문제를 방지하여 학습의 안정성을 높인다.
ReLU layer: BN layer 이후에 적용되는 layer로 비선형성을 추가해 복잡한 데이터를 학습하도록 하는 역할
Conv3D(128, 64, 3, (2,1,1), (1,1,1)),Conv3D(64, 64, 3, (1,1,1), (0,1,1)), and Conv3D(64, 64, 3, (2,1,1), (1,1,1))을 거치면 64 2 400 352 4D 텐서가 만들어진다. (channel,Z,Y,X)
64= 각 Voxel이 가진 학습된 특징차원
2= 초기D의 값이 10에서 다운샘플링 2번을 통해 2로 축소됨 정보를 압축하여 연산 효율성을 높이고 충분한 3D공간 정보를 유지하기 위함
400=Y축 방향 해상도 스트라이드가 1이므로 계속 유지됨
352=X축 방향 해상도 스트라이드가 1이므로 계속 유지됨
RPN에 입력으로 주기 위해 4D Tensor를 Reshape하여 Z축방향 차원을 채널과 병합하여 채널차원을 확장한다.
때문에 64 × 2 × 400 × 352 에서 128 x 400 x 352로 변환된다,
변환하는 이유: RPN은 2D CNN 연산을 기반으로 하기때문에 입력 데이터를 3D 공간 대신 C X H X W의 2D 형태로 변환하여 RPN이 3D 특징을 2D CNN으로 처리 가능하도록 하기 위함이다. z축 정보가 포함된 4D tensor를 처리하려면 3D Conv 연산을 사용해야 하지만 계산량이 매우커서 효율적으로 학습하기 위해 2D Conv를 사용한다.
Z축 정보가 채널로 병합이 되어서 정보를 잃지 않을까 찾아보았지만 이미 Convolutional Middle Layers에서 학습된 특징으로 반영되어 채널 차원에 포함되어있기 때문에 Reshape 후에도 3D 공간 정보를 충분히 유지 할 수 있다.
첫댓글 2차원 컨벌루션과 3d 컨벌루션의 차이는 무엇인가?
컨벌루션 레이어의 전체 구조를 설명하라.(그림, 입력,출력, 구조, 층수 등)