ระบบตรวจจับโรคพืชด้วย AI
สวัสดีครับ วันนี้ผมจะมาเล่าให้ฟังเกี่ยวกับโปรเจกต์ตรวจจับโรคพืชด้วย AI ครับ
โปรเจกต์นี้ผมทำขึ้นมาเพราะสนใจเรื่อง AI กับการเกษตรครับ พอลองศึกษาดูพบว่าปัญหาโรคพืชเป็นเรื่องที่เกษตรกรต้องเจอบ่อยมาก บางทีกว่าจะรู้ว่าเป็นโรคอะไรก็สายไปแล้วครับ ผมเลยลองใช้ YOLOv26 มาฝึกให้ตรวจจับโรคพืชจากภาพใบไม้ได้แบบ Real-time เลยครับ ผลออกมาดีมากเลย ได้ mAP50 ถึง 91.67% ครับ
สำหรับการศึกษาเท่านั้น — โปรเจกต์นี้จัดทำขึ้นเพื่อเป็นกรณีศึกษาด้าน Computer Vision ในภาคการเกษตรครับ
ระบบทำอะไรได้บ้าง
- ตรวจจับโรคพืชจากรูปใบไม้ได้แบบ Real-time ครับ
- รองรับพืช 3 ชนิด คือ ถั่ว สตรอเบอรี่ และมะเขือเทศ
- ตรวจจับได้ 12 โรค ด้วยกันครับ
- ความแม่นยำสูงถึง 91.67% (mAP50) เลยครับ
- ใช้งานง่าย แค่โหลดโมเดลแล้วส่งรูปเข้ามาก็ได้ผลทันทีครับ
ประสิทธิภาพของโมเดล
Model : YOLOv26nDataset : 5,493 รูปEpochs : 100Image Size : 640×640pxmAP50 : 91.67%ผมเลือกใช้ YOLOv26n (Nano) เพราะมันเล็กและเร็วมากครับ เหมาะกับการใช้งานบนอุปกรณ์ที่ทรัพยากรจำกัด ถ้าอยากได้ความแม่นยำมากขึ้นก็ลองเปลี่ยนไปใช้ขนาดที่ใหญ่กว่าได้ครับ เช่น YOLOv26s หรือ YOLOv26m
โรคที่รองรับ (12 ชนิด)
🫘 ถั่ว (Beans) — 2 โรค
| โรค | คำอธิบาย |
|---|---|
| Angular Leaf Spot | จุดเหลี่ยมบนใบถั่วครับ เกิดจากเชื้อแบคทีเรีย |
| Rust | โรคราสนิม จะเห็นเป็นจุดสีน้ำตาลแดงบนใบครับ |
🍓 สตรอเบอรี่ (Strawberry) — 7 โรค
| โรค | คำอธิบาย |
|---|---|
| Angular Leaf Spot | จุดเหลี่ยมบนใบสตรอเบอรี่ครับ |
| Anthracnose Fruit Rot | โรคแอนแทรคโนส ทำให้ผลเน่าครับ |
| Blossom Blight | โรคดอกไหม้ ทำให้ดอกเสียหาย |
| Gray Mold | ราสีเทา พบบ่อยในสภาพอากาศชื้นครับ |
| Leaf Spot | จุดบนใบ สังเกตได้ง่ายเลยครับ |
| Powdery Mildew Fruit | ราแป้งบนผลสตรอเบอรี่ |
| Powdery Mildew Leaf | ราแป้งบนใบสตรอเบอรี่ครับ |
🍅 มะเขือเทศ (Tomato) — 3 โรค
| โรค | คำอธิบาย |
|---|---|
| Blight | โรคใบไหม้ ทำให้ใบเปลี่ยนสีและเหี่ยวครับ |
| Leaf Mold | ราบนใบ มักเกิดในโรงเรือนที่อากาศไม่ถ่ายเทครับ |
| Spider Mites | ไรแดง ทำให้ใบมีจุดซีดเล็กๆ กระจายทั่วครับ |
เทคโนโลยีที่ใช้
| เทคโนโลยี | รายละเอียด |
|---|---|
| YOLOv26 | โมเดล Object Detection รุ่นล่าสุดครับ |
| Ultralytics | Framework สำหรับ YOLO ใช้งานง่ายมากเลย |
| Python | ภาษาหลักที่ใช้พัฒนาครับ |
| Roboflow | แหล่ง Dataset สำหรับโปรเจกต์นี้ |
สิ่งที่ต้องมีก่อนเริ่ม
ต้องมี Python 3.8 ขึ้นไปครับ แล้วก็ต้องติดตั้ง ultralytics ด้วยนะครับ ถ้ามี GPU ก็ยิ่งดีเลยครับ จะประมวลผลได้เร็วขึ้นมาก
วิธีเริ่มใช้งาน
ติดตั้ง dependencies ครับ
pip install ultralyticsรันโปรแกรมได้เลยครับ
python main.pyแค่นี้ก็ใช้งานได้แล้วครับ!
ตัวอย่างการเรียกใช้ผ่านโค้ด
ถ้าอยากเรียกใช้โมเดลผ่านโค้ด Python โดยตรง ก็ทำได้ง่ายมากเลยครับ
ตรวจจับจากรูปภาพ
from ultralytics import YOLO
# โหลดโมเดลที่ฝึกไว้ครับmodel = YOLO("runs/detect/train/weights/best.pt")
# ตรวจจับโรคพืชจากรูปresults = model.predict("leaf_photo.jpg", conf=0.5)
# แสดงผลลัพธ์ครับresults[0].show()ตรวจจับแบบ Real-time จาก Webcam
from ultralytics import YOLOimport cv2
model = YOLO("runs/detect/train/weights/best.pt")cap = cv2.VideoCapture(0)
while True: ret, frame = cap.read() if not ret: break
results = model.predict(frame, conf=0.5, verbose=False) annotated_frame = results[0].plot()
cv2.imshow("Plant Disease Detection", annotated_frame)
if cv2.waitKey(1) & 0xFF == ord('q'): break
cap.release()cv2.destroyAllWindows()ใช้ตรวจจับผ่านกล้องแบบ Real-time ได้เลยครับ เหมาะมากถ้าจะเอาไปใช้ในภาคสนาม
ตรวจจับจากหลายรูปพร้อมกัน
from ultralytics import YOLO
model = YOLO("runs/detect/train/weights/best.pt")
# ตรวจจับรูปทั้งโฟลเดอร์ครับresults = model.predict( source="test_images/", conf=0.5, save=True)
# ดูผลลัพธ์ของแต่ละรูปfor result in results: boxes = result.boxes for box in boxes: cls = int(box.cls[0]) conf = float(box.conf[0]) class_name = model.names[cls] print(f"พบ: {class_name} ความมั่นใจ: {conf:.2%}")ข้อมูลเกี่ยวกับ Dataset
| หัวข้อ | รายละเอียด |
|---|---|
| จำนวนภาพ | 5,493 รูปครับ |
| จำนวน Classes | 12 โรค |
| พืชที่รองรับ | ถั่ว, สตรอเบอรี่, มะเขือเทศ |
| แหล่งที่มา | Roboflow Universe |
| ลิขสิทธิ์ | CC BY 4.0 |
ข้อมูลภาพมาจาก Roboflow Universe ครับ ซึ่งเป็นแพลตฟอร์มที่รวม Dataset สำหรับ Computer Vision ไว้เยอะมาก ถ้าสนใจฝึกโมเดลด้วย Dataset อื่นก็ไปดูได้เลยครับ
สิ่งที่ได้เรียนรู้
โปรเจกต์นี้ทำให้ผมได้เรียนรู้หลายอย่างเลยครับ
- การ ฝึก YOLO ด้วย Custom Dataset ตั้งแต่เตรียมข้อมูลจนถึงได้โมเดลออกมา
- การ ปรับ Hyperparameters เพื่อให้โมเดลมีความแม่นยำสูงขึ้น
- การ ประยุกต์ใช้ AI กับการเกษตร เพื่อแก้ปัญหาในชีวิตจริง
- การใช้ Roboflow สำหรับจัดการ Dataset และ Annotation ครับ
- เข้าใจเรื่อง mAP, Precision, Recall ในงาน Object Detection มากยิ่งขึ้น
ลิงก์โปรเจกต์
ขอบคุณ
- Roboflow Universe สำหรับ Dataset ที่ดีมากครับ
- Ultralytics สำหรับ Framework YOLO ที่ใช้งานง่ายสุดๆ ครับ
License
โปรเจกต์นี้เป็น Open Source ครับ นำไปศึกษาและต่อยอดได้ตามสบายเลย
หากมีคำถามหรือข้อเสนอแนะ สามารถเปิด Issue ได้เลยนะครับ ขอบคุณที่สนใจครับ 🙏