Más contenido relacionado Similar a Chainer Familyで始めるComputer Visionの研究・開発【修正版】 (9) Chainer Familyで始めるComputer Visionの研究・開発【修正版】2. 自己紹介
おさかなさん (@sakanazensen)
Engineer at Preferred Networks, Inc.
• ~2010 高専@山口(高専プロコン)
• ~2012 B 豊橋技科大(内視鏡画像からのSfM)
• ~2014 M 名大院 村瀬研(Semi-supervisedな歩行者検出)
• nagoyacv 2代目幹事
• ~2016 Web系IT企業 エンジニア(兼 日曜Cver)
• 2016.9~ エンジニア
24. 勾配の計算:backprop(導出は省き、操作の雰囲気だけ)
𝑓1(𝑥0) 𝑓2(𝑥1) 𝑓3(𝑥2)𝑥0 𝐶𝑥1 𝑥2
誤差𝛿3
勾配
𝜕𝐶
𝜕𝒘3𝛿2
𝜕𝐶
𝜕𝒘2𝛿1
𝜕𝐶
𝜕𝒘1
• 層𝑘の誤差𝛿 𝑘 = 出力側隣の𝛿 * 出力側隣の重み * 𝑓𝑘
′
(この層の入力𝑥)
• 層𝑘の重みの勾配
𝜕𝐶
𝜕𝒘 𝑘
= 誤差𝛿 𝑘 * 入力側隣の出力
出力層の誤差𝛿が求まると入力側まで順に𝛿が求まり勾配が計算できる
計算グラフをたどって
出力側ノードから伝達される
各層の関数は同時に
導関数𝑓𝑘
′
も持ち、BP時に計算
56. 高度な学習をする場合
example: GAN
• GeneratorとDiscriminatorの2つのNNを同時かつ独立に学習する
• Optimizerを2つ持つupdaterが必要
example: Triplet loss (類似度学習NN)
• 最新のモデルの出力で次に投入するデータを決める
• 特殊なIteratorの自前実装が必要
※1 http://gluon.mxnet.io/chapter14_generative-adversarial-networks/dcgan.html
※2 https://arxiv.org/pdf/1503.03832.pdf
※1
※2
(Chainerに限らず当然ですが)
ある程度DL世界とChainer世界の関係
が頭の中で対応づいてる必要がある
61. Chainerを使いこなすために必要なもの・こと
• ニューラルネット・深層学習の基本の理解
• 基本的な理論
• 学習のアルゴリズム、フロー
• Pythonとnumpyである程度自由に書けること
• 多少のComputer Science的な思考回路
• 技術文書を読める程度の英語力
• GPUが1024台※程あると便利。無い人は で待ってます!
Chainerに限った
話じゃない!
個人の見解です!
1536台※
※ https://www.preferred-networks.jp/ja/news/pr20170920
※ https://www.preferred-networks.jp/ja/news/pr20180328
65. numpy vs cupy with Chainer
example: ここまでお馴染み3層MLP
ポイント
• cupy.arrayをnumpy.arrayから生成
• to_gpuでモデル(の重み)をGPUに送る
• 同じコードがまるっと使いまわせる
• to_gpuの有無だけで完全にCPU/GPU互換に
67. numpy vs cupy: performance
example: 先ほどのモンテカルロ𝜋計算のベンチマーク
※cupyでは1回目だけはCUDAカーネルのコンパイルが走るので少し時間がかかります
時間/回 倍率
numpy 6.14秒 x1.00
cupy 0.171秒 x35.96
機械学習以外の一般データ解析にも非常に便利
※i7-7700K, GTX1080Ti, cupy4.0
68. numpy vs cupy: performance
example: VGG16の順伝搬
VGG16 時間/回 倍率
numpy 662ms x1.00
cupy 4.9ms 135x
cupy+cuDNN 3.4ms 194x
※cupyは、使える時は自動でcuDNNを使う
※4.0からiDeep(MLK-DNN)が使えるので、CPUでも速くなります
※i7-7700K, GTX1080Ti, cupy4.0
71. ChainerCV: 即利用可能なCV関連実装群
Webサイト http://chainercv.readthedocs.io/en/stable/
Github https://github.com/chainer/chainercv
Y. Niitani, et al., “ChainerCV: a Library for Deep Learning in Computer Vision,” in Proc of ACM Multimedia, 2017
Vision tasks
Image Classification ResNets, VGG
Object Detection SSD, Faster-RCNN
Semantic Segmentation SegNet
Misc
基本的な画像処理 画像変形、Data Aug etc
データセットローダー VOC, Cityscapes, CamVid etc
その他ユーティリティ 精度評価、可視化、etc
84. データセットも巨大化している
• ImageNet (ILSVRC) ← 最早かわいいレベルの規模
• 約100万枚のラベル付き静止画
• YouTube-8M https://research.google.com/youtube8m/
• 700万本の動画とその関係を表すグラフ
• VGGFace2 https://www.robots.ox.ac.uk/~vgg/data/vgg_face2/
• 9100人から撮った330万枚の顔画像
• 産業応用各社も多数の専任スタッフでデータセットを作る
• 自動運転技術のMobileEye社は2016時点で600人 https://bit.ly/2HPsHLG
モデルの表現能力・識別能力の飛躍的な向上により、データも大規模に
85. データセットも巨大化している
• ImageNet (ILSVRC) ← 最早かわいいレベルの規模
• 約100万枚のラベル付き静止画
• YouTube-8M https://research.google.com/youtube8m/
• 700万本の動画とその関係を表すグラフ
• VGGFace2 https://www.robots.ox.ac.uk/~vgg/data/vgg_face2/
• 9100人から撮った330万枚の顔画像
• 産業応用各社も多数の専任スタッフでデータセットを作る
• 自動運転技術のMobileEye社は2016時点で600人 https://bit.ly/2HPsHLG
モデルの表現能力・識別能力の飛躍的な向上により、データも大規模に
GPU1台、ワークステーション1台で
何とかなる規模ではなくなってきた!
→学習の大規模化が必要
86. Training ImageNet in 15mins
• 当時の世界記録
• NVIDIA CEO J. Huangが
SC’17で紹介
• 1024台のTesla P100と
ChainerMNを使用
• ResNet50を90epoch
T. Akiba et al., “Extremely Large Minibatch SGD: Training ResNet-50 on ImageNet in 15 Minutes,” https://arxiv.org/abs/1711.04325
95. ONNX; Open Neural Network eXchange format
NNの構造と重みを可搬に
するための共通フォーマット
https://onnx.ai/
• 研究成果を非Chainerユーザの
研究者向けに公開
• Chainerで学習したモデルを組み込み
機器上で専用の推論エンジンで実行
• …
http://onnx.ai/supported-tools
98. 産業応用:推論エンジンと組み合わせる
NVIDIA TensorRTにONNXを入れてみる
ResNet152 時間/回 倍率
cupy+cuDNN 51ms 1.0x
TensorRT FP32 7.0ms 7.3x
TensorRT INT8 3.2ms 15.9x
※i7-7700K, GTX1080Ti, cupy4.0
• NVIDIA GPU上で使える推論エンジン
• 静的な構造のNNを前提とした最適化
• 計算グラフの最適化
• CUDAカーネルの選択
• メモリ最適化
• モデルをFP16/INT8へ変換
• …
ARM等でもONNX対応の推論エンジンがある
(Snapdragon NPE SDKなど)
産業応用(組込み機器への
デプロイ)も容易に
100. Chainer v4: what’s new
• intel-chainer導入 (iDeep; MKL-DNNのPythonフロントエンド)
• CaffeExport/ONNX-Chainerの導入
• chainer.Sequential
• 使用する層を定義するだけで順伝搬を自動生成(Keras風のNN定義)
• cuDNNの改善
• Autotune: 最適なConvのCUDAカーネルを自動で選択
• TensorCoreサポート: Volta GPUでの性能向上
• FP16での学習のサポート
• etc…
101. Cupy v4: what’s new
• (Chainerと合わせるため、3がスキップされ2から4に)
• 継続的なnumpy/scipy機能の実装
• FFTなど
• Cupy単独利用時のメモリプール使用のデフォルト化
• 細かなメモリの確保・開放があるコードでの性能改善
• (Chainerではもともと有効化されている)
• バイナリ配布
• インストールが素早く
• etc…
105. 便利なリンク集
• PFN正社員応募サイト
• PFN2018インターン応募要項
• Chainer website, document, github
• Cupy website, document, github
• Official Twitter (en and jp)
• Official Chainer Slack (en and jp)
• Q&Aやアナウンスが流れます
• Forum (en and jp)
• Chainer blog
• Chainer Playground
• Chainerをインタラクティブ学ぶ
• Awesome Chainer
• 充実した公式リンク集
• Chainer関連の公式イベント
• Chainer meetupなど
• Chainerの開発と今後の展開
• Introduction to Chainer (July 2017)
• Chainerで加速する深層学習と
フレームワークの未来@GTCJ’17 by PFN海野
• Cupyの解説 by CTO奥田
• ChainerCVのACMMM発表と論文
• ChainerMNのGTC発表と論文
• 1-file chainer by PFN斎藤
• Chainerの仕組みを深く理解するのに最適な資料
• ビギナー向けチュートリアル for Chainer 3.1
• その他のChainer Family
• ChainerRL (強化学習)
• ChainerChem (物性予測の実験的プロジェクト)
• Chainer Advent Calendar 2015, 2016, 2017
• Deep Learning Framework Examples
• 他ライブラリと性能・コードの比較
107. PFN 2018インターン 開催します
• 約2ヶ月間フルタイムでPFN社員と研究開発
• 研究成果の論文化・開発成果のOSS化が可能
• 待遇
• 交通費宿泊費PFN負担
• その他詳細はウェブサイトで
• 選考
• 応募書類提出→録画面接→
コーディング面接→オフィスでの面接
https://www.preferred-networks.jp/ja/news/internship2018summer_jp
応募締切:4月30日 23:59
中間発表(ポスター)の様子
毎日社員と過ごします
108. PFN 2018インターン 募集テーマ例
• 機械学習/深層学習の理論研究
• コンピュータビジョン
• 深層強化学習
• ロボティクス
• バイオヘルスケア
• 分散深層学習/深層学習
のためのHPC・分散データ管理
• 自然言語処理
• 音声処理
• VR/AR
• HCI
• 深層学習のアニメーション応用・クリエーター支援
• Chainer本体の開発
• Chainerベースの分野特化ライブラリ開発
• 異常検知等の機械学習アルゴリズムの研究開発
• 機械学習のための情報可視化ツール・フロントエンド開発
• 機械学習のための研究支援・クラスタ管理・実験管理システ
• 深層学習のための専用アクセラレータ/プロセッサ開発
• 深層学習のためのコンパイラ/オプティマイザ開発
• IoT/Edge Heavy Computingプラットフォームの開発
• 深層学習のチューニング自動化のための研究開発
• スポーツデータ解析←New!
• その他
https://www.preferred-networks.jp/ja/news/internship2018summer_jp
応募締切:4月30日 23:59
技術的に面白くて高度なら
何でもありです!
Notas del editor TODO: chainer logoとか貼る
https://www.preferred-networks.jp/ja/pfn-logo
https://yuyu2172.github.io/chainercv-chainer-meetup/#1
https://chainer.org/ TODO: complete TODO: complete TODO: chainer logoとか貼る
https://www.preferred-networks.jp/ja/pfn-logo
https://yuyu2172.github.io/chainercv-chainer-meetup/#1
https://chainer.org/ TODO Fix iDeep TODO Fix iDeep 海野さんのではvariableとfunctionが逆(variableがノード、functionがエッジ) 海野さんのではvariableとfunctionが逆(variableがノード、functionがエッジ)
青い本のp47がわかりやすい 海野さんのではvariableとfunctionが逆(variableがノード、functionがエッジ)
青い本のp47がわかりやすい 海野さんのではvariableとfunctionが逆(variableがノード、functionがエッジ)
青い本のp47がわかりやすい 海野さんのではvariableとfunctionが逆(variableがノード、functionがエッジ)
青い本のp47がわかりやすい 海野さんのではvariableとfunctionが逆(variableがノード、functionがエッジ)
青い本のp47がわかりやすい 海野さんのではvariableとfunctionが逆(variableがノード、functionがエッジ)
青い本のp47がわかりやすい 海野さんのではvariableとfunctionが逆(variableがノード、functionがエッジ)
青い本のp47がわかりやすい https://commons.wikimedia.org/wiki/File:Note.svg 巨大な構造の記述も容易
forなどで呼び出し 巨大な構造の記述も容易
forなどで呼び出し http://gluon.mxnet.io/chapter14_generative-adversarial-networks/dcgan.html シーシェパードもにっこり 上の方で使うMNISTのネットワークをここにはって、to_gpuしてcallするのとto_gpuしないでcallする、というコードを貼るだけ。 画像のresizeとかも速くなったよ! https://github.com/cupy/cupy/blob/master/cupyx/scipy/ndimage/interpolation.py 画像のresizeとかも速くなったよ! https://github.com/cupy/cupy/blob/master/cupyx/scipy/ndimage/interpolation.py 画像のresizeとかも速くなったよ! https://github.com/cupy/cupy/blob/master/cupyx/scipy/ndimage/interpolation.py cat http://photozou.jp/photo/show/258557/26359129
cat2 https://www.pexels.com/photo/cat-whiskers-kitty-tabby-20787/
airplane https://pixabay.com/en/airplane-aircraft-commercial-744865/
https://blog.heuritech.com/2016/03/02/yann-lecun-lectures-at-the-college-de-france-n3/ 何か画像を右に貼りたい https://drive.google.com/file/d/1E8MHyHNOUC-OcP6c7sSjobvygQl1PUqS/view 図は https://docs.google.com/presentation/d/1Hyg-dbXFlxRwYboGGal_mlJKKJQeDfiSIH0gN8zYc7s/edit#slide=id.g270420194e_2_15 https://pixabay.com/ja/車-車両-自動車-1-つのドア-側-赤-308456/
https://pxhere.com/ja/photo/1267471
https://pixabay.com/ja/世界-地図-大陸-708823/
https://pixabay.com/ja/コンピュータ-オフィス-ワーカー-入力-プログラマ-開発者-146329/
http://logos.wikia.com/wiki/File:Nvidia_logo.png 写真
https://research.preferred.jp/2016/10/intern2016/