AI กับการเลี้ยงผึ้ง : การวิเคราะห์ข้อมูลการเกษตร


Share this article

อุตสาหกรรมเลี้ยงผึ้งเพื่อให้ได้น้ำผึ้งเพื่อจำหน่ายนั้นจัดเป็นอุตสาหกรรมขนาดใหญ่ ที่มีมูลค่าตลาดมากกว่า 1.17 พันล้านดอลลาร์ (USAID 2012) และอีกทั้งการนำผึ้งมาประยุกต์ใช้การในช่วยผสมเกสรทางการเกษตรซึ่งช่วยให้เพิ่มผลผลิตได้ 15 – 130% จากเดิม [1] ด้วย 2 สาเหตุนี้ การเลี้ยงผึ้งจึงเป็นอุตสาหกรรมการเกษตรที่เป็นที่นิยม อย่างไรตามในปัจจุบันผู้เลี้ยงผึ้งจำเป็นที่จะต้องเปิดรังที่ตนเองดูแล โดยใช้เวลาเฉลี่ย 15-30 นาที/รัง  เพื่อประเมินสภาพรังในทุกๆสัปดาห์ ซึ่งปกติอุตสาหกรรมหรือสวนที่มีขนาดใหญ่มีรังผึ้งมากกว่า 1,000 รัง จึงยากต่อการที่จะเข้ามาดูแลให้ทั่วถึง โดยเหตุนี้จึงมีคำถามจากผู้เลี้ยงว่า “เราจะทราบได้อย่างไรผึ้งที่เราเลี้ยงอยู่นั้น มีกิจกรรมภายในรังที่ปกติ หรือผิดปกติ”, “สถานะของรังนั้นมีปัญหาอะไรหรือไม่?”

เทคโนโลยีเซนเซอร์ในปัจจุบัน และเทคโนโลยี Internet of things มีก้าวหน้ามากขึ้น ดังนั้นจึงเริ่มมีการศึกษาโดยการเก็บข้อมูลจากรังผึ้งไม่ว่าจะเป็นการติดตั้ง Doppler Sensor บริเวณปากทางเข้ารังของผึ้ง การถ่ายภาพเพื่อนำมาทำ image processing หรือการใช้ไมโครโฟนเก็บข้อมูลเสียงที่เกิดขึ้นภายในรังมาวิเคราะห์ โดยในบทความนี้จะแสดง “การประยุกต์ใช้เทคนิคทางการวิเคราะห์สัญญาณที่มีชื่อว่า Fourier Transform  ร่วมด้วยกับ Convolutional Neural Network ในการระบุสถานะของรังผึ้งด้วยสัญญาณเสียง” ซึ่งจะแบ่งหัวข้อในบทความนี้ออกเป็น 5 ประเด็น ดังนี้

  1. สัญญาณเสียงของผึ้ง
  2. พื้นฐานและการทำงานของ Fourier Transform
  3. การแสดงผลข้อมูลในรูปแบบสเปคโตแกรม (Spectrogram)
  4. พื้นฐานและการทำงานของ Convolutional Neural Network
  5. การประยุกต์ใช้ Fourier Transform ร่วมกับ Convolutional Neural Network ในการแยะแยก Hissing Signal

1. สัญญาณเสียงของผึ้ง

ขั้นแรกลักษณะของสัญญาณเสียงของผึ้ง ผู้เขียนเลือกสัญญาณที่มีชื่อว่า “Hissing Signal” ซึ่งเป็นเสียงที่มีลักษณะต่อเนื่องเป็นเวลา 1 – 1.5 วินาที ความถี่ 200-3,600 Hz จะพบสัญญาณนี้เมื่อผึ้งกำลังข่มขู่ศัตรูในธรรมชาติ ณ ขณะนั้น โดยสัญญาณนี้จะเป็นสัญญาณที่ถูกสร้างจากผึ้งจำนวนหลายตัวภายในรัง

