Chung tay chống COVID-19, làm thử hệ thống phát hiện khẩu trang và nhắc nhở nếu không đeo bằng OpenCV

Tình hình là mùa dịch COVID 19 quá căng thẳng nên hôm nay mình xin giới thiệu cùng các bạn cách xây dựng một hệ thống phát hiện đeo khẩu trang và nhắc nhở nếu không đeo bằng OpenCV nhé.

Hệ thống của chúng ta sẽ giám sát quá camera, kiểm tra xem người dùng có đeo khẩu trang hay không để thông báo lên màn hình. Trong thực tế chúng ta có thể kết nối ra hệ thống loa để cảnh báo hoặc thông báo cho lực lượng bảo vệ để yêu cầu đeo khẩu trang trước khi vào tòa nhà.

phát hiện đeo khẩu trang

Đại ý là như vậy, bây giờ bắt tay nào!

Phần 1- Cách làm bài toán

Với bài này có nhièu cách để làm và mỗi cách có ưu nhược điểm khác nhau. Mình không có điều kiện thử đủ các cách nên các bạn có thể thử xem như nào nhé.

Các cách triển khai gồm:

  • Cách 1: Phát hiện khuôn mặt, sau đó detect khẩu trang trên mặt (bằng SSD, YOLO…). Nếu không có khẩu trang thì cảnh báo. . Ưu điểm là độ chính xác khác cao nhưng nhược điểm là cần phải có data về face mask để train
  • Cách 2: Phát hiện khuôn mặt sau đó sử dụng landmark để detect mouth area. Sau đó tính toán average saturation và compare với 1 threshold do chúng ta đặt ra để check xem có đeo khẩu trang hay không. Cách náy có ưu điểm là không cần data, tốc độ chạy cao hơn cách 1 nhưng đôi khi do điều kiện ánh sáng thay đổi thì có thể không detect chuẩn.
facial landmark
Nguồn: pyimagesearch.com

Trong bài này mình chọn Cách 2 vì lý do rất đơn giản….mình chưa có data face mask để train:D

Phần 2 – Tải mã nguồn và cài đặt thư viện

Lý thuyết là như vậy bây giờ chúng ta đào sâu vào code để xem nhé. Đầu tiên các bạn tạo thư mục MiAI_Mask_Detection để lưu trữ project.

Tiếp theo các bạn clone mã nguồn về bằng lệnh git thần thánh:

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

Chú ý dấu chấm ở cuối dòng lệnh nhé anh em.

Sau khi đợi một chút cho mã nguồn tải về, anh em tiến hành cài đặt các thư viện cần thiết. Phần này có cài đặt thêm dlib và cmake nên trên window có thể lỗi chút nhé. Nếu cài lỗi thì anh em post lên Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup để được hỗ trợ nhé.

pip install -r setup.txt

Sau khi cài đặt xong các thư viện, các bạn tải file landmark predict tại đây và copy vào thư mục chứa mã nguồn (có file mask_detection.py đấy).

That’s all, bây giờ nghiên cứu mã nguồn và chạy thử thôi!

Phần 3 – Chạy thử chương trình phát hiện đeo khẩu trang

Bây giờ các bạn mở file mask_detection.py sẽ thấy mã nguồn của chương trình khá đơn giản. Tác vụ của file này sẽ là đọc ảnh từ webcam, detect khuôn mặt, capture vùng miệng và tính toán color saturation để xác định xem có đeo khẩu trang hay không.

Cách tính color sat cụ thể như sau:

hsv = cv2.cvtColor(frame[int(boundRect[1]):int(boundRect[1] + boundRect[3]),int(boundRect[0]):int(boundRect[0] + boundRect[2])], cv2.COLOR_RGB2HSV)
sum_saturation = np.sum(hsv[:, :, 1]) # Sum the brightness values
area = int(boundRect[2])*int(boundRect[3])
avg_saturation = sum_saturation / area # Find the average
  • Đầu tiên ta chuyển ảnh vùng miệng về HSV và lấy riêng kênh Saturation để tính toán.
  • Tiếp theo ta tính trung bình cộng saturation của vùng miệng.
  • Ta so sáng giá trị trung bình đó với 1 threshold do ta đặt, mình chọn là 100. Nếu giá trị <100 là có deo khẩu trang (màu trắng nhiều) và ngược lại.

Vậy thôi, giờ bạn chạy file mask_detection.py và sau đó thử đeo và tháo khẩu trang ra xem hệ thống nhận diện có chuẩn không nhé. Đây là video demo của mình:

Xin chào và hẹn gặp lại trong các bài tiếp theo.

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

Hãy join cùng cộng đồng Mì AI nhé!

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

6 Replies to “Chung tay chống COVID-19, làm thử hệ thống phát hiện khẩu trang và nhắc nhở nếu không đeo bằng OpenCV”

  1. Ad cho em hỏi nếu mình kết nối ra hệ thống loa để cảnh báo thì mình làm như thế nào ạ? Em thử cho câu lệnh phát âm thanh vào mục check và cảnh báo với threshold nhưng kết quả nhận được là đeo khẩu trang thì nó phát âm thanh và ngược lại ạ.

Leave a Reply

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