Up-sampling (Decoding) Decoding ( source ) Up-sampling 은 Down-sampling 의 반대로 디코딩(decoding) 과정에서 신호를 복원하기 위해 data의 사이즈를 늘리는 처리 과정이다. 다음은 Up-sampling 을 위한 대표적인 방법들이다. Unpooling Maxpooling 으로 소실된 신호를 거꾸로 재현한다. 주변 픽셀을 동일한 값으로 채우거나 ( Nearest Neighbor Unpooling ), 0으로 채워주는 방식( Bed of Nails Unpooling )이 있다. ( source ) (문제점) 위의 2 × 2 2 \times 2 2 × 2 matrix 로 Maxpooling 된 data를 다시 원래 사이즈인 4 × 4 4\times4 4 × 4 matrix 로 Unpooling 할 때, Max pooled 된 값의 위치(position)을 알 수 없다 . 즉, Unpooling 과정에서 본래 Max value를 어느 위치에 할당해야 할 지 알 수 없다. Max Unpooling Max value 의 위치를 알 수 없는 문제를 개선하기 위해 Max unpooling 방법을 사용한다. 방식은 직관적이다. Max pooling 과정에서 미리 선택된 값들의 위치 인덱스(index)를 기억 해서 저장해 두고 , 복원 과정에서 원래 자료와 동일한 위치에 Max value를 위치시킨다. ( source ) (장점) 이러한 방법은 Bed of Nails Unpooling 에 비해 정보 손실을 방지할 수 있다. 물론, 위치 인덱스를 저장할 별도의 메모리(memory)가 필요하지만, 전체 CNN 아키텍처에서 적은 비율이므로 상관이 없다. (구현) torch.nn.MaxUnpool2d # == 정의 == # pool = ...