diff --git a/README.md b/README.md
index 9e7d013..b5a61ee 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,5 @@
+
+
SC-SfMLearner_for_NLab
===============
@@ -6,14 +8,242 @@
使用者のオリジナルデータセットでもトレーニングや推定をコマンドライン上の操作だけですべて済むように調整しました.
参考にした論文は
+
+
> _Unsupervised Scale-consistent Depth and Ego-motion Learning from Monocular Video_
> Bian, Jia-Wang and Li, Zhichao and Wang, Naiyan and Zhan, Huangying and Shen, Chunhua and Cheng, Ming-Ming and Reid, Ian
> [SC-SfMLearnerの公式GitHub](https://github.com/JiawangBian/SC-SfMLearner-Release)
+
+
>_EndoSLAM Dataset and An Unsupervised Monocular Visual Odometry and Depth Estimation Approach for Endoscopic Videos: Endo-SfMLearner_
>Kutsev Bengisu Ozyoruk and Guliz Irem Gokceler and Gulfize Coskun and Kagan Incetan and Yasin Almalioglu and Faisal Mahmood and Eva Curto and Luis Perdigoto and Marina Oliveira and Hasan Sahin and Helder Araujo and Henrique Alexandrino and Nicholas J. Durr and Hunter B. Gilbert and Mehmet Turan
> [EndoSLAMとEndo-SfMLearner公式GitHub](https://github.com/CapsuleEndoscope/EndoSLAM)

+↑gifの容量の関係で画質は粗いですが実際はもっと高精度なdepth推定が期待されます.
+
+このコードは色々なコードの複合で成り立っているので非商用利用の用途での利用のみ許可します.
-このコードは色々なコードの複合で成り立っているので非商用利用の用途でしか
+
+環境構築
+===============
+## 1. Anacondaによる仮想環境の構築
+pythonのバージョンやパッケージを簡単に管理できるツール[Anacoda](https://www.anaconda.com/)を利用しますので,公式ホームページでダウンロードします.
+インストールが完了すると,PCに
+__Anaconda Prompt__
+というソフトウェアが追加されているので起動します.
+起動が完了したらコマンドプロンプト上で以下のように仮想環境を構築します.
+(当コードはpythonのバージョンが3.6以上を想定している.ここでは3.8を指定)
+
+
+```
+conda create -n SfMLearnerForNLab python=3.8
+```
+
+その後,作った仮想環境を起動
+
+```
+conda activate SfMLearnerForNLab
+```
+
+
+
+## 2. 必要なパッケージのインストール
+まずディープラーニング用のモジュールである[pytorch](https://pytorch.org/)をインストールします.
+
+pytorchをインストールするためのコマンドはバージョンの変更に伴って適宜変更されるため,公式ホームページでコマンドを確認してください.自分の環境にあったボタンをクリックするだけでpytorchをインストールするためのコマンドが表示されますのでコマンドプロンプトで実行しましょう.
+
+pytrochのインストールが完了したら,ダウンロードした「SC-SfMLearner_for_NLab-master」にディレクトリを移動する.
+
+```
+cd PATH_TO_DIR/SC-SfMLearner_for_NLab-master
+```
+
+ディレクトリ内に自動的に必要なモジュールをダウンロードするためのリストである
+__requirements.txt__
+がありますのでそれを利用してモジュールをインストールします.以下のコマンドをコマンドプロンプトで実行します.
+
+```
+pip install -r requirements.txt
+```
+
+もし手動でバージョンを変えたい場合は適宜requirements.txtを参照しながらモジュールをインストールしてください.
+
+
+データセットの作成
+===============
+まずはデータセットを作成します.「datasets」ディレクトリに必要な処理が一通りそろってますのでそれを利用します.
+「datasets」ディレクトリに移動します.
+
+```
+cd ./datasets
+```
+
+「train_videos」と「val_videos」というディレクトリがありますので,そこにデータセットとして利用したい動画ファイル(現在はmp4ファイルのみに対応)を入れてください.
+
+__* 学習で利用する動画は全て同じカメラで撮影されていることを確認してください__
+
+
+動画を配置し終わったら,以下のコマンドを実行することで「datasets」内に「data_for_SC_SfMLearner」が生成される.
+その際に以下のオプションがあるので利用したいデータセットによって適宜変更してください.
+
+
+
+__・--save_frequency__
+動画を何フレーム間隔でデータセットとして利用するか指定するオプション.
+フレーム間隔が大きいと省メモリ,Depht推定において遠方の物体の深度推定の高精度化を期待できるが,間隔が大きすぎるとフレーム間の類似性が下がって学習が安定しない.
+フレーム間隔が小さいとカメラに近い物体の深度推定の高精度化に寄与し,学習が安定するが,小さすぎるとデータセットの容量増加や遠方の物体の深度推定がされないことがある.
+
+
+__・--save_height, --save_width__
+データセットとして使う動画のリサイズに関するオプション.
+__必ず,リサイズ後の高さと幅が32の倍数となるように指定してください.__
+これはSfM LearnerがDepthを推定する際に画像サイズを半分にするConv処理をした5回した後にDeConv処理を5回するので2の5乗である32の倍数を高さと幅が持つ必要があります.
+
+
+以下に示すのは実行するコマンド例です.
+
+```
+python make_datasets.py --save_frequency=10 --save_height=512 --save_width=288
+```
+
+
+プログラムが実行されると以下のようなGUIが起動します.
+
+
+
+
+
+ここにデータセットとして使うカメラの内部パラメータを入力します.(カメラの内部パラメータ,外部パラメータに関しては
+
+[https://jp.mathworks.com/help/vision/ug/camera-calibration.html](https://jp.mathworks.com/help/vision/ug/camera-calibration.html)
+などを参照してください
+通常,画像のリサイズ前後で内部パラメータは変化しますが,リサイズ前の内部パラメータを入力し,「finish」ボタンを押してください.
+
+もし先ほどオプションで指定したリサイズ後の内部パラメータが既知の場合はその内部パラメータを入力し,GUI上の「Is resized image's intrinsic」にチェックを入れて「finish」ボタンを押してください.
+一定時間後にデータセット作成が完了し,デフォルトのオプションであれば「datasets」ディレクトリに「data_for_SC_SfMLearner」が作成されます.
+
+
+モデルのトレーニング
+===============
+
+## 1. トレーニングのクイックスタート
+
+トレーニングのために,「SC-SfMLearner_for_NLab-master」ディレクトリに戻ります.「datasets」ディレクトリにいる場合は以下のコマンドによって親ディレクトリに戻ります.
+
+```
+cd ..
+```
+
+トレーニングのためにもいくつかオプションがあり,各自の環境にあった設定ができます以下に示すのは代表的なオプションです.GPUの指定などはpytorchのモジュールによって自動的に行われます.
+
+
+__・--epochs(デフォルトは200)__
+エポック数の指定
+
+
+__・--batch_size(デフォルトは4)__
+バッチサイズの指定
+
+
+__・--print_freq(デフォルトは1000)__
+1バッチサイズの処理を1イテレーションとしたときに,何イテレーション毎にフィードバックするかを指定できます.
+具体的にはコマンドプロンプト上へのloss値の表示,「checkpoints」ディレクトリにtensorboard用のeventファイルの保存,モデルの重みファイル(pthファイル)の保存を行います.
+
+
+これらのオプションを利用して,コマンドプロンプトで「train.py」を実行します.以下に示すのは実行の例です.
+
+```
+python train.py --epochs=100 --batch_size=8
+```
+
+他にも様々なオプションがありますが利用したい場合は「train.py」のコードを見てください.
+
+
+## 2. トレーニングの経過を見る
+ディープラーニングの学習経過を見るためには
+__「tensorboard」__
+を利用すると学習途中のdepthマップやloss値の推移をビジュアル的にブラウザ(Microsft EdgeやGoogle Chroomなど)上で観察できます.
+以下にtensorboardの使い方を示します.
+
+「train.py」を実行すると「checkpoints」ディレクトリが作成され,その中に実行した日付のディレクトリが子ディレクトリとしてあり,その中にeventファイルと重みファイル(pthファイル)があります.それらのファイルが作成されていることを確認した後に以下の例ようなコマンドを仮想環境で実行してください.
+
+```
+tensorboard --logdir=PATH_TO_YOUR_DIR/checkpoints/12-05-19-47 --port=8888
+```
+
+「--logdir」にはeventファイルや重みファイルが入っているディレクトリを指定します.「--port」には使用するポート番号を指定します.
+
+
+実行に成功するとコマンドプロンプト上にtensorboardを実行するためのURLが表示されますのでブラウザ上で実行してください.
+
+すると以下のような画面が表示され,トレーニングの経過が観察できます.
+
+
+
+
+
+学習済みデータを用いた深度・ポーズ推定
+===============
+
+学習が終了したら,そのモデルの重みを使って深度推定やポーズ推定を行うことが出来ます.
+一通りの機能は「prediction」ディレクトリ内に揃っています.以下に利用する例を示します.
+まずコマンドプロンプト上で「prediction」ディレクトリに移動します.
+
+```
+cd --logdir=PATH_TO_YOUR_DIR/SC-SfMLearner_for_NLab-master/prediction
+```
+
+その後,推定したい要素によって実行するpythonファイルは異なりますが,実行時のオプションは共通なのでここで示します.
+
+
+__・--weight_pth__
+pthファイルの指定.
+
+
+__・--path_to_yaml(デフォルトは"../datasets/data_for_SC_SfMLearner/environment.yaml")__
+学習環境を記録したyamlファイルへのパスを指定.学習に利用したデータセットをデフォルトのディレクトリに保存している場合はこのオプションを変更する必要が無い.
+
+
+__・--use_camera(デフォルトは-9999)__
+usbカメラをPCに接続し,そのusbカメラから深度・ポーズを推定したい場合はこのオプションにカメラポート番号を指定する.このオプションを指定した場合は「input」ディレクトリに入っている動画,画像ファイルに対する深度・ポーズ推定は行われない.
+
+
+## 1. 深度推定
+「input」ディレクトリに画像・動画を入れた後に「pred_disp.py」を実行します.以下に実行例を示します.
+
+```
+python pred_disp.py --weight_pth=PATH_TO_YOUR_DIR/checkpoints/12-05-19-47/dispnet_10000.pth
+```
+
+推定された結果は「output」ディレクトリに自動的に保存されます.
+
+
+もしusbカメラをPCに接続して使用したい場合は「--use_camera」オプションにカメラポート番号を指定します.
+
+```
+python pred_disp.py --weight_pth=PATH_TO_YOUR_DIR/checkpoints/12-05-19-47/dispnet_10000.pth --use_camera=0
+```
+
+この場合推定結果は保存されず,リアルタイムで表示されます.
+
+
+
+## 2. ポーズ推定
+「input」ディレクトリに動画を入れた後に「pred_disp.py」を実行します.以下に実行例を示します.(画像を推定対象として指定することは出来ません)
+
+```
+python pred_pose.py --weight_pth=PATH_TO_YOUR_DIR/checkpoints/12-05-19-47/posenet_10000.pth
+```
+
+推定された結果は「output」ディレクトリにcsvファイルとして自動的に保存されます.
+
+
+もしusbカメラをPCに接続して使用したい場合は「--use_camera」オプションにカメラポート番号を指定します.
+
+```
+python pred_pose.py --weight_pth=PATH_TO_YOUR_DIR/checkpoints/12-05-19-47/posenet_10000.pth --use_camera=0
+```
+
+こちらは実行結果が「output」ディレクトリに自動的に保存されます.
diff --git a/prediction/pred_pose.py b/prediction/pred_pose.py
index 827480e..612421f 100644
--- a/prediction/pred_pose.py
+++ b/prediction/pred_pose.py
@@ -17,7 +17,7 @@
parser.add_argument('--weight_pth', required=True, help="path to disp model's pth file")
parser.add_argument('--path_to_yaml', default="../datasets/data_for_SC_SfMLearner/environment.yaml", help="path to environent")
-parser.add_argument('--use_camera', type=int, default=-9999, help="カメラをq使うならポート番号を指定")
+parser.add_argument('--use_camera', type=int, default=-9999, help="カメラを使うならポート番号を指定")
args = parser.parse_args()
device = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu")
diff --git a/requirements.txt b/requirements.txt
index 67684cc..2a3ba45 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -3,6 +3,7 @@
tensorboard==2.3.0
opencv-python-headless==4.4.0.40
path==15.0.0
+pandas==1.1.3
matplotlib==3.3.1
imageio==2.9.0
tqdm==4.48.2