ภาพปก DenseNet Architecture ในบริบทของสถาปัตยกรรมยอดนิยม

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 ทำให้นักพัฒนาสามารถเรียกใช้งานได้อย่างง่ายดาย
แผนภาพแสดง Dense Block ที่แต่ละ Convolutional Layer เชื่อมต่อกับทุกเลเยอร์ก่อนหน้าด้วยการทำ Concatenation

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