Convolution Neural Network (convolution layer part)

Pisit Bee
Boobee
Published in
2 min readSep 28, 2020

สวัสดีครับ ช่วงนี้หายหน้าหายตา ไปนาน มัวปั่น Thesis อยู่ครับ

วันนี้จะมาขอพูดเรื่อง Convolution Neural Network กัน หรือ หลายๆ คนเรียกว่า CNN นั่นแหละครับ ไม่ใช่สำนักข่าวนะครับ

เจ้าตัว CNN เป็น Neural Network ที่ทำงานด้านรูปภาพเป็นหลักนะครับ ทำงานได้ดีเลยทีเดียว มันสามารถค้นหา Feature ที่เหมาะสมกับ ชุดข้อมูลฝึกสอนของเราได้ (training dataset) โดยหลาย ๆ คนเรียก ช่วงเวลาการค้นหา Feature นี้ว่า Feature Extraction ครับ
ยังไม่หมดแค่นั้น เจ้าตัว CNN สามารถหา Feature ในระดับต่ำสุดเช่น พวก เส้น, ขอบ, จุด ในรูปภาพของเราได้ แล้วยังสามารถประกอบกับ เป็น Feature ระดับสูงได้ เช่น ดวงตา สีผม เพื่อใช้ในการบอกลักษณะเฉพาะของรูป input ที่เข้ามาได้ด้วย

มาดูส่วนประกอบสำคัญของ CNN แล้วกันครับ เจ้าตัว CNN จะประกอบไปด้วย 2 Layers ที่เข้ามามีบทบาทสำคัญ นั่นคือ Convoluted layer และ Pooling layer

Convoluted Layer เป็น Layer ที่ใช้ในการคำนวนการ Convoluted กันระหว่างรูปภาพ กับ Fillter มาถึงตรงนี้ ถ้าใครเรียนด้าน Image Processing มาจะทราบดีว่า ตัว Fillter มีบทบาทสำคัญมากในการเปลี่ยนให้รูปของเรามีลักษณะที่แตกต่างกันออกไป เช่น ทำให้ภาพเบลอ ภาพชัดขึ้น ถ้ามองง่ายๆ เหมือนเราใส่ Filter ในกล้องของเราครับ รูปเราจะเปลียนไปในแบบต่างๆ ดังนั้นถ้ามี Fillter ที่ดี ภาพของเราก็สดใสขึ้นครับ สวยขึ้น หลากหลายมากขึ้น
ในชั้น Convoluted layer จะนำเอา Filter กับ Input Image มาทำการ Convoluted กันด้วย สมการดังนี้ครับ

โดย u เป็น output ของการ Convoluted , ตัวแปล b คือ bias, x เป็น input ครับ ส่วน h คือ filter

เวลาทำการ convolute กันจะนำ ฟิวเตอร์ ไป cover ในตาราง pixel หนึ่งและ ทำการแต่ละ Pixel ที่ถูก cover ด้วย Filter และหาผลรวมทั้งหมดครับ อธิบาย สมการด้านบนได้ประมาณนี้นะครับ ตัวตัวอย่างรูปกัน

รูปแบบการ Convoluted ของ Filter

จากภาพด้านบนจะเห็นว่า มี Filter ขนาด 5x5x3 ตัว 3 นี่สำคัญนะครับ จำเป็นต้องมีขนาดเท่ากับ channel ของ input ตัวอย่างนี้มี 3 channels ผมทำให้เป้นสีแดงไว้จะได้เป็นที่สังเกตุ

ทำการ Convolute อันแรกจะได้มา 1 ค่า pixel ของ Convolution map ผมขอเรียกว่า Convolution map แล้วกันครับ เดียวต้องผ่าน Activation จะเรียกว่า Feature map อีกที

ตัวอย่างการคำนวนเฉพาะ 1 ฟิวเตอร์เท่านั้นนะครับ แต่ ใน 1 ฟิวเตอร์มี 3 channels เลยต้องมี 3 แผ่นใน 1 Filter

ตัวอย่างการคำนวน

เมื่อเราทำการ Convoluted กับ Filter 1 ตัวเราจะได้ 1 convoluted map 1 ชิ้น ซึ่งจะทำให้มีความแตกต่างกันไปของรูปแบบ Output เหมือนตัวอย่างด้านบนนะครับ ให้ output มารูปแบบหนึ่ง เราจึงต้องเพิ่มจำนวน Filter เพื่ออยากได้ หลายๆ รูปแบบ ดังนั้น ก็เพิ่ม จำนวน Filter เข้าไป ได้เป็นดังรูป

Filters หลายๆ ตัวจะได้มีหลายๆ รูปแบบ

จากภาพนะครับ เราใช้ 6 filters จะนำให้ได้ 6 channels output ออกมา ถ้าเราอยาก Convoluted อีกในชั้นถัดไป ถามว่าในFilter 1 ตัวของเราจะต้องมี กี่ Channels ครับ ……..

คำตอบ เมื่อ input มี 6 channels filters เราก็ต้องมี 6 channels ด้วยเช่นกันครับ ถึงจะ Convoluted กันได้ แต่จำนวน filters นั้นไม่จำกัดนะครับ น่าจะไม่งง เน๊าะครับ

เอาละครับสำหรับวันนี้เรียนรู้เรื่อง Convoluted layer ไปแล้ว หวังว่าจะพอให้เห็นภาพกันบ้างนะครับ ใครมีคำถามฝากไว้ที่ Comment ได้เลยครับ แล้วเจอกันใหม่ ในบทความถัดๆ ไปนะครับ

บายยยยยยย…

--

--