**참고**
#wifi가 끊기는 상황에서 코드 진행중일때 계속 진행하는 법
#tmux 설치 방법
: Conda environment 에서 conda install tmux
#tmux사용하는 방법
: 터미널 ( tmux 밖에서) tmux new -s [세션이름]
그리고 티먹스에서 나오고 싶으면 ctrl + b 누르고 1초 뒤에 d
#다시 해당 세션에 접속하는 법
tmux attach -t [아까 만든 세션이름]
#아까 만든 세션 이름을 잊은 경우
tmux ls 를 tmux 밖에서 친다 -> 세션 리스트 확인
Requirements
# root사용자 경고 무시: 어차피 패키지 충돌 일어날 이유가 없기에 그냥 ㄱㄱ
pip install --root-user-action=ignore
#conda 초기화
/root/miniconda3/bin/conda init
#bashrc 다시 로드
source ~/.bashrc
#conda가상환경 활성화
conda activate base
#CUDA(GPU 병렬처리) 12.4을 사용할 수 있도록 PyTorch 설치
conda install pytorch torchvision torchaudio cudatoolkit=12.1 -c pytorch
#필수 라이브러리 설치 (jukemirlib, pytorch3d, accelerate)
#jukemirlib 설치 : Jukebox와 같은 음악 모델과의 통합을 지원하고, 음악 관련 특징 추출이나 데이터 전처리작업에 도움을 준다.
pip install git+https://github.com/rodrigo-castellon/jukemirlib.git
# pytorch3d 설치
pip install torch torchvision
pip install "git+https://github.com/facebookresearch/pytorch3d.git"
#accelerate 설치 : Hugging Face에서 제공하는 툴로, 모델 학습 속도를 높이고 여러 장치(GPU, TPU 등)에서 분산 학습을 쉽게 설정할 수 있게 돕는 라이브러리
pip install accelerate
accelerate config
#wine설치: Linux, macOS 같은 비윈도우 운영체제에서 Windows 프로그램을 실행할 수 있게 해주는 호환성 계층
Getting started
#Jupyter Notebook을 통해 demo.ipynb파일을 실행
jupyter notebook demo.ipynb
#커스텀 음악을 사용하여 모델을 테스트(예: custom_music 폴더에 있는 음악 파일로 테스트)
python test.py --music_dir custom_music/
#평가 및 출력 시각화 (Optional)
# 물리적 발 접촉(PFC) 점수 평가
python eval/eval_pfc.py
# 3D 렌더링을 위해 FBX 파일로 변환
python SMPL-to-FBX/Convert.py --input_dir SMPL-to-FBX/smpl_samples/ --output_dir SMPL-to-FBX/fbx_out
demo.ipynb 내부 test.py 파일 분석
from data.audio_extraction.baseline_features import extract as baseline_extract
from data.audio_extraction.jukebox_features import extract as juke_extract
(1) baseline_extract함수: 리듬/템포
baseline_extract는 data/audio_extraction/baseline_features.py파일에 정의된 extract함수를 불러온다. 일반적으로 baseline feature는 음향 신호의 기본적인 특성, 예를 들어 스펙트로그램, 음조, 리듬 등의 특징을 포함할 수 있다.
(2) juke_extract함수: 감정/스타일 등 고차원적 정보
juke_extract는 data/audio_extraction/jukebox_features.py파일에 정의된 extract함수를 불러온다.
Jukebox는 음악 생성 AI로, 복잡한 음악 신호를 매우 정밀하게 모델링하고 분석할 수 있는 특징을 추출하는 것으로 알려져 있다. juke_extract는 일반적인 오디오 특징보다 더 심화된, 예를 들어 음악적 구성, 장르, 악기 등의 고차원적인 정보까지 포함할 수 있다.
1. 음악 파일에서 특징 추출
feature_func = juke_extract if opt.feature_type == "jukebox" else baseline_extract
코드에서 feature_func는 baseline_extract 또는 juke_extract를 사용해 오디오 특징을 추출한다.
2. 음악 슬라이스
print(f"Slicing {wav_file}")
slice_audio(wav_file, 2.5, 5.0, dirname)
음악 파일을 2.5초 단위로 슬라이스하는 부분이다. slice_audio 함수를 호출하여 오디오 파일을 나눈다.
3. 모델을 사용해 춤 생성
model = EDGE(opt.feature_type, opt.checkpoint)
model.eval()
추출된 오디오 특징을 EDGE 모델에 입력하여 춤을 생성하는 부분이다. 모델은 opt.checkpoint에 저장된 가중치를 사용해 춤을 생성한다.
4. 옵션에 따라 처리 방식 선택
if opt.use_cached_features:
print("Using precomputed features")
else:
print("Computing features for input music")
코드에서는 opt.use_cached_features, opt.cache_features, opt.save_motions 등의 옵션을 통해 처리 방식을 선택한다. 이를 통해 캐시된 특징을 사용할지, 새로운 특징을 계산할지, 모션 파일을 저장할지 등을 결정한다.
5. 결과 저장
model.render_sample(
data_tuple, "test", opt.render_dir, render_count=-1, fk_out=fk_out, render=not opt.no_render
)
생성된 춤 동작을 지정된 디렉토리에 저장하고, 필요하면 모션 파일로도 저장하는 부분이다. render_sample 함수가 그 역할을 한다.
'paper' 카테고리의 다른 글
| AI Choreographer: Music Conditioned 3D Dance Generation with AIST++ (4) | 2024.09.16 |
|---|---|
| Music-Driven Group Choreography (0) | 2024.09.15 |
| EDGE (1) | 2024.09.15 |