1. Trang chủ
  2. » Luận Văn - Báo Cáo

Xử lý ảnh nhận diện khuôn mặt ứng dụng điểm danh nhân viên trong nhà máy, có code

21 15 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Xử Lý Ảnh Nhận Diện Khuôn Mặt Ứng Dụng Điểm Danh Nhân Viên Trong Nhà Máy, Có Code
Thể loại đồ án tốt nghiệp
Định dạng
Số trang 21
Dung lượng 1,49 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Dựa trên tinh thần đó, em đã thực hiện đề tàiứng dụng công nghệ trí tuệ nhân tạo – AI nhận dạng khuôn mặt để điểm danhnhân viên vào làm việc trong các công ty, nhà máy,… Nếu như trước đ

Trang 1

Xử lý ảnh nhận diện khuôn mặt ứng dụng điểm danh nhân viên trong nhà máy, có code

Trang 2

DANH MỤC CÁC CHỮ VIẾT TẮT IX

CHƯƠNG 1 TỔNG QUAN VỀ ĐỀ TÀI 10

1.1 GIỚI THIỆU ĐỀ TÀI 10

1.2 ĐỐI TƯỢNG NGHIÊN CỨU 10

1.3 PHẠM VI NGHIÊN CỨU 11

1.4 DỰ KIẾN KẾT QUẢ 11

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 12

2.1 ESP32–CAM AI-THINKER 12

2.1.1 ESP32-CAM AI-THINKER LÀ GÌ? 12

2.1.2 ỨNG DỤNG CỦA ESP32-CAM LÀ GÌ? 12

2.2 NODE-RED 12

2.2.1 TỔNG QUANG VỀ NODE – RED 12

2.2.2 MỘT SỐ LỆNH CƠ BẢN: 13

2.3 NGÔN NGỮ LẬP TRÌNH JAVASCRIPT 15

2.3.1 JAVASCRIPT LÀ GÌ? 15

2.3.2 ỨNG DỤNG CỦA JAVASCRIP? 15

2.4 NGÔN NGỮ LẬP TRÌNH PYTHON VÀ THƯ VIỆN OPEN-CV? 15

2.4.1 PYTHON LÀ GÌ? 15

2.4.2 THƯ VIỆN OPEN-CV 15

2.5 THUẬT TOÁN MTCNN VÀ FACENET 16

2.5.1 MTCNN LÀ GÌ? 16

2.5.2 FACENET LÀ GÌ? 16

2.6 KHẢI NIỆM VỀ XỬ LÝ ẢNH 16

2.6.1 XỬ LÝ ẢNH LÀ GÌ? 16

2.6.2 CÁC KHÁI NIỆM TRONG XỬ LÝ ẢNH 17

Trang 3

CHƯƠNG 3 GIẢI PHÁP THỰC HIỆN 19

3.1 XỬ LÝ ẢNH 19

3.1.1 IMPORT CÁC THƯ VIỆN LIÊN QUAN 19

3.1.2 THU THẬP DỮ LIỆU ĐẦU VÀO 20

3.1.3 TRAINNING CHO MÁY HỌC 21

3.1.4 NHẬN DIỆN KHUÔN MẶT 22

3.2 ĐƯA DỮ LIỆU TỪ PYTHON LÊN MQTT 22

3.3 NHẬN DỮ LIỆU TỪ MQTT ĐƯA LÊN NODE-RED 22

CHƯƠNG 4 KẾT QUẢ MÔ PHỎNG 24

4.1 KẾT QUẢ NHẬN DIỆN KHUÔN MẶT 24

CHƯƠNG 5 KẾT LUẬN 26

5.1 KẾT LUẬN 26

5.1.1 ƯU ĐIỂM 26

5.1.2 NHƯỢC ĐIỂM 26

5.2 HƯỚNG PHÁT TRIỂN 26

TÀI LIỆU THAM KHẢO 27

PHỤ LỤC A CODE CHƯƠNG TRÌNH 28

Trang 4

Hình 3-2 Thu thập dữ liệu 20

Hình 3-3 Trainning cho máy học 21

Hình 3-4 Chương trình nhận diện khuôn mặt 22

