Visual Studio Code で Jupyter Notebookを実行する
Visual Studio CodeでJupyter Notebookを実行する。
サンプルプログラムがJupyter Notebookだったりするとブラウザで動かすのめんどいので、Visual Studio Codeで動かしてみた。
参考:このあたりかな? Visual Studio CodeでJupyter Notebookを使う方法
以下では、SSD と YOLO を用いた物体検出 の「Object Detection APIを用いた物体検出」を参考に進めてみる。
作業ディレクトリとツール類のインストール
# 作業ディレクトリ
mkdir -p /work/Tensorflow
cd /work/Tensorflow
# pyenvの仮想環境作成と切り替え
pyenv virtualenv 3.7.10 tensorflow
pyenv local tensorflow
# お約束
pip install --upgrade pip setuptools
# Protocol buffers コンパイラのインストール(Jupyter Notebookの実行には関係ない)
sudo apt install protobuf-compiler
# Jupyter Notebook のモジュールインストール
pip install notebook
実行するプログラムの準備
git clone https://github.com/tensorflow/models.git
cd models/
code .
*** Visual Studio Code起動 ***
以下、Visual Studio Codeで作業する
拡張機能から「Jupyter」と「Python」を選択し、対象マシンにインストール
コマンドパレットから以下のコマンドを選び、使用するPythonを選択する
コマンドパレットを表示するには、メニューの表示→コマンドパレットを選択する。
エクスプローラから
research/object_detection/colab_tutorials/object_detection_tutorial.ipynb
を開く
a notebook could execute harmful code when opened. ~
と言われるので、Trust
をクリック
コマンドパレットから以下のコマンドを選び、使用するPythonを選択する
(ipynbファイルを開かないと選べない)
コマンドパレットを表示するには、メニューの表示→コマンドパレットを選択する。
%%bash
で指定したCode cell で実行した[!NOTE] その1、その2で選択するバージョンはそれぞれ異なるバージョンを設定できるが、
上でpyenvで選択したバージョンで統一しておくのが混乱しなくて良いと思う。
[!NOTE] Select a Kernel の設定内容は以下のファイルに保存されるらしい。
~/.vscode-server/data/User/globalStorage/ms-toolsai.jupyter/kernelSpecPaths.json
この設定はシステム(ターゲットマシン)で1つのようなので、他のプロジェクトで設定を変更した場合は再度確認しておくのが良いと思う。
「Get tensorflow/models or cd to parent directory of the repository.」 の下のCode cellの最後に以下を追加
import sys
print(sys.path)
cwd=os.getcwd()
sys.path.insert(0, cwd + "/models/research/slim")
sys.path.insert(0, cwd + "/models/research")
print(sys.path)
以下のcellを削除(エラーになる)
(おそらく、その1で追加している処理に相当)
%%bash
cd models/research
pip install .
「Instance Segmentation」以下はエラーになる(RCNNのモデル形状が変更された?)ので削除しておく。
(手順の本筋に関係ないので)
最初のCode cell(Installの下)で▶(Run)をクリック
あとは、続くcellで▶(Run)をクリックしていく。
または、ツールバーの⏩(Run all cells)をクリックする
Visual Studio Codeのエクスプローラペインで対象のipynbファイルを右クリックして
Convert a Notebook to Python Script
を選択すると、変換結果が新しいファイルとしてエディタに開かれる。
これを名前を付けて保存する。
または、コマンドラインから以下のコマンドを実行する。
jupyter nbconvert «対象ファイル».ipynb --to python
デフォルトの出力ファイル名は«対象ファイル名».py(拡張子をipynb→pyに変えたもの)になる。
ただし、単独で動かす場合は get_ipython()
で始まる行(システムコマンドを実行する部分)はエラーになるので、コメントアウトしておくこと。