私的AI研究会 > ProjectEnv2

AI開発プロジェクト環境構築(Linux編)

 AI開発プロジェクト実行に必要な環境を新しく作成する手順(最新版)
 『PyTorch ではじめる AI開発』以降のページを実行するために新しく環境を作成する
 同時に「NVIDIA cuda GPU」を使用できる環境構築をする

▼ 目 次
※ 最終更新:2024/02/15 

anaconda のインストール

設定動作環境

 HP ENVY Desktop TE02-1097jp

 Intel® NUC BXNUC10I5FNH

anaconda のダウンロードとインストール

  1. オフィシャルサイト https://www.anaconda.com/products/distribution にアクセス

     ● 画面の「Download」ボタンを押してダウンロード

     ● ダウンロード・ファイル名(2023/12/09 現在)
      Anaconda3-2023.09-0-Linux-x86_64.sh

  2. ダウンロードファイル「Anaconda3-2023.09-0-Linux-x86_64.sh」を実行する
    $ cd ダウンロード
    $ ls
    Anaconda3-2023.09-0-Linux-x86_64.sh
    $ bash Anaconda3-2023.09-0-Linux-x86_64.sh
    
    Welcome to Anaconda3 2023.09-0
    
    In order to continue the installation process, please review the license
    agreement.
    Please, press ENTER to continue
    >>>             ← Enter入力
        :
    Do you accept the license terms? [yes|no]
    [no] >>> yes         ← yes入力
    
    Anaconda3 will now be installed into this location:
    /home/USER/anaconda3
    
      - Press ENTER to confirm the location
      - Press CTRL-C to abort the installation
      - Or specify a different location below
    
    [/home/USER/anaconda3] >>> ← Enter入力
        :
    You can undo this by running `conda init --reverse $SHELL`? [yes|no]
    [no] >>>           ← Enter入力
        :
    conda init
    
    Thank you for installing Anaconda3!

  3. インストールの確認
    $ source ~/anaconda3/etc/profile.d/conda.sh    ← conda 初期設定(ターミナル起動後一度だけ実行)
    $ conda -V                     ← conda バージョン表示
    conda 23.7.4
    $ conda info -e                  ← conda 仮想環境一覧表示
    # conda environments:
    #
    base                     /home/USER/anaconda3

Anaconda 仮想環境一覧

Anaconda 環境設定の確認方法

  1. 仮想環境にパスが通っていることの確認
    (***) $ which python
    (***) $ which pip
    (***) $ which conda
  2. python3, pip3 は,システムのものよりも,Anaconda のものが優先して使用されることの確認
    ※ 新しい版の anaconda では python, pip は python3, pip3 と同じ
    (***) $ which python3
    (***) $ which pip3
  3. python のバージョンの確認
    (***) $ python -V

ターミナル起動時に仮想環境を選択できるようにする

  1. 仮想環境の起動スクリプトを作成(仮想環境ごとに作る)
    ▼「anaconda_setup.sh」

  2. ターミナル起動スクリプトを作成
    ▼「env_select.sh」

  3. Anaconda 環境起動スクリプトに実行権限を付加する
    $ chmod u+x anaconda_setup.sh
    $ chmod u+x env_select.sh

  4. 「.bashrc」の最後に「source env_select.sh」の1行を追加する
        :
    source env_select.sh

プロジェクト環境設定1:PyTorch ではじめる AI開発 【仮想環境(py37)】

anaconda の環境設定(py37)

  1. Anaconda の設定 Python 3.7 の仮想環境を作成する
    ・conda 初期設定(実行していない場合)
    $ source ~/anaconda3/etc/profile.d/conda.sh
    ・仮想環境作成
    (base) $ conda create -n py37 python=3.7
    ・仮想環境の確認
    (py37) $ conda info -e                  ← conda 仮想環境一覧表示
    # conda environments:
    #
    base                     /home/USER/anaconda3
    py37                     /home/USER/anaconda3/py37
  2. 仮想環境を起動する
    (base) $ conda activate py37
    (py37) $
     ※ 現在の仮想環境から出る場合
    (py37) $ conda deactivate
    $
  3. 仮想環境の起動スクリプトを作成
    ▼「anaconda_setup_py37.sh」

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

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

    ● オフィシャルサイト PyTorch FROM RESEARCH TO PRODUCTION からインストールのためのコマンドを取得する
    (py37) $ pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu      ← CPUを指定
    ▼「pip install torch torchvision torchaudio ...」ログ

  2. パッケージのインストール
    (py37) $ sudo apt install libgtk2.0-dev
    ▼「sudo apt install libgtk2.0-dev」ログ
    (py37) $ sudo apt install pkg-config
    ▼「sudo apt install pkg-config」ログ

  3. 「conda install」コマンドでパッケージをインストール
    (py37) $ conda install --channel loopbio --channel conda-forge --channel pkgw-forge gtk2 ffmpeg gtk2-feature opencv
    ▼「conda install --channel loopbio ...」ログ
    (py37) $ conda install pandas
    ▼「conda install pandas」ログ
    (py37) $ conda install tqdm
    ▼「conda install tqdm」ログ
    (py37) $ conda install matplotlib
    ▼「conda install matplotlib」ログ
    (py37) $ conda install PyYAML
    ▼「conda install PyYAML」ログ

  4. 「pip install」コマンドでパッケージをインストール
    (py37) $ pip install scikit-learn
    ▼「pip install scikit-learn」ログ
    (py37) $ pip install pycocotools
    ▼「pip install pycocotools」ログ
    (py37) $ pip install facenet-pytorch
    ▼「pip 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/USER/anaconda3/envs/py37/lib/python3.7/site-packages/torch/cuda/__init__.py", line 221, in _lazy_init
        raise AssertionError("Torch not compiled with CUDA enabled")
    AssertionError: Torch not compiled with CUDA enabled
    ※ 今回ドライバをインストールしていないのでエラーとなる
  3. 「tkinter」パッケージのインストール確認
    (py37) $ python -c 'import tkinter'
  4. 「ffmpeg」コマンドの確認
    (py37) $ ffmpeg -h
    ▼「ffmpeg -h」ログ

