V1.0 2022/5/16

抜粋版
はじめてのＡＩ転移学習キット
nvidia tao toolkitを使ってAI 開発スピードを 10 倍に加速

学習編（TAO版）

スペクトラム・テクノロジー株式会社
https://spectrum-tech.co.jp
sales@spectrum-tech.co.jp
all rights reserved 2022 spectrum technology co.

1

学習キット 目次• ubuntu運用マニュアルページ• 学習キット 概念図• 学習キット 全体像• ハード概要• ソフト概要• TAO tool kit

9101112• ubuntuについて• Linux基本コマンド• ubuntu基本操作• 日常運用（ウイルススキャン、更新）

1.

2.
3.

4
46
7

抜粋版のため目次は一致しません

概要①②③④13131415

概要
利用方法
概念図
アプリ一覧

16

事前準備と使い方
事例：物体認識①②③④⑤⑥⑦⑧⑨

DetectNet_V2FasterRCNNSSD
YOLOV3YOLOV4yolo_v4_tiny
RetinaNet
Efficientdet
DSSD

all rights reserved 2022 spectrum technology co.

18343740
4346495255

2

公式サイト：https://developer.nvidia.com/tensorrt

学習キット 目次
• TAO tool kit
1.
2.
3.
4.
5.

概要
事前準備と使い方
事例：物体認識
事例：セグメンテーション①②

MaskRCNN
UNET

13
16
1858
61

抜粋版のため目次は一致しません

個別事例
⑫
⑬
⑭
⑮
⑯
⑰
⑱
⑲
⑳
21
22

action_recognition_net
Bpnet
image_classification
Emotionnet
FacenetFpenetGazenetGesturenetHeartratenet
Lprnetmultitask_classification

6467
70
7376
7982
85889194

all rights reserved 2022 spectrum technology co.

3

Ubuntu運用マニュアル
1. UbuntuについてＬｉｎｕｘの中でも一番シェアの高いＯＳです。２００４年にＤｅｂｉａｎ系から派生。

2. Linux基本コマンド① システム関係• 起動：電源を入れると自動で起動します。
• 再起動：$ reboot
又は、左上のメニューの「ゲストを再起動• 終了：$ shutdown
又は、左上のメニューの「ゲストをシャットダウン」• ログアウト $ exit
ルートからログアウトします• 日本語／英語の入力切替：半角／全角のボタン（ＥＳＣボタンの下）

all rights reserved 2022 spectrum technology co.

4

Ubuntu運用マニュアル
2.

Linux基本コマンド② ディレクトリ操作、コピー、移動、削除
masa@ubuntu:~$cd /home/masa/Documents
ディレクトリの切り替え
masa@ubuntu :/home/masa/Documents$ ls ファイルとディレクトリの表示（表示したら操作したいファイルを右クリックでコピペして操作します
masa@ubuntu:~$ cp ファイル名 ディレクトリ 配下のディレクトリのファイルを別のディレクトリへコピー
masa@ubuntu:~$ mv ファイル名 ディレクトリ
配下のディレクトリのファイルを別のディレクトリへ移動
masa@ubuntu:~$ rm ファイル名
ファイルの削除
便利な機能
rm –help
コマンドのオプションが分からない場合は、ヘルプで問い合わせる。すべてのコマンド共通(マイナスを２個とhelp)③ ユーザ権限、プロセス他
masa@ubuntu :~ $ su スーパーユーザ（root)に切り替え、パスワードを入力
masa@Ubuntu:~$ sudo
ルート権限で各種コマンドを実施します。
masa@ubuntu:~$ ps a
現状の動いているプロセスを表示
masa@ubuntu:~$ kill
特定のプロセスを強制終了
masa@ubuntu:~$ apt-get install pkg
パッケージのインストールなどに使用
masa@ubuntu:~$ date
日付、時間の設定を行います。
masa@ubuntu:~$ leafpad /etc/network/interfaces
インタフェースに記述してい内容を変更します。Viよりも使いやすいです。

④ モジュール、usb、メモリ、ＨＤＤなどの表示
masa@ubuntu:~$ lsmod
masa@ubuntu:~$ lsusb
masa@ubuntu:~$ free –mt
masa@ubuntu:~$ df

