Ma trận hiệp phương sai của tất cả các điểm landmark

Một phần của tài liệu BẮT cử ĐỘNG KHUÔN mặt QUA VIDEO và áp lên mô HÌNH 3d (Trang 50)

3.2.3 Tìm điểm đặc trưng của khn mặt trên ảnh:

a. Shape khởi tạo:

Như những phần trước đã trình bày, ta tìm kiếm các điểm đặc trưng của khn mặt dựa trên shape khởi tạo. Vì vậy, việc tạo shape khởi tạo là hết sức quan trọng. Shape khởi tạo càng chính xác bao nhiêu, thì việc tìm kiếm các điểm đặc trưng càng chính xác bấy nhiêu. Việc phát sinh shape khởi tạo quá lỗi có thể dẫn đến các điểm đặc trưng bị lỗi [19].

Để phát sinh shape khởi tạo, ý tưởng cơ bản là align shape trung bình với khn mặt tổng thể lấy từ phương pháp face detection. Ta làm các bước sau:

- Lấy khuôn mặt tổng thể bằng phương pháp face detection ( đồ án sử dụng Viola- Jones được cài đặt sẵn trong OpenCV). Khuôn mặt tổng thể là tọa độ 4 đỉnh của hình chữ nhật sinh kết quả, sinh ra bằng thuật tốn phát hiện khn mặt Viola-Jones.

Hình 3.21 Khn mặt tổng thể

- Load khn mặt trung bình và lấy tọa độ của hình chữ nhật bao quanh khn mặt trung bình.

Hình 3.22 Xác định hình chữ nhật bao quanh shape trung bình

- Vì phép align chỉ thực hiện được khi các shape có số đỉnh bằng nhau nên ta tiến hành align hình chữ nhật của khn mặt trung bình lên khn mặt tổng thể. Sau đó, lấy các tham số của phép biến đổi tương tự áp dụng cho khn mặt trung bình.

Hình 3.23 Align hình chữ nhật bao quanh shape trung bình lên khn mặt tổng thể

- Thực hiện phép align với các tham số đã lấy lên khn mặt trung bình.

Hình 3.24 Màu đỏ là khn mặt khởi tạo

Màu xanh dương là hình chữ nhật bao quanh khn mặt trung bình Màu vàng là khn mặt trung bình

- Lưu ý rằng, các tham số thế vào là tham số của phép align giữa 2 shape có 4 đỉnh. Vì vậy, khi áp dụng lên shape nVer đỉnh, khn mặt trung bình và khn mặt tổng thể sẽ khơng khớp nhau do trọng tâm giữa khn mặt trung bình và hình chữ nhật bị lệch. Ta tiến hành tinh chỉnh lại cho khớp bằng cách thay đổi tham số tịnh tiến cho phù hợp

Hình 3.25 Chỉnh lại phép align

- Thu được shape khởi tạo chính là khn mặt trung bình sau khi thực hiện phép align.

Lưu ý, vì hình chữ nhật tạo ra bởi thuật tốn Viola-Jones có kích thước lớn hơn khuôn mặt thật nên sẽ làm ảnh hưởng đến kết quả của việc kết xuất khn mặt khởi tạo. Vì vậy, trước khi tiến hành phép align, ta cần thu nhỏ hình chữ nhật đến một kích thước phù hợp. Trong đồ án, hình chữ nhật được thu nhỏ 20%.

b. Kết xuất shape kiểm thử:

Ởbước này, nhiệm vụ của ta là dựa vào shape khởi tạo có được từ bước trên để kết xuất shape kiểm thử. Trước khi bắt đầu, ta thêm vào một tham số hằng cho chương trình là nPixSearch [19]:

