EN

Neural Network Libraries version 1.10.0をリリースしました!

2020年8月7日 金曜日

リリース

Posted by Takuya Yashima

Neural Network Libraries v1.10.0をリリースしました!
Google Colabを利用したインタラクティブデモを追加しました!プログラミングスキルの有無やGPU実行環境などを気にすることなく、これまで公開したNNabla Exampleの一部をすぐに動かして試すことができます!また、Face ReenactmentやShape Reconstructionの新Exampleが追加!機能面では、DLPackのサポートを追加し、他のフレームワーク間との相互利用がより簡単になりました!

スポットライト

ReenactGAN

reenactgan
ReenactGANのNNabla実装を公開しました!これはFace Reenactmentと呼ばれる、まるで他者の(顔の)動きを操っているかのような画像を作ることができる生成モデルです!顔の輪郭部分を抽出するエンコーダー、輪郭を変換するトランスフォーマー、そして変換された輪郭から顔画像を生成するデコーダーの3つのモジュールから構成されており、画像空間内で直接変換するのではなく、中間となる潜在空間(ここでは輪郭情報を利用)における変換を間に挟むことでより良い画像生成を実現しています。詳細はドキュメントをご覧ください!

Colabインタラクティブ・デモ

コードや内部のメカニズム、実行環境などを気にすることなく、気軽にNNabla Exampleを動かして遊ぶことができるColab上のインタラクティブ・デモを公開しました!現在では以下のExampleがデモとして用意されており、リンク先ですぐに実行が可能です!今後も週ごとに新たなデモが追加される予定です!

Name Notebook Task
ESR-GAN Open In Colab Super-Resolution
Self-Attention GAN Open In Colab Image Generation
Face Alignment Network Open In Colab Facial Keypoint Detection
PSMNet Open In Colab Depth Estimation
ResNet/ResNeXt/SENet Open In Colab Image Classification
YOLO v2 Open In Colab Object Detection
StarGAN Open In Colab 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によって構成されています。

バグ修正

ビルド関連

ドキュメントの追加・修正

フォーマットコンバーターの機能改善

レイヤー関数の新規追加・改善

ユーティリティの機能改善

Exampleの新規追加