งูที่เจอมีพิษหรือไม่? แยกได้ก็ช่วยได้หลายชีวิต ด้วย Machine Learning

Manasamon Muangnoom
Sep 5 · 5 min read

บทความนี้เป็นส่วนหนึ่งของ Data Science Essential Botnoi Classroom DSE#4 โปรเจคครั้งที่ 2 Machine Learning กลุ่ม 3

ถ้าสาวที่คุณกำลังจีบอยู่ชวนคุณมาจิบชายามบ่ายแบบชิคๆ ในสวนหลังบ้านของเธอ ทันใดนั้นคุณเหลือบไปเห็นงูตัวนึงขดนอนอยู่ไม่ไกลนัก คุณจะเลือกแบบไหน?

ก. ร้องกรี๊ด วิ่งหนีไปตั้งหลัก ก่อนตั้งสติได้ค่อย google หาเบอร์กู้ภัยให้มาจับงู

ข. แอบหยิบไอโฟนขึ้นมาถ่ายรูปงู แล้วพบว่าเป็นงูไม่มีพิษ แล้วหันไปบอกสาวว่าไม่เป็นไรนะครับ ผมจะปกป้องคุณเอง พร้อมบอกว่างูน้อยนี้ไม่มีพิษครับ ผมจะไล่มันไปเอง 😎

ย้อนกลับไป ณ วันระดมสมอง ของโปรเจคที่ 2 Machine Learning & Prediction Model มีหลายโปรเจคที่ทีมเสนอเข้ามา ทั้งการทำนายอัตราดอกเบี้ย ราคาทอง ราคาพืชผลการเกษตร หรือการทำนายยอดวิวจากรูปปกบน YouTube แต่ด้วยเวลาที่จำกัดมาก และความเห็นจากทีม Dev ทำให้เราจบที่โปรเจคชื่อขำๆในตอนนั้นว่า..นังงูพิษ?

และนี่เป็นสิ่งที่เราได้เรียนรู้ว่าการที่ได้ความเห็นจากทุกฝ่ายในการคิดโปรเจค จะทำให้เราสามารถเห็นความน่าจะเป็น ปัญหาที่อาจจะเจอ และ timeline ที่ realistic มากกว่าโปรเจคที่เป็น Top-Down Approach แบบที่เราเคยเห็นทั่วไป

อัตราการป่วย และการตายจากงูพิษกัด ในประเทศไทย พ.ศ.2518–2532
จาก คณะแพทยศาสตร์โรงพยาบาลรามาธิบดี มหาวิทยาลัยมหิดลศูนย์พิษวิทยารามาธิบดี

แต่หลังจากที่มาดูปัญหาเรื่องงูพิษกันอีกทีแล้ว ไอเดียที่ดูตลกๆ นี้ กลับมีความสำคัญถึงระดับที่อาจจะช่วยชีวิตทั้งคน สัตว์เลี้ยง รวมถึงน้องงูเองได้มากมาย

ข้อมูลจากองค์การอนามัยโลก (WHO) ประมาณการว่าในแต่ละปีประชากรทั่วโลกถูกงูกัด 5.4 ล้านคน โดยเป็นงูพิษกัด 50% หรือประมาณ 2.7 ล้านราย และเสียชีวิตเฉลี่ยปีละ 81,000–138,000 ราย ซึ่งมีผู้พิการจำนวนไม่น้อยจากการถูกตัดอวัยวะในระหว่างการรักษา โดยเฉพาะในประเทศยากจนที่ขาดแคลนเซรุ่ม

ส่วนคนไทยถูกงูกัดปีละประมาณ 5,500 คน (ข้อมูลปี 2560) โดยผู้ที่เข้ารับการรักษาไม่สามารถระบุชนิดของงูพิษได้มีสูงถึง 98.14%

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

เมื่อพวกเราเห็นภาพที่ชัดเจนขึ้นแล้วว่าโปรเจ็กต์งูพิษอาจจะมีส่วนช่วยในความปลอดภัยของทั้งคนและสัตว์ได้แค่ไหนนั้น ก็ถึงเวลาลงมือพัฒนาโมเดลกันแล้ว จะหินแค่ไหน เจออุปสรรคอะไร แล้วเราปรับตัวผ่านไปได้ยังไง ไปดูต่อกันเลย!!!