Hình 3-5 Chương trình đẩy dữ liệu lên Node-Red bằng MQTT 22

Hình 3-6 Dữ liệu đã được nhận trên Node-Red 23

Hình 3-7 Cấu hình khối “MQTT IN” 23

Hình 4-1 Kết quả nhận diện khuôn mặt 24

Hình 4-2 Kết quả chuỗi truyền lên Node-Red 25

Hình 4-3 Kết quả trên Google Sheet 25

Trang 5

DANH MỤC CÁC CHỮ VIẾT TẮT

MQTT Message Queue Telemetry Transport

MTCNN Multi-task Cascaded Convolutional Networks

Trang 6

CHƯƠNG 1 TỔNG QUAN VỀ ĐỀ TÀI

1.1 GIỚI THIỆU ĐỀ TÀI

Trong thời đại cách mạng công nghiệp 4.0 như hiện này, việc ứng dụng trí tuệ nhântạo vào đời sống để phục vụ các nhu cầu của con người, công ty, xí nghiệp, nhà máy

là vô cùng quan trọng Điều đó giúp chúng ta tiết kiệm nhiều thời gian hơn, năngsuất vận hành được cãi tiến tốt hơn Dựa trên tinh thần đó, em đã thực hiện đề tàiứng dụng công nghệ trí tuệ nhân tạo – AI ( nhận dạng khuôn mặt) để điểm danhnhân viên vào làm việc trong các công ty, nhà máy,… Nếu như trước đây, việc điểmdanh thường ngày phải thực hiện quét vân dẫn đến việc nhân viên phải xếp hàng,tốc độ nhận diện khá chậm gây mất nhiều thời gian đối với mọi người Thì giờ đây,với đề tài nhận diện khuôn mặt để điểm danh này có thể giải quyết triệt để các vấn

đề trên Các công nhân viên cứ đi thằng vào cổng công ty mà không cần phải quamột trạm điểm danh nào cả Camera sẽ tự theo dõi, nhận dạng và truy xuất dữ liệu

ra vào và cập nhận lên Google Sheet và người quản lý sẽ dễ dàng lấy và truy suất dữliệu này vào cuối ngày

1.2 ĐỐI TƯỢNG NGHIÊN CỨU

Đối với đề tài này đối tượng nghiên cứu là:

- ESP32–Cam AI-Thinker với bộ xử lý chính là module ESP32 và CameraOV2640

- Node-Red để xây dựng hệ thống Google Sheet nhận dữ liệu điểm danh

- JavaScript nhận và chuyển dữ liệu từ máy tính lên Server bằng kỹ thuật MQTT

- Python và Open-CV dùng để nhận diện khuôn mặt và chuyển dữ liệu lên hệthống

1.3 PHẠM VI NGHIÊN CỨU

Với đề tài ở mức nghiên cứu ban đầu thì việc yêu cầu về sự ổn định và độ chínhxác cần được ưu tiên lên hàng đầu nên em thực hiện việc thu tập dữ liệu hình ảnh đểtraining cho máy tính trong khoảng bốn người bằng thuật toán MTCNN (Multi-task

Trang 7

Trang 7

Cascaded Convolutional Networks) và Facenet, việc thu nhận, truy xuất dữ liệuđiểm danh thực hiện hoàn toàn trên Google Sheet được kết nối với nền tảng Node-Red

1.4 DỰ KIẾN KẾT QUẢ

Sau khi hoàn thành đề tài, kết quả sẽ cho ra một hệ thống nhận diện khuôn mặttrên môi trường lập trình Pycharm được kết nối với nền tảng Node-Red thông quacông cụ truyền thông MQTT, sau khi chạy lệnh hệ thống sẽ nhận diện khuôn mặtthông qua Webcam trên máy tính hoặc ESP32-CAM và chuyển dự liệu nhận dạngđược này lên Node-Red, từ đó em sử dụng các công cụ của Node-Red để chuyển dữliệu vào hệ thống Google Sheet

CHƯƠNG 1 CƠ SỞ LÝ THUYẾT

1.5 ESP32–CAM AI-THINKER

1.1.1 ESP32-CAM AI-THINKER LÀ GÌ?

ESP32 – Cam là mạch thu phát wiffi tích hợp với bộ xử lý chính là module ESP32

