ml.preprocessing --- ML Preprocessing¶
โมดูล ml.preprocessing มีคลาสสำหรับเตรียมภาพก่อนใช้งานกับโมเดล machine learning
class Normalization -- Image Normalization¶
ออบเจ็กต์ Normalization แปลงออบเจ็กต์ image.Image เป็นเทนเซอร์อินพุต ndarray สำหรับใช้กับ ml.Model.predict() ออบเจ็กต์นี้ถูกสร้างโดยอัตโนมัติโดยออบเจ็กต์ ml.Model เมื่อภาพถูกส่งไปยัง ml.Model.predict() แต่อาจสร้างขึ้นเองได้เพื่อควบคุมการแปลง (scale, mean/stdev, 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)¶
สร้างออบเจ็กต์
Normalizationscaleคือช่วง(min, max)ของค่าที่เทนเซอร์อินพุต floating-point คาดหวังหลัง normalization (เช่น(0.0, 1.0)หรือ(-1.0, 1.0)) จะถูกเพิกเฉยสำหรับเทนเซอร์uint8และint8meanคือค่าเฉลี่ยต่อช่อง(R, G, B)ที่ถูกลบออกจากภาพหลัง scaling สำหรับเทนเซอร์ grayscale ค่าเฉลี่ยจะถูกลดเหลือค่า luma เดียวโดยใช้0.299*R + 0.587*G + 0.114*Bจะถูกเพิกเฉยสำหรับเทนเซอร์uint8และint8stdevคือส่วนเบี่ยงเบนมาตรฐานต่อช่อง(R, G, B)ที่ใช้หารภาพหลังจากลบค่าเฉลี่ย สำหรับเทนเซอร์ grayscale ค่า stdev จะถูกลดเหลือค่า luma เดียวโดยใช้0.299*R + 0.587*G + 0.114*Bจะถูกเพิกเฉยสำหรับเทนเซอร์uint8และint8roiคือบริเวณที่สนใจ (ROI) แบบ optional(x, y, w, h)ภายในภาพอินพุตที่จะตัด หากNoneจะใช้ภาพทั้งหมด บริเวณที่ตัดจะถูกจัดกึ่งกลาง และ scale แบบ bilinear (รักษา aspect ratio พร้อม padding สีดำ) ให้ตรงกับมิติเทนเซอร์อินพุตของโมเดล- __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โดยตรงด้วยเทนเซอร์อินพุตที่ normalize แล้วสำหรับภาพที่ผูกไว้ก่อนหน้าshapeต้องเป็น(1, H, W, C)โดยCเท่ากับ1(grayscale) หรือ3(RGB)dtypeคือรหัส numpy type ของ ulab (เช่นord('f')สำหรับ float32,ord('b')สำหรับ int8,ord('B')สำหรับ uint8) เทนเซอร์ float จะใช้scale,mean, และstdevส่วนเทนเซอร์ integer จะถูกเขียนโดยตรง (พร้อม offset สำหรับint8)