บทที่ 4: การพัฒนาโมเดลการเรียนรู้เชิงลึกสำหรับการตรวจจับโรคและแมลงศัตรูพืช

เวลาในการอ่าน: ประมาณ 45 นาที

บทนี้จะอธิบายขั้นตอนการพัฒนาโมเดลการเรียนรู้เชิงลึก (Deep Learning Model) สำหรับการตรวจจับและจำแนกโรคในทุเรียนและแมลงศัตรูพืช โดยใช้ TensorFlow และ Keras

4.1 การเตรียมข้อมูล (Data Preparation)

ขั้นตอนแรกในการพัฒนาโมเดลคือการเตรียมข้อมูลภาพถ่ายของโรคและแมลงศัตรูพืชในทุเรียนและไม้ผลอื่นๆ

4.1.1 การรวบรวมข้อมูล (Data Collection)

รวบรวมภาพถ่ายของโรคและแมลงศัตรูพืชจากแหล่งต่างๆ เช่น:

  • ฐานข้อมูลสาธารณะ: เช่น PlantVillage, Kaggle
  • การถ่ายภาพด้วยตนเอง: ถ่ายภาพจากสวนทุเรียนและไม้ผลอื่นๆ
  • ความร่วมมือกับหน่วยงานวิจัย: ขอความร่วมมือจากหน่วยงานวิจัยทางการเกษตร

4.1.2 การแบ่งข้อมูล (Data Splitting)

แบ่งข้อมูลภาพออกเป็น 3 ชุด:

  • ชุดฝึกสอน (Training Set): ใช้สำหรับฝึกสอนโมเดล (ประมาณ 70% ของข้อมูลทั้งหมด)
  • ชุดตรวจสอบ (Validation Set): ใช้สำหรับปรับปรุงโมเดลระหว่างการฝึกสอน (ประมาณ 15% ของข้อมูลทั้งหมด)
  • ชุดทดสอบ (Test Set): ใช้สำหรับประเมินประสิทธิภาพของโมเดลหลังจากการฝึกสอนเสร็จสิ้น (ประมาณ 15% ของข้อมูลทั้งหมด)

4.1.3 การเพิ่มข้อมูล (Data Augmentation)

การเพิ่มข้อมูลเป็นเทคนิคในการสร้างข้อมูลใหม่จากข้อมูลที่มีอยู่ เพื่อเพิ่มความหลากหลายของข้อมูลและป้องกันการเกิด Overfitting

เทคนิคการเพิ่มข้อมูลที่ใช้บ่อย ได้แก่:

  • การหมุนภาพ (Rotation): หมุนภาพในองศาต่างๆ
  • การเลื่อนภาพ (Shifting): เลื่อนภาพในแนวตั้งและแนวนอน
  • การซูมภาพ (Zooming): ซูมเข้าหรือซูมออก
  • การพลิกภาพ (Flipping): พลิกภาพในแนวตั้งและแนวนอน

4.2 การสร้างโมเดล (Model Building)

ในส่วนนี้ เราจะสร้างโมเดล CNN โดยใช้ Keras API

4.2.1 การเลือกสถาปัตยกรรม (Architecture Selection)

เราสามารถเลือกใช้สถาปัตยกรรม CNN ที่มีอยู่แล้ว เช่น VGG16, ResNet50, InceptionV3 หรือสร้างสถาปัตยกรรมขึ้นมาใหม่

ในตัวอย่างนี้ เราจะสร้างสถาปัตยกรรม CNN ขึ้นมาใหม่

4.2.2 การสร้างโมเดลด้วย Keras

เราจะสร้างโมเดル CNN ที่ประกอบด้วยชั้นต่างๆ ดังนี้:

  • ชั้นคอนโวลูชัน (Convolutional Layers): ใช้ฟังก์ชันกระตุ้น (Activation Function) แบบ ReLU
  • ชั้นพูลลิ่ง (Pooling Layers): ใช้ Max Pooling
  • ชั้น Dropout: ป้องกันการเกิด Overfitting
  • ชั้น Flatten: แปลงข้อมูล 2 มิติเป็น 1 มิติ
  • ชั้นเชื่อมต่อแบบเต็ม (Fully Connected Layers): ใช้ฟังก์ชันกระตุ้นแบบ ReLU และ Softmax
TensorFlow Lite Mobile

รูปที่ 4.1: สถาปัตยกรรม TensorFlow Lite สำหรับแอปพลิเคชั่นมือถือ

4.3 การฝึกสอนโมเดล (Model Training)

หลังจากสร้างโมเดลแล้ว เราจะทำการฝึกสอนโมเดลด้วยชุดข้อมูลฝึกสอน

4.3.1 การคอมไพล์โมเดล (Model Compilation)

ก่อนการฝึกสอน เราต้องคอมไพล์โมเดลโดยกำหนด:

  • ฟังก์ชันการสูญเสีย (Loss Function): เช่น Categorical Crossentropy
  • ตัวปรับปรุง (Optimizer): เช่น Adam
  • เมตริก (Metrics): เช่น Accuracy