ผู้อ่านสามารถทำการ Load ไฟล์เสียง ตัวอย่างขึ้นมาในโปรแกรม Python ได้ด้วยคำสั่งตามภาพที่ 1 โดยจะเห็นได้ว่าข้อมูลมีความยาวในการอัดเป็น 60 วินาทีหรือ 1 นาที ซึ่งมีขนาดข้อมูลเป็น 2,880,000 จุด แบ่งเป็น 2 แชนแนล, Sampling rate ที่ใช้ในการเก็บคือ 48,000 จุด/วินาที อย่างไรก็ตามข้อมูลที่ถูกอ่านขึ้นมานั้นจะอยู่ในโดเมนของเวลา

ภาพที่1 การอ่านไฟล์เสียงเข้าสู่โปรแกรม Python

หากต้องการฟังเสียงและแสดงผล ดูข้อมูลตัวอย่างข้อมูลในโดเมนเวลาสามารถเขียนเรียกด้วยคำสั่งตามภาพที่ 2 ซึ่งแกน x คือจุดเวลาของข้อมูล และแกน y คือ amplitude ของสัญญาณที่สัมพันธ์กับความดัง (Loudness)

ภาพที่ 2 ตัวอย่างโค้ดการสร้างหน้าต่างฟังเสียงและแสดงข้อมูลตัวอย่าง

2. พื้นฐานและการทำงานของ Fourier Transform

เนื่องจากข้อมูลที่อยู่ในรูปแบบดิจิตอลที่ถูกใช้ในคอมพิวเตอร์จะเป็นข้อมูลที่มีลักษณะเป็น Discrete ดังนั้นเทคนิคที่นำมาใช้ในการวิเคราะห์จะเป็น Discrete Fourier Transform โดยทำการแปลงข้อมูลในโดเมนของเวลาให้อยู่ในโดเมนของความถี่โดยบทความนี้จะพูดถึงอัลกอลิทึมที่มีชื่อว่า Short-Time Fourier Transform (FTFT) โดยมีสมการดังสมการที่ 1 ซึ่งมีหลักการคือการ Shift Window (w[n]) ไปตลอดสัญญานในโดเมนเวลา (x[t]) อย่างไรก็ตามเมื่อทำการ Shift Window ไปตลอดสัญญาณจะเกิดเหตุการณ์ที่ข้อมูลบางส่วนหายไปเพราะขอบของ Window มีค่าเข้าใกล้ศูนย์ ดังนั้นจึงมีเทคนิคที่ชื่อว่าการทำ Overlapping เพื่อลดผลกระทบจากการใช้ Window ดังกล่าว

สมการที่ 1 Short-Time Fourier Transform
ภาพที่ 3 ตัวอย่างการ Overlapping อ้างอิง https://dsp.stackexchange.com/questions/19311/stft-why-overlapping-the-window

ผลลัพธ์ที่ได้จากการทำ STFT กับข้อมูลจะได้ผลลัพธ์ออกมาเป็นเวกเตอร์และขนาดของความถี่ที่มีสัญญาณช่วงเวลาหนึ่ง Window ดังภาพที่ 4

ภาพที่ 4 ผลลัพธ์หลังการทำ STFT กับข้อมูลเสียง

3. การแสดงผลข้อมูลในรูปแบบสเปคโตรแกรม (Spectrogram)

เนื่องจากการพิจารณาข้อมูลที่ได้หลังจากการทำ STFT ในแต่ละช่วง Window นั้นเป็นเรื่องซับซ้อน ดังนั้นจึงมีการนำข้อมูลทั้งหมดดังกล่าวมาแสดงผลให้อยู่ในรูปแบบของสเปคโตรแกรม ซึ่งสเปคโตรแกรมแกน x จะเป็นแกนเวลา, แกน y เป็นแกนความถี่ และสีที่แสดงอยู่ในภาพแสดงถึงความเข้มของขนาดของความถี่ ณ จุดนั้นๆ จากภาพที่ 5.1 และ 5.2 ผู้เขียนได้ทำการแสดงข้อมูลที่มีสัญญาณ Hissing ความยาว 1 วินาที ที่เกิดขึ้นที่ระหว่างวินาที 50-51 ในไฟล์เสียง จะพบว่าบริเวณช่วงความถี่ 1,000-3,000Hz ของภาพที่ 5 มีปริมาณความเข้มของสัญญาณมากกว่าภาพที่ 6.1 และ 6.2 ที่สัญญาณไม่มีองค์ประกอบของสัญญาณ Hissing อย่างไรก็ตามการแสดงในรูปแบบสเปคโตรแกรมนั้น มี Trade-off ในเรื่องรายละเอียดระหว่างเวลาและความถี่ กล่างคือ หากให้รายละเอียดในเชิงเวลาที่มากจนเกินไป (ในที่นี้ 60 วินาที) จะส่งผลให้รายละเอียดเชิงความถี่ด้อยลง ดังนั้นในการแสดงในรูปแบบสเปคโตรแกรมส่วนใหญ่นิยมให้ช่วงเวลาในหลักมิลลิวินาที ถึง วินาที เพื่อให้ได้รายละเอียดเชิงความถี่ที่มากขึ้น ซึ่งช่วงเวลาที่เหมาะสมก็ขึ้นอยู่กับลักษณะและธรรมชาติของสัญญาน ในที่นี่ Hissing มีช่วงเวลาในการเกิดอยู่ที่ 1-1.5 วินาที ดังนั้นควรเลือกช่วง 1-2 วินาที