và Camera OV2640 để hổ trợ việc lấy ảnh và truyền ảnh

1.1.2 ỨNG DỤNG CỦA ESP32-CAM LÀ GÌ?

Trang 8

ESP32-CAM có tác dụng như một camera di động giúp người dùng dễ dàng kết nốivới các thiết bị khác để chụp ảnh, livestream,… hỗ trợ chuyền hình ảnh thu được từmạch qua các thiết bị khác để lấy thông tin, ứng dung trong việc giám sát an ninh,theo dỏi hệ thống từ xa, hoặc ứng dụng để xử lý ảnh như trong đề tài này.

1.6 NODE-RED

1.1.3 TỔNG QUANG VỀ NODE – RED

Node-red là nền tảng lập trình kéo thả dựa trên nền tảng JavaScript giúp kết nối cácthiết bị phần cứng với Internet, nền tảng cũng cấp các công cụ xử lý dữ liệu như: sốliệu, hình ảnh, tài liệu,… cho ra kết quả của thuật toán như những nền tảng lập trìnhkhác Ngoài ra, Node-Red còn hỗ trợ xây dựng khối giao diện giáp sát, để giám sát

hệ thống dữ liệu giúp người dùng quản lý thông tinh một cách chủ động

Hình 2 - 1: Giao diện Node-RED1.1.4 MỘT SỐ LỆNH CƠ BẢN:

Trang 9

Trang 9

1.1.1.1 Inject

Khối Inject dùng để đưa dữ liệu vào chương trinh bằng cách thủ công hoặc tự động(cho phép cài đặt thời giản tải dữ liệu lên), loại dữ liệu này rất đa dạng, có thể làmột tín hiệu, một chuổi, hình ảnh, hoặc đối tượng JavaScript, thậm chí là thời gianhiện tại

1.1.1.2 Debug

Debug là là khổi hiển thi kết quả quả của một chương trình, kết quả xuất ra kết quả

ở kiểu dữ liệu khác nhau như: mảng, chuổi, thời gian,…

1.1.1.3 Image

Image là một trong những công cụ xử lý hình ảnh của node-red, giúp hỗ trợ lậptrình viện lấy ảnh, xử lý, chuyển định dạng (image, buffer, base 64) theo mongmuốn

1.1.1.4 Function

Function là công cụ quan trọng nhất của Node-Red, giúp người dùng xử lý mọi tác

vụ theo mong muốn với ngôn ngữ lập trình JavaSCript

1.1.1.5 Change

Khối Change thực hiện (Set, Change, Move, Delete) thuộc tính của dữ liệu

1.1.1.6 Switch

Khối Switch có chức năng chuyển tín hiệu đi dựa trên tín hiệu đưa vào và theo trình

tự sắp xếp giúp thay đổi mục đích xử lý dữ liệu của người dùng theo từng trườnghợp cụ thể

Trang 10

1.1.6 ỨNG DỤNG CỦA JAVASCRIP?

Là ngôn ngữ lập trình bật cao, JavaScript được dùng trong nhiều lĩnh vực như: Thiết

kế web, phần mềm giáo sát, làm app,… Mà cụ thể như trong đề tài này, nó đượcdùng để xử lý ảnh ( tính toán kích thước đồ vật )

1.8 NGÔN NGỮ LẬP TRÌNH PYTHON VÀ THƯ VIỆN OPEN-CV?

1.1.7 PYTHON LÀ GÌ?

Python là ngôn ngữ lập trình đa năng với câu trúc đơn giản, ít cú pháp, dễ dàng thaotác, được ra đời vào năm 1980 do Guido Van Rossum sáng tạo ra Với hệ thống thưviện khổng lồ, Python có thể giải quyết mọi vấn đề từ đơn giản đến phức tạp nhất

Ví dụ như: tạo một trang Web, xây dựng app, lập trình game,… đặc biệt hơn vớiviệc có trong mình nguồn thư viện Open-CV, Python là công cụ lý tưởng nhất đểthực hiện các dự án liên quan đến xử lý ảnh, nhận diện khuôn măt, các đề tài về tríthông minh nhân tạo – AI

