この記事では、プログラミング言語Pythonを使って、巨大な写真からパッチを抽出する方法について説明します。
はじめに
深層学習アルゴリズムを学習する場合、小さい画像の方が良い結果が得られるので、小さい画像を使うのが望ましい。
しかし、巨大な画像がある場合はどうだろうか?一つの解決策は、大きな写真を小さなパッチに分割することで、どんなアルゴリズムでも学習できるようにすることです。
パッチとは何かと思われるかもしれません。
その名の通り、画像パッチは画像中のピクセルのグループです。
例えば、20×20ピクセルの画像があるとします。
この画像は、2×2ピクセルの正方形のパッチ1000個に分割することができます。
Python入門 Patchify
Pythonの Patchify は写真をトリミングし、トリミングまたはパッチした画像を Numpy 配列に保存するために使用するパッケージです。
しかし、その前にpipコマンドを使ってpatchifyがシステムにインストールされていることを確認してください。
pip install patchify |
Patchifyは、指定したパッチ単位の大きさに基づいて、写真を小さく重なる部分に分割し、その部分を元の画像と融合させることができます。
Python Patchify を使って画像のパッチを抽出する
さっそくこのモジュールを使って、ここから画像パッチの抽出を始めてみましょう。
1. モジュールのインポート
まず、大きな画像をパッチに変換するために必要なモジュールをインポートすることから始めます。
ここでは、画像データを作成するために Numpy を、画像から画像パッチに変換するために patchify モジュールを使用しています。
|
1
2
|
import numpy as np
from patchify import patchify
|
2. 画像データの作成
画像データをnumpyの array 形式で作成し、画像の初期形状を見てみましょう。
|
1
2
|
image = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12], [13, 14, 15, 16]])
print(image.shape)
|
3. 画像からパッチを抽出する
|
1
2
|
patches = patchify(image, (2,2), step=2)
print(patches.shape)
|
Complete Code and Output
|
1
2
3
4
5
6
|
import numpy as np
from patchify import patchify
image = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12], [13, 14, 15, 16]])
print(image.shape)
patches = patchify(image, (2,2), step=2)
print(patches.shape)
|
(4, 4)
(2, 2, 2, 2)
|
コンセプトが理解でき、パッチの生成も理解できたのではないでしょうか?3D画像にも応用できます。
ぜひ試してみてください。