ภาพที่ 5.1 ลักษณะข้อมูลในเชิงเวลาของสัญญาณที่มีสัญญาณ Hissing เป็นองค์ประกอบ
ภาพที่ 5.2 ลักษณะข้อมูลในเชิงสเปคโตรแกรมของสัญญาณที่มีสัญญาณ Hissing เป็นองค์ประกอบ
ภาพที่ 6.1 ลักษณะข้อมูลในเชิงเวลาของสัญญาณที่ไม่มีสัญญาณ Hissing เป็นองค์ประกอบ
ภาพที่ 6.2 ลักษณะข้อมูลในเชิงสเปคโตรแกรมของสัญญาณที่ไม่มีสัญญาณ Hissing เป็นองค์ประกอบ

4. พื้นฐานและการทำงานของ Convolutional Neural Network (CNN)

CNN เป็นเทคนิคหนึ่งใน Deep Learning ที่นิยมในการนำมาวิเคราะห์เกี่ยวกับรูปภาพเป็นอย่างมากในปัจจุบัน อย่างไรก็ตามบทความนี้จะไม่ได้ลงรายละเอียดในเชิงลึกเกี่ยวกับ CNN และรายละเอียดเชิงลึกของ Deep Learning แต่นำเทคนิคดังกล่าวมาประยุกต์ใช้ โดยเบื้องต้นเราสามารถแบ่งประเภทของเลเยอร์ (layer) ของ CNN ได้เป็น 3 ส่วน ดังนี้

  1. Convolution Layer ใช้สำหรับการสร้าง Feature Map บนรูปภาพ ปกตินิยมใช้ขนาด 3×3, 5×5 และ 7×7 ซึ่งเลเยอร์นี้ถือได้ว่าเป็นจุดเด่นของ CNN
  2. Pooling Layer ใช้สำหรับการลดขนาดของข้อมูล ซึ่งมีหลายรูปแบบเช่น Max Pooling, Average Pooling เป็นต้น
  3. Fully Connected Layer ใช้สำหรับ Mapping ข้อมูลทั้งหมดที่เป็น Input ให้เชื่อมต่อกับ Perceptron ของ Deep Learning
READ  Quantum Machine Learning with TensorFlow Quantum
ภาพที่ 7 ตัวอย่างโครงสร้างของ CNN อ้างอิง https://peltarion.com/article/classifying-images-of-clothes-with-the-peltarion-platform

5. การประยุกต์ใช้ Fourier Transform ร่วมกับ Convolutional Neural Network ในการแยะแยก Hissing Signal

ดังที่กล่าวในตอนต้นของบทความ เป้าหมายการวิเคราะห์ คือ  “การระบุสถานะของรังผึ้งด้วยสัญญาณเสียง” โดยปัจจุบันเทคนิคการแปลงสัญญาณในเชิงโดเมนของเวลาให้กลายเป็นข้อมูลเชิงโดเมนความถี่ด้วยการใช้เทคนิค STFT และแสดงผลของข้อมูลให้เป็นสเปคโตรแกรมเพื่อนำผลลัพธ์ที่ได้สร้างเป็น Input ในการเรียนรู้ของโมเดล CNN เป็นที่นิยมในการใช้วิเคราะห์ [2, 3, 4]