- nPixSearch là tham số thể hiện số pixel sẽ được chọn để lấy mẫu profile dọc theo đỉnh của shape khởi tạo. Hay nói cách khác, đây chính là độ dài whisker của shape khởi tạo. Whisker này không phải là whisker chứa thông tin của profile của đỉnh shape khởi tạo như whisker trong bước huấn luyện, mà là whisker chứa các pixel ảnh sẽ được chọn để làm điểm khởi tạo. Ví dụ, nPixSearch = 5, ta sẽ tiến hành lấy mẫu profile của pixel thứ -2 đến pixel thứ +2 tính từ đỉnh đang xét của shape khởi tạo. Cách tạo profile cho một điểm, cũng như cách vẽ whisker đã được trình bày ở những phần trên. Ở đây ta chọn nPixSearch = 15. Có thể tiến hành thay đổi tham số này để chọn ra kết quả tốt nhất.

Sau khi chọn được tham số thích hợp, ta tiến hành đánh giá các pixel đã lấy mẫu bằng cách tính khoảng cách Mahalanobis theo cơng thức (2.8). Dựa trên khoảng cách Mahalanobis tính được, ta chọn ra profile tốt nhất và lấy pixel tương ứng với profile đó làm điểm kiểm thử. Làm tương tự với các điểm khác, ta có được tập hợp các điểm kiểm thử tạo thành shape kiểm thử.

c. Kết xuất ra khn mặt chính thức:

Việc kết xuất khn mặt chính thức dựa trên việc tinh chỉnh các lỗi sai shape kiểm thử sao cho các đỉnh trên shape kiểm thử khớp với khn mặt trong ảnh.

Khn mặt chính thức được sinh ra từ cơng thức như đã trình bày ở phần trước: = + Φ

Mấu chốt của cơng thức này chính là việc tìm vector tham số b. Việc tìm nó đã được trình bày khá chi tiết bằng thuật tốn ở phần 2.2.3.b.

Trước khi bắt đầu thuật tốn tìm b, ta cần phải tìm ra ma trận hiệp phương sai Φ, các vector riêng và trị riêng của nó. Việc tính tốn ma trận hiệp phương sai có thể được thực hiện dễ dàng bằng cơng thức (2.11). Chỉ lưu ý một điều, vì chúng ta lưu trữ các shape dưới dạng vector có kích thước (2nVer × 1), nên ma trận hiệp phương sai của chúng ta sẽ có kích thước (2nVer × 2nVer).

Sau khi có ma trận hiệp phương sai, ta tính trị riêng và vector riêng của nó. Hiện nay, đã có nhiều thuật tốn hỗ trợ trong việc tìm trị riêng và vector riêng của ma trận mà điển hình nhất là thuật tốn QR cùng nhiều thuật tốn cải tiến về mặt tốc độ. Trong khuôn khổ của đồ án, ta sẽ không bàn luận quá sâu vào cách thức tìm kiếm cũng như vấn đề giải thuật cho việc tìm trị riêng và vector riêng.

Các thuật tốn tìm trị riêng và vector riêng đã được tích hợp vào nhiều thư viện mã nguồn mở nên việc sử dụng chúng là khá dễ dàng. Tuy nhiên, việc tiếp cận với các bộ thư việc mã nguồn mở, các vấn đề sử dụng cũng như biên dịch chúng trên nền window là khá khó khăn. Vì vậy, xin được đề xuất sử dụng một bộ thư viện hỗ trợ trong việc tính tốn trị riêng và vector riêng bằng một thư viện Bluebit.MatrixLibrary xây dựng trên nền C#.

Sau đây là đoạn chương trình tính trị riêng và vector riêng: Matrix conmat;// khai báo biến ma trận conmat

int n_conmat, num;

CVector V; // Khai báo vector V

// Load ma trận hiệp phương sai

LoadMat(@"resource/mean_conmat_shape.txt", out n_conmat, out conmat); Eigen E = new Eigen(conmat); // load ma trận hiệp phương sai vào đối tượng tính

tốn trị riêng và vector riêng

V = E.Eigenvalues; // tính trị riêng và lưu vào vector V num = GetNumEi(V); // lấy số lượng trị riêng

// Lưu lại các trị riêng