linuxのモジュールリスト表示
usbのデバイス表示
メモリ使用状態表示
ＨＤＤ（マイクロＳＤ）の使用状態表示
all rights reserved 2022 spectrum technology co.

5

Ubuntu運用マニュアル
3. 基本操作① 表示画面と内容主に使用するもの
・ブラウザ：Ｃｈｒｏｍｅ・フォルダ：Ｄｏｃｕｍｅｎｔｓ内に必要なファイルがあります。
・コマンド：コマンド画面を立ち上げて、python3のプログラムを動作させます。

all rights reserved 2022 spectrum technology co.

6

Ubuntu運用マニュアル
4. 日常運用①

セキュリティ対策（アンチウイルス更新、スキャン）• アンチウイルス対策として無料のclamAVをインストールしてます。
• 手動での運用を基本としてます。

パターンファイル更新$ sudo freshclam
手動スキャン時にも更新されます
手動でスキャン
$ sudo clamscan --infected --remove --recursive
自動化可能ですが、バックグランドで重くなる可能性大。コマンド入力後時間がかります。

all rights reserved 2022 spectrum technology co.

7

Ubuntu運用マニュアル
4. 日常運用②

インストール済パッケージの更新リスト、アップグレード• Linuxの場合は、頻繁に更新が発生します。アップグレードを定期的に実施してください。
• 更新前には、バックアップを取ることをお勧めします。特にアップグレードはまれに動作不良、戻せない状態が発生します。自己責任で実施してください。

更新リスト取得$ sudo apt-get update
アップグレード実施$ sudo apt-get upgrade

all rights reserved 2022 spectrum technology co.

8学習キット 概念図(TAO版）

all rights reserved 2022 spectrum technology co.

9学習キット 全体像(TAO版）
ハードウエアGPUCPU
8 core cpu,32GB
RAM+

Nvidia A100,V100, RTX30シリーズに対応

USBメモリＯＳ

ＡＩ系

ソフトウエア

画像系

プログラム言語グラヒック

all rights reserved 2022 spectrum technology co.

10ハードウエア概要①必要なハードウエア仕様
ハードウエアの概要です。
区分

プロダクツ

USBメモリ（tao版）

512GB USB3.0
TAO 関連ソフトメーカ

備考

お客様準備品

PC本体

cpu

Intel i9, i7, amd Ryzen 9,7など
8 core cpu

GPU

A100, V100
RTX30シリーズ

メモリ

32GB以上SSD

512GB以上

ＧＰＵが搭載できるものに限ります。

nvidiaall rights reserved 2022 spectrum technology co.

巨大なdatabaseをインストールするため1TBが望ましい11２．ソフトウエア概要①ソフトウエア一覧
ソフトウエアの概要です。
区分

ソフト名バージョン

OSubuntu

18.04.3 LTS

GPU用

cuDNN

8.2.4+cuda11.4

Nvidia用,搭載するGPUに依存
本キットでは、コンテナで使用するため参考プログラム言語

python3

3.6.9

仮想化で使用TAO

TAO tool kit

3.0.21.8

コンテナ関連Docker-ce>19.03.5

nvidia-container-toolkit>1.3.0-1

Nvidia-driver>465

tensorRT

8.4

tensorflow

1.15

Pytorch

1.8

onnx

1.8.1

ＡＩ用プログラム

各種モジュール

備考

Taoコンテナで使用

Jupyter notebook、
matplotlibなど多数のpipラ
イブラリ
all rights reserved 2022 spectrum technology co.

12Tao toolkit

公式サイト
https://developer.nvidia.com/ja-jp/tao-toolkit

１．概要
①

概要
• お金をかけて AI の専門知識を習得しなくても、AI 開発スピードを 10 倍に加速できます。トレーニングをスピードアップして、精度の高い、高性能のドメイン別 AI モデルをすばやく作成できます。
• ビジネスの課題を解決するための AI/ML モデルを一から作成するのは、お金と時間がかかります。転移学習 は、学習済みの特徴量を、既存のニューラル ネットワーク モデルから新しいモデルに抽出するときによく使われる手法です。
NVIDIA TAO Toolkit は AI/DL フレームワークの複雑さを抽象化する AI ツールキットです。高品質の学習済みモデルを使用するため、わずかな量のデータでも運用品質のモデルをすばやく構築できます。

②

利用方法• TAO を使用すると、NVIDIA の運用品質の学習済みモデルをそのままデプロイするか、コンピューター ビジョンや対話型 AI などのさまざまなユースケースに合わせてモデルを微調整して使用できます。TAO は、AI 作成のための UI ベースのガイド付きワークフロー、TAO (Train, Adapt and Optimize)
プラットフォームの中核的なコンポーネントです。
• https://docs.nvidia.com/tao/tao-toolkit/text/overview.html

all rights reserved 2022 spectrum technology co.

13

Tao toolkit
１．概要

A）
B）

E）

K）

F）

③ 概念図

J）
以下の手順で転移学習を行います。
A) ngcで作成済の学習済みモデルをダウンロード
B) カスタムデータを設定：cocoなど
C) カスタムデータをtensorflow用tfrecordに変換
D) Tfrecordを使って学習
E) 学習したモデルの評価：時間がかかります(モデルによりrtx3080で10時間など）
F) モデルのプルーン化（prune)：切り落としG) プルーン化モデルの再学習：時間がかかりますH) 再学習モデルの再評価
I) 推論（inference)
別売：TensorRTJ) モデルのエキスポート（int8最適化、tensorRT変換）
学習・開発キット
を参照くださいK) エキスポートモデルでの推論