書籍サンプルファイルのダウンロードとテスト

  1. 書籍オフィシャルサイト にアクセスしてサンプルデータをダウンロードする。(pytc/sk353)
  2. プロジェクトのディレクトリ「~/workspace_py37」を作成し、解凍して配置する。
    ▼サンプルデータの配置

  3. サンプルファイル「chapt01_1.py」を実行してみる。
    (py37) $ cd ~/workspace_py37/sample/chapt01
    (py37) $ python3 chapt01_1.py

python3.7 環境構築の確認

  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__ )"
    ▼ 環境構築後の確認結果

PyTorch ではじめる AI開発 【仮想環境(py37)】実行プロジェクト 環境は既に構築済み

  1. Chapter2: 定点カメラの映像を認識する
     OpenVINO™ を利用する(ONNXモデルコンバート検証)
  2. Chapter3: 教師データにない状況を異常検出
  3. Chapter4: 物体検出と学習済みモデル
  4. Chapter5: 動画の背景を入れ替える
  5. Chapter6: アジア人向けに強化された顔認証 (保留)
  6. Chapter7: 線画をイラストに変換する
  7. Chapter8: OCR における文字認識
  8. Chapter9: OCR を完成させる

プロジェクト環境設定2:文字認識「OCR」【仮想環境(py37x)】

プロジェクトパッケージの配置

  1. 「更新ファイル for Linux」「プロジェクト・パッケージ for Linux」をダウンロード
    update_20220119.tar.gz (352MB) <アップデートファイル>
    update_20220216.tar.gz (263MB) <アップデートファイル>
    update_20220315.tar.gz (274MB) <アップデートファイル>
    workspace_20210820.tar.gz (561MB)
    update_20220417.tar.gz (42.1MB) <プロジェクト一式>

  2. 「 Linux ホームディレクトリのファイル」をダウンロード
    Images_20210510.tar.gz (10MB)「~/Images」画像データ
    Videos_20210510.tar.gz (324MB)「~/Videos」動画データ
    model_sub_2021.4_20210818.tar.gz (944MB) 必要モデルのみのサブセット版

  3. 解凍して配置
    (1)「update_20220119.tar.gz」「update_20220216.tar.gz」「update_20220315.tar.gz」を解凍してできたディレクトリをホームディレクトリ直下に配置する
    (2)「workspace_20210820.tar.gz」」を解凍しできた 'workspace/image' ディレクトリを '~/workspace/' の下にコピーする
    (3)「update_20220417.tar.gz」を解凍してできたディレクトリをホームディレクトリ直下に配置する
    (4)「Images_20210510.tar.gz」「Videos_20210510.tar.gz」「model_sub_2021.4_20210818.tar.gz」を解凍してできたディレクトリをホームディレクトリ直下に配置する

  4. ホームディレクトリ内のプロジェクト関連ディレクトリ
    ~/                               ← ホームディレクトリ
    ├─Images                      ← アプリケーションで利用する画像ファイル
    ├─model                       ← OpenVINOアプリケーションで利用する学習済みモデル
    │  ├─intel
    │  │  └─FP32
    │  └─public
    │      └─FP32
    ├─Videos                      ← アプリケーションで利用する動画ファイル
    ├─workspace                   ← OpenVINO を移用したアプリケーション・プロジェクト
    │  ├─_apps                   ← anaconda (Windows/Linux) 環境に対応したアプリケーション ※
    │  └─image                   ← イメージ画像
    └─workspace_py37              ← anaconda 環境下のアプリケーション・プロジェクト
        ├─exercise                ← GUI 環境構築のテスト
        ├─pyocr                   ← OCR のテストアプリケーション ※
        ├─tryocr                  ← OCR アプリケーション作成プロジェクト(旧藩) ※
        │
        ├─formocr                 ← OCR アプリケーション作成プロジェクト ※
        └─environment_py37x.yaml  ← 仮想環境設定ファイル
    
     ※ anaconda (Windows/Linux) 環境に対応したプロジェクト

仮想環境(py37x) の作成

  1. Anaconda の設定ファイルを読み込む(一度も実行していない場合)
    $ source ~/anaconda3/etc/profile.d/conda.sh
  2. 環境設定ファイルから conda 仮想環境を構築する
    (base) $ cd ~/workspace_py37
    (base) $ conda env create -f environment_py37x.yml
    ▼「conda env create -f environment_py37x.yml」ログ
  3. 仮想環境を起動する。
    (base) $ conda activate py37x
    (py37x) $
  4. 仮想環境の確認
    (py37x) $ conda info -e
    # conda environments:
    #
    base                     /home/USER/anaconda3
    py37                     /home/USER/anaconda3/envs/py37
    py37x                 *  /home/USER/anaconda3/envs/py37x
  5. 仮想環境の起動スクリプトを作成
    ▼「anaconda_setup_py37x.sh」

『OCR アプリケーション基礎編:文字認識エンジン「Tesseract」』で作成したプログラムの実行

参照ページ → 「実用的な AI開発へ - 文字認識エンジン「Tesseract」
ソースコードの場所 (すべて Linux/Windows 環境に対応)

(py37x) $ cd ~/workspace_py37/pyocr
  1. 環境構築と対応言語の確認
    (py37x) $ python initialization.py
    Will use tool 'Tesseract (sh)'
    Available languages: eng, jpn, jpn_vert, osd, script/Japanese, script/Japanese_vert
    Will use lang 'eng'
  2. OCR としての簡単なテスト
    (py37x) $ python ocrtest.py
  3. Webカメラ入力の簡単なテスト「ocrtest_cam.py」
    (py37x) $ python ocrtest_cam.py
  4. Step 1 イメージ画像からテキストを認識する「ocrtest1.py」
    (py37x) $ python ocrtest1.py
  5. Step 2 イメージ画像から文字と文字の位置を認識する「ocrtest2.py」
    (py37x) $ python ocrtest2.py
  6. Step 3 イメージ画像から文章と文章の位置と信頼性スコアを取得する「ocrtest3.py」
    (py37x) $ python ocrtest3.py
  7. Step 4 文章と文章の位置と信頼性スコアを表示する「ocrtest4.py」
    (py37x) $ python ocrtest4.py
  8. OCR アプリケーション 試作版「tryocr.py」
    (py37x) $ python tryocr.py

