【論文読み】Kornia: an Open Source Differentiable Computer Vision Library for PyTorch
TL;DR
Kornia (旧 torchgeometry) はOpenCVに影響を受けたコンピュータビジョンのライブラリであり,PyTorchで実装することでGPUによる高速化と自動微分の恩恵を受けている.
概要
KorniaはPyTorchをバックエンドとしたオープンソースのコンピュータビジョンライブラリ.
共著者のうち一番後ろに名前のあるGary BradskiはOpenCVの創始者のひとり.
色空間の変換,空間フィルタリング(ガウシアンフィルタ,ラプラシアンなど)や幾何学変換といった OpenCVにも実装されているような低レベルの画像処理演算をPyTorchで実装することで, 既存の画像処理系のライブラリには無いPyTorchのReverse-mode自動微分の恩恵を受けられるようになっている. また,ニューラルネットの構造の中に画像処理演算を入れることも可能である.
KorniaはOpenCVに強く影響を受けていて,それに加えてGPUのサポートを強化したものという位置づけの模様.
PyTorchユーザフレンドリーなAPI
korniaを用いたコード例がFigure 2の左側に示されている. 以下のコードはその引用:
# load data: Bx3xHxW img_batch = load_data_batch(...) # send data to CUDA if torch.cuda.is_available(): img_batch = img_batch.cuda() # define vision pipeline sobel_fcn = torch.nn.Sequential( kornia.color.RgbToGrayscale(), kornia.filters.Sobel() ) # distribute data sobel_fcn = torch.nn.DataParallel( sobel_fcn, [device_ids_list] ) # run the pipeline: Bx1xHxW img_sobel = sobel_fcn(img_batch)
処理の内容は,読み込んだRGB画像を(GPUが使えるならGPUのメモリに置いてから) グレースケール画像に変換し,Sobelフィルタをかけるというシンプルな内容.
KorniaのTransparent APIのお陰で,Kornia以外のPyTorchのコンポネント(torch.nn.Sequential
やtorch.nn.DataParallel
)
との組み合わせが非常に自然になっているのがわかる.
OpenCVにはtorch.nn.Sequential
相当のAPIが無いので,
画像処理のパイプラインの記述が非常に簡潔なのが良い感じだと思う.
画像処理の実装例
ペーパーの中では処理の例を通じて,複雑な損失関数の微分を簡単に計算できることと
既存のライブラリのAPIとの違いを示している.
処理の例はImage RegistrationやDepth Estimationなど,4つ紹介されている
(GitHubでJuptyer Notebookを上手く表示できなかったので,代わりにnbviewerのリンクを貼っている.
また,tgm
をkornia
と読み替える必要あり).
自動微分の恩恵はImage Registration (Homography Regression) の例がたぶん一番わかりやすい.
kornia.HomographyWarper
が射影変換の演算を表していて,
変換行列の成分(このコードでは明示されないけど)が学習可能なパラメタになっている.
OpenCVを使ってるとSIFT計算してcv2.findHomography
でRANSAC実行して変換行列を推定したくなるところだが,
ここでは変換前後の画像間の $L_1$ 損失を勾配降下で小さくして変換行列を推定している.
Korniaの名称について(元々の名称はtorchgeometryだった)
サンプルコードを見てもどこにもkornia
という名前が見当たらない.
代わりにtorchgeometry
というライブラリがやたら使われている.
調べてみたら,どうやら元々torchgeometry
という名前で開発されていたが,
より一般的なコンピュータビジョンライブラリを目指す意味でkornia
に改名された模様.
名称の変更にサンプルコードの更新が追い付いていないのかも.
参考: github.com github.com
まとめ
PyTorchをバックエンドとしたオープンソースのコンピュータビジョンライブラリであるKorniaを紹介した. 個人的には,幾何学演算のPyTorch実装がライブラリとしてまとまった形になってるのは大きいかも.今後の活躍に期待.
詳解 OpenCV3 コンピュータビジョンライブラリを使った画像処理・認識ー [ Gary Bradski ] 価格:7,480円 |