NNE 디노이저(NNE Denoiser) 는 NNE 런타임을 통해 커스텀 신경망 디노이저를 임포트하고 실행할 수 있는 패스 트레이서 디노이저입니다. 모델은 일반 UNNEModelData 에셋으로 임포트되고 노이즈 제거 추론은 선택한 런타임의 기능에 따라 CPU나 GPU, RDG에서 실행될 수 있습니다.
이 플러그인은 커스텀 모델 대신 사용할 수 있는, 각각 알파가 포함되거나 포함되지 않은 빠르고 균형 잡힌 고퀄리티의 다양한 Intel Open Image Denoiser 버전과 함께 제공됩니다.
프리셋 변경하기
NNEDenoiser 플러그인 세팅을 통해 사용자는 스페이셜 노이즈 제거를 위한 디노이저 에셋을 선택할 수 있으며, CPU, GPU 또는 RDG에서 실행할지, 어떤 런타임을 사용할지 선택할 수 있습니다. 패스 트레이서가 이러한 세팅에서 정의한 신경망을 사용하게 하려면, r.PathTracing.Denoiser.Name 을 NNEDenoiser 로 설정해야 합니다.
디노이저 에셋
모델은 해당 입력 및 출력 매핑과 함께 데이터 에셋 안에 설명되어 있습니다. 데이터 에셋을 변경하면 노이즈 제거에 사용되는 모델이 변경됩니다.
드롭다운에 Intel Open Image Denoiser에 대한 에셋이 표시되지 않으면 세팅 탐색(Browse Settings)(톱니바퀴 아이콘) 내에서 엔진 콘텐츠 표시(Show Engine Content) 및 플러그인 콘텐츠 표시(Show Plugin Content) 에 대한 체크박스가 모두 체크되어 있는지 확인합니다.
런타임 타입
이 드롭다운은 노이즈 제거가 수행되는 위치를 정의합니다. 선택한 런타임과 이를 현재 플랫폼에서 사용할 수 있는지 여부에 따라 작동하는 옵션이 달라집니다. 유효한 환경설정에 대해서는 개별 런타임의 기능을 참조해 주세요.
CPU
노이즈가 있는 결과를 CPU에 복사하고 추론을 실행한 다음, 결과를 다시 GPU에 업로드합니다. 디바이스 사본이 2개라 노이즈 제거 속도가 느려질 수 있습니다.
GPU
노이즈가 있는 결과를 CPU에 복사하여 런타임으로 전달하고, 추론을 위해 GPU로 복사한 후 다시 반환하는 과정을 거쳐 마지막으로 다시 GPU에 복사합니다.
디바이스 사본이 4개이므로 모델을 실행할 수 있는 다른 런타임이 없거나 CPU에서 모델을 실행하는 것이 더 느린 경우가 아니라면 이 세팅은 사용하지 않는 것을 권장합니다.
RDG
노이즈가 있는 이미지를 CPU에 복사하지 않고 디바이스에서 노이즈를 제거하기 때문에 가장 효과적인 세팅입니다. 해당 런타임을 사용할 수 있는 경우 권장되는 세팅입니다.
런타임 이름 오버라이드
사용되는 NNE 런타임을 오버라이드하는 데 사용할 수 있는 필드입니다. 여기서 사용되는 이름에 대해서는 개별 런타임을 참조해 주세요. 런타임이 포함된 플러그인을 수동으로 활성화해야 작동한다는 점도 유의해 주세요. 또한, 선택한 런타임은 런타임 타입(Runtime Type) 과 호환되어야 하며 선택한 모델을 실행할 수 있어야 합니다.
커스텀 신경망 디노이저
커스텀 신경망을 디노이저로 사용하려면, 신경망 모델과 입력 및 출력 매핑 정의, 그리고 NNE 디노이저 에셋이 필요합니다.
모델
신경망은 콘텐츠 에디터에 신경망 파일을 드래그 앤 드롭하여 간단하게 추가할 수 있으며, 그러면 UNNEModelData 에셋이 생성됩니다. 런타임에 따라 다른 파일 포맷을 지원한다는 점에 유의해 주세요. 해당 포맷을 지원하는 런타임이 활성화되어 있어야 해당 신경망을 임포트할 수 있습니다.
입력 및 출력 매핑
신경망에는 여러 개의 입력 및 출력 텐서가 있을 수 있고, 각 텐서에는 여러 개의 채널이 있을 수 있습니다. 컬러, 노멀, 알베도 등, 패스 트레이서에서 제공한 데이터를 신경망의 입력 텐서 및 채널에 매핑하려면 매핑 파일을 정의해야 합니다.
새 매핑을 생성하는 방법은 다음과 같습니다.
- 에디터의 콘텐츠 창을 우클릭하고 기타(Miscellaneous) 메뉴에서 데이터 테이블(Data Table) 을 선택합니다.
- 대화상자가 열리면 NNEDenoiserInputMappingData 를 검색하여 선택합니다.
- 신경망의 각 입력 텐서의 채널마다 각각 새 줄을 추가합니다.
마찬가지 방식으로 출력 매핑을 정의하기 위한 또 다른 에셋을 생성할 수 있습니다.
| 프로퍼티 | 설명 |
|---|---|
| 행 이름 선택 박스(Row Name Selection Box) | 모델 입력 채널을 설명하기 위해 임의의 이름을 선택할 수 있습니다. 모델의 실제 입력 이름과는 관련이 없어도 됩니다. |
| 리소스(Resource) | 데이터가 매핑되는 패스 트레이서 리소스를 나타냅니다. |
| 프레임 인덱스(Frame Index) | 패스 트레이서 데이터가 매핑되는 프레임을 정의하는 인덱스입니다. 인덱스가 0이면 현재 프레임에서 데이터를 가져오고, 음수이면 이전 프레임의 데이터를 매핑하고, 양수이면 이후 프레임에 액세스합니다. |
| 텐서 인덱스(Tensor Index) | 모델의 입력 텐서에 대한 인덱스입니다. 인덱스 i는 모델의 i번째 입력 텐서에 데이터를 매핑합니다. |
| 텐서 채널(Tensor Channel) | 모델의 입력 텐서 채널에 대한 인덱스입니다. 인덱스 i는 모델 입력 텐서의 i번째 채널에 데이터를 매핑합니다. |
| 리소스 채널(Resource Channel) | 패스 트레이서 리소스의 채널에 대한 인덱스입니다. 인덱스 i는 패스 트레이서 리소스의 i번째 채널에 데이터를 매핑합니다. |
에셋
NNE 디노이저(NNEDenoiser) 에셋은 모델, 입력 및 출력 매핑, 그리고 타일링 환경설정을 정의하며, 플러그인 세팅에서 패스 트레이서가 사용할 모델을 선택하는 데 사용됩니다. 새 커스텀 에셋을 생성하려면, 에디터의 콘텐츠 창을 우클릭하고 기타(Miscellaneous)를 선택한 후 데이터 에셋(Data Asset)을 선택합니다. 대화상자가 열리면 NNE 디노이저(NNEDenoiser) 에셋을 검색하여 선택합니다. 임포트한 모델을 선택하고 해당 드롭다운에서 자신이 정의한 매핑을 선택합니다.
그런 다음, 모델 특성에 따라 타일링 환경설정을 정의합니다.
| 프로퍼티 | 설명 |
|---|---|
| 크기 정렬(Size Alignment) | 이 값으로 나누어 떨어지도록 타일 크기가 선택됩니다. 일부 런타임의 몇몇 연산자는 특정 정렬 기준이 충족되는 경우 더 빠르게 실행될 수 있습니다. 모델에서 다이내믹 크기를 지원하는 경우에만 효과가 있습니다. |
| 오버랩(Overlap) | 모델의 수용 필드를 고려하기 위해 인접 타일을 오버랩해야 하는 정도를 정의합니다. 출력 픽셀에 기여하는 입력 픽셀의 반경으로 정의됩니다. |
| 최대 크기(Max Size) | 각 타일의 최대 크기입니다. 모델에서 다이내믹 크기를 지원하는 경우에만 효과가 있습니다. |
| 최소 크기(Min Size) | 각 타일의 최소 크기입니다. 모델에서 다이내믹 크기를 지원하는 경우에만 효과가 있습니다. |