Geometric Transformation หลักการพื้นฐานของ Image Processing และการนำไปปรับใช้ในการออกแบบโครงสร้าง Neural Network

AI แบบเคลียร์
3 min readMay 28, 2023

--

การเข้าใจพื้นฐานด้าน Image Processing จะทำให้เรามีความรู้ความเข้าใจอย่างลึกซึ้งในโมเดลที่ซับซ้อนขึ้น และวันนี้ก็จะมาพูดถึง Geometric Transformation ซึ่งเป็นอีกหนึ่งพื้นฐานสำคัญของ Image Processing เลยทีเดียว หลังจากนั้นจะพูดถึงการนำความรู้นี้ไปออกแบบโมเดลด้วยค่ะ

Geometric Transformation เป็นกระบวนการทางพีชคณิต ที่จะทำให้สามารถปรับเปลี่ยนรูปของเราได้ ทำให้วัตถุมีการเลื่อน หมุน ย่อขยาย ปรับเปลี่ยนมุมมอง และอื่นๆ ซึ่งมีหลายแบบ แต่วันนี้จะมาพูดถึงแบบพื้นฐานที่ใช้บ่อยมากๆให้ฟังค่ะ นั่นคือ

  1. Rigid Body Transformation
  2. Affine Transformation
  3. Projective Transformation

ขอให้เข้าใจในแต่ละชื่อเรียกนะคะ เพราะว่าแต่ละชื่อเรียกจะเป็นชื่อของ setting หรือ function ในการเรียกใช้งาน library การที่เราเข้าใจไว้แต่แรก จะสามารถใช้งาน library ได้อย่างเหมาะสมมากขึ้น

เอาละค่ะ เริ่มกันเลย

  1. Rigid Body Transfomation จะสามารถทำ translation(เลื่อนที่) และ rotation(หมุน) เท่านั้น โดยที่หน้าตาของวัตถุของเรายังคงเดิม แต่แค่เลื่อนที่ไปหรือหมุนไปเท่านั้น ดังภาพ

สมการของการเลื่อนที่ สามารถเขียนได้เป็น

ปกติตำแหน่งของ pixel ในภาพจะถูกกำหนดเป็น coordinate (x, y) เพราะเป็นข้อมูล 2D ค่ะ และจากสมการนี้ จะเห็นว่าหากต้องการเลื่อนตำแหน่งของวัตถุ จะได้ว่าวัตถุที่จุด (x, y) ใดๆ จะเกิดจากการเลื่อนตำแหน่ง pixel ไปทาง แกน x หรือ แกน y ค่ะ

ณ จุดนี้ ขอนำเสนอเครื่องมือทางคณิตศาสตร์ที่ทำให้การทำงานของเราง่ายขึ้น นั่นก็คือ matrix นั่นเองงงง

หลายคนอาจจะเคยเกลียดสิ่งนี้ เพราะมันทำให้เราต้องคิดเลขมากขึ้นเวลาสอบ 555 แต่ในเมื่อเรามีเทคโนโลยี สามารถเขียนโปรแกรมให้คอมพิวเตอร์ช่วยเราคิดเลขแล้ว เรื่องนั้นก็ไม่ต้องเป็นห่วง เพียงแต่เราต้องจัดรูปแบบสมการให้ถูกต้องก่อนให้คอมพิวเตอร์ช่วยคิดเท่านั้นเองค่ะ

และ เราก็จะสามารถเขียนสมการของการเลื่อนตำแหน่ง (x, y) ใดๆ ได้ดังนี้ค่ะ

สำหรับการหมุน หากเราต้องการหมุนวัตถุไปเป็นมุม α เราจะได้สมการดังนี้

เนื่องจากเรามีสมการแบบบวกแมททริกซ์(เลื่อนที่) และการคูณแมททริกซ์(หมุน) จึงเสนอวิธีการเขียนสมการในรูปแบบใหม่ ที่จะเหลือแค่การคูณแมททริกซ์เท่านั้น ดังนี้

สมการเลื่อนที่

และสมการการหมุน

จะเห็นว่า แมททริกที่คูณจะกลายเป็น 3x3 ทั้งคู่ และสามารถรวมแมททริกซ์ที่มีทั้งการเลื่อนที่และการหมุนได้ ซึ่งจะมีแค่ 3 parameters คือ tx, ty และ มุม α ได้ดังนี้

2. Affine Transformation ในการปรับรูปภาพแบบนี้ จะรวมเอาการเลื่อนที่และการหมุนด้วย แต่เพิ่มการ Scaling หรือการขยายขนาด และการ Skew หรือการบิดรูปเข้ามาด้วยโดยที่จะมีสมการดังนี้

การขยายขนาด โดยที่ sx และ sy คือจำนวนเท่าที่ต้องการขยายในแกน x และแกน y

และ skew มีสมการดังนี้

