픽셀단위로 분류하는 것
인스턴스 단위가 아닌 semantic category를 파악
Transposed convolution
중간중간 규칙적으로 겹치는 부분이 있어 체크보드 무늬가 형성된다.(Checkerboard artifacts)
Upsampled and convolution
Checkerboard artifacts를 피하는 방법은 upsampling(unlearnable) -> conv(learnable)하는 것이다.
그래서 FCN은 Upsampled and convolution을 사용한다.
Low layer에서는 국소적인 부분
High layer에서는 receptive field가 넓어져서 넓은 부분을 볼 수 있다.
해당 논문도 중간, 말단 레이어를 합치는 시도
그러나 전처리를 따로 해서 넣어야 했다.
위는 전체 구조 대칭적이다 줄였다 늘렸다하는 구조
vgg backbone -> gap -> classifier(num_class)
vgg backbone -> 1x1 conv
둘의 weight 크기는 같다.
1의 weight를 2의 1x1 kernel의 weight로 넣어준다.
아래의 인풋은 vgg output을 말한다.
layer의 weight는 layer.weight로 받으면 된다.
nn.parameter 객체가 반환된다.
weight를 지정할때는 parameter객체를 넣어야한다.
(torch.reshape을 해주니까 tensor가 되어서 이걸 parameter로 바꿔야했다.)
그런데 weight에서 bias는 어떻게 되는 거지?
bias=True가 디폴트인데,,
-> Linear source code에서 보면 알 수 있듯이 bias, weight는 layer 모듈의 attribute이고, parameter 객체이다.