『OCR アプリケーション基礎編:OCR アプリケーションを作る』で作成したプログラムの実行

参照ページ → 実用的な AI開発へ - OCR アプリケーションを作る
ソースコードの場所 (すべて Linux/Windows 環境に対応)

(py37x) $ cd ~/workspace_py37/tryocr
  1. Step 1 帳票画像の一部領域を指定して文字認識させる「tryocr_step1.py」
    (py37x) $ python tryocr_step1.py
  2. Step 2 指定した領域の切り出しをオリジナルの元画像で行うようにする「tryocr_step2.py」
    (py37x) $ python tryocr_step2.py
  3. Step 3 切り出した画像に前処理を加えて文字認識を行う「tryocr_step3.py」
    (py37x) $ python tryocr_step3.py
  4. 設定ファイルを作成・編集する「mylib_yaml.py」
    (py37x) $ python mylib_yaml.py
  5. Step 4 位置情報を入力・編集・ファイルするプログラムを考える 「tryocr_step4.py」
    (py37x) $ python tryocr_step4.py
  6. Step 5 配置情報ファイルを利用して伝票内を一括処理する 「tryocr_step5.py」
    (py37x) $ python tryocr_step5.py
  7. Step 6 Step 6 OCR から得られた各項目の妥当性の検査と CSV 出力 「tryocr_step6.py」
    (py37x) $ python tryocr_step6.py

『OCR アプリケーション実践編:帳票OCRプログラム「FormOCR」』で作成したプログラムの実行

参照ページ → 帳票OCRプログラム「FormOCR」:サンプルデータを使って練習
ソースコードの場所 (すべて Linux/Windows 環境に対応)

(py37x) $ cd ~/workspace_py37/formocr
  1. サンプルデータの水平傾き補正をする
    (py37x) $ python prepros.py -r 0
  2. サンプル帳票を自動識別処理する
    (py37x) $ python formocr.py
  3. サンプル帳票のフォーム編集プログラム
    (py37x) $ python formocr_edit.py

『AI・エッジコンピューティング』で作成したプログラムの実行

  1. 感情分析 / 年齢/性別分析 / 物体検出 / 人物追跡 / 顔追跡
    (py37x) $ python emotion2.py
    (py37x) $ python age_gender2.py
    (py37x) $ python object_detect_yolo3_2.py
    (py37x) $ python person-tracking2.py
    (py37x) $ python face-tracking2.py
  2. リアルタイム感情分析 / リアルタイム画像分類 / メガネ・帽子 バーチャル試着 / マスク着用の有無を調べる
    (py37x) $ python sentiment_analysis2.py
    (py37x) $ python image_classification.py
    (py37x) $ python virtual_fitting.py
    (py37x) $ python face_mask.py

プロジェクト環境設定3:顔認証「Face recognition」【仮想環境(py37y)】

顔認証/顔認識 (Face recognition)

  1. プロジェクトの準備
    update_20220617.tar.gz をダウンロード
    ・解凍してホームディレクトリ直下に配置する~
    ホームディレクトリ内のプロジェクト関連ディレクトリ
    ~/                               ← ホームディレクトリ
    ├─Images
    ├─model
    ├─Videos
    └─workspace_py37
        ├─mylib
        ├─openvino
        └─reception
  2. 環境設定ファイルから conda 仮想環境を構築する
    ・環境設定ファイル「environment_py37x.yml」のある場所に移動
    (base) $ cd ~/workspace_py37
    ・仮想環境「py37y」を作成
    (base) $ conda env create -f environment_py37y.yml
  3. 仮想環境(py37y)を有効にする
    (base) $ conda activate py37y
  4. 不足パッケージをインストール
    (py37y) $ pip install PyMuPDF
    ▼「$ pip install PyMuPDF」ログ

  5. 仮想環境の起動スクリプトを作成
    ▼「anaconda_setup_py37y.sh」

  6. InsightFace の検証
    ・ InsightFace のインストール
    (py37y) $ pip install insightface
    ・「opencv-python-headless」がインストールされるので削除
    (py37y) $ pip uninstall opencv-python-headless
    ・「ONNX Runtime」のGPU版をインストールする
    (py37y) $ pip uninstall onnxruntime
    (py37y) $ pip install onnxruntime-gpu
    ・ InsightFace のテスト
    (py37y) $ cd ~/workspace_py37/inface/
    (py37y) $ python face_test.py
     ※ CPU版だと次項のテストプログラムでエラーとなる
    (py37y) $ python face_test1.py 
    Traceback (most recent call last):
      File "face_test1.py", line 6, in <module>
        app = FaceAnalysis()
        :
      File "/home/mizutu/anaconda3/envs/py37y/lib/python3.7/site-packages/onnxruntime/capi/onnxruntime_inference_collection.py", line 54, in set_provider_options
        name, ", ".join(available_provider_names)))
    ValueError: Specified provider 'CUDAExecutionProvider' is unavailable. Available providers: 'CPUExecutionProvider'
    ・ InsightFace でカメラ入力をテスト
    (py37y) $ python face_test1.py

  7. Face Recognition の検証
    ・パッケージ(dlib/face_recognition) のインストール
    (py37y) $ conda install -c conda-forge dlib
    (py37y) $ conda install -c conda-forge face_recognition
    ・「face recognition」パッケージのテスト
    (py37y) $ python face_rec_test.py                                          
    [True] [0.30687301]
    (py37y) $ python face_rec_test1.py 
    image0:  face_img/okegawa_1.jpg
    image1:  face_test/okegawa_2.jpg
      [ True] [0.41664106]
    ・カメラによるリアルタイム顔判定
    (py37y) $ python face_rec_test2.py 
    3
    [0.55147394 0.78115689 0.70873044]
    [0.54753754 0.75612715 0.67837891]
        :

