MapleStory Finger Point

미니 프로젝트/SCOGEN

[2] 악보 생성 구조 및 실행 방법

吳鍾振 2024. 8. 20. 22:41

기존 생성형 AI를 이용하여 악보 생성 프로젝트에 진척 사항이 별로 없기 때문에 우선적으로 LSTM를 이용한 악보 생성 프로젝트를 구상해 보았음.

 

  1. 음악 데이터 준비:
    • MIDI 파일로 된 클래식 음악 로드 -> load_midi_files
    • 이 음악 파일들에서 음표 정보 추출 -> extract_notes
  1. 데이터 가공:
    • 추출한 음표들을 컴퓨터가 이해할 수 있는 숫자 형태로 변환
    • 음악의 패턴을 학습하기 위해 음표들을 일정 길이의 시퀀스로 나눔
    • └─ preprocess_data
  1. 인공지능 모델 작성:
    • LSTM 신경망을 사용해 모델 작성
    • 이 모델은 음악의 패턴을 학습하는 데 특화
    • └─ create_model: LSTM(Long Short-Term Memory), 장단기 메모리
      긴 시퀀스의 데이터에서 장기적인 패턴을 기억하고 활용 가능하며, 음악 생성 부문에서는 음표 간의 관계 파악, 음악 스타일 유지, 음표 예측 등 변화 패턴을 인식
  1. 모델 학습:
    • 준비한 데이터로 모델 학습
    • 학습 과정에서 모델은 음악의 구조와 패턴을 이해
      └─ train_model
  2. 음악 생성:
    • 학습된 모델에 짧은 음악 시퀀스를 제공
    • 모델은 시퀀스 바탕으로 새로운 음표들을 예측하며 멜로디 작성
  1. 결과 확인:
    • 생성된 멜로디의 길이를 확인
    • 학습 과정의 손실(loss) 그래프를 그려 모델의 학습 상태를 시각화

 

초기 : 그래프 시작 부분에서 loss가 매우 높은 값(약 10)에서 급격히 떨어지는데, 이는 모델이 초기에 빠르게 학습하고 있음.

안정기 : 약 0에서 1000 Epoch까지 loss가 2.5 근처에서 안정적으로 유지되는 기간 동안 모델이 점진적으로 학습하고 있지만, 큰 개선은 없음.

점진적 감소: 1000 Epoch 부근에서 loss가 서서히 감소하기 시작. 이는 모델이 데이터의 더 미묘한 패턴을 학습하고 있음을 의미.

급격한 개선: 약 1300 Epoch에서 loss가 급격히 감소. 이는 모델이 중요한 패턴을 발견했거나 학습률 조정 등의 최적화가 효과를 발휘한 것일 수 있음.

최종 : 1500 Epoch 이후부터 그래프 끝까지 loss가 매우 낮은 수준에서 안정화됨. 이는 모델이 최적의 상태에 도달했음을 나타냄.

반응형