안녕하세요, 마흔 두번째 x-review 입니다. 이번 논문은 2023년도 CVPR에 게재된 OpenScene: 3D Scene Understanding with Open Vocabularies 입니다. 그럼 바로 리뷰 시작하겠습니다 !
1. Introduction
3D scene understanding는 포즈가 다르게 주어진 RGB 이미지 데이터와 3D 메시나 포인트 클라우드가 주어지면 scene 내의 모든 포인트의 semantic한 정의와 affordance, funcion 그리고 물리적인 속성에 대해 알아내는 것을 목표로 하는 task 입니다. 예를 들어서 Fig.1처럼 집 내부를 장면으로 제공했을 때 어디의 포인트가 선풍기인지를 나타내는게 semantic한 정의, 사람이 앉을 수 있는 위치 영역을 찾는 것이 affordance, 사람이 작업할 수 있는 위치를 찾는게 function, 그리고 어떤 표면의 재질이 어떤지를 예측하는게 물리적인 속성을 알아내는 것이라고 할 수 있습니다. 추가적으로 무슨 재질로 만들어졌는지, 혹은 부엌 안에 있는 것인지 등등 까지도 예측하고 한다고 합니다. 이렇게 넓은 범위의 scene understanding을 잘 해내는건 알아낼 쿼리의 다양성 때문에 매우 어려운 task 입니다. 기존에 3D scene understanding에서는 task 수행을 위해 설계된 벤치마크 데이터셋, 20개의 클래스로 어노테이션된 closed 데이터가 되겠죠, 어쨌든 이러한 데이터셋을 통해 3D semantic segmentation을 학습하게 됩니다. 이러한 흐름은 각 유형의 쿼리들 (가령 이 영역이 의자, 테이블에 있는가?)에 답하도록 설계되어 있는데, 학습 데이터가 부족한 쿼리 (가령 흔하지 않은 물체 segmentation) 혹은 supervision이 없는 기타 쿼리(가령 만들어진 물질 속성 추정)에는 거의 도움을 주지 못합니다.
본 논문에서는 이러한 한계점을 해결하기 위해 사전학습된 텍스트-이미지 임베딩 모델인 CLIP을 사용하고자 하였습니다. 이미지 레벨에서 CLIP을 사용하여 일반화된 이미지의 semantic segmentation 성능을 갖출 수 있어지만 3D scene understanding을 위해 가능한 쿼리의 다양성 문제를 개선하기 위한 CLIP 활용에 대해서는 당시 연구되지 않고 있었다고 합니다. 그래서 저자는 open vocabulary 3D scene understanding을 위해 간단한 제로샷 방식인 OpenScene을 제안하고 있습니다. Fig.2와 같이 OpenScene은 CLIP 특징 공간에서 텍스트 문자와 이미지 픽셀로 합쳐진 포인트에 대한 feature를 계산하는 것이 핵심 아이디어 입니다. 이렇게 동작 가능하기 위해서 전체 장면에서 포인트와 이미지 픽셀 사이의 연관성을 찾고 CLIP 픽셀 feautre을 supervision 삼아 포인트를 임베딩 하도록 3차원 네트워크를 학습합니다. 이러한 방식은 3차원 포인트를 feature 공간의 픽셀과 align 맞추고, 다시 텍스트 feature와 align을 맞추어 포인트에 대한 open vocabulary 쿼리를 가능하도록 합니다.
포인트 임베딩 알고리즘에는 2차원, 3차원 컨볼루션이 모두 사용되며 먼저 모든 이미지 내에 포인트를 reprojection하고 멀티뷰를 합쳐서 연결된 픽셀의 feature을 모두 합치게 됩니다. 그 다음 sparse 3D conv를 학습해서 합쳐진 픽셀 feature와의 차이를 최소화하는 loss를 사용하여 포인트 레벨에서만 feature를 추출합니다. 그러고 나서 마지막으로 2D fusion과 3차원 네트워크에서 만들어진 feture을 각 포인트에 대한 하나의 feature로 앙상블 하게 되죠.
이런 2D-3D feature을 사용하는 알고리즘을 통해 이미지와 포인트에서 알 수 있는 패턴을 모두 활용할 수 있고 어느 한 도메인의 feautre만 사용하는것보다 더 representation 능력이 좋아지게 되겠죠. 포인트에 대한 feature을 이렇게 계산하고 나면 다양한 장면의 understanding 쿼리를 수행할 수 있게 됩니다. CLIP 모델은 Fig.1과 같이 캡션으로 학습되어 affordance, 재질, 속성 등의 단순 물체 라벨을 넘어서는 개념들을 찾아낼 수 있습니다. 예를 들면 “soft”에 대한 임베딩으로 3차원 feature의 유사도를 계산하면 Fig.1의 좌하단 이미지와 같이 소파, 침대와 같이 가장 “soft”라는 재질과 잘 어울리는 물체로 강조되어 표시된 결과가 생성되는 것을 확인할 수 있습니다.
이런 Openscene의 main contribution을 정리하면 다음과 같습니다.
- semantic segmentation, affordance 추정, 공간 유형 분류, 3차원 물체 검출, 3D scene exploration에 임의의 텍스트 쿼리를 사용하는 open vocabulary 3D scene understanding 방식 제안
- 멀티뷰 융합과 3차원 컨볼루션을 사용한 open vocaulbary 임베딩 공간에서 3차원 feature을 추출하는 제로샷 기반 OpenScene 제안
- 흔하지 않은 클래스에 대해 fully supervised 방식보다 우수한 성능으로 3D semantic segmentation
2. Method
2.1. Image Feature Fusion
Fig.3에서 좌상단의 멀티 뷰 이미지 feature fusion을 가장 먼저 살펴보도록 하겠습니다.
VLM에서 이미지에 대한 픽셀 임베딩을 추출한 다음에 주어지는 scene의 3차원 표면 위 포인트로 reprojection하게 됩니다.
구체적으로, H \times W의 해상도를 가지는 이미지가 입력으로 들어가면 freeze된 segemntation 모델 \varepsilon^{2D} (\varepsilon^{2D}는 사전학습된 두 개의 이미지 segmentation 모델인 OpenSeg과 LSeg라는 모델을 사용하였다고 합니다. ) 에서 픽셀당 임베딩을 계산할 수 있는데, 이렇게 계산한 픽셀 임베딩을 I_i \in \mathbb{R}^{H \times W \times C}로 표시하고 있습니다. C는 feature 차원이고, i는 전체 이미지 수를 차례로 나타내는 인덱스 입니다.
M개의 포인트가 포함된 포인트 클라우드 P \in \mathbb{R}^{M\times 3}에서 각각의 표면 포인트 p \in \mathbb{R}^3이 주어지면, 그 프레임 i의 내부 파라미터 I_i와 외부 파라미터 E_i를 가지고 해당하는 픽셀 \mathbf{n} = (u,v) 를 계산할 수 있겠죠.
만약 occlusion이 많이 되어 있는 경우를 고려할 수 있다면 하기 위해서, depth 이미지가 같이 제공되는 ScanNet이나 Matterport3D와 같이 indoor 데이터셋 같은 경우에는 픽셀 u가 보이는 표면 위의 포인트 p와만 대응되도록 하기 위해 occlusion 테스트도 추가적으로 수행하였다고 합니다.
이렇게 이미지-포인트 쌍을 맞추면 포인트 p에 대한 프레임 i의 해당 이미지 feature는 f_i = I_i(u) \in \mathbb{R}^C로 나타낼 수 있습니다. p에 총 K개의 뷰를 멀티로 연결할 수 있다고 가정하면, 이런 이미지 픽셀 임베딩을 합쳐서 한 포인트에 대한 단일 feature 벡터 f^{2D} = \phi(f_1, . . ., f_K)를 얻을 수 있고, 여기서 \phi:\mathbb{R}^{K \times C} \mapsto \mathbb{R}^C는 멀티퓨 이미지 feature의 average pooling 연산자를 의미합니다.
각 포인트에서 fusion 과정을 반복하고 나면, 결국 최종 포인트 클라우드 feature F^{2D} = \{f^{2D}_1, …, f^{2D}_M\} \in \mathbb{R}^{M \times C}를 생성할 수 있습니다.
2.2. 3D Distillation
F^{2D}는 이미지가 있을 때 language 기반의 3D scene understanding에 직접적으로 사용할 수 있습니다. 그렇지만 이런 합쳐진 feature는 일관되지 않은 이미지 레벨의 예측으로 인해서 노이즈가 존재하는 segmentation 결과로 이어질 수 있다고 합니다. 또한 일부 task에서는 이미지가 아니라 포인트나 메쉬 형태의 scene만 제공하기 때문에 이런 2D VLM knowledge를 포인트만 입력으로 사용하는 3차원 네트워크로 추출할 수 있도록 하였습니다. 다시 말하면, 포인트 P가 입력으로 주어졌을 때 식(1)과 같이 포인트별 임베딩을 추출하는 인코더를 학습하고자 하였습니다.
++ 3차원 네트워크로는 MinkowskiNet18A를 사용하였다고 합니다.
- F^{3D} = \{f^{3D}_1,…, f^{3D}_M\}
3차원 네트워크 F^{3D}의 출력이 fusion된 feature F^{2D}와 일치하도록 식(2)와 같이 코사인 유사도를 이용하여 loss를 계산합니다.
distillation된 3차원 모델의 출력은 CLIP과 동일한 임베딩 공간에 존재하게 되고, 따라서 어떤 2D의 도움 없이도 텍스트-3D에 대해 공통으로 임베딩된 F^{3D}는 임의의 텍스트 프롬프트가 주어지면 scene 레벨의 understanding을 수행할 수 있습니다.
2.3. 2D-3D Feature Ensemble
앞서 생성한 F^{2D}와 F^{3D}로도 open vocabulary 쿼리에 대한 수행이 가능하지만, 여기서 좀 더 성능 개선을 하기 위해 앙상블 방식을 제안하고 있습니다.
2D fusion feature는 작은 물체, 가령 테이블 위의 컵, 혹은 벽에 걸린 그림과 같이 shape이 모호한 물체를 구분해서 잘 예측하는 반면에 3D feature는 독특한 형태, 벽이나 바닥 위에 붙은 각각의 물체들을 잘 예측한다는 특징이 있습니다.
이 두 feature를 장점을 살려서 잘 합치기 위해 앙상블 방식은 inference 때 제공되는 일련의 텍스트 프롬프트를 활용한다고 합니다. 여기서 텍스트 프롬프트는 예를 들어 ScanNet과 같은 벤치마킹 데이터셋에서 사전 정의된 클래스 혹은 사용자가 정의한 임의의 클래스를 의미합니다. 먼저 CLIP 텍스트 인코더 \varepsilon^{text}를 사용하여 모든 텍스트 프롬프트에 대한 임베딩을 계산하고, T = \{t_1, . . ., t_N\} \in \mathbb{R}^{N \times C}로 표시할 수 있습니다. (N은 텍스트 프롬프트의 수, C는 feature 차원)
그 다음, 각 3차원 포인트에 대해 2차원 fusion과 3차원 distillation feature를 얻습니다. 그러고 나면 코사인 유사도를 통해서 텍스트 feature와 이 두 feature 사이를 식(3)과 같이 각각 연결지을 수 있습니다.
모든 텍스트 프롬프트 t_n에 대한 유사도 점수를 구하고, 모든 프롬프트 중에서 최대값인 s^{2D} = max_n(s^{2D}_n)와 s^{3D} = max_n(s^{3D}_n)을 구해서 두 feature의 앙상블 점수로 사용하게 됩니다.
최종 2D-3D 앙상플 feature인 f^{2D3D}는 결국 앙상블 점수가 가장 높은 feature가 될 것 입니다.
2.4. Inference
모든 포인트별 feature (f^{2D}, f^{3D}, f^{2D3D})와 임의의 텍스트 프롬프트 셋의 CLIP feature을 사용하면 그 사이의 코사인 유사도를 계산하여 유사성을 구할 수 잇씁니다. 이 유사도 점수를 모든 scene understanding task에 사용하는데, 예를 들어 앙상블 feature을 사용하는 제로샷 기반 3D semantic segmentation의 경우 각 포인트에 대한 최종 segmentation 결과는 argmax_n\{cos(f^{2D3D}, t_n)\}를 포인트마다 계산하여 구할 수 있습니다.
3. Experiments
실험에는 이전 task와 비교할 수 있도록 기존의 closed 3D semantic segmentation 벤치마크에서 평가하고 있으며, 데이터셋으로는 ScanNet과 Matterport3D 그리고nuScenes Lidarseg를 사용하고 있습니다.
3.1. Comparisons
Comparisons on zero-shot 3D semantic segmentation
먼저 제로샷 기반 3D semantic segmentation과 관련된 task 방법론으로 MSeg Voting과 3DGenz와 비교하고 있습니다.
MSeg voting은 라벨 셋에 매핑된 MSeg를 사용해서 각 이미지에 대한 semantic segmentation을 수행하게 됩니다. 각 포인트에 대해 멀티뷰 이미지의 logits에 대한 Voting을 진행합니다.
3DGenZ는 ScanNet 데이터셋의 20개 클래스 중에서 16개를 seen 클래스, 4개를 unseen 클래스로 나누고 seen 클래스에 대해 GT를 활용하여 학습한 다음, 두 클래스 셋에 대한 feature을 생성한다고 합니다.
이전 연구의 실험 세팅에 따라 4개의 unseen 클래스에 대한 mIOU와 mACC를 Tab.1과 같이 리포팅하고 있습니다. 3DGenz는 16개의 보이는 클래스에 대해 GT 데이터를 활용하지만 그렇지 않음에도 불구하고 더 좋은 성능을 보이고 있습니다. MSeg와 비교해보면 CLIP feature을 regression한 다음에 classification하는 본 논문의 방식으로 클래스 간의 유사도와 차이를 자연스레 알아낼 수 있기 때문이라고 분석하고 있습니다.
Comparison on 3D semantic segmentation benchmarks
다음 Tab.2는 nuScenes와 ScanNet, 그리고 Matterport3D 데이터셋에서 모든 클래스의 fully supervised 방식과 제로샷 방식을 비교하고 있습니다.
결과적으로 본 논문의 방법론이 세 데이터셋 모든 지표에서 제로샷 베이스라인인 MSeg Voting을 뛰어넘는 성능을 보이고 있습니다. 최근의 fully supervised 방식과는 꽤나 차이가 있지만 그래도 Matterport3D에서는 SOTA 방식과 가장 작은 격차를 보이고 있습니다. 이러한 결과는 Matterport3D가 scene이 더 다양하기 때문에 fully supervised에서도 어려움을 겪고 있기 때문이라고 추측하고 있습니다.
3.2. Ablation Study
Does it matter which 2D featuers are used?
이제는 ablation sutdy로 먼저 freeze한 2D 모델을 사용한다고 했는데, OpenSeg와 LSeg를 사용했을 때의 차이에 대한 ablation study 입니다.
대부분의 결과에서 OpenSeg feature의 정확도와 일반화 성능이 앞선 Tab.1, Tab.2도 그렇고 Tab.4에서도 LSeg보다 우수하다는 것을 확인할 수 있었기 때문에 모든 실험에서는 기본적으로 OpenSeg를 사용하고 있습니다.
Is our 2D-3D ensemble method effective?
또한 Tab.4를 통해 알 수 있는건 이미지 feature fusion만 수행했거나 / distillated 3차원 모델만 수행했거나 / 전체 앙상블 모델 사용 이렇게 나누어 3차원 포인트의 feature을 예측하는 성능을 비교하고 있습니다.
모든 데이터셋과 메트릭에서 앙상블 모델로 모든 데이터와 메트릭에서 가장 높은 성능을 보이는 것을 확인할 수 있는데, 이를 통해 두 도메인에서 생성되는 패턴을 활용하면 강력한 앙상블 feature을 생성할 수 있고 scene의 표현력을 높일 수 있음을 보여주면서 리뷰 마치도록 하겠습니다.
안녕하세요. 좋은 리뷰 감사합니다.
읽으면서 역시 CLIP이다 하면서 읽었던 것 같습니다.리뷰를 읽으면서 잘 이해가 가지 않는 부분이 있었는데 inference 때 제공되는 일련의 텍스트 프롬프트는 어떻게 들어가게 되는 건가요? 그리고 중간에 모든 텍스트 프롬프트에 대해서 유사도를 구하는 부분이 있는데 여기서 텍스트 프롬프트는 어떻게 구성이 되어 있는지, 그리고 모든 텍스트 프롬프트에 대해서 계산하면 너무 코스트가 많이 들 것 같은데 논문의 저자가 이에 대해서 따로 언급하지는 않았는지 궁금합니다.
감사합니다.
안녕하세요 건화님 좋은 리뷰 감사합니다.
질문이 몇가지 있습니다.
1. affordance는 사람의 행동에 대해 상호작용할만한 객체의 영역이라고 알고 있고, function은 건화님이 언급한 바에 따르면 사람이 작업할 수 있는 위치를 찾는 것이라고 하는데, 저는 작업할 수 있다의 개념이 사람의 어떤 행동에 속한다고 생각이 들어서 affordance와 function의 차이가 무엇인지 약간 헷갈립니다. 이 부분에 대해 조금만 더 설명해주실 수 있나요?
2. 본 논문에서 언급하는 흔하지 않은 클래스에 대한 정의가 정확히 무엇인가요? Experiments 부분에서의 4/20개 클래스를 unseen으로 정하고 실험한 것이 흔하지 않은 클래스에 해당하는 건가요? 그렇다면 해당 4개의 unseen인 흔하지 않은 클래스에 대한 성능이 좋다라고 reporting한 저자들의 주장이 과연 크게 납득이 될만한 정도인지 건화님의 의견이 궁금합니다.
3. Multi-view feature fusion에서의 input image들은 순서가 뒤죽박죽 섞여서 fusion되든 파노라마의 frame을 자른 것처럼 sequential하게 fusion되든 같은 fusion feature representation을 가지는 걸까요?
4. 2.2 3D Distillation에서 F2D와 같은 합쳐진 feature는 일관되지 않은 이미지 레벨의 예측이 생긴다고 하셨는데 그 이유가 무엇인가요?
5. 본 논문의 핵심 결론은 2D pixel feature, 3D point feature, CLIP image-text feature가 모두 동일한 CLIP 임베딩 공간에 존재하여 이를 활용해 어떤 최적의 앙상블 feature를 만든다는 것으로 이해해도 될까요?
감사합니다.