딥 네트워크 - 딥러닝 모델 분석/네트웍 통신/카메라 3A 튜닝 분야

[일인기업 딥 네트워크][딥러닝 기술자문 전문] NeRF 논문의 몇가지 핵심 알고리즘의 설계구조와 동작원리를 확실히 파악하는데 성공했읍니다 ... 본문

Kernel Porting/Linux

[일인기업 딥 네트워크][딥러닝 기술자문 전문] NeRF 논문의 몇가지 핵심 알고리즘의 설계구조와 동작원리를 확실히 파악하는데 성공했읍니다 ...

파란새 2023. 6. 24. 13:49

그동안 2 년 가까이 BLDC/PMSM 모터제어로 전류를 정밀하게 제어하는 방법을 찾으려고 관련 논문을 수백편 뒤져서 최근에 모터의 정밀 전류제어 구현 기법을 99 % 터득에 성공했다 ...

저는 그동안 모터제어만 판것은 아니고 카메라 이미지센서의 화질 보정 알고리즘을 터득하려고 논문과 특허를 수도 없이 뒤져서 결국 터득에 성공했다 ...

밥벌이를 하려고 이것만 한것은 아니다 ...

딥러닝 NeRF 논문과 StyleGAN 논문의 핵심 딥러닝 모델 설계 구조를 파악하느라 고생 좀 했다 ...

또한 구글 Transformer Model 기반으로 음성인식 구현을 위한 딥러닝 모델 세부 설계구조 분석도 결코 쉽지 않았다 ...

이것으로 밥벌이를 하려 99% 준비해 놨는데 경기가 죽어서 일꺼리 얻기가 하늘에 별따기라 너무 힘들다 ...

이렇게 힘들어도 나는 자신있다 왜냐하면 위에서 언급한 99 점 짜리 기술이 몇가지가 있으니 언젠가 반드시 기회가 오리라 나는 확신하기 때문이다 ...

NeRF 논문은 Neural Radiance Fields라는 새로운 방식으로 3D 장면을 표현하고, 다양한 시점에서의 합성 이미지를 생성하는 방법을 제안했습니다. NeRF는 다음과 같은 알고리즘으로 구현됩니다.
NeRF 논문의 몇가지 핵심 알고리즘의 설계구조와 동작원리를 확실히 파악하는데 성공했읍니다 ...
Positional Encoding : 3차원 좌표 x와 View Direction d를 고차원 벡터로 변환하는 과정입니다. 이때, 고주파 성분을 보존하기 위해 삼각함수를 이용한 인코딩 방식을 사용합니다. 즉, x와 d에 각각 다른 주파수와 위상을 가진 사인과 코사인 함수를 적용하여 특징 벡터를 생성합니다. 이렇게 하면 x와 d의 작은 변화에도 민감하게 반응할 수 있습니다.
Multi-Layer Perceptron (MLP) : Positional Encoding된 특징 벡터를 입력으로 받아 해당 위치에서 바라 본 Color와 Density를 출력하는 네트워크입니다. MLP는 여러 개의 Fully Connected Layer로 구성되며, 각 레이어에서는 ReLU 활성화 함수와 Skip Connection을 사용합니다. MLP의 마지막 레이어에서는 Color는 RGB 값으로, Density는 스칼라 값으로 출력됩니다.
Classical Volume Rendering : MLP에서 출력된 Color와 Density를 이용하여 합성 이미지를 생성하는 과정입니다. 이때, 카메라에서부터 장면까지의 광선을 따라서 여러 개의 샘플 포인트를 추출하고, 각 포인트에서의 Color와 Density를 MLP에 입력하여 계산합니다. 그리고, 샘플 포인트들의 Color와 Density를 가중 평균하여 최종적인 픽셀 값을 결정합니다. 이때, 가중치는 광선의 방향과 거리에 따라 달라지며, Density가 높을수록 더 많은 빛을 흡수하고 반사한다고 가정합니다.

NeRF 논문은 NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis라는 제목으로 2020년 ECCV에 발표된 논문입니다. 이 논문은 몇 개의 2D 이미지만으로도 이미지 내 물체를 3D로 렌더링하는 새로운 방법을 제안하였습니다.

