본 프로젝트는 생성형 AI 모델을 사용하여 2D 질감 이미지로부터 3D 표면의 굴곡 정보를 담은 하이트맵(Heightmap)을 생성하는 연구입니다. Gelsight 센서로 촬영된 시각적 질감 정보를 입력받아, 해당 표면의 미세한 지오메트리를 추론하여 현실적인 촉각 피드백의 기반 데이터를 생성하는 것을 목표로 합니다.
이 프로젝트는 경희대학교 컴퓨터공학과에서 진행된 연구 “생성형 AI를 이용한 시각적 질감 기반 하이트맵 생성 연구”의 공식 구현체입니다.
디지털 콘텐츠의 몰입감을 높이는 데 현실적인 촉각 피드백은 매우 중요합니다. 본 연구에서는 U-Net 기반의 이미지 대 이미지(Image-to-Image) 변환 모델을 사용하여, Stanford-Gelsight 데이터셋의 RGB 질감 이미지로부터 직접 하이트맵을 생성하는 파이프라인을 구축했습니다.
핵심 기술: 사전 학습된 EfficientNet-B7을 인코더로 사용하는 U-Net 아키텍처와 L1 및 LPIPS 손실 함수 조합을 통해 모델을 학습합니다.
본 모델은 segmentation_models_pytorch 라이브러리를 기반으로 한 U-Net 아키텍처를 사용합니다.
EfficientNet-B7 모델을 사용하여 입력 이미지로부터 풍부한 시각적 특징을 추출합니다.본 프로젝트는 Conda 가상환경에서의 실행을 권장합니다.
git clone https://github.com/your-username/your-repository-name.git
cd your-repository-name
Conda 가상환경 생성 및 활성화
environment.yml 파일을 사용하여 필요한 모든 패키지를 설치합니다.
conda env create -f environment.yml
conda activate JP_3rdTry
python=3.12pytorch & torchvisionopencv-pythonscikit-imagesegmentation-models-pytorchlpips프로젝트의 주요 기능은 다음 스크립트를 통해 실행할 수 있습니다.
IOFiles/Input과 유사한 구조로配置합니다.dataset.py의 TextureHeightmapDataset 클래스는 이미지 로딩, 전처리(마커 제거, 정규화 등) 파이프라인을 포함하고 있습니다.run_train.sh 셸 스크립트를 실행하거나, re_train.py를 직접 실행하여 모델 학습을 시작할 수 있습니다.
# 스크립트 사용 (권장)
bash re_run_train.sh
# 직접 실행
python re_train.py --encoder_name efficientnet-b7 --batch_size 32 --lr 1e-4 --lambda_lpips 0.5 --epochs 1000
training_outputs 디렉토리에 저장됩니다.re_evaluate.py 스크립트를 사용하여 학습된 모델의 성능을 정량적으로 평가합니다.
python re_evaluate.py --model_path /path/to/your/model.pth --data_root /path/to/test/dataset
re_predict.py 스크립트를 사용하여 새로운 질감 이미지로부터 하이트맵을 생성합니다.
python re_predict.py --model_path /path/to/your/model.pth --input_image /path/to/input/image.png --output_path /path/to/output/heightmap.png
0.9958이라는 매우 높은 점수로 원본의 통계적 질감 특성을 성공적으로 재현했습니다.0.0164로 매우 낮아, 정밀한 경계선이나 날카로운 엣지를 생성하는 데 명확한 한계를 보입니다.0.5745, 지각적 유사도(LPIPS)는 0.4727로 보통 수준의 성능을 보였습니다.결론적으로, 제안된 모델은 질감의 전반적인 느낌은 잘 재현하지만, 디테일과 정확성 측면에서는 개선의 여지가 있습니다.
전반적인 구조와 질감의 통계적 특성을 잘 재현한 경우입니다. (예: PlasticMesh2', 'ArtificialGrass)
| 입력 (Input) | 원본 (Ground Truth) | 생성 (Generated) |
|---|---|---|
|
||
|
||
세밀한 패턴이나 날카로운 경계선을 재현하는 데 어려움을 겪는 경우입니다. (예: PaintedWood)
| 입력 (Input) | 원본 (Ground Truth) | 생성 (Generated) |
|---|---|---|
|
||