all rights reserved 2022 spectrum technology co.

14

ＴＡＯ Ｔｏｏｌｋｉｔ
１．概要④．アプリ一覧
id区分

アプリ名

1物体検出

DetectNet_V2

2FasterRCNN

3SSD

4
5

YOLOV3YOLOV46

yolo_v4_tiny

7RetinaNet8
efficientdet
9DSSD
10セグメンテーション MaskRCNN
11UNET
12個別事例
action_recognition_net
13
bpnet
14
image_classification
15
emotionnet
16
facenet17
fpenet18
gazenet19
gesturenet
20
heartratenet
21
lprnet22
multitask_classification23
dashcamnet
24
FaceDetectIR
25
VehicleMakeNet
26
vehicletypenet
27
PeopleNet-ResNet34
28TrafficCamNet
29
LPD
30
Facial Landmark
31
PeopleSegNet
32
People Semantic Segmentation
33
2D Body Pose Estimation
34
imagedata-multistream

概要

tao版

車、バン、トラック、歩行者、サイクリストのデータからresnet18の学習モデルを使って、検出対象を３個（車、サイクリスト、歩行者）に絞り、学習モデルを作成。その後、prune, 量子化などを使い、最終的にtensorRT用のモデルとし ●て出力。Taoで最初に使ったモデルに比べて、12倍に高速化し、正解率もほぼ同じを実現
同上のデータセット、事前学習モデルで、Faster RCNNモデルで学習する。正●解率は、高いが、処理が遅い
SSD（single shot detector)は、画像中の物体を単一のディープニューラルネッ
トワークで検出する。一般には、認識精度も高く高速といわれているが？結 ●果は、反対。
darknetで有名なyolo、高速認識が売り●
darknetで有名なyolo、高速認識が売り、新たな開発者が担当●
darknetで有名なyolo、高速認識が売り、新たな開発者が担当、小型モデル●
版（軽い）
一般的には、２段階で検出していたものを、速度を維持したままで、精度が高●
い一段階検出モデルができないかと考え、RetinaNetが発表されました
efficient detを使った物体認識●
deconvolutional single shot detector(DSSD)●
物体のセグメンテーションして、背景をマスクする。
▲エラー
医療系の画像を使って、血管などをセグメンテーションする●ビデオから行動認識を行います▲エラー
body pose netは、からだの目、耳、手首などの位置を検出します。
●
物体の検出します
●
感情分類
●
顔検出
●
顔の部位検出●顔から視線を推測●
指の動作を検出●
心電図による推測▲データ未入手
ナンバープレートの文字認識●
ファッション用品の分類●
車種、メーカ名などを識別
顔識別
車種、メーカの認識
車種の認識：クーペ、suv,ban人認識：deepstreamer使用
車両認識：deepstreamer使用
ナンバープレート検出
顔の細部の位置を認識
人体セグメンテーション
人体セグメンテーション
all rights reserved 2022 spectrum technology co.
２D人体のポーズ認識
２画面ストリーミング

