2020年01月03日

独自データセットでInpaintNetの実装方法

このエントリーをはてなブックマークに追加
follow us in feedly



InpaintNet githubでのコードは、 前は DatasetManger が、何か使えなかったのですが、
それが使えるようになっていたので、その方法です。
 pip install -e .
でインストール出来ると言う事になっていますが、
最初試した時は
ERROR: Files/directories not found in /InpaintNet/
のエラーでした。




色々環境設定を試してみて、一応、このぐらいやればインストール出来るようになりました。
しかし、コードの方が少し変更されてるかもしれないので、何か変わってるかもしれません。
wget https://repo.anaconda.com/archive/Anaconda3-2019.10-Linux-x86_64.sh
chmod 755 Anaconda3-2019.10-Linux-x86_64.sh
./Anaconda3-2019.10-Linux-x86_64.sh

bin/conda env create -f environment.yml
pip install tensorboard_logger

wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz
tar xvf Python-3.7.0.tar.xz
cd Python-3.7.0
./configure
sudo make altinstall
pip install tensorboard tb-nightly

pip install -e .

................
Obtaining file:///InpaintNet
Installing collected packages: Python
Running setup.py develop for Python
Successfully installed Python


File "InpaintNet/utils/trainer.py", line 10, in
from tensorboard_logger import configure, log_value
ModuleNotFoundError: No module named 'tensorboard_logger'
tensorboard_loggerをインストールします
File "/usr/local/lib/python3.6/dist-packages/tensorboard/compat/__init__.py", line 28, in
import tensorboard.lazy as _lazy
AttributeError: module 'tensorboard' has no attribute 'lazy'
tensorboard と tb-nightly をインストールするみたいです



................

train_inpaintnet.py
を実行すれば、勝手に学習データはダウンロードします。
DatasetManager/the_session/raw_data/raw_dataset_full.txt

これは、中身を見れば分かりますが、ABC記譜で書かれています。
ここのデータセットで独自データを用意すれば良いです。

学習データは、 InpaintNet/DatasetManager/the_session/raw_data に在る事になっています。
データセットのリストファイルが FolkItGen([(4,4)])valid_filepaths.txt と言う、記述に問題がありそうな名前になっています。



実行時にも、コードに起因するエラーが色々生じました。
 File "train_inpaintnet.py", line 5, in
  from DatasetManager.metadata import FermataMetadata, \
ImportError: cannot import name 'FermataMetadata'
metadata.py に書かれていません。
他のバージョンの FermataMetadata 等を追記しましたが...
この対応で良いのでしょうか?
 File "InpaintNet/MeasureVAE/vae_tester.py", line 10, in
  from DatasetManager.data_helpers import START_SYMBOL, END_SYMBOL
ModuleNotFoundError: No module named 'DatasetManager.data_helpers'
これは helpers の間違いだと思います。
 File "InpaintNet/DatasetManager/metadata.py", line 163, in evaluate
  ts = leadsheet.parts[0].recurse().getElementsByClass(meter.TimeSignature)
NameError: name 'meter' is not defined
 File "InpaintNet/MeasureVAE/vae_tester.py", line 10, in
  from DatasetManager.data_helpers import START_SYMBOL, END_SYMBOL
ModuleNotFoundError: No module named 'DatasetManager.data_helpers'





...RNNベースのアーキテクチャを学習して、 VAEベースのディープ生成モデルの潜在空間を学習し、 実行はそれらのモデルに依存します...
と言う事なので、以下のような順番で学習すると思います。

python train_arnn_reg.py
python train_arnn_baseline.py
両方必要です。
python train_measure_vae.py
python train_inpaintnet.py

python test_reconstruction.py


train_arnn では、 runs以下に  AnticipationRNNReg(FolkDatasetNBars(16['\''beatmarker'\'', '\''tick'\''])25000_train,10,2,256,256,256,2,0.2,0.2,True,) の様な名前のモデルが出力されます。これは、多分ディレクトリだと思います。
train_measure_vae では、 MeasureVAE(FolkDatasetNBars(16['\''beatmarker'\'', '\''tick'\''])25000_train,Encoder(10,,2,512,0.5,True,256,),HierarchicalDecoder10,,2,512,0.5,),)
train_inpaintnet は、 LatentRNN(FolkDatasetNBars(16['\''beatmarker'\'', '\''tick'\''])25000_train,2,512,0.5,)auto_reg,tf など



それらのモデルが全て無ければtest_reconstructionは実行出来ないと思います。
test_reconstruction.py の実行時にも、

  arnn_model = ConstraintModelGaussianReg(
NameError: name 'ConstraintModelGaussianReg' is not defined

  arnn_baseline_model = AnticipationRNNBaseline(
NameError: name 'AnticipationRNNBaseline' is not defined

  loss = Trainer.mean_crossentropy_loss_alt(
NameError: name 'Trainer' is not defined
のようなエラーが出力されましたが...

LatentRNN(FolkDatasetNBars(16['beatmarker', 'tick'])25000_train,2,512,0.5,),no_tf"
こういう感じの、非常に問題あるファイル名を指定して来ます。


................
モデルから音楽を生成するには、
script_gen_same_context.py , script_gen_diff_models.py などを使います。
saved_midi 以下にmidi形式でファイルを出力します。


tak_tak0 at 11:03コメント(0)サーバ   この記事をクリップ!

コメントする

名前:
URL:
  情報を記憶: 評価:  顔   星
 
 
 
サイト内検索
にほんブログ村 科学ブログへ
にほんブログ村
adsense
Archives
amazon
blogchart
QRコード
QRコード
Recent Comments
「最新トラックバック」は提供を終了しました。