CNN คืออะไร? 

โครงข่าย CNN ที่ประกอบด้วย Convolutional Layers, ReLU, Pooling, Fully Connected, Dropout
โครงข่าย Convolution Neural Network (CNN) 
Convolutional Neural Network (CNN) หรือเครือข่ายประสาทเทียมแบบคอนโวลูชัน

 Convolutional Neural Network (CNN) เป็นเทคนิคใน  Deep Learning (DL) ที่ใช้ในการประมวลผลข้อมูลที่มีโครงสร้าง เช่น ภาพและวิดีโอ โดย CNN เป็นส่วนหนึ่งของ Machine Learning ที่เน้นการเรียนรู้จากข้อมูลเพื่อทำนายผลหรือจำแนกประเภท ในขณะที่ Deep Learning เป็นสาขาหนึ่งของ Machine Learning ที่ใช้โครงข่ายประสาทเทียม (Artificial Neural Networks)  ที่มีหลายชั้น (Deep Networks) เพื่อเรียนรู้และทำความเข้าใจลักษณะข้อมูลที่ซับซ้อน โดย CNN ถูกพัฒนาเพื่อทำให้การประมวลผลภาพและข้อมูลเชิงพื้นที่มีประสิทธิภาพมากขึ้น

Convolutional Neural Network (CNN) หรือเรียกว่า เครือข่ายประสาทเทียมแบบคอนโวลูชัน ซึ่งถูกออกแบบมาเพื่อการประมวลผลข้อมูลที่มีโครงสร้างแบบ 2 มิติ เช่น รูปภาพ หรือข้อมูลสัญญาณที่จัดเรียงในลักษณะคล้ายรูปภาพ เช่น สัญญาณเสียง หรือวิดีโอ เป็นต้น โดย CNN มีโครงสร้าง ดังนี้
  1. Convolution Layer ใช้ฟิลเตอร์หรือเคอร์เนล (kernel) ขนาดเล็กเลื่อนผ่านข้อมูลอินพุต (เช่น ภาพ) เพื่อคำนวณคุณสมบัติ (features) ที่สำคัญ ชั้นนี้จะช่วยลดความซับซ้อนของการประมวลผลภาพโดยไม่สูญเสียข้อมูลสำคัญ จะได้ผลลัพธ์ที่ได้เรียกว่า "feature map"
  2. Pooling Layer เป็นชั้นที่ทำหน้าที่ในการลดขนาดของข้อมูล (down-sampling) เพื่อทำให้การคำนวณมีประสิทธิภาพมากขึ้น และลดการ overfitting ตัวอย่างของ pooling ได้แก่ Max Pooling (เลือกค่ามากที่สุดในพื้นที่เล็กๆ) และ Average Pooling (ค่าเฉลี่ย)
  3. Activation Function จะใช้ฟังก์ชันไม่เชิงเส้น เช่น ReLU (Rectified Linear Unit) เพื่อเพิ่มความสามารถในการเรียนรู้ลักษณะเชิงซับซ้อน
  4. Fully Connected Layer เป็นชั้นที่เชื่อมต่อโครงข่ายทั้งหมด ใช้สำหรับการจำแนกประเภท (classification) หรือการคาดการณ์ผลลัพธ์
  5. Dropout Layer ใช้ลด overfitting โดยสุ่มปิดบางหน่วยในโครงข่ายระหว่างการฝึก

ตัวอย่างการใช้ CNN

import tensorflow as tf
from tensorflow.keras.datasets import mnist
from tensorflow.keras.utils import to_categorical
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv1D, MaxPooling1D, Flatten, Dense, Dropout
from tensorflow.keras.optimizers import Adam

# โหลดข้อมูล MNIST
(x_train, y_train), (x_test, y_test) = mnist.load_data()

x_train = x_train.reshape(x_train.shape[0], 28, 28, 1)
x_test = x_test.reshape(x_test.shape[0], 28, 28, 1)

# แปลงค่าพิกเซลให้อยู่ในช่วง [0, 1]
x_train = x_train.astype('float32') / 255.0
x_test = x_test.astype('float32') / 255.0

# จำนวนคลาส (ใน MNIST มี 10 คลาส คือ 0-9)
num_classes = 10

# แปลง Label
y_train = to_categorical(y_train, num_classes)
y_test = to_categorical(y_test, num_classes)

# Build and compile model
model = Sequential()
model.add(Conv1D(filters=64, kernel_size=3, activation='relu', input_shape=(x_train.shape[1], x_train.shape[2])))
model.add(Conv1D(filters=64, kernel_size=3, activation='relu'))
model.add(Dropout(0.5))
model.add(MaxPooling1D(pool_size=2))
model.add(Flatten())
model.add(Dense(100, activation='relu'))
model.add(Dense(10, activation='softmax', name='Output'))

model.compile(optimizer=Adam(learning_rate=0.001),
              loss='categorical_crossentropy',  # ใช้ categorical_crossentropy แทน sparse_categorical_crossentropy เพราะ label เป็น one-hot
              metrics=['accuracy'])

model.fit(x_train, y_train, epochs=10, batch_size=200, validation_data=(x_test, y_test))

score = model.evaluate(x_test, y_test)
print('Test loss:', score[0])
print('Test accuracy:', score[1])

การทำงานของ CNN

  1. รับข้อมูลอินพุตเข้ามาในโมเดล เช่น ภาพขนาด 28x28 พิกเซล
  2. ผ่านชั้นคอนโวลูชัน เพื่อทำการสกัดคุณสมบัติที่สำคัญ เช่น รูปแบบ หรือโครงสร้างเฉพาะในภาพ
  3. ลดขนาดข้อมูลผ่านการ Pooling เพื่อรักษาคุณสมบัติสำคัญ
  4. แปลงข้อมูลเพื่อเชื่อมกันทุกชั้นโดย Fully Connected Layer
  5. โมเดลสำหรับนำไปทำนาย

