最近又做了第n次moonlight的环境配置
moonlight是相对成熟的omr系统
这里记录环境配置的基本步骤
(总的来说主要是用conda新建符合程序要求的python版本
然后装好bazel和protobuf以及其他需要的包,设置好相关的PATH
最后bazel build的过程有点慢,其他也没什么坑了)
基本环境:virtualbox ubuntu20(ubuntu18同样适用)
以下是步骤:
1、更换apt源
https://blog.csdn.net/u013862444/article/details/98619724
2、安装miniconda3
//下载安装程序
wget -c https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
//赋权、运行
chmod 777 Miniconda3-latest-Linux-x86_64.sh
sh Miniconda3-latest-Linux-x86_64.sh
//添加PATH
vim ~/.bashrc
export PATH=/home/user/miniconda3/bin:$PATH
source ~/.bashrc
3、创建python环境
conda create -n [env_name] python=3.x #安装指定版本python
//一般选择py3.7版本即可
conda activate [env_name] # 切换python版本
4、更新pip源
https://mirrors.tuna.tsinghua.edu.cn/help/pypi/
//推荐清华源更新步骤
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pip -U #更新pip版本
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple #更新pip源
5、安装所需包
pip install -r requirements.txt
6、测试tensorflow是否安装成功
python
>> import tensorflow as tf
7、安装protobuf
pip install protobuf==3.6.1
8、安装bazel
参考自官网
https://docs.bazel.build/versions/0.20.0/install-ubuntu.html
//安装所需包
sudo apt-get install pkg-config zip g++ zlib1g-dev unzip python3
//手动下载bazel安装程序
https://github.com/bazelbuild/bazel/releases/tag/0.20.0
选择 bazel-<version>-installer-linux-x86_64.sh
//也可以直接用下面的下载链接:
https://github.com/bazelbuild/bazel/releases/download/0.20.0/bazel-0.20.0-installer-linux-x86_64.sh
//赋权、运行
chmod +x bazel-<version>-installer-linux-x86_64.sh
./bazel-<version>-installer-linux-x86_64.sh --user
//添加PATH
export PATH="$PATH:$HOME/bin"
9、运行moonlight
//requirements.txt同目录下执行以下命令
bazel build moonlight:omr #一般情况下这个会报错
bazel build moonlight:omr --incompatible_remove_native_http_archive=false #如果上一条报错,执行本条,否则跳过
// 这个过程会需要等很久,视网络状况而定,自测1h左右
// bazel build完毕后可以测试程序的基本功能,如下:
// Prints a Score message.
bazel-bin/moonlight/omr moonlight/testdata/IMSLP00747-000.png
// Scans several pages and prints a NoteSequence message.
bazel-bin/moonlight/omr --output_type=NoteSequence IMSLP00001-*.png
// 识别一张乐谱并生成xml文件(可以用MuseScore播放),注意执行路径
bazel-bin/moonlight/omr --output_type=MusicXML --output=[xml_file] [png_file]