Bảng 2.1: Các lệnh sử dụng trong chương trình.
Size(A) Trả về một vector hàng có các phần tử chứa chiều dài của kích thước tương ứng A.
Eig(A) Trả về một vector cột chứa các giá trị riêng của ma trận vuông A.
dir(A) Dir liệt kê các tệp và thư mục trong thư mục A.
strcat('A',str,'B') Nối chuỗi kí tự A, chuối str, chuỗi B thành 1 chuỗi.
rgb2gray(img) Trả về một ảnh mức độ màu xám tương đương với ảnh gốc.
reshape Trả về giá trị ghép nối của hai ma trận tương ứng.
imread Đọc hình ảnh từ tệp được chỉ định theo tên tệp.
imshow Imshow tối ưu hóa hình, trục và các thuộc tính đối tượng hình ảnh để hiển thị hình ảnh.
load TestImage Tải dữ liệu từ tên tệp.
regexprep Hàm regexprep trả về văn bản cập nhật trong newStr.
uigetfile Trả về tên tệp và đường dẫn đến tệp khi người dùng nhấp vào Mở.
Imresize(B,[a b]) Trả về hình ảnh B có số hàng và cột được chỉ định bởi vector hai phần tử [a b].
writetable Ghi vào một tệp có tên và phần mở rộng được chỉ định bởi tên tệp.
imwrite Ghi dữ liệu hình ảnh vào tệp được chỉ định theo tên tệp.
2.3. Kết luận
Nhận dạng khuôn mặt là một bài toán được nghiên cứu rộng rải trong khoảng thời gian gần đây. Nhận dạng khuôn mặt có thể áp dụng trong nhiều lĩnh vực khác nhau, rát nhiều ứng dụng cốt lõi, quan trọng.
Hiện nay bài toán gặp nhiều thách thức như hệ thống camera công cộng, chụp hình...hình ảnh khuôn mặt có thể bị che khuất một phần, ảnh chụp không chính diện hay chất lượng hình ảnh kém ảnh hưởng không nhỏ tới việc ứng dụng các thuật toán để nhận diện khuôn mặt.
Hiện nay các phương pháp nhận dạng mặt được chia thành nhiều hướng theo các tiêu chí khác nhau, phương pháp tiếp cận cũng khác nhau. Đề tài này nghiên cứu về phương pháp PCA, một phương pháp tiếp cận toàn cục.
CHƯƠNG 3: GIỚI THIỆU GIAO DIỆN CHƯƠNG TRÌNH VÀ CODE NGUỒN. 3.1. Bài toán.
Trong chương này của Đồ án xây dựng chương trình giải quyết vấn đề sau:
Đầu vào: Là ảnh (video) được lấy từ camera điện thoại.
Đầu ra: Chương trình nhận dạng đưa ra ảnh và thông tin về người đó.
3.2. Phân tích chương trình
3.2.1. Xây dựng cơ sở dữ liệu.
Tập dữ liệu được chia làm hai tập chính là tập luyện (training) và tập thử nghiệm (testing). Mỗi gương mặt đều xuất hiện mười lần trong mỗi tập với các tư thế khác nhau và góc chụp khác nhau.
Tập ảnh luyện ( Training):
Tập ảnh thử nghiệm (Testing):
Hình 3.2: Một phần của tập ảnh thử nghiệm
Xét về mặt kỹ thuật, các ảnh đều được chuẩn hóa về ảnh màu có cùng kích thước 200x180 điểm ảnh.
3.2.2. Huấn luyện.
Lưu đồ thuật toán như sau:
9: Kết Thúc 7: Chọn thông số đặc trưng PCA (eigenface) 5: Tính sai số Փi từng ảnh so với ma trận trun bình 3: Đưa về mức ảnh xám, thiết lập vector 1 chiều Γi 1: Bắt đầu 8: Biểu diễn các ảnh trong không 6: Tính trị riêng λi và vector riêng ui từ ma trận 4: Tính ma trận trung bình ψ 2: Đọc ảnh từ tập huấn luyện
3.2.3. Nhận dạng khuôn mặt.
Đưa ảnh có một khuôn mặt của người nào đó đã được chuẩn hóa. Ta có lưu đồ thuật toán nhận dạng khuôn mặt:
Hình 3.4: Lưu đồ thuật toán nhận dạng khuôn mặt
3.3. Thiết kế chương trình
3.3.1. Giao diện chương trình
Đọc ảnh Γ từ tập thử nghiệm
Chuẩn hoá, tính sai số Փ của ảnh so với
trung bình
Biểu diễn ảnh trong không gian trị riêng Bắt đầu
Tính khoảng cách ei
trong không gian mặt
So sánh với khoảng cách ngưỡng Ti
Kết thúc Đưa ra ảnh Γi tương ứng
Không có ảnh phù hợp
Giao diện thứ nhất:
Hình 3.5: Giao diện thứ nhất của chương trình
Giao diện thứ nhất giao diện gồm:
START: là “button” giúp liên kết hai giao diện thứ nhất và giao diện chính với nhau.
DEMO: là “button” giúp liên kết hai giao diện thứ nhất và thứ 2 với nhau, thực hiện chức năng đóng giao diện thứ nhất và mở lên giao diện thứ hai.
CLOSE: là “button” cho phép đóng trương trình, kết thúc quá trình mô phỏng.
Giao diện thứ hai:
Hình 3.6: Giao diện thứ hai của chương trình
Giao diện thứ hai giao diện gồm:
AXES: vùng hiển thị ảnh (như trên hình).
IP ADDRESS: trường “edit text” cho phép bạn nhập dữ liệu địa chỉ Ip của camera muốn nhận diện vào để thự hiện quá trình lấy hình ảnh, video.
NAME: trường “edit text” cho phép bạn nhập dữ liệu “Tên đối tượng” để thực hiện quá trình lưu dữ liệu vào cơ sở dữ liệu; đồng thời đây cũng là trường để xuất dữ liệu “ Tên đối tượng” sau khi thực hiện quá trình nhận diện.
AGE: trường “edit text” cho phép bạn nhập dữ liệu “Tuổi” để thực hiện quá trình lưu dữ liệu vào cơ sở dữ liệu; đồng thời đây cũng là trường để xuất dữ liệu “ Tuổi” sau khi thực hiện quá trình nhận diện.
mô phỏng.
ADD IP: là “ button” thực hiện chức năng lấy dữ liệu data hình ảnh và video từ camera có địa chỉ IP từ trường “edit text” IP ADDRESS sau đó thực hiện quá trình hiển thị lên vùng heienr thị AXES.
DEMO: là “button” giúp liên kết hai giao diện thứ nhất và thứ 2 với nhau, thực hiện chức năng đóng giao diện thứ nhất và mở lên giao diện thứ hai.
ADD: là “button” thực hiện quá trình lưu dữ liệu của 2 trường “edit text” NAME và AGE, đồng thời lưu dữ liệu hình ảnh từ địa chỉ IP ADDRESS đã được hiển thị trên vùng AXES.
SEARCH: là “button” thực hiện chức năng nhận diện đối tượng đang hiển thị trên AXES, sau đó trích suất thông tin lên hai trường “edit text” NAME và AGE.
START: là “button” giúp liên kết hai giao diện thứ nhất và giao diện chính với nhau.
Giao diện thứ ba,giao diện gồm:
BACK: là “button” thực hiện chức năng kết nối hai giao diện, khi ấn nút, giao diện sẽ được chuyển về giao diện thứ nhất đồng thời đóng lại giao diện thứ ba.
START: là “button” giúp liên kết hai giao diện thứ ba và giao diện thứ tư với nhau.
Giao diện thứ tư:
Hình 3.8: Giao diện thứ tư của chương trình
Giao diện thứ tư giao diện gồm:
AXES: hai vùng hiển thị ảnh (như trên hình).
NAME: trường “edit text” cho phép bạn nhập dữ liệu “Tên đối tượng” để thực hiện quá trình lưu dữ liệu vào cơ sở dữ liệu; đồng thời đây cũng là trường để xuất dữ liệu “ Tên đối tượng” sau khi thực hiện quá
hiện quá trình lưu dữ liệu vào cơ sở dữ liệu; đồng thời đây cũng là trường để xuất dữ liệu “ Tuổi” sau khi thực hiện quá trình nhận diện. START: là “button” giúp liên kết hai giao diện thứ ba và giao diện thứ
tư với nhau.
BROWSE: là “button” thực hiện chức năng mở ảnh, sau khi ấn nút, trương trình sẽ mở thư mục chưa tệp tin để người dùng lựa chọn để chạy thử ứng dụng; sau đó hiển thị lên trên vùng AXES.
SEARCH: là “button” thực hiện chức năng nhận diện đối tượng đang hiển thị trên AXES, sau đó trích suất thông tin lên hai trường “edit text” NAME và AGE.
BACK: là “button” thực hiện chức năng kết nối hai giao diện, khi ấn nút, giao diện sẽ được chuyển về giao diện thứ nhất đồng thời đóng lại giao diện thứ tư.
3.3.2. Hoạt động của chương trình
Tạo cơ sở dữ liệu cho chương trình
Để tạo dữ liệu cần thực hiện các thao tác sau trước khi sử dụng Button ADD để khởi chạy việc lưu CSDL:
B1: Nhập địa chỉ IP ADDRESS của camera và nhấn ADD IP B2: Nhập tên của đối tượng vào trường edit text “Họ Tên”. B3: Nhập ngày tháng năm sinh vào trường “Ngày sinh”.
B4: Ấn “ADD” để hệ thống lưu tự động các thông tin của đối tượng.
Kết quả sau 4 bước như sau:
Hình 3.9: Hoàn tất quá trình nhập dữ liệu
Chương trình đưa ra số thứ tự các ảnh mặt được lưu lại. Nhận dạng.
Đưa dữ liệu hình ảnh, video vào nhận dạng: Nhập địa chỉ IP camera.
Hình 3.10: Kết nối địa chỉ IP camera cho chương trình
Video, hình ảnh được hiển thị tại vùng AXES trên giao diện. Nhận dạng khuôn mặt chọn nút “START” để nhận dạng.
Chương trình đối sánh ảnh đưa vào với các ảnh trong cơ sở dữ liệu. Nếu nhận dạng được sẽ đưa ra ảnh và thông tin về người đó:
Mô phỏng.
Bắt đầu quá trình mô phỏng, chọn ấn “DEMO” giao diện xuất hiện như sau:
Hình 313: Giao diện DEMO.
Nhập ảnh từ tập huấn luyện. Ấn nút “BROWSE” ta có giao diện cửa sổ “Select the test image” xuất hiện chọn ảnh cần nhận dạng từ tập thử nghiệm (file có định dạng “*.jpg”). Chọn OK:
Sau khi chọn ảnh, giao diện như sau
Hình 3.15: Giao diện sau khi chọn ảnh.
Thực hiện quá trình chạy thử, ta ấn nút “SEARCH” chương trình sẽ chạy như sau:
Hình 3.16: Quá trình chạy thử.
Kết quả thu được:
Đồ án tốt nghiệp đã trình bày chi tiết, cụ thể về nhận dạng khuôn mặt người dựa trên kỹ thuật PCA. Và xây dựng chương trình thử nghiệm để đánh giá kết quả của việc sử dụng kỹ thuật PCA để nhận dạng, từ thực nghiệm ta cũng thu được một số kết quả cũng như đánh giá về thuật toán sử dụng. Các kết quả đạt được cho thấy độ chính xác của chương trình tương đối cao khoảng 97% nhận dạng đúng. Tuy nhiên, do thời gian có hạn cộng thêm khối lượng công việc lớn nên vẫn còn một số vấn đề và ý tưởng mà luận văn chưa thực hiện được.
Nhằm cải thiện khả năng hoạt động của chương trình, chương trình sẽ có thêm chức năng nhận dạng mặt người qua đoạn video hoặc webcam.
Ý tưởng đưa ra là nhập vào một đoạn video hay hình ảnh trực tiếp từ webcam. Đoạn video hay hình ảnh webcam này có thể mô tả một người với khung nền biến đổi hoặc là một người giữa đám đông. Sau đó chương trình sẽ phát hiện và khoanh vùng vị trí của khuôn mặt trong khung hình và truy xuất cơ sở dữ liệu và đưa ra thông tin về người đó.
Đó là ý tưởng phát triển trong tương lai của Đồ án. Hiện tại, chương trình thực hiện được hai chức năng là đưa vào đoạn video và chạy nó. Chương trình thử nghiệm được xây dựng trên thẻ tab webcam của chương trìnhTuy nhiên trong quá trình hiện thực hóa ý tưởng chương trình gặp khó khăn như:
Giao tiếp webcam: làm thế nào để khi bật nút webcam thì chương trình tự động đưa hình ảnh từ webcam vào khung hình. Đây là vấn đề thuộc về giao tiếp phần cứng.
Phát hiện khoanh vùng khuôn mặt trong khung hình video có nhiều đối tượng xung quanh hay giữa đám đông nhiều người. Để giải quyết được vấn đề này cần kết hợp thuật toán nhận dạng bằng mạng noron (Neural Network) nhằm phát hiện và khoanh vùng khuôn mặt trong đó.
3.5. Đánh giá khoảng cách đến ảnh khi số lượng vector đặc trưng thay đổi. đổi.
Tính toán khoảng cách đến ảnh và đến không gian ảnh, khi số lượng đặc trưng mặt K (eigenface) thay đổi. Điều này sẽ dẫn tới sự thay đổi về mặt thời gian cũng như độ chính xác của chương trình.
Để đánh giá được điều này, chia ảnh thử nghiệm làm ba loại: Ảnh mặt của người mà mặt người đó có trong tập ảnh luyện
Ảnh mặt của người mới mà người đó không xuất hiện trong tập ảnh luyện
Ảnh bất kì (không phải là mặt)
Với mỗi loại ảnh thử nghiệm, đều tính toán hai khoảng cách Khoảng cách đến ảnh mặt gần nhất trong tập luyện Khoảng cách đến không gian mặt
Các khoảng cách là khoảng cách trung bình của cả tập thử nghiệm tương ứng với mỗi loại với mỗi loại.
Kết quả thực nghiệm trong Bảng 3.1:
Bảng 3.1: Khoảng cách thay đổi theo số lượng eigenfaces. Số lượng Eigenfaces Khoảng từ ảnh được xác
định vào cơ sở dữ liệu
Khoảng cách tối thiểu giữa 2 hình ảnh Ảnh khuôn mặt nằm trong tập huấn luyện.
1 21730 42738722
2 20530 45682074
3 19510 35920406
4 17605 37594628
Ảnh mới, không có trong tập huấn luyện.
1 33377 41883948
2 86226 99568770
3 81942 82616934
4 73941 86467644
Quan sát kết quả thu được, ta có một số nhận xét sau:
Khoảng cách tới ảnh luyện gần nhất tăng theo số lượng eigenface; điều này là hoàn toàn chính xác vì khi số lượng eigenface tăng, nghĩa là ta đã đưa ảnh (chiếu ảnh) vào không gian mặt nhiều chiều hơn, vì thế tính chi tiết, tính phân biệt ảnh cao hơn dẫn đến khoảng cách tới ảnh gần nhất tăng lên.
Khoảng cách tới không gian ảnh giảm theo số lượng eigenface. Điều này tuy trái ngược với chiều tăng của khoảng cách tới ảnh luyện gần nhất, nhưng nó cũng có cùng nguyên nhân ở trên. Đó là do không gian ảnh được mở rộng, các lỗi dư thừa được loại bỏ. So sánh ảnh có khuôn mặt thuộc tập luyện và ảnh khuôn mặt mới.
Khoảng cách tới không gian mặt thì không có sự khác nhau nhiều. Tuy nhiên khoảng cách tới ảnh gần nhất thì có sự chênh lệch nhất định giữa hai loại ảnh: khuôn mặt mới luôn có khoảng cách lớn hơn khuôn mặt nằm trong tập luyện.
So sánh ảnh mặt và ảnh bất kì. Chúng ta có thể thấy sự khác biệt khoảng cách đến không gian mặt của hai loại ảnh là rất rõ ràng. Không gian đặc trưng cho ảnh mặt sẽ không biểu diễn đúng cho ảnh bất kì và vì thế khoảng cách là lớn hơn rất nhiều.
3.6. Đánh giá độ chính xác của chương trình
Ảnh thử nghiệm được chia làm bốn loại: ảnh trong chính tập luyện, ảnh mặt chưa luyện nhưng có trong tập luyện, gương mặt mới và cuối cùng là ảnh bất
Kết quả trả ra là số lượng các ảnh được nhận dạng, không nhận dạng ra mặt và không phải là mặt.
Kết quả thực nghiệm cụ thể trong Bảng 3.2:
Bảng 3.2: Độ chính xác theo số lượng eigenface Số lượng Eigenfaces Nhận ra Không nhận ra Không phải mặt Tổng số Ảnh trong chỉnh tập ảnh huấn luyện
1 35 0 0 35
2 35 0 0 35
3 35 0 0 35
4 35 0 0 35
Ảnh không nằm trong tập luyện ảnh
1 18 5 0 25 2 20 6 0 25 3 21 4 0 25 4 23 5 0 25 Khuôn mặt mới 1 4 20 0 25 2 5 18 0 25 3 7 17 0 25 4 5 18 0 25 Ảnh bất kì 1 0 0 10 10 2 0 0 10 10 3 0 0 10 10 4 0 0 10 10 3.7. Kết luận.
Từ bảng thực nghiệm cho thấy :
Việc phân biệt ảnh có mặt với ảnh không có mặt (ảnh bất kỳ) đạt được độ chính xác khá cao ngay cả khi thay đổi số lượng eigenface.
Khi số lượng eigenface càng lớn thì khả năng nhận dạng của chương trình càng cao.
Qua đây ta có thể rút ra kết luận rằng để tăng độ chính xác của phương pháp nhận dạng, ta cần phải tiến hành tiền xử lý ảnh: chuẩn hóa ảnh mặt theo góc nghiêng, hướng nhìn, điều kiện ánh sáng cũng như ảnh nền.
KẾT LUẬN CHUNG
Phạm vi giới hạn của đề tài.
Do thời gian tiến hành nghiên cứu tài liệu tham khảo có hạn. Đề tài “Nhận dạng khuôn mặt bằng phương pháp PCA” chỉ sử dụng một thuật toán duy nhất là thuật toán PCA. Nên làm cho chương trình nhận dạng phụ thuộc rất nhiều vào tập huấn luyện, vị trí các khuôn mặt trong hình. Trong quá trình chạy chương trình các ảnh được xử lý tạo ra như: ảnh trung bình, ảnh-ảnh trung bình, eigenface không được lưu lai. Nên khi chạy lại chương trình các ảnh trên sẽ được khỏi tạo lai từ đầu.
Hướng mở rộng của đề tài.
Đề tài có thể được phát triển thành một phần mềm nhận dạng mặt người tốt hơn, bằng cách kết hợp với một số thuật toán nhận dạng và xử lý ảnh hiện đại hơn. Cho ra kết quả chính xác hơn. Có thể phát triển thành nhiều đề tài khác có liên quan tới xử lí ảnh số.
TÀI LIỆU THAM KHẢO
[1] Các khái niệm cơ bản về ảnh , 1/5/2018.