顔認証プログラムの開発 Step 1

  1. プロジェクトの準備
    update_20220719.zip をダウンロード

  2. カメラによるリアルタイム顔判定「face_rec1.py」
    (py37y) $ cd ~/workspace_py37/face_rec/
    (py37y) $ python face_rec1.py
    Starting..
     - Program title  : Face recognition (step1)  Ver 0.02
        :
    FPS average:      27.20
    Finished.

顔認証プログラムの開発 Step 2

  1. カメラで認識した顔画像を登録「face_rec2.py」
    (py37y) $ python face_rec2.py
    Starting..
     - Program title  : Face recognition (step2)  Ver 0.02
        :
    FPS average:      25.50
    Finished.

顔認証/顔認識パッケージ「Face recognition」のテスト

  1. [顔検出] 画像から顔を見つける「find_faces_in_picture.py」
    (py37y) $ cd ~/workspace_py37/face_rec_try/
    (py37y) $ python find_faces_in_picture.py
  2. [顔検出] 画像から顔を見つける(ディープラーニングを使用する)「find_faces_in_picture_cnn.py」
    (py37y) $ python find_faces_in_picture_cnn.py
  3. [顔認識] k近傍法で顔認識する「face_recognition_knn.py」
    (py37y) $ python face_recognition_knn.py
  4. [顔認識] 人物ごとに複数の画像をトレーニングし、SVM(サポートベクターマシン)を用いて顔認識する「face_recognition_svm.py」
    (py37y) $ python face_recognition_svm.py

顔認証プログラムの開発 Step 3

  1. 顔登録の方法と認識手法を改良する「face_rec3.py」
    (py37y) $ cd ~/workspace_py37/face_rec/
    (py37y) $ python face_rec3.py
  2. 静止画像を対象にした顔認識アプリケーション「face_rec_still.py」
    (py37y) $ python face_rec_still.py --tol 0.5

顔認証プログラムの開発 Step 4「顔認証の結果で『自動ドア』を制御する」

  1. 開発手順 / 事前準備
    update_20220820.tar.gz をダウンロード
    ・必要なパッケージの導入
    (py37y) $ conda install -c conda-forge readchar
    (py37y) $ conda install -c conda-forge pyserial
  2. USB 通信ポートの確認
    (py37y) $ ls -la /dev/ttyUSB0
    crw-rw-rw- 1 root dialout 188, 0  2月 14 09:21 /dev/ttyUSB0
  3. ドア制御付き顔認証プログラム「face_rec3d.py」の実行
    (py37y) $ python door_ctrl.py /dev/ttyUSB0
    '/dev/ttyUSB0' port ready.
    b'd'
    b'o'
    b'c'
    b'q'
    Program Finished.
    (py37y) $ python face_rec3d.py -p /dev/ttyUSB0
    Starting..
     - Program title  : Face recognition (step3)  Ver 0.02
        :
     - UART port name : /dev/ttyUSB0
    '/dev/ttyUSB0' port ready.
    FPS average:      26.70
    Finished.

Open JTalk で日本語発声

  1. OpenJtalk のインストール Linux 環境の場合
    update_20220916.tar.gz をダウンロード
    ・ページ記載の手順でインストール

  2. Python による再生プログラム Linux 環境の場合
    (py37y) $ cd ~/workspace_py37/jtalk/
    (py37y) $ python jtalk.py

Pythonでメール送信

  1. テスト実行 (Linuxの例)
    (py37y) $ cd ~/workspace_py37/jtalk/
    (py37y) $ python mail.py

顔認証プログラムの開発 Step 5「認証結果を音声とメールで知らせる」

  1. プロジェクトの準備(前項で済み)
    ・(参考)「Reception」プロジェクトの動作環境構築
    ・Pyserialのインストール

  2. 設定ファイルアクセス・プログラム「face_rec_yaml.py」
    (py37y) $ cd ~/workspace_py37/face_rec
    (py37y) $ python face_rec_yaml.py
  3. 顔認証結果の処理・プログラム「rec_result.py」
    (py37y) $ python rec_result.py
  4. 顔認証プログラム (Step 6)「face_rec4.py」
    (py37y) $ python face_rec4.py
    Starting..
     - Program title  : Face recognition (step4)  Ver 0.04
        :
    subject : '2024/01/12 10:37:40 : 受付'
    message : '井筒 政弘 様 来社です
    hostname : ubuntu-HP-ENVY
    from : aipromotion999@gmail.com
    to : izutsum-sp@docomo.ne.jp'
    FPS average:      25.70
    Finished.

受付システム・プログラム「Reception.py」

  1. 「Reception」プロジェクトのインストールと環境設定
    update_20221015.tar.gz をダウンロード

  2. 更新ファイルのインストール
    update_20221109.tar.gz をダウンロード
    ・解凍して「update/」フォルダ内をホームディレクトリ直下に上書き配置する

  3. 受付システム・プログラムの起動
    (py37y) $ cd ~/workspace_py37/reception
    (py37y) $ python reception.py 
    Starting..
     - Program title  : Reception System Ver 0.03
        :
    '/dev/ttyUSB0' port ready.
    '/dev/ttyUSB0' port ready. Door open !!
    subject : '2024/01/12 10:52:34 : 受付'
    message : '井筒 政弘 様 来社です
    hostname : ubuntu-HP-ENVY
    from : aipromotion999@gmail.com
    to : izutsum-sp@docomo.ne.jp'
    FPS average:      22.10
    Finished.

