More Related Content Similar to 自習形式で学ぶ「DIGITS による画像分類入門」 (20) More from NVIDIA Japan (20) 自習形式で学ぶ「DIGITS による画像分類入門」2. Qwiklabs(クイックラボ)自習形式ハンズオン
エヌビディアのハンズオントレーニングイベント “NVIDIA Deep Learning Institute (DLI)” で
利用しているトレーニングプラットフォーム “Qwiklabs” は、自宅や職場で自習形式ハンズオン
として活用することも可能です。
この資料では、自習形式のハンズオンラボ受講に必要な手順を簡単に説明します。
Qwiklabs(クイックラボ)アカウントの作成
簡単に作成できます。
すでにアカウントをお持ちの場合は不要です。①
②
ラボの開始
Web ブラウザで Qwiklabs へアクセスして、ハンズオンラボを起動します。
この資料の解説を参考にしながら、挑戦してください。
25. ディープラーニングの利点
▪ 堅牢性
▪ 事前に特徴量のデザインをする必要がない。
▪ 現在のタスクに最適な特徴量が、自動的に学習される。
▪ 元来データに存在する多様性に対しても、学習により、堅牢となる。
▪ 一般化
▪ 同じニューラルネットワークによるアプローチを、多数の異なるアプリケーション、データに対して適用でき
る。
▪ スケーラブル
▪ より多くのデータを用いた学習により、性能が改善する。
▪ 学習の演算を、超並列化することができる。
27. CAFFE とは?
• Berkeley Vision and learning Center (BVLC) において開発
• 多くのコントリビュータにより構成されるオープンソースコミュニティ
• C++/CUDA による実装。高速、よく検証されたコード
シームレスな GPU によるアクセラレーション
• コマンドライン、Python, MATLAB インターフェース
• リファレンスモデルや、サンプルもある。
オープンソースのディープラーニングフレームワーク
caffe.berkeleyvision.org
http://github.com/BVLC/caffe
30. NVIDIA DIGITS
手元のPCからWebブラウザでアクセス可能なディープラーニング トレーニング システム
GPUで高速化されたディープラーニング トレーニング システム
ユーザー
インターフェース
レイヤーの
可視化
学習モデルの
作成
データセット
の作成
学習過程の
可視化
Theano
GPUGPU HW クラウドGPUクラスタマルチGPU
TensorFlow
Torch
Caffe
cuDNN, cuBLAS
CUDA
学習
NVCaffe
cuDNN, cuBLAS
CUDA
• 画像分類と物体検出の為のDNNのデザ
インと可視化の機能を提供
• NVIDIAが最適化したフレームワークで高
速に学習が可能
• ハイパーパラメータのチューニングを強力に
サポート
• 学習のジョブを簡単にスケジューリング、リ
アルタイムにaccuracyとlossを監視
• 様々な学習データフォーマット、フレーム
ワークに対応
33. 手書き文字認識
MNIST データセット
(Yann LeCun’s Web site)
http://yann.lecun.com/exdb/mnist/
サイズ : 28x28、グレースケール、
ピクセル値 0 - 255
トレーニング用データ : 6万
テスト用データ : 1万
入力ベクタサイズ : 784 ( = 28 x 28)
出力は0-9の整数
機械学習におけるHELLO WORLD?
35. コンボリューション / サブサンプリング
入力層
— コンボリューションレイヤー
- コンボリューションの計算
複数の特徴マップを生成する
— プーリングレイヤー
- 最大値プーリング:
2x2 の領域から、最大値を取得
- サブサンプリングで大きさを縦横半分に
INPUT
28x28 feature maps
20 @12x12
Convolutions 5x5
Max Pooling 2x2
feature maps
20 @24x24
36. 全結合層&活性化関数
— 50 @ 4x4 = 800ピクセルを一つのベクトルと
してまとめる
— Fully connected layer
— 重み行列で表現
— ReLU : 活性化関数
— 𝑚𝑎𝑥 0, 𝑥
— Softmax : 活性化関数
—
𝑒𝑥𝑝 𝑎 𝑖
σ 𝑗
𝑛 𝑒𝑥𝑝 𝑎 𝑗
9/26/2017
Fully
connected
500 500
ReLU Fully
connected
Softmax
10 10
feature maps
50 @4x4
39. ラボの流れ
1. まず試してみる
1. AlexNetで試しに6000件の画像を学習
2. (option)異なるデータセット(CalTech-101)も試してみる
2. 性能を改善するために
1. さらに学習させる
2. 6000件の画像でLeNetを学習
3. 6万件すべての画像で学習
4. Data Augmentation
5. (option)ネットワークをカスタマイズ
学習・評価の試行錯誤を追体験
という流れをちょっと変えて……
40. ラボの流れ
1. 一連の流れを体験
1. 6000件の画像でLeNetを学習
2. 6万件すべての画像で学習
3. Data Augmentation
4. ネットワークをカスタマイズ
2. (option)より大きなネットワーク/問題にチャレンジ
1. AlexNetで試しに6000件の画像を学習
2. さらに学習させる
3. 異なるデータセット(CalTech-101)も試してみる
学習・評価の試行錯誤を追体験
45. データセットの作成
1.
2. 3.
1. Image Type : Grayscale
2. Image Size : 28 x 28
3. Training Images:
/data/train_small
4. Dataset Name: “mnist small”
5. Createボタンを押す
4.
5.
47. モデルの作成
1. “mnist small” データセットを選択
2. Training Epochs を”8”にする
3. モデルは、”LeNet” を選択
4. モデル名は、”The right model for
the data” を入力
1. “mnist small”データセットを選択
2. Training epochsを”8”に設定
3. “LeNet”を選択
4. “The right model
for the data”を入力
56. FULL DATASET
10倍大きなデータセット
— データセット
— “mnist small”をクローン(Cloneボタンを押す)
— Training Images : /data/train_full
— Dataset Name : MNIST full
— モデル
— “The right model for the data”をクローン(Cloneボタンを押す)
— データを”MNIST full”に変更
— モデル名に“MNIST full”を設定し、”Create”ボタンを押す
9/26/2017
57. SMALL DATASET FULL DATASET
1 : 99.90 % 0 : 93.11 %
2 : 69.03 % 2 : 87.23 %
8 : 71.37 % 8 : 71.60 %
8 : 85.07 % 8 : 79.72 %
0 : 99.00 % 0 : 95.82 %
8 : 99.69 % 8 : 100.0 %
8 : 54.75 % 2 : 70.57 %
2つ目の結果
Full dataset
- 99 % of accuracy achieved.
- 現実世界の画像の認識には、
改善なし。
58. 1-3. DATA AUGMENTATION
白黒反転した画像を追加
— Pixel(Inverted) = 255 – Pixel(original)
— 黒い背景に白い文字
→ 白い背景に黒い文字
— “MNIST full”をクローン(データ/モデルと
も)
— Training Images: /data/train_invert
Dataset Name: MNIST invert
— Select Dataset: MNIST invert
Model Name: MNIST invert
59. SMALL DATASET FULL DATASET +INVERTED
1 : 99.90 % 0 : 93.11 % 1 : 90.84 %
2 : 69.03 % 2 : 87.23 % 2 : 89.44 %
8 : 71.37 % 8 : 71.60 % 3 : 100.0 %
8 : 85.07 % 8 : 79.72 % 4 : 100.0 %
0 : 99.00 % 0 : 95.82 % 7 : 82.84 %
8 : 99.69 % 8 : 100.0 % 8 : 100.0 %
8 : 54.75 % 2 : 70.57 % 2 : 96.27 %
1-3. DATA AUGMENTATION
白黒反転した画像を追加
9/26/2
63. ネットワークの変更内容
ReLUレイヤの追加と、コンボリューションフィルタの変更
layer {
name: "pool1“
type: "Pooling“
…
}
# ReLUレイヤの追加ここから ->
layer {
name: "reluP1"
type: "ReLU"
bottom: "pool1"
top: "pool1"
}
# <- ここまで
layer {
name: “conv2“
layer {
name: "conv1"
type: "Convolution"
...
convolution_param {
num_output: 75 # feature map数
...
layer {
name: "conv2"
type: "Convolution"
...
convolution_param {
num_output: 100 # feature map数
...
65. 1-4. ネットワークをカスタマイズ
フィルタとReLUレイヤの追加
SMALL DATASET FULL DATASET +INVERTED ADDING LAYER
1 : 99.90 % 0 : 93.11 % 1 : 90.84 % 1 : 59.18 %
2 : 69.03 % 2 : 87.23 % 2 : 89.44 % 2 : 93.39 %
8 : 71.37 % 8 : 71.60 % 3 : 100.0 % 3 : 100.0 %
8 : 85.07 % 8 : 79.72 % 4 : 100.0 % 4 : 100.0 %
0 : 99.00 % 0 : 95.82 % 7 : 82.84 % 2 : 62.52 %
8 : 99.69 % 8 : 100.0 % 8 : 100.0 % 8 : 100.0 %
8 : 54.75 % 2 : 70.57 % 2 : 96.27 % 8 : 70.83 %
70. モデルの作成
1. “Default Options Small Digits
Dataset” を選択
2. Training Epochs を”5”にする
その2
1. “Default Options Small Digits Dataset”を選択
2. Training epochsを”5”に設定
下
へ
75. モデルの作成
1. “Default Options Small Digits
Dataset” を選択
2. Training Epochs を”4”にする
学習済みモデルをベースに
1. “Default Options Small Digits Dataset”を選択
2. Training epochsを”4”に設定
下
へ
76. モデルの作成
1. “Pretrained Networks” を選択
2. 学習済みモデルとして、“My first
model” を選択
3. モデル名は、”Study More” にする
学習済みモデルをベースに
1. “Pretrained Networks”を選択
2. “My first model”を選択
3. “Study More”と入力
81. 2-2. より長く学習させる
AlexNet with small dataset
9/26/2
- Accuracy : 95 %
- 学習時間は数分
- 単にネットワークを大きくしただ
けで精度が上がる、ということ
はない
ALEXNET W/
SMALL DATASET
8 : 32.68 %
8 : 68.03 %
8 : 54.60 %
8 : 76.43 %
8 : 61.26 %
8 : 59.15 %
3 : 32.73 %