1.1.8 THƯ VIỆN OPEN-CV

OpenCV (Open Source Computer Vision Library) được ra đời vào năm 1999 là thưviện nguồn mở được sử dụng trong các dự án Computer Vision và MachaineLearning Các module thường được dùng trong OpenCV là:

- Core functionality (core)

Trang 11

Trang 11

- Image Processing (imgproc)

- Video Analysis (video)

- Camera Calibration and 3D Reconstruction (calib3d)

- 2D Features Framework (features2d)

1.9 THUẬT TOÁN MTCNN VÀ FACENET

1.1.9 MTCNN LÀ GÌ?

MTCNN (Multi-task Cascaded Convolutional Networks): Là CNN bao gồm 3 mangxếp chồng lên nhau và hoạt động để thực hiện nhận diện khuôn mặt Mỗi mạng có cấu trúc khác nhau và các chức năng khác nhau trong từng nhiệm vụ cụ thể Kết quảđầu ra của thuật toán MTCNN là là các vị trí đặt điểm của khuôn mặt như là: mắt, mũi, miệng,…

1.1.10 FACENET LÀ GÌ?

Facenet là một module được tạo bởi Google vào năm 2015, với chức năng xuất ra 1vector bao gồm 128 đặc điểm khi ta đưa vào một bức ảnh đúng kính thước của nó,thường được ứng dụng để nhận biết các đặc điểm trên khuôn mặt Sau khi cho rađược vector đặc điểm khuôn mặt, ta dùng SVM để nhóm các vector đó thành mộtnhóm để có dữ liệu so sánh xem vector đó là của ai

1.10 KHẢI NIỆM VỀ XỬ LÝ ẢNH

1.1.11 XỬ LÝ ẢNH LÀ GÌ?

Xử lý ảnh là một phần trong xử lý số tín hiệu với tín hiệu xử lý là hình ảnh, là mộtlĩnh vực đang được quan tâm trong những năm gần đây vì sự hiệu quả trong việcứng dụng của nó Xử lý ảnh gồm 4 lĩnh vực chính: xử lý nâng cao chất lượng ảnh,nhận dạng ảnh, nén ảnh và truy vấn ảnh

1.1.12 CÁC KHÁI NIỆM TRONG XỬ LÝ ẢNH

- Pixel : Trong ảnh kỹ thuật số người ta thường dùng pixel để nói về một điểmảnh nào đó (với pixel là viết tắt của picture và element) là điểm vật lý trong một

Trang 12

hình ảnh Mỗi điểm ảnh là một mẫu của hình ảnh ban đầu, nhiều điểm ảnh thườngđại diện chính xác hơn của bản gốc.

Hình 2 - 2: Pixel

Hệ màu RGB: nó là viết tắt của 3 dãy mà Red, Green, Blue, được ra đời từ những năm 1953, nó sử dụng để làm tiêu chuẩn cho tivi màu cũng như các màn hình Internet Khi 3 màu Red (Đỏ), Green (Xanh lá) và Blue (Xanh dương) hợp lại với theo tỉ lệ 1:1:1 sẽ tạo thành màu trắng (màu sáng hơn màu gốc).Hệ màu RGB hoạt động bằng cách phát các điểm sáng màu khác nhau để tạo thành hình ảnh, màu sắc trên nền đen như nền tivi, máy tính, máy ảnh,

Khi biểu diễn dưới dạng số, các giá trị RGB trong mô hình thông thường được ghibằng số nguyên ( 0 và 255), mỗi số đại diện cho cường độ màu, cứ như thế ta biểudiễn như sau:

255 x 255 x 255: màu trắng

0 x 0 x 0: màu đen

0 x 255 x 0: xanh lục

Trang 13

Trang 13

Hình 2 - 3: Hệ màu RGB

CHƯƠNG 2 GIẢI PHÁP THỰC HIỆN

Để giải quyết được đề bài đặt ra, trước tiên em sử dụng ngôn ngữ lập trình python

