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

Luận văn Xây dựng hệ thống nhận dạng kiểm soát khuôn mặt với Deep Learning

91 2 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

Định dạng
Số trang 91
Dung lượng 2,39 MB

Nội dung

TRƯỜNG ĐẠI HỌC GIAO THƠNG VẬN TẢI TP HỒ CHÍ MINH KHOA CÔNG NGHỆ THÔNG TIN THỰC TẬP TỐT NGHIỆP XÂY DỰNG HỆ THỐNG NHẬN DẠNG KIỂM SỐT KHN MẶT VỚI DEEP LEARNING Ngành: CÔNG NGHỆ THÔNG TIN Chuyên ngành: CÔNG NGHỆ THÔNG TIN Giảng viên hướng dẫn : Ths Đặng Nhân Cách Sinh viên thực : Nguyễn Hà Khánh Duy MSSV: 1651120078 Lớp: CN16B Đỗ Nguyên Khang MSSV: 1651120098 Lớp: CN16B Võ Thành Thông MSSV: 1651120135 Lớp: CN16B TRƯỜNG ĐẠI HỌC GIAO THƠNG VẬN TẢI TP HỒ CHÍ MINH KHOA CÔNG NGHỆ THÔNG TIN - NGUYỄN HÀ KHÁNH DUY ĐỖ NGUYÊN KHANG VÕ THÀNH THÔNG XÂY DỰNG HỆ THỐNG NHẬN DẠNG KIỂM SỐT KHN MẶT VỚI DEEPLEARNING NGÀNH: CƠNG NGHỆ THÔNG TIN CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN BÁO CÁO THỰC TẬP TỐT NGHIỆP NGƯỜI HƯỚNG DẪN (Đơn vị cơng tác/ cơng ty có) TP HỒ CHÍ MINH – 2020 LỜI CAM ĐOAN Nhóm xin cam đoan đồ án Thực tập tốt nghiệp với đề tài: “Xây dựng hệ thống nhận dạng kiểm sốt khn mặt với Deep Learning” cơng trình nghiên cứu nhóm Những phần sử dụng tài liệu tham khảo đồ án nêu rõ phần tài liệu tham khảo Các số liệu, kết trình bày đồ án hồn tồn trung thực, sai nhóm xin chịu hoàn toàn trách nhiệm chịu kỷ luật môn nhà trường đề MỤC LỤC CHƯƠNG GIỚI THIỆU 10 1.1 TÍNH CẤP THIẾT CỦA VẤN ĐỀ NGHIÊN CỨU 10 1.2 MỤC TIÊU, ĐỐI TƯỢNG, PHẠM VI NGHIÊN CỨU 10 1.2.1 Mục tiêu nghiên cứu 10 1.2.2 Đối tượng áp dụng, phạm vi nghiên cứu 11 1.3 PHƯƠNG PHÁP NGHIÊN CỨU 11 1.3.1 Trích xuất khn mặt từ ảnh 2D 11 1.3.2 Kỹ thuật Deep Learning 12 1.4 KẾT QUẢ ĐẠT ĐƯỢC CỦA ĐỀ TÀI 13 CHƯƠNG CƠ SỞ LÝ THUYẾT 15 2.1 BÀI TOÁN NHẬN DẠNG MẶT NGƯỜI – NHỮNG VẤN ĐỀ CƠ BẢN 15 2.1.1 Giới thiệu 15 2.1.2 Thách thức nhận dạng mặt người 16 2.2 BẢN CHẤT BÀI TOÁN VỀ DEEP LEARNING 17 2.3 CÁC THƯ VIỆN MÃ NGUỒN MỞ ĐƯỢC SỬ DỤNG 19 2.3.1 Thư viện OpenCV 19 2.3.2 Thư viện Dlib 23 2.3.3 Thư viện Tensorflow 23 2.3.4 Thư viện Keras 26 2.3.5 Thư viện Numpy 26 2.3.6 Thư viện Matplotlib 27 2.3.7 Tóm tắt nhiệm vụ thư viện 28 2.4 MẠNG THẦN KINH NHÂN TẠO (NEURAL NETWORK) 29 2.4.1 Mạng nơ-ron 29 2.4.2 Neural network 29 2.4.3 Deep Learning 30 2.4.4 Convolutional Neural Network 33 2.4.5 Cấu trúc mạng CNN (Covolutional Neural Network) 35 2.4.6 Huấn luyện Neural Network 42 2.4.7 Hàm loss 44 CHƯƠNG TRIỂN KHAI NGHIÊN CỨU 45 3.1 LỰA CHỌN KỸ THUẬT 45 3.2 CHUẨN BỊ DỮ LIỆU 45 3.3 CHUẨN BỊ MƠ HÌNH 46 3.4 CHUẨN BỊ HÀM LOSS PHÙ HỢP VỚI MODEL 51 CHƯƠNG TRIỂN KHAI HUẤN LUYỆN MƠ HÌNH 55 4.1 XÁC ĐỊNH KHUÔN MẶT TRONG ẢNH (FACIAL DETECTION) 55 4.2 BIỂU DIỄN CÁC KHUÔN MẶT DƯỚI DẠNG VECTOR 60 4.3 XÂY DỰNG MODEL 61 4.3.1 Sumary 61 4.3.2 Compile 64 4.3.3 Mô liệu 75 4.4 KẾT QUẢ QUÁ TRÌNH HUẤN LUYỆN VÀ TIẾN HÀNH ĐÁNH GIÁ 82 4.4.1 Quá trình huấn luyện model 82 4.4.2 Xác minh danh tính khn mặt 84 4.4.3 Kết 85 CHƯƠNG KẾT LUẬN 87 DANH MỤC HÌNH Hình 2.1 Các thơng tin có ảnh mặt người 16 Hình 2.2 Cấu trúc thư viện OpenCV 19 Hình 2.3 Mức độ phổ biến tensorflow 24 Hình 2.4 Chức thư viện 28 Hình 2.5 So sánh mạng Nơ-ron người mô 29 Hình 2.6 Mơ hình tổng qt Neural Network 30 Hình 2.7 Deep Neural Network 31 Hình 2.8 Weights liên kết nơ-ron 32 Hình 2.9 Convolutional 34 Hình 2.10 Convolutional 34 Hình 2.11 Convolutional Neural Network 36 Hình 2.12 Local receptive field 37 Hình 2.13 Local receptive field 38 Hình 2.14 Local receptive field 38 Hình 2.15 Local receptive field 39 Hình 2.16 Convolutional Neural Network 40 Hình 2.17 Pooling layer 41 Hình 2.18 Pooling layer 41 Hình 2.19 Gradient Descent 43 Hình 3.1 Label Face in the Wild 46 Hình 3.2 VGG16 47 Hình 3.3 ConVNet 48 Hình 3.4 Hình minh hoạ cho kiến trúc model 50 Hình 4.1 Face detection 55 Hình 4.2 Haarlike features 56 Hình 4.3 HOG and SVM, CNN 59 Hình 4.4 68 Landmark 60 Hình 4.5 Gradient Decent 66 Hình 4.6 Global and Local 67 Hình 4.7 Stochastic Gradient Descent 70 Hình 4.8 Learning rate 71 Hình 4.9 Momentum 72 Hình 4.10 Nesterov’s Acceleration 72 Hình 4.11 Đồ thị hàm Loss 77 Hình 4.12 PCA 79 Hình 4.13 T-SNE 80 Hình 4.14 T-SNE 81 Hình 4.15 T-SNE 82 Hình 4.16 Training dataset 83 Hình 4.17 Detect 86 DANH SÁCH THUẬT NGỮ, CHỮ VIẾT TẮT STT Viết tắt Diễn giải HOG Histogram of Oriented Gradient SVM Support Vector Machine FERET PCA Principal Components Analysis LDA Linear Discriminant Analysis LBP Local Binary Pattern LFW Labeled Face in Wild CNN ConvNet – Convolutional Neural Network Face Recognition Technology LỜI MỞ ĐẦU Ngày nay, với tiến vượt bậc khoa học kỹ thuật nói chung, môn khoa học xử lý ảnh thu thành tựu lớn lao chứng tỏ vài trị khơng thể thiếu với ứng dụng sâu rộng khoa học kỹ thuật đời sống xã hội Một phận khoa học xử lý ảnh lĩnh vực thị giác máy tính thu hút nhiều quan tâm nhà nghiên cứu xử lý ảnh với mục tiêu xây dựng nên giới hệ thống thị giác kỳ diệu người mơ hệ thống máy tính, đem lại khả cảm nhận thị giác cho hệ thống môi trường xung quanh Mơ ước hệ thống máy tính hồ nhập vào giới người với đầy đủ giác quan thị giác đóng vai trị quan trọng thực hố với đóng góp nghiên cứu nhà khoa học phạm vi toàn giới Tại Việt Nam, việc ứng dụng thông tin sinh trắc vào giấy tờ (hộ chiếu, chứng minh thư, ) tích cực nghiên cứu để đưa vào ứng dụng Từ lý trên, nhóm chọn đề tài: “Xây dựng hệ thống nhận dạng đối tượng vi phạm giao thông” Chương GIỚI THIỆU 1.1 Tính cấp thiết vấn đề nghiên cứu Con người giỏi việc nhận diện khuôn mặt hình mẫu phức tạp Ngay thời gian trôi qua không ảnh hưởng đến khả người muốn máy tính trở nên mạnh mẽ họ việc nhận diện khuôn mặt Hơn thập kỷ qua, có nhiều cơng trình nghiên cứu tốn xác định khn mặt người từ ảnh đen trắng, ảnh xám, đến ảnh màu Các nghiên cứu từ toán đơn giản ảnh chứa khn mặt người nhìn thẳng vào thiết bị thu hình đầu tư thẳng đứng, ảnh màu với nhiều khuôn mặt người ảnh, khn mặt có quay góc nhỏ, hay bị che khuất phần, với ảnh ảnh phức tạp (ảnh chụp thiên nhiên) nhằm đáp ứng nhu cầu thật cần thiết người Nhận dạng khn mặt tốn có nhiều ứng dụng thực tế nhận quan tâm lớn từ cộng đồng nhà khoa học nghiên cứu Thị giác máy tính thời gian gần Một hệ thống nhận dạng khn mặt có nhiều bước bước lại lĩnh vực nghiên cứu với cách tiếp cận khác Đó lý nhóm chọn đề tài nhằm nghiên cứu, học hỏi công nghệ phát triển giới 1.2 Mục tiêu, đối tượng, phạm vi nghiên cứu 1.2.1 Mục tiêu nghiên cứu Nhằm xây dựng chương trình nhận dạng khn mặt tự động, đề tài thực nghiên cứu vấn đề sau: 10 Hình 4.11 Đồ thị hàm Loss Qua khoảng 250 epochs giám sát độ giảm hàm LOSS tiến gần đến mức thấp nhất, cụ thể LOSS giảm từ 0.9 xuống 0.5 qua ba lần train với mức epoch tương đương 100 77 4.3.3.2 Mô kết qua PCA T-SNE PCA[20] phương pháp biến đổi giúp giảm số lượng lớn biến có tương quan với thành tập biến cho biến tạo tổ hợp tuyến tính biến cũ khơng có tương quan lần Ví dụ, có 100 biến ban đầu có tương quan tuyến tính với nhau, sử dụng phương pháp PCA xoay chiều không gian cũ thành chiều khơng gian mà cịn biến khơng có tương quan tuyến tính mà nhiều lượng thông tin từ nhóm biến ban đầu Đặc tính PCA : Giúp giảm số chiều liệu - Giúp visualization liệu có q nhiều chiều thơng tin Do liệu ban đầu có số chiều lớn (nhiều biến) PCA giúp xoay trục tọa độ xây trục tọa độ đảm bảo độ biến thiên liệu giữ lại nhiều thông tin mà không ảnh hưởng tới chất lượng mô hình dự báo (Maximize the variability) Do PCA giúp tạo hệ trục tọa độ nên mặt ý nghĩa toán học, PCA giúp xây dựng biến factor tổ hợp tuyến tính biến ban đầu Trong khơng gian mới,PCA giúp khám phá thêm thông tin quý giá mà chiều thông tin cũ thông tin quý giá bị che Sau kết áp dụng PCA lên tập liệu train: 78 Hình 4.12 PCA 79 T-SNE[21]: thuật toán giúp đưa liệu ảnh khơng gian chiều, áp dụng thuật tốn K-Nearest Neighbor (Giải thuật k hàng xóm gần nhất) nhằm đưa ảnh tính tốn gần Từ giúp đánhgiá hàm LOSS có thực tiêu chí giảm khoảng cách ảnh giống tăng khoảng cách ảnh khác Khi cho iter lặp khoảng 400 lần, thấy ảnh phân cụm cách rõ ràng Hình 4.13 T-SNE 80 Hình 4.14 T-SNE Sau lần lặp Iter 720 ảnh giống nằm gần 81 Hình 4.15 T-SNE Chúng ta nhận ảnh gần gần chiều, để tăng khả xác cần dựa vào yếu tố chất lượng liệu, khả giống ảnh, mơ hình Neural Network chúng ta, thời gian training dataset, mức độ tối ưu thuật toán Và yếu tố khác ảnh dùng để so sánh có khác biệt yếu tố khách quan kiểu tóc, tuổi tác, mức độ chỉnh sửa ảnh ảnh hưởng lớn đánh giá mơ hình 4.4 Kết trình huấn luyện tiến hành đánh giá 4.4.1 Quá trình huấn luyện model 82 Trước hết, xem qua biểu đồ hàm loss giảm dần lần train gần nhất, tổng thời gian 40 tiếng Hình 4.16 Training dataset Ta thấy lần train cuối cùng, Epochs thứ 39, hàm loss xuống đến mức thấp với Value đạt 0.4511 Điều đạt qua điều chỉnh thuật tốn SGD với mức learning rate 0.000001 kết hợp với mức decay 0.001, giữ nguyên momentum 0.9 có nesterov Khi learning rate ( tốc độ học ) lớn dẫn đến việc hội tựu khó khăn hơn, để giải vấn đề thêm decay (dùng để giảm tốc độ học theo thời gian) Việc làm cho thay đổi biến qua bước giảm dần Có vài phương thức decay thường dùng: Sử dụng số: Đôi không cần phải thay đổi tốc độ học theo thời gian Sử dụng số đủ để giải vấn đề 83 Giảm theo thời gian: Ta giảm tốc độ học theo cơng thức, ví dụ 𝛼 = 𝛼0 × 1+𝑡 Ở 𝑡 số bước chạy Giảm theo hàm bậc thang (step function): Tương tự giảm theo thời gian ta giữ tốc độ học lâu tí Ví dụ ta giảm tốc độ học từ 1.0 xuống 0.1 sau 10 bước chạy, xuống 0.01 sau 100 bước kế Tóm lại, nhiều tham số khác, việc xác định tốc độ học thích hợp chủ yếu dựa vào kết nhiều thử nghiệm 4.4.2 Xác minh danh tính khn mặt Sau train model thích hợp, tiến hành xác minh danh tính khn mặt cách đơn giản khơng hiệu tính khoảng cách Euclit vector đặc trưng khuôn mặt cần nhận dạng với vector đặc trưng khác, lấy vector gần làm kết xác minh Đoạn code sau thể cách tính tốn hai khn mặt frame = image[y:y + h, x:x + w] frame = cv2.resize(frame, (221, 221)) frame = frame / 255 frame = np.expand_dims(frame, axis=0) emb = self.model.predict([frame, frame, frame]) minimum = 10 person = -1 for i, e in enumerate(self.embs): dist = np.linalg.norm(emb - e) if dist < minimum: minimum = dist person = i images.append([i, minimum, self.x_train[i], self.y_train[i]]) print(f"{i} - {minimum}") emb = minimum name = self.data_frame[(self.data_frame['label'] == self.y_train[person])].iloc[0, 2] print(f"\nPERSON: {person} LABEL: {self.y_train[person]} NAME: {name}") 84 print(f"EMB: {emb}") cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 1) cv2.putText(image, name, (x, y + h + 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 1) cv2.putText(image, str(emb), (x, y + h + 20), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 1) Nội dung đoạn code hiểu sau: o Trích xuất vị trí khn mặt ánh thơng qua thuật tốn HOG thư viện Dlib o Tính vector ảnh sử dụng hàm predict model o Tính tốn khoản cách Euclid vector ảnh đưa vào với vector tập liệu tính tốn sẵn hàm thư viện Numpy np.linalg.norm (norm linear algebar) o Lấy khoản cách giữ ảnh truyền vào với tập ảnh liệu, distance(khoảng cách) Từ tìm số nhỏ nhất, nghĩa ảnh có khoản cách Euclid gần nhau, xác định độ giống ảnh dựa vào khoản cách gần 4.4.3 Kết Sau kết mà đạt được, trước hết thực thư viện matplotlib.pyplot: 85 Hình 4.17 Detect Chúng ta thấy model đánh giá liệu ảnh đưa vào so sánh với liệu có tập liệu Model dự đốn xác danh tính đối tượng có sở liệu Đó tổng thống George W Bush: với khoảng cách Euclid thấp ảnh : 0.02182777412235737 Như vậy, hệ thống nhận dạng khuôn mặt thành cơng, ngồi để tăng tính xác nữa, thêm “ngưỡng khoảng cách tối đa” Nếu vector cần xác định nằm xa so với vector cịn lại, khả cao chúng khơng phải người số liệu có Source code[22] dự án Embedding[23] tham khảo cuối trang 86 Chương KẾT LUẬN Qua việc nghiên cứu mục tiêu, đối tượng để thiết lập nên mục đích việc xây dựng hệ thống nhận dạng kiểm sốt khn mặt, nhóm tìm hiểu lý thuyết hệ thống thư viện OpenCV, Dlib nhằm cung cấp công cụ xử lý ảnh thuận tiện nhanh chóng Ngồi nhóm cịn tìm hiểu lý thuyết Neural Network Convolutional Neural Network nhằm hiểu mục đích mạng nhân tạo deep learning, machine learning, AI Từ lý thuyết tảng đó, nhóm triển khai xây dựng hệ thống với nguồn liệu sẵn có (Labeled Face in the Wild trường đại học Massachusetts Amherst cung cấp ) Thơng qua việc lựa chọn mơ hình với thuật tốn, nhóm đối mặt với nhiều tình khác cần phải xử lý khác mà khơng có mơ hình chung tổng qt, từ nhóm tìm hiểu thêm thuật tốn Stochastic Gradient Decent, Momentum Nesterov’s Acceleration nhiều thuật ngữ chuyên môn khác nhằm hiểu rõ deep learning Để khái qt hố kết q trình huấn luyện, nhóm sử dụng thuật tốn PCA kết hợp với T-SNE để mô huấn luyện mô hình, từ đánh giá hướng xác Qua lý thuyết đó, nhóm hồn thành phần mềm giúp xác định danh tính khn mặt có sẵn liệu Phần mềm cịn thích ứng tốt với nhiều liệu truyền vào với kết xác thời gian xử lý nhanh giúp tiết kiệm thời gian tài nguyên cách tốt Phần mềm ứng dụng vào nhiều mục đích khác quản lý nhân sự, chấm công Quản lý vào, quản lý an ninh Quản lý chăm sóc khách hàng Quản lý: Thống kê & nâng cao hiệu bán hàng Nhận dạng đối tượng vi phạm giao thông Nhận dạng tội phạm Tìm kiếm người thất lạc… 87 Hướng phát triển mà nhóm nhận định bao gồm tích hợp giải pháp lên phần cứng chuyên dụng xử lý nhận dạng sử dụng cơng nghệ deep learning, chi phí thấp máy tính, tốc độ xử lý nhanh tin cậy Tích hợp thêm nhiều tính đếm người vào, đếm lưu lượng, mật độ người, nhận diện cảm xúc, hành vi, ước lượng độ tuổi… Tóm lại, nhóm cịn phải hồn thiện nhiều chức năng, thuật tốn, kiến trúc hệ thống…, để phần mềm hoạt động tốt Ý muốn nhóm việc ứng dụng deep learning để đưa giải pháp tốt nhận diện khn mặt nhằm mục đích học hỏi phát triển thân Những giải pháp mang tính chất tham khảo giúp nhóm theo dõi cập nhật xu hướng phát triển thời đại 4.0 88 TÀI LIỆU THAM KHẢO [1] “Triplet loss - Wikipedia.” https://en.wikipedia.org/wiki/Triplet_loss (accessed May 15, 2020) [2] “Muốn biết cách thức hoạt động Deep Learning? Hãy đọc hướng dẫn nhanh sau! | TopDev.” https://topdev.vn/blog/muon-biet-cach-thuchoat-dong-cua-deep-learning-hay-doc-huong-dan-nhanh-sau/ (accessed May 15, 2020) [3] C Intel, “OpenCV.” https://opencv.org/ (accessed May 15, 2020) [4] “dlib C++ Library.” http://dlib.net/ (accessed May 15, 2020) [5] “TensorFlow.” https://www.tensorflow.org/ (accessed May 15, 2020) [6] “Keras: the Python deep learning API.” https://keras.io/ (accessed May 15, 2020) [7] “NumPy — NumPy.” https://numpy.org/ (accessed May 15, 2020) [8] “Matplotlib: Python plotting — Matplotlib 3.2.1 documentation.” https://matplotlib.org/ (accessed May 15, 2020) [9] H Đỗ Minh, “[NN] Mạng nơ-ron nhân tạo - Neural Networks.” https://dominhhai.github.io/vi/2018/04/nn-intro/ (accessed May 15, 2020) [10] “Mạng thần kinh nhân tạo – Wikipedia tiếng Việt.” https://vi.wikipedia.org/wiki/Mạng_thần_kinh_nhân_tạo (accessed May 15, 2020) [11] “Học sâu – Wikipedia tiếng Việt.” https://vi.wikipedia.org/wiki/Học_sâu (accessed May 15, 2020) [12] “Thuật toán CNN - Convolutional Neural Network | TopDev.” 89 https://topdev.vn/blog/thuat-toan-cnn-convolutional-neural-network/ (accessed May 15, 2020) [13] “Understanding Convolutional Neural Networks for NLP – WildML.” http://www.wildml.com/2015/11/understanding-convolutional-neuralnetworks-for-nlp/ (accessed May 15, 2020) [14] “LFW Face Database : Main.” http://vis-www.cs.umass.edu/lfw/ (accessed May 15, 2020) [15] “VGG16 and VGG19.” https://keras.io/api/applications/vgg/#vgg16function (accessed May 15, 2020) [16] “Optimizers.” https://keras.io/api/optimizers/ (accessed May 15, 2020) [17] “Machine Learning bản.” https://machinelearningcoban.com/2017/01/12/gradientdescent/ (accessed May 15, 2020) [18] “Machine Learning bản.” https://machinelearningcoban.com/2017/01/16/gradientdescent2/ (accessed May 15, 2020) [19] “TensorBoard | TensorFlow.” https://www.tensorflow.org/tensorboard (accessed May 15, 2020) [20] “Principal component analysis - Wikipedia.” https://en.wikipedia.org/wiki/Principal_component_analysis (accessed May 15, 2020) [21] “t-distributed stochastic neighbor embedding - Wikipedia.” https://en.wikipedia.org/wiki/Tdistributed_stochastic_neighbor_embedding (accessed May 15, 2020) [22] D Nguyễn Hà Khánh, “kduy410/FaceRecognition: Xây dựng hệ thống 90 kiểm sốt nhận dạng khn mặt với OpenCV Dlib Deep Learning.” https://github.com/kduy410/FaceRecognition (accessed May 15, 2020) [23] D Nguyễn Hà Khánh, “Embedding projector - visualization of highdimensional data.” https://kduy410.github.io/data-visualize/ (accessed May 15, 2020) 91

Ngày đăng: 20/05/2023, 08:26

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w