การจัดการข้อมูลภาพ (Image Preprocessing) เป็นขั้นตอนสำคัญในการพัฒนาโมเดล Machine Learning โดยเฉพาะอย่างยิ่งในงานประมวลผลภาพ (Computer Vision) เนื่องจากภาพต้นฉบับมักมีขนาดและรูปแบบที่หลากหลาย หากไม่ปรับแต่งให้เหมาะสมก่อนป้อนเข้าสู่โมเดล อาจทำให้เกิดปัญหาประสิทธิภาพต่ำหรือความแม่นยำลดลง บทความนี้จะพูดถึงวิธีการ ปรับขนาดภาพ (Image Resizing) และ เตรียมข้อมูลภาพ ก่อนนำไปใช้งานในโมเดล เหตุผลที่ต้องปรับขนาดภาพ
- มาตรฐานของโมเดล
โมเดล Deep Learning เช่น CNN ต้องการภาพที่มีขนาดคงที่ ตัวอย่างเช่น:- ResNet50 ต้องการขนาด 224x224
- EfficientNet ต้องการขนาดที่หลากหลายขึ้นอยู่กับเวอร์ชัน (เช่น 224x224, 380x380)
การปรับขนาดช่วยให้ภาพตรงตามข้อกำหนดของโมเดล
- ลดการใช้ทรัพยากร
ภาพที่มีความละเอียดสูงอาจใช้หน่วยความจำและเวลาในการประมวลผลสูงเกินไป การลดขนาดช่วยให้การฝึกและการพยากรณ์มีประสิทธิภาพมากขึ้น - รักษาคุณภาพของข้อมูล
การปรับขนาดภาพให้อยู่ในรูปแบบเดียวกันช่วยให้การเรียนรู้ของโมเดลเป็นไปอย่างราบรื่น
- การปรับขนาดตามอัตราส่วน (Aspect Ratio Resizing)
ปรับขนาดรูปภาพโดยรักษาอัตราส่วนของภาพเดิม (Aspect Ratio) เพื่อไม่ให้ภาพผิดเพี้ยน (Distortion) เช่น วัตถุในภาพไม่ถูกยืดหรือหดจนเสียรูปทรง
ขั้นตอน:- กำหนดความกว้าง (Width) หรือความสูง (Height) เป้าหมาย
- คำนวณขนาดอีกมิติหนึ่งให้เหมาะสมตามอัตราส่วนเดิม
- เติมขอบ (Padding) หากจำเป็น เพื่อให้ได้ขนาดคงที่
ข้อเสีย: ต้องใช้ Padding ทำให้เพิ่มพื้นที่ที่ไม่ใช่ข้อมูลสำคัญ - การปรับขนาดโดยการตัดภาพ (Cropping)
ปรับขนาดภาพโดยการตัดส่วนที่ไม่ต้องการออก (Crop) เพื่อให้ได้ขนาดเป้าหมายพอดี
ขั้นตอน:- คำนวณส่วนที่ต้องการตัดออก (เช่น ตรงกลางภาพ)
- ตัดภาพออกในบริเวณที่ไม่ได้ใช้งาน
ข้อเสีย: อาจสูญเสียข้อมูลบางส่วนของภาพ หากบริเวณที่ถูกตัดมีความสำคัญ - การปรับขนาดแบบยืด/บีบ (Stretching or Distortion Resizing)
ปรับขนาดภาพให้พอดีกับขนาดที่ต้องการ โดยไม่คำนึงถึงอัตราส่วนเดิมของภาพ ทำให้ภาพอาจถูกยืดหรือบีบ
ขั้นตอน:- ใช้ฟังก์ชัน Resizing ปรับความกว้างและความสูงของภาพโดยตรง
ข้อเสีย: ภาพอาจผิดเพี้ยน เช่น วัตถุในภาพถูกยืดหรือบีบจนเสียรูปทรง - การเพิ่มขอบ (Padding)
รักษาอัตราส่วนของภาพเดิมโดยการเพิ่มพื้นที่ว่างรอบ ๆ ภาพ (Padding) เพื่อให้ได้ขนาดที่ต้องการ
ขั้นตอน:- ปรับขนาดภาพโดยรักษาสัดส่วนเดิม
- เติมขอบด้วยสีพื้นหลัง (Background Color) จนได้ขนาดเป้าหมาย
ข้อเสีย: อาจเพิ่มข้อมูลส่วนที่ไม่มีความหมาย เช่น พื้นที่ว่าง
- โหลดภาพ
ใช้โมดูล keras.preprocessing.image เพื่อโหลดภาพจากไฟล์ต้นฉบับและแปลงให้อยู่ในรูปแบบที่ TensorFlow เข้าใจได้ - ปรับขนาดภาพ (Resizing)
โมเดล Deep Learning ส่วนใหญ่ เช่น ResNet, VGG16, และ EfficientNet ต้องการภาพที่มีขนาดคงที่ (Fixed Size) เช่น 224x224 พิกเซล การปรับขนาดช่วยให้ภาพตรงตามข้อกำหนดเหล่านี้ - แปลงภาพเป็นอาเรย์ (Image to Array)
ภาพที่โหลดมาในรูปแบบของวัตถุ PIL (Python Imaging Library) จะถูกแปลงเป็นอาเรย์ (Array) เพื่อให้ TensorFlow สามารถประมวลผลข้อมูลได้ - เพิ่มมิติของภาพ (Expand Dimensions)
โมเดล TensorFlow รับข้อมูลในรูปแบบของ Batch (กลุ่มของข้อมูล) เช่น (batch_size, height, width, channels) หากมีภาพเพียงภาพเดียว เราต้องเพิ่มมิติพิเศษ (Batch Dimension) เพื่อให้ข้อมูลมีโครงสร้างถูกต้อง - Normalization (การปรับค่า)
ค่าพิกเซลของภาพปกติอยู่ในช่วง [0, 255] การปรับค่าให้อยู่ในช่วง [0, 1] ช่วยให้โมเดลเรียนรู้ได้ง่ายขึ้นและลดปัญหาความไม่เสถียรระหว่างการฝึก
การปรับขนาดรูปภาพ (Image Resizing) ก่อนป้อนเข้าสู่โมเดล Machine Learning มีความสำคัญอย่างยิ่งในการเตรียมข้อมูลภาพให้อยู่ในรูปแบบที่เหมาะสมกับการประมวลผลของโมเดล การปรับขนาดช่วยให้ภาพมีความสอดคล้องกับขนาดอินพุตที่โมเดลต้องการ ลดความซับซ้อนและเพิ่มประสิทธิภาพในการประมวลผล ตัวอย่างเช่น การยืดหรือบีบภาพให้ได้ขนาดเป้าหมายสามารถทำให้กระบวนการแปลงข้อมูลเร็วขึ้นและเหมาะสำหรับงานที่ภาพไม่มีข้อจำกัดเรื่องสัดส่วน ขณะที่การใช้ Padding หรือ Cropping เหมาะสำหรับงานที่ต้องการรักษาความสมจริงหรือโฟกัสไปที่บริเวณสำคัญในภาพ การเลือกวิธีปรับขนาดที่เหมาะสมจึงช่วยเพิ่มคุณภาพของข้อมูล ลดปัญหาภาพผิดเพี้ยน และทำให้โมเดลเรียนรู้ได้อย่างมีประสิทธิภาพยิ่งขึ้น นอกจากนี้ยังสามารถลด Overfitting และเพิ่มความแม่นยำของโมเดลได้เมื่อภาพได้รับการจัดการอย่างถูกต้องตามลักษณะงาน นอกจากนั้นการเลือกโมเดลให้เหมาะสมกับงานเป็นสิ่งสำคัญมาก เพราะแต่ละโมเดลมีข้อดีและข้อจำกัดที่แตกต่างกัน การเลือกโมเดลที่เหมาะสมจะช่วยเพิ่มประสิทธิภาพในการประมวลผลและการทำนาย
อ้างอิง
https://www.bualabs.com/archives/2100/what-is-normalization-feature-scaling-rescaling-normalization-standardization-feedforward-train-machine-learning-preprocessing-ep-2/
https://lengyi.medium.com/object-detection-1-data-preparation-7a451bd8589
https://keras.io/examples/vision/learnable_resizer/
https://www.projectpro.io/recipes/resize-image-tensorflow