và thư viên OpenCV để giải quyết bài toán nhận diện khuôn mặt theo trình tự ( nhậptên nhân viên, tiến hành lấy ảnh để thu thập dữ liệu bằng Webcam, Trainning chomáy tính) Sau khi máy tính đã học xong chúng ta có thể tiến hành điểm danh, khícamera máy tính nhận diện được danh tính người trong camera sẽ tiến hành đẩychuổi dữ liệu nhân viên lên Node-Red bằng module truyền thông MQTT Tiếp theo,khi dữ liệu được truyền lên sẽ triễn khai cắt chuỗi và truyền dữ liệu vào GoogleSheet bằng công cụ Gsheet của Node-Red

2.1 XỬ LÝ ẢNH

Trang 14

2.1.1 IMPORT CÁC THƯ VIỆN LIÊN QUAN

- Đoạn lệnh này yêu cầu nhân viên khai báo họ tên của mình, sau đó thực hiện

việc lấy ảnh để xây dựng dữ liệu thông qua đoạn code cap =

Trang 15

Trang 15

cv2.VideoCapture(0) Vòng lập while sẽ tiến hành chụp ảnh liên tục cho đếnkhi lấy đủ 50 bức ảnh

2.1.3 TRAINNING CHO MÁY HỌC

Hình 3-3 Trainning cho máy học

- Ở phần code này sẽ chuẩn hóa dữ liệu hình ảnh về một khoảng cố định, hàm Trans(img) sẽ đưa pixel của ảnh về khoảng [-1;1] nhưng vẫn mô tả được hình ảnh gốc của nó

- Tiếp theo chúng ta sữ dụng cấu trúc inceptionResentV1 của Facenet để cho ra Vector 512 đặc điểm của một bức ảnh

- Dòng lệnh for in os.listdir(IMG_PATH) dụng để tạo lập các folder chứa các hình ảnh đã được thu thập và xử lý User và list names là tên và danh sách tên của người dùng trong các folder.Mỗi folder chúng ta sẽ xét toàn bộ ảnh trong đóbao gồm 50 bức ảnh Như vậy ta có tổng cộng 50 embeds cho mỗi cá nhân Nhưng thuật toán chỉ cần 1 embeds cho một cá nhân Vì vậy, việc dùng hàm torch.cat() sẽ đưa danh sách này về thành 1 tensor 2 chiều, sử dụng

torch.mean() để lấy giá trị trung bình của toàn bộ embeds Và kết quá cuối cùngứng với giá trị name của user

Trang 16

2.1.4 NHẬN DIỆN KHUÔN MẶT

Hình 3-4 Chương trình nhận diện khuôn mặt

- Đầu tiền dùng lệnh lấy khung hình từ camera của máy tính.

- Khoanh vùng tọa độ Roi của khuôn mặt hiển thị thông tin của người được

quét khuôn mặt

- Truy xuất dữ liệu Facelist và usernames từ các file lưu ở trên bằng hàm

load_facelist()

- Sau đó cho khung ảnh vào hàm detect của MTCNN để trả về tọa độ các

khung ROI có chứa khuôn mặt và trích xuất khuôn mặt bằng câu lệnh extract_face(bbox,frame)

2.2 ĐƯA DỮ LIỆU TỪ PYTHON LÊN MQTT

Hình 3-5 Chương trình đẩy dữ liệu lên Node-Red bằng MQTT

- Dòng này giúp đẩy chuỗi tên người nhận diện lên broker.hivemq.com.

2.3 NHẬN DỮ LIỆU TỪ MQTT ĐƯA LÊN NODE-RED

- Ta dùng khối “ MQTT IN” để nhận dữ liệu từ python sẽ cho ra kết quả:

Trang 17

Trang 17

Hình 3-6 Dữ liệu đã được nhận trên Node-Red

- Cấu hình “MQTT IN” với “broker.hivemq.com” để nhận dữ liệu từ hệ thống.

Hình 3-7 Cấu hình khối “MQTT IN”

Trang 18

CHƯƠNG 3 KẾT QUẢ MÔ PHỎNG

3.1 KẾT QUẢ NHẬN DIỆN KHUÔN MẶT

- Nhận diện khuôn mặt và xuất ra chuỗi dữ liệu ( tên nhân viên ) theo như

mong muốn

- Từ đó chuyển dữ liệu chuỗi này lên Node-Red bằng module MQTT

- Sau đó lưu hồ sơ dữ liệu vào Google Sheet bằng công cụ Gsheet