แล้วถ้าเราไม่ใช่ผู้ชำนาญในเรื่องงู เราจะรู้ได้ยังไงว่างูที่เราเจอเป็นงูชนิดไหน? นอกเสียจากว่า เราจะเดาไปเองว่ามันเป็นงูพิษแน่ๆ นอกจากว่าเราจะมีตัวช่วยใหม่ที่สร้างขึ้นจากระบบคอมพิวเตอร์ ซึ่งเราจะต้องป้อนข้อมูลที่เกี่ยวกับงู เพื่อที่จะให้คอมพิวเตอร์จดจำ

ถ้าเราป้อนข้อมูลเข้ามามากขึ้นจะทำให้คอมพิวเตอร์เริ่มมีการประมวลผลได้แม่นยำและฉลาดขึ้น สิ่งเหล่านี้ก็คือกระบวนการ Machine Learning นั่นเอง

source : https://ttpsc.com/en/blog/machine-learning-thingworx-vs-covid-19/

ซึ่งกระบวนการ Machine Learning แบ่งออกเป็น 3 รูปแบบหลัก โดยรูปแบบที่พวกเรา DSE#4 G.3 กำลังทำเป็นการเรียนรู้ของคอมพิวเตอร์ในรูปแบบ Supervised Learning แบบ Image Classification

กระบวนการทำ Machine Learning จะมีขั้นตอนดังต่อไปนี้

  1. Business Understanding
  2. Data Collection
  3. Data Preparation
  4. Exploratory Data Analysis
  5. Modeling
  6. Model Evaluation
  7. Model Deployment
Source : https://medium.com/microsoftazure/9-advanced-tips-for-production-machine-learning-6bbdebf49a6f

1. Business Understanding

ปัญหาเรื่องของ “งู” ที่มักจะเจอบ่อยคืองูเข้าบ้าน แล้วไม่สามารถแยกได้ว่างูที่พบนั้นมีพิษหรือไม่มีพิษ ซึ่งเป็นปัญหาหลักที่ส่งผลตามมาที่หลัง เมื่อเราไม่สามารถทราบว่างูนั้นเป็นงูอะไร

Business Understanding

เราจึงคิดวิธีแก้ปัญหาคือ สร้าง AI ที่มีความสามารถจำแนกชนิดงูด้วยรูปภาพ โดยแบ่งเป็น 3 ประเภท ได้แก่

1. งูพิษ

2. งูไม่มีพิษ

3. ไม่ใช่งู

โดยใช้โมเดลนี้ประมวลผล เพื่อทราบว่าชนิดของงูที่พบเจอนั้นเป็นงูประเภทไหน แล้วเราก็สามารถแก้ไขสถานการณ์เฉพาะหน้าก่อนได้

2. Data Collection

การเลือกชุดข้อมูลเพื่อเตรียมสอนโมเดล

2.1 เตรียม Dataset รูปงูสายพันธุ์ที่พบบ่อยในประเทศไทย จาก google เพื่อนำมาสอนโมเดลให้สามารถแยกชนิดงูได้ จึงต้องมีรูปงูหลากหลายอิริยาบถในปริมาณที่มากพอ เช่น งูกำลังขดตัว กำลังเลื้อย งูกำลังรัดเหยื่อ หรือกำลังพันกิ่งไม้

2.2 แบ่งทีมหารูปงู โดยแบ่งเป็นประเภทงูที่มีพิษและไม่มีพิษ ประเภทละ 5 ชนิด ซึ่งเป็นงูที่พบได้บ่อยในชุมชน (กระทู้แนะนำชนิดงูที่พบเจอบ่อยๆ พร้อมรายละเอียดเล็กๆน้อยๆ) และหารูปที่ไม่ใช่งู อาทิ สายยาง ท่อน้ำ โดยกำหนดรูปงูอย่างน้อยชนิดละ 100 รูป จากนั้นชุดข้อมูลก็จะถูกแบ่งแยกตามประเภทของงู เช่น ภาพงูเขียวหางไหม้จะอยู่ในกลุ่มของงูมีพิษและภาพงูเหลือมจะอยู่ในกลุ่มของงูที่ไม่มีพิษ เป็นต้น โดยใช้วิธี

1) Manual ด้วยสองมือสองตาของสมาชิกทีม DSE#4 G.3 โดยดาวน์โหลดรูปภาพจาก google วางไว้ที่ google drive