deepstream版
先頭数字は、目次、二つ目が細分
●5_7

●3_6
●3_5
●3_7

deepstream版のエラーは、 engine生成の問題。Taoconverterのエラー
不明●5_6▲3_17エラー▲5_8エラー▲5_3エラー▲5_4エラー▲5_5エラー▲4_8エラー
●4_3
●4_4
●4_5
●4_6
●4_2
●4_1
▲4_7エラー
●5_2
●5_9
●5_10
●5_1
●2_12

15TAO Tool kit
2.事前準備と使い方

入力コマンド$ source /home/masa/venv_py36/bin/activate$ tao --help① python仮想環境• 設定編で準備したvenv_py36で全て動作させます。
$ source /home/masa/venv_py36/bin/activate(venv_py36) masa@ubuntu2 :$② TAO tool kitの動作方法• 動作方法には以下の二つがあります。
• https://docs.nvidia.com/tao/tao-toolkit/text/tao_toolkit_quick_start_guide.html
A) Jupyter notebook（推奨）• 基本的にjupyter notebookで動作させます。全体の流れがわかるので理解しやすいです。

B) Tao cli• Tao の個別コマンドを使って使用。
• .tao_mounts.jsonを準備してから操作、jupyter notebookで解説しています。
$ tao --help
ヘルプコマンドで内容を確認$ tao list
動作中のtao コンテナを確認できます

all rights reserved 2022 spectrum technology co.

16TAO Tool kit
3.事例：物体認識① detectnet_v2：物体認識• 概要：車、バン、トラック、歩行者、サイクリストのデータからresnet18の学習モデルを使って、検出対象を３個（車、サイクリスト、歩行者）に絞り、detectnet_v2アルゴリズムを使い学習モデルを作成。その後、prune, 量子化などを使い、最終的にtensorRT用のモデルとして出力。
Taoで最初に使ったモデルに比べて、12倍に高速化し、正解率もほぼ同じを実現。
• https://docs.nvidia.com/tao/tao-toolkit/text/object_detection/detectnet_v2.html• データセット：kitti image• 事前学習モデル：pretrained_resnet18

全体図

all rights reserved 2022 spectrum technology co.

17

TAO Tool kit
3.事例：物体認識

入力コマンド$ $ cd/home/masa/Documents/tao/cv_samples_v1.3.0/det
ectnet_v2$ jupyter notebook① detectnet_v2：物体認識• 概要：車、バン、トラック、歩行者、サイクリストのデータからresnet18の学習モデ
ルを使って、検出対象を３個（車、サイクリスト、歩行者）に絞り、学習モデルを作成。その後、prune, 量子化などを使い、最終的にtensorRT用のモデルとして出力。
Taoで最初に使ったモデルに比べて、12倍に高速化し、正解率もほぼ同じを実現。
• https://docs.nvidia.com/tao/tao-toolkit/text/object_detection/detectnet_v2.html• データセット：kitti image
ディレクトリは各自違います• 事前学習モデル：pretrained_resnet18$ cd /home/masa/Documents/tao/cv_samples_v1.3.0/detectnet_v2(venv_py36) masa@ubuntu2 :$ jupyter notebook
detectnet_v2_2.ipynbを選択
オリジナルは、detectnet_v2.ipynbです。

all rights reserved 2022 spectrum technology co.

18

TAO Tool kit
3.事例：物体認識① detectnet_v2：物体認識• 概要：車、バン、トラック、歩行者、サイクリストのデータからresnet18の学習モデ
ルを使って、検出対象を３個（車、サイクリスト、歩行者）に絞り、 detectnet_v2アルゴリズムを使って学習モデルを作成。その後、prune, 量子化などを使い、最終的にtensorRT用のモデルとして出力。Taoで最初に使ったモデルに比べて、12倍に高速化し、正解率もほぼ同じを実現。
• https://docs.nvidia.com/tao/tao-toolkit/text/object_detection/detectnet_v2.html• detectnet_v2_2.ipynbを選択