ผู้เขียนได้ทำการจัดเตรียมข้อมูลซึ่งเป็นส่วนที่ใช้เวลานาน เริ่มต้นจากการเริ่มฟังเสียงผึ้งที่ผู้เขียนได้ทำการบันทึกมาไว้ก่อนหน้านี้ โดยแต่ละไฟล์มีความยาว 60 วินาที/ไฟล์ ต่อมาทำการแบ่งข้อมูลเสียงออกเป็น 60 ช่วง ช่วงละ 1 วินาที และทำการระบุคลาสของข้อมูลว่าในแต่ละช่วงนั้นมี Hissing Signal เกิดขึ้นหรือไม่ หลังจากนั้นนำข้อมูลเสียงที่อยู่ในโดเมนเวลาไปผ่าน STFT เพื่อให้ได้ข้อมูลในเชิงสัญญาณและแปลงข้อมูลเหล่านั้นให้เป็นสเปคโตรแกรมดังตัวอย่างในภาพที่ 5 โดยเบื้องต้นจัดเตรียมสเปคโตรแกรมที่เกิดจากข้อมูลเสียงที่ไม่มี Hissing Signal 600 ไฟล์ และมี Hissing Signal จำนวน 400 ไฟล์

ลำดับต่อมาคือการออกแบบโครงสร้างของ CNN ที่จะใช้ในการเรียนรู้ข้อมูลสเปคโตรแกรม โดยผู้เขียนได้ออกแบบ ดังภาพที่ 8 โดยอ้างอิง 6th rule of thumb จากหนังสือ Guide to Convolutional Neural Network [5] ซึ่งมีรายละเอียดดังนี้

  1. ขนาดของข้อมูลก่อนที่จะเชื่อมต่อกับส่วน Fully Connected Layer ควรมีขนาดน้อยกว่า 8×8
  2. จำนวนของ Feature Map ควรเริ่มต้นจากขนาดเล็กใน Convolution Layer ในชั้นแรกๆ และเพิ่มจำนวน Feature Map มากขึ้นใน Convolution Layer ชั้นถัดๆไป
  3. ขนาดของ Kernel ใน Convolution Layer ควรเป็น 3×3, 5×5, 7×7
  4. Activation Function นิยมถูกออกแบบไว้หลัง Convolution Layer
  5. ไม่ควรใช้ Activation เกิน 2 แบบใน Convolution Layer
  6. ใช้ Activation ในเครือของ Relu เช่น Rellu, Leaky Relu, PReLU, ELU หรือ Noisy ReLU.

ขั้นตอนสุดท้ายแบ่งข้อมูลภาพสเปคโตรแกรมด้วยอัตราส่วน 60%  เพื่อสร้างการเรียนรู้ และ 40% เพื่อทดสอบกับโมเดล CNN ซึ่งในขั้นตอนนี้จะใช้เวลาในการเรียนเรียนรู้ของ CNN ค่อนข้างนานหากใช้การประมวลผลแบบ CPU โดยหากผู้อ่านท่านใดต้องการนำหลักการในบทความนี้ไปวิเคราะห์ข้อมูลเสียงที่ตนเองมีอยู่ ผู้เขียนขอแนะนำให้เลือกใช้ช้การประมวลผลแบบ Graphic Processing Unit:GPU เพื่อเพิ่มประสิทธิภาพและความเร็วในการสร้างโมเดล  โดยท้ายที่สุดเมื่อนำข้อมูลสเปคโตรแกรมอีก 40% (มี Hissing 200 รูป, ไม่มี Hissing 200 รูป) ที่เหลือไปทำการทดสอบโมเดล CNN ได้ Confusion Matrix ดังภาพที่ 9 โดยโมเดลสามารถทำนายสเปคโตรแกรมที่ไม่ Hissing Signal ได้ 179 จาก 200 ภาพ และทำนายสเปคโตรแกรมที่มี Hissing Signal ได้ 106 จาก 200 ภาพ ซึ่งภาพรวมความแม่นยำของโมเดลอยู่ที่ 71.21%

ภาพที่ 8 โครงสร้าง CNN
ภาพที่ 9 Confusion Matrix

สรุป

