[데이터셋 리뷰] ‘DiLiGenT’ Photometric Stereo Dataset

Minguinho_zeze·2021년 11월 15일
1

논문 리뷰 + 구현

목록 보기
9/21
post-thumbnail

안녕하세요, 밍기뉴와제제입니다.

오랜만에 리뷰를 씁니다. 이번에는 논문 리뷰가 아닌 '데이터셋'에 대한 리뷰를 하고자 합니다.
바로 'DiLiGenT'라는 데이터셋인데요, 제가 최근들어 가장 많이 접한 데이터셋입니다.

DiLiGenT?


'DiLiGenT' 데이터셋은 Photometric Stereo라는 기법을 구현한 식/모델의 성능을 측정하는데 주로 사용되는 데이터셋입니다. 데이터셋을 만든 사람들도 "We use our dataset to quantitatively evaluate state-of-the-art photometric stereo methods"와 같이 말하며 DiLiGenT가 성능 평가를 위해 만들어진 데이터셋이라 말하였습니다.

Photometric Stereo는 카메라가 보는 화면, 객체를 비추는 광원의 위치를 이용해 '카메라가 보는 시각'에서 보이는 표면의 법선 벡터를 구하는 방식입니다. 우리말로 '광도 양안법'이라 부릅니다. 이에 대한 자세한 설명은 서베이 논문을 읽어보시면 아실 수 있습니다. 1980년대부터 발전하기 시작한 기술이라 그런지 관련된 논문도 많이 발견할 수 있었습니다.

논문을 읽어보시면 DiLiGenT datset의 탄생 배경, Photometric Stereo에 대한 간략한 설명, 데이터셋 구성 방법, 데이터셋을 이용한 각종 Photometric Stereo 방식의 성능 평가 등을 확인하실 수 있습니다.

데이터셋 구성


DiLiGenT 데이터셋은 10개의 객체를 촬영한 사진들로 구성되어 있습니다.

(위 : 객체, 밑 : 객체의 Nomral map(표면의 법선벡터))
여기서 객체의 nomral map에 객체명이 적혀있고 객체 사진을 보시면 Sparse spec. spike, Mostly diffuse...등 설명이 적혀있습니다. 이는 객체 표면의 성질을 설명한 것입니다. 자세한 설명은 논문을 통해 확인하실 수 있습니다.

데이터셋 촬영 방법

논문의 3.1절을 보시면 데이터셋을 어떻게 만들었는지 그 과정이 나타나 있습니다.

저자는 외부의 빛이 거의 들어오지 않는 DarkRoom 환경에서 GRAS-50S5C-C 카메라를 이용해 직경이 약 20cm인 물체들을 촬영했습니다. 이 때 물체와 카메라 사이의 거리는 1.5m이며 HDR이미지를 만들기 위해 노출 시간을 {20, 40, 70, 100}ms로 하여 총 4번 촬영 후 합쳤다고 하네요. DiLiGenT 데이터셋은 객체당 96장의 사진으로 구성되어 있으니 객체당 96X4 = 384장을 촬영한 것이죠.

그리고 촬영할 때마다 광원의 위치도 변경했는데요, 직사각형 모양의 철제 프레임에 96개의 LED 전구를 설치하고 전구를 하나씩 밝히며 사진을 찍었습니다. 이 때 철제 프레임에 대한 자세한 설명은

we design our light sources as 96 white LED bulbs fixed on a rectangular metal frame. The frame is divided into 12 × 8 regular samples spanning 74.6◦ × 51.4◦ , with one LED fixed at each of the grid points.

위와 같습니다.

데이터셋 다운로드


데이터셋을 다운로드 받으려면 우선 링크로 들어가셔야 합니다. 들어가시면

위와 같은 사이트를 볼 수 있습니다. 'DiLiGenT' Photometric Stereo Dataset이라는 타이틀이 있고 데이터셋에 대한 소개글(Introduction)이 제일 먼저 나와있는걸 확인할 수 있습니다.

그리고 그 밑에 데이터셋에 관한 논문 링크가 나와있고

데이터셋에 포함된 객체가 무엇인지 말해주는 사진이 있습니다.

그리고 Main, Test 데이터셋에 대한 설명과 링크가 나와있습니다.

여기서 Main 데이터셋, Test 데이터셋에 sampleCodeBaseline, sampleCodeEvalNormal이 있는걸 볼 수 있습니다. 이들에 대한 설명을 하자면 다음과 같습니다.

  • sampleCodeBaseline : DiLiGenT datset으로 Photometric stereo의 baseline으로 Normal map을 구현한 코드와 Normal map을 구하고 실제 객체의 Normal map과 비교했을 때 Angular error도 얻을 수 있는 코드가 들어있는 폴더입니다.
  • sampleCodeEvalNormal : 논문에 언급한 Photometric Stereo 방식들을 이용해 구한 DiLiGenT 객체들의 Normal map을 실체 객체의 Normal map과 비교했을 때 Angular error를 얻을 수 있는 코드가 들어있는 폴더입니다.

이 코드들은 Matlab을 이용해 구현되었습니다. 허나 제가 이들을 Python으로 재구현하여 Matlab을 설치하지 않아도 Normal map, Angular Error를 얻을 수 있습니다. 깃허브 링크

마지막으로

위와 같은 글을 확인하실 수 있습니다. DiLiGenT 데이터셋으로 Photometric stereo의 성능을 측정한 내용, Normal map을 가지고 3D Reconstruction을 구현하는 프로그램, 추가적인 정보를 확인할 수 있습니다.
여기서 주목할 부분은 추가적인 정보(Additional information)입니다. 간략히 설명드리면 다음과 같습니다.

  • Reference BRDF : 표면의 성질을 결정하는데 사용되는 BRDF(Bidirectional Reflectance Distribution Function, 양방향 반사 분포 함수)들을 말합니다.
  • Point light source positions : 광원의 위치 정보와 카메라의 내부 파라미터(Intrinsic parameter)를 말합니다.
  • Benchmark evaluation : 자신만의 Photometric Stereo 방식으로 만들어낸 Normal map을 만들어서 저자한테 메일로 보내면 평가해준다는 뜻입니다.

그리고 마지막으로 객체를 촬영할 때 얻은 원본 사이즈 파일, 객체의 3D 오브젝트 파일(ply 형식)를 얻으려면 메일을 보내달라고 말하는건데 제가 보내니 며칠 뒤에 답장을 받을 수 있었습니다.

결론


지금까지 Photometric Stereo의 성능을 테스트할 때 쓰이는 DiLiGenT 데이터셋에 대해 간략히 알아봤습니다. 저도 최근에 처음 접한 데이터셋인데요, 이를 이용해 다양한 Photometric Stereo 방식들을 테스트하다보니 금방 친해질 수 있었습니다.
나중에 기회가 된다면 또다른 데이터셋에 대한 리뷰를 해보도록 하고 다음 글은 논문 리뷰로 찾아뵙겠습니다.

profile
안녕하세요. 딥러닝 알고리즘에 관심이 많은 대학원생입니다.

0개의 댓글