ในโลกของโจทย์ปัญหาด้าน Image Processing ที่ทีม Machine Learning Engineer ต้องเผชิญในปัจจุบันมีทั้งความท้าทายและการจัดการที่ซับซ้อนกว่า การทำความสะอาดเพื่อให้ได้ชุดข้อมูลที่สามารถนำไปใช้งานต่อได้ หรือสามารถจัดเก็บให้ก่อเกิดประโยชน์บนข้อจำกัดต่าง ๆ จึงเป็นสิ่งที่ต้องถูกนำมาพูดถึงเป็นประจำ
Image Processing หรือ Computer Vision คือ ศาสตร์หนึ่งของ Computer Science ว่าด้วยการทำให้คอมพิวเตอร์มีความสามารถในการแยกแยะ จำแนก ทำความเข้าใจรูปภาพ เฉกเช่นเดียวกันกับกระบวนการที่มนุษย์ใช้การมองเห็นภาพและสามารถอธิบายออกมาได้ ซึ่งได้รับความนิยมมากในการทำ Machine Learning ในปัจจุบัน
ฉะนั้นในบทความนี้ ไหมจะมาแบ่งปันประสบการณ์ที่พบเจอจากการทำความสะอาดข้อมูลที่เป็นรูปภาพ รวมถึงการแก้ไขปัญหา ณ สถานการณ์นั้น ๆ เพื่อให้ทุกท่านที่เข้ามาอ่านบทความนี้ สามารถนำไปประยุกต์ใช้กับปัญหาที่เกิดขึ้นบนโปรเจกต์ของตัวเอง หรือ ถ้าใครอยากเข้ามาแบ่งปันประสบการณ์ ก็ได้เช่นกันค่ะ
ปัญหาด้าน ML Engineer ที่พบบ่อยของโปรเจกต์ Image Processing / Computer Vision
สำหรับการ Clean Data ประเภทนี้ ความยากจะอยู่ที่ในบางโจทย์ เราต้องมานั่งสำรวจข้อมูลเอง แล้วถ้าข้อมูลมีจำนวนมหาศาล การใช้เวลาในการคัดกรองก็จะเริ่มยากขึ้น เพราะต้นกำเนิดของข้อมูลเหล่าล่านี้ถ้าไม่สามารถควบคุมคุณภาพได้ การทำความสะอาดก็จะเป็นงานหินอีกงาน และปัญหาที่เกิดขึ้นบ่อยกันเช่น
- Format File ต่างกัน ถึงแม้ว่าจะเป็นรูปภาพเหมือนกัน แต่ไฟล์รูปก็มีหลาย Format เช่น .jpg, .png หรือ .bmp ก็เป็นไปได้ ซึ่งในปัญหานี้จะมีหลาย library ที่ช่วยแก้ปัญหา แต่ก็ยังต้องใช้การสำรวจว่าไฟล์ของเรานั้นมี Format ไหนบ้าง
- ขนาดไฟล์ไม่เท่ากัน ปัญหานี้จะยิ่งมีปัญหา หาก Model ต้องการขนาดรูปที่ค่อนข้างชัดเจน รูปภาพบางขนาดต้องถูกแปลง เพื่อให้สามารถนำเข้าโมเดลได้ เราก็สามารถเลือกได้ว่า จะทำการบีบรูป หรือ ทำให้รูปนั้นมีขนาดเท่าที่เราต้องการ ก็จะนำไปสู่ปัญหาต่อมา
- คุณภาพของรูปภาพ ไฟล์รูปบางไฟล์ พอโดนบีบหรือขยายก็แหลกสลายกลายเป็นเม็ดทราย ที่พอนำเข้า Model นั้น ก็กลายเป็น garbage แทน
- ปัญหาภายนอกที่เกิดมาจากต้นกำเนิดหลายที่ ลองจินตนาการว่า ข้อมูลชุดนี้มาจากกล้องมือถือแต่ละคน มาจากคนละสภาพแวดล้อม รูปภาพที่เกิดขึ้นจึงมีความแตกต่างกันทั้งแสง ทั้งความชัด และความละเอียด ซึ่งเป็นเรื่องที่แก้ได้ยากมาก แต่ก็อาจจะเป็นข้อมูลที่ดีพอที่จะทำให้โมเดลของเราแข็งแกร่งได้เช่นกัน
จริง ๆ แล้วปัญหาเกี่ยวกับการทำความสะอาดข้อมูลที่เป็นรูปภาพมีเยอะมาก แต่ก็จะมีการเจาะจงในแต่ละโจทย์ปัญหาตามไปอีก ซึ่งบางทีก็จะขึ้นอยู่กับ Business Logic เช่น โปรเจกต์นี้ต้องการรูปใบหน้าคนหนึ่งคน แต่ในข้อมูลที่เราจะนำมาเทรน ดันมีรูปที่มีมากกว่า 1 คนซะงั้น
วิธีแก้ปัญหาสำหรับโปรเจกต์ Image Processing
เนื่องจากปัญหาที่เกิดขึ้นจากการทำความสะอาดบนโปรเจกต์ Image Processing มีหลากหลายและขึ้นอยู่กับ Business Logic ดังนั้นในบทความนี้จะขอยกวิธีการแก้ไขปัญหาสำหรับบางปัญหาเท่านั้นนะคะ
วิธีแก้ปัญหา Format File รูปภาพ บนโปรเจกต์ Image Processing และขนาดของไฟล์
สำหรับปัญหานี้ ไหมขอแนะนำ Pillow เป็น Python Library ยอดนิยมสำหรับโจทย์ Image Processing เพื่อใช้ในการจัดการกับ File Image ต่าง ๆ ซึ่งสามารถรองรับไฟล์รูปภาพไว้หลากหลายมาก ๆ ถ้าสนใจ สามารถอ่าน Documentation (คู่มือการใช้) เพิ่มเติมได้ที่ Pillow-Image file formats
นอกจากนี้ Library ดังกล่าวยังเข้ามาช่วยในเรื่องของปัญหาขนาดของไฟล์ได้ด้วยเช่นกัน ภายใน Library นี้ มี Function ที่ช่วยในการเปลี่ยนแปลงขนาดของรูปได้ แต่ถึงอย่างนั้น เราก็อย่าลืมสำรวจข้อมูลของเราด้วยเช่นกันว่า สามารถปรับให้เป็นขนาดนั้น ๆ แล้วสามารถนำไปใช้ประโยชน์ต่อได้จริง ๆ หรือไม่
แต่อย่างไรก็ตาม การกำหนดประเภทของไฟล์ที่รองรับตั้งแต่แหล่งกำเนิดจะทำให้ปัญหานี้ต้องใช้เวลามาจัดการลดลง และจะทำให้สามารถควบคุมคุณภาพของรูปภาพให้เหมือนกันได้อีกด้วย หรือการแปลงให้ประเภทของไฟล์ทั้งหมดให้เป็นแบบเดียวกันก็จะทำให้สามารถจัดการได้ง่ายขึ้น
วิธีแก้ปัญหา คุณภาพของรูปภาพ และต้นกำเนิดของรูปภาพ ที่มาจากหลายที่
สำหรับวิธีแก้ปัญหานี้จะพูดในเชิงของคุณภาพของรูป ที่ส่งผลตอนการนำไปใช้งานต่อ รวมถึงต้นกำเนิดของรูปภาพที่ขาดการควบคุม ทำให้การนำไปใช้ประโยชน์ต่อหรือการจัดเก็บนั้นเป็นไปด้วยอุปสรรค
แต่เพื่อให้การยกตัวอย่างวิธีการแก้ปัญหาเข้าใจได้ง่ายขึ้น จะขอยกตัวอย่างโจทย์การจดจำใบหน้า ที่สามารถเกิดปัญหาได้ตั้งแต่การนำเข้าข้อมูลมาจัดเก็บ ทั้งวิธีการ และการเก็บรูปภาพจำนวนมากให้สามารถนำไปใช้ต่อได้
โดยส่วนมากนั้นจะต้องมีการกำหนดการเก็บรูปภาพมาตั้งแต่แหล่งที่มา เช่น การบังคับให้ผู้ใช้งานต้องถ่ายรูปหน้าตรงเท่านั้น (วิธีการนี้ต้องมีการใช้การตรวจจับใบหน้ามาร่วมด้วย) หรือการทำให้แสงที่กระทบใบหน้ามีหลายสี เราสามารถเห็นวิธีการนี้ได้จาก เป๋าตัง ที่ต้องแสกนใบหน้าก่อนเข้าใช้งาน
สรุป วิธีแก้ปัญหาด้าน Machine Learning Engineer ในโปรเจกต์ Image Processing / Computer Vision
ในบทความนี้ ไหมอธิบายวิธีการแก้ปัญหาด้าน ML Engineer กับภาษาไทย ในโปรเจกต์ Image Processing กันไปแล้ว จะเห็นได้ว่า สามารถนำไปใช้แก้ปัญหาในโปรเจกต์ Machine Learning ของคุณได้เลย
ถ้าชอบเนื้อหาแนวนี้ ช่วยแชร์กันได้นะคะ ไหมจะได้มาเขียนเล่าบ่อย ๆ ค่ะ ติดตามบทความดี ๆ ด้าน Data และวีดิโอสนุก ๆ ดูชิล ๆ แล้วได้ความรู้กันได้ที่ Facebook Page: DataTH และ Youtube Channel: Data Science ชิลชิล แล้วเจอกันค่ะ