TLT(Transfer Learning Toolkit)の使い方について、チュートリアル形式で全6回にまとめました。
- 第1回:入力データの準備
- 第2回:事前学習モデルの入手
- 第3回:学習コンフィグの作成
- 第4回:モデルの学習/評価 ←★今ここ
- 第5回:モデルの枝刈り
- 第6回:推論
- TLTでモデルを学習させる方法
- TLTでモデルを評価する方法
以下環境で動作確認を行いました。
TLT(Transfer Learning Toolkit)のチュートリアルに沿った内容を実践してみます。
TLTインストール後にサンプルファイルとして入っている
/notebooks/examples/detectnet_v2/detectnet_v2.ipynb
の内容となります。
今回編集するファイルは以下となります。
/workspace/
├ examples/
│ ├ detectnet_v2/
│ │ ├ detectnet_v2.ipynb # チュートリアルのソースコード
│ │ ├ specs/ # $SPECS_DIR
│ │ │ ├ detectnet_v2_tfrecords_kitti_trainval.txt # kitti → tfrecords に変換する設定ファイル
│ │ │ ├ detectnet_v2_train_resnet18_kitti.txt # モデルの学習に関する設定ファイル
├ tlt-experiments/
│ ├ data/ # $DATA_DOWNLOAD_DIR
│ │ ├ training/
│ │ │ ├ image_2/
│ │ │ │ ├ 000000.png
│ │ │ │ ├ 000001.png
│ │ │ │ ├ :
│ │ │ ├ label_2/
│ │ │ │ ├ 000000.txt
│ │ │ │ ├ 000001.txt
│ │ │ │ ├ :
│ │ ├ testing/
│ │ │ ├ image_2/
│ │ │ │ ├ 000000.png
│ │ │ │ ├ 000001.png
│ │ │ │ ├ :
│ ├ detectnet_v2/ # $USER_EXPERIMENT_DIR
モデルの学習
学習にはtlt-trainコマンドを使用します。
今回はDetectNet_v2モデルの学習を行います。
tlt-trainコマンドの引数
必須の引数
- -e : 設定ファイルのパス
- -r : 出力先のディレクトリのパス
- -k : NGCAPIキー
オプションの引数
- -n : 出力するモデルの名前
- –gpus : 使用するGPUの数
モデルの学習
実際に設定ファイルや出力ディレクトリ等を指定して、モデルの学習をさせます。
!tlt-train detectnet_v2 -e $SPECS_DIR/detectnet_v2_train_resnet18_kitti.txt \ -r $USER_EXPERIMENT_DIR/experiment_dir_unpruned \ -k $KEY \ -n resnet18_detector \ --gpus $NUM_GPUS
デフォルトのエポック数(120)だとかなり時間がかかりそうだったのでエポック数5の時の出力結果を載せます。
こんな感じで学習結果が表示されました。
Epoch 5/5 ========================= Validation cost: 0.000074 Mean average_precision (in %): 40.3382 class name average precision (in %) ------------ -------------------------- car 52.5496 cyclist 34.4322 pedestrian 34.0328
学習結果の確認
学習して生成されたモデルを確認してみましょう。
先程の学習コマンドで指定した出力先フォルダを確認しています。
!ls -lh $USER_EXPERIMENT_DIR/experiment_dir_unpruned/weightsprint(deta)
モデル(.tlt)が存在していることが確認できました。
total 43M -rw-r--r-- 1 root root 43M Feb 12 08:45 resnet18_detector.tlt
モデルの評価
評価にはtlt-evaluateコマンドを使用します。
先ほど作成したDetectNet_v2モデルの評価を行います。
tlt-evaluateコマンドの引数
必須の引数
- -e : 設定ファイルのパス
- -m : 評価対象のモデルのパス
- -k : NGCAPIキー
オプションの引数
- -f : 評価に使用するフレームワーク(「tlt」または「tensorrt」を選択。デフォルトはTensorRT)
- –use_training_set : 学習データセット+評価用データセットで評価する場合に使用
モデルの評価
実際に設定ファイルや先程生成したモデル等を指定して、モデルの評価をします。
!tlt-evaluate detectnet_v2 -e $SPECS_DIR/detectnet_v2_train_resnet18_kitti.txt\
-m $USER_EXPERIMENT_DIR/experiment_dir_unpruned/weights/resnet18_detector.tlt \
-k $KEY
実行すると評価の結果が表示されました。
Validation cost: 0.000375 Mean average_precision (in %): 40.3250 class name average precision (in %) ------------ -------------------------- car 52.5832 cyclist 34.3606 pedestrian 34.0311
まとめ
TLTでモデルを学習させる方法とモデルの評価方法ついて説明しました。
tlt-trainコマンドでは、設定ファイル、出力先ディレクトリ、NGCAPIキーが必須の引数となっていました。
tlt-evaluateコマンドでは、設定ファイル、モデル、NGCAPIキーが必須の引数となっていました。
モデルの作成後には学習データでのモデルの精度が返ってきて、評価コマンド実行後には評価用データでのモデルの精度が返ってきます。
次回の記事はこちら

前回の記事はこちら

コメント