naverlabs / mapping-and-localization-challenge

11 stars 3 forks source link

Mapping & Localization 챌린지 참가자를 위한 질문/토론 공간입니다. #1

Open FlyMe opened 4 years ago

FlyMe commented 4 years ago

자유롭게 이슈를 남겨주시고, 이메일 문의가 필요한 경우 grow-withus@naverlabs.com로 연락해주세요.

Jwill1994 commented 4 years ago

안녕하세요! indoor challenge 관련 질문 드립니다. Q1) 공지된 pseudo 코드의 image_pixel = (K*point3d_local).hnormalized() 에서 K와, hnormalized가 무엇인지 여쭤봐도될까요? https://www.scratchapixel.com/lessons/3d-basic-rendering/computing-pixel-coordinates-of-3d-point/mathematics-computing-2d-coordinates-of-3d-points 이곳을 참조하였는데 원리가 동일하다고 생각하면될까요..?

Q2) [tx ty tz qw qx qy qz]^T 좌표에서 t와 q가 각각 무엇을 의미하나요? 백화점 전체에서의 상대위치와 로봇카메라의 각도인가요 ?

Q3) (0.25m, 10.0°) / (0.5m, 10.0°) / (5.0m, 10.0°) 가 평가지표인데, 그럼 test 이미지 데이터셋으로 부터 [tx ty tz qw qx qy qz]^T 를 predict하여 tx,ty,tz가 각각 0.25,0.5,5m 이내 / qx,qy,qz가 모두 10도 이내인 것이 많도록 하는 그런 challenge 라고 이해하면 될까요 ?

혼자 challenge에 참여해보고 싶은 초심자인데 이해가 부족하여 이렇게 기본적인 것에 대한 많은 질문드려 죄송합니다..

goodguy-dev commented 4 years ago

@Jwill1994 안녕하세요^^. 질문에 답변을 드립니다. Q1) K는 카메라 매트릭스를 의미하고, hnormalized()는 homogeneous coordinate(4x1)으로 계산된 3차원 포인트를 normalize(3x1)해주는 Eigen 라이브러리 멤버 함수입니다. 보내주신 페이지와 원리는 동일하나, 사뭇 다른 표현법을 사용하네요. 다음 페이지를 확인해보세요. [camera_calibration_and_3d_reconstruction.html]

Q2) tx,ty,tz는 카메라의 translation vector를 의미하고, qw, qx, qy, qz는 카메라의 quaternion 좌표를 의미합니다. 즉, 특정 원점을 기준으로 카메라의 상대 포즈를 의미합니다.

Q3) 각 테스트 이미지의 추정된 포즈를 json 파일로 만들어 업로드 하면, 저희가 갖고 있는 참 값 포즈와의 오차 계산을 통해 평가를 내립니다. 그 오차가 적도록 테스트 이미지의 포즈를 추정하는 것이 본 indoor challenge의 주제입니다.

cho-yeongmin commented 4 years ago

안녕하세요? Outdoor challenge에 도전하고 있는 대학생입니다. 다름이 아니라 스테레오 카메라의 baseline 기선거리와 차량에서의 카메라 높이 값을 알 수 있을지 하여 문의 드립니다.

P.S 다양한 데이터로 재밌는 도전하게 해주셔서 감사합니다~!

junwoo091400 commented 4 years ago

안녕하세요 outdoor challenge README에서

참가자는 주어진 모든 데이터를 활용해 각 테스트 케이스의 마지막 프레임(49_L.png, 49_R.png)에 해당하는 차량의 자세 정보(카메라의 자세가 아님)를 측정해 제출하면 됩니다.

이런 내용이 있었는데 왜 마지막 프레임만 구하는 건지 질문 드리고 싶습니다. 이전 프레임들에 대한 데이터가 요구되지 않는 이유가 있나요?

JunhoJeon commented 4 years ago

안녕하세요? Outdoor challenge에 도전하고 있는 대학생입니다. 다름이 아니라 스테레오 카메라의 baseline 기선거리와 차량에서의 카메라 높이 값을 알 수 있을지 하여 문의 드립니다.

P.S 다양한 데이터로 재밌는 도전하게 해주셔서 감사합니다~!

안녕하세요. 답변이 늦어져 죄송합니다. calibration.json 파일에 기록된 LCam과 RCam의 두 extrinsic matrix를 통해 두 카메라 coordinate 사이의 transformation을 구하면 baseline 거리를 구하실 수 있습니다.

