SlideShare a Scribd company logo
村上真奈
ディープラーニング ソリューション アーキテクト 兼 CUDA エンジニア
エヌビディア
NVIDIA DIGITS による
ディープラーニング画像分類
本ラボの目的
— ディープラーニングのイントロダクション
— ネットワークのトレーニング
— トレーニングの結果を理解する。
— コンピュータビジョン・画像分類に関するハンズオン
— CaffeとDIGITSを使用する
4/18/2017
本ラボが意図しないこと
— 機械学習に対する基本的なイントロダクション
— ニューラルネットワークに関する正確な定式化
— Caffe、DIGITSや他のツールに関する、すべての機能の紹介
— 最先端のディープラーニング企業になるためのノウハウ
4/18/2017
前提知識
— ディープラーニングに関するバックグラウンドは不要です。
— ウエブブラウザを使用
- URLにアクセス
- ファイルのダウンロード
- ファイルマネージャを用いてのファイルの配置
4/18/2017
本ラボの受講後には…
— ディープラーニングのワークフローを理解できています。
— コンボリューショナルニューラルネットワークをセットアップ、トレーニ
ングすることができます。
— 本当のエキスパートになるための、最初のステップを実践するこ
とができます。
自分自身のネットワークの設定ができ、より深く理解するために、
何をすればよいかがわかります。
4/18/2017
ディープラーニングとは?
機械学習
ニューラルネットワーク
ディープ
ラーニング
ディープラーニングの広い応用
インターネット & クラウド
画像分類
言語認識
翻訳
言語処理
感情分析
リコメンデーション
メディア&エンターテイメント
動画のキャプション付け
動画検索
リアルタイム翻訳
自動走行車
歩行者検出
レーントラッキング
道路標識の認識
セキュリティ & 防衛
顔検出
ビデオ監視
衛星画像
薬学 & 生物学
ガン細胞検出
糖尿病のグレード決定
創薬
機械学習におけるビッグバン
“GoogleのAIエンジンは コンピュータハードウエアの世界における変化を示している。GPUを搭載したマ
シンに依存しているのだ… これまでに、より広範なテクノロジが用いられてきたが、それ以上に強く、
GPUに依存しているのだ。”
DNN GPUBIG DATA
人工的なニューロン
From Stanford cs231n lecture notes
生物学的ニューロン
w1 w2 w3
x1 x2 x3
y
y=F(w1x1+w2x2+w3x3)
人工のニューロン
人工的な神経ネットワーク
トレーニングできる単純な数学的なユニットの集合は、
複雑な機能を学ぶことができる
人口の神経ネットワークは、十分なトレーニングデータが与えられれば、
生の入力データから出力を決定する、非常に複雑な関数を近似することができる。
入力層 出力層
隠れ層
ディープラーニングのアプローチ
12
DNN
犬
推論(inference):
蜜穴熊
学習(training):
DNN
犬
狸
猫
誤差
学習した結果を用いる
犬
猫
ディープニューラルネットワーク (DNN)
入力 結果
アプリケーションの構成要素:
タスクの目的objective
例: 顔の同定
トレーニングデータ
1千万-1億 のイメージ
ネットワークアーキテクチャ
~10から-数百のレイヤー
10億のパラメータ
学習アルゴリズム
~30 Exaflops
1-30 GPU日
生データ 低レベルの特徴 中間レベルの特徴 高レベルの特徴
ディープラーニングの利点
▪ 堅牢性
▪ 事前に特徴量のデザインをする必要がない。
– 現在のタスクに最適な特徴量が、自動的に学習される。
▪ 元来データに存在する多様性に対しても、学習により、堅牢となる。
▪ 一般化
▪ 同じニューラルネットワークによるアプローチは、多数の異なるアプリケーション、
および、データタイプに対して適用される。
▪ スケーラブル
▪ より多くのデータを用いた学習により、性能が改善する。
演算手法は、超並列化することができる。
0
0
0
0
0
0
0
0
1
1
1
0
0
0
0
1
2
2
1
1
1
0
1
2
2
2
1
1
0
1
2
2
2
1
1
0
0
1
1
1
1
1
0
0
0
0
0
0
0
4
0
0
0
0
0
0
0
-4
1
0
-8
入力ピクセル
コンボリューション
カーネル
出力ピクセル
コンボリューションカーネルの係数と、
入力ピクセルを掛け、足し合わせた
値を出力とする。
コンボリューション
4/18/2
CAFFE・DIGITS
本日使用するツール
CAFFE とは?
• Berkeley Vision and learning Center (BVLC) において開発
• 多くのコントリビュータにより構成されるオープンソースコミュニティ
• C++/CUDA による実装。高速、よく検証されたコード
シームレスな GPU によるアクセラレーション
• コマンドライン、Python, MATLAB インターフェース
• リファレンスモデルや、サンプルもある。
オープンソースのディープラーニングフレームワーク
caffe.berkeleyvision.org
http://github.com/BVLC/caffe
CAFFE の機能
データのプリプロセスと管理
データフォーマット
LevelDB・LMDB データベース
インメモリ (C++・Python のみ)
HDF5
画像ファイル
プリプロセスツール
生画像からの LevelDB/LMDB の
作成
トレーニング用と検証用のデータ
セット作成(シャッフル付き)
平均イメージの生成
データ変換
イメージのトリミング・リサイズ、
スケーリング、位置反転
平均値を引く
データの準備 DNN の設定 可視化トレーニングの進行モニタ
インタラクティブなディープラーニングトレーニングのための GPU システム
NVIDIA DIGITS
4/18/2
チュートリアル:
手書き文字認識
チュートリアルのゴール
— ディープラーニングのワークフローを学ぶ
— 手書き文字認識
— コンボリューショナルネットワークのトレーニング (Caffe と DIGITS)
— 複数の異なる手法を試し、結果を改善する
— トレーニングと最適化の繰り返しは、ディープラーニングにおける本質的な手続き
手書き文字認識
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?
4/18/2
本日使うディープニューラルネットワーク
4/18/2017
INPUT
28x28 feature maps
20 @12x12
Convolusions 5x5
Convolusions 5x5
feature maps
50 @8x8
Max Pooling 2x2
feature maps
20 @24x24 feature maps
50 @4x4
Max Pooling 2x2
Fully
connected
500 500
ReLU Fully
connected
Softmax
10 10
コンボリューション / サブサンプリング
入力層
— コンボリューションレイヤー
- コンボリューションの算出
複数の特徴マップを生成する
—
最大値プーリング
- プーリング
2x2 の領域から、最大値を取得
- サブサンプリングで、大きさを縦横半分に
INPUT
28x28 feature maps
20 @12x12
Convolusions 5x5
Max Pooling 2x2
feature maps
20 @24x24
全結合レイヤ、活性化関数
— 50 @ 4x4 = 800ピクセルを、ベクトルにする。
— Fully connectedレイヤ (行列)
— ReLU : 活性化関数
— 𝑚𝑎𝑥 0, 𝑥
— Softmax : 活性化関数
—
𝑒𝑥𝑝 𝑎 𝑖
σ 𝑗
𝑛
𝑒𝑥𝑝 𝑎 𝑗
4/18/2017
Fully
connected
500 500
ReLU Fully
connected
Softmax
10 10
feature maps
50 @4x4
ニューラルネットワークモデルの定義
Protobuf モデルフォーマット
ネットワークモデル、および、トレー
ニングパラメータの定義
Caffeコードの自動生成、自動形
式チェック
高い可読性、強く型付けされてい
る
Googleにより開発された
Deep Learning model definition
name: “conv1”
type: “Convolution”
bottom: “data”
top: “conv1”
convolution_param {
num_output: 20
kernel_size: 5
stride: 1
weight_filler {
type: “xavier”
}
}
CAFFE の機能
Loss関数:
分類
Softmax
Hinge loss
線形回帰
Euclidean loss
多値分類
Sigmoid cross entropy loss
などなど…
使用可能なレイヤー種別:
Convolution
Pooling
Normalization
利用可能な関数:
ReLU
Sigmoid
Tanh
などなど…
ニューラルネットワークの定義
ラボのセットアップ
QWIKLAB アカウントの作成
— https://nvlabs.qwiklab.com/ にアクセス
— ページ右上の [Language (言語)] から
日本語を選択
— ハンズオン用のアカウントを作成
— 各項目を入力
— [サービス規約に同意] をチェック
— [新規アカウント作成してください] をクリック
アカウント未作成の方はこちらを実行してください
ログインしたら画面が英語の場合
表示言語の日本語への切り替え
1. https://nvlabs.qwiklab.com/ へアクセス
2. 画面右上の [My Account] をクリック
3. [PROFILE INFO] の [LANGUAGE] を “Japanese” へ変更
4. [UPDATE USER] をクリックして設定を保存
Qwiklab のアクセス方法
https://nvlabs.qwiklab.com/にアクセスし、[DLI20170418-Japan-DLI]->[DIGITSによる
ディープラーニング入門]を選択
DIGITS によるディープラーニング入門
①
②
③
ラボを開始する
ここをクリック
ラボへの接続
ここをクリック
37
Jupyter notebookの使い方
4/18/2017
タイマーカウントダウン
実行中は黒丸
それ以外は白丸
38
Jupyter notebookの使い方
4/18/2017
In []: と書いてあるセルは動的実行が出来ます
選択されていると緑の枠が
表示される
再生ボタンでセルの実行が出来る
(Shift-Enterでも良い)
Imagesから
“Classification”を選択
Login
小文字を使ってください。
ここを
選択
データセットの作成
1. Image Type : Grayscale
2. Image Size : 28 x 28
3. Training Images:
/home/ubuntu/data/train_small
4. “Separate test images folder” をチェック
5. Test Images :
/home/ubuntu/data/test_small
その1
4/18/2
1.
2.
3.
4.
5.
データセットの作成
その2
4/18/2
1. “MNIST small”を設定
2. “Create” ボタンを押す
モデルの作成
その1
4/18/2
1. 左上の”DIGITS”をクリックして、
HOME画面に戻る
2. New Model
Imagesから、
Classificationを選択
1. クリックしてホーム画面へ
2. ここを選択
モデルの作成
1. “MNIST small” データセットを選択
2. “Training Epochs” を10にする
その2
4/18/2
1. “MNIST small”データセットを選択
2. Training epochsを”10”に設定
モデルの作成
1. フレームワークは、“Caffe”を選択
2. モデルは、 “LeNet”を選択
3. モデル名は、“MNIST small”を入力
その2
4/18/2
1. “Caffe”を選択
2. “LeNet”を選択
3. “MNIST small”を
入力
4/18/2
Loss 関数
(検証用)
Loss 関数
(トレーニング)
Accuracy
検証データセット
から求められる。
一つのファイルでテスト
1. Image Pathに、以下を入力
/home/ubuntu/data/test_small/2/img_4415.png
2. “Show visualization and statistics”をチェック2. “Show visualization and statistics”をチェック
3. “Classify One”ボタンを押す
現実世界のイメージを試す
イメージリストファイルの取得
jupyterのページに戻る。
In [3] を実行(Ctrl + Enter)
出力される、an_image.listを右クリック
「テキストファイル」 として保存
イメージリストファイル
テストデータへのパスの列
テキストエディタで開いた時の
見え方
/home/ubuntu/notebook/test_images/image-1-1.jpg
/home/ubuntu/notebook/test_images/image-2-1.jpg
/home/ubuntu/notebook/test_images/image-3-1.jpg
/home/ubuntu/notebook/test_images/image-4-1.jpg
/home/ubuntu/notebook/test_images/image-7-1.jpg
/home/ubuntu/notebook/test_images/image-8-1.jpg
/home/ubuntu/notebook/test_images/image-8-2.jpg
http://bit.ly/dli04180101
右のテキストファイルは
下記 URL から取得できます。
イメージリストでテストする
1. Upload Image List
“Browse…”ボタンを押す
an_image.listを選択
2. “Classify Many”ボタンを押す
1. “Browse…”ボタンをクリック
an_image.listを選択
2. “Classify Many”ボタンを押す
最初の結果
Small dataset ( 30 epoch )
4/18/2
- Accuracy : 96 %
- トレーニングは、1分で終わる。
SMALL DATASET
1 : 99.90 %
2 : 69.03 %
8 : 71.37 %
8 : 85.07 %
0 : 99.00 %
8 : 99.69 %
8 : 54.75 %
FULL DATASET
6倍大きなデータセット
— データセット
— Training Images : /home/ubuntu/data/train_full
— Test Image : /home/ubuntu/data/test_full
— Dataset Name : MNIST full
— モデル
— “MNIST small”をクローン(Cloneボタンを押す).
— モデル名に、“MNIST full”を設定し、”Create”ボタンを押す.
4/18/2017
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 ( 30 epoch )
4/18/2
- 99 % of accuracy achieved.
- 現実世界の画像の認識には、
改善なし。
DATA AUGMENTATION
反転したイメージの追加
— Pixel(Inverted) = 255 – Pixel(original)
— 黒い背景に白い文字
→ 白い背景に黒い文字
—
Training Images :
/home/ubuntu/data/train_invert
— Test Image :
/home/ubuntu/data/test_invert
— Dataset Name : MNIST invert
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 %
DATA AUGMENTATION
反転したイメージの追加( 30 epoch )
4/18/2
ネットワークの修正
ReLUレイヤの追加と、コンボリューションフィルタの修正
INPUT
28x28 feature maps
20 → 75 @12x12
Convolusions 5x5
feature maps
75@8x8
Max Pooling 2x2
feature maps
20 → 75 @24x24
feature maps
50 -> 100@4x4
Max Pooling 2x2
Fully
connected
500 500
ReLU Fully
connec
10
ReLU Convolusions 5x5
LENETのネットワークをカスタマイズ
4/18/2017
Customizeを
クリック
ネットワークの可視化
4/18/2017
“Visualize”ボタンをクリック
ネットワークの修正
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数 */
...
ネットワークの修正
編集後、Visualizeボタンを押して、
ネットワークを確認。
ReLUレイヤの追加
conv1
20 → 75
conv2
50 → 100
reluP1
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 %
ネットワークの修正
フィルタとReLUレイヤの追加 ( 30 epoch )
4/18/2
www.nvidia.com/dli

