논문 이름이 꽤 깁니다. 금일 리뷰 하는 논문은 지난 GOOD 논문의 리뷰에 이어, Geometric Cue를 활용한 논문에 대해 읽어보고자 하였습니다. 해당 아이템을 제 논문에 적용하고 싶었기 때문인데요, 사실 본 논문의 Contribution에서 Depth Cue 외, Depth Prior을 활용하는 부분은 조금 만족하지는 않지만, 한번 즈음 편히 읽어보기엔 괜찮아 보였습니다. 그럼, 리뷰시작하겠습니다.
Introduction
Depth Cue, 실제의 Depth 정보를 가지진 않지만 상대적 Depth 정보를 추론해낼 수 있는 Depth map (Depth image)를 다양한 태스크에서 활용하고자 하는 시도가 있었습니다. 예를 들면 이전 리뷰한 GOOD의 경우, Depth는 RGB와 달리 Novel한 객체를 탐지하는데 효용성을 입증하였습니다. 저자는 Weakly Supervised Object Detection (이하 WSOD)에서는 Depth를 활용한 시도가 없었기에, 저자는 Depth modality가 곧 사람이 복잡한 환경을 이해하는데 있어 단순히 객체의 외형만이 아닌 타 객체와의 상호 작용 또는 기능을 고려하기에, 도움이 되는 유용한 정보임을 언급합니다. 일반적으로 Depth 모달리티는 RGB에 비해 객체, 그리고 다른 객체 간의 Spatial Relationship을 제공하며 또한 이전 연구들에서 증명한 바처럼 외형적 다름 (Texture, Color)에 불변한 특성을 보이며 이는 RGB 영상과 함께 활용 시 상호 간 부족한 정보를 보충해줍니다. 하지만 앞서 말한 바처럼, 이전의 WSOD 연구에선 Depth를 활용하지 않았습니다. 저자는 Depth 정보로부터 Functional information을 추출하고자 하며, 동시에 Depth 영상을 입력으로 하는 Object Detector를 설계합니다. 저자가 언급하는 중요한 점은, Weakly-Supervised에 걸맞게 Depth를 활용함에도 추가적인 Annotation이 필요하지 않으며, 추론 시에는 Depth 영상을 활용하지 않기 때문에 Computational 비용 또한 늘어나지 않음을 언급합니다. 자세히는, 전통적인 WSOD 데이터셋은 Depth에 대한 Annotation이 없기에, 저자가 제안하는 방법은 Monocular depth estimation 기법을 통해 Hallucinated (Predicted) Depth 정보를 활용합니다. 학습 중에는 더 좋은 Representation을 위해 Depth 정보를 통합하며 Bounding Box level에서의 Pruning, Down-weight Prediction을 통해 성능을 향상 시킵니다. 뿐만 아니라, Depth는 실제 Bounding Box에 대한 GT가 없는 (영상 수준의 GT만 존재하는) 환경에서 Bounding Box Proposal에 대한 강력한 정보를 제공할 수 있는데, 미리 말하자면 저자는 특정 클래스와 그에 관련된 언어 정보로부터 획득할 수 있는 평균적인 Depth의 범위를 통해 Proposal이 해당 클래스의 객체인지, 아닌지를 실제로 판단합니다. 이 방법들의 자세한 정보는, 다음의 Method에서 살펴보겠습니다.
Approach
저자는 Depth를 Amplifier 접근법, 즉 RGB에 더해 WSOD의 성능을 높이는 추가적인 알파로 생각합니다. 특히 저자는 Depth를 활용 시에도 Inference에서도 Depth가 활용된다면 비판을 받을 수 있음을 인지해서 인지, Inference 시의 추론 속도가 느려지지 않으며, Depth estimation 모델이나 Caption에 의존적이지 않고자 함입니다. 앞으로 말씀드릴 Approach (Method)는 세 단계로 구분되며, 첫 번째는 Network 구성입니다.
WSOD 태스크의 기본 설정은 다음과 같습니다. I \in \mathbb^{h \times w \times 3} 가 RGB 이미지일 때, y_c \in \left\{0, 1\right\}, where c \in \left\{1, ..., C \right\} 는 전체 object category C에 대해 이미지에 대한 class label에 해당합니다. 정확히는 Weakly-supervised이다 보니 각 Bounding Box에 해당하는 Annotation이 아닌, “이미지 전체 내 “사람, 개, 고양이”가 어딘진 몰라도 있기는 하다”는 의미로 해석됩니다. v_i, i \in \left\{1, ..., R \right\} 는 Proposal의 전체 R개에 대해 이미지 I에 대한 Proposal을 의미합니다. \varnothing\left(v_i \right) 를 각 Visual proposal에 대해 RoI Pooling 과정을 거친 Feature vector라고 할 때 (현재 Faster R-CNN 기반 Object Detector입니다. Object Detection에 관한 연구들이 보통 1-Stage, DETR로 확장되감이 물론 정설이지만, Region Proposal Network의 Class-agnostic한 성질이 다양한 태스크에 적용성이 좋아 여전히 많이 사용되는 추세입니다), RoI Head에 해당되는 두 FC 레이어를 거치고 나면 다음 수식과 같은 Detection score와 Classification score로 연산됩니다. 이 때 Detection score는 기존 Faster R-CNN의 Bounding Box에 해당하는 Regression score가 아닌, Class-agnostic한 Objectness에 대한 score로 해석됩니다.
그 과정 속에는, Figure 1에 보이는 바와 같이 Depth 이미지를 추출하여 Depth image에 대한 연산을 동시에 진행됩니다. 이 때 Depth 이미지는 실제 Depth 정보를 가진 Stereo 이미지가 아닌, Monocular depth estimation model로 부터 추출된 Hallucinated depth 이미지에 해당합니다. Hallucinated라는 단어처럼 Monocular depth estimation의 특성 상 실제 Depth 정보를 요구치 않으며 이미지에 대해 Relative한 Depth 관계를 보이는 수준의 Depth 이미지만을 보이기 때문에, 저자는 추가적인 Annotation이나 Resource가 필요치 않다고 서술합니다. (사실 위 Monocular depth estimation model의 출력은 보통 Grayscale에 해당하나, 일반적으로 Colormap을 씌어 활용합니다)
전체적으로 이미지가 네트워크를 통과하여 Detection과 관련된 두 Score를 추출하는 방식을 설명하였는데, 네트워크를 잘 보면 Siamese Backbone이라는 용어를 확인할 수 있습니다. 저자는 Siamese network 구성 (Contrastive learning에서 활용되는, 가중치를 공유하는 동일한 구성의 네트워크)을 표방하여 Backbone 네트워크를 설립하여, RGB 이미지와 Depth 이미지에 대해 동일한 네트워크를 통과하도록 합니다. 이 때 왜 Siamese network에서 Forward-Backward 연산을 진행하는 지에 대해서는 Siamese network의 목적 그대로, 두 정보 간의 NCE Loss를 통해 Contrastive learning을 수행하며, 이는 곧 각 모달리티의 표현력이 크게 상이할 수 있다 보니 이들을 동일한 Latent space에서 연산시키려 함 (다른 말로는 Backnone의 Representation learning을 강화하는 효과: 한 배치 내 한 RGB 이미지가 어떤 Depth 이미지와 연관됨을 학습함)을 알 수 있습니다. 이 때 NCE Loss는 기존의 접근법과 유사하게 최종 출력 Feature map에 대해 Adaptive pooling과 FC Layer를 통해 1024 차원로 Projection한 Feature vector에 대해 연산되며, 이 과정이 전통적인 MIL-based (Multiple-Instance Learning) WSOD network에 비해 고작 8% 수준의 Overhead만 존재하므로 이 또한 합당하다고 설명합니다.
다음으로 두 번째는 Modality (RGB, Depth) 간의 Fusion입니다. 다시 Figure 1을 살펴보면 RGB와 Depth를 입력으로 받는 각 RoI Head에서 나온 Detection score, Classification score에 대한 Fusion을 RGB의 Detection (Classification) score, Depth의 Detection (Classification) score를 더한 Feature vector에 대해 Softmax를 거친 두 값 (Detection score, Classification score)에 대해 곱연산을 하는 과정을 통합니다. 초반 부에 설명드린 바와 같이 Depth 이미지는 RGB 이미지의 Amplifier (증폭기) 역할을 하기 위해, 다시 말해 GOOD 논문에서 언급한 바와 비슷하게 RGB 이미지에서 탐색하지 못한 Proposal들을 Depth 이미지에서 찾아낼 수 있는 효용성을 가질 수 있으며 또한 Backward 시 가중치가 동일하도록 Loss가 연산된다는 점에서, 마치 우리가 잘 아는 RGB + Thermal의 Fusion과 같이 상호보완적 효과를 볼 수 있습니다. 최종적으로는 p^{comb}_{i,c} 의 두 Score가 곱연산된 하나의 Score는 Image-level에서 \hat{p}_{c} 에 대해 i번째 클래스가 0~1 사이의 값으로 해당 이미지 내 존재하는지, 존재하지 않는지를 예측하게 됩니다. 즉, WSOD의 특성답게 “몇 번째 Bounding Box가 어느 클래스인지는 예측하기 어렵기 때문에, 어떤 특정 클래스가 이미지 내 존재하는지, 존재하지 않는지”를 최종적으로 예측합니다. 이 때 Region-level의 label이 존재하지 않는 특성 상, Region-level의 score를 간접적으로나마 연산하여야 하며, 이는 곧 위 \hat{p}_{c} 에 대해 다음과 같이 수식을 설계하였다고 합니다. (이는 사실 제가 아직 이해가 어렵습니다. 아마 Region-level이라 함이 곧 RPN Loss를 의미하므로, \hat{p}_{c} 가 각 Proposal들을 합친 하나의 Feature vector에 대해 연산된 결과다 보니 이를 Loss 수식에 넣음으로써 간접적으로 Proposal (Region)들에 대한 연산을 진행한다고 이해했으나, 이 점이 옳은지는 WSOD에 대한 조예가 깊지 않아 확신이 들지는 않습니다)
마지막 세 번째로는, 제가 첫 문단에서 말씀드린 Depth prior를 활용한다는 부분에서 만족하지는 않았다는 Contribution입니다. 저자는 성능 향상을 위해 Training set에서 Bounding box prediction을 생성합니다. 먼저 생성된 Bounding box 예측과 연관된 Caption (이 Caption이라 함은 아래와 같이 이미지와 해당하는 Caption을 의미합니다)으로부터 객체의 Relative depth에 대한 정보를 추출합니다. 수식과 저자의 설명이 존재하긴 하지만, 아래 Figure를 통해 Depth prior를 어떻게 활용하는지 한 문단 내로 설명해보겠습니다.
위 예시와 함께 보겠습니다. 두 그림 중 위 그림의 Depth-Language Pair는 Training set 내 존재합니다. 이 때, “bird”라는 객체에 대해 “feed”라는 단어, 아래에서는 “ocean”이라는 단어와 같이 “bird”와 연관된 단어를 정합니다. 저자는 이 단어를 “co-occurring caption”이라 명하며, 객체가 등장하는 문맥과 연관된 단어를 하나 정하며, 각 Proposal들에 대해 Depth를 Realtive한 0~1 사이의 값으로 추론합니다. 마치 2.5D Detection에서 실제 Depth를 추출하는 바와 유사하게, 실제 Depth는 아니지만 각 Proposal들에 대해 Depth 값을 추론하며 학습하고, 그렇다면 예측된 Depth가 앞선 문단에서 설명드린 바와 같이 생성한 Bounding box (문제는 논문을 살펴보았을 때 이 점에서 Bounding box 생성 과정을 언급하진 않았는데, 저자가 성능 향상을 키워드로 언급한 바에 미루어보아 과연 실제 Ground-truth Bounding box를 “특정 방식을 통해 생성한 Bounding box”로 가정하여 실험하였는지, 혹은 WSOD의 이전 연구에서 그러한 연구가 있었는지는 확실치 않습니다)와 견주어 매칭되는 Bounding box (위 그림의 초록색으로 표기된)로 부터 각 이미지에 대해 “feed”, “ocean”이라는 단어에서 “bird”라는 객체의 Depth가 어느 수준인지를 저장합니다. 즉, bird라는 객체에 대해 연관된 ocean, feed라는 단어들에 대해 각 경우에 어느 정도 Depth가 나온지를 추출하여 저장합니다. 이제 bird와 연관된 단어들에서 추론된 Depth range들의 평균, 표준편차를 토대로 “아~ bird라는 단어는 ocean과 결합되었을 때 0.35~0.68 사이, feed와 결합되었을 때는 0.15에서 0.48 (두 그림 중 아래 그림 참고) 사이의 범위를 보이겠구나”라는 지식을 토대로, 실제 예측 시 bird일 가능성이 높은 몇몇의 Proposal들에 대해 그 범위 내 포함된다면 Bird, 그렇지 않다면 Background로 예측합니다. 즉, Training time에만 Caption을 통해 학습할 뿐 Inference 시에는 미리 저장된 단어-단어 간의 Depth range 백과사전을 통해 Caption이 아닌 Image-level의 지식 만으로 객체의 위치를 추론해낼 수 있다는 설정입니다. 개인적으로 이 설정이 정말 실용적일까에 대해선 의문이지만 (정말 다양한 실제 환경을 모두 커버하기엔 이론적 비약함이 굉장히 크므로), WSOD에서의 성능 측면만 놓고 보았을 때는 Task-specific한 점을 고려하였을 때 본 논문이 Accept될 수 있지 않았을까하고 개인적으로 생각합니다. 위 설명이 장황해지긴 하였지만, 본 논문에선 1.5페이지 분량의 설명을 이해한 바에 따라 몇 문단으로 축약하여 본 방법론이 위에서 말한 바와 같이 약점이 있음은 분명함을 말씀드리고자 하였습니다. 그럼, 실험을 살펴보겠습니다.
Experiments
아무래도 WSOD 논문은 처음 읽어보지만, 다행히 실험을 위한 데이터는 Pascal VOC, COCO임을 확인하였습니다. 그러고 보니 두 데이터 셋에선 연관된 Caption이 존재하지 않는데, 그렇게 생각해보니 결국 두 데이터 셋에서는 Bounding box annotation이 아닌 Image-level의 annotation만으로 Depth range의 두 단어 쌍을 선택하지 않았을까 싶습니다. 이 외에도, Conceptual Captions (CC)와 같은 데이터셋을 활용하였는데, 이 데이터 셋은 실제로 Image-Caption 쌍의 3백만 개의 수많은 어노테이션을 포함하고 있네요. 평가 측도는 기존의 Object Detection과 동일하게 mAP입니다. 까먹지 않을 점은 WSOD의 태스크 자체가 “Object Detection을 하고는 싶은데, Bounding box의 Annotation은 부재한/부족한 상황”이므로, 평가 자체는 “얼마나 그 부재한 상황에서 Detection을 잘하는지”에 대한 측도를 따질 수 밖에 없습니다.
우선적으로 살펴볼 벤치마크 표는 (위) COCO와 Pascal에서의 WSOD 성능입니다. 베이스라인으로 삼은 이전 연구 (MIST, SoS-WSOD)에서 본인들의 방법론을 추가하였을 때 성능을 보입니다. Fusion, Amplifier, Amplifier-Inf로 구분되는데 Fusion은 Depth를 사용했을 때의 성능 (가장 성능 폭이 큽니다), Amplifier는 Depth prior를 활용했을 때의 성능 (생각보다 성능 상승 폭이 미비합니다. 아마 언급한 바와 같이 다양한 상황에서 일반적으로 활용되긴 아쉬운 방법론입니다)이며, 눈여겨볼점은 Amplifier-inf로 추론 시에도 Depth를 활용함인데, 오히려 이 때 성능이 하락함에 저자가 주목합니다. 이에 대해 저자는 Region information을 조정하기 위해 Soft-guide를 제공하나 추론 시에도 활용 시에는 오히려 모델이 Depth 모달리티에 의존적이게 되어 성능 하락이 발생하였다고 분석합니다. 아래의 표는 coco에서 Siamese 네트워크, Depth-OICR (Depth prior를 활용하여 객체의 Depth range를 활용), Depth-Attention (RGB와 Depth의 Loss를 활용)하는 등에 대한 Ablation-study입니다. 물론 제가 해당 태스크를 처음 보지만, 요즘 Zero-shot learning 기반의 Foundation model이 성행하는 시기에서는 아무래도 성능 측면에서 큰 호응을 받기는 어려울 것으로도 보입니다. 다른 실험표는 없네요. 그럼 마지막으로 정량적 사진 하나 보고 마치겠습니다.
위 (베이스라인에 해당하는 MIST)와 아래 (Ours)의 결과를 통해, 저자는 본인들의 방법론이 다소 먼 거리의 객체에 대해서나 혹은 맨 오른쪽과 같이 Texture, Color 측면에서 Complex한 환경을 잘 이해할 수 있으며 이는 곧 Depth 이미지로 학습하였기 덕분이라고 서술합니다. 그럼, 리뷰 마치겠습니다.
안녕하세요 ! 좋은 리뷰 감사합니다.
추론 과정에서 Depth 이미지가 사용되지 않는다는 말은 Figure 1에서 RGB 이미지만으로 Fusion 연산 없이 나머지는 동일하게 이루어지나요 ??? 그럼 Depth prior를 활용할 때 예를 들어 bird라는 단어와 연관된 단어가 없으면 어떻게 depth 범위를 추출하는지 궁금합니다 ..
감사합니다.
좋은 리뷰 감사합니다.
Approach 초반부의 detection/classification score 부분에서 Class-agnostic한 Objectness에 대한 score 라고 표현해 주신 부분에 대한 질문이 있습니다. 두 score 중 cls score는 기존 detector와 동일하게 전체 class c 차원을 가지는, 각 class 별 가중치를 담은 score로 생각하면 되는거죠? 반면 detection score는 class-agnostic한 objectness score(?)로 해석된다고 언급하셨는데, 이는 WSOD의 특성때문인가요? 일반적인 detector의 cls 좌표와 관련된 regression loss와 다른점이 있는지… 이 부분이 잘 와닿지 않아 추가질문 드립니다.
감사합니다.