Kornia 0.6 : Tutorials (基本) : Hello world: Planet Kornia (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 10/20/2022 (v0.6.8)
* 本ページは、Kornia Tutorials の以下のドキュメントを翻訳した上で適宜、補足説明したものです:
- Basic : Hello world: Planet Kornia
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
- 人工知能研究開発支援
- 人工知能研修サービス(経営者層向けオンサイト研修)
- テクニカルコンサルティングサービス
- 実証実験(プロトタイプ構築)
- アプリケーションへの実装
- 人工知能研修サービス
- PoC(概念実証)を失敗させないための支援
- お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。
◆ お問合せ : 本件に関するお問い合わせ先は下記までお願いいたします。
- 株式会社クラスキャット セールス・マーケティング本部 セールス・インフォメーション
- sales-info@classcat.com ; Web: www.classcat.com ; ClassCatJP
Kornia 0.6 : Tutorials (基本) : Hello world: Planet Kornia
Welcome to Planet Kornia: PyTorch のコンピュータビジョンについて学習するチュートリアルのセットです。
これは Torchvision, Kornia と OpenCV で画像のロードを簡単に開始できる方法を示す最初のチュートリアルです。
%%capture
!pip install kornia
import cv2
from matplotlib import pyplot as plt
import numpy as np
import torch
import torchvision
import kornia as K
作業を始めるために最初にインターネットから画像をダウンロードします。
%%capture
!wget https://github.com/kornia/data/raw/main/arturito.jpg
OpenCV で画像をロードする
画像をロードするために OpenCV を使用できます。デフォルトでは、OpenCV は画像を BGR 形式でロードしてデータ・レイアウト (H,W,C) を持つ numpy.ndarray にキャストします。
けれども、matplotlib は画像を RGB 形式で保存しますので、OpenCV では画像が正しく表示されるように BGR を RGB に変更する必要があります。
img_bgr: np.array = cv2.imread('arturito.jpg') # HxWxC / np.uint8
img_rgb: np.array = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2RGB)
plt.imshow(img_rgb); plt.axis('off');
画像を Torchvision でロードする
画像はまた torchvision を使用してロードすることもできます、これは画像を shape (C,H,W) の torch.Tensor で直接返します。
x_rgb: torch.tensor = torchvision.io.read_image('arturito.jpg') # CxHxW / torch.uint8
x_rgb = x_rgb.unsqueeze(0) # BxCxHxW
print(x_rgb.shape)
torch.Size([1, 3, 144, 256])
画像を Kornia でロードする
Kornia で前述のすべてを行なうことができます。
画像を他の Kornia コンポーネントに準拠させてデータを (B,C,H,W) に配置する、torch.Tensor にキャストする幾つかのユティリティがあります。
このユティリティは kornia.image_to_tensor で、これは numpy.ndarray を torch.Tensor にキャストして、画像を他の PyTorch や Kornia コンポーネントで使用する準備のためにチャネルの順序を変更します。画像は zero-copy で 4D torch.Tensor 內にキャストされます。
x_bgr: torch.tensor = K.image_to_tensor(img_bgr) # CxHxW / torch.uint8
x_bgr = x_bgr.unsqueeze(0) # 1xCxHxW
print(f"convert from '{img_bgr.shape}' to '{x_bgr.shape}'")
convert from '(144, 256, 3)' to 'torch.Size([1, 3, 144, 256])'
kornia.color コンポーネントで BGR から RGB に変換できます。
x_rgb: torch.tensor = K.color.bgr_to_rgb(x_bgr) # 1xCxHxW / torch.uint8
画像を Matplotib で可視化する
ノートブック内の可視化のために Matplotlib を使用します。Matplotlib は (H,W,C) 形式の numpy.ndarray を必要とし、そのために kornia.tensor_to_image で戻ります、これは画像を正しい形式に変換します。
img_bgr: np.array = K.tensor_to_image(x_bgr)
img_rgb: np.array = K.tensor_to_image(x_rgb)
元の画像と変更された画像を可視化するためにサブプロットを作成します。
fig, axs = plt.subplots(1, 2, figsize=(32, 16))
axs = axs.ravel()
axs[0].axis('off')
axs[0].imshow(img_rgb)
axs[1].axis('off')
axs[1].imshow(img_bgr)
plt.show()
以上