sigraph2024

sigraph 2024 중 deeplearning 의 기반에 흥미로은 논문들만 정리하였다.
직접적인 graphic, simulation , motion control 등 제외, 3d shape 을 직접 generate 하는 모델도 제외

Title Description
Cross-image Attention for Zero-shot Appearance Transfer diffusion query 에 style transfer 할 target 으로 쿼리하도록함 그와중에 부족한부부분 보정하는 알고리즘(cross domain style transfer)
A Construct-optimize Approach to Sparse View Synthesis Without Camera Pose sparse view 로부터 coarse solution 을 만들었다함 depth map 이용
Portrait3D: Text-Guided High-Quality 3D Portrait Generation 3D diffusion baseline SDS에서 GAN 을 샘플링하여 학습시키고, 퀄리티를 올리기위해서 다시 diffusion model 에 넣어 랜더러를 optimize
LightFormer: Light-Oriented Global Neural Rendering in Dynamic Scene the proposed approach focuses on the neural representation of light sources in the scene rather than the entire scene, leading to the overall better generalizability. The neural prediction is achieved by leveraging the virtual point lights and shading clues for each light, 두르뭉실하게 light 받는게아니라 light 소스로부터 representation 을 받는가보다, 논문비공
NeLT : NeLT: Object-oriented Neural Light Transfer(http://www.cad.zju.edu.cn/home/rwang/#22interiornet) dynamic light transportation between an object and the environment. It enables interactive rendering with global illumination for dynamic scenes and achieves comparable quality 라고는 하는데, object 중심으로 light를 transfer 하는 모델 , 논문공개가안되있음, https://github.com/google/neural-light-transport?tab=readme-ov-file < 비슷한논문?
NeRF as a Non-Distant Environment Emitter in Physics-based Inverse Rendering inverse rendering 에서는 lighting 을 분리하는 모델 이 존재하는데, distant 하지 않은 light 에대해서 inaccurate 가 발생한다. 그것을 줄이기위해서 Non-Distant Environment Emitter 을 설계함, inverse rendering 배경지식이 없어서 조금햇갈림
3D Gaussian Splatting with Deferred Reflection 정반사등을 표현하기위에 가우시안파라미터에 scala param 추가
Lite2Relight: 3D-aware Single Image Portrait Relighting EXR map 과 face 를 합성하는 네트워크, input image 를 eg3d 형태로 변환한뒤 exr 과 합성하는 네트워크를 fast 하게 만든 것이 특징, 코드 곧 공개
eyeir rgbx 의 eye 버전, downstream task 에 eye-makeup, specularity removal ,lighting 등을 지원한다
DiLightNet: Fine-grained Lighting Control for Diffusion-based Image Generation provisional image 을 만들고 target lighing 을 이용해 foreground 를 relighting relighihging 하는 모델을 controlnet 으로 학습시킨듯, encode the effect of the target lighting on each pixel’s outgoing radiance using radiance hints. 논문은 무성의함ㅋㅋ lighting contronet 이 prmpt 로 재질도 컨트롤 하는듯
IntrinsicDiffusion: Joint Intrinsic Layers From Latent Diffusion Model 유사논문 :Intrinsic Image Diffusion for Indoor Single-view Material Estimation? original → albedo+matrial → lighting optimization → render , lighting 모델은 https://arxiv.org/pdf/2211.03017 사용함, 실제로 돌려봄, https://clo.atlassian.net/wiki/spaces/RTKR/pages/2817654813/intrinsic+image+diffusion+model, Auto Encoder 결과보니 원래 이미지 recon 에서도 많이 blur 해짐,
Transparent Image Layer Diffusion using Latent Transparency back+front 를 분리하는 layer diffusion의 후속논문(?), regulating the added transparency as a latent offset “latent transparency” 를 학습했다는듯, “latent transparency” 는 alpha channel 값을 latent 의 메니폴드로 encode 한다( 기존학습모델에 같이 사용가능)
RGB↔X: Image Decomposition and Synthesis Using Material- and Lighting-aware Diffusion Models intrinsic estimation, condi generation(T2i), object insertion(inpainting) 내용은 직관적이고 이상적으로 좋은데, 논문 하나에서 하려는게 많은듯? 소스 공개 아직 안되고있음
Intrinsic Image Decomposition via Ordinal Shading inverse rendering 하는 과정에서 ordinal shading 을 사전에 구해서 constraint 로사용, reverse rendering 퀄리티를 올렸다!
Matting by Generation 일단 matting 을 diffusion model 로 한듯 ㄷㄷ, 그리고 candidate 를 만들고 HR matting 을 tileing LR 이 가이드를줘서 하여 진행함
ST-4DGS: Spatial-Temporally Consistent 4D Gaussian Splatting for Efficient Dynamic Scene Rendering gaussian splatting 을 이용해서 active 한 motion 도 랜더링 하도록 ~~GS for video generation, 유사논문은 4D Gaussian Splatting for Real-Time Dynamic Scene Rendering
2d Gaussian Splatting mesh로 만드는것이 어려운 과정인데 2d gs 가 detail 을 살림
https://junchenliu77.github.io/Rip-NeRF/ anti aliasaing nerf
Binary Opacity Grids: Capturing Fine Geometric Detail for Mesh-Based View Synthesis density field를 을 수정하여 surface(SDF?)으로 수렴하도록 장려하면서 얇은 구조를 재구성하는 능력을 손상시키지 않습,how? opacity grids 를 사용하여!
Roughness-aware Tensorial Representation rough ness 를 고려해서 SDF 를 구성하여 recon 하는방법
Self-Supervised High Dynamic Range Imaging with Multi-Exposure Images in Dynamic Scenes ghosting artifacts : HDR 합성에서 장시간 노출이미지 (Multi-Exposure Images)촬영을 하는데 물체가 틀어짐에따라 발견되는 현상을 줄이기위해 recon 하는 네트워클르 만든듯?
Versatile Vision Foundation Model for Image and Video Colorization coloring 모델을 latent diffusion model 로 해결했는데, 자기네들꺼가 기존 controlnet 보다 간단하고 우세하다?
https://analogist2d.github.io/ in-context learning? 이라정의하고 이것을 잘하기위해 SAC, CAM 등 small module 을 정의함, diffusion 모델안에서 겪자를나누고 조절한것이 특징
https://kfirgoldberg.github.io/ConceptLab/ concept 을 personalization 하다는 관점에서 dreabooth 의 역방향인듯?, embroidery 등을 컨셉으로활용할수도?
Learning Images Across Scales Using Adversarial Training 기본컨셉은 Multi scale, GAN 인데, 디테일을 살리기위해서 한노력들
Filter-Guided Diffusion for Controllable Image Generation diffusion model i2i 원래 이미지의 디테일을살리기위해서 filter 를 사용? 논문 공개 x
LOOSECONTROL: Lifting ControlNet for Generalized Depth Conditioning depth controlnet 을 조금더 control 할수 있또록 개선한듯,
Separate-and-Enhance: Compositional Finetuning for Text2Image Diffusion Models 2개이상의 foreground 를 t2i 모델로 합성할때, 컨셉을 분리했다가 합치는 등의 방식으로 자연스러운 이미지를 만들어낾?
https://realfill.github.io/ 같은 장소에 있는 사람이지만 여러장의 picture 를 가지고, inpainting 을 하는데, 나머지 사진들을 사용하여 기존의 컨셉을 잘 오려붙임
video  
https://xiaoyushi97.github.io/Motion-I2V/ image2video model 에 motion brush 를 학습한듯
https://i2v-adapter.github.io/ i2v model 인데, pose controlnet 과 궁합이좋은듯? 테스트
https://direct-a-video.github.io/ camera , movement 를 정의하고 control 가능한 영상이 만들어진다"?
https://wzhouxiff.github.io/projects/MotionCtrl/ 바로위에거랑 비슷함
https://www.youtube.com/watch?v=VGxt5XghRdw 얼굴을 모션에 따라서 video 모델을 잘 변형시킴

메인 플로우는 여기를 따라한다.https://github.com/facebookresearch/pytorch3d/blob/main/INSTALL.md

참고하여  pytorch3d 개발환경 설치

 

1. cuda(권장) : 11.7 설치
2. 11.7 에 맞는 cudnn lib 설치

3. pytorch 설치 (2.0.1) with cuda 11.7 torch 버전은 크게 영향은 없는듯

4. cub 환경 설치 
cuda\inculde\thrust\cuda\version.h 

에 맨 윗출을 추가해놓는다. (#define THRUST_IGNORE_CUB_VERSION_CHECK true)

 

cuda 11.7 의 경우 cub 11.5 를 포함시켜놓았는데, 이 cub 사용시 pytorch3d 빌드시 문제가된다.

#define THRUST_IGNORE_CUB_VERSION_CHECK true
#ifndef THRUST_IGNORE_CUB_VERSION_CHECK

#include <thrust/version.h>
#if THRUST_VERSION != CUB_VERSION
#error The version of CUB in your include path is not compatible with this release of Thrust. CUB is now included in the CUDA Toolkit, so you no longer need to use your own checkout of CUB. Define THRUST_IGNORE_CUB_VERSION_CHECK to ignore this.
#endif

// Make sure the CUB namespace has been declared using the modern macros:
CUB_NAMESPACE_BEGIN
CUB_NAMESPACE_END

 

5.내장된 cub 11.5 를 11.7로 바꾸는 작업을 할것이다. 

방법은 2가지가 있는데, cuda 설치경로에 cub 11.7 을 덮어씌우는 방법과 cub_home 환경변수 등록후

directory 로 빌드시 포함시키는방법

cub 는 아래서 다운받는다.

https://github.com/NVIDIA/cub/releases

 

Releases · NVIDIA/cub

Cooperative primitives for CUDA C++. Contribute to NVIDIA/cub development by creating an account on GitHub.

github.com

 

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\include\cub

로들어가 기존 cub 파일들 빽업시켜놓고 11.7로 바꿔치기 하였다.

 

6.

git clone https://github.com/facebookresearch/pytorch3d.git
cd pytorch3d && pip install -e .

를 이용하여 build 성공!

 

conda 를 이용해서 개발환경 잘 저장해놓자!

 

7. pytorch 3d 를 이용하여 간단한 gif 생성

Wandb 에서 sweep 을 이용하여 autoML 을 제공한다.

 

해당기능을 위해 소스에서는 function 을 호출하고,

sweep_id 

function : wandb 로 실행될 function 객체

count : 반복할 횟수

 sweep_id = wandb.sweep(sweep_config, project=project_name)
 wandb.agent(sweep_id, function=lambda: main(model_name, dataset_name, window=window), count=x_num)

 

config.json 은 아래와 같은 형태로 제공가

{
    "method": "bayes",
    "metric": {"name": "max_auc", "goal": "maximize"},
    "parameters": {
        "learning_rate": {
            "distribution": "uniform",
            "min": 1e-4,
            "max": 1e-3
        },
        "batch_size": {
            "values": [32]
        },
        "num_epochs": {
            "values": [50]
        },
        "optimizer": {
            "values": ["adam"]
        },
        "hidden_size": {
            "values": [64]
        },
        "emb_size": {
            "values": [64]
        },
        "layer_num": {
            "values": [3]
        },
        "dropout": {
            "values" : [0.2]
        },
        "seq_len":{
            "distribution": "q_uniform",
            "min": 50,
            "max": 100
        }
    },
    "early_terminate": {
        "type" : "hyperband",
        "min_iter": 5
    }
}

 

function 안에는 init 과 finish 를 구현하고 사이에 동기화 를 할 수 있다.

wandb.init(project=project_name, entity='id')
learning_rate = wandb.config.learning_rate
    batch_size = wandb.config.batch_size
    num_epochs = wandb.config.num_epochs
    optimizer = wandb.config.optimizer
    logging_epochs = wandb.config.logging_epochs

모델 train

모델 test

 

wandb.finish()

간략하게 이런식으로 구현하면된다.

+ Recent posts