2) การใช้เทคนิค Web scraping ซึ่งรูปภาพที่ได้จะมีชื่อรูปเหมือนกันแต่เรียงลำดับตัวเลขไปเรื่อยๆ ซึ่งจะมีทั้งรูปงูชนิดที่ต้องการ และมีรูปงูชนิดอื่นรวมมาด้วย อีกทั้งยังมีงูหลายชนิดในภาพเดียวกัน โดยดาวน์โหลดจากเว็บไซต์ Kaggle (การระบุสายพันธุ์งูในแต่ละชนิด) ซึ่งเราเลือกชนิดงูที่พบเจอในประเทศไทย

Source Code จากเทคนิค google image Web Scraping
การแบ่งโฟลเดอร์ชนิดของงูในแต่ละสายพันธุ์

3. Data Preparation

3.1 เตรียมชุดข้อมูล Dataset โดยภาพที่ดาวน์โหลดจาก Google มีนามสกุลไฟล์ที่หลากหลาย เช่น .jpg, .bmp, .png เราจึงคัดใช้เฉพาะรูป .jpg เพื่อความสะดวกในการใช้งาน

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

3.3 แบ่งโฟลเดอร์รูปงูแต่ละชนิด โดยเป็นงูมีพิษ 1 ชนิด คือ งูเขียวหางไหม้ และงูไม่มีพิษ 1 ชนิด คือ งูเหลือม เพื่อให้ง่ายต่อการประมวลผล หรือดึงข้อมูลไปใช้งาน

Directory รูปงู โดยแยกประเภท, สายพันธุ์ของงู

3.4 การสร้างกรอบวัตถุบนภาพ (Image Labeling) ด้วยโปรแกรม MakeSense.ai บน Web Browser ในกรณีนี้จะใช้เทคนิค Object Detection ล้อมกรอบระบุตำแหน่งงูในภาพ

Application Labeling Makesense.ai

1) แยกกลุ่มข้อมูลเป็นค่า Label 0 และ 1

โดย 0 คือ งู และ 1 ไม่ใช่งู การแยกกลุ่มข้อมูลแบบนี้จะช่วยให้โปรแกรมแยกชุดข้อมูลได้แม่นยำมากขึ้น

2) บีบอัดไฟล์ Format Yolo วางบน Google Drive

หลังจากแยกกลุ่มแล้วเราจะได้ไฟล์ที่ชื่อเหมือนกับไฟล์รูปภาพ ซึ่งในที่นี้คือรูป img3.jpg และได้ไฟล์นามสกุล img3.txt เพิ่มมาอีกไฟล์ เมื่อคลิกข้างในก็จะเป็นข้อความที่บอกตำแหน่งของ object ในรูปภาพนี้ โดย format ของ yolo คือ <object-class> <x> <y> <width> <height> แล้ว Zip File ที่มีทั้งไฟล์รูปภาพและไฟล์ text ไปวางไว้ที่ Google Drive

3) Train โมเดลตรวจจับงู โดยเชื่อมรูปจาก Google drive กับ colab เพื่อนำไปสอนโมเดลใน yolov3 (You Only Look Once, Version3) ให้ตรวจจับตำแหน่งงู การสอนโมเดลแบบนี้จะช่วยเพิ่มประสิทธิภาพของการตรวจจับวัตถุให้แม่นยำมากขึ้น

“colab คือ jupyter notebook บนคลาวด์ ทำให้เราสามารถรันโค้ด python ได้โดยไม่ต้องติดตั้งโปรแกรม”

สามารถอ่านรายละเอียด Colab โมเดลตรวจจับงู ได้ที่นี่ colab

3.5 แบ่งข้อมูลรูปภาพออกเป็น 3 โฟลเดอร์ คือ Train (สำหรับติวโมเดล) Validation (สำหรับเป็นแบบฝึกย่อย) และ Test (สำหรับทดสอบหลังติว)

4. Exploratory Data Analysis

4.1 สุ่มเลือกรูปงูแต่ละประเภทมาตรวจสอบความถูกต้อง

4.2 จากเดิมได้แบ่งกลุ่มประเภทงูไว้ประเภทละ 5 ชนิด ดังนี้

1) ประเภทงูมีพิษ ได้แก่ งูเขียวหางไหม้ท้องเหลือง งูเห่า งูจงอาง งูกะปะ และงูแมวเซา