More Related Content

PDF
ハンズオン1: DIGITS によるディープラーニング入門
PDF
DIGITSによるディープラーニング画像分類
PDF
ハンズオン セッション 3: リカレント ニューラル ネットワーク入門
PDF
自習形式で学ぶ「DIGITS による画像分類入門」
PDF
ハンズオン2: DIGITS による物体検出入門
PDF
ハンズオン セッション 2: DIGITS による物体検出入門
PDF
これから始める人の為のディープラーニング基礎講座
PDF
20161122 gpu deep_learningcommunity#02
ハンズオン1: DIGITS によるディープラーニング入門
DIGITSによるディープラーニング画像分類
ハンズオン セッション 3: リカレント ニューラル ネットワーク入門
自習形式で学ぶ「DIGITS による画像分類入門」
ハンズオン2: DIGITS による物体検出入門
ハンズオン セッション 2: DIGITS による物体検出入門
これから始める人の為のディープラーニング基礎講座
20161122 gpu deep_learningcommunity#02

What's hot (8)

PDF
DIGITS による物体検出入門
PDF
実用としての深層学習 ~深層学習の利用事例と展望~
PPTX
3Dリッチコンテンツビジネス活用のご提案ver3.1
PDF
3D CNNによる人物行動認識の動向
PDF
ゲームにおけるニューラルネットワーク「NERO における学習と進化 」(後半)
PPTX
オープンソースカンファレンス osc 2014 関西@京都 ownCloud性能検証
PDF
ディープラーニングの最新動向
PDF
Iot algyan jhirono 20190111
DIGITS による物体検出入門
実用としての深層学習 ~深層学習の利用事例と展望~
3Dリッチコンテンツビジネス活用のご提案ver3.1
3D CNNによる人物行動認識の動向
ゲームにおけるニューラルネットワーク「NERO における学習と進化 」(後半)
オープンソースカンファレンス osc 2014 関西@京都 ownCloud性能検証
ディープラーニングの最新動向
Iot algyan jhirono 20190111
Ad