OpenVINO™ 推論プログラムの再検証

  1. 感情分析 / 年齢/性別分析 / 物体検出 (YOLO V3) / 物体検出 (YOLO V5) / 人物追跡 / 顔追跡
    (py37y) $ python emotion3.py
    (py37y) $ python age_gender3.py
    (py37y) $ python object_detect_yolo3_3.py
    (py37y) $ python object_detect_yolo5.py
    (py37y) $ python person-tracking3.py
    (py37y) $ python face-tracking3.py
  2. 感情分析 / 画像分類 / メガネ・帽子 バーチャル試着 / マスク着用の検査
    (py37y) $ python sentiment_analysis3.py
    (py37y) $ python image_classification3.py
    (py37y) $ python virtual_fitting3.py
    (py37y) $ python face_mask3.py

プロジェクト環境設定4:画像生成「Stable-diffusion」【仮想環境(py38)】

仮想環境(py38) の作成

  1. 新しく仮想環境を作成する
    (base) $ conda create -n py38 python=3.8
  2. できた仮想環境の確認
    (base)$ conda activate py38
    (py38) $                ← (py38) に切り替わっていることを確認する
    (py38) $ conda info -e
    # conda environments:
    #
    base                     /home/USER/anaconda3
        :
    py38                  *  /home/USER/anaconda3/envs/py38

  3. 仮想環境の起動スクリプトを作成
    ▼「anaconda_setup_py38.sh」

プロジェクトパッケージの配置

  1. プロジェクト・ファイルのダウンロード
    AI_project_20230203.zip (55.9MB) <Stable-deffusion プロジェクト一式> をダウンロード

  2. 「AI_project」フォルダ内をすべて「home」ディレクトリ直下に配置する
    プロジェクト・ディレクトリ
    ~/
    ├─workspace_py37
    │  ├─mylib             ← python 共有ライブラリ (パスが通っていること)
    │  └─openvino
    └─workspace_py38        ← anaconda 環境下のアプリケーション・プロジェクト
        ├─googletrans
        └─stable_diffusion
  3. 「openvino」のインストール
    ・ubuntu の場合 pip でインストールできるランタイムパッケージではうまく動作しないところがあるようなので conda でインストールする
    conda install -c intel openvino-ie=2022.1.0=ubuntu20_intel_643
    conda install -c intel openvino-ie4py=2022.1.0=py38_ubuntu20_intel_643
    conda install -c intel openvino-ie4py-ubuntu20=2022.1.0=intel_643
    ▼ インストール・ログ

  4. 「Stable-diffusion」パッケージのインストール
    (py38) $ cd ~/workspace_py38/stable_diffusion/
    (py38) $ python -m pip install --upgrade pip
    (py38) $ pip install -r requirements.txt
    ▼ インストール・ログ

「Stable-diffusion」動作確認

自動翻訳パッケージ「googletrans」インストール

GUI 画像生成プログラム

画像生成 【仮想環境(py38)】実行プロジェクト 環境は既に構築済み

  1. 「Stable-Diffusion」を試してみる
  2. 「Stable-Diffusion」GUIを作る
  3. 「Stable-Diffusion」画像生成を試す
  4. 「Stable-Diffusion」パラメータを検証する
  5. 「Stable-Diffusion」画像生成速度を検証する
  6. 「Stable-Diffusion」自動翻訳を組み合わせる
    update_20230104.zip (1.27GB)   (result_data/フォルダのみ配置)
  7. 「Stable-Diffusion」色々な画像生成を試す
  8. 「Stable-Diffusion」実用性を探る
  9. 「Stable-Diffusion」人物画像を生成する
  10. 「Stable-Diffusion」画像を元にして生成する
  11. Stable diffusion の Webサービス「Dream Studio」
  12. 「Stable-Diffusion infinity」を試してみる

プロジェクト環境設定5:物体認識「YOLO V7」【仮想環境(py38a)】

プロジェクトパッケージの配置

  1. 「プロジェクト・パッケージ for Windows/Linux」をダウンロード
    AI_project_20230413.zip (216MB) <YOLO v7 プロジェクト一式>

  2. 「AI_project_20230413.zip」を解凍してできた「update」フォルダ内をすべてプロジェクトのホームディレクトリに配置する(上書き保存)
    プロジェクトのディレクトリ配置
    プロジェクト・ホーム(c:/anaconda_win または ~/)
    ├─Images                ← 画像データ
    ├─model                 ← 学習済みモデル
    ├─Videos                ← 動画データ
    │       :
    ├─work                  ← 今回使用するプロジェクト・ディレクトリ
    │  ├─openvino
    │  └─yolov7
    ├─workspace_py37
    │  └─mylib             ← python 共有ライブラリ (パスが通っていること)
    └─workspace_py38        ← anaconda 環境下のアプリケーション・プロジェクト
        ├─ :
        └─stable_diffusion

仮想環境(py38a) の作成

  1. 新しく仮想環境を作成する
    (base) $ conda create -n py38a python=3.8
  2. できた仮想環境の確認
    (base)$ conda activate py38a
    (py38a) $                ← (py38a) に切り替わっていることを確認する
    (py38a) $ conda info -e
    # conda environments:
    #
    base                     /home/USER/anaconda3
        :
    py38a                 *  /home/USER/anaconda3/envs/py38a

  3. 仮想環境の起動スクリプトを作成
    ▼「anaconda_setup_py38a.sh」

新規の仮想環境「py38a」に必要なパッケージをインストール

  1. 「openvino」のインストール
    conda install -c intel openvino-ie=2022.1.0=ubuntu20_intel_643
    conda install -c intel openvino-ie4py=2022.1.0=py38_ubuntu20_intel_643
    conda install -c intel openvino-ie4py-ubuntu20=2022.1.0=intel_643
  2. パッケージのインストール
    「~/work/requirements.txt」設定ファイル openvino の行ををコメントアウトする
    (py38a) $ cd ~/work
    (py38a) $ pip install -r requirements.txt
    ▼「~/work/requirements.txt」設定ファイル
    ▼「pip install -r requirements.txt」ログ

  3. 「YOLOv7_OpenVINO」「YOLO V7」を実装する
    YOLOv7_OpenVINO のテスト のページ以下を実行する