2) ประเภทงูไม่มีพิษ ได้แก่ งูเหลือม งูเขียวพระอินทร์ งูทางมะพร้าว งูดิน และงูแสงอาทิตย์

ด้วยข้อจำกัดด้านระยะเวลาในการทำโปรเจกต์และปริมาณชุดข้อมูลแต่ละชนิดที่มีค่อนข้างน้อยต่อการนำไปติวโมเดล เราจึงตัดสินใจคัดเลือกตัวแทนแต่ละประเภที่มีความแตกต่างกันอย่างชัดเจนมาอย่างละ 1 ชนิด คือ งูเขียวหางไหม้ เป็นตัวแทนกลุ่มงูมีพิษ และ งูเหลือม เป็นตัวแทนกลุ่มงูไม่มีพิษ

4.3 ตรวจสอบจำนวนรูปภาพงูแต่ละชนิดว่าเหมาะสมต่อการสร้างแบบจำลองหรือไม่ โดยพิจารณาจาก

1) ปริมาณของรูปภาพงูแต่ละชนิด เนื่องจากมีปริมาณชุดข้อมูลของงูทั้งสองชนิดที่มีไม่มากพอจะสอนให้โมเดลเรียนรู้เพื่อแบ่งแยกประเภทงูได้อย่างถูกต้องแม่นยำ เราจึงได้นำเทคนิค Data Augmentation มาใช้ในการเพิ่มชุดข้อมูลใหม่จากชุดข้อมูลเดิม เช่น การหมุนรูป กลับด้านรูป ปรับความเข้มสี เป็นต้น เพื่อให้ได้รูปในปริมาณที่มากขึ้น

การทำ Data Augmentation

2) ความสมดุลของข้อมูลในแต่ละชนิด หากจำนวนรูปภาพงูแต่ละชนิดที่นำมาใช้สร้างแบบจำลองมีปริมาณที่ไม่เท่ากัน อาจจะทำให้เกิดปัญหา imbalanced data ได้ แต่จากปริมาณรูปที่เราหาเพิ่มเติมแล้ว จึงทำให้ความแตกต่างของจำนวนรูปภาพอยู่ในระดับที่ใช้งานได้

“imbalanced data คือ การที่มีข้อมูลในประเภทหนึ่ง มากเกินกว่าข้อมูลประเภทอื่น จะส่งผลต่อความแม่นยำในการทำนายข้อมูลกลุ่มที่มีน้อยกว่า”

5. Modeling

5.1 หลังจากเตรียมข้อมูลทั้งหมดแล้ว ทำการ Load Dataset แล้วทำ Split Dataset สำหรับการ Training set, Validation set และ Test set (บางครั้ง validation set เป็นข้อมูลชุดเดียวกับ test set) โดยข้อมูลในส่วน training set ควรมีปริมาณมากที่สุด (ประมาณ 80%) เพื่อใช้ในการสร้างโมเดล และใช้ validation set เป็นตัวทดสอบประสิทธิภาพโมเดลหลังเทรนเสร็จแต่ละครั้ง เพื่อเปรียบเทียบว่าหลังจากปรับค่าโมเดลแล้ว โมเดลไหนทำงานได้ดีที่สุด และใช้ Test set เป็นตัววัดผลโมเดลสุดท้ายที่เลือกมาแล้วว่าดีที่สุด

5.2 Train Model โดยกำหนดค่า epochs ซึ่งเป็นค่าที่กำหนดจำนวนรอบที่จะเทรนโมเดล และ ค่า batch จะเป็นค่าที่กำหนดว่าในแต่ละรอบจะให้โมเดลเลือกรูปมาเทรนทีละกี่รูป เช่น จำนวน train sample = 331, epochs = 50 และ batch_size = 32 แสดงว่าโมเดลจะหยิบรูปมาเทรนทีละ 32 รูปจนครบ ทั้งหมด 331 รูป และทำซ้ำเป็นจำนวน 50 ครั้ง

5.3 เช็คข้อมูลที่ป้อนเข้ามาว่ามีลักษณะรูปร่างเป็นแบบไหน

