私的AI研究会 > PyTorch1

PyTorch ではじめる AI開発

pytorch_book_s.jpg
pytorch_logo.png

 PyTorch を使って実用的な AI開発に挑戦する。坂本俊之著「PyTorch ではじめる AI開発」(C&R研究所 刊) を元に進める。

※ 最終更新:2022/06/17 

予備知識

「PyTorch ではじめる AI開発」では開発環境として Anaconda プラットホームを利用するので予備知識を学習しておく。
 Python によるソフトウェア開発では、これまでのPython利用者たちが作り上げた、膨大なソフトウェア資産とそれらを利用できる環境が2種類用意されている。

The Python Package Index(PyPI)

Anaconda

CondaとPIP

conda の主要コマンド

コマンド内容
conda listインストール済みパッケージ名とバージョン一覧          
conda search <パッケージ名>公式リポジトリ内のパッケージを検索
conda install <パッケージ名>公式リポジトリ内のパッケージをインストール
conda search -c conda-forge <パッケージ名>conda-forge 内のパッケージを検索
conda install -c conda-forge <パッケージ名>conda-forge 内のパッケージをインストール
conda search -c <チャネル名> <パッケージ名>チャネル内のパッケージを検索
conda install -c <チャネル名> <パッケージ名>チャネル内のパッケージをインストール
conda install <パッケージ名>==<バージョン番号>バージョンを指定してインストール
conda update <パッケージ名>パッケージのアップデート
conda uninstall <パッケージ名>インストール済みパッケージのアンインストール

pip/pip3 の主要コマンド

コマンド内容
pip show <パッケージ名>インストール済みのパッケージの詳細確認
pip listインストール済みパッケージ名とバージョン一覧
pip list –outdate最新版になっていないもののみ表示
pip freezeインストール済みパッケージ名とバージョン一覧(パッケージ管理除外)
pip install <パッケージ名>パッケージのインストール
pip install <パッケージ名> <パッケージ名> ...複数パッケージのインストール
pip install <パッケージ名>==<バージョン>バージョンを指定してインストール
(バージョンを省略するとインストール可能なバージョン表示)
pip install git+<repository-url>GitHab からインストール
pip install -U <パッケージ名>パッケージのアップデート
pip install –update <パッケージ名>パッケージのアップデート
pip uninstall <パッケージ名>インストール済みパッケージのアンインストール
pip uninstall <パッケージ名> <パッケージ名> ... 複数インストール済みパッケージのアンインストール
pip download <パッケージ名>最新ファイルをDL(インストールはしない)
pip -Vpipのバージョン情報を表示
pip helppipの主要コマンドとオプション一覧を表示
pip <コマンド> -hpip コマンドの内容とオプションを表示

仮想環境 conda と venv

Python 環境の違い

anaconda-logo.png
pypi_logo.png
PythonAnaconda
パッケージインストールpipconda
依存関係のチェックなしあり
パッケージのダウンロード元PyPlanacondaリポジトリ
仮想環境venvconda

conda 仮想環境関連コマンド

コマンド内容
conda update -n base condaconda のアップデート
conda create -n py37 python=3.7仮想環境の作成(python versionを指定)
conda env create -f env1.yaml仮想環境の作成(yamlファイルの読み込み)
conda info -e作成した仮想環境一覧の表示
conda activate py37作成した仮想環境に切り替える
conda deactivate現在の仮想環境から出る
conda env remove -n py37仮想環境の削除
conda remove —-allすべての仮想環境の削除
conda env export > env1.yaml現在の仮想環境の設定ファイルを書き出す
conda list現在の仮想環境のパッケージを確認

ターミナルを再起動すると (base) 仮想環境に

 

conda環境の保存と再構築

 やり方についての情報が錯綜しているので現状の環境移行が確認できた方法を残しておく。
 混乱の原因はパッケージ管理の「conda」と「pip」にあるようだ。現状では「conda」だけで賄うことができないので今の環境で移行できる方法を探った。

Conda 環境のアップデート

Linux OS での環境構築

Python 環境の構築

  1. Ubuntu に Anaconda をインストールする。

    オフィシャルページ Anaconda Individual Edition を開く。
    ●「Get Additional Installers」を押す。

    ●「64Bit(x86) Installer」を押す。
  2. ダウンロードファイルを実行する。
    $ cd ダウンロード
    $ ls
    Anaconda3-2021.05-Linux-x86_64.sh
    $ bash Anaconda3-2021.05-Linux-x86_64.sh
  3. 手順に従いインストールを進める。
    ▼ $ bash Anaconda3-2021.05-Linux-x86_64.sh