物体認識 【仮想環境(py38a)】実行プロジェクト

  1. 物体認識の深層学習タスク:YOLO V7 実行プログラムの作成
    (py38a) $ cd ~/work/yolov7
    (py38a) $ python object_detect_yolo7.py
    (py38a) $ cd ~/work/openvino/
    (py38a) $ python object_detect_yolo5.py
    (py38a) $ python object_detect_yolo3.py
  2. カスタムデータによる学習1「マスク着用の判定」  update_20230519.zip (235MB)
    (py38a) $ cd ~/work/yolov7
    (py38a) $ python object_detect_yolo7.py -m mask_best.onnx -l mask.names_jp -i ../../Images/mask.jpg -o out_mask.jpg
  3. カスタムデータによる学習2「じゃんけんの判定1」 update_20230616.zip (1.22GB)
    (py38a) $ pip install labelImg
    (py38a) $ cd ~/work/labelImg/janken/
    (py38a) $ labelImg par predefined_classes.txt par
    (py38a) $ cd ~/work/yolov7-main
    (py38a) $ python detect2.py --weights runs/train/yolov7x_custom2_60/weights/best.pt --conf 0.25 --img-size 640 --source ../../Images/janken2.jpg --view-img
    (py38a) $ cd ~/work/yolov7
    (py38a) $ python object_detect_yolo7.py -m ../yolov7-main/runs/train/yolov7x_custom2_60/weights/best.onnx -l janken.names_jp -i cam
    (py38a) $ python object_detect_yolo7.py -m ../yolov7-main/runs/train/yolov7x_custom2_60/weights/best.onnx -l janken.names_jp -i ../../Images/janken2.jpg
  4. 学習パラメータ考察

  5. カスタムデータによる学習3「じゃんけんの判定2」 update_20230718.zip (784MB)
    (py38a) $ cd ~/work/yolov7-main
    (py38a) $ python detect2.py --weights runs/train/yolov7x_custom2_60/weights/best.pt --conf 0.25 --img-size 640 --source ../../Images/janken2.jpg --view-img
    (py38a) $ cd ~/work/yolov7
    (py38a) $ python object_detect_yolo7.py -m janken_best.onnx -l janken.names_jp -i ../../Images/janken.jpg -o out_janken.jpg
    (py38a) $ python object_detect_yolo7.py -m janken_best.onnx -l janken.names_jp -i cam
  6. カスタムデータによる学習4「じゃんけんの判定3」 update_20230813.zip (1.32GB)
    (py38a) $ cd ~/work/yolov7
    (py38a) $ python object_detect_yolo7.py -m ../yolov7-main/runs/train/yolov7x_custom4_60/weights/best.onnx -l janken.names_jp -i ../../Images/janken3.jpg -o janken3_custom4_60.jpg
  7. 元になる学習モデルの違いによる考察

  8. 「じゃんけん」カスタムデータによる学習モデルまとめ

プロジェクト環境設定6:ローカルマシンで学習【仮想環境(py38b)】

仮想環境(py38b) の作成

  1. 新しく仮想環境を作成する
    (base) $ conda create -n py38b python=3.8
  2. できた仮想環境の確認
    (base)$ conda activate py38a
    (py38b) $                ← (py38b) に切り替わっていることを確認する
    (py38b) $ conda info -e
    # conda environments:
    #
    base                     /home/USER/anaconda3
        :
    py38b                 *  /home/USER/anaconda3/envs/py38b

  3. 仮想環境の起動スクリプトを作成
    ▼「anaconda_setup_py38b.sh」

新規の仮想環境「py38b」に必要なパッケージをインストール

  1. 「openvino」のインストール
    conda install -c intel openvino-ie=2022.1.0=ubuntu20_intel_643
    conda install -c intel openvino-ie4py=2022.1.0=py38_ubuntu20_intel_643
    conda install -c intel openvino-ie4py-ubuntu20=2022.1.0=intel_643
  2. パッケージのインストール
    「~/work/requirements.txt」設定ファイル openvino の行ををコメントアウトする
    (py38b) $ cd ~/work
    (py38b) $ pip install -r requirements.txt
    ▼「~/work/requirements.txt」設定ファイル

インストール結果の確認とパッケージの追加

  1. 「Pytorch」のバージョンを調べる
    (py38b) $ python -c 'import torch;print(torch.__version__)'
    2.2.0+cu121
    (py38b) $ python -c 'import torch;print(torch.zeros(1).cuda())'
    tensor([0.], device='cuda:0')
  2. GPU テストプログラム
    (py38b) $ cd ~/workspace_py311
    (py38b) $ python cuda_test.py
    2.1.2+cu121
    cuda, True
    compute_89
    find gpu devices, 1
    cuda:0, NVIDIA GeForce RTX 4070 Ti
    end
  3. パッケージの追加
    (py38b) $ pip install tensorboard

学習 Training を実行

  1. 「Official YOLOv7」 から、学習済みモデル「yolov7x.pt」をダウンロードし「/work/yolo7-main」の下にコピーする

  2. 下記のコマンドで学習を実行する
    GeForce RTX 4070 メモリーサイズ(12GB) から バッチサイズ:8 で実行できる
    (py38b) PS > cd ~/work/yolov7-main
    (py38b) $ python train.py --workers 8 --batch-size 8 --data janken_dataset.yaml --cfg cfg/training/yolov7x.yaml --weights 'yolov7x.pt' --name yolov7x_custom2 --hyp data/hyp.scratch.p5.yaml --epochs 300 --device 0
    ▼ - log - NVIDIA GeForce RTX 4070 Ti

  3. 正常に終了すると、学習結果は「yolov7-main/runs/train/yolov7x_custom2*/」に保存される
    ・学習結果モデルは「yolov7x_custom23/weights」評価指標は「yolov7x_custom23」
    この学習にかかった時間 → 1時間 6分
    F1 curveP curvePR curveR curve

