超解像,画像の修復(alexjc/neural-enhance,Python 3.7,Theano,Lasagne, scipy 1.1.0, pillow を使用)(Ubuntu 上)

概要

alexjc/neural-enhance は、ディープラーニングを用いて画像を超解像・修復するソフトウェアである。このリポジトリは2021年1月にアーカイブされ、開発が終了している(新規のissueやpull requestは受け付けていない)。動作には Python 3.7、Theano、Lasagne、scipy 1.1.0、pillow を用いる。手順の要点: Ubuntu を利用し、Python 3.7 の隔離された環境(Ubuntu では ~/theanopy37)を作成して、その中に Theano, Lasagne, scipy 1.1.0, pillow をインストールする。

目次

第1章 前準備

Python 3.7 のインストール

Ubuntu での pyenv を用いた Python 3.7 のインストールについては,このページの下で説明している.

Git のインストール

端末で,次のコマンドを実行する.

# パッケージリストの情報を更新
sudo apt update
sudo apt -y install git

NVIDIA ドライバ,NVIDIA CUDA ツールキット 11.7, NVIDIA cuDNN v8.4.1 のインストール(Ubuntu 上)

Ubuntu での NVIDIA ドライバ,NVIDIA CUDA ツールキット 11.7, NVIDIA cuDNN v8.4.1 のインストール: 別ページ »で説明

Python の隔離された環境の新規作成

Ubuntu では,運用を簡単にする(バージョン指定のもの間違ってアップデートしないなど)のために,venv を用いて,Python の仮想環境を作ることにする.

  1. 今から作成するPython の仮想環境の名前と、Pythonのバージョンを決めておく
    前もって Python バージョン 3.7 をインストールしておくこと
  2. Python 3.7 の準備

    Ubuntu の場合

    Ubuntu を使用する場合は,次のように操作する.

    次の手順により,システム Python とは別に,pyenv を用いて Python 3.7 をインストールし,そこに venv をインストールする.

    1. pyenv のインストールと設定

      図などの入った詳しい説明は別ページ

      # パッケージリストの情報を更新
      sudo apt update
      sudo apt -y install --no-install-recommends make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
      cd /tmp
      curl https://pyenv.run | bash
      echo 'export PYENV_ROOT="${HOME}/.pyenv"' >> ~/.bashrc
      echo 'if [ -d "${PYENV_ROOT}" ]; then' >> ~/.bashrc
      echo '    export PATH=${PYENV_ROOT}/bin:$PATH' >> ~/.bashrc
      echo '    eval "$(pyenv init -)"' >> ~/.bashrc
      echo '    eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
      echo 'fi' >> ~/.bashrc
      exec $SHELL -l
      
    2. 次のコマンドにより,pyenv を用いて Python 3.7.7 をインストール
      env PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install 3.7.8
      
  3. Ubuntu では端末を開く.
  4. venv を用いて,Python 3.7 が動くPython の仮想環境を作る.

    Ubuntu の場合

    Ubuntu を使用する場合は,次のように操作する.

    下の例では,Python の仮想環境のためのディレクトリを ~/theanopy37に作成している.

    pyenv shell 3.7.8
    python -m venv ~/theanopy37
    

第2章 このページで説明のために使用する画像

画像ファイル fruits.jpg, home.jpg のダウンロード

画像ファイル fruits.jpg, home.jpg のダウンロードは, Windows で管理者権限コマンドプロンプトを起動する (手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。

次のコマンドを実行する.

mkdir c:\image
cd c:\image
curl -L https://github.com/opencv/opencv/blob/master/samples/data/fruits.jpg?raw=true -o fruits.jpg
curl -L https://github.com/opencv/opencv/blob/master/samples/data/home.jpg?raw=true -o home.jpg

上のコマンドが実行できないときは, 別ページを参考にダウンロードを行う.

https://github.com/opencv/opencv/tree/master/samples/data で公開されている fruits.jpg, home.jpg を使用する。

第3章 画像の拡張(alexjc/neural-enhance,Python 3.7,Theano,Lasagne, scipy 1.1.0, pillow を使用)(Ubuntu 上)

  1. Ubuntu では端末を開く.
  2. venvPython の仮想環境有効化する

    Ubuntu の場合

    Ubuntu を使用する場合は,次のように操作する.

    source ~/theanopy37/bin/activate
    
  3. alexjc/neural-enhance のダウンロード

    Ubuntu での手順を下に示す.このリポジトリは開発が終了しアーカイブされているため、内容はクローン時点のまま更新されない。

    cd ~/theanopy37
    rm -rf neural-enhance
    
    git clone https://github.com/alexjc/neural-enhance
    cd neural-enhance
    
  4. 前提ソフトウェアのインストール
    # パッケージリストの情報を更新
    sudo apt update
    sudo apt -y install libblas-dev libopenblas-dev libatlas-base-dev
    sudo apt -y install gcc g++ gfortran build-essential git wget libopenblas-dev python3-dev python3-pip python3-nose python3-numpy python3-scipy
    
  5. Theano,Lasagne のインストール
    python -m pip install -U --no-user https://github.com/Theano/Theano/archive/master.zip
    python -m pip install -U --no-user https://github.com/Lasagne/Lasagne/archive/master.zip
    
  6. 前提パッケージのインストール
    python -m pip install --no-user scipy==1.1.0 pillow
    python -m pip install --no-user -r requirements.txt
    
  7. .so ファイルの確認
    ls -al ~/.pyenv/version/3.7.7/lib
    
  8. ne1x-photo-repair-0.3.pkl.bz2 ne2x-photo-default-0.3.pkl.bz2 の入手

    画面の指示により, https://github.com/alexjc/neural-enhance/releases を開く

    ファイルは,~/theanopy37/neural-enhanceに置く.

  9. Python プログラムの実行

    まず,ズームレベル2に設定して実行する。

    fruits.jpg」のところは,画像ファイル名を指定すること

    python enhance.py --type=photo --zoom=2 fruits.jpg
    

    元画像は次の通り

    出来た画像は次の通り

    次に,画像修復を実行する。

    fruits.jpg」のところは,画像ファイル名を指定すること

    python enhance.py --type=photo --model=repair --zoom=1 fruits.jpg
    

    元画像は次の通り

    出来た画像は次の通り