จะได้ว่า ตำแหน่งที่เป็นการขยายขนาดมีตำแหน่งซ้ำกับการเลื่อนที่และ skew ฉะนั้น เราจะเขียนสมการรวมของการทำ Affine Transformation ได้เป็น

โดยที่จะมีทั้งหมด 6 parameters นั่นคือค่า a, b, c, d, e, f ซึ่งเกิดจากการรวมของค่าที่ได้จากการเลื่อนที่ การหมุน การขยายขนาด และการ skew ตามตัวอย่างในภาพข้างล่าง และเพราะมีถึง 6 parameters จึงสามารถทำอะไรได้มากกว่า Rigid Body Transformation ที่มีเพียง 3 parameters

https://desktop.arcgis.com/en/arcmap/latest/tools/coverage-toolbox/how-transform-works.htm

3. Projective Transformation ในการปรับรูปแบบนี้ จะรวมเอาการเลื่อนที่ การหมุน การขยายขนาด และการ skew และรวมถึงการปรับภาพแบบ Perspective หรือมุมกล้องมีการเปลี่ยนแปลงไปได้ ตามตัวอย่างภาพข้างล่างนี้

โดยที่สามารถปรับภาพป้ายทะเบียนรถยนต์ (a) และ (b) ให้เสมือนปรับมุมกล้อง และได้ภาพป้ายทะเบียนที่ตรงขึ้นดังภาพ (c) และ (d)

เราสามารถเขียนสมการของการทำ Projective Transformation ได้ดังนี้

ซึ่งจะสังเกตุเห็นว่า มีทั้งหมด 8 parameters จึงทำให้การปรับภาพแบบนี้ สามารถทำอะไรได้มากกว่าสองแบบแรก แต่ก็ต้องมี parameters มากกว่าสองแบบแรกเช่นกัน

ตัวอย่างเปเปอร์ที่นำเอาความรู้ Geometric Transformation มาออกแบบ Neural Network

ในงานชิ้นนี้ได้ออกแบบให้ Network สามารถระบุตำแหน่งของตัวเลข และสามารถปรับตัวเลขให้ตรงได้ โดยที่มีโครงสร้างคร่าวๆดังนี้

ตัว Network จะมีสองขั้นตอนคือ ขั้นสอนการระบุตำแหน่ง หรือ Localisation net และขั้นตอนการแปลงภาพ หรือนั่นก็คือ Grid generator และเราจะโฟกัสในส่วนของการปรับรูป โดยที่ในส่วนของฟังก์ชั่นที่ใช้ในการปรับรูปคือ

ซึ่งในงานวิจัยนี้เลือกใช้ Affine Transformation เพราะมีแค่ 6 parameters (จากเปเปอร์เค้าละแถวสุดท้าย 0 0 1 ไว้ในฐานที่เข้าใจ) และค่า parameters ทั้ง 6 ตัวจะถูกเรียนรู้จากข้อมูล ทำให้สามารถปรับภาพให้ตรงขึ้นได้

สำหรับรายละเอียดวิธีการ จะต้องเขียนอีกบทความมาอธิบาย เพราะมันมีรายละเอียดค่อยข้างเยอะ แต่สามารถไปอ่านเพิ่มเติมก่อนได้ที่นี่ค่ะ

https://towardsdatascience.com/spatial-transformer-networks-b743c0d112be

จุดประสงค์ของบทความนี้คือ ให้เห็นว่าการที่เรามีความรู้พื้นฐาน จะทำให้เราสามารถเพิ่มลูกเล่นไปในโมเดลของเราได้ ไม่ใช่ใช้อยู่แค่ Convolutional Neural Network ธรรมดาๆ มันจะน่าเบื่อไปหน่อยค่ะ และจริงๆ เราสามารถทำอะไรได้อีกหลายมากๆ หากเรามีความรู้ความเข้าใจจริงๆค่ะ

และถึงแม้งานวิจัยนี้จะเก่า แต่ก็ถือว่าให้เห็นภาพ ซึ่งเป็นการปูพื้นฐานที่ดี พื้นฐานที่แข็งแรงจะทำให้สามารถต่อยอดได้ง่ายขึ้น

จบแล้วสำหรับบทความวันนี้ เจอกันใหม่ตอนหน้าค่ะ

สามารถติดตามกันได้ที่

Facebook: AI แบบเคลียร์ ตีแผ่ทุกไอเดียเบื้องหลังสมการ

Tiktok: ai.beeying

Youtube: AI แบบเคลียร์ๆ

Reference

Max Jaderberg et al., “Spatial Transformer Networks”, 2016, https://arxiv.org/pdf/1506.02025.pdf

--

--

AI แบบเคลียร์
AI แบบเคลียร์

Written by AI แบบเคลียร์

จากไอเดียสู่สมการ จากสมการสู่โค้ด จากโค้ดสู่โซลูชั่นการใช้งานจริง

No responses yet