【参考】GoogleColab で 学習 Training を実行

  1. 学習 Training<クラウド・サービス>の手順で学習

  2. 下記のコマンドで学習を実行する
    同じパラメータ バッチサイズ:8 で実行する
    !python train.py --workers 8 --batch-size 8 --data janken_dataset.yaml --cfg cfg/training/yolov7x.yaml --weights 'yolov7x.pt' --name yolov7x_custom2 --hyp data/hyp.scratch.p5.yaml --epochs 300 --device 0
    ▼ - log - GoogleColab TYesla T4

  3. 正常に終了すると、学習結果は「MyDrive/Try2/yolov7/runs/train/yolov7x_custom2*/」に保存される
    ・学習結果モデルは「yolov7x_custom24/weights」評価指標は「yolov7x_custom24」
    この学習にかかった時間 → 4時間 42分
    F1 curveP curvePR curveR curve

プロジェクト環境設定7:GAN(敵対的生成ネットワーク)【仮想環境(py38_gan)】

仮想環境(py38_gan) の作成

  1. 新しく仮想環境を作成する
    (base) $ conda create -n py38_gan python=3.8
  2. できた仮想環境の確認
    (base)$ conda activate py38_gan
    (py38_gan) $                ← (py38_gan) に切り替わっていることを確認する
    (py38_gan) $ conda info -e
    # conda environments:
    #
    base                     /home/USER/anaconda3
        :
    py38_gan              *  /home/USER/anaconda3/envs/py38_gan

  3. 仮想環境の起動スクリプトを作成
    ▼「(py38_gan):anaconda_setup_py38_gan.sh」

必要なパッケージと「StarGAN-V2」導入

  1. 「git」の導入
    $ sudo apt install git
    ▼「sudo apt install git」ログ

  2. 「StarGAN-V2」の導入 オフィシャルサイト から stargan-v2一式をダウンロード
    $ cd ~/work/
    $ git clone https://github.com/clovaai/stargan-v2.git
    ▼「git clone https://github.com/clovaai/stargan-v2.git」ログ

  3. 学習済みモデルとプロジェクトファイルの配置
    下記のダウンロードしたファイルを解凍し「~/work」フォルダ以降を上書き配置する
    update_20231015.zip (687MB) <アップデート・データ>

  4. 「openvino」のインストール
    ・ubuntu の場合 pip でインストールできるランタイムパッケージではうまく動作しないところがあるようなので conda でインストールする
    conda install -c intel openvino-ie=2022.1.0=ubuntu20_intel_643
    conda install -c intel openvino-ie4py=2022.1.0=py38_ubuntu20_intel_643
    conda install -c intel openvino-ie4py-ubuntu20=2022.1.0=intel_643
  5. パッケージのインストール
    「requirements.txt」設定ファイル openvino の行ををコメントアウトしておく
    (py38_gan) $ pip install -r requirements.txt
    ▼「~/work/requirements.txt」設定ファイル
    ▼「pip install -r requirements.txt」ログ

  6. 不足しているパッケージをインストール
    (py38_gan) $ pip install munch scikit-image ffmpeg
    ▼「pip install munch scikit-image ffmpeg」ログ

  7. 「StarGAN-V2」ソースコードを修正する
    下記「~/work/stargan-v2/core」フォルダ内の 3ファイルを名前を変えて上書きコピーする
    (py38_gan) $ cd stargan-v2/core/
    (py38_gan) $ cp checkpoint_patch.py checkpoint.py
    (py38_gan) $ cp solver_patch.py solver.py
    (py38_gan) $ cp wing_patch.py wing.py

画像生成 2 GAN(敵対的生成ネットワーク) 環境構築と実行

  1. 顔の合成:StarGAN-v2 StarGAN-V2 の実行 環境は既に構築済み
    ・付属サンプル画像を使って実行する
    (py38_gan) $ cd ~/work/stargan-v2/
    (py38_gan) $ python main.py --mode sample --num_domains 2 --resume_iter 100000 --w_hpf 1 --checkpoint_dir expr/checkpoints/celeba_hq --result_dir expr/results/celeba_hq --src_dir assets/representative/celeba_hq/src_0 --ref_dir assets/representative/celeba_hq/ref_0
    (py38_gan) $ python main2.py --mode sample --num_domains 2 --resume_iter 100000 --w_hpf 1 --checkpoint_dir expr/checkpoints/celeba_hq --result_dir expr/results/celeba_hq --src_dir assets/representative/celeba_hq/src_0 --ref_dir assets/representative/celeba_hq/ref_0
    ・カスタム画像を変換する
    (py38_gan) $ python main.py --mode align --inp_dir assets/representative/custom_1/male --out_dir assets/representative/celeleba_hq --src_dir assets/representative/celeba_hq/src_0 --ref_dir assets/representative/celeba_hq/ref_0
    ・カスタム画像を使って実行する
    (py38_gan) $ python main2.py --mode sample --num_domains 2 --resume_iter 100000 --w_hpf 1 --checkpoint_dir expr/checkpoints/celeba_hq --result_dir expr/results/celeba_hq --src_dir assets/representative/celeba_hq/src --ref_dir assets/representative/celeba_hq/ref_1
    (py38_gan) $ python main2.py --mode sample --num_domains 2 --resume_iter 100000 --w_hpf 1 --checkpoint_dir expr/checkpoints/celeba_hq --result_dir expr/results/celeba_hq --src_dir assets/representative/celeba_hq/src_3 --ref_dir assets/representative/celeba_hq/ref_1
    (py38_gan) $ python main2.py --mode sample --num_domains 2 --resume_iter 100000 --w_hpf 1 --checkpoint_dir expr/checkpoints/celeba_hq --result_dir expr/results/celeba_hq --src_dir assets/representative/celeba_hq/src --ref_dir assets/representative/celeba_hq/ref_0
    (py38_gan) $ python main2.py --mode sample --num_domains 3 --resume_iter 100000 --w_hpf 0 --checkpoint_dir expr/checkpoints/afhq --result_dir expr/results/afhq --src_dir assets/representative/afhq/src_0 --ref_dir assets/representative/afhq/ref_0
  2. 画像スタイル変換:CycleGAN               update_20231103.zip (165MB)
    ・動作環境の準備と設定
    (py38_gan) $ cd ~/work
    (py38_gan) $ git clone https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix.git
    (py38_gan) $ pip install dominate visdom
    ▼インストール ログ

    ・CycleGan の実行
    (py38_gan) $ cd ~/work/pytorch-CycleGAN-and-pix2pix/
    (py38_gan) $ python test.py --dataroot datasets/images --name style_ukiyoe_pretrained --model test --no_dropout --preprocess scale_width --load_size 1024 --gpu_ids -1
    (py38_gan) $ python test.py --dataroot datasets/images --name style_monet_pretrained --model test --no_dropout --preprocess scale_width --load_size 1024 --gpu_ids -1
    (py38_gan) $ python test.py --dataroot datasets/images --name style_cezanne_pretrained --model test --no_dropout --preprocess scale_width --load_size 1024 --gpu_ids -1
    (py38_gan) $ python test.py --dataroot datasets/images --name style_vangogh_pretrained --model test --no_dropout --preprocess scale_width --load_size 1024 --gpu_ids -1
  3. 人間の年齢による顔の変化:DLFS              update_20231117.zip (18.3MB)
  4. StyleGANを使った画像編集:StyleGAN e4e
  5. StyleGAN3による画像とビデオの編集:StyleGAN3
  6. 静止画から作るフェイク動画:First Order Motion Model
  7. GANによる似顔絵生成:QMUPD
  8. 画像に別の画像のスタイルを転送:PAMA          update_20231209.zip (115MB)
  9. 音声で顔画像を動かす:One Shot Talking Face
  10. 顔画像に様々なスタイルをブレンドする:BlendGAN
  11. 個別の学習プロセス無しでFaceSwapを実現する:SberSwap

