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)). uint8int8 입력 텐서에서는 무시됩니다.

mean 은 스케일링 후 이미지에서 빼는 채널별 평균 (R, G, B) 입니다. 그레이스케일 텐서의 경우 평균은 0.299*R + 0.587*G + 0.114*B 를 사용하여 단일 휘도 값으로 축소됩니다. uint8int8 입력 텐서에서는 무시됩니다.

stdev 은 평균을 뺀 후 이미지를 나누는 채널별 표준편차 (R, G, B) 입니다. 그레이스케일 텐서의 경우 표준편차는 0.299*R + 0.587*G + 0.114*B 를 사용하여 단일 휘도 값으로 축소됩니다. uint8int8 입력 텐서에서는 무시됩니다.

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 를 제자리에서 채웁니다. shapeC1 (그레이스케일) 또는 3 (RGB)과 같은 (1, H, W, C) 여야 합니다. dtype 은 ulab numpy 타입 코드입니다(예: float32의 경우 ord('f'), int8의 경우 ord('b'), uint8의 경우 ord('B')). Float 텐서는 scale, mean, stdev 을 적용합니다. 정수 텐서는 직접 기록됩니다(int8 의 경우 오프셋과 함께).