Neural Network Libraries v1.10.0をリリースしました!
Google Colabを利用したインタラクティブデモを追加しました!プログラミングスキルの有無やGPU実行環境などを気にすることなく、これまで公開したNNabla Exampleの一部をすぐに動かして試すことができます!また、Face ReenactmentやShape Reconstructionの新Exampleが追加!機能面では、DLPackのサポートを追加し、他のフレームワーク間との相互利用がより簡単になりました!
スポットライト
ReenactGAN
ReenactGANのNNabla実装を公開しました!これはFace Reenactmentと呼ばれる、まるで他者の(顔の)動きを操っているかのような画像を作ることができる生成モデルです!顔の輪郭部分を抽出するエンコーダー、輪郭を変換するトランスフォーマー、そして変換された輪郭から顔画像を生成するデコーダーの3つのモジュールから構成されており、画像空間内で直接変換するのではなく、中間となる潜在空間(ここでは輪郭情報を利用)における変換を間に挟むことでより良い画像生成を実現しています。詳細はドキュメントをご覧ください!
Colabインタラクティブ・デモ
コードや内部のメカニズム、実行環境などを気にすることなく、気軽にNNabla Exampleを動かして遊ぶことができるColab上のインタラクティブ・デモを公開しました!現在では以下のExampleがデモとして用意されており、リンク先ですぐに実行が可能です!今後も週ごとに新たなデモが追加される予定です!
Name | Notebook | Task |
---|---|---|
ESR-GAN | Super-Resolution | |
Self-Attention GAN | Image Generation | |
Face Alignment Network | Facial Keypoint Detection | |
PSMNet | Depth Estimation | |
ResNet/ResNeXt/SENet | Image Classification | |
YOLO v2 | Object Detection | |
StarGAN | Image Translation |
Implicit Geometric Regularization
“Implicit Geometric Regularization for Learning Shapes”で提案された3次元形状復元モデルを実装しました!これはアイコナール方程式で表される制約下において点群を示す関数f(x)を最小化する最適化問題をDNNを用いることで、3次元空間の距離関数を学習して物体の表面を復元しています。
DLPackサポート
DLPackのサポートが追加されました!これによりフレームワーク間で配列データ(NNablaにおけるNdArrayやPyTorchにおけるTensorなど)をゼロコピーで共有することができます。
DLPackをNNablaのNdArray
にデコードする場合:
# Create a tensor of an external tool, and encode as an DLPack.
import torch
from torch.utils.dlpack import to_dlpack
t = torch.ones((5, 5), dtype=torch.float32,
device=torch.device('cuda'))
dlp = to_dlpack(t)
# Borrow the DLPack tensor as nnabla.NdArray
from nnabla.utils.dlpack import from_dlpack
arr = from_dlpack(dlp)
既存のNdArray
にオーナーシップを移す:
from nnabla import NdArray
arr = NdArray()
from_dlpack(dlp, arr=arr)
特定のNdArray
がもつ配列オブジェクトをもとにDLPackを取得:
# Create a nnabla.NdArray in CUDA.
import nnabla as nn
from nnabla.ext_utils import get_extension_context
ctx = get_extension_context('cudnn')
a = nn.NdArray.from_numpy_array(np.ones((5, 5), dtype=np.float32))
a.cast(np.float32, ctx)
# Expose as a DLPack.
from nnabla.utils.dlpack import to_dlpack
dlp = to_dlpack(a)
# Use the DLPack in PyTorch.
import torch
from torch.utils.dlpack import from_dlpack
t = from_dlpack(dlp)
# Changing the values in Torch will also be affected in nnabla
# because they share memory.
t.add_(1)
print(a.d) # All values become 2.
SpatialTransformer
任意のネットワーク内に組み込むことができ、拡大縮小・回転や歪みといった変形が加えられた画像を補正する効果を持つSpatial Transformer Networksを実装しました!Spatial transformerはアフィン変換によって正規化されたグリッドを生成するAffineGrid
と、それによって得られたグリッドによって入力画像をワープさせるWarpByGrid
によって構成されています。
バグ修正
ビルド関連
ドキュメントの追加・修正
フォーマットコンバーターの機能改善
レイヤー関数の新規追加・改善
ユーティリティの機能改善
- DLPackインターフェース追加: フレームワーク間で配列データの共有が可能に (CPU / CUDA)
- nnpリファクタリング / モジュールスタイルでネットワーク定義を可能に
- 推論APIの追加 / パラメータのデータ型オプションの追加