SaveEigenvalues(@"resource/eigenvalues_conmat_shape.txt", V.Length, num, V); CMatrix mat_EV = E.Eigenvectors; // tính các vector riêng và lưu thành ma trận

vector riêng

// lưu ma trận vector riêng

SaveEigenvectorMatrix(@"resource/eigenvectors_conmat_shape.txt", mat_EV.Rows, num, mat_EV);

Sau khi tính được trị riêng và vector riêng, ta tiến hành tìm vector tham số b theo thuật tốn đã trình bày ở 2.2.3.b. Thế b vào cơng thức (2.9), ta suy ra được khuôn mặt chính thức cần tìm.

Hình 3.26 Result Window

3.3 Xử Lí Dữ Liệu Chuyển Động Và Áp Lên Mơ Hình 3D

Sau khi hoàn thành khâu phát hiện các điểm đặc trưng của khn mặt. Ta xem nó như là các điểm đánh dấu vật lí trên các phương pháp MoCap truyền thống. Việc tiếp theo cần làm là ghi lại dữ liệu chuyển động của các điểm này qua các frame ảnh của video để tiến hành áp cử động lên mơ hình 3D.

Để thực hiện công việc này, ta ghi dữ liệu chuyển động theo cấu trúc file “c3d”. Ta chọn cấu trúc file này vì đây là cấu trúc file khá phổ biến đã được sử dụng từ lâu. Hơn nữa, cấu trúc file này có tài liệu mơ tả chi tiết [28] và được hỗ trợ bằng các chương trình xử lí 3D thơng dụng hiện tại.

File c3d là một file nhị phân được chia thành các block với độ dài 512 bytes. Trong đó, phần header gồm các thông tin sau [18][28]:

- Số lượng điểm đánh được sử dụng trong quá trình MoCap. - Số lượng các khoảng cách analog được sử dụng ở mỗi frame. - Chỉ số frame đầu tiên.

- Chỉ số frame cuối cùng. - Độ lệch cho phép lớn nhất. - Hệ số tỉ lệ 3 chiều.

- Số lượng block dữ liệu đầu tiên. - Số lượng mẫu analog trong mỗi frame

- Nhãn chú thích dữ liệu - Dữ liệu sự kiện.

Những block dữ liệu tiếp theo sẽ chứa thơng tin về vị trí của các điểm đánh dấu thể hiện trên mỗi frame. Lưu ý, các dữ liệu tọa độ lấy trực tiếp trên frame chỉ là dữ liệu 2D. Ta cần phải chuyển sang dữ liệu 3D tương ứng để áp lên mơi trường 3D.

Sau khi có được dữ liệu chuyển động được ghi trong file c3d, ta sử dụng chương trình Autodesk Motion Builder để truy xuất cũng như biểu diễn file này.

Để thể hiện chuyển động khn mặt đã bắt được, ta cần có một file c3d chuẩn và một mơ hình khn mặt 3D. Ta có thể sử dụng các mơ hình sẵn có trên mạng hoặc mơ hình demo có sẵn trong chương trình. Import file c3d vừa tạo và mapping các điểm đánh dấu lên khn mặt, chương trình sẽ tự động xử lí chuyển động theo như dữ liệu đã ghi trong file c3d.

CHƯƠNG 4:

ĐÁNH GIÁ PHƯƠNG PHÁP VÀ HƯỚNG PHÁT TRIỂN TRONG TƯƠNG LAI

Thuật toán được test trên hệ thống:

- Phần cứng: RAM 4GB, CPU core-i5 1,7GHz, Webcam HD 2.0 UVC, GPU GT635M 2GB.

- Phần mềm: win 7 64-bit, Visual Studio 2010, OpenCV 2.4.2 4.1. Đánh Giá Thuật Tốn Phát Hiện Khn Mặt Viola-Jones:

Kết quả của chương trình được đánh giá trên 3 bộ dữ liệu: Bao [15], AT&T [16] (Cambrigde University) và JAFEE [27] (Psychology Department, Kyushu University). Trong đó, Bao là bộ dữ liệu gồm 100 ảnh màu. Mỗi ảnh chứa một khuôn mặt người ở các vị trí khác nhau như nghiêng đầu, xoay mặt về trái, về phải bao gồm cả ảnh chứa nhiễu như bị mờ, nhịe, đội mũ, đeo kính, các biểu cảm khác nhau trên khn mặt, có cả ngoại cảnh và người đứng phía sau. Đối tượng trong bộ dữ liệu chủ yếu là người Châu Á với các độ tuổi khác nhau. AT&T là bộ dữ liệu của ĐH Cambrigde gồm 100 ảnh xám của 10 người khác nhau. Cứ mỗi 10 ảnh là khn mặt của một người ở các góc độ, biểu cảm khác nhau. Đối tượng trong bộ dữ liệu là người châu âu độ tuổi từ thanh niên đến cao niên, có một số đối tượng đeo kính. Các ảnh trong bộ dữ liệu này chỉ chứa khuôn mặt, khơng có ngoại cảnh và các yếu tố gây nhiễu, chụp ở độ sáng cố định. JAFFE là bộ dữ liệu của Psychology Department, Kyushu University. Gồm 100 ảnh xám khn mặt chính diện của 6 cơ gái người Nhật với các biểu cảm khác nhau, được chụp trong nhiều điều kiện chiếu sáng khác nhau. Ảnh được chụp với nền tĩnh và đơn sắc.

Bảng đánh giá xác định 3 trạng thái của kết quả phát hiện khuôn mặt: Correct face (phát hiện đúng khuôn mặt), Miss face (không phát hiện ra khuôn mặt), False face (phát hiện ra vùng ảnh không chứa khuôn mặt). Việc phát hiện 3 trạng thái được thực hiện một cách tự động qua các bước:

- Xác định khuôn mặt trên các tập dữ liệu bằng tay. Sau đó, lưu kết quả vào một file có dạng như sau: rawdata/001.bmp 1 10 34 71 68 rawdata/002.bmp 1 11 28 72 75 rawdata/003.bmp 1 7 28 72 77 rawdata/004.bmp 1 2 30 74 72 rawdata/005.bmp 1 9 30 76 74

File có cấu trúc:

<tên ảnh> <số lượng khn mặt có trong ảnh> <tọa độ X của hình chữ nhật chứa khn mặt> <tọa độ Y

của hình chữ nhật chứa khn mặt> <chiều rộng hình chữ nhật> <chiều dài hình chữ nhật>

- Chạy chương trình phát hiện khn mặt, ghi kết quả ra một file với dạng trên. Sau đó so khớp kết quả này với kết quả được thực hiện bằng tay trước đó.

- Việc so khớp được thực hiện như sau:

Hình 4.1

Hình chữ nhật viền đậm là hình chữ nhật có chứa khn mặt được vẽ bằng tay. Hình chữ nhật viền mảnh là hình chữ nhật kết quả của chương trình vẽ ra. Ta tính vùng giao A của 2 hình chữ nhật này. Sau đó tính tổng vùng khơng giao của hai hình B + C rồi lấy tỉ lệ A/(B+C). Tỉ lệ này càng lớn chứng tỏ kết quả của chương trình càng chính xác. Các trạng thái của kết quả phát hiện khuôn mặt dựa trên tỉ lệ này như sau:

Nếu tỉ lệ này < 1 thì kết quả của chương trình là 1 false face. Nếu tỉ lệ này >= 1 thì kết quả của chương trình là 1 correct face.

Miss face được xác định bằng độ chệnh lệch giữa số lượng khuôn mặt phát hiện được bằng chương trình với số lượng khn mặt được xác định bằng tay trước đó.

- Việc đánh giá được thực hiện với cấu hình intel core i3 3.07 GHz, 4GB RAM, 1GB Graphic Card. Sử dụngVisual Studio 2010 C++, OpenCV 2.4.2. Kết quả của việc test trên 2 bộ dữ liệu được ghi lại dưới bảng sau:

Bảng 4.1 Kết quả đánh giá thuật toán Viola-Jones