DNN Model (Deep Neural Network)
(https://playground.tensorflow.org/)

5.4 การสร้างโมเดลแบบ Deep Neural Network (โครงสร้างเลียนแบบการทำงานแบบซับซ้อน คล้ายโครงข่ายสมองมนุษย์) มักจะเกิดปัญหา Overfitting จึงได้ทำ Dropout เพื่อลดทอนข้อมูลบางอย่างลง ลดโอกาสการเกิด Overfitting ซึ่งใช้ Activation Function Relu และ Sigmoid โดยกำหนดค่า output ออกมา Maps กับผลลัพธ์คือค่าตั้งแต่ 0 จนถึง 1 โดย ค่า 0 แทน งูเหลือม และ 1 แทน งูเขียวหางไหม้

5.5 Compile Model เพื่อปรับปรุงค่า Error และค่า Loss ให้ได้ค่าที่ดีที่สุด จะต้อง Optimization เปลี่ยนแปลงค่าน้ำหนัก (Weight) และค่า Bias ที่เชื่อมกับ neuron นั้นเอง

5.6 Prepare data ด้วยการปรับค่าต่างๆ เพื่อให้ระบบจดจำข้อมูลและนำไปใช้ได้ง่ายและรวดเร็วมากขึ้น

1) แก้ไขปรับลดค่า Pixel (Rescale) รูปภาพ การปรับลดค่าเฉดสี จากช่วง 0–255 ซึ่งมีช่วงค่าที่กว้างกว่ามาก เป็นช่วง 0–1 แทน

2) ลดขนาดรูป หรือ Resize รูปให้มีขนาดเท่ากับ 224x224 พิกเซล เพื่อกำหนดขนาดรูปให้เท่ากันทุกรูป ไม่เล็กหรือไม่ใหญ่เกินไป

3) ปรับค่าความเข้มของแรงเฉือน (Shear Range) ทำให้รูปร่างของภาพเอียง ซึ่งแตกต่างจากการหมุนที่เราจะแก้ไขแกนหนึ่งแกนและยืดภาพมุมหนึ่งให้เอียง โดยเราเอียงรูป 0.2 องศา

4) ขยายรูปภาพ (Zoom Range)ให้รูปภาพมีขนาดเต็มเฟรมรูป

6. Model Evaluation

การวัดประสิทธิภาพของโมเดลให้มีความแม่นยำ เราใช้วิธีตรวจสอบดังนี้

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

6.2 ตรวจสอบค่าว่า Overfitted หรือไม่ โดยดูจากค่าความถูกต้องจากการฝึก (Training Accuracy) และค่าความถูกต้องจากการทำนายชุดข้อมูลที่โมเดลไม่เคยเห็นมาก่อน (Validation Accuracy) โดยค่า Validation ควรจะน้อยกว่าค่าที่ได้จากการ Train จึงจะไม่เกิด Overfitting ซึ่งเราจะเลือก Loss ของ Validation ที่ต่ำที่สุด (ไม่ใช่เลือกจาก Accuracy ที่สูงที่สุดของ Training) จึงจะมีประสิทธิภาพมากที่สุด

โมเดลแบบ Good fitting เป็นโมเดลที่มีความ generalize ที่เหมาะสมและมีการเรียนรู้ที่ดี ทำให้โมเดลสามารถทำนายข้อมูลใหม่ๆ ที่ไม่เคยเห็นได้อย่างแม่นยำซึ่งกราฟเปรียบเทียบระหว่าง loss กับ epochs จากโมเดลแบบนี้ จะแสดงค่า loss จาก training data กับ validation loss ลดลงอย่างต่อเนื่องจนคงที่ที่ค่าหนึ่ง และมีระยะห่างระหว่างกราฟทั้ง2 เส้นน้อยมากส่วนกราฟเปรียบเทียบระหว่าง accuracy กับ epochs ค่า accuracy จากทั้ง training data และ validation data ควรจะมีระยะห่างระหว่างกราฟทั้ง 2 เส้นน้อยมาก และ มีค่าเพิ่มขึ้นต่อเนื่องจนคงที่ที่ค่าหนึ่ง
ผลลัพธ์ ในการ Train Model 50 epochs

หลังจากเราได้ Compile model ผลที่ได้ออกมา ก็เป็นที่น่าตกใจ เนื่องจาก เกิด Model-Overfitting (ลูกศรสีแดง) ซึ่งที่จริง เราสามารถ Cut-off ได้ตั้งแต่ ในช่วง 0–10 epochs (ลูกศร สีเขียว) แต่ในครั้งนี้เพื่อ การเรียนรู้ และแสดงตัวอย่างให้เห็นจึง ลอง ไปถึง 50 epochs

