Hi mọi người , nay cuối tuần nên mình quyết định làm về project khá nhẹ nhàng là cách nhận diện vật thể trong 1 bức ảnh với chỉ 10 dòng code python.

I. Chuẩn bị

  • Tạo môi trường làm việc python 3.7 trên anaconda và cài 1 số thư viện cần thiết với lệnh trên cmd :
conda create --name detect_object python=3.7
conda activate detect_object
conda install tensorflow==1.15.0
pip install keras==2.2.4
conda install opencv
pip install imageai
Tạo môi trường
CÀI THƯ VIỆN

Như vậy đã là đã xong phần chuẩn bị rồi ! Tiến hành thôi nào!

II . Tiến Hành

  • Các bạn tạo 1 thư mục bất kỳ ( detect_image) và trong thư mục tạo 1 file python bất kỳ ( detect.py) và mở nó bằng visual studio code :
Tạo thư mục
  • Copy 10 dòng code sau và bỏ vào thư mục vừa tạo:
from imageai.Detection import ObjectDetection
import os
execution_path = os.getcwd()
detector = ObjectDetection()
detector.setModelTypeAsYOLOv3()
detector.setModelPath(os.path.join(execution_path , "model.h5")) 
detector.loadModel()
detections = detector.detectObjectsFromImage(input_image=os.path.join(execution_path , "zebra.jpg"), output_image_path=os.path.join(execution_path , "2_detected.jpg"), minimum_percentage_probability=40)

for eachObject in detections:
    print(eachObject["name"] , " : ", eachObject["percentage_probability"], " : ", eachObject["box_points"] )
    print("--------------------------------")

Mình sẽ giải thích những dòng code này là gì nhé !

  • Đầu tiên mình sẽ import 1 thư viện giải quyết vấn đề detect luôn đó là ImageAI.
from imageai.Detection import ObjectDetection
  • Tiếp theo , mình cài đạt kiểu load model và đường dẫn là model yolo(model.h5) :
detector = ObjectDetection()
detector.setModelTypeAsYOLOv3()
detector.setModelPath(os.path.join(execution_path , "model.h5")) 
detector.loadModel()
  • Các bạn nhớ tải ảnh vào thư mục , và thay đường dẫn ảnh(zebra.jpg) trong code nhé :
detector.detectObjectsFromImage(input_image=os.path.join(execution_path , "zebra.jpg"), output_image_path=os.path.join(execution_path , "2_detected.jpg"), minimum_percentage_probability=40)
  • Sau khi detect sẽ trả về cho bạn 3 giá trị 1 là tên object , 2 là tỷ lệ dự đoán, 3 là tọa độ vật thể:
for eachObject in detections:
    print(eachObject["name"] , " : ", eachObject["percentage_probability"], " : ", eachObject["box_points"] )
    print("--------------------------------")
  • Tiếp theo các bạn quay cmd đã chuẩn bị chạy file bằng lệnh : “python detect.py“:
Kết quả
  • Nó sẽ tự tạo 1 hình trong thư mục tên là 2_detected.jpg .
Kết quả của chương trình

Như vậy là xong project nho nhỏ rồi hehe!

III. Kết Luận

  • Thật dễ phải không nào , chỉ khó ở phần cài đặt và tải thư viện . Khi cài đặt được rồi chạy rất đơn giản.
  • Thư viện này còn có thể detect vật thể qua video . Các bạn có thể tham khảo thêm nhé!
  • Trong bài sau mình sẽ tự tay tạo ra cái model.h5 và cái thư viện này luôn . Nghe ngầu đấy !
  • Hẹn Gặp lại các bạn trong các project sau nhé ! Các bạn có thể vào group của mình để biết thêm các project chưa bao giờ biết :v :https://www.facebook.com/groups/164371998723215