ml — 머신 러닝

ml 모듈은 OpenMV Cam에서 TensorFlow Lite 모델을 로드하고 실행하는 기능을 제공합니다. 이 모듈은 사용자 대상 클래스인 ml.Model 하나를 노출하며, 이 클래스는 기본 C Model 클래스를 래핑하면서 Python 측에서 추가적인 편의 기능(자동 레이블 로딩 및 자동 이미지-텐서 변환)을 제공합니다.

하위 모듈

class Model – 모델 컨테이너

class ml.Model(path: str, *, postprocess: object = None) Model

path 에 있는 TensorFlow Lite 모델을 메모리로 로드하고 추론을 위해 준비합니다. path 는 파일 시스템에 있는 파일이거나 펌웨어 이미지에 내장된 모델의 이름일 수 있습니다.

postprocess 는 추론 후 Model.predict 가 호출하는 선택적 후처리 콜러블입니다. 이 콜러블은 (model, inputs, outputs) 를 받으며 임의의 값(예: 경계 상자 목록)을 반환할 수 있습니다. 지정된 경우, 성능을 위해 후처리기는 원시 모델 출력 텐서(역양자화되지 않은 상태)를 받습니다.

생성 시, 래퍼는 추가로 path 와 동일한 기본 이름을 가진 .txt 파일을 로드하려고 시도합니다. 파일이 발견되면 각 줄이 Model.labels 로 로드됩니다. 그렇지 않으면 Model.labelsNone 입니다.

predict(inputs: list, *, callback: object = None) list

모델에 대해 추론을 실행하고 출력 텐서를 반환합니다.

inputs 는 모델 입력 텐서당 하나의 항목을 갖는 목록입니다. 각 항목은 다음 중 하나일 수 있습니다:

  • Model.input_shape 의 해당 항목과 형태가 일치하는 ndarray. 값은 입력 텐서의 스케일과 영점을 사용하여 양자화됩니다(float32 입력은 변경 없이 그대로 전달됩니다).

  • image.Image 객체. 래퍼는 이를 자동으로 ml.preprocessing.Normalization 객체로 래핑하여 예상되는 텐서로 변환합니다.

  • 콜러블. 이것은 (bytearray, shape, dtype) 와 함께 호출되며, bytearray를 입력 텐서 데이터로 채울 것으로 기대됩니다.

callback 는 선택적인 호출별 후처리 콜러블입니다. 제공되면 이 호출에 한해서만 생성자에 설정된 postprocess 를 재정의합니다. 콜백은 (model, inputs, outputs) 를 받으며 그 반환값이 predict 에 의해 반환됩니다.

모델 출력 텐서당 하나씩, ndarray 출력 목록을 반환합니다. 활성화된 후처리기가 없으면 출력은 float32 로 역양자화됩니다. 후처리기가 활성화되어 있으면 대신 원시 출력 텐서(각 텐서의 기본 dtype 사용)가 후처리기로 전달됩니다.

len: int

로드된 모델의 크기(바이트 단위)입니다.

ram: int

모델의 텐서 아레나가 사용하는 RAM의 양(바이트 단위)입니다.

input_shape: list[tuple[int, ...]]

각 입력 텐서의 형태를 나타내는 튜플 목록입니다.

input_dtype: list[str]

각 입력 텐서의 dtype을 나타내는 단일 문자 문자열 목록입니다: 'b' (int8), 'B' (uint8), 'h' (int16), 'H' (uint16), 'f' (float32).

input_scale: list[float]

각 입력 텐서의 양자화 스케일을 나타내는 float 목록입니다.

input_zero_point: list[int]

각 입력 텐서의 양자화 영점을 나타내는 int 목록입니다.

output_shape: list[tuple[int, ...]]

각 출력 텐서의 형태를 나타내는 튜플 목록입니다.

output_dtype: list[str]

각 출력 텐서의 dtype을 나타내는 단일 문자 문자열 목록입니다: 'b' (int8), 'B' (uint8), 'h' (int16), 'H' (uint16), 'f' (float32).

output_scale: list[float]

각 출력 텐서의 양자화 스케일을 나타내는 float 목록입니다.

output_zero_point: list[int]

각 출력 텐서의 양자화 영점을 나타내는 int 목록입니다.

postprocess: object

생성자에 제공된 후처리 콜러블이거나 None 입니다.

labels: list[str]

모델과 함께 .txt 파일에서 로드된 레이블 문자열 목록이거나, 해당 파일이 없으면 None 입니다.