ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 📂 3D dataset & 3D task
    CS 공부/AI 2023. 4. 7. 02:28

    3D가 중요한 이유?

    • 우리가 3D 세상에 살고 있기 때문~
    • 3D의 활용 분야
      • AR/VR: 게임, 커머셜, 군사훈련 등
      • 3D printing
      • 의료분야, 화학분야(단백질 구조 3차원)

    인간이 3d를 보는 방법

    • 이미지는 3D 세계를 2D 공간에 투영한 것이다.
    • 카메라는 3D 장면을 2D 이미지 평면에 투영하는 장치 = 투영된 두개의 2D 이미지로 3D를 만들어낼 수 있음
    • 삼각측량법 (Triangulation)을 통해 2D 이미지를 3D로 만들 수 있다

     

    3D 데이터 표현 방법

    • 2D 이미지는 이차원 배열 구조로 각 픽셀의 RGB 값으로 표현된다
    • 그렇다면 3D는...?
      • Muliti-view images: 여러 각도에서 사진을 촬영
      • Volumetric: 2d 이미지와 가장 비슷한 표현방법
      • mesh: graph CNN에서 사용하기 좋은 구조, 3D 포인트들이 edge와 vertex의 표현으로 이루어짐 
      • point cloud: 3D 포인트 (x,y,z)들의 집합으로 표현 (
      • part assembly: 기본적인 도형(사각형, 삼각형 등..)의 집합으로 표현
      • implicit shape: 최근 각광 받는 방법, 평면의 바깥쪽을 양수로, 안쪽을 음수로 하여 0이 되는 지점을 surface로 함

     

    3D datasets


    ShapeNet

    • 대규모의 합성 개체 (55개의 카테고리를 가진 51300개 3d 모델)

    PartNet

    • ShapeNet 개선 버전
    • Fine-grained dataset (annotation 되어있는 데이터셋)
    • 26,671개 3d 모델을 57,3585개의 part로 구분

    SceneNet

    • (500만개의 RGB-Depth) pair의 실내 모습 이미지

    ScanNet

    • 250만개의 RGB-Depth pair 실내 이미지 데이터셋, 1500개의 실제 스캔 사진 포함

    Outdoor 3D scene datasets (실외 이미지)

    • KITTI: 3d bounding box로 라벨링된 LiDAR 데이터
    • Semantic KITTI: 포인트별로 라벨링된 LiDAR 데이터
    • Waymo Open dataset: 3d bounding box로 라벨링된 LiDAR 데이터

     

    3D Task


    3D 객체 인식

    • Volumetric 3D CNN을 사용해서 이미지의 Label 정보 출력

    3D 객체 탐지

    • 이미지나 3d 공간에서 3d bounding box 탐지
    • 자율주행 어플리케이션에 유용

    3D semantic segmentation

    • ex. 신경영상학
      • 다양한 기법을 사용해서 직접 또는 간접적으로 뇌의 구조, 기능, 약리학 구조를 영상화하는 것

    Conditional 3D generation

    • Mask R-CNN
      • Mash R-CNN은 box, classes , mask를 예측함으로서 객체를 segment한다
      • Mash R-CNN의 branch는 각 RoI에 해당하는 shared feature에서 각 출력을 추론한다
    • Mesh R-CNN
      • 2D 이미지를 넣으면 탐지된 객체의 3D mesh 형태로 나옴
      • Mask R-CNN의 head 부분을 mesh 형태로 바꾸면 Mesh R-CNN이 된다
      • Mask R-CNN에 3D branch를 추가한 것이다

    3D 응용 예제 - Photo refocusing


    • 스마트폰 카메라의 'portrait mode'와 거의 비슷함
    • 주어진 이미지의 depth map으로 after-refocusing 이미지 만들기 

     

    1. 초점을 맞출 depth 임계값 범위를 설정한다 [Dmin, Dmax] (Dmax이후로는 focus 날림)

    2. depth map을 thresholding해서 mask를 계산한다. Dmax 바깥으로는 'defocusing area' 안으로는 'focusing area'

    focus_mask=depth_map[...,:] > threshold_value
    defocus_mask=depth_map[...,:] <= threshold_value

    3. input 이미지의 blurred 버전을 만들어 놓는다

    blurred_image=cv2.blur(original_image,(20,20))

    kernel size는 내맘대로 바꿀 수 있음

    4. focused area와 defocused area를 masking해서 masked focuse image와 masked defocused image 추출

    focused_with_mask=focus_mask*original_image
    defocused_with_mask=defocus_mask*blurred_image

    5. 두개의 이미지를 블렌딩해서 refocused 이미지를 만든다

    defocused_image=focused_with_mask + defocused_with_mask

    'CS 공부 > AI' 카테고리의 다른 글

    파이썬 버전 관리  (0) 2023.04.25
    소프트웨어 엔지니어링  (0) 2023.04.24
    Multi-modal learning  (0) 2023.04.06
    📷 Conditional generative model  (0) 2023.04.05
    📸 Instance/Panoptic segmentation + Landmark localization  (0) 2023.04.04
Designed by Tistory.