Similar to ハンズオン セッション 1: DIGITS によるディープラーニング入門 (20)

PDF
Windows 展開の自動化ツール - Microsoft Deployment Toolkit
PPTX
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
PDF
install_guide_ja_JP fsaeqef adwadawdwapdf
PDF
第9回ACRiウェビナー_セック/岩渕様ご講演資料
PDF
Redmine Applied for Large Scale
PDF
Generative deeplearning #02
PPTX
【Dll171201】深層学習利活用の紹介 掲載用
PDF
MTDDC Tokyo テーマ編 プレゼン資料
PDF
Intel OpenVINO™ ツールキットのご紹介
PDF
エヌビディアが加速するディープラーニング ~進化するニューラルネットワークとその開発方法について~
PDF
OpenCV2.2 Install Guide ver.0.5
PDF
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
PDF
HELLO AI WORLD - MEET JETSON NANO
PDF
Tech Dojo 02/09 IBM Japan CSM
PDF
Citrix merchandizing server step by-step 構築&操作ガイド
PDF
Install guide ja_jp
PDF
[AI05] 目指せ、最先端 AI 技術の実活用!Deep Learning フレームワーク 「Microsoft Cognitive Toolkit 」...
PPTX
Kinect 2セミナー
PDF
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正前 typoあり)」
PPTX
熊本クラウド語ろう会 - Azure開発入門
Windows 展開の自動化ツール - Microsoft Deployment Toolkit
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
install_guide_ja_JP fsaeqef adwadawdwapdf
第9回ACRiウェビナー_セック/岩渕様ご講演資料
Redmine Applied for Large Scale
Generative deeplearning #02
【Dll171201】深層学習利活用の紹介 掲載用
MTDDC Tokyo テーマ編 プレゼン資料
Intel OpenVINO™ ツールキットのご紹介
エヌビディアが加速するディープラーニング ~進化するニューラルネットワークとその開発方法について~
OpenCV2.2 Install Guide ver.0.5
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
HELLO AI WORLD - MEET JETSON NANO
Tech Dojo 02/09 IBM Japan CSM
Citrix merchandizing server step by-step 構築&操作ガイド
Install guide ja_jp
[AI05] 目指せ、最先端 AI 技術の実活用!Deep Learning フレームワーク 「Microsoft Cognitive Toolkit 」...
Kinect 2セミナー
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正前 typoあり)」
熊本クラウド語ろう会 - Azure開発入門
Ad

