[初心者向け]Anacondaの仮想環境を構築してpytorchの物体検出で遊ぼう！

# はじめに
**本記事は以下の記事の続編になります**

https://qiita.com/ImR0305/items/196429db26abb361c919

**AnacondaやCUDA等のインストールがまだの方は是非ご覧ください．**

今回は様々な深層学習のコードを動かすうえで不可欠なpythonの仮想環境の構築をして実際に物体検出コードを動かしていこうと思います．


# その１　なんで仮想環境が重要なの？
深層学習を扱う上でpythonが選択される理由にpythonは**ライブラリが豊富**であることが挙げられます．
しかしライブラリが豊富なゆえに**バージョン管理やライブラリ同士の相互関係等が複雑になっている**場合が多いです．
その為，github等に落ちているコードを動かす際はそのコード用のライブラリ，バージョンをインストールしなくてなならない場合が多いです．

1つのPCで様々なコードを動かしたい場合でもいちいち別のコードを動かすたびにライブラリをインストールし直したりするのは厄介ですし，今まで動いてたけど別コード用にバージョンを変えた影響で突然動いていたコードが動かなくなってしまったりしたら悲しいですよね．．

そこで用いられるのが**仮想環境**です！
仮想環境は簡単に言うとpythonの実行環境(ライブラリ等)を複数保存しておくことができるために，あるコードを動かす際はそのコード用の仮想環境で実行することができるために，別のコードの環境に左右されない利点があります！

仮想環境の構築にはvenvやanacondaなどがありますが今回はanacondaでの仮想環境を構築して物体検出のコードを動かしてみましょう！

# その２　githubからコードを落とす
それでは物体検出のコードを動かす準備をしましょう
前回の記事から引き続き読んでくれている方はすでにgitがインストールされているかと思います．
以下のコマンドを使うとgithubからコードをダウンロード(clone)することができます．
今回cloneするコードは[以前自分が書いた記事](ttps://qiita.com/ImR0305/items/c2674dfe9f5ec1301304)になります．
保存場所はカレントディレクトリです．
```
git clone https://github.com/Ryunosuke-Ikeda/colab_frcnn.git
```

# その3　仮想環境構築
それでは仮想環境を構築しましょう！
anacondaプロンプトを開きます．
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556547/bac8906e-96bd-857e-d9f8-46042a4f44e3.png)

左に書いてある(base)が現在いる環境名になります．
それでは以下のコマンドで仮想環境を作成します
```
conda create -n {仮想環境名} python={pythonバージョン}
```
今回はFaster R-CNNと呼ばれるアルゴリズムを動かすため，環境名はfrcnn_test,pythonのバージョンを3.6とします．
今回のコマンドはこんな感じですね
```
conda create -n frcnn_test python=3.6
```
実行すると以下のような画面になりますがyを押してEnterで続行します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556547/2a2230f2-0cab-cb62-26f8-5c6524e4ec13.png)

仮想環境が構築できたら以下のような画面になります
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556547/ae722ee1-5dfe-610b-8d8c-bc89647b56fd.png)

それでは実際に作った仮想環境に移動してみましょう．
現在はbaseという環境にいますが以下のコマンドで仮想環境を移動することができます
```
conda activate {仮想環境名}
```
つまり今回はこのコマンドになります
```
conda activate frcnn_test
```
このコマンドを実行すると以下のようにbaseからfrcnn_testに移動できたことが分かります
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556547/cfdcd040-0e89-4ea2-cee8-47d86362eac8.png)

ちなみに以下のコマンドで今まで作った仮想環境の一覧を見ることができます
```
conda info -e
```

次は実際に仮想環境内で環境構築をしていきましょう！
**その１でcloneしたディレクトリの中に移動**したのち以下のコマンドを入力してください．
```
pip install torch==1.8.0+cu111 torchvision==0.9.0+cu111 torchaudio==0.8.0 -f https://download.pytorch.org/whl/torch_stable.html
pip install jupyterlab
pip install -r requirements.txt
```
仮想環境内でインストールした上記のライブラリはこの仮想環境内のみで使えるライブラリで，他の環境と干渉しません！

# その４ 物体検出を動かす
まず，cloneしたフォルダ内のデータセットであるsmall_bdd.zipを解凍してください

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556547/19ded0bd-c1fa-d904-cf53-17462d7d0d46.png)

解凍が終わったら以下のコマンドでjupyterlabを起動します．
```
jupyter　lab
```
ブラウザが起動し，以下のような画面が出てくると思います．

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556547/eec6b5de-e8e2-2396-ab03-0c46e5904eb2.png)

Faster R-CNN_local.ipynbを選択し2つ目のセルにあるPathの指定の部分で**解凍したsmall_bddまでのpath**を入れて下さい．
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556547/5f7c5a6e-ea23-56dd-c334-45675348cc3a.png)

pathの記入が終わったら一番上のセルから実行(ctrl+enter)することで物体検出の実験をすることができます！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556547/bab608fe-7fda-6368-5e91-990bb416daf5.png)

この物体検出のコードの中身について知りたい方は[こちら](https://qiita.com/ImR0305/items/c2674dfe9f5ec1301304)の記事をご覧ください

# 終わりに
いかがだったでしょうか，無事物体検出を動かせたら幸いです．

以上2本の記事で深層学習の実験をゼロから始めたい人がpython環境構築から物体検出を回すまでの工程を解説したつもりです．
新4年生などこれから研究を始める方などの為になれば幸いです．