JunhoJeon commented 4 years ago

안녕하세요 outdoor challenge README에서

참가자는 주어진 모든 데이터를 활용해 각 테스트 케이스의 마지막 프레임(49_L.png, 49_R.png)에 해당하는 차량의 자세 정보(카메라의 자세가 아님)를 측정해 제출하면 됩니다.

이런 내용이 있었는데 왜 마지막 프레임만 구하는 건지 질문 드리고 싶습니다. 이전 프레임들에 대한 데이터가 요구되지 않는 이유가 있나요?

좋은 질문 감사합니다.

자율주행의 경우 안전한 운행을 위한 끊김 없는 localize가 필수적으로 요구되지만, 리소스의 한계로 무거운 localize 알고리즘을 매 프레임 마다 수행하는건 사실상 어려운 경우가 많습니다. 이러한 실제 현장의 localization 환경을 강조하기 위해 현재까지 누적된 차량의 영상 정보와 tracking (odometry) 등을 이용해 주기적으로 '현재 시점'의 최종 자세를 구하는 것을 이번 챌린지의 테스트 시나리오로 삼았습니다.

즉 이전 프레임의 데이터는 측위 결과의 제출은 요구되지 않지만, 모두 활용하는 것을 권장하고 있습니다.

big-chan commented 4 years ago

안녕하세요. 챌린지 홈페이지에 나와있는 베이스 방식인 Root SIFT+NetVLAD와 R2D2+NetVLAD에 대해 질문이 있습니다. local descriptor 와 Global descriptor 로써 각각 사용하신거 같은데, 정말 말그대로 두개를 합쳐서 Retrieval 까지 진행 하신건지 아니면 NetVLAD만을 이용해 Retrieval을 진행하고 Root SIFT를 SFM 같은 Map 구축에 사용하신 건지 궁금합니다.

JunhoJeon commented 4 years ago

안녕하세요. 챌린지 홈페이지에 나와있는 베이스 방식인 Root SIFT+NetVLAD와 R2D2+NetVLAD에 대해 질문이 있습니다. local descriptor 와 Global descriptor 로써 각각 사용하신거 같은데, 정말 말그대로 두개를 합쳐서 Retrieval 까지 진행 하신건지 아니면 NetVLAD만을 이용해 Retrieval을 진행하고 Root SIFT를 SFM 같은 Map 구축에 사용하신 건지 궁금합니다.

안녕하세요. 실외 베이스라인 알고리즘의 경우 간단히 NetVLAD로 retrieval, R2D2은 pose estimation에만 사용하며, SFM 맵을 별도로 구축하지는 않았습니다. 이는 기하 정보로 바로 활용 가능한 라이다가 데이터셋에 함께 제공되기 때문입니다.

hyBlue commented 4 years ago

안녕하세요. 혹시 실내 데이터셋에서 모자이크 된 부분의 좌표에 대한 바이너리 마스크 데이터를 제공해 주실 수 있으신가요?

goodguy-dev commented 4 years ago

@hyBlue 실내 데이터셋에서 모자이크 된 부분에 대한 마스크는 따로 제공하지 않습니다.

yongjun823 commented 4 years ago
Localization 데이터셋은 Mapping 데이터셋과 유사한 판교, 여의도 지역을 주행한 MMS 차량에서 
수집한 스테레오 카메라 영상으로 이루어져 있습니다. 

Localization 데이터셋의 데이터의 위치 정보는 Mapping 데이터셋에 있는 위치에 포함되나요? Localization 데이터에 있는 위치를 Mapping 데이터에서 찾을 수 있는지 궁금합니다

SLAM을 활용해서 Mapping 데이터셋으로 맵을 만들고 Localization 하려고 합니다

감사합니다

JunhoJeon commented 4 years ago
Localization 데이터셋은 Mapping 데이터셋과 유사한 판교, 여의도 지역을 주행한 MMS 차량에서 
수집한 스테레오 카메라 영상으로 이루어져 있습니다. 

Localization 데이터셋의 데이터의 위치 정보는 Mapping 데이터셋에 있는 위치에 포함되나요?

Localization 데이터에 있는 위치를 Mapping 데이터에서 찾을 수 있는지 궁금합니다

SLAM을 활용해서 Mapping 데이터셋으로 맵을 만들고 Localization 하려고 합니다

감사합니다

안녕하세요.