More from NVIDIA Japan (20)

PDF
HPC 的に H100 は魅力的な GPU なのか?
PDF
NVIDIA cuQuantum SDK による量子回路シミュレーターの高速化
PDF
Physics-ML のためのフレームワーク NVIDIA Modulus 最新事情
PDF
20221021_JP5.0.2-Webinar-JP_Final.pdf
PDF
開発者が語る NVIDIA cuQuantum SDK
PDF
NVIDIA Modulus: Physics ML 開発のためのフレームワーク
PDF
NVIDIA HPC ソフトウエア斜め読み
PDF
HPC+AI ってよく聞くけど結局なんなの
PDF
Magnum IO GPUDirect Storage 最新情報
PDF
データ爆発時代のネットワークインフラ
PDF
Hopper アーキテクチャで、変わること、変わらないこと
PDF
GPU と PYTHON と、それから最近の NVIDIA
PDF
GTC November 2021 – テレコム関連アップデート サマリー
PDF
テレコムのビッグデータ解析 & AI サイバーセキュリティ
PDF
必見!絶対におすすめの通信業界セッション 5 つ ~秋の GTC 2020~
PDF
2020年10月29日 プロフェッショナルAI×Roboticsエンジニアへのロードマップ
PDF
2020年10月29日 Jetson活用によるAI教育
PDF
2020年10月29日 Jetson Nano 2GBで始めるAI x Robotics教育
PDF
COVID-19 研究・対策に活用可能な NVIDIA ソフトウェアと関連情報
PDF
Jetson Xavier NX クラウドネイティブをエッジに
HPC 的に H100 は魅力的な GPU なのか?
NVIDIA cuQuantum SDK による量子回路シミュレーターの高速化
Physics-ML のためのフレームワーク NVIDIA Modulus 最新事情
20221021_JP5.0.2-Webinar-JP_Final.pdf
開発者が語る NVIDIA cuQuantum SDK
NVIDIA Modulus: Physics ML 開発のためのフレームワーク
NVIDIA HPC ソフトウエア斜め読み
HPC+AI ってよく聞くけど結局なんなの
Magnum IO GPUDirect Storage 最新情報
データ爆発時代のネットワークインフラ
Hopper アーキテクチャで、変わること、変わらないこと
GPU と PYTHON と、それから最近の NVIDIA
GTC November 2021 – テレコム関連アップデート サマリー
テレコムのビッグデータ解析 & AI サイバーセキュリティ
必見!絶対におすすめの通信業界セッション 5 つ ~秋の GTC 2020~
2020年10月29日 プロフェッショナルAI×Roboticsエンジニアへのロードマップ
2020年10月29日 Jetson活用によるAI教育
2020年10月29日 Jetson Nano 2GBで始めるAI x Robotics教育
COVID-19 研究・対策に活用可能な NVIDIA ソフトウェアと関連情報
Jetson Xavier NX クラウドネイティブをエッジに

ハンズオン セッション 1: DIGITS によるディープラーニング入門