|
|
||
|---|---|---|
| .. | ||
| lab | ||
| CNN_Architectures.md | ||
| ConvNetsPyTorch.ipynb | ||
| ConvNetsTF.ipynb | ||
| README.md | ||
README.md
เครือข่ายประสาทเทียมแบบคอนโวลูชัน
เราเคยเห็นมาก่อนว่าเครือข่ายประสาทเทียมมีความสามารถที่ดีในการจัดการกับภาพ และแม้แต่เพอร์เซปตรอนชั้นเดียวก็สามารถจดจำตัวเลขที่เขียนด้วยมือจากชุดข้อมูล MNIST ได้ด้วยความแม่นยำที่น่าพอใจ อย่างไรก็ตาม ชุดข้อมูล MNIST มีลักษณะพิเศษที่ตัวเลขทั้งหมดถูกจัดให้อยู่ตรงกลางของภาพ ซึ่งทำให้การจำแนกง่ายขึ้น
แบบทดสอบก่อนเรียน
ในชีวิตจริง เราต้องการความสามารถในการจดจำวัตถุในภาพโดยไม่คำนึงถึงตำแหน่งที่แน่นอนของวัตถุในภาพ การมองเห็นด้วยคอมพิวเตอร์แตกต่างจากการจำแนกประเภททั่วไป เพราะเมื่อเราพยายามค้นหาวัตถุเฉพาะในภาพ เราจะสแกนภาพเพื่อค้นหารูปแบบเฉพาะและการผสมผสานของรูปแบบเหล่านั้น ตัวอย่างเช่น เมื่อมองหาภาพแมว เราอาจเริ่มมองหาสายเส้นแนวนอนที่อาจเป็นหนวด และการผสมผสานของหนวดในลักษณะเฉพาะสามารถบอกเราได้ว่านี่คือภาพของแมว ตำแหน่งสัมพัทธ์และการมีอยู่ของรูปแบบบางอย่างมีความสำคัญ แต่ไม่ใช่ตำแหน่งที่แน่นอนในภาพ
เพื่อดึงรูปแบบเหล่านี้ออกมา เราจะใช้แนวคิดของ ฟิลเตอร์คอนโวลูชัน อย่างที่คุณทราบ ภาพถูกแสดงในรูปแบบเมทริกซ์ 2 มิติ หรือเทนเซอร์ 3 มิติที่มีความลึกของสี การใช้ฟิลเตอร์หมายถึงการนำเมทริกซ์ ฟิลเตอร์เคอร์เนล ขนาดเล็กมาใช้ และสำหรับแต่ละพิกเซลในภาพต้นฉบับ เราจะคำนวณค่าเฉลี่ยถ่วงน้ำหนักกับจุดที่อยู่ใกล้เคียง เราสามารถมองสิ่งนี้เหมือนหน้าต่างเล็ก ๆ ที่เลื่อนผ่านภาพทั้งหมด และเฉลี่ยค่าพิกเซลทั้งหมดตามน้ำหนักในเมทริกซ์ฟิลเตอร์เคอร์เนล
![]() |
![]() |
|---|
ภาพโดย Dmitry Soshnikov
ตัวอย่างเช่น หากเราใช้ฟิลเตอร์ขอบแนวตั้งและแนวนอนขนาด 3x3 กับตัวเลขใน MNIST เราจะได้ไฮไลต์ (เช่น ค่าที่สูง) ในจุดที่มีขอบแนวตั้งและแนวนอนในภาพต้นฉบับ ดังนั้นฟิลเตอร์ทั้งสองนี้สามารถใช้เพื่อ "ค้นหา" ขอบได้ ในทำนองเดียวกัน เราสามารถออกแบบฟิลเตอร์ต่าง ๆ เพื่อค้นหารูปแบบระดับต่ำอื่น ๆ:
ภาพจาก Leung-Malik Filter Bank
อย่างไรก็ตาม แม้ว่าเราจะสามารถออกแบบฟิลเตอร์เพื่อดึงรูปแบบบางอย่างออกมาได้ด้วยตนเอง เราก็สามารถออกแบบเครือข่ายในลักษณะที่มันจะเรียนรู้รูปแบบเหล่านี้โดยอัตโนมัติได้เช่นกัน นี่คือหนึ่งในแนวคิดหลักที่อยู่เบื้องหลัง CNN
แนวคิดหลักของ CNN
วิธีการทำงานของ CNN อิงตามแนวคิดสำคัญดังต่อไปนี้:
- ฟิลเตอร์คอนโวลูชันสามารถดึงรูปแบบออกมาได้
- เราสามารถออกแบบเครือข่ายในลักษณะที่ฟิลเตอร์ถูกฝึกฝนโดยอัตโนมัติ
- เราสามารถใช้วิธีเดียวกันนี้เพื่อค้นหารูปแบบในคุณลักษณะระดับสูง ไม่ใช่แค่ในภาพต้นฉบับ ดังนั้นการดึงคุณลักษณะของ CNN จึงทำงานในลำดับชั้นของคุณลักษณะ โดยเริ่มจากการผสมผสานพิกเซลระดับต่ำไปจนถึงการผสมผสานระดับสูงของส่วนต่าง ๆ ของภาพ
ภาพจาก งานวิจัยโดย Hislop-Lynch ซึ่งอ้างอิงจาก งานวิจัยของพวกเขา
✍️ แบบฝึกหัด: เครือข่ายประสาทเทียมแบบคอนโวลูชัน
มาสำรวจเพิ่มเติมว่าเครือข่ายประสาทเทียมแบบคอนโวลูชันทำงานอย่างไร และเราจะสร้างฟิลเตอร์ที่ฝึกฝนได้อย่างไร โดยทำงานผ่านโน้ตบุ๊กที่เกี่ยวข้อง:
สถาปัตยกรรมแบบพีระมิด
CNN ส่วนใหญ่ที่ใช้สำหรับการประมวลผลภาพมักจะมีสถาปัตยกรรมแบบพีระมิด ชั้นคอนโวลูชันแรกที่ใช้กับภาพต้นฉบับมักจะมีจำนวนฟิลเตอร์ค่อนข้างต่ำ (8-16) ซึ่งสอดคล้องกับการผสมผสานพิกเซลต่าง ๆ เช่น เส้นแนวนอน/แนวตั้งของลายเส้น ในระดับถัดไป เราจะลดมิติของพื้นที่ในเครือข่าย และเพิ่มจำนวนฟิลเตอร์ ซึ่งสอดคล้องกับการผสมผสานที่เป็นไปได้มากขึ้นของคุณลักษณะง่าย ๆ ด้วยแต่ละชั้น เมื่อเราเคลื่อนไปยังตัวจำแนกขั้นสุดท้าย มิติของพื้นที่ในภาพจะลดลง และจำนวนฟิลเตอร์จะเพิ่มขึ้น
ตัวอย่างเช่น ลองดูสถาปัตยกรรมของ VGG-16 ซึ่งเป็นเครือข่ายที่ทำได้ถึงความแม่นยำ 92.7% ในการจัดอันดับ 5 อันดับแรกของ ImageNet ในปี 2014:
ภาพจาก Researchgate
สถาปัตยกรรม CNN ที่เป็นที่รู้จักดีที่สุด
ศึกษาต่อเกี่ยวกับสถาปัตยกรรม CNN ที่เป็นที่รู้จักดีที่สุด




