ml.preprocessing --- ML 前処理¶
ml.preprocessing モジュールには、機械学習モデルで使用するための画像を前処理するクラスが含まれています。
class Normalization -- 画像正規化¶
Normalization オブジェクトは、image.Image オブジェクトを ml.Model.predict() で使用する ndarray 入力テンソルに変換します。これは画像が ml.Model.predict() に渡されたときに ml.Model オブジェクトによって自動的に作成されますが、変換(スケール、平均/標準偏差、ROI)を制御するために手動でインスタンス化することもできます。
- class ml.preprocessing.Normalization(scale: tuple[float, float] = (0.0, 1.0), mean: tuple[float, float, float] = (0.0, 0.0, 0.0), stdev: tuple[float, float, float] = (1.0, 1.0, 1.0), roi: tuple[int, int, int, int] = None)¶
Normalizationオブジェクトを作成します。scaleは、浮動小数点入力テンソルが正規化後に期待する値の(min, max)範囲です(例:(0.0, 1.0)または(-1.0, 1.0))。uint8およびint8の入力テンソルでは無視されます。meanは、スケーリング後に画像から減算されるチャンネルごとの平均(R, G, B)です。グレースケールテンソルの場合、平均は0.299*R + 0.587*G + 0.114*Bを使って単一の輝度値に縮約されます。uint8およびint8の入力テンソルでは無視されます。stdevは、平均が減算された後に画像が除算されるチャンネルごとの標準偏差(R, G, B)です。グレースケールテンソルの場合、標準偏差は0.299*R + 0.587*G + 0.114*Bを使って単一の輝度値に縮約されます。uint8およびint8の入力テンソルでは無視されます。roiは、入力画像内で切り出すオプションの(x, y, w, h)関心領域です。Noneの場合は画像全体が使用されます。切り出された領域は中央に配置され、モデルの入力テンソルの寸法に合わせて(アスペクト比を維持し黒のパディングを付加して)バイリニアにスケーリングされます。- __call__(image: image.Image) Normalization¶
- __call__(buffer: bytearray, shape: tuple[int, int, int, int], dtype: int) None
単一の
image.Image引数で呼び出されると、その画像に紐付けられた新しいNormalizationオブジェクトを返します。この紐付けられたオブジェクトは、ml.Model.predict()が入力テンソルを満たすために内部的に呼び出すものです。元のインスタンスでroiが設定されていなかった場合、画像全体のサイズに初期化されます。(buffer, shape, dtype)で呼び出されると、以前に紐付けられた画像の正規化済み入力テンソルでbufferをその場で満たします。shapeは(1, H, W, C)でなければならず、Cは1(グレースケール)または3(RGB)に等しい必要があります。dtypeは ulab numpy の型コードです(例: float32 の場合はord('f')、int8 の場合はord('b')、uint8 の場合はord('B'))。浮動小数点テンソルにはscale、mean、stdevが適用されます。整数テンソルは(int8用のオフセットを付けて)直接書き込まれます。