4.3.2 การฝึกสอนโมเดล

เราจะใช้ฟังก์ชัน `fit()` ในการฝึกสอนโมเดล โดยกำหนด:

  • ชุดข้อมูลฝึกสอน (Training Data)
  • จำนวนรอบ (Epochs)
  • ขนาดของชุดข้อมูลย่อย (Batch Size)
  • ชุดข้อมูลตรวจสอบ (Validation Data)

4.4 การประเมินและปรับปรุงโมเดล (Model Evaluation and Improvement)

หลังจากฝึกสอนโมเดลแล้ว เราจะทำการประเมินประสิทธิภาพของโมเดลและปรับปรุงโมเดลเพื่อเพิ่มประสิทธิภาพ

4.4.1 การประเมินโมเดล

เราจะใช้ฟังก์ชัน `evaluate()` ในการประเมินประสิทธิภาพของโมเดลด้วยชุดข้อมูลทดสอบ

เมตริกที่ใช้ในการประเมิน ได้แก่:

  • ความแม่นยำ (Accuracy)
  • ความแม่นยำในการทำนายคลาสบวก (Precision)
  • ความสามารถในการตรวจจับคลาสบวก (Recall)
  • F1-Score
  • Confusion Matrix

4.4.2 การปรับปรุงโมเดล

หากประสิทธิภาพของโมเดลยังไม่ดีพอ เราสามารถปรับปรุงโมเดลได้โดย:

  • การปรับไฮเปอร์พารามิเตอร์ (Hyperparameter Tuning): เช่น Learning Rate, Batch Size, Number of Epochs
  • การเปลี่ยนสถาปัตยกรรม (Changing Architecture): เช่น เพิ่มหรือลดจำนวนชั้น, เปลี่ยนประเภทของชั้น
  • การใช้ Transfer Learning: นำโมเดลที่ฝึกสอนแล้วมาใช้เป็นจุดเริ่มต้น

4.5 การแปลงโมเดลสำหรับอุปกรณ์เคลื่อนที่ (Model Conversion for Mobile Devices)

หลังจากได้โมเดลที่มีประสิทธิภาพดีแล้ว เราจะทำการแปลงโมเดลให้อยู่ในรูปแบบที่สามารถทำงานบนอุปกรณ์เคลื่อนที่ได้

4.5.1 TensorFlow Lite

สำหรับแอปพลิเคชั่น Android เราจะใช้ TensorFlow Lite Converter ในการแปลงโมเดล Keras ให้อยู่ในรูปแบบ `.tflite`

4.5.2 Core ML

สำหรับแอปพลิเคชั่น iOS เราจะใช้ Core ML Tools ในการแปลงโมเดล Keras ให้อยู่ในรูปแบบ `.mlmodel`

4.6 สรุป

ในบทนี้ เราได้เรียนรู้เกี่ยวกับขั้นตอนการพัฒนาโมเดลการเรียนรู้เชิงลึกสำหรับการตรวจจับและจำแนกโรคในทุเรียนและแมลงศัตรูพืช

เราได้เรียนรู้เกี่ยวกับการเตรียมข้อมูล การสร้างโมเดล การฝึกสอนโมเดล การประเมินและปรับปรุงโมเดล และการแปลงโมเดลสำหรับอุปกรณ์เคลื่อนที่

ในบทต่อไป เราจะเรียนรู้เกี่ยวกับการพัฒนาแอปพลิเคชั่นสมาร์ทโฟนสำหรับระบบปฏิบัติการ Android

แบบฝึกหัดท้ายบท

  1. จงอธิบายความสำคัญของการเพิ่มข้อมูล (Data Augmentation) ในการพัฒนาโมเดลการเรียนรู้เชิงลึก
  2. จงเขียนโค้ด Python เพื่อสร้างโมเดล CNN สำหรับการจำแนกโรคในทุเรียนโดยใช้ Keras
  3. จงอธิบายความแตกต่างระหว่าง Precision และ Recall และเหตุผลที่ต้องพิจารณาทั้งสองเมตริกในการประเมินโมเดล
  4. จงอธิบายข้อดีและข้อเสียของการใช้ Transfer Learning ในการพัฒนาโมเดลการเรียนรู้เชิงลึก
  5. จงเขียนโค้ด Python เพื่อแปลงโมเดล Keras ให้อยู่ในรูปแบบ TensorFlow Lite

เอกสารอ้างอิง

  1. Chollet, F. (2017). Deep Learning with Python. Manning Publications.
  2. TensorFlow. (2021). TensorFlow Core. https://www.tensorflow.org/
  3. Keras. (2021). Keras: the Python deep learning API. https://keras.io/
  4. Shorten, C., & Khoshgoftaar, T. M. (2019). A survey on Image Data Augmentation for Deep Learning. Journal of Big Data, 6(1), 60.

การพัฒนาแอปพลิเคชั่นสมาร์ทโฟนเพื่อตรวจจับโรคในทุเรียน

สำหรับนักเรียน นักศึกษา

ติดต่อ

อีเมล: contact@durianapp.example.com

© สงวนลิขสิทธิ์