ดูข้อมูลเพิ่มเติมได้ที่ Colab

7. Model Deployment

การนำ model ไปใช้ประโยชน์ เราสามารถนำไป Deploy เป็น API บน Application อื่นๆ แล้วนำผลลัพธ์ไปใช้งานได้ ซึ่งเราสามารถ Deploy บน Botnoi Platform เป็น OpenAPI (Openapi — Home (botnoi.ai)) หรือจะนำ API ไปใช้พัฒนาร่วมกับการทำแชทบอท โดยรับค่ารูปภาพ (Image) มาแล้วแชทบอทตอบกลับว่าเป็นงูชนิดไหนได้ในอนาคต

สรุป

จากกระบวนการทำ Machine Learning แบบมีผู้สอน (Supervised Learning) เพื่อ Prediction ‘งูมีพิษ’ และ ‘งูไม่มีพิษ’ ของพวกเรา DSE#4 G.3 นั้น แสดงให้เห็นว่า Machine Learning สามารถช่วยชีวิตเพื่อนมนุษย์ของเราจากงูมีพิษได้ โดยการนำระบบข้างต้นไปเชี่อมต่อกับ Instant Messaging สำหรับพัฒนาระบบ Chatbot Platform เช่น LINE, Messanger และ WhatsApp เป็นต้น เพื่อการตอบสนองผู้ใช้แบบ Real time ก่อให้เกิดความปลอดภัยสูงสุด เพื่อผู้ใช้จะได้รู้ถึงวิธีการจัดการเมื่อเจองูมีพิษและงูไม่มีพิษอย่างถูกวิธี

โดยบทความนี้สามารถนำไปต่อยอดได้ ด้วยการเพิ่มจำนวนข้อมูล (Training Data) ได้แก่ ประเภทของงู รูปภาพอิริยาบถต่างๆ ของงู เพื่อเพิ่มความแม่นยำต่อการคาดการณ์ของ Machine Learning รวมถึงสามารถนำไปใช้กับระบบกล้องวงจรปิด (CCTV) เพื่อให้ตรวจจับและแจ้งเตือนงูมีพิษได้ทันที ซึ่งจะไม่เพียงใช้เพื่อช่วยแก้ไขปัญหาในไทยเท่านั้น แต่ยังสามารถนำไปใช้ได้ทั่วโลก โดยเฉพาะประเทศที่มีปัญหาผู้เสียชีวิตจากการถูกงูมีพิษกัดจำนวนมาก อย่างอินเดีย และ ประเทศเพื่อนบ้านในภูมิภาคเอเชียตะวันออกเฉียงใต้ของเราอีกด้วย

ป.ล. สุดท้ายนี้ พวกเราขออวยพรให้ผู้อ่านทุกคนที่ติดตามถึงตรงนี้ และกดไลค์ให้เราเบาๆ ไม่ต้องเจองูพิษไปตลอดชีวิต ทั้งที่เป็นสัตว์และเป็นคน..!!

Reference

https://www.tcijthai.com/news/2018/03/scoop/8036 (World Health Organization, ข้อมูล ณ 20/2/2018 เข้าถึงข้อมูล 29/5/2018)

สรุปรายงานการเฝ้าระวังโรค ประจำปี 2558, งูพิษกัด (สำนักระบาดวิทยา, เข้าถึงข้อมูลเมื่อ 29/5/2561)

https://reptile-database.reptarium.cz/advanced_search?taxon=serpentes&location=THAILAND&submit=Search (The Reptile Database[Species of snake in Thailand], เข้าถึงข้อมูลเมื่อ 28/8/2564)

https://www.gbif.org/species (Global Biodiversity Information Facility [Photo of Snake], เข้าถึงข้อมูลเมื่อ 2/9/2564)

https://news.thaipbs.or.th/content/281247 (ข่าวไทยพีบีเอส, เข้าถึงข้อมูลเมื่อ 8/6/2019)

http://www.vihok.com/10419 (ข่าววิหค, เข้าถึงข้อมูลเมื่อ 4/5/2019)

botnoi-classroom

This publication consists of articles related to Data…

botnoi-classroom

This publication consists of articles related to Data science and AI written from Botnoi’s data scientists and students.

Manasamon Muangnoom

Written by

botnoi-classroom

This publication consists of articles related to Data science and AI written from Botnoi’s data scientists and students.