Localization 데이터셋의 위치가 Mapping 데이터셋 내에 ‘정확히’ 존재하지는 않지만, Localization 데이터셋을 수집하며 주행한 도로는 Mapping 데이터셋을 수집하며 한 번 이상 주행하였습니다. 즉, 넓은 의미에서는 포함되는 것이 맞습니다.

감사합니다.

hyBlue commented 4 years ago

안녕하세요, Indoor Challenge 관련 질문드립니다.

  1. README에 coordinate system 을 보면

    In this robot coordinate system, the sensor is going forward on the x-axis, pointing to the left on the y-axis, and pointing to the top on the z-axis. To directly connect to the camera coordinate system, we rotated the pose at the end.

라고 되어 있는데 'we rotate the pose at the end' 라는 것은 현재 제공되는 groundtruth pose들에 회전이 적용되어 있다고 이해하면 될까요? 만약 그렇다면 여기서 pose에 적용된 rotation은 Camera pose뿐만 아니라 grountruth.hdf에 들어 있는 각 Lidar의 pose에도 적용이 된 건가요?

  1. Submission 의 경우에 횟수 제한 같은 것이 있는지 궁금합니다.

감사합니다.

goodguy-dev commented 4 years ago

안녕하세요. @hyBlue 님. 질문 주신 사항에 답변을 드립니다.

  1. 해당 문구는 영상처리에서 많이 사용하는 카메라 좌표계인 [x: 왼쪽, y: 아래쪽, z: 전방] 좌표계를 로봇 좌표계 [x: 전방, y: 오른쪽, z: 위쪽] 에 맞추기 위해서 회전 성분을 추가하였다는 언급입니다. 라이다 데이터는 로봇 좌표계를 그대로 따르는 point cloud 이기에 라이다 포즈에는 적용이 되지 않습니다.

  2. 현재는 횟수 제한이 없지만, 추후 abusing이 감지될 경우 횟수를 제한하고자 합니다.

감사합니다.

Jwill1994 commented 4 years ago

안녕하세요! indoor challenge 관련 질문드립니다. baseline으로 언급하신 netVLAD를 이해해보기위해 튜토리얼을 진행중에 있는데, netVLAD에 보니 데이터셋의 cluster 수 를 파라미터로 받는 부분이 있더라구여! (논문에서도 k-clusters에 대한 언급이 있던데..)
이 cluster의 수는 주어진 이미지로 부터 직접 구해야 하는건가요 ? 아니면 필요 없는 값인가요 ? (혹 제가 잘못 이해 하고 있는건지 해서..) 감사합니다.

goodguy-dev commented 4 years ago

안녕하세요. @Jwill1994 님. 말씀주신 파라미터는 NetVLAD의 하이퍼 파라미터로써 클러스터 수에 따라 NetVLAD의 성능이 달라질 수 있을 것 같습니다. 적합한 파라미터를 찾으셔서 학습을 진행하시거나, 이미 학습된 weight를 사용하시는 방법도 있을 것 같습니다. 해당 파라미터의 튜닝이 필요한지 안필요한지에 대한 여부는 전적으로 지원자분에게 달려있습니다;; 감사합니다.

LimHyungTae commented 4 years ago

test 안녕하세요 챌린지 준비하시느라 고생 많으십니다 :) 다름이 아니고 저는 sparse depth를 취득하려고 이미지 평면상에 LiDAR point를 projection을 시키는 과정에서 다소 부정확한 projection 결과가 나오는 것을 확인했습니다. 카메라와 LiDAR time sync가 맞지 않다보니 가장 timestamp의 차이가 가까운 LiDAR의 pose를 불러와서 카메라 평면 상에 projection하였습니다. 확인을 위해 코드도 첨부 드립니다. Undistortion의 문제는 아닌 것 같습니다... 감사합니다.

