
RGB 좌표계에 맞추는 캘리 방법함.
Zone 내부의 위치가 이미지상에서 어느 픽셀에 해당하는지 정확히 알 수 없으나 그 위치의 깊이가 L5가 반환한 해당 Zone의 분포의 평균값 mk와 같은 지점인 xk, yk 인 점이 반드시 존재한다는 것을 관찰함
기존에는 이미지의 특징이나 댑스, 포인트 클라우드와 같은 데이터의 특징을 추출하는 것에 대해서는 많은 연구가 이뤄졌지만 분포의 특징을 추출하는 것은 잘 이뤄지지 않음
근데 평균과 분산을 그냥 분포에 넣을수가 없음 왜냐하면 ToF의 각 존의 특성상 평균과 분산의 scale이 매우 큼
예를들면 평균은 2인데 분산은 0.00005 라던지 그래서 그냥 바로 인코더에 넣으면 학습이 잘 안됨
이를 해결하기 데이터를 분포에서 샘플링해서 이 샘플링한 데이터들을 가지고 학습시킬건데 잘 샘플링 하기위해 분포의 cdf의 역함수의 분위수를 i/N+1로 나누고 여기에 대응되는 x값을 구하는데 이 경우 cdf의 기울기가 가파른 부분에서 x값의 간극이 좁아지는 경향이 나타남으로 주로 데이터가 평균 근처에서 많이 모이게 나타나는 특징이 있다.
이렇게 해서 데이터를 샘플링하고 이걸 Point-Net에 태움 주로 3차원 포인트 클라우드를 학습하기 위해 사용하는 네트워크인데 데이터의 순서를 고려하지 않는 것이 특징임.
우리는 샘플링한 값으로 데이터의 순서가 중요하지 않음으로 이 네트워크를 사용한다.
그리고 이때 T-Net이 포함되어있는데 이는 입력되는 점군(Point값)에 대하여 회전하거나 정렬하는 부분을 학습함으로 이 부분을 제외에서 사용한다.
그리고 Point Net을 다중으로 배치하여 낮은 수준의 피처부터 고차원 수준의 분포의 피처를 학습하도록 한다.
여기서의 배워갈점은 분포의 특징을 추출하고 싶으면 분포의 평균과 분산을 바로 인코딩하는게 아닌 이 분포의 샘플들을 가지고 네트워크의 입력으로 넣어서 학습한다는 것
이미지 같은 경우에는 Efficient NetB5를 사용해서 마찬가지로 고수준과 저수준의 피처를 뽑아낸다.
이후에 단순히 컨캣이나 퓨전하면 안되는게 댑스카메라는 하나의 픽셀에 대응되는 깊이 값을 정확히 알고있지만
ToF와 RGB같은 경우에는 존의 영역안에 여러 픽셀이 포함되는데 이 포함되는 픽셀들중에서 정확히 어느 픽셀이 ToF가 그 존에서 깊이를 추출한 값이 맵핑되어야하는지 알 수 없기 때문에 바로 컨켓이나 퓨전할 수가 없다.
앞서 캘리한걸로 해당 존이 이미지 영역의 어느 픽셀에 해당되는지 알 수 있으나 그 하나의 존내에서 구체적으로 어느 픽셀이 그 깊이값인지는 알 수 없다는 것(1개의 존에 그냥 여러 픽셀을 담는다고 보면될듯 존이 큰가봄)
convolution은 receptive field가 좁아서 주변 픽셀만 보는데attention은 모든 image feature와 모든 distribution feature를 한꺼번에 펼쳐놓고 쌍쌍이 관계를 계산한다. 그래서 고정된 위치 정렬이 없어도, 어떤 image feature가 어떤 distribution과 관련 있는지를 전역적으로 따질 수 있음으로 정확히 이미지에 위치가 맵핑되지 않더라도 이미지 상에서 특정 픽셀포인트에서 어느 댑스값이 제일 적절한지를 다 어텐션해보면서 찾는다는 느낌
그래서 어텐션을 사용하는데 멀티모달을 어텐션할때는 크로스 어텐션을 사용하고 key, value는 하나의 멀티모달 query는 다른 멀티모달의 값으로 사용해 어텐션을 수행하여 서로다른 두 종류의 데이터를 연결한다.
Key와 Value 벡터는 depth distribution 특징에서 가져오고 Query 벡터는 이미지 특징에서 가져온다. 이를 통해 네트워크는 후보 깊이 공간으로부터 정보를 가져오는 방법을 학습.
아래 방향으로만 사용하는 것보다
어떤 정보가 어느 쪽으로 전달된다는 의미임으로 분포의 특징이 이미지로 전달됨으로 distribution to image attention

아래 방향에 대한 분포도 학습하면 성능이 더 좋아진다고 말한다.

댑스값의 존을 이미지 피처 위에 그대로 래핑하면 댑스값의 좌표가 픽셀 좌표와 맞지 않는 문제가 생긴다. 그 이유는 zone은 실수이고 이미지는 정수이기 때문.
그래서 실수값인 댑스값 좌표를 이미지에 보간법을 사용해서 이미지상에서 대응되는 실수좌표 피쳐가 무엇인지를 계산한다. (댑스값 좌표를 기준으로 이미지의 패치가 보간법을 통해 만들어진다고 보면됨, 예를들어 댑스값피쳐의 크기가 가로가 2.5 세로가 2.5라면 가로 2.5에서의 피처값 크기부터 세로 2.5까지의 피처값 크기를 구함)
이렇게 해서 각 zone마다 동일한 개수의 샘플 지점을 배치하여 같은 크기의 patch로 만든다.
여기에 어텐션을 한번 수행한다.
이렇게해서 잘 합성된 패치를 만들고 다음 패치를 또 만들어서 이어 붙여 최종적으로는 모든 패치에 대하여 이미지와 댑스 피처가 어텐션한 피처를 생성한다.
마지막으로 refinement모듈을 통과시켜 depth feature로 부터 실제 depthmap을 출력하도록 한다.
학습은 먼저 NYU-Depth V2 데이터셋의 24,000개를 사용하였고 ToF의 zone의 분포를 출력하는 것처럼 하기 위해 해당 데이터셋을 Zone영역으로 나누고 여기에 tof가 측정가능한 최대 거리값 이하들만 선별하여 각 존에 대하여 히스토그램을 구하고 이를 가우시안 분포로 근사하게끔 한다.
이 근사한 분포의 평균과 분산을 학습 모델의 입력으로 사용한다.
테스트와 파인튜닝을 위해 저자들은 실제 환경에서 L5 센서와 RGB-D 카메라를 함께 장착한 장치로 직접 데이터를 수집한 데이터 셋을 사용한다(ZJU-L5 데이터셋)
이 데이터셋은 15개 장면에서 수집한 1,027개의 L5, 이미지 pair로 구성되며, 이 중 527개 pair는 테스트 세트로 사용하고 나머지 500개 pair는 네트워크 fine-tuning에 사용한다.
Comment