Database

AT&T Bao

Ta có thể thấy thuật tốn hoạt động khá ổn định trên 2 bộ dữ liệu khác nhau. Tuy nhiên, trong quá trình test, trạng thái miss face xuất hiện tập trung ở các khn mặt nghiêng và đeo kính. Dễ thấy rằng, vì bộ huấn luyện ta sử dụng huấn luyện chủ yếu với các ảnh khn mặt chính diện và khơng đeo kính nên ảnh hưởng tới độ chính xác khi làm việc với các khn mặt loại này. Để khắc phục tình trạng trên, ta có thể tăng số ảnh huấn luyện bằng việc thêm vào các bộ ảnh khn mặt nghiêng và đeo kính.

Hình 4.2 Kết quả bị sai lệch với khn mặt đeo kính và nghiêng

4.1. Đánh Giá Thuật Tốn ASM:

Database:

- BioID: là databse của HumanScan AG, Switzerland gồm 100 ảnh trắng đen chứa khn mặt người chụp chính diện. Đối tượng lấy mẫu là nam, nữ người Châu Âu, độ tuổi trung niên, có cả người đeo kính. Ảnh chụp các trạng thái biểu cảm khác nhau của đối tượng trong các môi trường sáng khác nhau và chất lượng ảnh khác nhau với phông nền biến đổi.

- JAFE: là database của Psychology Department tại Kyushu University gồm 100 ảnh trắng đen chứa khn mặt chính diện của người chụp. Đối tượng lấy mẫu là phụ nữ châu Á, độ tuổi trung và thanh niên, khơng có người đeo kính. Ảnh chụp các trạng thái biêu cảm khác nhau của đối tượng trong các môi trường sáng khác nhau, với chất lượng ảnh ổn định và phông nền tĩnh.

Hình 4.3 ‘s’ là khoảng cách giữa 2 trọng tâm ‘d’ là khoảng cách giữa các điểm tương ứng

Là đại lượng dùng để đánh giá kết quả thực nghiệm. Me17 còn được gọi là “độ đo sai lệch” (error measurement) của kết quả chương trình. Nói cách khác, me17 phản ánh mức độ sai sót của kết quả do chương trình xuất ra so với bộ dữ liệu kiểm tra đã xây dựng từ trước. Me17 càng nhỏ, kết quả càng có ít sai sót, chương trình càng chính xác [19].

Me17 được tính như sau [19]:

- Tính trung bình khoảng cách Euclid của 17 điểm search_point (thuộc shape do chương trình xuất ra) với ref_point (thuộc shape do người thí nghiệm đánh dấu bằng tay)

- Chia kết quả thu được với khoảng cách Euclid giữa 2 mắt (2 điểm này là 2 điểm được đánh dấu bằng tay)

Ta tiến hành xây dựng bảng đánh giá cho thuật toán ASM với các tham số:

- Missing: số lượng ảnh không phát hiện được khuôn mặt.

- Min_me17: giá trị me17 nhỏ nhất trong tập ảnh kiểm tra.

- Max_me17: giá trị me17 lớn nhất trong tập ảnh kiểm tra.

- Mean_me17: giá trị me17 trung bình trong tập ảnh kiểm tra. Giá trị này được tính bằng tổng giá trị me17 của mỗi ảnh trong tập kiểm tra chia cho tổng số lượng ảnh đã trừ đi số lượng Missing.

Bảng 4.2 Kết quả đánh giá thuật toán ASMDatabase Database BioID Total: 100 JAFE Total: 100

Ta nhận thấy, số ảnh missing tập trung vào ảnh đeo kính do kết quả của ASM phụ thuộc hồn tồn vào kết quả của thuật tốn phát hiện khuôn mặt Viola-Jones. Kết quả

Một phần của tài liệu BẮT cử ĐỘNG KHUÔN mặt QUA VIDEO và áp lên mô HÌNH 3d (Trang 50)

Tải bản đầy đủ (DOCX)

(72 trang)
w