Learning Pixel-level Semantic Affinity with Image-level Supervision for Weakly Supervised Semantic Segmentation
1. Introduction
제한되지 않은 실제 환경에서의 시맨틱 세그멘테이션을 어렵게 만드는 주요 원인은 학습 데이터의 부족입니다. 픽셀 수준에서의 어노테이션을 하는 것이 너무 많은 비용을 발생시키기 때문입니다. 약지도학습(Weakly supervised learning) 방법은 이러한 문제를 해결하여 시맨틱 세그멘테이션 모델을 더 확장시키기 위한 방법으로 연구되고 있습니다. 여러 수준에서의 방법이 있지만, 이미지 수준 레이블로부터 학습을 시키는 것은 ill-posed 문제입니다. 이미지 내에 해당 클래스의 물체가 있다는 것만 알 수 있고 어디에 있는지, 모양은 어떤지는 알 수가 없기 때문입니다.
최근 추가로 다른 근거를 이용하여 물체의 위치와 모양을 시뮬레이트하는 방법들이 연구되기 시작했는데 대표적인 것이 Class Activation Map (CAM)1을 이용하여 위치 정보를 얻는 것입니다. 이는 타겟 물체의 국소적 특징적인 부분을 찾아낼 수 있는 방법입니다. 이렇게 찾아진 특징 영역은 씨드로 사용하여 객체 전체 영역으로 전파시킬 수 있게 됩니다.
이 논문에서는 추가적인 데이터나 통제 없이 물체의 모양에 대한 정보를 보상하는 간단하지만 효과적인 방법을 제안합니다. 이 프레임워크의 핵심 부분은 AffinityNet입니다. 이것은 이미지를 입력으로 받아, 인접한 이미지 위치 간의 유사도를 계산하는 역할을 합니다. 이미지와 CAM이 주어지면 AffinityNet을 통해 각 픽셀과 그 주변간의 시맨틱 유사도를 계산하고, 이를 이용하여 CAM을 random walk를 통해 확산시켜 객체의 모양을 복원하게 됩니다. 이런 처리를 거친 이미지를 레이블로 사용하여 세그멘테이션 모델을 학습시킵니다.
남은 문제는 AffinityNet을 추가 정보 없이 어떻게 학습하냐인데, 이것은 학습 이미지의 CAM을 이용하였습니다. CAM은 국소적으로 나타나지만, 그 영역 내에서는 거의 정확하고 시맨틱 유사도를 결정하는데의 근거가 됩니다. 따라서 CAM에서 점수가 적은 부분은 버리고 점수가 높은 부분만을 고려하여 AffinityNet을 학습하는데 사용하였습니다.
2. Related Work
3. Our Framework
제안하는 방법은 크게 두가지 단계로 나뉘어 집니다. (1) 이미지 수준 레이블이 있는 학습용 이미지의 픽셀 레벨 세그멘테이션 레이블을 생성합니다. (2) 생성된 레이블을 이용하여 시맨틱 세그멘테이션을 위한 DNN을 학습시킵니다. 전체 프레임워크는 3개의 DNN으로 구성됩니다. CAM을 계산하는 네트워크 AffinityNet, 세그멘테이션 모델입니다.
3.1. Computing CAMs
CAM은 이 프레임워크에서 중요한 역할을 합니다. 다른 방법들과 마찬가지로 세그멘테이션의 시드로 사용되기 때문입니다. 보통 CAM은 객체의 국소적인 중요한 파트 부분에서 활성화되며, 후에 이를 전파하여 전체 객체 영역을 커버하도록 합니다. 여기에서는 이것을 AffinityNet의 학습에 supervision의 소스로 사용하였습니다.
CAM을 계산하기 위해서 401의 방법을 사용하였습니다. 사용되는 구조는 global average pooling에 fully connected layer를 얹은 보통의 분류용 네트워크를 사용합니다. 학습된 네트워크에서 클래스 $c$의 CAM $M_c$는 다음과 같이 계산됩니다.
$$ M_c(x,y) = \mathbf{w}_c^T f^{\text{cam}} (x, y) $$
여기서 $\mathbf{w}_c$는 클래스 c를 분류하기 위한 가중치를 의미하고 $f^{\text{cam}} (x,y)$는 global average pooling을 하기 전 위치 $(x,y)$에서의 피쳐 맵을 나타냅니다. $M_c$는 최대 활성 값이 1이 되도록 노말라이즈 됩니다.
$$ M_c (x,y) \rightarrow M_c (x,y) / \max_{x, y} M_c(x,y)$$
배경에 대한 맵은 다음과 같이 계산합니다.
$$ M_{bg} (x,y) = \{ 1 - \max_{c \in C} M_c (x, y) \}^\alpha$$
여기서 $C$는 객체 클래스의 집합이고, $\alpha \geq 1 $는 배경의 신뢰도를 조절하는 하이퍼 파라미터입니다.
3.2. Learning AffinityNet
AffinityNet은 클래스에 대한 정보를 몰라도 실행되는 픽셀 위치간 시맨틱 유사도를 유추하고자 합니다. 유추된 유사도는 랜덤 워크를 전이 확률로 사용하여 같은 시맨틱 엔티티 영역으로 CAM의 활성도를 전파시켜 CAM의 품질을 높입니다.
AffinityNet은 컨볼루셔널 피쳐 $f^{\text{aff}}$를 유추하도록 디자인했고, 두 위치간 피쳐 벡터는 $L_1$거리를 정의합니다.
두 피쳐간 유사도 $W_{ij}$는 다음과 같습니다.
$$ W_{ij} = \exp \{ -||f^{\text{aff}}(x_i, y_i) - f^{\text{aff}}(x_j, y_j) ||_1 \} \tag{3}$$
이를 학습하기 위해서는 각 위치에 대한 시맨틱 유사도 레이블이 필요합니다. 하지만 여기서는 이미지 수준의 레비을 외에는 주어진 것이 없습니다. 이제 AffinityMap을 학습하기 위해 유사도 레이블을 생성하는 방법을 알아보겠습니다.
3.2.1 Generating Semantic Affinity Labels
CAM을 잘 이용하면 적절한 시맨틱 유사도를 학습하기 위한 supervision을 얻을 수 있습니다. 기본 아이디어는 객체와 배경의 신뢰할 수 있는 영역을 CAM으로부터 구하고, 그 영역에서만 샘플링을 하여 학습을 시키는 것입니다. 신뢰할 수 있는 영역을 구하기 위해서 먼저 $\alpha$를 줄여서 $M_\text{bg}$를 증폭시켜 배경과 객체가 구분이 어려운 부분에서 배경이 더 큰 값을 갖도록 한 다음, dCRF를 적용하여 정교화합니다. 이제 특정 클래스의 점수가 다른 클래스보다 높은 것들을 각 객체 클래스에 대한 신뢰할 수 있는 영역으로 생각할 수 있습니다. 이제 반대로 $M_\text{bg}$를 낮춘 뒤, 같은 방법을 적용하여 배경의 신뢰할 수 있는 영역을 생성합니다. 이 둘에 포함되지 않는 영역은 중립 영역으로 둡니다.
이제 두 픽셀간 유사도를 계산할 것입니다. 두 위치가 모두 중립이 아니고 같은 레이블이라면 $W_{ij}^* =1$, 다른 레이블이면 0을 사용합니다. 한 위치라도 중립이라면 그 위치들은 학습에서 무시하도록 합니다.
이 방법을 통해 꽤 넓은 영역의 affinity label을 얻을 수 있었습니다.
3.2.2 AffinityNet Training
유사도는 충분히 근접된 위치의 픽셀들 끼리의 관계만 고려하여야 합니다. 너무 멀리 떨어진 픽셀들은 그 맥락이 별로 없기 때문에 시맨틱 유사도를 제대로 유추하기가 어렵고, 근처의 픽셀들만을 대상으로 하여 계산량 또한 줄일 수 있기 때문입니다. 학습에 사용되는 픽셀 위치 $\mathcal{P}$ 를다음과 같이 정의하였습니다.
$$ \mathcal{P} = \{ (i, j) | d((x_i, y_i), (x_j, y_j)) \leq \gamma, \forall i \neq j \}$$
$d(\cdot, \cdot)$은 유클리이던 거리이고, $\gamma$는 탐색 반지름으로 픽셀 쌍을 선택하는 범위를 조절합니다.
하지만 이런 방법을 사용하면 클래스간 밸런스가 맞지 않는 현상이 나타납니다. 즉 posive-negative 쌍은 객체의 주변에서만 나타납니다. 이를 해결하기 위해 $\mathcal{P}$를 3세트로 나누어 각 서브셋에 대한 로스를 합치도록 하였습니다. 먼저 $\mathcal{P}$를 positive와 negative 2개의 서브셋으로 나눕니다.
$$ P^+ = \{ (i, j) | (i, j) \in \mathcal{P}, W_{ij}^* = 1\} $$
$$ P^- = \{ (i, j) | (i, j) \in \mathcal{P}, W_{ij}^* = 0\} $$
이제 $\mathcal{P}^+$를 $\mathcal{P}^+_{\text{fg}}$와 $\mathcal{P}^+_{\text{bg}}$로 다시 나눕니다. 그리고 이제 크로스엔트로피 로스를 적용합니다.
$$ \mathcal{L}_\text{fg}^+ = - \frac{1}{|P^+_{\text{fg}}|} \sum_{(i, j) \in \mathcal{P}^+_{\text{fg}}} \log W_{ij} $$
$$ \mathcal{L}_\text{bg}^+ = - \frac{1}{|P^+_{\text{bg}}|} \sum_{(i, j) \in \mathcal{P}^+_{\text{bg}}} \log W_{ij} $$
$$ \mathcal{L}^- = - \frac{1}{|P^-|} \sum_{(i, j) \in \mathcal{P}^-} \log (1- W_{ij}) $$
최종 로스는 다음과 같습니다.
$$ \mathcal{L} = \mathcal{L}^+_{\text{fg}} + \mathcal{L}^+_{\text{bg}} + 2\mathcal{L}^-$$
3.3 Revising CAMs Using AffinityNet
AffiniyNet에 의해서 추측된 지역 시맨틱 유사도는 transition probability matrix로 변환됩니다. 이것은 랜덤워크가 시맨틱 경계 내에서만 확산되도록 합니다. 이 행렬을 이용한 랜덤워크 과정을 통해 CAM의 품질을 향상 시킬 수 있습니다.
이미지가 입력되면 AffinityNet은 피쳐 맵과 그 맵 위의 피쳐들간의 시맨틱 유사도를 생성합니다. 이렇게 생성된 유사도 행렬 $W$로부터 transition probability matrix $T$를 계산합니다.
$$ T = D^{-1} W^{\circ \beta}, \text{ where } D_{ii} = \sum_j W_{ij}^\beta $$
여기서 $W^{\circ \beta}$는 유사도 행렬의 Hadamard power를 의미하고, $\beta$는 1보다 큰 하이퍼 파라미터로 중요하지 않은 유사도 값들을 무시하도록 해 줍니다. 대각행렬 $D$는 $W^{\circ \beta}$의 열단위 normalization 입니다.
$T$를 CAM에 곱해줌으로써 시맨틱 전파를 위한 한번의 랜덤워크를 실행합니다. 이 전파 과정을 정해진 수만큼 반복하면 향상된 CAM $M_c^{*}$을 얻을 수 있습니다. 계산은 다음과 같이 이루어집니다.
$$\text{vec}(M_c^*) = T^t \cdot \text{vec}(M_c), \forall c \in C \cup \{ \text{bg} \} $$
여기서 $\text{vec}$은 벡터화한 행렬을 의미하고, $t$는 $t$번째 반복을 의미합니다.
3.4. Learning a Semantic Segmentation Network
향상된 CAM을 이용하여 학습 이미지의 세그멘테이션 레이블을 생성합니다. CAM은 원래 이미지보다 해상도가 낮기 때문에 bilinear interpolation을 통해 업샘플링하고, dCRF로 정교화합니다. 각 픽셀의 레이블은 클래스 중 가장 큰 활성화 점수를 클래스로 선택하도록 합니다.
이렇게 생성된 이미지와 레이블을 이용하여 시맨틱 세그멘테이션 모델을 학습시킵니다.
4. Network Architectures
4.1. Backbone Network
ResNet38을 수정하여 fully connected 레이러를 제거하고 마지막 3개 레이어를 atrous convolution으로 교체하였습니다. 컨볼루션의 dilation은 출력 피쳐 맵이 stride 8을 가지도록 수행하였습니다.
4.2. Details of DNNs in Our Framework
Network computing CAMs: 백본에 3x3x512 컨볼루션 레이어, global average pooling, fully connected 레이어를 차례로 붙였습니다.
AffinityNet: 백본의 마지막 3개 레이어의 출력을 선택하여 1x1 컨볼루션을 이용하여 각각의 차원을 128, 256, 512로 줄인 다음 결과들을 이어붙였습니다. 결과는 896개 채널을 가지며, 여기에 최종적으로 896채널의 1x1 컨볼루션 레이어를 한번 더 붙였습니다.
Segmentation model: 백본에 2개의 atrous 컨볼루션 레이러를 붙였습니다. 두개 모두 dilation rate는 12를 갖고, 첫번째 레이어는 채널을 512, 두번째 레이어는 21개의 채널을 갖습니다.
5. Experiments
6. Conclusion