動画編集 Tips

NVIDIA cuda GPU の設定

NVIDIAのGPUアーキテクチャ

アーキテクチャ
(読み方)
プロセスルール販売開始採用シリーズ
Kepler
(ケプラー)
28nm2012年GeForce GTX/GT 600シリーズ
2012年GeForce GTX/GT 700シリーズ
2013年GeForce GTX TITANシリーズ
Maxwell
(マクスウェル)
28nm2014年GeForce GTX 700シリーズ
2015年GeForce GTX 900シリーズ
Pascal
(パスカル)
16nm/14nm2016年GeForce GTX 10シリーズ
Turing
(チューリング)
12nm2018年GeForce RTX 20シリーズ
2019年GeForce GTX 16シリーズ
Ampere
(アンペア)
8nm2020年GeForce RTX 30シリーズ
Ada Lovelace
(エイダ・ラブレス)
5nm2022年GeForce RTX 40シリーズ

NVIDIA Graphic board の確認

NVIDIA CUDA Toolkit のインストール

仮想環境(py311)を作成

  1. python 3.11 が適合するようなので、この版の仮想環境を作る
    (base) $ conda create -n py311 python=3.11
    ▼「conda create -n py311 python=3.11」ログ

  2. 仮想環境(py311)に切り替える
    (base) > conda activate py311
    (py311) PS > conda info -e
    # conda environments:
    #
    base                     /home/USER/anaconda3
    py311                 *  /home/USER/anaconda3/envs/py311
    py37                     /home/USER/anaconda3/envs/py37
    py37x                    /home/USER/anaconda3/envs/py37x
    py37y                    /home/USER/anaconda3/envs/py37y
  3. 仮想環境の確認
    (py311) $ python -V
    Python 3.11.7
    (py311) $ which python
    /home/USER/anaconda3/envs/py311/bin/python
    (py311) $ which pip
    /home/USER/anaconda3/envs/py311/bin/pip
    (py311) $ which conda
    /home/USER/anaconda3/condabin/conda
    (py311) $ which python3
    /home/USER/anaconda3/envs/py311/bin/python3
    (py311) $ which pip3
    /home/USER/anaconda3/envs/py311/bin/pip3
  4. 仮想環境の起動スクリプトを作成
    ▼「anaconda_setup_py311.sh」

Pytorch のインストール

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

    ● オフィシャルサイト PyTorch FROM RESEARCH TO PRODUCTION からインストールのためのコマンドを取得する

    ● Cuda 12.3 がないので、12.1 を選択する
    (py311) $ pip install torch torchvision torchaudio
    ▼「pip install torch torchvision torchaudio...」ログ

  2. パケージのインストール確認
    (py311) $ python -c "import torch"
    (py311) $ python -c "import tkinter"
    ※ エラーが出なければ OK

  3. 「PyTorch」から GPU を使用できているかの確認
    (py311) $ python -c 'import torch;print(torch.__version__)'
    2.2.0+cu121
    (py311) $ python -c "import torch;print(torch.zeros(1).cuda())"
    tensor([0.], device='cuda:0')
    (py311) $ python -c "import torch;print(torch.cuda.is_available())"
    True
    (py311) $ python -c "import torch;print(torch.cuda.get_device_name(torch.device('cuda:0')))"
    NVIDIA GeForce RTX 4070 Ti
  4. GPU テストプログラム「~/workspace_py311/cuda_test.py」
    (py311) $ cd ~/workspace_py311
    (py311) $ python cuda_test.py
    2.1.2+cu121
    cuda, True
    compute_89
    find gpu devices, 1
    cuda:0, NVIDIA GeForce RTX 4070 Ti
    end
    ▼「cuda_test.py」ソースコード

更新履歴

参考資料

 

Last-modified: 2024-02-15 (木) 11:43:49