สรุป 

CNN ใช้ในการรู้จำภาพ เช่น แยกประเภทวัตถุและตรวจจับใบหน้าได้อย่างแม่นยำ
เหมาะสำหรับการตรวจจับวัตถุและระบุพื้นที่สำคัญในภาพ เช่น การวิเคราะห์ภาพทางการแพทย์
สามารถใช้งานในระบบขับเคลื่อนอัตโนมัติ เช่น ตรวจจับสัญญาณจราจรในรถยนต์ไร้คนขับ
มีประสิทธิภาพในงานแยกส่วนภาพและสร้างภาพใหม่ เช่น งานศิลปะดิจิทัล เป็นเครื่องมือสำคัญในงานด้าน Computer Vision และการประมวลผลภาพขั้นสูง สามารถศึกษาตัวอย่างการจำแนกรูปภาพได้ที่ การจำแนกภาพเบื้องต้นด้วย Keras และหากสามารถศึกษาการเลือกโมเดลได้จากการเลือกโมเดลที่เหมาะสมสำหรับการจำแนกรูปภาพ 2 คลาส


อ้างอิง
Convolutional Neural Networks (CNN): สร้าง Model เพื่อทำ Image Classification ด้วย TensorFlow ,[ออนไลน์], เข้าถึงได้จาก https://medium.com/@app.kkloft/convolutional-neural-networks-cnn-สร้าง-model-เพื่อทำ-image-classification-ด้วย-tensorflow-58173661cfeb
Image Classification ด้วย Convolutional Neural Network (CNN) บน TensorFlow และ Streamlit ,[ออนไลน์], เข้าถึงได้จาก https://medium.com/@arkrapong.char/image-classification-ด้วย-convolutional-neural-network-cnn-บน-tensorflow-และ-streamlit-9d7d33f8aa14
สร้างโมเดล Deep learnning: CNN. ง่ายๆ สำหรับการจำแนกรูปภาพ ,[ออนไลน์], เข้าถึงได้จาก https://witscodes.wordpress.com/2020/01/26/สร้างโมเดล-deep-learning-cnn-convnet/
 
กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
UK Calling! 10 มหาวิทยาลัยฮิตติดเทรนด์สำหรับนักศึกษาต่างชาติ
โดย rinradap จ 20 ม.ค. 2025 12:58 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
4
จ 20 ม.ค. 2025 12:58 pm โดย rinradap View Topic UK Calling! 10 มหาวิทยาลัยฮิตติดเทรนด์สำหรับนักศึกษาต่างชาติ
เขียน shell script รันไฟล์ python แปลงเสียงเป็นข้อความ พร้อมจัดการผลที่ออกมาอัตโนมัต
โดย mindphp ส 18 ม.ค. 2025 12:46 pm บอร์ด Linux - Web Server
1
199
ส 18 ม.ค. 2025 3:05 pm โดย mindphp View Topic เขียน shell script รันไฟล์ python แปลงเสียงเป็นข้อความ พร้อมจัดการผลที่ออกมาอัตโนมัต
ชุดคำสั่งรันไฟล์ โปรเจ็ค Python แบบรวมรัด ไม่ให้กระทบโปรเจ็คอื่นๆ
โดย mindphp ส 18 ม.ค. 2025 11:47 am บอร์ด Linux - Web Server
0
23
ส 18 ม.ค. 2025 11:47 am โดย mindphp View Topic ชุดคำสั่งรันไฟล์ โปรเจ็ค Python แบบรวมรัด ไม่ให้กระทบโปรเจ็คอื่นๆ
จะเช่า cloud server สำหรับทำ backup server ดีไหม Amazon S3 ราคาเป็นอย่างไร
โดย mindphp ศ 17 ม.ค. 2025 11:54 pm บอร์ด ถาม - ตอบ คอมพิวเตอร์
0
81
ศ 17 ม.ค. 2025 11:54 pm โดย mindphp View Topic จะเช่า cloud server สำหรับทำ backup server ดีไหม Amazon S3 ราคาเป็นอย่างไร
เลือก Cyber Security คอร์สอย่างไร? ให้ตอบโจทย์คุณ
โดย admeadme อ 14 ม.ค. 2025 4:58 pm บอร์ด ถาม - ตอบ คอมพิวเตอร์
0
83
อ 14 ม.ค. 2025 4:58 pm โดย admeadme View Topic เลือก Cyber Security คอร์สอย่างไร? ให้ตอบโจทย์คุณ
AI ตัวไหนสามารถ gen vdo แบบไม่โดนลิขสิทธ์ได้บ้าง
โดย noncup302 จ 13 ม.ค. 2025 3:57 pm บอร์ด ถาม - ตอบ คอมพิวเตอร์
5
127
พ 15 ม.ค. 2025 6:33 am โดย mindphp View Topic AI ตัวไหนสามารถ gen vdo แบบไม่โดนลิขสิทธ์ได้บ้าง
นำเช้าสินค้าจากจีน
โดย duangmain ส 11 ม.ค. 2025 2:09 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
106
ส 11 ม.ค. 2025 2:09 pm โดย duangmain View Topic นำเช้าสินค้าจากจีน
เเจก เทคนิคการติดตั้งโซล่าเซลล์
โดย duangmain ส 11 ม.ค. 2025 2:03 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
63
ส 11 ม.ค. 2025 2:03 pm โดย duangmain View Topic เเจก เทคนิคการติดตั้งโซล่าเซลล์