ถอดรหัส DenseNet: เมื่อการส่งต่อข้อมูลแบบใยแมงมุม คือคำตอบของความฉลาด (Popular Models)

1. 🎯 ตอนที่ 29: ถอดรหัส DenseNet เมื่อการส่งต่อข้อมูลแบบใยแมงมุมคือคำตอบของความฉลาด
สวัสดีครับน้องๆ วิศวกรสาย Vision ทุกท่าน! ล้อมวงเข้ามาครับ วันนี้พี่จะพาน้องๆ ไปทำความรู้จักกับสถาปัตยกรรมโครงข่ายประสาทเทียมอีกตัวหนึ่ง ที่ถือว่าเป็น “ร่างอีโว” ต่อจากฮีโร่อย่าง ResNet
ในวงการ Machine Vision เมื่อเราพูดถึง “โมเดลยอดนิยม (Popular Models)” ที่วิศวกรทั่วโลกนิยมหยิบมาใช้งาน เรามักจะได้ยินชื่อ AlexNet, VGGNet, Inception, และ ResNet ถูกเรียกกันจนชินหู แต่วันนี้พี่จะพาไปเจาะลึกโมเดลที่ชื่อว่า DenseNet (Densely Connected Convolutional Networks) ครับ เรามาดูกันว่าแนวคิดการออกแบบของมันต่างจากรุ่นพี่อย่างไร ทำไมมันถึงเจ๋งจนเข้าไปอยู่ในทำเนียบหอเกียรติยศได้!
2. 📖 เปิดฉาก (The Hook)
ลองจินตนาการถึงโรงงานที่มีพนักงานยืนเรียงกันบนสายพานการผลิตดูนะครับ…
- ในยุคของ VGGNet พนักงานคนที่ 1 จะส่งชิ้นงานให้คนที่ 2, คนที่ 2 ส่งให้คนที่ 3 ทำแบบนี้ไปเรื่อยๆ ตามลำดับ (Sequential)
- พอมาในยุคของ ResNet พนักงานคนที่ 1 เริ่มฉลาดขึ้น เขาส่งชิ้นงานให้คนที่ 2 พร้อมกับ “โยนพิมพ์เขียว (Skip connection)” ข้ามหัวไปให้คนที่ 3 ดูด้วย เพื่อกันลืม
- แต่พอมาเป็นยุคของ DenseNet… กฎของโรงงานนี้เปลี่ยนไปเลยครับ! พนักงานทุกคนจะต้องส่งผลงานของตัวเอง “แจกจ่ายให้กับพนักงานทุกคนที่อยู่ถัดจากตัวเองในสายพานทั้งหมด!”
แนวคิดสุดแหวกแนวนี้ถูกนำเสนอโดย Huang และคณะในปี 2017 ซึ่งผลลัพธ์ที่ได้นั้นน่าทึ่งมาก เพราะมันทำให้เครือข่ายสามารถเรียนรู้ฟีเจอร์ได้อย่างลึกซึ้งโดยไม่ต้องใช้พารามิเตอร์เยอะเกินความจำเป็นครับ
3. 🧠 แก่นวิชา (Core Concepts)
ในบริบทของสถาปัตยกรรมยอดนิยม แหล่งข้อมูลระดับโลกได้อธิบายความแตกต่างและแก่นแท้ของการทำงานใน DenseNet ไว้ดังนี้ครับ:
- 1. ทายาทสายตรงของ ResNet (An Extension of ResNet): DenseNet ไม่ได้ถูกสร้างขึ้นมาจากความว่างเปล่าครับ แต่มันเป็นส่วนต่อขยาย (Extension) ที่พัฒนาต่อยอดมาจากแนวคิดของ ResNet โดยมุ่งเน้นไปที่การแก้ปัญหาเรื่องการไหลเวียนของข้อมูลในเครือข่ายที่ลึกมากๆ
- 2. ข้ามการเชื่อมต่อแบบไม่ติดกัน (Non-adjacent Skip Connections): โครงสร้างหลักของโมเดลนี้คือการเพิ่ม Skip connections ระหว่างบล็อกของ Convolution หรือ Pooling ที่อยู่ “ไม่ติดกัน (Non-adjacent)” นั่นหมายความว่า เลเยอร์ปัจจุบันจะเชื่อมต่อกับเลเยอร์ก่อนหน้าทั้งหมด และส่งผ่านข้อมูลไปยังเลเยอร์ถัดไปทั้งหมดด้วย
- 3. Summation ปะทะ Concatenation (จุดเปลี่ยนสำคัญ): นี่คือความแตกต่างที่สำคัญที่สุดครับ! ในบล็อกของ ResNet เวลาข้อมูลจากทางลัด (Skip connection) วิ่งมาบรรจบกับข้อมูลปัจจุบัน มันจะใช้วิธี “การบวกทับ (Summation)” ($F(x) + x$) ซึ่งบางครั้งทำให้ข้อมูลเดิมสูญเสียรูปแบบไป แต่ใน DenseNet โมเดลจะใช้วิธี “การนำมาต่อกัน (Concatenation)” ครับ! ข้อมูล Feature Maps จากเลเยอร์ก่อนหน้าจะถูกจับมาต่อท้ายกันเป็นหางว่าว แล้วป้อนเป็น Input ให้กับเลเยอร์ถัดๆ ไปทั้งหมด
- 4. พร้อมใช้งานใน Model Zoo:
ด้วยความทรงพลังของมัน ปัจจุบัน DenseNet ได้กลายเป็นสถาปัตยกรรมมาตรฐานที่ถูกบรรจุไว้ในคลังโมเดลสำเร็จรูป (Model Zoo) ของไลบรารีชื่อดังอย่าง
torchvision/modelsใน PyTorch ทำให้นักพัฒนาสามารถเรียกใช้งานได้อย่างง่ายดาย

