Phan biệt giới tính dựa trên ảnh khuôn mặt sử dụng thuật toán kernel support vector machine

42 43 0
Phan biệt giới tính dựa trên ảnh khuôn mặt sử dụng thuật toán kernel support vector machine

Đ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

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƢỜNG ĐẠI HỌC VINH CAO THỊ THẢO LUẬN VĂN THẠC SỸ Chuyên ngành: CÔNG NGHỆ THƠNG TIN PHÂN BIỆT GIỚI TÍNH DỰA TRÊN ẢNH KHN MẶT SỬ DỤNG THUẬT TỐN KERNEL SUPPORT VECTOR MACHINE Giáo viên hƣớng dẫn: TS TRẦN XUÂN SANG Vinh, tháng năm 2018 MỤC LỤC MỤC LỤC PHẦN MỞ ĐẦU SỰ CẦN THIẾT CỦA VẤN ĐỀ NGHIÊN CỨU MỤC TIÊU NGHIÊN CỨU ĐỐI TƢỢNG VÀ PHẠM VI NGHIÊN CỨU NỘI DUNG NGHIÊN CỨU CHƢƠNG TỔNG QUAN VỀ BÀI TOÁN NHẬN DẠNG GIỚI TÍNH 1.1 TỔNG QUAN VỀ NHẬN DẠNG MẪU 1.1.1 Giới thiệu 1.1.2 Phân lớp toán nhận dạng 1.1.3 Chu trình thiết kế hệ thống nhận dạng mẫu 1.1.4 Các thuật toán nhận dạng mẫu 10 1.2 BÀI TỐN NHẬN DẠNG GIỚI TÍNH DỰA TRÊN ẢNH KHN MẶT 10 1.2.1 Giới thiệu 10 1.2.2 Hƣớng tiếp cận xây dựng hệ thống 13 1.2.3 Các bƣớc thực 13 1.2.3.3.Thuật toán huấn luyện phân lớp liệu 16 CHƢƠNG 19 THUẬT TOÁN KERNEL SUPPORT VECTOR MACHINE ỨNG DỤNG PHÂN BIỆT GIỚI TÍNH 19 2.1 GIỚI THIỆU 19 2.2 CƠ SỞ TOÁN HỌC 21 2.3 HÀM SỐ KERNEL 24 2.3.1 Tính chất hàm kerrnel 24 2.3.2 Một số hàm kernel thông dụng 24 2.4 VÍ DỤ 26 2.4.1 Cơ sở toán phân loại hoa 26 2.4.2 Tập liệu Iris Flowers 27 2.4.3 Biểu diễn tập liệu đồ thị 2D 28 2.4.4 Phân lớp sử dụng SVM với Kernel khác 29 CHƢƠNG 33 THỬ NGHIỆM NHẬN DẠNG GIỚI TÍNH VỚI ẢNH KHN MẶT 33 3.1 DỮ LIỆU THỬ NGHIỆM 33 3.2 THỬ NGHIỆM VỚI THUẬT TOÁN KERNEL SUPPORT VECTOR MACHINE 34 KẾT LUẬN 41 TÀI LIỆU THAM KHẢO 42 LỜI CẢM ƠN Sự thành công luôn gắn với hỗ trợ giúp đỡ dù hay nhiều, dù trực tiếp hay gián tiếp ngƣời khác Trong suốt thời gian từ bắt đầu học trƣờng đến nay, em nhận đƣợc nhiều quan tâm, giúp đỡ Thầy Cơ, gia đình, bạn bè Với lòng biết ơn sâu sắc nhất, em xin gửi đến quý Thầy Cô Viện Khoa học công nghệ Viện Sƣ phạm tự nhiên - Trƣờng Đại học Vinh với tri thức tâm huyết để truyền đạt vốn kiến thức quý báu cho chúng em suốt thời gian học tập trƣờng Và đặc biệt, gần tháng làm luận văn thạc sĩ này, với hƣớng dẫn nhiệt tình Thầy Cô, đặc biệt TS Trần Xuân Sang - ngƣời trực tiếp hƣớng dẫn, dành nhiều thời gian, cơng sức hƣớng dẫn em q trình thực nghiên cứu hoàn thành luận văn thời hạn Tuy có nhiều cố gắng, nhƣng luận văn khơng tránh khỏi thiếu sót Em kính mong Quý thầy cô, ngƣời quan tâm đến đề tài, đồng nghiệp, gia đình bạn bè tiếp tục có ý kiến đóng góp, giúp đỡ để luận văn đƣợc hoàn thiện hơn, phát triển Em xin chân thành cảm ơn! LỜI CAM ĐOAN Tôi xin cam đoan đề tài“Phân biệt giới tính dựa ảnh khn mặt sử dụng thuật tốn Kernel Support Vector Machine”là cơng trình nghiên cứu riêng tơi Các số liệu tài liệu luận văn trung thực chƣa đƣợc cơng bố cơng trình nghiên cứu Tất tham khảo kế thừa đƣợc trích dẫn tham chiếu đầy đủ PHẦN MỞ ĐẦU Sự cần thiết vấn đề nghiên cứu Việc nhận diện xác khn mặt đàn ông đàn bà lại phức tạp khó khăn Phụ thuộc vào việc họ xuất phạm vi quan sát cách quan sát ngƣời đối diện Nhƣ với góc quan sát khác cho kết nhận biết khơng đồng giới tính ngƣời Với phát triển thuật tốn trí tuệ nhân tạo, Tơi chọn đề tài“Phân biệt giới tính dựa ảnh khn mặt sử dụng thuật tốn Kernel Support Vector Machine”để xây dựng hệ thống cho phép máy tính tự động phân loại đƣợc giới tính dựa ảnh khuôn mặt Mục tiêu nghiên cứu Đề tài tập trung vào mục tiêu sau: - Nghiên cứu tổng quan toán phân biệt giới tính - Nghiên cứu trích chọn đặc trƣng khn mặt - Nghiên cứu cài đặt thuật toán Kernel Support Vector để phân biệt giới tính dựa ảnh khuôn mặt Đối tƣợng phạm vi nghiên cứu 3.1 Đối tƣợng nghiên cứu (a) Nghiên cứu lý thuyết - Nghiên cứu tài liệu toán phân biệt giới tính cơng bố ngồi nƣớc - Nghiên cứu chung toán nhận dạng mẫu - Nghiên cứu tài liệu trích chọn đặc trƣng khuôn mặt cho hệ thống nhận dạng - Nghiên cứu thuật toán Kernel Support Vector Machine để xây dựng hệ thống nhận dạng (b) Nghiên cứu thực nghiệm - Tìm hiểu sử dụng sở liệu ảnh khn mặt - Nghiên cứu ngơn lập trình Python cài đặt thuật toán Kernel Support Vector Machine cho tốn nhận dạng giới tính ảnh khn mặt - Đánh giá hiệu thuật toán Kernel Support Vector Machine 3.2 Phạm vi nghiên cứu Trong phạm vi luận văn này, tơi tập trung giải tốn nhận dạng giới tính sử dụng thuật tốn Kernel Support Vector Machine Nội dung nghiên cứu - Nghiên cứu tổng quan hệ thống nhận dạng giới tính ảnh khn mặt đƣợc cơng bố - Tìm hiểu thuật toán tiền xử lý để nâng cao chất lƣợng ảnh - Tìm hiểu phƣơng pháp để trích chọn đặc trƣng khn mặt - Nghiên cứu thuật tốn Kernel Support Vector Machine - Nghiên cứu ngơn ngữ lập trình Python để cài hệ thống nhận dạng - Lập trình thuật tốn máy tính đánh giá hiệu thuật toán CHƢƠNG TỔNG QUAN VỀ BÀI TỐN NHẬN DẠNG GIỚI TÍNH 1.1 Tổng quan nhận dạng mẫu 1.1.1 Giới thiệu Học máy (Machine Learning) lĩnh vực trí tuệ nhân tạo phát triển mạnh mẽ, kỹ thuật cho phép máy tính "học" Học máy đƣợc xem phƣơng pháp tạo chƣơng trình máy tính sử dụng kinh nghiệm, quan sát liệu khứ để cải thiện công việc tƣơng lai Học máy ngành nghiên cứu quan trọng trí tuệ nhân tạo với nhiều ứng dụng thành công thực tế nhƣ: - Xử lý ngôn ngữ tự nhiên - Phát nhận dạng mặt ngƣời - Lọc thƣ rác, phân loại văn bản, phân biệt giới tính nam/nữ,… Nhận dạng mẫu (pattern recognition) ngành thuộc lĩnh vực học máy (machine learning) Là tập phƣơng pháp học có giám sát (supervised learning); Trong đó, tiêu biểu có thuật tốn Support Vector Machine Trong năm gần đây, phƣơng pháp sử dụng phân loại máy hỗ trợ vector (Support Vector Machine - SVM) đƣợc quan tâm sử dụng nhiều lĩnh vực nhận dạng phân loại Đặc biệt, toán nhận dạng giới tính phƣơng pháp SVM có khả nhận dạng tốt, nhƣ nhiều ứng dụng khác 1.1.2 Phân lớp toán nhận dạng Phân lớp tiến trình xử lý nhằm xếp mẫu liệu hay đối tƣợng vào lớp đƣợc định nghĩa trƣớc Các mẫu liệu hay đối tƣợng đƣợc xếp lớp dựa vào giá trị thuộc tính (attributes) cho mẫu liệu hay đối tƣợng Sau xếp tất đối tƣợng biết trƣớc vào lớp tƣơng ứng, lớp đƣợc đặc trƣng tập thuộc tính đối tƣợng chứa lớp Bài tốn phân lớp xử lý thông tin đƣợc thu thập từ lĩnh vực hoạt động ngƣời giới tự nhiên đƣợc biểu diễn dƣới dạng bảng Bảng bao gồm đối tƣợng thuộc tính Các phần tử bảng giá trị xác định thuộc tính (attributes hay features) đối tƣợng Trong số cột số thuộc tính đối tƣợng, cột thuộc tính số dịng số đối tƣợng chứa liệu Mọi liệu đƣợc biểu diễn dƣới dạng khác đƣợc chuyển thành dạng bảng nhƣ để thực trình phân lớp 1.1.3 Chu trình thiết kế hệ thống nhận dạng mẫu Bƣớc 1: Huấn luyện Bƣớc nhằm mục đích xây dựng mơ hình xác định tập lớp liệu Mơ hình đƣợc xây dựng cách phân tích liệu sở liệu, liệu đƣợc xác định giá trị thuộc tính Giả sử liệu thuộc lớp đƣợc định nghĩa trƣớc, điều đƣợc xác định thuộc tính, gọi thuộc tính phân loại Trong ngữ cảnh toán phân loại, liệu đƣợc xem nhƣ mẫu, ví dụ, hay đối tƣợng Những liệu đƣợc phân tích để xây dựng mơ hình phân loại đƣợc lấy từ tập liệu học hay liệu huấn luyện (training data set) Những liệu riêng lẻ tạo thành tập liệu huấn luyện gọi mẫu huấn luyện (training samples) đƣợc chọn ngẫu nhiên từ kho mẫu Bƣớc 2: Kiểm tra đánh giá, bƣớc sử dụng mô hình phân lớp đƣợc xây dựng bƣớc vào việc phân lớp Trƣớc tiên, sử dụng tập mẫu đƣợc phân lớp để thử (test) gọi thử (test set) để đánh giá độ xác mơ hình Những mẫu đƣợc chọn ngẫu nhiên độc lập với mẫu đƣợc học bƣớc gọi mẫu thử (test sample) Độ xác mơ hình phân lớp dựa thử tỷ lệ mẫu thử đƣợc phân lớp mơ hình phân lớp Nghĩa với mẫu thử, so sánh lớp mà mẫu thử thuộc với lớp mà mơ hình phân lớp dự đốn cho mẫu thử Chu trình thiết kế chung đƣợc khái quát: Tập huấn luyện Thuật toán nhận dạng h X Dự đoán Y Hình 1.1 Chu trình thiết kế 1.1.4 Các thuật tốn nhận dạng mẫu Naïve Bayes (Alberto Tellaeche et al., 2008), định (decision tree) [John et al (1996), mạng noron (Liao et al (1994), máy vector hỗ trợ SVM [Neeraj Kumar et al (2012), … thuật tốn phân lớp tiêu biểu Nó có khả phân lớp cho mẫu chƣa biết dựa vào mẫu tƣơng tự đƣợc học 1.2 Bài tốn nhận dạng giới tính dựa ảnh khn mặt 1.2.1 Giới thiệu Việc phân tích trích xuất thơng tin có từ ảnh mặt ngƣời đƣợc nhà khoa học nghiên cứu từ đầu năm 90 kỷ trƣớc Điều có nhiều thơng tin có ích khai thác từ ảnh khn mặt, ví dụ nhƣ danh tính, giới tính, cảm xúc, cử tƣơng tác, dân tộc, tình trạng sức khỏe,… Trong số thơng tin suy từ ảnh mặt ngƣời, giới tính thuộc tính quan trọng có nhiều ứng dụng thực tế, ví dụ nhƣ tƣơng tác ngƣời máy, quảng cáo có định hƣớng, thống kê dân số Một hệ thống nhận dạng giới tính (gender recognition) từ ảnh mặt ngƣời, đƣợc gọi hệ thống phân lớp giới tính (gender classification), 10 đồ với thƣ viện matplotlib Chúng ta thử biểu diễn đồ thị xem tập liệu mà đƣa vào máy tính 2.4.3 Biểu diễn tập liệu đồ thị 2D Tập liệu hoa tập hợp 150 điểm liệu tƣơng ứng với 150 hoa Chúng ta lấy chúng từ datasets hàm sau: defgetData(): # Get iris data from datasets iris = datasets.load_iris() return iris Lúc có tập hợp điểm liệu Mỗi điểm liệu bao gồm thuộc tính nhƣ nói Tuy nhiên để biểu diễn đồ thị hai chiều cần phải giảm bớt số thuộc tính biểu diễn Ở giả sử chọn hai thuộc tính độ rộng chiều cao đài hoa Chúng ta có hàm xử lý vẽ đồ thị 2D nhƣ sau: defget2DPlot(iris): X = iris.data[:,:2]# Lấy hai thuộc tính Y = iris.target X_min, X_max = X[:,0].min()-.5, X[:,0].max()+.5 Y_min, Y_max = X[:,1].min()-.5, X[:,1].max()+.5 plt.figure(2, figsize=(8,6)) plt.clf() # Biểu diễn tập liệu huấn luyện đồ plt.scatter(X[:,0], X[:,1], c=Y, cmap=plt.cm.Paired) plt.xlabel('Sepal length') plt.ylabel('Sepal width') plt.xlim(X_min, X_max) 28 plt.ylim(Y_min, Y_max) plt.xticks(()) plt.yticks(()) plt.show() Vàđây kết quả: Chúng ta thấy đƣợc điểm liệu với hai thuộc tính đồ thị hai chiều Các điểm đƣợc phân biệt mắt thƣờng với màu khác Tuy nhiên muốn máy tính phân biệt đƣợc nhƣ nhìn thấy lại tìm hiểu thêm 2.4.4 Phân lớp sử dụng SVM với Kernel khác Với tập liệu Iriscần phân loại hoa thành lớp liệu Sử dụng SVM với phƣơng pháp khác cho hiệu phân lớp khác Cũng tƣơng tự nhƣ trên, xem xét đến thuộc tính tập liệu, tức phân lớp không gian chiều Chúng ta sử dụng Kernel khác bao gồm: ‐ SVC with linear kernel ‐ LinearSVC (linear kernel ‐ SVC with RBF kernel 29 ‐ SVC with polynomial (degree 3) kernel Đầu tiên cần huấn luyện liệu: X = iris.data[:,:2]# lấy hai thuộc tính tập liệu để tiện quan sát đồ thị hai chiều y = iris.target h =.02# hiệu chỉnh độ mỏng lưới tọa độ đồ thị Càng nhỏ sắc nét # we create an instance of SVM and fit out data We not scale our # data since we want to plot the support vectors C =1.0# SVM regularization parameter svc = svm.SVC(kernel='linear', C=C).fit(X, y) rbf_svc = svm.SVC(kernel='rbf', gamma=0.7, C=C).fit(X, y) poly_svc = svm.SVC(kernel='poly', degree=3, C=C).fit(X, y) lin_svc = svm.LinearSVC(C=C).fit(X, y) Tiếp theo việc đẩy mơ hình thu đƣợc vào đồ thị # title for the plots titles =['SVC with linear kernel', 'LinearSVC (linear kernel)', 'SVC with RBF kernel', 'SVC with polynomial (degree 3) kernel'] for i, clf inenumerate((svc, lin_svc, rbf_svc, poly_svc)): # Plot the decision boundary For that, we will assign a color to each # point in the mesh [x_min, x_max]x[y_min, y_max] plt.subplot(2,2, i +1) plt.subplots_adjust(wspace=0.4, hspace=0.4) 30 Z = clf.predict(np.c_[xx.ravel(), yy.ravel()]) # Put the result into a color plot Z = Z.reshape(xx.shape) plt.contourf(xx, yy, Z, cmap=plt.cm.coolwarm, alpha=0.8) # Plot also the training points plt.scatter(X[:,0], X[:,1], c=y, cmap=plt.cm.coolwarm) plt.xlabel('Sepal length') plt.ylabel('Sepal width') plt.xlim(xx.min(), xx.max()) plt.ylim(yy.min(), yy.max()) plt.xticks(()) plt.yticks(()) plt.title(titles[i]) plt.show() Bây sau vẽ đồ thị so sánh hiệu phân lớp Kernel khác Kết nhƣ sau: 31 Bằng việc phân lớp chia mặt phẳng tọa độ thành phần khác Khi có điểm liệu dựa vào tọa độ chúng để phán đốn xem thuộc lớp 32 CHƢƠNG THỬ NGHIỆM NHẬN DẠNG GIỚI TÍNH VỚI ẢNH KHUÔN MẶT 3.1 Dữ liệu thử nghiệm Sau hồn thành giai đoạn trích chọn đặc trƣng ảnh, chọn thuật toán huấn luyện phân lớp liệu ảnh Trong phần cài đặt thực nghiệm, lựa chọn thuật toán huấn luyện nhận dạng liệu SVM [Cortes and Vapnik (1995)] Để phát triển ứng dụng phân biệt Nam/Nữ sử dụng thƣ viện mã nguồn mở LibSVM (Chang and Lin (2011) Với thƣ viện LiBSVM thực huấn luyện liệu (training) sử dụng lệnh svmtrain model = svmtrain(training_label_vector, training_instance_matrix, 'libsvm_options'); Trong libsvm_options có lựa chọn: - s svm_type: thiết lập kiểu SVM (mặc định 0–C-SVC (multi-class classification); - t kernel_type: thiết lập kiểu cho hàm (mặc định 2-RBF) - c cost: thiết lập tham số C C-SVC, epsilon-SVR, nu-SVR (mặc định 1); - g gamma: thiết lập giá trị gama cho hàm nhân (mặc định 1/số thuộc tính) Và để thực phân lớp liệu sử dụng lệnh svmpredict [predicted_label, accuracy, decision_values/prob_estimates] = svmpredict(testing_label_vector, testing_instance_matrix, model, 'libsvm_options'); Trong đó: 33 - model cấu trúc mơ hình svmtrain libsvm_options với: - bƣớc_lƣợng_xác_suất: dự đốn ƣớc tính xác suất (mặc định 0); - q: cách thức tĩnh (không đầu ra); - predicted_label: vector dự đoán đầu ra; - accuracy: vector với độ xác, tổng bình phƣơng lỗi, hệ số tƣơng quan bình phƣơng; - prob_estimates: đƣợc chọn có vector ƣớc lƣợng xác suất 3.2 Thử nghiệm với thuật toán Kernel Support Vector Machine Bộ sở liệu bao gồm 4000 ảnh màu tƣơng ứng với khuôn mặt 126 ngƣời (70 nam, 56 nữ) Với ngƣời, 26 ảnh đƣợc chụp điều kiện ánh sáng khác nhau, sắc thái biểu cảm khn mặt khác nhau, bị che mắt (bởi kính râm) miệng (bởi khăn); đƣợc chụp hai thời điểm khác cách tuần Để cho đơn giản, sử dụng sử AR Face thu gọn (có thể tìm thấy trang web phía trên, mục Other (relevant) downloads) Bộ sở liệu thu gọn bao gồm 2600 ảnh từ 50 nam 50 nữ Hơn nữa, khuôn mặt đƣợc xác định xác đƣợc cropped với kích thƣớc 165 x 120 (pixel) phƣơng pháp đƣợc mô tả báo PCA veus LDA Tôi xin bỏ qua phần xử lý trực tiếp sử dụng ảnh cropped nhƣ số ví dụ dƣới đây: Mỗi ảnh AR Face thu gọn đƣợc đặt tên dƣới dạng G-xxxyy.bmp Trong đó: G nhận hai giá trị M (man) W (woman); xxx id ngƣời, nhận gía trị từ 001 đến 050; yy điều kiện chụp, nhận giá trị 34 từ 01 đến 26, điều kiện có số thứ tự từ 01 đến 07 từ 14 đến 20 khuôn mặt không bị che kính khăn Tơi tạm gọi điều kiện view Để làm ví dụ cho thuật kernel SVM, lấy ảnh 25 nam 25 nữ làm tập training set; 25 nam 25 nữ lại làm test set Với ngƣời, lấy khuôn mặt không bị che kính khăn Feature Extraction: ảnh có kích thƣớc 3x165x120 (số channels 3, chiều cao 165, chiều rộng 120) số lớn nên ta làm thực Feature Extraction hai bƣớc đơn giản sau: Chuyển ảnh màu ảnh xám theo công thức Y' = 0.299 R + 0.587 G + 0.114 B (Xem thêm Grayscale - wiki) Kéo dài ảnh xám thu đƣợc thành vector hàng có số chiều 165x120, sau sử dụng random projection matrix để giảm số chiều 500 Bạn đọc thay giá trị số khác nhỏ 1000 Làm việc với Python Khai báo thƣ viện sklearn.svm.SVC import numpy as np from sklearn import linear_model # for logistic regression from sklearn.metrics import accuracy_score # for evaluation from scipy import misc # for loading image np.random.seed(1) # for fixing random values Phân chia training set test set, lựa chọn views path = ' /data/AR/' # path to the database train_ids = np.arange(1, 26) test_ids = np.arange(26, 50) view_ids = np.hstack((np.arange(1, 8), np.arange(14, 21))) Tạo random projection matrix 35 D = 165*120 # original dimension d = 500 # new dimension # generate the projection matrix ProjectionMatrix = np.random.randn(D, d) Xây dựng danh sách tên files def build_list_fn(pre, img_ids, view_ids): """ INPUT: pre = 'M-' or 'W-' img_ids: indexes of images view_ids: indexes of views OUTPUT: a list of filenames """ list_fn = [] for im_id in img_ids: for v_id in view_ids: fn = path + pre + str(im_id).zfill(3) + '-' + \ str(v_id).zfill(2) + '.bmp' list_fn.append(fn) return list_fn Feature Extraction: Xây dựng liệu cho training set test set def rgb2gray(rgb): # Y' = 0.299 R + 0.587 G + 0.114 B return rgb[:,:,0]*.299 + rgb[:, :, 1]*.587 + rgb[:, :, 2]*.114 # feature extraction def vectorize_img(filename): 36 # load image rgb = misc.imread(filename) # convert to gray scale gray = rgb2gray(rgb) # vectorization each row is a data point im_vec = gray.reshape(1, D) return im_vec def build_data_matrix(img_ids, view_ids): total_imgs = img_ids.shape[0]*view_ids.shape[0]*2 X_full = np.zeros((total_imgs, D)) y = np.hstack((np.zeros((total_imgs/2, )), np.ones((total_imgs/2, )))) list_fn_m = build_list_fn('M-', img_ids, view_ids) list_fn_w = build_list_fn('W-', img_ids, view_ids) list_fn = list_fn_m + list_fn_w for i in range(len(list_fn)): X_full[i, :] = vectorize_img(list_fn[i]) X = np.dot(X_full, ProjectionMatrix) return (X, y) (X_train_full, y_train) = build_data_matrix(train_ids, view_ids) x_mean = X_train_full.mean(axis = 0) x_var = X_train_full.var(axis = 0) def feature_extraction(X): return (X - x_mean)/x_var X_train = feature_extraction(X_train_full) 37 X_train_full = None ## free this variable (X_test_full, y_test) = build_data_matrix(test_ids, view_ids) X_test = feature_extraction(X_test_full) X_test_full = None Trong đoạn code tơi có sử dụng phƣơng pháp chuẩn hóa liệu Standardization Trong x_mean x_var lần lƣợt vector kỳ vọng phƣơng sai toàn liệu training X_train_full, X_test_full ma trận liệu đƣợc giảm số Hàm feature_extraction giúp chiều chuẩn nhƣng chƣa hóa đƣợc chuẩn liệu hóa dựa vào x_mean x_var X_train_full Đoạn code dƣới thực thuật toán Kernel SVM, dự đoán output test data đánh giá kết import scipy.io as sio from sklearn.svm import SVC A = sio.loadmat('myARgender.mat') X_train = A['Y_train'].T X_test = A['Y_test'].T N = 700 y_train = A['label_train'].reshape(N) y_test = A['label_test'].reshape(N) clf = SVC(kernel='poly', degree = 3, gamma=1, C = 100) clf.fit(X_train, y_train) y_pred = clf.predict(X_test) print("Accuracy: %.2f %%" %(100*accuracy_score(y_test, y_pred))) Kết đạt đƣợc: 38 Accuracy: 92.86 % Để xác định nhãn ảnh, đầu hàm sigmoid đƣợc so sánh với 0.5 Nếu giá trị lớn 0.5, ta kết luận ảnh nam, ngƣợc lại, ảnh nữ Để xem giá trị sau hàm sigmoid (tức xác suất để ảnh nam), sử dụng hàm predict_proba nhƣ sau: def feature_extraction_fn(fn): """ extract feature from filename """ # vectorize im = vectorize_img(fn) # project im1 = np.dot(im, ProjectionMatrix) # standardization return feature_extraction(im1) fn1 = path + 'M-036-18.bmp' fn2 = path + 'W-045-01.bmp' fn3 = path + 'M-048-01.bmp' fn4 = path + 'W-027-02.bmp' x1 = feature_extraction_fn(fn1) p1 = logreg.predict_proba(x1) print(p1) x2 = feature_extraction_fn(fn2) p2 = logreg.predict_proba(x2) print(p2) x3 = feature_extraction_fn(fn3) 39 p3 = logreg.predict_proba(x3) print(p3) x4 = feature_extraction_fn(fn4) p4 = logreg.predict_proba(x4) print(p4) [[ 0.87940218 [[ 0.0172217 0.12059782]] 0.9827783]] [[ 0.30458761 0.69541239]] [[ 0.83989242 0.16010758]] Kết thu đƣợc xác suất để ảnh ảnh nam (cột thứ nhất) nữ (cột thứ hai) Dƣới hình minh họa: Hình 3.1 Kết tìm đƣợc 40 KẾT LUẬN Kết đạt đƣợc Trong q trình thực đề tài, tơi đạt đƣợc kết sau: - Tìm hiểu đƣợc kiến thức nhận dạng mẫu; - Tìm hiểu đƣợc thuật tốn phân nhóm Kernel Support Vector Machine; - Thử nghiệm thuật toán Kernel Support Vector Machine vào toán nhận dạng giới tính dựa vào ảnh khn mặt Hƣớng phát triển Trong thời gian tới, Tôi tiếp tục nghiên cứu thuật toán phân lớp khác để đánh giá hiệu áp dụng vào toán nhận dạng giới tính dựa vào ảnh khn mặt 41 TÀI LIỆU THAM KHO 1] Schăolkopf, B., A Smola, R C.Williamson, and P L Bartlett (2000) “New support vector algorithms” Neural Computation 12(5), 1207–1245 [2] Christopher M Bishop “Pattern Recognition And Machine Learning “Springer 2006 [3] Vũ Hữu Tiệp, “Machine Learning bản’ (2017) [4] Geoff Gordon, “Support Vector Machines andKernel Methods”, June 15, 2004 [5] Hoàng Hữu Việt, “Nhận dạng mẫu’, Đại học Vinh [6] Bill Freeman, MIT, “Supervised object recognition,unsupervised object recognition then Perceptual organization”, 6.869 April 12, 2005 [7] Duda, Richard O., Peter E Hart, and David G Stork “Pattern classification”, John Wiley & Sons, 2012 [8] Bennett, K P (1992) “Robust linear programming discrimination of two linearly separable sets” Optimization Methods and Software 1, 23–34 [9] LIBSVM – A Library for Support Vector Machines 42 ... hiểu sử dụng sở liệu ảnh khuôn mặt - Nghiên cứu ngơn lập trình Python cài đặt thuật toán Kernel Support Vector Machine cho toán nhận dạng giới tính ảnh khn mặt - Đánh giá hiệu thuật toán Kernel Support. .. việc phân loại giới tính (nam/nữ) dựa vào ảnh khn mặt Chi tiết thuật tốn đƣợc trình bày chƣơng 18 CHƢƠNG THUẬT TOÁN KERNEL SUPPORT VECTOR MACHINE ỨNG DỤNG PHÂN BIỆT GIỚI TÍNH 2.1 Giới thiệu Hiện... phân lớp sử dụng máy vectơ hỗ trợ SVM cho toán phân biệt giới tính Nam/Nữ Hình 1.5 Mơ hìnhphân biệt giới tính Nam/Nữ từ ảnh khn mặt Trong đề tài này,Tơi chọn thuật tốn kernel support vector machine

Ngày đăng: 01/08/2021, 11:42

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

Tài liệu liên quan