Anaconda の設定

  1. Anaconda の設定ファイルを読み込む。
    $ cd ~/
    $ ls
    __share                         ダウンロード  ドキュメント  ミュージック
    anaconda3                       テンプレート  ビデオ        公開
    vbox_anaconda_install_log1.txt  デスクトップ  ピクチャ
    $ source ~/anaconda3/etc/profile.d/conda.sh
    $ printenv CONDA_EXE
    /home/mizutu/anaconda3/bin/conda
  2. Anaconda の設定 Python 3.7 の仮想環境を作成する。
    ▼ $ conda create -n py37 python=3.7

  3. 仮想環境を起動する。
    $ conda activate py37
    (py37) $
     ※ 現在の仮想環境から出る場合
    (py37) $ conda deactivate
    $

  4. Anaconda をインストール後ターミナルを起動すると (base) 仮想環境となる。仮想環境を起動しない設定にする。
    $ conda config --set auto_activate_base False

  5. Anaconda 仮想環境起動スクリプトを作成する。
    起動時に環境を切り替える場合は別途スクリプトを作成するのでこの項は無視する。
    $ vi anaconda3_setup.sh 
    
    #!/bin/sh
    
    echo [anaconda3_setup.sh] Anaconda3 environment initialized
    source ~/anaconda3/etc/profile.d/conda.sh
    
    echo "conda activate py37"
    echo " Exit >> 'conda deactivate'"
    conda activate py37
  6. 自動起動にする場合は「~/.bashrc」ファイルの最後に「source anaconda3_setup.sh」と追記しておく。

Pytorch のインストール

  1. 仮想環境に PyTorch をインストールする。

    ● オフィシャルサイト PyTorch FROM RESEARCH TO PRODUCTION からインストールのためのコマンドを取得する。
    (py37) $ pip3 install torch==1.8.1+cpu torchvision==0.9.1+cpu torchaudio===0.8.1 -f https://download.pytorch.org/whl/lts/1.8/torch_lts.html
    Looking in links: https://download.pytorch.org/whl/lts/1.8/torch_lts.html
    Collecting torch==1.8.1+cpu
      Downloading https://download.pytorch.org/whl/lts/1.8/cpu/torch-1.8.1%2Bcpu-cp37-cp37m-linux_x86_64.whl (169.1 MB)
         |████████████████████████████████| 169.1 MB 26 kB/s 
    Collecting torchvision==0.9.1+cpu
      Downloading https://download.pytorch.org/whl/lts/1.8/cpu/torchvision-0.9.1%2Bcpu-cp37-cp37m-linux_x86_64.whl (13.3 MB)
         |████████████████████████████████| 13.3 MB 1.6 MB/s 
    Collecting torchaudio===0.8.1
      Downloading torchaudio-0.8.1-cp37-cp37m-manylinux1_x86_64.whl (1.9 MB)
         |████████████████████████████████| 1.9 MB 3.4 MB/s 
    Collecting numpy
      Downloading numpy-1.21.1-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (15.7 MB)
         |████████████████████████████████| 15.7 MB 47.6 MB/s 
    Collecting typing-extensions
      Downloading typing_extensions-3.10.0.0-py3-none-any.whl (26 kB)
    Collecting pillow>=4.1.1
      Downloading Pillow-8.3.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl (3.0 MB)
         |████████████████████████████████| 3.0 MB 29.4 MB/s 
    Installing collected packages: typing-extensions, numpy, torch, pillow, torchvision, torchaudio
    Successfully installed numpy-1.21.1 pillow-8.3.1 torch-1.8.1+cpu torchaudio-0.8.1 torchvision-0.9.1+cpu typing-extensions-3.10.0.0

必要なパッケージのインストール

  1. 「gtk2」「ffmpeg」「gtk2-feature」「opencv」パッケージのインストール
    ▼ (py37) $ sudo apt install libgtk2.0-dev
    ▼ (py37) $ sudo apt install pkg-config
    ▼ (py37) $ conda install .....
  2. 「conda install」コマンドでパッケージをインストール
    ▼ (py37) $ conda install pandas
    ▼ (py37) $ conda install tqdm
    ▼ (py37) $ conda install matplotlib
    ▼ (py37) $ conda install PyYAML
  3. 「pip install」コマンドでパッケージをインストール
    ▼ (py37) $ pip3 install scikit-learn
    ▼ (py37) $ pip3 install pycocotools
    ▼ (py37) $ pip3 install facenet-pytorch