p.s. 다시 생각해보니 projection을 하려면 linearly interpolated된 카메라 pose를 이번에는 lidar의 시간에 대해서 interpolation을 한 후에 relative pose를 구해야 맞는 것 같다는 생각이 드네요! 근데 그것만으로는 저 정도의 오차가 나진 않을 것 같습니다 :( projection_codes.zip

goodguy-dev commented 4 years ago

안녕하세요. @LimHyungTae 님. 질문주신대로 부정확한 타임스탬프, 센서간 extrinsic 오차로 인해 다소 부정확한 projection 결과가 생성될 수 있습니다. 완벽한 정확도를 갖는 데이터셋은 아니지만, VL 평가를 하기에는 부족함이 없다고 판단하였기에 챌린지용 데이터셋으로 오픈하였습니다. 데이터셋에서 발생하는 미세한 오차 또한 실전문제라고 생각하시고 접근하셔도 괜찮을 것 같습니다. 그리고 제공드린 이미지의 groundtruth 포즈는 이미 타임스탬프에 맞추어 linearly interpolated된 포즈입니다.

sunggukcha commented 4 years ago

안녕하세요, Indoor Baseline 구현에 대해 궁금한 것이 있습니다.

  1. 무슨 metric으로 학습을 했는지 (triplet, N pair, ...), 그 경우 데이타셋 페어 (특히 negative sample)은 어떻게 했는지 궁금합니다.
  2. 가능하다면 구체적인 학습정보에 대해 알고싶습니다. training epoch, optimizer, lr scheduler
  3. baseline은 rootsift+netvlad 로 image retrieval하여 찾아진 GT를 그대로 출력하여 나온 결과인가요?
  4. 이미지 검색 방법을 사용하셨다면 그 방법은 어떻게 되나요? 한개의 쿼리당 같은 층의 모든 이미지를 대상으로 비교했는지, 혹은 특별한 클러스터링을 사용하였는지 궁금합니다.
goodguy-dev commented 4 years ago

안녕하세요. @sunggukcha 님.

  1. 베이스라인으로 사용한 NetVLAD는 Pittsburgh dataset으로 기 학습된 모델을 사용하였습니다. 학습에 사용된 파라미터에 관한 자세한 내용은 다음 github을 참고하시면 됩니다. https://github.com/Nanne/pytorch-NetVlad
  2. image-retrieval 뿐 아니라, rootsift를 통한 pnp solving한 결과로 나온 값 입니다. (참고: https://www.naverlabs.com/storyDetail/161)
  3. 이미지 검색은 한개 쿼리에 대해서 모든 층의 모든 이미지를 대상으로 하였습니다.
hyBlue commented 4 years ago

안녕하세요, indoor challenge에 대해 문의드립니다. test split에 중복된 {camid}{timestamp}가 존재하는 것 같습니다. submission 시에 name은 카메라와 timstamp로만 구별이 되는데 b1과 1f에서 100장 이상의 이미지가 중복된 값을 갖고 있어 문제가 되지 않을까 하여 질문드립니다. 제가 확인해본 바로는 첨부한 파일과 같습니다. 감사합니다. dup.txt

Jwill1994 commented 4 years ago

안녕하세요, indoor 챌린지 관련 질문드립니다. 물론 반드시 image retrieval을 위해 netVLAD를 이용할 필요는 없겠지만, 소개해주신 netVLAD는 트레이닝 과정에서 이미지들에 대한 class labeled 서브폴더가 필요한 것 같은데, "베이스라인으로 사용한 netVLAD는 Pittsburgh dataset으로 기 학습된 모델을 사용하였습니다" 라고 위에 다른분 질문에 답변해주셨더라구요! 이 말씀은 pretrained 된 모델을 매개로 제공주신 현대백화점 test, train 이미지 데이터 간의 query 과정이 가능하다는 말씀이신가요 ? 그러한 방법은 안나와있는 것 같은데, 혹시 존재한다면 알려주시면 감사하겠습니다.

goodguy-dev commented 4 years ago

안녕하세요. @hyBlue 님. 질문주신대로 현재 포맷에는 문제가 있습니다. 해당 문제를 반영하여 제출 포맷을 변경하였습니다. 다음 페이지를 확인해주세요 :) https://github.com/naverlabs/mapping-and-localization-challenge/issues/6

리포트 해주셔서, 감사합니다 (--)()(--)()

goodguy-dev commented 4 years ago

@Jwill1994 pre-trained 된 모델만 활용해도 어느정도 안정적인 image retrieval이 가능합니다. 간단히 NetVLAD로 1xD 벡터를 추출하신 뒤, 이를 비교하시면 됩니다. 자세한 사항은 NetVLAD 논문을 확인하세요^^.

kissw commented 4 years ago

안녕하세요, 데이터셋 관련해서 질문드립니다. 현재 제공해주신 indoor, outdoor 데이터셋을 연구용으로 계속 사용해보고싶은데, 대회가 끝난후 test 데이터셋의 groundtruth 파일을 바로 공개해주실 수 있나요??