3D 형상 완성을 위한 생성 모델 문서를 참조하세요.
저장소에는 3D 모양 완성을 위한 생성 모델의 교육 및 샘플링을 위한 코드가 포함되어 있습니다. 이 저장소에 구현된 모델은 DiffComplete: Diffusion-based Generative 3D Shape Completion 논문에서 제안된 확산 모델을 기반으로 합니다.
크레딧 :
향상된 확산에서 가져온 기본.
PatchComplete에서 가져온 평가 부분입니다.
사전 훈련된 모델은 이 링크에서 다운로드할 수 있습니다.
virtualenv -p python3.8 venv
source venv/bin/activate
export PYTHONPATH= " ${PYTHONPATH} : ${pwd} "
pip install -r requirements.txt
참고: 코드를 실행하려면 CUDA가 필요합니다(평가 부분 때문에).
모양 완성 스크립트를 위한 데이터세트를 생성하려면 dataset_hole.py
사용됩니다. 논문에서와 동일한 모델을 사용하려면 --filter_path
옵션을 사용하여 주어진 데이터세트에 사용할 모델 목록이 포함된 파일의 경로를 지정하세요. 파일은 ./datasets/txt 디렉터리에 있습니다.
사용 가능한 모든 인수는 python ./dataset_hole.py --help
실행하여 찾을 수 있습니다.
데이터 소스:
모양 완성 데이터세트를 생성하려면 다음 명령어를 실행하세요.
cd dataset_processing
오브저버스 가구
python ./dataset_hole.py --output datasets/objaverse-furniture --tag_names chair lamp bathtub chandelier bench bed table sofa toilet
물체 차량
python ./dataset_hole.py --output datasets/objaverse-vehicles --category_names cars-vehicles --tag_names car truck bus airplane
오브저버스 동물
python ./dataset_hole.py --output datasets/objaverse-animals --category_names animals-pets --tag_names cat dog
셰이프넷
python ./dataset_hole.py --dataset shapenet --source SHAPENET_DIR_PATH --output datasets/shapenet
모델넷40
python ./dataset_hole.py --dataset modelnet --source MODELNET40_DIR_PATH --output datasets/modelnet40
훈련에 사용되는 초해상도 데이터세트는 초해상도 모델의 입력으로 사용되는 예측된 모양을 얻기 위해 훈련 및 검증 데이터세트에 대해 모양 완성 모델을 실행하여 생성되었습니다.
모델을 훈련시키기 위해 train.py
스크립트가 사용됩니다. 사용 가능한 모든 인수는 python ./train.py --help
실행하여 찾을 수 있습니다.
BaseComplete 모델을 훈련하려면 다음 명령을 실행하십시오.
python ./scripts/train.py --batch_size 32
--data_path " ./datasets/objaverse-furniture/32/ "
--train_file_path " ../datasets/objaverse-furniture/train.txt "
--val_file_path " ../datasets/objaverse-furniture/val.txt "
--dataset_name complete
ROI 마스크를 사용하여 훈련하려면 --use_roi = True
옵션을 추가하세요.
저해상도 처리 모델을 훈련하려면 다음 명령을 실행하십시오.
python ./scripts/train.py --batch_size 32
... # data options
--in_scale_factor 1
--dataset_name complete_32_64
superes 모델을 훈련하려면 다음 명령을 실행하십시오.
python ./scripts/train.py --batch_size 32
--data_path " ./datasets/objaverse-furniture-sr/ "
--val_data_path " ./datasets/objaverse-furniture-sr-val/ "
--super_res True
--dataset_name sr
메쉬 모델에서 하나의 모양을 샘플링하려면 다음 명령을 실행하십시오.
python ./scripts/sample.py --model_path MODEL_PATH
--sample_path SAMPLE_PATH # Condition
--input_mesh True
--condition_size 32 # Expected condition size
--output_size 32 # Expected output size
또는 .npy 파일을 입력으로 사용:
python ./scripts/sample.py --model_path MODEL_PATH
--sample_path SAMPLE_PATH # Condition
--input_mesh False
--output_size 32 # Expected output size
전체 데이터세트를 평가하려면 다음 명령어를 실행하세요.
python ./scripts/evaluate_dataset.py
--data_path " ./datasets/objaverse-furniture/32 "
--file_path " ./datasets/objaverse-furniture/test.txt "
--model_path MODEL_PATH
TEST 데이터 세트에 대한 평가:
미터법 | 베이스완료 | BaseComplete + ROI 마스크 |
---|---|---|
CD | 3.53 | 2.86 |
아이유 | 81.62 | 84.77 |
L1 | 0.0264 | 0.0187 |
참고: CD 및 IoU는 100으로 조정됩니다. CD 및 L1에는 값이 낮을수록 좋고 IoU에는 값이 높을수록 좋습니다.
상태 | 예측 | 지상 진실 |
---|---|---|