ローカルプロジェク
ト・ディレクトリ設定、各自変更のこと

all rights reserved 2022 spectrum technology co.

.tao_mounts.json
設定19

TAO Tool kit
3.事例：物体認識① detectnet_v2：物体認識• 概要：車、バン、トラック、歩行者、サイクリストのデータからresnet18の学習モデ
ルを使って、検出対象を３個（車、サイクリスト、歩行者）に絞り、学習モデルを作成。その後、prune, 量子化などを使い、最終的にtensorRT用のモデルとして出力。
Taoで最初に使ったモデルに比べて、12倍に高速化し、正解率もほぼ同じを実現。
• https://docs.nvidia.com/tao/tao-toolkit/text/object_detection/detectnet_v2.html• detectnet_v2_2.ipynbを選択

推論と可視化

all rights reserved 2022 spectrum technology co.

20

TAO Tool kit
3.事例：物体認識① detectnet_v2：物体認識• 概要：車、バン、トラック、歩行者、サイクリストのデータからresnet18の学習モデ
ルを使って、検出対象を３個（車、サイクリスト、歩行者）に絞り、学習モデルを作成。その後、prune, 量子化などを使い、最終的にtensorRT用のモデルとして出力。
Taoで最初に使ったモデルに比べて、12倍に高速化し、正解率もほぼ同じを実現。
• https://docs.nvidia.com/tao/tao-toolkit/text/object_detection/detectnet_v2.html• detectnet_v2_2.ipynbを選択• 認識率と推定時間の各モデル別推移
Tao当初 評価結果

class name average precision (in %)------------ -------------------------car
79.5795
cyclist80.3184
pedestrian65.9508

tao平均推論時間
prune後の再学習結果（sec)：①

class name average precision(in %)------------ -------------------------0.005441
car
80.2562
cyclist81.5315
pedestrian65.9992

量子化後の評価結果

tensorRT後の評価結果

tao学習、prune後
tensorRT後の平均高速化倍
再学習時
推論時間(sec)：② 率：①/②間の合計(hour)

class name average precision class name average precision(in %)(in %)------------ -------------------------- ------------ -------------------------car
75.3572car
74.9865
cyclist77.1818
cyclist77.9812pedestrian
65.6729 pedestrian
66.0452

all rights reserved 2022 spectrum technology co.

最初の推論より、12倍高速化

0.000436

12.48

214

TAO Tool kit
4.事例：セグメンテーション⑪ unet：セグメンテーション• 概要：医療系の画像を使って、血管などをセグメンテーションする。Unet_isbiを参照• https://docs.nvidia.com/tao/tao-toolkit/text/semantic_segmentation/unet.html• データセット： isbi
• 事前学習モデル：pretrained_resnet50

全体図
Detectnetと同じ

all rights reserved 2022 spectrum technology co.

22

TAO Tool kit
4.事例：セグメンテーション

入力コマンド$ cd/home/masa/Documents/tao/cv_samples_v1.3.0/unet$ jupyter notebook⑪ unet：セグメンテーション• 概要：医療系の画像を使って、血管などをセグメンテーションする。Unet_isbiを参照• https://docs.nvidia.com/tao/tao-toolkit/text/semantic_segmentation/unet.html• データセット： isbi
• 事前学習モデル：pretrained_resnet50$ cd /home/masa/Documents/tao/cv_samples_v1.3.0/unet(venv_py36) masa@ubuntu2 :$ jupyter notebook
unet_isbi2.ipynbを選択
Jupyterの各処理は省略

all rights reserved 2022 spectrum technology co.

23

TAO Tool kit
4.事例：セグメンテーション

入力コマンド$ cd/home/masa/Documents/tao/cv_samples_v1.3.0/unet$ jupyter notebook⑪ unet：セグメンテーション• 概要：医療系の画像を使って、血管などをセグメンテーションする。Unet_isbiを参照• https://docs.nvidia.com/tao/tao-toolkit/text/semantic_segmentation/unet.html
unet_isbi2.ipynbを選択
tao当初評価結果
Recall : 0.8171335756778717

