ผู้เขียนบทความ
1.นายสรวิศ หล่อกาญจนาภา
2.นายเชาว์วัฒน์ นนทะสร
3.นายชโนดม นิลเพชร
4.นายฐิติพันธ์ ขันตี
คณะวิศวกรรมศาสตร์คอมพิวเตอร์
วิชา:0451320164 การโปรแกรมคอมพิวเตอร์ขั้นสูง 1/2567
1.ความเป็นมา
ความเร็วในการใช้ยานพาหนะนั้นเป็นสิ่งสำคัญที่ต้องการการควบคุมอย่างยิ่ง เพราะถ้าหากใช้ความเร็วในพื้นที่ที่ไม่เหมาะสมเช่น ชุมชนแอแอัดหรือในสถานศึกษา อาจทำให้เกิดอุบัติเหตุร้ายแรงจนถึงขั้นเสียชีวิตได้
ด้วยเหตุนี้จึงเกิดเป็น โครงการระบบตรวจจับความเร็วยานพาหนะเพื่อเข้ามาช่วยตรวจสอบและป้องกันผู้ที่ใช้ความเร็วเกินกำหนด โดยการตรวจจับและบันทึกภาพเป็นหลักฐานทำให้ผู้ที่ใช้ยานพาหนะใช้ความเร็วลดลง เหมาะสมกับกับพื้นที่นั้นๆ
2.วัตถุประสงค์
2.1ตรวจจับและติดตามยานพาหนะ: ระบบถูกออกแบบมาเพื่อใช้ในการตรวจจับและติดตามยานพาหนะต่าง ๆ (เช่น รถยนต์ และมอเตอร์ไซค์) ในวิดีโอที่บันทึกไว้หรือในวิดีโอสด โดยใช้เทคโนโลยี YOLOv8 ในการจำแนกประเภทของวัตถุและ Tracker ในการติดตามการเคลื่อนที่ของยานพาหนะ
2.2คำนวณความเร็วของยานพาหนะ: ระบบจะคำนวณความเร็วของยานพาหนะที่เคลื่อนผ่านเส้นที่กำหนด โดยใช้การวัดเวลาและระยะทางที่ยานพาหนะเคลื่อนที่ ระบบสามารถแสดงความเร็วของยานพาหนะในหน่วยกิโลเมตรต่อชั่วโมง (km/h)
2.3บันทึกภาพยานพาหนะที่เกินความเร็วที่กำหนด: เมื่อยานพาหนะมีความเร็วเกินกว่าค่าที่กำหนด (เช่น 30 km/h) ระบบจะบันทึกภาพของยานพาหนะนั้น
3.ขอบเขต
3.1การตรวจจับยานพาหนะ: ระบบสามารถตรวจจับและติดตามยานพาหนะได้เฉพาะบางประเภทที่ระบุใน class_list
เช่น รถยนต์ มอเตอร์ไซค์ รถบรรทุก และยานพาหนะอื่น ๆ ที่อยู่ในรายการนี้เท่านั้น
3.2การคำนวณความเร็ว: ระบบคำนวณความเร็วของยานพาหนะที่ตรวจจับได้โดยอิงจากระยะทางที่คาดการณ์และเวลาที่ใช้ในการเคลื่อนที่ผ่านเส้นที่กำหนด ซึ่งระยะทางที่ใช้คำนวณเป็นค่าคงที่ที่ระบุไว้ในโค้ด อาจมีการคาดเคลื่อนของความเร็ว
3.3การตรวจจับในสภาพแวดล้อมจำกัด: ระบบออกแบบมาเพื่อใช้กับวิดีโอที่มีการบันทึกในสภาพแวดล้อมที่การเคลื่อนไหวของยานพาหนะเกิดขึ้นในระนาบเดียวกัน เช่น การเคลื่อนที่ผ่านกล้องในแนวราบ ไม่ได้ออกแบบมาเพื่อรองรับการตรวจจับในสภาพแวดล้อม 3 มิติที่ซับซ้อน
4.ประโยชน์ที่คิดว่าจะได้รับ
4.1การตรวจจับและติดตามยานพาหนะอัตโนมัติ: ระบบสามารถช่วยตรวจจับและติดตามยานพาหนะในวิดีโอแบบเรียลไทม์ไม่ต้องใช้คนมาคอยสังเกตุ
4.2การควบคุมความเร็วในพื้นที่สำคัญ: ระบบสามารถใช้ในการตรวจจับความเร็วของยานพาหนะในพื้นที่ที่มีการจำกัดความเร็ว เช่น ในมหาลัยเพื่อลดการเกิดอุบัติเหตุ
5. ความรู้ที่เกี่ยวข้อง
import ultralytics
ไลบรารี Ultralytics ซึ่งเป็นแพ็กเกจที่พัฒนา YOLO (You Only Look Once) สำหรับงาน Object Detection โดยเฉพาะในเวอร์ชัน YOLOv8 ไลบรารีนี้มีฟังก์ชันการทำงานที่ช่วยให้สามารถเรียกใช้งานโมเดล YOLO ได้อย่างง่ายดายสำหรับการตรวจจับวัตถุในภาพและวิดีโอ
import cv2
ไลบรารี OpenCV ใช้สำหรับการประมวลผลภาพและวิดีโอ OpenCV ช่วยในการจัดการภาพ เช่น การอ่าน การแสดงผล การตัดต่อภาพ และการวาดเส้นหรือกล่องรอบวัตถุในเฟรม ในโค้ดนี้ OpenCV ถูกใช้ในการเปิดไฟล์วิดีโอ, การตรวจจับและติดตามวัตถุ, การวาดเส้นบนเฟรม, และการบันทึกวิดีโอที่ประมวลผลแล้ว
import pandas as pd
ไลบรารี Pandas ซึ่งใช้ในการจัดการและวิเคราะห์ข้อมูลเชิงโครงสร้าง ในโค้ดนี้ Pandas ถูกใช้เพื่อแปลงข้อมูลของกรอบวัตถุ (Bounding Boxes) ที่ตรวจจับได้จาก YOLO ให้อยู่ในรูปแบบของ DataFrame ซึ่งทำให้ง่ายต่อการจัดการและประมวลผลข้อมูลวัตถุ
import os
ไลบรารี os เป็นไลบรารีมาตรฐานใน Python สำหรับการจัดการกับไฟล์และโฟลเดอร์ เช่น การสร้าง, ลบ, หรือการเข้าถึงไฟล์ต่าง ๆ ในโค้ดนี้ใช้ os.makedirs()
เพื่อสร้างโฟลเดอร์เก็บเฟรมภาพที่ตรวจจับได้
import time
ไลบรารี time สำหรับการจัดการเวลาและการจับเวลาต่าง ๆ ในโค้ดนี้ time.time()
ถูกใช้เพื่อตรวจสอบเวลาที่วัตถุใช้ในการผ่านสองเส้น (red line และ blue line) เพื่อคำนวณความเร็วของยานพาหนะ
from ultralytics import YOLO
นำเข้าโมดูล YOLO จากไลบรารี ultralytics เพื่อใช้ในการโหลดและใช้งานโมเดล YOLOv8 สำหรับการตรวจจับวัตถุ โค้ดนี้ใช้ YOLO('yolov8m.pt')
เพื่อโหลดโมเดล YOLOv8 ขนาดกลาง (YOLOv8m)
from tracker import
เป็นการสร้างคลาส Tracker
ที่มีหน้าที่ในการ ติดตามวัตถุ (Object Tracking) โดยใช้ตำแหน่งของวัตถุที่ตรวจจับได้ (Bounding Boxes) จากเฟรมของวิดีโอ โค้ดนี้จะติดตามวัตถุที่ตรวจจับในแต่ละเฟรมและเก็บข้อมูลเกี่ยวกับตำแหน่งของวัตถุในรูปแบบ Center Points (จุดศูนย์กลางของวัตถุ) รวมถึงกำหนด ID ให้กับวัตถุแต่ละชิ้น
import torch
ไลบรารี PyTorch ซึ่งเป็นเฟรมเวิร์กสำหรับการสร้างและประมวลผลโมเดลการเรียนรู้เชิงลึก (Deep Learning) ในโค้ดนี้ torch.cuda.is_available()
ถูกใช้เพื่อตรวจสอบว่า GPU พร้อมใช้งานหรือไม่ ถ้ามี GPU จะทำให้การประมวลผล YOLO เร็วขึ้น
6. ผลการดำเนินงาน
หลักการทำงานคือ นำเข้าวิดีโอหรือกล้องเข้าสู่โปรแกรมจากนั้นโมเดล Yolo8 ก็จะตรวจจับวัตถุและติดตามวัตถุโดยใช้คลาสtracker ติดตาม และใช้ฟังค์ชั่น calculate_speed คำนวณความเร็วโดยใช้ระยะทาง/เวลาจึงคำนวณออกมาเป็นความเร็ว หน่วยKm/H ใช้ฟังค์ชั่น save_high_speed_frame ในการตรวจสอบว่ารถคันไหนใช้ความเร็วเกินกำหนด หากตรวจพบก็จะบันทึกรูปภาพเฟรมนั้นพร้อมกับแสดงความเร็วที่รถคันนั้นใช้เก็บไว้ในฐานข้อมูล
Flowchart
Coding
7. วิธีการใช้งานโปรแกรม
กดคลิ๊กเข้าไปที่ICON จากนั้นโปรแกรมจะรัน และผลลัพท์การจับความเร็วจะอยู่ในโฟลเดอร์ D
8. การทดลอง
การทดลองครั้งหลักๆที่เห็นผล
9. เทคนิกการประยุกต์เพื่อเพิ่มประสิทธิภาพมากขึ้น
1.สร้างเซิฟเวอร์เก็บภาพจับความเร็วขึ้นมาและแสดงผลข้อมูล เพื่อสามารถเรียกดูข้อมูลได้อย่างเรียลไทม์และสะดวก
2.ใช้กล้องที่มีคุณภาพเพื่อการบันทึกรูปที่ชัดเจน
10. สรุปผลและข้อเสนอแนะ
ระบบสามารถใช้งานการDetect วัตถุและตรวจจับความเร็วได้และสามารถบันทึกรูปภาพยานพาหนะที่ใช้ความเร็วเกินกำหนดได้
จากการทดลองลงพื้นที่
1.พบปัญหาทางด้านการเชื่อมต่ออินเตอร์เน็ต เนื่องจากบางพื้นที่สัญญาณWIFI ไม่มีความเสถียรมากพอทำให้การใช้กล้องในการเชื่อมต่อนั้นทำได้ยากเพราะการล่าช้าของเครือข่ายขัดขวางการทำงานของโปรแกรม
2.ปัญหาทางด้านกล้อง การใช้กล้องที่มีคุณภาพต่ำนั้นส่งผลต่อการประมวลผลภาพ เช่นภาพไม่คมชัด ภาพมีการสะดุดส่งผลต่อการประมวลผลทำให้อาจเกิดการประมวลผลผิดพลาดและรูปภาพที่บันทึกออกมาก็ไม่มีความคมชัด ไม่สามารถตรวจสอบเลขทะเบียนได้
3.ปัญหาทางด้านแสง ถ้าหากนำระบบไปใช้ประมวลผลภาพที่มืดๆ อาจจะเกิดการผิดพลาดหรือไม่ก็ประมวลผลไม่ได้เลย
4.บางมุม ตำแหน่งยากต่อการDetect วัตถุ ทำให้ไม่สามารถจับวัตถุได้
ข้อเสนอแนะ
-ควรใช้กล้องที่มีคุณภาพความละเอียดชัด และสามารถเชื่อมกับWIFIได้
-ควรใช้ในพื้นที่ที่มีสัญญาณเสถียร
-การจัดวางกล้องในมุมที่ตรวจจับวัตถุได้ชัดเจน
11. ข้อมูลอ้างอิง
วิดีโอการทำงานของระบบตรวจจับรถ