ソニーのNeural Network Console大勉強会
ソニーネットワークコミュニケーションズ株式会社 / ソニー株式会社
シニアマシンラーニングリサーチャー
小林 由幸
Neural Network Console活用テクニックのご紹介
2
自己紹介
小林 由幸
1999年にソニーに入社、2003年より機械学習
技術の研究開発を始め、音楽解析技術「12音
解析」のコアアルゴリズム、認識技術の自動
生成技術「ELT」などを開発。近年は
「Neural Network Console」を中心にディー
プラーニング関連の技術・ソフトウェア開発
を進める一方、機械学習普及促進や新しいア
プリケーションの発掘にも注力。
@frievea
3
Neural Network Console
商用クオリティのDeep Learning応用技術(画像認識機等)開発のための統合開発環境
コーディングレスで効率の良いDeep Learningの研究開発を実現
クラウド版(オープンβ期間中)Windows版(無償)
dl.sony.com
インストールするだけ、もしくはサインアップするだけで本格的なDeep Learning開発が可能
成果物はオープンソースのNeural Network Librariesを用いて製品、サービス等への組み込みが可能
4
Neural Network Libraries / Consoleのソニーグループ内活用事例
価格推定 ソニー不動産の「不動産価格推定エンジン」に、Neural Network
Librariesが使用されています。この技術を核として、ソニー不動産が持つ査定ノウハウ
やナレッジをベースとした独自のアルゴリズムに基づいて膨大な量のデータを解析し、
不動産売買における成約価格を統計的に推定する本ソリューションが実現されました。
本ソリューションは、「おうちダイレクト」や、「物件探索マップ」「自動査定」など、
ソニー不動産の様々なビジネスに活用されています。
ジェスチャー認識 ソニーモバイルコミュニケーションズの「Xperia Ear」の
ヘッドジェスチャー認識機能にNeural Network Librariesが使用されています。「Xperia
Ear」に搭載されているセンサーからのデータを元に、ヘッドジェスチャー認識機能に
より、首を縦や横に振るだけで、「Xperia Ear」に搭載されているアシスタントに対し
て「はい/いいえ」の応答や、着信の応答/拒否、通知の読み上げキャンセル、次/前
のトラックのスキップを行えます
デジタルペーパー ソニーのデジタルペーパー「DPT-RP1」の手書きマーク検索
のうち、*の認識にNeural Network Librariesが使用されています。文書を読んでいて
「ここが大切」「ここを後で読みたい」と思ったら、 *や☆のマークをさっと手書きし
ます。手書きマークを認識する機能により、ページ数の多い文書でも、マークを付けた
箇所を素早く検索し、開くことができます。
既にソニーグループ内で多数の商品化・実用化実績
5
6
認識機を作成するために必要な作業(画像認識機における例)
…
…
…
…
…
…
…
画像認識機
(Neural Network)
Input:画像 Output:画像認識結果
「2」
1. データセットを用意する
入力と、期待する出力のペアを多数用意
2. ニューラルネットワークの構造を
設計する
(サンプルを利用可能)
3. 用意したデータセットで、設計した
ニューラルネットワークを学習する
基本的にはこの3ステップで画像認識機を作成することができる
… 「0」
… 「1」
… 「2」
… 「3」
… 「4」
… 「5」
… 「6」
… 「7」
… 「8」
… 「9」
(自動)
7
入出力次第で無限に広がるDeep Learningの応用
Deep Learning応用開発人材の育成と、活用の促進が求められる
…入力 出力
実現する機能 入力 出力
画像認識 画像 カテゴリ
文章の自動仕分け 文章 文章カテゴリ
音声認識 音声 文字列
機械翻訳 英単語列 日単語列
人工無能(チャット) 入力発話の単語列 期待応答の単語列
センサ異常検知 センサ信号 異常度
ロボット制御 ロボットのセンサ ロボットのアクチュエーター
…
実現する機能
LIVE DEMO
9
Neural Network設計の基礎
1層(Logistic Regression)
2層(Multilayer perceptron)
Convolutional Neural Networks(CNN)
Input:データ入力
→ Convolution
→ ReLU
→ MaxPooling
→ Affine
→ ReLU
→ Affine
→ Softmax
→ Categorical
Crossentropy
繰り返し
配置
最後の
仕上げ
(分類問題時)
基本はそんなに難しくありません!是非色々試してみましょう
10
会場からのご質問と、リクエスト
ご質問
• コード書くより速く開発できますか?
• デバッグや試行錯誤が圧倒的に楽です!
• RNN系の扱い方
• チュートリアルを拡充していきます!
• 今後の広報活動は?
• blogやTwitterで随時案内します! @NNC_NNL_Jpn
リクエスト
• ARMのビルドが欲しい
• QualcommのDSP等に対応してほしい
• テキストデータを簡単に扱いたい(分散表現、識別タスク、生成タスク)。テキスト系exampleの充実
• Mac、Linux版Console
• 簡単にextensionを実装したい
⇒関係者(主に私)にもれなく伝えます!
11
Q1. 画像認識以外にも使えますか?
A. Yes。ベクトルや行列の入出力にも対応しています
neural_network_consolesamplessample_datasetiris_flowe
r_dataset
ベクトルデータの場合
以下のようなフォーマットのデータセットCSVファイルを
用意してConsoleに読み込みます
例)フィッシャーのアヤメ
がく、花びらの長さ、幅 あやめの種類
入力センサデータのcsvファイル
データセットCSVファイル
行列データの場合
1つ1つの行列を1つのCSVファイルとし、
データセットCSVファイルにそのファイル名を記入します
12
Q2. テキストの入出力方法は?
A. 事前にテキストの単語Index系列もしくはベクトル系列への変換が必要です
ベクトル系列形式のテキスト
・各単語が固定長次元のベクトルで表現される
・各単語の固定長ベクトルはWord2vec等で学習
単語Index系列
・0から始まる単語のIndexを文頭から順に並べるのみ
まずはテキストを単語に分割し、Index化する
・例えば3千個の頻出単語を選択し、その他は1つの
単語にまとめるなどする
・上記3001単語に0~3000のIndexを振る
文末
↓
↑
文頭
文末
↓
↑
文頭
←1単語分の
ベクトル
13
Q3. 複数の入出力を扱えますか?
A. Yes。InputレイヤーやLossレイヤーを複数配置するだけで実現できます
データセットCSVファイルに複数変数のデータを定義
・1行に1データ(例えばxとy)のルール
・変数名は何でもよく、変数の数はいくつでもよい
・画像、ベクトル、行列が混在してもよい
Inputレイヤーで変数を入力
・Datasetプロパティで入力する変数名を指定
Lossレイヤーで、ネットワーク出力と目的変数の値を近づける
・T.Datasetプロパティに目的変数とする変数名を指定
←y(画像)
←c(画像)
←x(行列)
a(画像)→
z(スカラ)→
b(画像)→
14
Q4. 転移学習(Transfer Learning)はできますか?
A. できます。
学習済みネットワークを重み係数付きで読み込み
・学習結果リストを右クリックしたメニューから、
Open in EDIT tab with Weightを選択
・ConvolutionやAffineレイヤーのW.File、
b.Fileプロパティなどに学習済みの重み
ファイルが読み込まれる
学習させたくない(再利用)レイヤーの重みを固定
・重みを固定するレイヤーの*.LRateMultiplierプロパ
ティを0に設定
・例えば、最後のレイヤー以外全
て選択してこれらのプロパティを
0にする
15
Q5. 重みパラメータやニューロンの途中出力は可視化できますか?
A. できます。
重みパラメータの可視化は、TRAININGタブから
・Overviewのレイヤーをダブルクリックして重みパ
ラメータを可視化
ダブルクリック
途中結果は、以下の手順で可視化可能
・Transfer Learningと同様に、重みパラメータを読み込み
・途中出力が出力されるように、ネットワークを編集
・学習実行ボタンを右クリックし、Create Training Resultを選択
(学習は行わず、ネットワークを出力)
・評価実行を行い、評価結果として途中出力を得る
ReLUの後を
SquaredErrorにし、
ここの出力をモニタ
16
Neural Network LibrariesとConsoleの位置づけ
Neural Network Libraries
・プログラマ向けの関数ライブラリ(他社製Deep
Learningフレームワークと同じカテゴリに分類)
・コーディングを通じて利用→高い自由度
・最先端の研究や機能の追加にも柔軟に対応
Neural Network Console
・研究や、商用レベルの技術開発に対応した
Deep Learningツール。
・様々なサポート機能→高い開発効率
・GUIによるビジュアルな操作→敷居が低い
主なターゲット
・じっくりと研究・開発に取り組まれる方
・プログラミング可能な研究、開発者
import nnabla as nn
import nnabla.functions as F
import nnabla.parametric_functions as PF
x = nn.Variable(100)
t = nn.Variable(10)
h = F.tanh(PF.affine(x, 300, name='affine1'))
y = PF.affine(h, 10, name='affine2')
loss = F.mean(F.softmax_cross_entropy(y, t))
主なターゲット
・特に開発効率を重視される方
・はじめてDeep Learningに触れる方
内部でNeural Network
Librariesを利用
17
Neural Network Librariesの特長1:洗練された文法構造
• CPU/GPUを切り替えてもネットワーク、学習コードの変更不要!
以下のコードをネットワーク定義前に追加するのみ
CPU/GPU間の転送は必要な時に自動で行われます(意図的に行わせることも可能)
• Dynamic/Static Networkなど切り替えも、動的実行宣言の1行追加のみ!
• Multi GPU時も、ネットワークコードの変更なし、学習コードの変更もわずか!
同じコードで様々な環境で動作
from nnabla.contrib.context import extension_context
nn.set_default_context(extension_context('cuda.cudnn'))
# 動的NNモードに変更
nn.set_auto_forward(True)
for i in range(max_iter):
…
loss.backward(clear_buffer=True)
# デバイス間でパラメタを交換
comm.allreduce(division=False, inplace=False)
solver.update()
学習コード中の変更は1行
18
Neural Network Librariesの特長2:プラグインでデバイス追加
宣言一つで、APIやコア部分はそのままに、特定デバイス用のコードを利用
High-level API
•Python API
•C++ API
•CLI
•Utils
CPU Implements
•Array
•Function
•Solver
•Communicator
Core
•Variable
•CoputationGraph
•…
nnabla
nnabla-ext-cuda
CUDA Implements
•CudaArray
•Function
•Solver
•Communicator
from nnabla.contrib.context import extension_context
nn.set_default_context(extension_context('cuda.cudnn'))
宣言一つで、
APIやコア部分はそのままに、
特定デバイス用のコードを利用○○ Implements
•Array
•Function
•Solver
•Communicator
nnabla-ext-cudaをフォークし
特定デバイス用実装を開発可
nnabla-ext-○○
19
例)Neural Network LibrariesのAffineCUDA実装
template <class T>
void AffineCuda<T>::forward_impl(const Variables &inputs, const Variables &outputs) {
cuda_set_device(std::stoi(this->ctx_.device_id));
const T *x = inputs[0]->get_data_pointer<T>(this->ctx_);
const T *w = inputs[1]->get_data_pointer<T>(this->ctx_);
T *y = outputs[0]->cast_data_and_get_pointer<T>(this->ctx_);
// y = x * w.
...
}
template <class T>
void AffineCuda<T>::backward_impl(const Variables &inputs, const Variables &outputs,
const vector<bool> &propagate_down, const vector<bool> &accum) {
cuda_set_device(std::stoi(this->ctx_.device_id));
const T *dy = outputs[0]->get_grad_pointer<T>(this->ctx_);
if (propagate_down[0]) {
T *dx = inputs[0]->cast_grad_and_get_pointer<T>(this->ctx_);
const T *w = inputs[1]->get_data_pointer<T>(this->ctx_);
// dx += dy * w^t
...
}
Forward計算
Backward計算
新しいデバイスへの移植は、基本的にココがメイン
(他にSetupがある)
20
Neural Network Librariesの特長3:学習結果はC++で組み込み可
Framework
A
Exchange
format
Runtime
software B
サーバー学習 組み込み推論
“レイヤー zzz がありません”
NNLのC++ APIはコアが同じなので大丈夫!
C++ core
Python API C++ API
学習済
モデル
推論エンジンへの組み込みでよくある躓きポイント
学習時に使ったコアをそのままデバイス上で利用するため、実装がスムーズ
21
学習済ニューラルネットワークを利用する方法は3通り
• Neural Network Libraries Pythonコードからの実行 おすすめ
• Neural Network LibrariesのCLI(Python利用)からの実行 簡単
• Neural Network Libraries C++からの実行 コンパクトに製品搭載する際に
• https://github.com/sony/nnabla/tree/master/examples/cpp/mnist_runtime
python "(path of Neural Network Console)/libs/nnabla/python/src/nnabla/utils/cli/cli.py" forward
-c Network definition file included in the training result folder (net.nntxt)
-p Parameter file included in the training result folder (parameters.h5)
-d Dataset CSV file of input data
-o Inference result output folder
1. Neural Network Console上で推論に用いるネットワークを右クリックして、Export、Python Code
(NNabla)を選択
2. 学習結果のparamters.h5を、load_parametersコマンドで読み込み
import nnabla as nn
nn.load_parameters('./parameters.h5')
3. 2によりパラメータが読み込まれた状態で、1でExportされたネットワークを実行(forward)
22
その他の特長
• 信号処理、回帰、異常検知など、様々なタスクに対応
• ResNet-152など大型のネットワークの設計や学習に対応
• LSTM、GRUなどのRecurrent neural networks (RNN) にも対応
• Generative Adversarial Networks (GAN)、半教師学習など、複数のネットワーク
を用いた複雑な構成にも対応
• …
23
Neural Network Libraries / Consoleまとめ
ライブラリ・ツールの提供を通じ、需要の急拡大するAI技術の普及・発展に貢献
Neural Network Libraries
https://nnabla.org
ニューラルネットワークの研究・開発・実装を効率化するオープンソースソフトウェア
Neural Network Console
https://dl.sony.com
ニューラルネットワークを直感的に設計。学習・評価を快適に実現するツール
• 様々な環境に簡単セットアップ
• 1つのコードで様々な環境に対応する洗練された文法構
造(CPU/GPU切り替え、マルチノード、動的ニューラ
ルネットワーク利用時も必要なコードの変更はごく僅
か)
• オーバーヘッドの小さい設計で、シングルGPU/マルチ
GPU/マルチノード実行時とも高速
• コンバート不要でC++を用いた組み込みが可能
• ドラッグ&ドロップでニューラルネットワークを設計
• 学習履歴の管理機能など、快適なDeep Learningの研究
開発をサポートする機能を多数搭載
• ニューラルネットワークのチューニングを自動化する、
構造自動探索機能
• 学習したニューラルネットワークは、オープンソースの
Neural Network Librariesを用いた組み込みが可能
@NNC_NNL_jpn
SONYはソニー株式会社の登録商標または商標です。
各ソニー製品の商品名・サービス名はソニー株式会社またはグループ各社の登録商標または商標です。その他の製品および会社名は、各社の商号、登録商標または商標です。

More Related Content

PPTX
2018/3/23 Introduction to Deep Learning by Neural Network Console
PPTX
【RSJ2021】LiDAR SLAMにおける高信頼なループ閉合の実装について
PPTX
2018/06/22 Neural Network Console Tutorial
PDF
20190825 vins mono
PPTX
Res netと派生研究の紹介
PDF
SLAM入門 第2章 SLAMの基礎
PDF
Data-Centric AI開発における データ生成の取り組み
PPTX
DeNAの最新のマスタデータ管理システム Oyakata の全容
2018/3/23 Introduction to Deep Learning by Neural Network Console
【RSJ2021】LiDAR SLAMにおける高信頼なループ閉合の実装について
2018/06/22 Neural Network Console Tutorial
20190825 vins mono
Res netと派生研究の紹介
SLAM入門 第2章 SLAMの基礎
Data-Centric AI開発における データ生成の取り組み
DeNAの最新のマスタデータ管理システム Oyakata の全容

What's hot (20)

PPTX
SSII2014 チュートリアル資料
PDF
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
PDF
Unityでロボットの教師データは作れる!
PPTX
【DL輪読会】High-Resolution Image Synthesis with Latent Diffusion Models
PDF
ROS を用いた自律移動ロボットのシステム構築
PDF
ユーザに価値を届けるためのデータプラットフォームの考え方
PDF
ポストモーテムやってみた #yjbonfire
PDF
第1回 配信講義 計算科学技術特論A (2021)
PPTX
mcl_3dl: amcl並に軽量な3-D/6-DoFローカリゼーションパッケージ
PPTX
MLOpsはバズワード
PDF
継承やめろマジやめろ。 なぜイケないのか 解説する
PDF
[2018-03-29]JSPP18 Oxford Flower Image Datasetを用いた深層学習ハンズオン
PDF
Apache tinkerpopとグラフデータベースの世界
PDF
Obsのプラグイン作ってみた
PDF
ChatGPT、 何が「できる」「みえる」ようになってきたのか!
PPTX
DRIVE CHARTを支えるAI技術
PDF
CV分野での最近の脱○○系3選
PDF
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
PPTX
【DL輪読会】Dropout Reduces Underfitting
PDF
Introduction to YOLO detection model
SSII2014 チュートリアル資料
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
Unityでロボットの教師データは作れる!
【DL輪読会】High-Resolution Image Synthesis with Latent Diffusion Models
ROS を用いた自律移動ロボットのシステム構築
ユーザに価値を届けるためのデータプラットフォームの考え方
ポストモーテムやってみた #yjbonfire
第1回 配信講義 計算科学技術特論A (2021)
mcl_3dl: amcl並に軽量な3-D/6-DoFローカリゼーションパッケージ
MLOpsはバズワード
継承やめろマジやめろ。 なぜイケないのか 解説する
[2018-03-29]JSPP18 Oxford Flower Image Datasetを用いた深層学習ハンズオン
Apache tinkerpopとグラフデータベースの世界
Obsのプラグイン作ってみた
ChatGPT、 何が「できる」「みえる」ようになってきたのか!
DRIVE CHARTを支えるAI技術
CV分野での最近の脱○○系3選
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
【DL輪読会】Dropout Reduces Underfitting
Introduction to YOLO detection model
Ad

Similar to 20171206 Sony Neural Network Console 活用テクニック (20)

PPTX
2018/6/26 deep learning Neural Network Console hands-on
PPTX
20190313_Introduction of ai development neural network console which became f...
PPTX
2018/06/23 Sony"s deep learning software and the latest information
PPTX
20190316_Let's try low power-consumption ai with sony's spresense hands-on
PPTX
20171212 Sony Neural Network Libraries and Console for GTC Japan 2017
PDF
ソニーのディープラーニングツールで簡単エッジコンピューティング
PPTX
2018/02/27 Recurrent Neural Networks starting with Neural Network Console
PDF
オープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステム
PDF
2021 03-09-ac ri-nngen
PPTX
2018/07/26 Game change by Deep Learning and tips to make a leap
PDF
0から理解するニューラルネットアーキテクチャサーチ(NAS)
PDF
エヌビディアが加速するディープラーニング ~進化するニューラルネットワークとその開発方法について~
PPTX
2018/06/21 Game Change of deep learning and practical examples of Sony
PDF
深層学習フレームワーク Chainer の開発と今後の展開
PDF
Deep learningの概要とドメインモデルの変遷
PDF
2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介
PDF
Convolutional Neural Networks のトレンド @WBAFLカジュアルトーク#2
PDF
深層学習フレームワークChainerの紹介とFPGAへの期待
PPTX
生成系ニューラルネットワークまとめ Summary of Generative Neural Network
PDF
自然言語処理に適した ニューラルネットのフレームワーク - - - DyNet - - -
2018/6/26 deep learning Neural Network Console hands-on
20190313_Introduction of ai development neural network console which became f...
2018/06/23 Sony"s deep learning software and the latest information
20190316_Let's try low power-consumption ai with sony's spresense hands-on
20171212 Sony Neural Network Libraries and Console for GTC Japan 2017
ソニーのディープラーニングツールで簡単エッジコンピューティング
2018/02/27 Recurrent Neural Networks starting with Neural Network Console
オープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステム
2021 03-09-ac ri-nngen
2018/07/26 Game change by Deep Learning and tips to make a leap
0から理解するニューラルネットアーキテクチャサーチ(NAS)
エヌビディアが加速するディープラーニング ~進化するニューラルネットワークとその開発方法について~
2018/06/21 Game Change of deep learning and practical examples of Sony
深層学習フレームワーク Chainer の開発と今後の展開
Deep learningの概要とドメインモデルの変遷
2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介
Convolutional Neural Networks のトレンド @WBAFLカジュアルトーク#2
深層学習フレームワークChainerの紹介とFPGAへの期待
生成系ニューラルネットワークまとめ Summary of Generative Neural Network
自然言語処理に適した ニューラルネットのフレームワーク - - - DyNet - - -
Ad

20171206 Sony Neural Network Console 活用テクニック

Editor's Notes

  • #6: プレス文より「なお、Neural Network Console のベースとなるNeural Network Librariesを用いた学習および認識機は、エンタテインメントロボット“aibo”(アイボ)『ERS-1000』にも採用しており、鼻先の魚眼レンズによる画像認識の人物判定から顔トラッキング、チャージステーションの認識、一般物体認識などを実現しています。」