hyunjin

NeuralRecon code 공부 본문

개인 공부/논문 리뷰

NeuralRecon code 공부

_h.j 2021. 7. 25. 18:21
728x90

git에 NeuralRecon fork 후

 

tools/tsdf_fusion

[generate_gt.py]

 

Ray - python 병렬처리, 분산 처리

  • python에서 병렬처리할 경우 multiprocessing을 주로 사용함.
    • 하지만 multiprocessing 라이브러리 사용하기 위해 기존에 작성한 코드 수정 필요(Pool 생성해서 넘기기 등)
    • multiprocessing 여러 클러스터에서 분산처리하긴 초보자에게 어렵
  • Ray 최근 핫한 라이브러리 머신러닝/딥러닝 위해 개발, 다양하게 활용 가능
    • Process 기반 분산처리, 병렬처리 진행
  • 1) 기존 코드에서 약간의 수정만으로 병렬 처리 가능 : 쉽고 범용적인 사용성
    • 처음엔 병렬처리 생각하지 않고 코드 구현 후, 마지막에 병렬로 구현
    • 함수에 데코레이터로 @ray.remote로 감싸기
    • 클래스도 @ray.remote로 감싸기
      • 혹은 ray.remote(클래스)로 사용할 수도 있음
  • 사용법
    • 1) 함수 또는 클래스 생성
    • 2) 함수 또는 클래스에 @ray.remote 데코레이터로 감싸기
    • 3) ray.init()으로 Ray 드라이버 실행
    • 4) obj_id = 함수.remote()로 함수 호출(비동기)
    • 5) ray.get(obj_id)으로 결과 받기(동기)

 

torch.utils.data.DataLoader() - PYTORCH에서 데이터 불러오기

  • 데이터를 순회할 수 있는 파이썬 iterable로 만들어 줌

https://hulk89.github.io/pytorch/2019/09/30/pytorch_dataset/

 

 

Skimage. Measure

https://scikit-image.org/docs/dev/api/skimage.measure.html

https://www.kite.com/python/docs/skimage.measure.marching_cubes_lewiner

 

 

 

[Backbone.py]

 

 논문에서  image backbone is a variant of MnasNet [41] and is initialized with the weights pretrained from ImageNet
                MNASNet : 모바일에서 사용 가능한 구조를 자동으로 찾는 것 
                - 모델의 latency(실제 휴대폰에 모델을 실행시키는 방법)를 주 목표로 포함 시켜 accuray와 latency
                사이에 좋은 균형 이루는 최적의 모델 찾도록 함 
                - Novel factorized hierarchical search space
                네트워크 전체에서 레이어의 다야양성 장려
                이전엔 적은 종류 cell 반복적으로 쌓아 검색 과정 단조롭 -> 다양성 낮음
                따라서 flexibility와 search space size 간 균형 맞추며 layer 구조적으로 다룰 수 있는 search space 제안 
               

Factorized Hierarchical Search Space

Factorized Hierarchical Search Space

 대부분의 이전 연구들에서는 몇 개의 복잡한 cell들만 검색 한 후 동일한 구조의 cell을 반복해서 쌓는 방법으로 접근했습니다. 저자는 이러한 접근 방식으로 인해서 네트워크의 레이어에 다양성이 없어지고 이는 결과적으로 네트워크의 accuracy와 latency에 영향을 미친다고 합니다.

 

따라서 본 논문에서 제안하는 모델의 구조는 위 그림과 같습니다. CNN 모델을 미리 정의된 블록들로 나누고, 점차적으로 입력 해상도를 줄이고 필터 사이즈를 늘리는 구조를 가지고 있습니다.

각 블록들은 sub search space를 통해 정의한 동일한 레이어들로 구성되어 있으며 다음과 같은 조건들을 고려하여 sub search space를 결정합니다.

 

        if alpha == 1.0:
            MNASNet = torchvision.models.mnasnet1_0(pretrained=True, progress=True)

  • pretrained (bool) – If True, returns a model pre-trained on ImageNet
  • progress (bool) – If True, displays a progress bar of the download to stderr

self.out1 = nn.Conv2d(depths[4], depths[4], 1, bias=False)

self.out1 = nn.Conv2d(depths[4], depths[4], 1, bias=False)

 

 

 

[mnasNet참고][mnasnet 참고][pytorch mnasnet]

 

 

[Transform.py]

 

@ operator(matmul op)

@ op,dot op 설명 

@ op,dot op 설명

 

 

 

728x90