Nêu cơ sở lý thuyết của phân tích thành phầnchính (pca)ứng dụng của phân tích pca vào nhận dạngkhuôn mặt

29 9 0
Nêu cơ sở lý thuyết của phân tích thành phầnchính (pca)ứng dụng của phân tích pca vào nhận dạngkhuôn mặt

Đ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

ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA   _  ĐỀ TÀI 13 NÊU CƠ SỞ LÝ THUYẾT CỦA PHÂN TÍCH THÀNH PHẦN CHÍNH (PCA) ỨNG DỤNG CỦA PHÂN TÍCH PCA VÀO NHẬN DẠNG KHN MẶT Giảng Viên Hướng Dẫn: Nguyễn Trọng Lớp L04 – Nhóm Trần Tuấn Khôi MSSV: 2311705 Hồ Tấn Đạt MSSV: 2310638 Nguyễn Văn Trí Dũng MSSV: 2310567 Lê Nhựt Phúc MSSV: 2312684 Trần Quốc Thịnh MSSV: 2313315 Lê Minh Quân MSSV: 2312824 Nguyễn Văn Tài MSSV: 2313009 BÁO CÁO ĐỀ TÀI TP HỒ CHÍ MINH – THÁNG 12/2023 i ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐỀ TÀI 13 NÊU CƠ SỞ LÝ THUYẾT CỦA PHÂN TÍCH THÀNH PHẦN CHÍNH (PCA) ỨNG DỤNG CỦA PHÂN TÍCH PCA VÀO NHẬN DẠNG KHUÔN MẶT Giảng Viên Hướng Dẫn: Nguyễn Trọng Lớp L04 – Nhóm Trần Tuấn Khơi MSSV: 2311705 Hồ Tấn Đạt MSSV: 2310638 Nguyễn Văn Trí Dũng MSSV: 2310567 Lê Nhựt Phúc MSSV: 2312684 Trần Quốc Thịnh MSSV: 2313315 Lê Minh Quân MSSV: 2312824 Nguyễn Văn Tài MSSV: 2313009 BÁO CÁO ĐỀ TÀI TP HỒ CHÍ MINH – THÁNG 12/2023 Tên đề tài: Nêu sở lý thuyết PCA ứng dụng PCA vào nhận diện khn mặt ii LỜI NĨI ĐẦU  Principal Component Analysis (PCA) hay Phân Tích Thành Phần Chính có nhiều ứng dụng trong lĩnh vực: y học, viễn thám, xử lý liệu hình ảnh, âm thanh, liệu văn bản,…, nhận diện khuôn mặt ngoại lệ Trong giới không ngừng phát triển qua ngày, lĩnh vực công nghệ thông tin ngày đại, tân tiến hơn, mang lại vơ số lợi ích, tiện lợi cho người, bên cạnh lợi ích tiềm ẩn nhiều rủi ro, lỗ hổng tiếp tay cho hành vi xấu, phạm tội Điển hình đường link  độc hại khơi gợi tò mò người dùng Facebook, bấm vào “hacker” lợi dụng lỗ hổng tảng Facebook để có mật xâm nhập vào tài khoản họ, nên ngày thơng tin cá nhân mang tính liệu mật khẩu, mã số cước công dân bị lộ, đánh cắp dễ dàng người dùng bất cẩn Trong trình nghiên cứu thực đề tài, nhóm thấy ý tưởng việc nhận diện khuôn mặt khâu điểm danh chống gian lận (vấn đề có số sinh viên nhờ người thi hộ, điểm danh giúp, nhằm mục đích cá nhân thời) điều phần ảnh hưởng đến chất lượng học tập cá nhân mở rộng ảnh hưởng đến chất lượng đào tạo nhà trường Chỉ qua số minh chứng nhóm chúng em khơng nhìn việc diễn mà lại để trở thành thói quen số bạn đặc biệt muốn bạn có ý thức với tương lai Đó lý mà nhóm chúng em định chọn đề tài phát triển lên nấc thang Tên đề tài: Nêu sở lý thuyết PCA ứng dụng PCA vào nhận diện khuôn mặt iii LỜI CẢM ƠN Trên đường dẫn tới thành công chắn có khó khăn thời, vấp ngã thách thức mà chúng em nên nhìn vào tiếp tục bước đường ấy, để vượt qua chúng em phải nhờ phần trợ giúp to lớn thầy cô môn môi trường đại học nói chung Trường Đại Học Bách Khoa nói riêng đặc biệt thầy  Nguyễn Trọng (người thầy mơn đại số tuyến tính lớp L04) người nhiệt tình giúp đỡ chúng em hồn thành tiểu luận Nếu khơng có trợ giúp nhiệt tình thầy tiểu luận chúng em khó hồn thành cách trọn vẹn Chính em thay mặt bạn nhóm gửi đến thầy lời tri ân sâu sắc lời cảm ơn chân thành nhất!  Khi bước vào môi trường đại học mẻ, chúng em bỡ ngỡ ngạc nhiên trước góc độ, quy mơ mơi trường này, trình học hỏi tìm tịi số liệu thu hoạch cho tiểu luận chúng e khơng tránh khỏi sai sót, lỗi chẳng qua chúng em khơng nên có kinh nghiệm vốn ỏi mình, chúng em mong q thầy bỏ qua góp ý để chúng em từ làm sở cho tiểu luận sau ngày hồn thiện Nhóm chúng em xin chân thành tiếp thu ý kiến thầy cô đưa để hoàn thành tiểu luận cách tốt nhất, nhóm e cảm ơn lời góp ý quý thầy cô! Tên đề tài: Nêu sở lý thuyết PCA ứng dụng PCA vào nhận diện khuôn mặt iv NHẬN XÉT CỦA GIẢNG VIÊN Tên đề tài: Nêu sở lý thuyết PCA ứng dụng PCA vào nhận diện khuôn mặt v MỤC LỤC TRANG LÓT i LỜI NÓI ĐẦU ii LỜI CẢM ƠN iii  NHẬN XÉT CỦA GIẢNG VIÊN .iv MỤC LỤC v CHƯƠNG I: THUẬT TOÁN PCA .- 1.1 GIỚI THIỆU VỀ PCA: .- 1.2 ĐẶC TÍNH: - 1.3 CÁC CƠ SỞ TOÁN HỌC SỬ DỤNG TRONG PCA: .- 1.3.1 Kỳ Vọng (Mean, Expected Value): - 1.3.2 Độ lệch chuẩn (Standard Deviation): - 1.3.3 Phương sai (Variance): - 1.3.4 Hiệp phương sai (Covariance): - 1.3.5 Ma trận hiệp phương sai (covariance matrix): .- 1.3.6 Trị riêng, vector riêng: - 1.4 CÁC BƯỚC PHÂN TÍCH THÀNH PHẦN CHÍNH: - 1.5 KẾT LUẬN: .- CHƯƠNG II: ỨNG DỤNG PCA VÀO NHẬN DIỆN KHUÔN MẶT - 2.1 MỤC TIÊU CHÍNH: - 2.2 SƠ ĐỒ KHỐI HOẠT ĐỘNG CỦA CHƯƠNG TRÌNH NHẬN DIỆN KHN MẶT: - 2.3 ỨNG DỤNG: - 2.4 ƯU ĐIỂM VÀ NHƯỢC ĐIỂM: - Tên đề tài: Nêu sở lý thuyết PCA ứng dụng PCA vào nhận diện khuôn mặt vi 2.4.1 Ưu điểm: - 2.4.2 Nhược điểm: - CHƯƠNG III: KẾT LUẬN - Danh mục tài liệu tham khảo - PHỤ LỤC - 11 - Tên đề tài: Nêu sở lý thuyết PCA ứng dụng PCA vào nhận diện khuôn mặt CHƯƠNG I: THUẬT TOÁN PCA 1.1 GIỚI THIỆU VỀ PCA: PCA (Principal Component Analysis) hay Phân Tích Thành Phần Chính thuật toán ngành máy học (Machine Learning) sử dụng rộng rãi phân tích liệu khám phá để tạo mơ hình dự đốn Nó thuật tốn chuyển đổi tập liệu có chiều cao thành tập liệu có chiều thấp giữ lại thông tin quan trọng liệu gốc Những tập liệu chiều thấp gọi thành phần chính, kết hợp tuyến tính điểm liệu gốc Thuật toán PCA dựa ý tưởng đơn giản mạnh mẽ: tìm thành phần (principal components) liệu, tức vector độc lập tuyến tính mà chiếu liệu lên chúng liệu có biến thiên (variance) lớn Các thành phần tạo nên khơng gian mới, chiều khơng gian thành phần liệu gốc Các thành phần xếp theo thứ tự giảm dần mức độ biến thiên liệu chúng, tức thành phần vector mà chiếu liệu lên liệu có variance lớn nhất, thành phần thứ hai vector mà chiếu liệu lên liệu có variance lớn thứ hai, Do đó, để giảm chiều liệu, ta cần chọn số lượng nhỏ thành  phần đầu tiên, cho tổng variance liệu chúng đạt ngưỡng (ví dụ 95% 99%) Sau đó, ta chiếu liệu gốc lên thành phần để liệu có số chiều nhỏ Tên đề tài: Nêu sở lý thuyết PCA ứng dụng PCA vào nhận diện khn mặt Mơ Phỏng Thuật tốn PCA ( Nguồn: Giới thiệu Principal Component   Analysis (viblo.asia) ) 1.2 ĐẶC TÍNH: Giúp giảm chiều liệu giữ lại đặc trưng Thay giữ lại trục tọa độ không gian cũ, PCA xây dựng không gian chiều hơn, lại có khả biểu diễn liệu tốt tương đương không gian cũ, đảm bảo độ biến thiên liệu chiều Trong không gian mới, liên kết tiềm ẩn liệu khám phá, mà đặt khơng gian cũ khó phát Tên đề tài: Nêu sở lý thuyết PCA ứng dụng PCA vào nhận diện khuôn mặt máy học, khai phá liệu, phân tích liệu, hình ảnh, thị giác máy tính, nhiều lĩnh vực khác CHƯƠNG II: ỨNG DỤNG PCA VÀO NHẬN DIỆN KHN MẶT 2.1 MỤC TIÊU CHÍNH:  Như nhắc đến, PCA phương pháp giảm chiều liệu để thu liệu có chiều thấp giữ đặc điểm chính,  biến thể liệu gốc Nên PCA áp dụng vào nhận diện khuôn mặt, mục tiêu tìm đặc điểm khn mặt người, kể giảm số lượng pixel ảnh hệ thống nhận diện khn mặt nhờ vào đặc điểm 2.2 SƠ ĐỒ KHỐI HOẠT ĐỘNG CỦA CHƯƠNG TRÌNH NHẬN DIỆN KHN MẶT: Phát khn mặt Ảnh Trích xuất đặc trưng  Nhận diện khuôn mặt Xác minh/ Đối chiếu Cụ thể hơn: Khi nhận ảnh, hệ thống xử lí xác định khn mặt cần để nhận diện Hệ thống phân tích trích xuất đặc trưng khn mặt người nốt ruồi, chân mày, đơi mắt,… Hệ thống so sánh độ tương tự ảnh mặt cần xác minh ảnh mặt sở liệu để đưa kết 2.3 ỨNG DỤNG:   Chấm công công việc  Nhận dạng, phát tội phạm nhanh chóng Tên đề tài: Nêu sở lý thuyết PCA ứng dụng PCA vào nhận diện khuôn mặt  Bảo mật thiết bị điện tử cá nhân khuôn mặt (smartphone)  Thẻ cước công dân, tài khoản định danh (Face Indentification)  Bảo mật giao dịch rút tiền ATM  Giảm bớt tai nạn giao thông nhờ phát phát cảnh báo người lái có dấu hiệu ngủ gật, tập trung  Giảm thời gian tìm kiếm liệu liên quan tới khn mặt người không gian liệu lớn (internet)  Phát triển robot lĩnh vực y tế, quân 2.4 ƯU ĐIỂM VÀ NHƯỢC ĐIỂM: 2.4.1 Ưu điểm:  Được ứng dụng rộng rãi nhiều lĩnh vực  Dễ thực liệu lớn  Đơn giản hóa liệu: Bằng cách chuyển sang khơng gian đặc trưng có chiều thấp Giúp giảm số chiều ảnh khuôn mặt nhằm tiết kiệm thời gian chi phí tính tốn  Giúp tăng khả phân biệt khuôn mặt khác cách tối đa hóa khác biệt vector đặc trưng PCA loại  bỏ thành phần không liên quan nhiễu liệu ảnh  Có thể kết hợp phương pháp với PCA nhằm tối đa hiệu mang lại: Support Vector machine, SVD (phân tích suy biến), … 2.4.2 Nhược điểm:  Trong trường hợp sau, PCA có khả nhận dạng sai do: o PCA bỏ qua số thông tin quan trọng khuôn mặt giảm số chiều liệu, từ làm giảm độ xác việc nhận dạng o Khác điều kiện ánh sáng (khuôn mặt tối sáng) o Sự thay đổi hướng khuôn mặt (nghiêng đầu, ngước đầu…) Tên đề tài: Nêu sở lý thuyết PCA ứng dụng PCA vào nhận diện khuôn mặt o Biểu cảm (cười to, nheo mắt, há miệng…) o Khó phân biệt khn mặt có tương đồng cao hình dạng, kích thước màu sắc, khn mặt có khác biệt nhỏ đặc điểm cặp song sinh,… o Do yếu tố khác (tóc, kính, râu, q trình lão hóa, nhiễu, chất lượng hình ảnh thấp,…) gây cản trở cho việc nhận dạng CHƯƠNG III: KẾT LUẬN  Vì biết khả năng, ưu điểm nhược điểm thành viên nên chúng em bàn luận, xếp công việc phù hợp cho thành viên để hoàn thành đề tài cách tốt  Qua việc thực đề tài giúp chúng em có thêm kinh nghiệm giải toán phần mềm Python, phát triển kĩ mềm kĩ quản lý, làm việc nhóm  Đề tài giúp chúng em có tinh thần học tập, cản thiện tư duy, mở rộng hiểu biết  Về phần ứng dụng thuật toán Python: o Ưu điểm: ứng dụng rộng rãi, đảm bảo tính bảo mật, tiết kiệm thời gian, chi phí, nguồn nhân lực o  Nhược điểm: Việc thiết kế đoạn code nhiều thời gian, cơng sức, đặc biệt khó khăn cho người chưa có lượng kiến thức định lập trình Việc thiết kế đoạn code yêu cầu người thiết kế phải tỉ mỉ, xác Ngồi ra, có nhược điểm nhắc sai sót phần mềm mà ta khơng thể tránh khỏi Danh mục tài liệu tham khảo [1] Phép phân tích thành phần chính, Wikipedia tiếng Việt [2] Principal Component Analysis (PCA) in Python Tutorial , DataCamp Tên đề tài: Nêu sở lý thuyết PCA ứng dụng PCA vào nhận diện khuôn mặt 10 [3] Casey Cheng, Principal Component Analysis (PCA) Explained Visually with  Zero Math, Towards Data Science [4] StatQuest, Principal Component Analysis (PCA), Step-by-Step , YouTube [5] Principal Component Analysis (PCA) - tuyệt chiêu giảm chiều liệu , Mì AI (miai.vn) [6] Cơng thức tính kỳ vọng phương sai, limosa.vn [7] Nguyễn Thành, Phương sai gì, lamchutaichinh.vn [8] Bài 27: Principal Component Analysis, machinelearningcoban.com [9] Tuan Remy, Thuat toan pca full 24-5-2017, slideshare.net [10] Phan Ngoc, Giới thiệu Principal Component Analysis,  viblo.asia [11] Hiệp phương sai (Covariance) gì? Cơng thức tính hiệp phương sai , vietnambiz.vn [12] Standard deviation of population and sample,  khanacademy.org Tên đề tài: Nêu sở lý thuyết PCA ứng dụng PCA vào nhận diện khuôn mặt 11 PHỤ LỤC Tên đề tài: Nêu sở lý thuyết PCA ứng dụng PCA vào nhận diện khuôn mặt 12 Tên đề tài: Nêu sở lý thuyết PCA ứng dụng PCA vào nhận diện khuôn mặt 13 Tên đề tài: Nêu sở lý thuyết PCA ứng dụng PCA vào nhận diện khuôn mặt 14 Tên đề tài: Nêu sở lý thuyết PCA ứng dụng PCA vào nhận diện khuôn mặt 15 Tên đề tài: Nêu sở lý thuyết PCA ứng dụng PCA vào nhận diện khuôn mặt 16 Tên đề tài: Nêu sở lý thuyết PCA ứng dụng PCA vào nhận diện khuôn mặt 17 Tên đề tài: Nêu sở lý thuyết PCA ứng dụng PCA vào nhận diện khn mặt 18 Các file chương trình tác dụng Thư mục images: chứa thư mục mã số sinh viên chứa ảnh sinh viên đó: Thư mục images_face: chứa thư mục MSSV chứa khn mặt cắt từ images thơng qua file Face.py Thư mục test: chứa video (.mp4) dùng để chạy chuẩn đốn khn mặt Thư mục HaarCascade: chứa file giúp trích xuất đặc điểm khn mặt Tên đề tài: Nêu sở lý thuyết PCA ứng dụng PCA vào nhận diện khuôn mặt 19 File model-FaceTraining.h5: Khuôn mẫu tạo từ Train.py dùng đối chiếu chọn đối tượng xuất video (.mp4) File Face.py: #Thêm thư viện import cv2 import os face_detector = cv2.CascadeClassifier( 'haarcascades/haarcascade_frontalface_alt.xml' ) #định thức tách khuôn mặt ảnh lấy từ đường dẫn image_path lưu ảnh vào thư mục images_face def             [0] getFaces(image_path): img = cv2.imread(image_path) img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) faces = face_detector.detectMultiScale(img_gray, 1.1, 6) for (x, y, w, h) in faces: img_face = cv2.resize( img_gray[y: y + h, x: x + w],(64,64)) cv2.imwrite(img_path.replace('images', 'images_face').split('.jpg') +'.jpg', img_face) #tạo thư mục images_face if not os.path.exists('images_face'):   os.makedirs('images_face') #gọi định thức GetFace image_path = 'images' for whatelse in os.listdir(image_path):   whatelse_path = os.path.join(image_path, whatelse)   for sub_whatelse in os.listdir(whatelse_path):   img_path = os.path.join(whatelse_path, sub_whatelse)   if not os.path.isdir(whatelse_path.replace( 'images', 'images_face')):   os.mkdir(whatelse_path.replace('images', 'images_face'))   if img_path.endswith( '.jpg'):   getFaces(img_path) cv2.destroyAllWindows() File Train.py: #Thêm thư viện import numpy as np import os from PIL import Image Tên đề tài: Nêu sở lý thuyết PCA ứng dụng PCA vào nhận diện khuôn mặt 20 from from from from from from keras.models keras.layers keras.layers keras.layers keras.layers keras.layers import import import import import import Sequential MaxPooling2D Conv2D Activation Flatten Dense #trích dẫn link thư mục ảnh test ảnh train train_data = 'images_face' test_data = 'images' #gắn nhãn nhận biết đối tượng  dict = {'2311705': [1, 0, 0, 0,   '2312684': [0, 1, 0, 0,   '2313009': [0, 0, 1, 0,   '2312824': [0, 0, 0, 1,   '2310638': [0, 0, 0, 0, 0], 0], 0], 0], 1]} #định thức lấy liệu từ đường dẫn dirData lưu vào lstData def getData(dirtData, lstData):   for whatever in os.listdir(dirtData):   whatever_path = os.path.join(dirtData, whatever)   lst_filename_path = []   for filename in os.listdir(whatever_path):   filename_path = os.path.join(whatever_path, filename)   label = filename_path.split("\\")[1]   img = np.array(Image.open(filename_path))   lst_filename_path append((img, dict[label]))   lstData.extend(lst_filename_path )   return lstData #nhập liệu Xtrain từ đường dẫn train_data Xtrain = [] Xtrain = getData(train_data, Xtrain) for i in range(1,5):np.random.shuffle(Xtrain) #Model nhận diện khuôn mặt Model = Sequential() shape = (64,64, 1) Model.add(Conv2D(32,(3,3),padding="same",input_shape=shape)) Model.add(Activation( "relu")) Model.add(Conv2D(32,(3,3), padding="same")) Model.add(Activation( "relu")) Model.add(MaxPooling2D( pool_size=(2,2))) Model.add(Conv2D(64,(3,3), padding="same")) Model.add(Activation( "relu")) Model.add(MaxPooling2D( pool_size=(2,2))) Model.add(Flatten()) Model.add(Dense(512)) Model.add(Activation( "relu")) Model.add(Dense(5)) Model.add(Activation( "softmax")) Model.summary() Model.compile(loss='categorical_crossentropy' ,   optimizer='adam',   metrics=['accuracy']) #Training lưu Model print("start training") Tên đề tài: Nêu sở lý thuyết PCA ứng dụng PCA vào nhận diện khuôn mặt 21 Model.fit(np.array([x[ 0] for i, x in enumerate(Xtrain)]), np.array([x[1] for i, x in enumerate(Xtrain)]),4, epochs=20) Model.save('model-FaceTraining.h5' ) File DetectFace.py: #thêm thư viện import import import import random cv2 keras numpy as np #Khởi chạy Model lưu Train.py  face_detector = cv2.CascadeClassifier( 'haarcascades/haarcascade_frontalface_alt.xml' ) models = keras.models.load_model('model-FaceTraining.h5' ) # gán đại lượng liên quan với các đối tượng  lstResult_NAME = ['KHOI', 'PHUC', 'TAI', 'QUAN', 'DAT'] lstResult_MSSV = ['2311705', '2312684', '2313009', '2312824', '2310638'] #nhận diện khuôn mặt xuất video mp4 cam = cv2.VideoCapture('test/TAI.mp4') speed = 12 turn = while True:   turn +=   OK, frame = cam.read()   if (turn % speed == 0)or(turn % speed == 1):   faces = (face_detector.detectMultiScale(frame, 1.2, 7))   for (x, y, w, h) in faces:   Pic = cv2.resize(frame[y: y+h, x: x+w], (64, 64))   Pic_gray = cv2.cvtColor(Pic, cv2.COLOR_BGR2GRAY)   result = np.argmax(models.predict(Pic_gray.reshape(-1, 64, 64, 1)))   clr1= random.randint(0,250)   clr2 = random.randint(0, 250)   cv2.rectangle(frame, (x,y), (x+w, y+h), (clr1, clr2,0 ), 5)   cv2.putText(frame, lstResult_NAME[(result)], (x, y+h+40), cv2.FONT_HERSHEY_PLAIN, 3, (clr1, clr2, 0),4)   cv2.putText(frame, lstResult_MSSV[(result)], (x, y + h + 90), cv2.FONT_HERSHEY_PLAIN, 3, (clr1, clr2, 0), 4)   cv2.imshow('FRAME',frame)   if cv2.waitKey(1) & 0xFF == ord('q'):   break cam.release() cv2.destroyAllWindows() Tên đề tài: Nêu sở lý thuyết PCA ứng dụng PCA vào nhận diện khuôn mặt

Ngày đăng: 12/12/2023, 15:11

Tài liệu cùng người dùng

Tài liệu liên quan