Computer VisionFace RecognitionMachine LearningOpenCVPython

Object Detection ตรวจจับวัตถุด้วย Python และ TensorFlow ร่วมกับ MatplotLib

เทคนิคการทำ Object Detection การตรวจจับวัตถุด้วย Code 10 บรรทัดโดยใช้ Python และ Tensorflow เพื่อค้นหาว่ามีวัตถุใดบ้างในภาพ

บทเรียนนี้จะเป็นการสอนเทคนิคการทำ Object Detection การตรวจจับวัตถุด้วย Code 10 บรรทัดโดยใช้ Python และ Tensorflow เพื่อค้นหาว่ามีวัตถุใดบ้างในภาพ

บทเรียนก่อนหน้านี้:

คือเราจะรู้แล้วว่า เราจำเป็นต้องใช้ OpenCV ในการช่วยสำหรับการตรวจจับผ่านกล้องเป็นหลัก คราวนี้เราจะลองทำ AI ผ่าน Tensorflow ของ Google มาช่วยในการรู้ว่าไอ้สิ่งของเหล่านี้คืออะไร เป็นหลักการต้นๆ ของการทำ Machine Learning

แน่นอนขึ้นชื่อว่าเป็น Series นี้จำต้องติดตั้ง Library เสริมหน่อยเพื่อการทำงานที่ง่าย และรวดเร็ว ดังนั้นเราต้องติดตั้ง cvlib ก่อน (https://pypi.org/project/cvlib/)

$ sudo pip3 install cvlib

ต่อมาคือ matplotlib เป็น Module หนึ่งที่ช่วยในการพลอตกราฟเส้นที่เร็วในภาษา Python และกราฟเส้นที่วาดขึ้นอาศัยการประมวลผลจากโมดูล NumPy ในบทนี้เราใช้ matplotlib ในการส่งค่ากราฟวิเคราะห์สื่อ และภาพที่ใช้ ซึ่งเจ้า Library ตัวนี้คนที่เคยใช้ MATLAB จะคุ้นหน้าตามาก เพราะใช้ใส่ Label ในกราฟนั่นเองครับ

$ sudo pip3 install matplotlib

ตัวสุดท้ายเรารู้จักกันอยู่แล้ว Machine Learning ของ Google ใช้งานง่ายนั่นคือ TensorFlow บทเรียนก่อนหน้านี้:

สร้าง Machine Learning ด้วย TensorFlow และ Unity ทำ Object Detection

ติดตั้ง TensorFlow เสีย:

$ sudo pip3 install tensorflow
แม่งกว่าจะเสร็จ
แม่งกว่าจะเสร็จ

ประกาศ Library ส่วน Header ดังนี้:

import cv2
import matplotlib.pyplot as plt
import cvlib as _cvlib

เรียกคำสั่งรูปภาพใน Folder เดียวกับ Source Code ของเรา

from cvlib.object_detection import draw_bbox
image = cv2.imread('car.jpg')
recbox, label, configuration = _cvlib.detect_common_objects(image)
output_image = draw_bbox(image, recbox, label, configuration)
plt.imshow(output_image)
plt.show()

ไฟล์ objdetect.py ของผมจะเป็นดังนี้:

import cv2
import matplotlib.pyplot as plt
import cvlib as _cvlib

from cvlib.object_detection import draw_bbox
image = cv2.imread('car.jpg')
recbox, label, configuration = _cvlib.detect_common_objects(image)
output_image = draw_bbox(image, recbox, label, configuration)
plt.imshow(output_image)
plt.show()

ทีนี้เราลองมากด Run ดูหน่อยผ่าน Visual Studio Code มันจะดาวน์โหลด YOLO: Real-Time Object Detection ซึ่งเป็น Real-time Object Detection ที่ขึ้นชื่อว่าเร็วที่สุด (ความแม่นยำบางตัวก็ไม่
แม่นนะ แต่เน้นเร็ว, บางตัวช้า แต่ก็แม่นมาก คือเราต้องไปหาดูเอง เลือกใช้เองในเว็บเค้า, https://pjreddie.com/darknet/yolo/)

ทดสอบหลายๆภาพ อย่างภาพแรกของผมคือ ภาพตัวเองมันจะประมวลผลภาพผ่าน matplotlib ให้สวยๆ แบบนี้:

ถ้าภาพ car.jpg

ระบบจะมีการไปเรียก TensorFlow Backend ในการตรวจจับและจำแนก แล้วส่งกลับมา Plot Graph และ Label ผ่าน matplotlib ให้เรานั่นเอง

ตัวอย่างง่ายๆ ลองทำดูครับ

Asst. Prof. Banyapon Poolsawas

อาจารย์ประจำสาขาวิชาการออกแบบเชิงโต้ตอบ และการพัฒนาเกม วิทยาลัยครีเอทีฟดีไซน์ & เอ็นเตอร์เทนเมนต์เทคโนโลยี มหาวิทยาลัยธุรกิจบัณฑิตย์ ผู้ก่อตั้ง บริษัท Daydev Co., Ltd, (เดย์เดฟ จำกัด)

Related Articles

Back to top button

Adblock Detected

เราตรวจพบว่าคุณใช้ Adblock บนบราวเซอร์ของคุณ,กรุณาปิดระบบ Adblock ก่อนเข้าอ่าน Content ของเรานะครับ, ถือว่าช่วยเหลือกัน