tao平均推論時間（sec)：
prune後の再学習結果①
Recall : 0.8249054551124573

tensorRT後の 高速化 tao学習、prune
量子化
tensorRT後の評価結後の評
平均推論時間 倍率：① 後再学習時間の果(sec):②/②
価結果
合計(hour)Throughput Avg: 75.287
Precision:
img/sPrecision: 0.831825852394104
0.8128768801689148
Latency Avg: 48.422 ms
Latency 90%: 59.762 ms
F1 score: 0.8241343816116111F1 score: 0.8186391778106556
Latency 95%: 61.934 ms
Latency 99%: 66.18 ms
Mean IOU: 0.7151066660881042
Mean IOU:
0.7068162858486176

10/10[00:00<00:00,77961.04it/s]

1036.030.333333

セグメンテーション

オリジナル

all rights reserved 2022 spectrum technology co.

24TAO Tool kit
5.個別事例

入力コマンド$ cd/home/masa/Documents/tao/cv_samples_v1.3.0/bpnet$ jupyter notebook⑬ BodyPoseNet• 概要：body pose netは、からだの目、耳、手首などの位置を検出します。
• https://docs.nvidia.com/tao/tao-toolkit/text/bodypose_estimation/bodyposenet.html• データセット： coco
• 事前学習モデル：bodyposenet_vtrainable_v1-2.0$ cd /home/masa/Documents/tao/cv_samples_v1.3.0/bpnet(venv_py36) masa@ubuntu2 :$ jupyter notebook
bpnet2.ipynbを選択
Jupyterの各処理は省略,学習時間は、２８時間

all rights reserved 2022 spectrum technology co.

25

TAO Tool kit
5.個別事例

入力コマンド$ cd/home/masa/Documents/tao/cv_samples_v1.3.0/fpenet$ jupyter notebook⑰ Fpenet• 概要：顔の部位(Eyes,Nose,Mouth,Eyebrows,Chin,HP,Pupil,Ears,)を検出します。
• https://docs.nvidia.com/tao/taotoolkit/text/facial_landmarks_estimation/facial_landmarks_estimation.html• データセット： AFW• 事前学習モデル：fpenet:trainable_v1.0$ cd /home/masa/Documents/tao/cv_samples_v1.3.0/fpenet(venv_py36) masa@ubuntu2 :$ jupyter notebook
fpenet2.ipynbを選択
Jupyterの各処理は省略

all rights reserved 2022 spectrum technology co.

26

TAO Tool kit
5.個別事例

入力コマンド$ cd/home/masa/Documents/tao/cv_samples_v1.3.0/gazenet$ jupyter notebook⑱ gazenet• 概要：顔から視線を推測。
• https://docs.nvidia.com/tao/tao-toolkit/text/gaze_estimation/gaze_estimation.html• データセット： MPIIFaceGaze• 事前学習モデル：gazenet:trainable_v1.0$ cd /home/masa/Documents/tao/cv_samples_v1.3.0/gazenet(venv_py36) masa@ubuntu2 :$ jupyter notebook
gazenet2.ipynbを選択
Jupyterの各処理は省略

all rights reserved 2022 spectrum technology co.

27

入力コマンド$ cd/home/masa/Documents/tao/cv_samples_v1.3.0/lprnet$ jupyter notebook

TAO Tool kit
5.個別事例
21 lprnet• 概要：ナンバープレートの認識。
• https://docs.nvidia.com/tao/tao-toolkit/text/character_recognition/lprnet.html• データセット： OpenALPR benchmark
US版• 事前学習モデル：pretrained_lprnet_baseline18$ cd /home/masa/Documents/tao/cv_samples_v1.3.0/lprnet(venv_py36) masa@ubuntu2 :$ jupyter notebook
lprnet2.ipynbを選択
Jupyterの各処理は省略

読み取り結果wts-lg-000076.jpg:4GLS168
all rights reserved 2022 spectrum technology co.

28