Hình 4-5 Kết quả nhận diện khuôn mặt

Hình 4-6 Kết quả chuỗi truyền lên Node-Red

Trang 19

Trang 19

Hình -7 Kết quả trên Google Sheet

CHƯƠNG 4 KẾT LUẬN

4.1 KẾT LUẬN

Trang 20

- Kết quả cuối cùng đã hoàn thành được yêu cầu của đề bài: nhận diện được

khuôn mặt và xuất dữ liệu vào Google Sheet

4.1.1 ƯU ĐIỂM

- Chương trình được viêt bằng ngôn ngữ lập trình Python dễ dàng phát triển.

- Hệ thống lưu trữ dữ liệu bằng Google Sheet giúp người dùng có thể tùy biến

định dạng cũng như yêu từng yêu cầu công ty

- Hệ thống đáp ứng chính xác trong môi trường lý tưởng.

4.1.2 NHƯỢC ĐIỂM

- Không nhận diện được ở góc nghiên.

- Mỗi lần quét chỉ nhận diện được lần lượt từng người một.

Trang 21

https://wiki.matbao.net/javascript-la-gi-hoc-lap-trinh-javascript-ngon-ngu-cua-[4] bJzKmrVXZ9N

Ngày đăng: 16/05/2022, 16:12

HÌNH ẢNH LIÊN QUAN

Hình 2- 1: Giao diện Node-RED 1.1.4 MỘT SỐ LỆNH CƠ BẢN: - Xử lý ảnh nhận diện khuôn mặt ứng dụng điểm danh nhân viên trong nhà máy, có code
Hình 2 1: Giao diện Node-RED 1.1.4 MỘT SỐ LỆNH CƠ BẢN: (Trang 7)
ảnh. Mỗi điểm ảnh là một mẫu của hình ảnh ban đầu, nhiều điểm ảnh thường đại diện chính xác hơn của bản gốc. - Xử lý ảnh nhận diện khuôn mặt ứng dụng điểm danh nhân viên trong nhà máy, có code
nh. Mỗi điểm ảnh là một mẫu của hình ảnh ban đầu, nhiều điểm ảnh thường đại diện chính xác hơn của bản gốc (Trang 11)
Hình 3-3 Trainning cho máy học - Xử lý ảnh nhận diện khuôn mặt ứng dụng điểm danh nhân viên trong nhà máy, có code
Hình 3 3 Trainning cho máy học (Trang 14)
Hình 3-4 Chương trình nhận diện khuôn mặt - Xử lý ảnh nhận diện khuôn mặt ứng dụng điểm danh nhân viên trong nhà máy, có code
Hình 3 4 Chương trình nhận diện khuôn mặt (Trang 15)
- Cấu hình “MQTT IN” với “broker.hivemq.com” để nhận dữ liệu từ hệ thống. - Xử lý ảnh nhận diện khuôn mặt ứng dụng điểm danh nhân viên trong nhà máy, có code
u hình “MQTT IN” với “broker.hivemq.com” để nhận dữ liệu từ hệ thống (Trang 16)
Hình 3-6 Dữ liệu đã được nhận trên Node-Red - Xử lý ảnh nhận diện khuôn mặt ứng dụng điểm danh nhân viên trong nhà máy, có code
Hình 3 6 Dữ liệu đã được nhận trên Node-Red (Trang 16)
Hình 4-6 Kết quả chuỗi truyền lên Node-Red - Xử lý ảnh nhận diện khuôn mặt ứng dụng điểm danh nhân viên trong nhà máy, có code
Hình 4 6 Kết quả chuỗi truyền lên Node-Red (Trang 17)
Hình 4-5 Kết quả nhận diện khuôn mặt - Xử lý ảnh nhận diện khuôn mặt ứng dụng điểm danh nhân viên trong nhà máy, có code
Hình 4 5 Kết quả nhận diện khuôn mặt (Trang 17)
Hình 4-7 Kết quả trên Google Sheet - Xử lý ảnh nhận diện khuôn mặt ứng dụng điểm danh nhân viên trong nhà máy, có code
Hình 4 7 Kết quả trên Google Sheet (Trang 18)

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w