NeRF 논문의 주요 설계 구조는 다음과 같습니다:

Positional Encoding: NeRF는 3D 공간의 좌표와 방향을 입력으로 받아서, 각 위치에서의 색상과 밀도를 출력하는 신경망입니다. 하지만 신경망은 고차원의 주기적인 함수를 잘 근사하지 못하기 때문에, 입력을 그대로 사용하면 고해상도의 장면을 표현하기 어렵습니다. 따라서 NeRF는 입력을 Positional Encoding이라는 방법으로 변환하여 사용합니다. Positional Encoding은 각 차원의 값을 사인과 코사인 함수에 넣어서 여러 개의 주파수를 가진 값들로 확장하는 과정입니다. 이렇게 하면 신경망이 공간적인 변화에 더 잘 반응할 수 있습니다.

Multi-Layer Perceptron (MLP): NeRF는 Positional Encoding된 좌표와 방향을 입력으로 받아서, Multi-Layer Perceptron (MLP)라고 부르는 완전 연결 신경망에 통과시킵니다. MLP는 여러 개의 은닉층과 활성화 함수로 구성되어 있으며, 각 층에서는 선형 변환과 비선형 변환을 수행합니다. MLP의 마지막 층에서는 각 위치에서의 색상과 밀도를 출력합니다. 색상은 RGB 값으로 표현되며, 밀도는 투명도와 반대되는 개념으로 표현됩니다.

Volume Rendering: NeRF는 MLP를 통해 얻은 색상과 밀도를 이용하여, 장면을 합성하는 과정을 Volume Rendering이라고 부릅니다. Volume Rendering은 카메라와 장면 사이에 가상의 광선을 생성하고, 광선 위의 여러 점들에서 MLP를 평가하여 색상과 밀도를 얻습니다. 그리고 이들을 합성하여 광선이 카메라에 도달할 때의 최종 색상을 계산합니다. Volume Rendering은 광선 위의 점들이 서로 영향을 주고 받는 것을 모델링할 수 있기 때문에, 복잡한 광학적 현상을 재현할 수 있습니다.

NeRF 논문의 학습 원리는 다음과 같습니다:

NeRF는 주어진 2D 이미지들로부터 3D 장면을 학습하는 것이 목적입니다. 따라서 학습 데이터는 2D 이미지와 해당 이미지가 찍힌 카메라의 위치와 방향으로 구성됩니다.
NeRF는 학습 데이터의 2D 이미지와 동일한 위치와 방향에서 광선을 생성하고, Volume Rendering을 통해 재현한 이미지를 생성합니다. 그리고 이 재현한 이미지와 학습 데이터의 2D 이미지와의 차이를 측정하여, 손실 함수를 정의합니다.
NeRF는 손실 함수를 최소화하는 방향으로 MLP의 가중치를 업데이트합니다. 이렇게 하면 MLP는 주어진 위치와 방향에서 실제 장면과 유사한 색상과 밀도를 출력하도록 학습됩니다.
NeRF는 학습 데이터에 없는 새로운 위치와 방향에서도 장면을 합성할 수 있습니다. 이는 MLP가 장면의 연속적인 표현을 학습하기 때문입니다.

위와 같은 알고리즘을 적용하면, NeRF는 적은 수의 2D 이미지만으로도 3D 장면을 재구성하고, 다양한 시점에서의 합성 이미지를 생성할 수 있습니다

 

저희 기업과 함께하시면 NeRF 모델을 활용하여 2D 이미지로부터 3D Scene 을 재구성하고, 다양한 응용 분야에 적용할 수 있습니다. 저희 기업의 NeRF 모델 핵심기술에 대해 더 알고 싶으시다면, 아래의 연락처로 자세히 문의해 주세요.

 

제가 운영하는  일인기업  딥 네트워크  기술총괄  장석원

기업블로그  :    https://videocodec.tistory.com/     

제 기업블로그 사이트도 자세히 살펴봐 주시구요 ....

이메일   :   sayhi7@daum.net

HP : 010-3350 6509