4. 💻 ร่ายมนต์โค้ด (Show me the Code)
ในการทำงานจริงหน้างาน อย่างที่เอกสารอ้างอิงได้ระบุไว้ เราสามารถโหลด DenseNet มาใช้งานผ่านไลบรารี PyTorch ได้ง่ายๆ วันนี้พี่เลยขอสลับมาเขียน PyTorch ให้ดูเป็นตัวอย่างบ้าง สำหรับการทำ Transfer Learning ครับ:
import torch
import torchvision.models as models
import torch.nn as nn
# -------------------------------------------------------------
# 📌 1. โหลดโมเดล DenseNet-121 จาก torchvision.models
# โหลดพร้อมกับ weights ที่ pre-trained มาจาก ImageNet ให้ AI ฉลาดมาตั้งแต่เกิด
# -------------------------------------------------------------
densenet = models.densenet121(pretrained=True)
# -------------------------------------------------------------
# 📌 2. สั่ง Freeze ค่าน้ำหนัก (Weights) ของ Feature Extractor
# เพื่อไม่ให้ความรู้เดิมพังตอนเรานำมาสอนใหม่
# -------------------------------------------------------------
for param in densenet.parameters():
param.requires_grad = False
# -------------------------------------------------------------
# 📌 3. เปลี่ยน Classifier (หัวสมองส่วนตัดสินใจ) ให้เข้ากับงานของเรา
# DenseNet-121 จะมี input features เข้า classifier ที่ 1024 ตัว
# สมมติโรงงานเราต้องการแยกของเสียแค่ 2 ประเภท (ดี / เสีย)
# -------------------------------------------------------------
num_ftrs = densenet.classifier.in_features
densenet.classifier = nn.Linear(num_ftrs, 2)
# ลองปริ้นท์ดูโครงสร้าง จะเห็นบล็อกการทำ Concatenation ระหว่างทาง
print(densenet)คอมเมนต์: สังเกตว่าใน torchvision เราแทบไม่ต้องไปยุ่งกับความซับซ้อนของการต่อสายสัญญาณภายใน Dense Block เลยครับ ทางไลบรารีจัดการร้อยเรียงเลเยอร์แบบใยแมงมุม (Concatenation) ไว้ให้เราหมดแล้ว หน้าที่ของเราคือแค่นำมา Fine-tune ให้ตรงกับโจทย์ของโรงงานเท่านั้นเอง!
5. 🛡️ เคล็ดลับจากคัมภีร์ลับ (Under the Hood / Pro-Tips)
ในมุมมองของวิศวกรที่ต้องเอาโมเดลไปลง Hardware จริง พี่มีข้อสังเกตเกี่ยวกับ DenseNet มากระซิบบอกครับ:
- ประหยัด Parameter แต่กิน RAM!: การใช้ Concatenation ทำให้ DenseNet มีจำนวนพารามิเตอร์ที่น้อยกว่า ResNet มาก เพราะมันนำฟีเจอร์เก่ามาใช้ซ้ำ (Feature reuse) ได้อย่างมีประสิทธิภาพ แต่ข้อควรระวังคือ เวลารันจริงๆ (Forward pass) มันจะกินพื้นที่หน่วยความจำ (RAM/VRAM) ค่อนข้างโหดครับ เพราะมันต้องเก็บ Feature Maps แผ่นเก่าๆ เอาไว้ต่อกับแผ่นใหม่ตลอดเวลา
- ไม่ต้องกังวลเรื่อง Vanishing Gradient: ด้วยความที่มันมีทางลัดยิงตรงจากเลเยอร์แรกๆ ไปจนถึงปลายทาง ไม่ว่าเครือข่ายจะลึกแค่ไหน สัญญาณ Error ตอนทำ Backpropagation ก็จะสามารถวิ่งกลับมาถึงต้นทางได้อย่างรวดเร็วและปลอดภัยครับ
6. 🏁 บทสรุป (To be continued…)
สรุปส่งท้ายกันครับ DenseNet คือหนึ่งในโมเดลยอดนิยมที่ต่อยอดความสำเร็จมาจาก ResNet โดยเปลี่ยนกระบวนทัศน์จากการ “บวกทับ (Summation)” มาเป็นการ “นำข้อมูลมาต่อกัน (Concatenation)” และเพิ่มการเชื่อมต่อแบบข้ามเลเยอร์อย่างหนาแน่น (Dense Connectivity)
ผลลัพธ์ที่ได้คือสถาปัตยกรรมที่ส่งผ่านความรู้ได้อย่างมีประสิทธิภาพสูงสุด ฟีเจอร์ที่สกัดได้ในชั้นแรกๆ ไม่เคยสูญหายไปไหน ทำให้มันเป็นอีกหนึ่งอาวุธสำคัญในกล่องเครื่องมือของนักพัฒนา Machine Vision
ซีรีส์เจาะลึกสถาปัตยกรรม CNN ของเราก็เดินทางมาไกลมากแล้วนะครับ ตั้งแต่ยุคของแว่นขยายธรรมดา จนถึงโครงข่ายแบบใยแมงมุม ในตอนต่อไป เราจะเริ่มนำสถาปัตยกรรมเหล่านี้ (Backbone) ไปต่อยอดใช้ในงานขั้นสูงกว่าการแยกประเภทภาพ (Classification) นั่นคืองานตีกรอบระบุตำแหน่ง หรือ Object Detection กันบ้างครับ รับรองว่ามันส์แน่นอน รอติดตามได้เลย!
ต้องการที่ปรึกษาและพัฒนาระบบ Automation & Machine Vision ให้กับโรงงานของคุณ? ทีมงาน WP Solution พร้อมให้บริการออกแบบและติดตั้งระบบแบบครบวงจร ดูรายละเอียดบริการของเราได้ที่: www.wpsolution2017.com หรือพูดคุยปรึกษาเบื้องต้นได้ที่ Line: wisit.p