環境の確認

  1. 「Pytorch」のインストール確認
    (py37) $ python -c "import torch"
  2. 「PyTorch」で GPU 使用できるかの確認
    (py37) $ $ python -c 'import torch;print(torch.zeros(1).cuda())'
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/home/mizutu/anaconda3/envs/gforce/lib/python3.7/site-packages/torch/cuda/__init__.py", line 172, in _lazy_init
        torch._C._cuda_init()
    RuntimeError: No CUDA GPUs are available
    ※ 今回ドライバをインストールしていないのでエラーとなる
  3. 「tkinter」パッケージのインストール確認
    (py37) $ python -c 'import tkinter'
  4. 「ffmpeg」コマンドの確認
    ▼ (py37) $ ffmpeg -h

カメラデバイス

  1. 対応アプリケーションのインストール
    ▼ (py37) $ sudo apt install guvcview
  2. ユーティリティ・ツールのインストール
    ▼ (py37) $ sudo apt install v4l-utils

書籍サンプルファイルのダウンロード

  1. 書籍オフィシャルサイト にアクセスしてサンプルデータをダウンロードする。(pytc/sk353)
  2. プロジェクトのディレクトリ「~/workspace_py37」を作成し、解凍して配置する。
    (py37) $ conda info -e
    # conda environments:
    #
    base                     /home/mizutu/anaconda3
    py37                  *  /home/mizutu/anaconda3/envs/py37
    
    (py37) $ mkdir workspace_py37
    (py37) $ ls
    __share                         workspace_py37  ドキュメント  公開
    anaconda3                       ダウンロード    ビデオ
    anaconda3_setup.sh              テンプレート    ピクチャ
    vbox_anaconda_install_log1.txt  デスクトップ    ミュージック
    (py37) $ cd workspace_py37/
    (py37) $ tree
    .
    └── sample
        ├── chapt01
        │   ├── chapt01_1.py
        │   └── output.avi
        ├── chapt02
        │   ├── chapt02-sample.mp4
        │   ├── chapt02_1.py
        │   └── chapt02_2.py
        ├── chapt03
        │   ├── chapt03-sample.mp4
        │   ├── chapt03-validate.mp4
        │   ├── chapt03_1.py
        │   └── chapt03_2.py
        ├── chapt04
        │   ├── chapt04_1.py
        │   ├── chapt04_2.py
        │   ├── testdata
        │   │   ├── images
        │   │   │   └── forest-path
        │   │   │       ├── 1.jpg
        │   │   │       ├── 2.jpg
        │   │   │       └── 3.jpg
        │   │   └── labels
        │   │       └── forest-path
        │   │           ├── 1.txt
        │   │           ├── 2.txt
        │   │           └── 3.txt
        │   └── testdata.yaml
        ├── chapt05
        │   ├── chapt05-background.mp4
        │   ├── chapt05-person.mp4
        │   ├── chapt05_1.py
        │   ├── chapt05_2.py
        │   └── chapt05_3.py
        ├── chapt06
        │   ├── chapt06_1.py
        │   ├── chapt06_2.py
        │   └── chapt06_3.py
        ├── chapt07
        │   ├── chapt07_1.py
        │   └── chapt07_2.py
        ├── chapt08
        │   ├── chapt08_1.py
        │   ├── misc
        │   │   └── nihongo.py
        │   └── nets
        │       └── classifiernet.py
        └── chapt09
            ├── chapt09.ipynb
            ├── chapt09_1.py
            ├── misc
            │   ├── detection.py
            │   ├── nihongo.py
            │   ├── nms.py
            │   └── structure.py
            ├── nets
            │   ├── block.py
            │   └── detectionnet.py
            └── yokogaki.png
    
    19 directories, 40 files
  3. サンプルファイル「chapt01_1.py」を実行してみる。
    (py37) $ cd ~/workspace_py37/sample/chapt01
    (py37) $ python3 chapt01_1.py

Anaconda 環境設定の確認方法

  1. パスが通っていることの確認
    (py37) $ which python
    (py37) $ which ipython
    (py37) $ which pip
    (py37) $ which conda
  2. python のバージョンの確認
    (py37) $ python --version
  3. conda の動作確認
    ※ エラーメッセージが出なければ OK.
    (py37) $ conda info
  4. python3, pip3 は,システムのものよりも,Anaconda のものが優先して使用されることの確認
    (py37) $ which python3
    (py37) $ which pip3
  5. Anaconda の Python の numpy を確認
    ※ バージョン番号が表示されれば OK.
    (py37) $ python -c "import numpy; print( numpy.__version__ )"
▼ 環境構築後の確認結果
 

更新履歴

参考資料