ในบทความนี้กล่าวถึงการนำ AI ไปประยุกต์ใช้ในการเลี้ยงผึ้ง โดยการนำเทคนิค STFT ในการแปลงข้อมูลเสียงผึ้งที่อยู่ในโดเมนของเวลาให้กลายเป็นข้อมูลในเชิงของความถี่ จากนั้นนำข้อมูลในเชิงความถี่ดังกล่าวมาแสดงผลในรูปแบบสเปคโตรแกรม  และนำผลลัพธ์สเปคโตรแกรมที่เป็นรูปภาพดังกล่าวไปสร้างเป็น input ในการเรียนรู้ของโมเดล CNN เพื่อนำมาแยกแยะว่าข้อมูลเสียงมีองค์ประกอบของ Hissing Signal หรือไม่

ข้อเสนอแนะ

อย่างไรก็ตามการแยะแยะสัญญาณในบทความนี้มีพารามิเตอร์หลายตัวที่มีผลต่อผลลัพธ์ของการแยกแยะสถานะได้ เช่น ขนาดของ Window ที่ใช้ใน STFT, ชนิดของ Window, Overlapping percentage อีกทั้งยังมีพารามีเตอร์ต่างๆที่สามารถปรับแต่งในส่วนของ CNN ได้ ดังนั้นจึงจำเป็นที่จะต้องมีทำ experimental design เพื่อหากลุ่มพารามิเตอร์ที่เหมาะสม  นอกเหนือจากการวิเคราะห์ด้วยเทคนิคตามบทความนี้แล้ว ยังสามารถทำในรูปแบบอื่นๆได้ เช่นการทำ Feature Extraction ของสัญญาณ และนำกลุ่มของฟีเจอร์ที่ได้ดังกล่าวไปใช้ในการแยกแยะประเภทของสัญญานเสียงก็ได้

*สามารถดาวน์โหลดโค้ดตัวอย่างได้ที่ https://drive.google.com/drive/folders/15WTvwx0Z3PuuKS_Z5sTXOXqmlZLj4jhH?usp=sharing

References

[1] Geslin, Benoît & Aizen, Marcelo & Garcia, Nancy & Pereira, Ana-Julia & Vaissière, Bernard & Garibaldi, Lucas. (2017). The impact of honey bee colony quality on crop yield and farmers’ profit in apples and pears. Agriculture, Ecosystems & Environment. 248. 153-161. 10.1016/j.agee.2017.07.035.

READ  Topic modeling ดีกว่าเดิมได้ ด้วย Word Embedding
[2] Karol J. Piczak,(2015). ENVIRONMENTAL SOUND CLASSIFICATION WITH CONVOLUTIONAL NEURAL NETWORKS. Institute of Electronic Systems Warsaw University of Technology. IEEE INTERNATIONAL WORKSHOP ON MACHINE LEARNING FOR SIGNAL PROCESSING, pp. 17–20

[3] Khamparia, Aditya & Gupta, Deepak & Nhu, Nguyen & Khanna, Ashish & Pandey, Babita & Tiwari, Prayag. (2019). Sound Classification Using Convolutional Neural Network and Tensor Deep Stacking Network. IEEE Access. PP. 1-1. 10.1109/ACCESS.2018.2888882.

[4] K. Jaiswal and D. Kalpeshbhai Patel, “Sound Classification Using Convolutional Neural Networks,” 2018 IEEE International Conference on Cloud Computing in Emerging Markets (CCEM), Bangalore, India, 2018, pp. 81-84.

[5] Khan, Salman & Rahmani, Hossein & Shah, Syed & Bennamoun, Mohammed. (2018). A Guide to Convolutional Neural Networks for Computer Vision. Synthesis Lectures on Computer Vision. 8. 1-207. 10.2200/S00822ED1V01Y201712COV015


ลงทะเบียนรับข่าวสาร

ไม่พลาดทุกการอัพเดทจาก Big Data Experience Center

Big Data Experience Center (BX)

ชั้น 14 อาคาร Knowledge Exchange Center (KX)
110/1 ถนนกรุงธนบุรี, แขวงบางลำภูล่าง เขตคลองสาน กรุงเทพฯ 10600
อีเมล์: [email protected]
Tel: 097-941-9889

ABOUT

SERVICES