mediapipe:モデル学習

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

次のリビジョン
前のリビジョン
mediapipe:モデル学習 [2023/05/15 14:18] – 作成 babamediapipe:モデル学習 [2023/10/02 15:14] (現在) – [tensorlow on gpu] baba
行 1: 行 1:
 ====== MediaPipeに利用するモデルの学習について ====== ====== MediaPipeに利用するモデルの学習について ======
 2023年5月10のカンファレンス発表でMediaPipeが大きく進化しました.それに伴いカスタムモデルの作成等の情報がpreviewとして公開されています.一部ノウハウやバージョン情報が少なかったりで知見が必要だったのでこのページに忘備録代わりにまとめます. 2023年5月10のカンファレンス発表でMediaPipeが大きく進化しました.それに伴いカスタムモデルの作成等の情報がpreviewとして公開されています.一部ノウハウやバージョン情報が少なかったりで知見が必要だったのでこのページに忘備録代わりにまとめます.
 +
 +<WRAP center round tip 60%>
 +mediapipeオフィシャルのチュートリアルでは,colabを利用することが前提になっています.colabを利用する限りは以下の情報は不要です.以下はローカル環境での学習です.デカ目のデータセットで学習が12時間以上必要な場合に限った話です.
 +</WRAP>
 +
  
 ====== 最初の環境構築 ====== ====== 最初の環境構築 ======
行 17: 行 22:
     - conda activate     - conda activate
     - pip install --upgrade pip     - pip install --upgrade pip
-    - pip install tensoflow 
-    - pip install mediapipe 
     - pip install mediapipe-model-maker     - pip install mediapipe-model-maker
  
行 26: 行 29:
   - anaconda のインストール   - anaconda のインストール
   - condaで環境構築   - condaで環境構築
-    - conda create -n mediapipe python=3.9 
-    - conda activate 
-    - conda install -c conda-forge cudatoolkit=11.8.0 
-    - python3 -m pip install nvidia-cudnn-cu11==8.6.0.163 tensorflow==2.12.* 
-    - mkdir -p $CONDA_PREFIX/etc/conda/activate.d 
-    - echo 'CUDNN_PATH=$(dirname $(python -c "import nvidia.cudnn;print(nvidia.cudnn.__file__)"))' >> $CONDA_PREFIX/etc/conda/activate.d/env_vars.sh 
-    - echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CONDA_PREFIX/lib/:$CUDNN_PATH/lib' >> $CONDA_PREFIX/etc/conda/activate.d/env_vars.sh 
-    - source $CONDA_PREFIX/etc/conda/activate.d/env_vars.sh 
-    - python3 -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))" 
-    - pip install --upgrade pip 
-    - pip install tensoflow 
-    - pip install mediapipe 
-    - pip install mediapipe-model-maker 
  
  
 +  conda create -n mediapipe python=3.9
 +  conda activate mediapipe
 +  conda install -c conda-forge cudatoolkit=11.8.0
 +  python3 -m pip install nvidia-cudnn-cu11==8.6.0.163 tensorflow==2.12.*
 +  mkdir -p $CONDA_PREFIX/etc/conda/activate.d
 +  echo 'CUDNN_PATH=$(dirname $(python -c "import nvidia.cudnn;print(nvidia.cudnn.__file__)"))' >> $CONDA_PREFIX/etc/conda/activate.d/env_vars.sh
 +  echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CONDA_PREFIX/lib/:$CUDNN_PATH/lib' >> $CONDA_PREFIX/etc/conda/activate.d/env_vars.sh
 +  source $CONDA_PREFIX/etc/conda/activate.d/env_vars.sh
 +  python3 -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"
 +  pip install --upgrade pip
 +  pip install mediapipe-model-maker
 +
 +
 +====== 学習 ======
 +物体検出の学習は以下のページがメインリソース
 +  * https://developers.google.com/mediapipe/solutions/vision/object_detector/customize
 +
 +===== Multiple GPU =====
 +GPUを利用刷る場合、上記で設定がうまく行っていればそのままGPUで学習が始まる。一方で複数GPUを持っている場合は、別途オプションを設定する必要がある。
 +https://developers.google.com/mediapipe/solutions/customization/object_detector#hyperparameters このページでパラメーターの一覧が確認できる。この中のHParamsで学習時の設定ができるが、実はこのページではどのように複数GPUを利用刷るかがわからない。そこで、より細かいAPIページを参照する必要がある。 具体的には
 +https://developers.google.com/mediapipe/api/solutions/python/mediapipe_model_maker/object_detector/HParams このページを参照する。ここで、
 + * num_gpus: 4
 +等と設定することで、複数gpuを学習に利用できる。ただし、実際にこのオプションを設定して実行すると distribution_strageryが'off'ではだめだよ、というエラーになる。では distribution_strategyをどうすればよいのかが、実は述べられていない。結果としては、github上のソースコードから、サンプルとして、num_gpusを1以上に設定しているサンプルファイルでは、 distribution_strategyに 'mirrored'を設定しているものがあり、これに倣って 'mirrored' にしたら学習が進んだ。まとめると、
 + * num_gpus:4,
 + * distribution_strategy='mirrored'
 +でOK.例えばこんな感じ
 +
 +<code>
 +hparams = object_detector.HParams(
 +  export_dir='exported_model',
 +  epochs=120,
 +  num_gpus=4,
 +  distribution_strategy='mirrored'
 +  )
 +</code>
 +====== 実行 ======
 +うまくいくとモデルが完成するので,出来上がったモデルを試すページは以下
 +  * https://mediapipe-studio.webapps.google.com/demo/object_detector
  
  
  • /home/users/2/lolipop.jp-4404d470cd64c603/web/ws/data/attic/mediapipe/モデル学習.1684127887.txt.gz
  • 最終更新: 2023/05/15 14:18
  • by baba