この記事では、プログラミング言語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画像にも応用できます。
ぜひ試してみてください。