Xây dựng hệ thống chống trộm đơn giản bằng YOLO và OpenCV

Hello xin chào tuần mới các mem của Mì AI, hôm nay chúng ta sẽ cùng ghép nối vài kỹ thuật lập trình với nhau để cùng xây dựng hệ thống chống trộm đơn giản bằng YOLO và Open CV nhé.

Hệ thống sẽ có nhiệm vụ theo dõi chiếc điện thoại trong khung hình, ngay khi chiếc điện thoại được lấy đi, nó sẽ báo động bằng âm thanh cảnh sát luôn mới ghê. Cơ mà mình xin phép không chịu trách nhiệm nếu trộm giật mình làm rơi điện thoại nhá 😀

chống trộm
Nguồn: Gearbest

Rồi, bây giờ bắt tay vào làm nhé!

Phần 1. Chuẩn bị nguyên vật liệu nào!

Các bạn tạo thư mục MiAI_Anti_Thief trong máy của các bạn nhé (có bạn hỏi mình tạo trên máy hay trên miai.vn nên mình phải ghi rõ :D). Sau đó các bạn chuyển vào trong thư mục MiAI_Anti_Thief và gõ lệnh git quen thuộc để lấy source về:

git clone https://github.com/thangnch/MiAI_anti_thief .

Okie! Done. Chú ý dấu chấm đằng sau lệnh. Bây giờ các bạn tải weights của YOLO về. Link tải tại đây : https://pjreddie.com/media/files/yolov3.weights

Sau khi tải xong các bạn lưu luôn vào thư mụ MiAI_Anti_Thief luôn nhé.

Tiếp theo các bạn chạy lệnh sau để cài đặt các thư viện cần thiết:

pip install -r setup.txt

Vậy là xong, bây giờ sang bước 2 nhé.

Phần 2. Thực hiện code chương trình chống trộm

Về cơ bản thì thuật toán của bài toán này như sau:

  1. Lựa chọn thứ bạn muốn nhờ model “trông” giúp. Ví dụ trong bài này mình chọn cái điện thoại của mình. Nên mình chọn class là “cell phone” (bạn có thể chọn class khác nhưng phải nằm trong các class có trong file yolov3.txt nhé) .
  2. Model sẽ đọc liên tục ảnh từ webcam và thực hiện:
    • Phát hiện các vật thể trong hình và chỉ quan tâm đến các vật thể là “cell phone” mà thôi.
    • Nếu phát hiện “cell phone” trong hình thì okie, không sao cả.
    • Nếu không phát hiện”cell phone” thì tăng biến đếm số khung hình lên. Nếu quá 5 khung hình (hoặc số khác tùy bạn cấu hình) mà vẫn không thấy cell phone đâu cả thì sẽ báo động ầm ĩ.

Các bạn xem nội dung file anti_thief.py, mình đã comment khá đầy đủ trong code rồi.

chống trộm

Phần 3. Chạy thử chương trình

Bây giờ các bạn chuyển về thư mục MiAI_Anti_Thief và chạy lệnh:

python anti_thief.py -o "cell phone" -f 5

Trong đó:

  • -o “cell phone” : Là phát hiện cell phone
  • -f 5: Là 5 frame thì báo động, các bạn thoải mái sửa tham số nhé.

Nếu mọi thứ okie thì các bạn sẽ thấy màn hình hiện lên và thử detect như video bên dưới:

Vậy là các bạn đã có 1 hệ thống chống trộm đơn giản cho mình rồi. Mình có một số hướng phát triển tiếp theo dành cho các bạn:

  1. Nếu bạn muốn phát hiện đồ vật đặc thù (không nằm trong file yolov3.txt) thì train lại YOLOv3 theo link này https://miai.vn/?s=YOLO nhé. Khi đó tốc độ detect nhanh hơn do chỉ detect 1 class.
  2. Các bạn viết thêm code để kiểm tra xem giữa 2 frame có thay đổi quá 1 số % nào đó thì mới detect cho nhanh hơn.
  3. Các bạn có thể bỏ qua 1 số frame, mỗi 2-3 giây mới lấy 1 frame để detect chẳng hạn!
  4. Và ở đây trộm có thể lấy điện thoại ra và đưa hình ảnh cái điện thoại in trên giấy vào để lừa camera đúng ko? Các bạn hãy tham khảo thêm cách phát hiện fake/real trên blog Mì AI để áp dụng thêm nhé.
  5. Và có bạn lại hỏi nếu nó đưa cái điện thoại cùi vào và lấy iPhone XS Max ra thì sao? Thì các bạn phải train như mục 1 với object đặc thù là iPhone XS Max thôi nhé!

Các bạn thử triển khai thử nhé! Nếu có vướng mắc gì thì các bạn cứ comment hoặc post bài trên Group trao đổi, chia sẻ: https://www.facebook.com/groups/miaigroup để cùng giao lưu nhé.

Chúc các bạn thành công!

Fanpage: http://facebook.com/miaiblog
Group trao đổi, chia sẻ: https://www.facebook.com/groups/miaigroup
Website: https://miai.vn
Youtube: http://bit.ly/miaiyoutube

Related Post

7 Replies to “Xây dựng hệ thống chống trộm đơn giản bằng YOLO và OpenCV”

  1. ad ơi e dùng git ko dc ạ, nó báo” ‘git’ is not recognized as an internal or external command,operable program or batch file.”. mong ad giúp để e cài dc file MiAI_Anti_Thief ạ, e cảm ơn nhiều

  2. Khi bật camera, hình khá bị giật, lag thì có cách nào cải thiện không a nhỉ?

  3. cho mình hỏi là cái source k có file yolov3.weights thì mình điền cái gì vô chỗ kia

Leave a Reply

Your email address will not be published. Required fields are marked *