Với mong muốn cung cấp một giải pháp hiệu quả và tiết kiệm chi phí cho các tổ chức vừa và nhỏ, em xin được thực hiện một phương pháp MoCap khuôn mặt không cần sử dụng cảm biến cũng như c
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC NHA TRANG KHOA CÔNG NGHỆ THÔNG TIN
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
BẮT CỬ ĐỘNG KHUÔN MẶT QUA VIDEO VÀ ÁP LÊN MÔ HÌNH 3D
Giảng viên hướng dẫn: NGUYỄN ĐÌNH CƯỜNGSinh viên thực hiện: NGUYỄN HOÀI NAM
Tháng 6/2013
Trang 2LỜI MỞ ĐẦU Nền công nghiệp giải trí ngày càng phát triển, đặc biệt trong lĩnh vực điện ảnh và game, đòi hỏi công nghệ đồ họa phải phát triển tương ứng để đáp ứng được nhu cầu ngày càng cao của người sử dụng Ta có thể kiểm chứng sức mạnh của công nghệ
đồ họa hiện tại qua những hình ảnh hết sức chân thực của các bộ phim bom tấn trong những năm gần đây Và một trong những điều tác động đến thị giác người xem là khả năng diễn hoạt cử động uyển chuyển của các mô hình nhân vật 3D trong phim Để làm được những chuyển động như vậy, một công nghệ hỗ trợ cho việc xử
lí chuyển động đã ra đời, đó là công nghệ MoCap (Motion Capture – bắt giữ chuyển động) Qua việc thu nhận sự chuyển động của các điểm đánh dấu hoặc cảm biến được gắn trên người diễn viên, công nghệ MoCap giúp các nhà làm phim tái hiện được những chuyển động thật đến đáng kinh ngạc lên các mô hình nhân vật trong sản phẩm của mình Với lịch sử phát triển lâu đời, công nghệ MoCap đã và đang ngày càng hoàn thiện để phục vụ cho nhiều mục đích khác nhau ngoài phim ảnh ra Tuy nhiên, một trong những trở ngại khi tiếp xúc với công nghệ này là chi phí thực hiện đắt đỏ cho các thiết bị chuyên dụng cũng như xây dựng môi trường thực hiện
kĩ thuật này Đặc biệt, việc MoCap khuôn mặt khá phức tạp vì các điểm đánh dấu khá nhiều Với mong muốn cung cấp một giải pháp hiệu quả và tiết kiệm chi phí cho các tổ chức vừa và nhỏ, em xin được thực hiện một phương pháp MoCap khuôn mặt không cần sử dụng cảm biến cũng như các thiết bị chuyên dụng đắt tiền Với phương pháp này, tất cả những gì ta cần chỉ là một webcam thông dụng là đủ để thực hiện MoCap Ý tưởng cơ bản của phương pháp là bắt các điểm đánh dấu trên khuôn mặt một cách tự động dưới sự kết hợp của hai thuật toán: thuật toán phát hiện khuôn mặt Viola-Jones và thuật toán chiết xuất các điểm đặc trưng ASM (Active Shape Model)
Vì thời gian thực hiện có hạn, cùng những khó khăn phát sinh trong quá trình thực hiện, nên đồ án không tránh khỏi những thiếu sót Kính mong thầy cô góp ý và sửa chữa để đồ án ngày càng được hoàn thiện hơn
Chân thành cảm ơn giáo viên hướng dẫn thầy Nguyễn Đình Cường, các thầy Lê Hoàng Thanh, Trần Minh Văn, các thầy cô khác trong khoa CNTT cũng như nhà trường đã tạo điều kiện và giúp đỡ em trong quá trình thực hiện đồ án
Trang 3MỤC LỤC
Mở đầu 1
CHƯƠNG 1 TỔNG QUAN VỀ CÔNG NGHỆ MOCAP 8
1.1 Lịch Sử Ra Đời Của Công Nghệ MoCap 8
1.2 Các Kĩ Thuật MoCap 12
1.3 Đánh Giá 15
1.4 Định Hướng Đề Tài 16
Chương 2 CƠ SỞ LÍ THUYẾT CỦA PHƯƠNG PHÁP MOCAP SỬ DỤNG HỆ THỐNG QUANG HỌC KHÔNG ĐÁNH DẤU 18
2.1 Thuật Toán Phát Hiện Khuôn Mặt Viola-Jones 18
2.1.1 Đặc trưng Haar-Like 19
2.1.2 Máy phân lớp Adaboost 20
2.1.2 Hoạt động của thuật toán Viola-Jones 21
2.2 Thuật Toán Chiết Xuất Các Điểm Đặc Trưng ASM 21
2.2.1 Một số điều cần biết 22
2.2.2 Sơ lược về ASM 23
2.1.2 Profile model và shape model 24
Chương 3 KINH NGHIỆM THỰC HIỆN TRONG QUÁ TRÌNH TRIỂN KHAI PHƯƠNG PHÁP 29
3.1 Quá Trình Thực Hiện Viola-Jones 29
3.1.1 Huấn luyện 29
3.1.2 Sử dụng Viola-Jones trong OpenCV 37
3.2 Quá Trình Thực Hiện ASM 39
3.2.1 Vài điều cần chuẩn bị trước khi huấn luyện 39
3.2.2 Huấn luyện 46
3.2.2 Tìm điểm đặc trưng của khuôn mặt trên ảnh 48
3.2.2 Xử lí dữ liệu chuyển động và áp lên mô hình 3D 53
Trang 4Chương 4 ĐÁNH GIÁ PHƯƠNG PHÁP VÀ PHƯƠNG HƯỚNG PHÁT
TRIỂN TRONG TƯƠNG LAI 55
4.1 Đánh Giá Thuật Toán Viola-Jones 55
4.2 Đánh Giá Thuật Toán ASM 57
4.3 Đánh Giá Chung Về Phương Pháp MoCap Và Phương Hướng Phát
Triển Trong Tương Lai 59
PHỤ LỤC 62
Phụ Lục A: Tìm Các Tham Số Của Phép Align 62
Phụ Lục B: Tạo Dữ Liệu Huấn Luyện Bằng Tay 63
TÀI LIỆU THAM KHẢO 66
Trang 5DANH MỤC CÁC BẢNG, SƠ ĐỒ, HÌNH
Bảng 2.1: Thuật toán align shape 23
Bảng 2.2: Thuật toán tạo thành shape kiểm thử 26
Bảng 4.1: Kết quả đánh giá thuật toán Viola-Jones 56
Bảng 4.2: Kết quả đánh giá thuật toán ASM 59
Hình 1.1: Animal locomotion 9
Hình 1.2: Zoopraxiscope 9
Hình 1.3: Chuyển động được bắt bằng máy quay tốc độ cao Stroboscope 9
Hình 1.4: Thiết bị rotoscope cổ điển 10
Hình 1.5: Thực hiện kĩ thuật rotoscoping 10
Hình 1.6: Chiếc mũ bắt cử động và Mike the talking head 11
Hình 1.7: Dozo 11
Hình 1.8: Alive! System 12
Hình 1.9: MoCap trong phim “Avatar” 12
Hình 1.10: Đánh dấu các điểm sáng màu lên cơ thể diễn viên 13
Hình 1.11: Đánh dấu bằng đèn LED 13
Hình 1.12: Các cảm biến từ 14
Hình 1.13: Bắt chuyển động bằng cảm biến âm dùng cho máy chơi game gia đình 14
Hình 1.14: Bộ xương cơ học 15
Hình 1.15: Sợi quang dành cho việc bắt cử động của bàn tay 15
Hình 2.1: Quá trình MoCap khuôn mặt 18
Hình 2.2: Đặc trưng Haar-Like 19
Hình 2.3: 19
Hình 2.4: 19
Hình 2.5: Bộ phân lớp AdaBoost 20
Hình 2.6: Nguyên lí hoạt động của thuật toán Viola-Jones 21
Hình 2.7: Các điểm landmark 22
Hình 2.8: Bên trái: Một shape cơ bản với 3 điểm Giữa: Shape được biểu diễn với mảng Bên phải: Shape được biểu diễn dưới dạng vector 22
Hình 2.9: Align các hình chữ nhật có kích thước khác nhau 22
Hình 2.10: Đánh dấu các điểm landmark trong tập huấn luyện 23
Trang 6Hình 2.11: Whisker được thể hiện dưới các đường thẳng màu trắng 25
Hình 2.12: Màu vàng là cạnh khuôn mặt Màu trắng là whisker 25
Hình 2.13: Bên trái: shape kiểm thử Bên phải: shape được sinh ra từ shape model dựa trên shape kiểm thử cho ra kết quả tốt hơn 28
Hình 3.1: 29
Hình 3.2: Positive Image 30
Hình 3.3: Negative Image 30
Hình 3.4: Thông tin về vùng ảnh được bắt 31
Hình 3.5: File info.txt 31
Hình 3.6: Quá trình huấn luyện ảnh 32
Hình 3.7: Các đặc trưng Haar-Like được sử dụng 34
Hình 3.8: Result window 39
Hình 3.9: AR landmark 40
Hình 3.10: XM2VTS landmark 41
Hình 3.11: BioID landmark 41
Hình 3.12: Tạo file mô tả 43
Hình 3.13: File mô tả 43
Hình 3.14: Cạnh khuôn mặt được thể hiện dưới đường thẳng màu đen.Whisker là đường thẳng màu vàng.Các điểm landmark là các điểm màu đỏ 44
Hình 3.15: Bên trái: cách vẽ whisker đúng Bên phải: cách vẽ whisker sai 44
Hình 3.16: H1 Vẽ đoạn thẳng vuông góc với cạnh kề nó H2 Vẽ đoạn thằng đi qua landmark và trọng tâm của shape H3 Vẽ đoạn thẳng đi qua landmark và trung điểm của 2 landmark kề 2 bên 45
Hình 3.17: Đường thẳng vẽ bằng phương trình tổng quát trên màn hình 46
Hình 3.18: Đường thẳng vẽ bằng thuật toán trong đồ họa 46
Hình 3.19: Ma trận hiệp phương sai của tất cả các điểm landmark 48
Hình 3.20: Shape khởi tạo quá tệ có thể dẫn đến kết quả lỗi 48
Hình 3.21: Khuôn mặt tổng thể 49
Hình 3.22: Xác định hình chữ nhật bao quanh shape trung bình 49
Hình 3.23: Align hình chữ nhật bao quanh shape trung bình lên khuôn mặt tổng thể 50
Hình 3.24: Màu đỏ là khuôn mặt khởi tạo Màu xanh dương là hình chữ nhật bao quanh khuôn mặt trung bình Màu vàng là khuôn mặt trung bình 50
Trang 7Hình 3.27: Xử lí file c3d với Autodesk Motion Builder 54
Hình 4.1: 56
Hình 4.2:Kết quả bị sai lệch với khuôn mặt đeo kính và nghiêng 57
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 58
Hình 4.4:Thuật toán ASM không ổn định với nhiều kiểu khuôn mặt khác nhau 59
Hình 4.5: Triển khai kĩ thuật MoCap không đánh dấu 61
Hình B.1: 63
Hình B.2: 63
Hình B.3: 64
Hình B.4: 64
Hình B.5: 64
Hình B.6: 55
Trang 9CHƯƠNG 1:
TỔNG QUAN VỀ CÔNG NGHỆ MOCAP
MoCap (Motion Capture – bắt giữ chuyển động) là kĩ thuật thu lại chuyển động thật của đối tượng được sử dụng trong các lĩnh vực như điện ảnh, quân đội, giải trí, thể thao, y tế, robot và thị giác máy tính (computer vision) Phần này xin được phép giới thiệu một cách tổng quát về công nghệ MoCap trong lĩnh vực được sử dụng nhiều nhất là điện ảnh
MoCap là kĩ thuật bắt chuyển động của diễn viên, sau đó biểu diễn hoạt họa lại chuyển động đó lên diễn viên số được dựng bằng máy tính là các mô hình 2D hoặc 3D Ý tưởng cơ bản của kĩ thuật MoCap là thu lại chuyển động của một hay nhiều diễn viên bằng cách lấy mẫu chuyển động nhiều lần trong một giây Các kĩ thuật sơ khai sử dụng hình ảnh từ nhiều webcam và chuyển thành dữ liệu 3D Kĩ thuật MoCap chỉ đơn thuần bắt lại chuyển động của đối tượng mà không quan tâm tới bề ngoài của đối tượng đó [21][23]
1.1 Lịch Sử Ra Đời Của Công Nghệ MoCap:
Ta có thể thấy rằng, MoCap là một trong những kĩ thuật được ứng dụng trong những bộ phim và game bom tấn hiện nay cùng các lĩnh vực liên quan nhằm mang đến cho con người những trải nghiệm thị giác chân thực nhất Và thật khó có thể tin rằng, kĩ thuật này đã được manh nha từ rất sớm, trước khi cả máy tính điện tử ra đời Cùng điểm qua những mốc thời gian nổi bật trong quá trình hình thành và phát triển của MoCap:
- Năm 1830, khi điện ảnh thế giới còn trong sự thống trị của những thước phim trắng đen, Eadweard Muybridge đã cho ra đời những đoạn phim MoCap đầu tiên Ông sử dụng các máy quay cơ cổ điển để thu lại những chuyển động của các loại động vật (animal locomotion) và ghi chúng trong một loại đĩa đặc biêt để phát lại với thiết bị gọi là Zoopraxiscope Một vài năm sau đó, những thước phim MoCap được trình chiếu bởi Zoopraxiscope ra đời Các kĩ thuật tương tự được phát triển sau này được ứng dụng trong bộ phim hoạt hình nổi tiếng “nàng bạch tuyết và bảy chú lùn” của Walt Disney Trong bộ phim, kĩ thuật này được sử dụng để thể hiện bước chân của nàng Bạch Tuyết [22][24][25]
Trang 10Hình 1.1 Animal locomotion [24]
Hình 1.2 Zoopraxiscope [25]
- Năm 1903, Harold Edgerton sử dụng máy quay tốc độ cao Stroboscope để bắt chuyển động của đối tượng Nhờ sử dụng Stroboscope mà những thước phim của ông cho chất lượng tốt hơn nhiều [21][22]
Hình 1.3 Chuyển động được bắt bằng máy quay tốc độ cao Stroboscope [23]
Trang 11- Năm 1915, Max Fleischer đề xuất một kĩ thuật MoCap mới được sử dụng trong
diễn hoạt 2D với tên gọi “rotoscoping” Trong kĩ thuật này, ông tiến hành thu lại
đoạn phim chuyển động của diễn viên Sau đó, ông đánh dấu các điểm bao quanh rìa của đối tượng cần MoCap trong mỗi frame của video Tiếp theo, ông ánh xạ các điểm này lên đối tượng hoạt hình trong kịch bản cần thể hiện chuyển động Nói cách khác, ông vẽ các nhân vật hoạt hình theo các điểm mốc đã đánh dấu trong các frame của đoạn phim đã quay từ trước Ông thực hiện kĩ thuật này trên thiết bị cùng
tên “rotoscope” Bộ phim đầu tiên sử dụng kĩ thuật này là “Out of Inkwell” do ông
làm họa sĩ Một bộ phim nổi tiếng khác cũng được ứng dụng kĩ thuật này là “Nàng bạch tuyết và bảy chú lùn” của Walt Disney năm 1937
Đây là một kĩ thuật khá cổ điển nhưng rất mạnh vẫn còn được sử dụng cho đến ngày nay và được tích hợp trong bộ công cụ làm phim của Adobe Kĩ thuật này khắc phục được điểm yếu của MoCap thời kì đầu là chỉ thể hiện được chuyển động của đối tượng mẫu mà không tùy biến sang các nhân vật khác được Ngày nay, với
sự trợ giúp của máy tính loại bỏ được thiết bị rotoscope cồng kềnh, cùng các thuật
toán dò vết, việc triển khai kĩ thuật này được thực hiện đơn giản hơn bao giờ hết [21][22][26]
Hình 1.4 Thiết bị rotoscope cổ điển [26]
Hình 1.5 Thực hiện kĩ thuật rotoscoping
- Năm 1988, khi máy tính điện tử ra đời cùng với sự xuất hiện của đồ họa 3D, deGraf và Wahrman sử dụng kĩ thuật MoCap trong một ứng dụng với tên gọi là
“Mike the talking head” Bằng cách sử dụng một chiếc mũ đặc biệt bắt từng cử
động nhỏ của khuôn mặt, ứng dụng này có chức năng áp cử động lên một khuôn
Trang 12mặt 3D và làm nó “nói chuyện” Đây thực sự là một bước tiến lúc bấy giờ Ứng dụng này giúp cho các nhà làm phim hoạt hình thể hiện được những cử động chân thực nhất của khuôn mặt nhân vật bằng cách thu trực tiếp thay vì thể hiện bằng tay như lúc trước [21][22]
Hình 1.6 Chiếc mũ bắt cử động và Mike the talking head [22]
- Năm 1989, Kleiser và Walczak sản xuất một đoạn phim hoạt hình 3D ngắn với
tên gọi “Dozo” Đoạn phim mô tả cảnh một ca sĩ ảo đang biểu diễn trước micro Ở
trong đoạn phim này, 2 tác giả đã sử dụng kĩ thuật MoCap sử dụng hệ thống quang học (optically system motion capture) với các camera thu chuyển động thật của diễn viên Dựa trên sự ghi nhận chuyển động của các đoạn băng dính phản quang trên người diễn viên Hệ thống sẽ tự động biểu diễn lại chuyển động ấy lên mô hình 3D Đây là một phương pháp mới thay cho kĩ thuật dùng khung xương kim loại cồng kềnh để bắt chuyển động như trước Tuy nhiên, kĩ thuật này vẫn còn nhiều vướng mắc trong việc bắt các đoạn băng dính phản quang cũng như tốc độ xử lí còn chậm [22]
Hình 1.7 Nhân vật trong đoạn phim Dozo [22]
- Năm 1992, deGraf tiếp nối thành công của “Mike the talking head” bằng việc
phát triển một hệ thống dùng cho việc MoCap toàn bộ cơ thể người với tên gọi
Alive! Hệ thống gồm các bộ khung cơ khí được chế tạo dành cho việc MoCap đầu,
hông, bàn chân và bàn tay với độ chi tiết cao Hệ thống được cải tiến so với người tiền nhiệm để bắt chuyển động với độ chính xác cao nhất trên toàn bộ cơ thể người [22]
Trang 13Hình 1.8 Hệ thống bắt giữ chuyển động Alive! system
Những năm sau đó, dưới sự phát triển vượt bậc của công nghệ đồ họa máy tính, MoCap đã được ứng dụng một cách rộng rãi trong các bộ phim bom tấn như “Lord
Of Ring”, “Avatar”, “Transformer”…
Hình 1.9 MoCap trong phim “Avatar”
1.2 Các Kĩ Thuật MoCap:
Ta có thể thấy, MoCap là một kĩ thuật đồ họa có bề dày lịch sử lâu đời với rất nhiều phương pháp được cải tiến theo thời gian Dựa vào điểm chung về thiết bị cũng như quy trình thực hiện, ta có thể phân loại các phương pháp MoCap được dùng phổ biến hiện nay như sau:
- Optical Passive (hệ thống quang học bị động): Là hệ thống MoCap bắt giữ
chuyển động bằng cách thu dữ liệu từ các điểm đánh dấu trên đối tượng Để thực hiện phương pháp này cần một bộ áo đặc biệt được gắn sẵn các điểm đánh dấu và
hệ thống các camera độ nét cao Bộ áo được thiết kế chỉ với một màu (thường là màu đen) với các điểm đánh dấu màu sáng nổi bật (thường là màu trắng) Tại đây, camera sẽ được bố trí ở nhiều góc độ khác nhau để thu lại cử động của đối tượng Máy tính sẽ xử lí phần nền, da người ,chỉ lấy các điểm đánh dấu màu sáng và chuyển dữ liệu 2D sang 3D Phương pháp này cho chuyển động trên mô hình 3D với chất lượng cao Các điểm đánh dấu rất linh hoạt, có thể thay đổi tùy vào đối tượng và mục đích cụ thể Tuy nhiên, để phương pháp này đạt được hiệu quả cao
Trang 14nhất, cần thực hiện nó trong nhà với một môi trường ánh sáng ít biến đổi Với những cử động phức tạp như cử động khuôn mặt, số lượng điểm đánh dấu phải tăng lên tương ứng và việc gắn chúng cũng là một vấn đề [22]
Hình 1.10 Đánh dấu các điểm sáng màu lên cơ thể diễn viên [22]
- Optical Active (hệ thống quang học chủ động): Tương tự như kĩ thuật optical
passive nhưng thay các điểm đánh dấu bằng các đèn LED có độ sáng như nhau Bằng việc đo cường độ sáng của các đèn LED, việc tính toán vị trí của các điểm đánh dấu trở nên dễ dàng hơn nhiều Phương pháp này cho ra chất lượng chuyển động tốt hơn hẳn so với kĩ thuật trên và thường dùng để bắt cử động thời gian thực [22]
Hình 1.11 Đánh dấu bằng đèn LED[22]
- Electromagetic (hệ thống cảm biến từ): Phương pháp này thay các điểm đánh
dấu quang học bằng các cảm biến từ Các cảm biến này sẽ thu thập tần số của từ trường phát ra từ một nguồn phát Bằng cách đo thời gian phản hồi cũng như cường
độ từ trường đến các cảm biến, ta có thể tính toán được vị trí của các điểm đánh dấu
và thể hiện nó lên không gian 3D Phương pháp này cũng cho độ nhạy khá cao và được dùng trong các ứng dụng đòi hỏi thời gian thực Nhược điểm của phương pháp
Trang 15là bộ áo gắn cảm biến khá cồng kềnh và chỉ thực hiện trong môi trường ít nhiễu từ (ít kim loại) Thậm chí cả cốt sắt trong tường bê tông cũng có thể ảnh hưởng đến kết quả của phương pháp này [22]
Hình 1.12 Các cảm biến từ [22]
- Acoustic (hệ thống cảm biến âm thanh): Phương pháp này sử dụng các cảm biến
âm thanh để đánh dấu lên cơ thể người Tương tự như dùng cảm biến từ, phương pháp này đo thời gian phản hồi, cũng như cường độ âm từ một nguồn phát lên các cảm biến Sử dụng cảm biến âm thanh nên nó loại bỏ được sự ảnh hưởng của môi trường nhiễu từ so với phương pháp từ Đây là một phương pháp mới đang được nghiên cứu để ứng dụng vào các máy chơi game gia đình [22]
Hình 1.13 Bắt chuyển động bằng cảm biến âm dùng cho máy chơi game gia đình [22]
Trang 16- Electromechanical (hệ thống cảm biến cơ học): Hệ thống thu chuyển động của
đối tượng dựa trên một bộ khung xương cơ học Đối tượng sẽ mặc bộ khung cơ học này lên người và dữ liệu chuyển động sẽ được thu trực tiếp dựa trên chuyển động của bộ khung Kĩ thuật này có ưu điểm là độ chính xác cao, không phụ thuộc vào môi trường hoạt động, giá thành khá rẻ Tuy nhiên, cử động của đối tượng bị hạn chế bởi bộ khung cơ học và không linh hoạt trong việc thay đổi các điểm cử động [22]
Hình 1.14 Bộ xương cơ học [22]
- Optical Febric (hệ thống cảm biến sợi quang): Tương tự như phương pháp
dùng bộ xương cơ học, phương pháp này thay bộ xương cơ học bằng các sợi quang chạy khắp cơ thể Phương pháp này loại trừ được khiếm khuyết khi cử động của bộ xương cơ học và không bị ảnh hưởng bởi môi trường bên ngoài [22]
Hình 1.15 Sợi quang dành cho việc bắt cử động của bàn tay [22]
Trang 17o Không làm kéo dài thời gian làm việc hơn so với các công nghệ truyền thống Thậm chí, việc biểu diễn chuyển động có thể được kiểm thử với nhiều phong cách ứng với các diễn viên khác nhau Việc này tiết kiệm chi phí hơn
so với chỉ làm việc với một diễn viên nổi tiếng
o Thể hiện được chuyển động các chuyển động phức tạp với độ chính xác cao
o Các chương trình xử lí chuyển được làm bởi các hãng phát triển thứ 3 hoặc miễn phí giúp giảm chi phí rất nhiều
o Khi có vấn đề xuất hiện, việc thực hiện lại cảnh quay sẽ đơn giản hơn so với việc xử lí dữ liệu lỗi
o Các cử động không tuân theo định luật vật lí không thể bắt được Điển hình
là các động tác bay, nhảy xa,… trong các bộ phim điện ảnh vẫn cần phải có dụng cụ hỗ trợ
o Các kĩ thuật biểu diễn hoạt họa truyền thống như “squash and stretch” (biến dạng vật thể theo chuyển động) không thể được thực hiện bằng MoCap và phải được thêm vào sau khi quá trình MoCap được thực hiện
o Khi thực hiện MoCap với những nhân vật máy tính đặc biệt như: khổng lồ, tí hon, quái vật,… diễn viên cần hết sức lưu ý trong khi thể hiện các cử động vật lí Ví dụ như một con quái vật lưng gù không thể đứng thẳng được 1.4 Định Hướng Đề Tài:
Qua phần tổng quan trên, ta có thể thấy, MoCap thực sự là một công nghệ hấp dẫn đối với bất kì nhóm phát triển nào Tuy nhiên, để thực hiện MoCap cần cung cấp những thiết bị phần cứng hết sức chuyên dụng Và việc đánh dấu các điểm mốc cũng là một thách thức với những người mới lần đầu thực hiện MoCap Với những
cử động phức tạp như khuôn mặt, số điểm đánh dấu có thể lên tới vài trăm điểm Điều này thực sự gây khó khăn cho những công ty nhỏ hoặc các nhóm phát triển nhỏ lẻ Với mong muốn công nghệ MoCap được phổ biến rộng rãi kẻ cả đối với các
cá nhân có ý định xây dựng sản phẩm ứng dụng công nghệ này, em xin được đề xuất nghiên cứu và thực hiện một phương pháp MoCap không cần sử dụng điểm
đánh dấu vật lí và chỉ cần một webcam thông dụng, đó là phương pháp “Optical Maskless” (hệ thống quang học không cần đánh dấu) Phương pháp được thực hiện
để thu lại cử động khuôn mặt và áp chuyển động đó lên mô hình 3D
Ý tưởng cơ bản của phương pháp này là sử dụng webcam thu lại khuôn mặt người Sau đó, sử dụng một thuật toán để chiết xuất ra các điểm mốc đánh dấu của khuôn mặt Thu lại chuyển động của khuôn mặt đó rồi áp nó lên một mô hình 3D đã được
Trang 18dựng sẵn Như vậy, phương pháp này sẽ bắt các điểm đánh dấu một cách tự động chỉ với một webcam đơn giản Việc áp chuyển động lên mô hình có thể được thực hiện khá dễ dàng nhờ các phần mềm xử lí chuyển động chuyện nghiệp
Để thực hiện được điều này, phương pháp sử dụng phối hợp 2 thuật toán chính: một thuật toán cho việc bắt khuôn mặt và một cho chiết xuất các điểm đánh dấu Với việc bắt khuôn mặt, ta sử dụng thuật toán Viola – Jones kkhá phổ biến và được cài đặt sẵn trong OpenCV Với việc chiết xuất các điểm đánh dấu, ta sử dụng thuật toán ASM (active shape model) Dữ liệu chuyển động được đóng gói thành file *.c3d và
xử lí trên phần mềm “Autodesk Motion Builder”
Trang 19CHƯƠNG 2:
CƠ SỞ LÍ THUYẾT CỦA PHƯƠNG PHÁP
MOCAP SỬ DỤNG HỆ THỐNG QUANG HỌC KHÔNG ĐÁNH DẤU
Cách thức bắt giữ chuyển động được thực hiện dựa trên phương pháp của Abraham Ranardo Sumarsono và Iping Supriana Suwardi [18]
Để bắt giữ chuyển động khuôn mặt, hai tác giả thực hiện theo mô hình sau:
Hình 2.1 Quá trình MoCap khuôn mặt
Như ta thấy ở trên, để bắt giữ chuyển động của khuôn mặt, ta thu khuôn mặt bằng một máy quay thông dụng (ở đây ta dùng webcam) Với mỗi frame ảnh của video,
ta dùng một thuật toán phát hiện khuôn mặt để xác định vùng ảnh cần xử lí cho công đoạn kế tiếp Sau khi xác định được vùng ảnh chứa khuôn mặt, ta dùng một thuật toán để chiết xuất ra các điểm đặc trưng trên khuôn mặt Các điểm đặc trưng này được thay thế cho việc gắn các điểm đánh dấu vật lí trực tiếp lên khuôn mặt như phần tổng quan đã trình bày Số lượng các điểm đặc trưng cũng như vị trí đánh dấu phụ thuộc vào người thực hiện và được thể hiện thông qua quá trình huấn luyện Sau đó, ta ghi lại dữ liệu chuyển động qua các frame của các điểm đặc trưng này, kết xuất thành một file dữ liệu Với file dữ liệu chuyển động ghi được, ta sử dụng một phần mềm xử lí chuyển động để áp nó lên một mô hình 3D Cuối cùng, ta được một mô hình khuôn mặt 3D với chuyển động giống như chuyển động khuôn mặt trên video
Vì công việc bắt chuyển động được thực hiện online thông qua webcam, nên ta sử dụng thuật toán bắt khuôn mặt Viola-Jones và thuật toán chiết xuất các điểm đặc trưng ASM Hai thuật toán được chọn vì những ưu thế trong tốc độ cũng như độ chính xác tương đối cao phù hợp với xử lí thời gian thực
2.1 Thuật Toán Phát Hiện Khuôn Mặt Viola-Jones:
Trang 20Đây là phương pháp phát hiện khuôn mặt của Paul Viola và Michael Jones đề xuất vào năm 2001 Phương pháp sử dụng đặc trưng Haar-Like kết hợp với máy phân lớp Ada Boost giúp tăng tốc độ của chương trình [13]
f(x) = Tổngvùng đen(các mức xám của pixel) - Tổngvùng trắng(các mức xám của pixel) (2.1)
Để tăng tốc độ tính toán và xử lí, Viola-Jones đề xuất một khái niệm mới là Intergral Image (tích phân ảnh) Intergral Image là một mảng hai chiều có kích thước bằng kích thước của ảnh đang xét Khi đó, tổng mức xám của 1 vùng được tính như sau:
Trang 21Để sử dụng đặc trưng HaarLike cho việc phát hiện khuôn mặt, ta phải xây dựng một
bộ huấn luyện cho mỗi đặc trưng này Cụ thể, đặt mỗi đặc trưng HaarLike lên vùng mặt trên hàng nghìn bức ảnh huấn luyện Tính toán các giá trị đặc trưng Haarlike, ta được một bộ huấn luyện dùng để phát hiện khuôn mặt Khi tiến hành detect khuôn mặt với 1 ảnh đầu vào, ta quét ảnh với một vùng có kích thước cố định Tính giá trị đặc trưng HaarLike của vùng này và so khớp với bộ huấn luyện theo một ngưỡng sai lệch, ta sẽ tìm ra vùng nào có chứa khuôn mặt người [1][13][14][17]
2.1.2 Máy phân lớp AdaBoost:
Adaboost là một phương pháp máy học hoạt động trên nguyên tắc kết hợp các bộ phân loại yếu ( weak classifiers) để hình thành một bộ phân loại mạnh (strong classifier)
Là một cải tiến của tiếp cận boosting, AdaBoost sử dụng thêm khái niệm trọng số (weight) để đánh dấu các mẫu khó nhận dạng Trong quá trình huấn luyện, cứ mỗi weak classifiers được xây dựng, thuật toán sẽ tiến hành cập nhật lại trọng số để chuẩn bị cho việc xây dựng weak classifier kế tiếp: tăng trọng số của các mẫu bị nhận dạng sai và giảm trọng số của các mẫu được nhận dạng đúng bởi weak classifier vừa xây dựng Bằng cách này weak classifer sau có thể tập trung vào các mẫu mà các weak classifiers trước nó làm chưa tốt Sau cùng, các weak classifers sẽ được kết hợp tùy theo mức độ tốt của chúng để tạo nên strong classifier
fk: giá trị của đặc trưng Haar-like
pk: hệ số quyết định chiều của phương trình
Trang 222.1.3 Hoạt động của thuật toán Viola-Jones:
Viola Jones hoạt động theo sơ đồ sau:
Hình 2.6 Nguyên lí hoạt động của thuật toán Viola-Jones [17]
Như trong hình trên, từ ảnh gốc ban đầu, ta sẽ được tính Integral Image, là mảng 2 chiều với phần tử (x, y) sẽ được tính bằng tổng của các phần tử (x', y') với x' < x và y' < y, mục đích là để tính nhanh tổng của các giá trị mức xám của một vùng hình chữ nhật bất kỳ trên ảnh gốc Các vùng ảnh con này sẽ được đưa qua các hàm Haar
cơ bản để ước lượng đặc trưng, kết quả ước lượng sẽ được đưa qua bộ điều chỉnh AdaBoost để loại bỏ nhanh các đặc trưng không có khả năng là đặc trưng của khuôn mặt người Chỉ có một tập nhỏ các đặc trưng mà bộ điều chỉnh AdaBoost cho là có khả năng là đặc trưng của khuôn mặt người mới được chuyển sang cho bộ quyết định kết quả Bộ quyết định sẽ tổng hợp kết quả là khuôn mặt người nếu kết quả của các bộ phân loại yếu trả về là khuôn mặt người
Mỗi bộ phân loại yếu sẽ quyết định kết quả cho một đặc trưng Haar-like, được xác định ngưỡng đủ nhỏ sao cho có thể vượt được tất cả các bộ dữ liệu mẫu trong tập dữ liệu huấn luyện (số lượng ảnh khuôn mặt trong tập huấn luyện có thể rất lớn) Trong quá trình xác định khuôn mặt người, mỗi vùng ảnh con sẽ được kiểm tra với các đặc trưng trong chuỗi các đặc trưng Haar-like, nếu có một đặc trưng Haar-like nào cho
ra kết quả là khuôn mặt người thì các đặc trưng khác không cần xét nữa Thứ tự xét các đặc trưng trong chuỗi các đặc trưng Haar-like sẽ được dựa vào trọng số (weight) của đặc trưng đó do AdaBoost quyết định dựa vào số lần và thứ tự xuất hiện của các đặc trưng Haar-like [17]
2.2 Thuật Toán Chiết Xuất Các Điểm Đặc Trưng ASM:
Thuật toán ASM (Active Shape Model) là thuật toán chiết xuất các điểm đặc trưng của một đối tượng cụ thể, do Cootes và Taylor đề xuất vào năm 2004 [19][20] Phục vụ cho mục đích MoCap khuôn mặt, thuật toán được sử dụng để tự động chiết xuất các điểm đặc trưng của khuôn mặt thay cho các điểm đánh dấu vật lí của phương pháp MoCap truyền thống Các điểm đặc trưng được quyết định và đánh dấu bởi người phát triển
Trang 23Phục vụ cho mục đích của bài toán, một shape được biểu diễn dưới dạng một vector
kích thước 2n × 1 với n là số điểm của shape, nửa đầu chứa các giá trị x và nửa sau
chứa các giá trị giá trị y Các cạnh giữa các điểm không cần thiết phải được lưu trữ
vì bài toán chỉ cần quan tâm đến các điểm của shape (shape point)
Đỉnh của một shape (shape point) cũng là điểm đánh dấu (landmark) hay các điểm đặc trưng (feature point) Shape dùng trong bài được hiểu là hình dạng của khuôn mặt (face shape)
b Align shape:
Align shapes (phép dóng shape) là một phép biến hình có tác dụng thu hẹp khoảng cách giữa các shape đến mức nhỏ nhất Hay nói cách khác, phép align shape có nhiệm vụ xếp chồng các shape có số đỉnh bằng nhau lên nhau Đồng thời, tỉ lệ và xoay các shape sao cho chúng khớp nhau nhất
Hình 2.9 Align các hình chữ nhật có kích thước khác nhau [19]
Trang 24Theo định nghĩa trên, ta có thể thấy, phép align shape là sự kết hợp giữa 3 phép biến hình: tịnh tiến, xoay, tỉ lệ Tuy nhiên, không phải lúc nào ta cũng thực hiện đồng thời cả 3 phép này Phép align shape còn được gọi là phép biến đổi tương tự (similarity transform)
Cụ thể, một phép biến đổi tương tự T lên một điểm với tọa độ (x, y), góc quay θ, tỉ
lệ s và tịnh tiến một khoảng x translate , y translate có thể được biểu diễn bằng công thức:
(2.3)
Bảng 2.1 Thuật toán align shape
Cách thức tìm các tham số cho phép align được trình bày ở phần phụ lục A
2.2.2 Sơ lược về ASM:
Phần này cung cấp một cái nhìn tổng quan nhất về cấu trúc hoạt động của thuật toán
ASM và giới thiệu 2 mô hình tạo nên thuật toán: shape model, profile model
ASM làm việc với tập huấn luyện với các điểm landmark đã được đánh dấu trước Việc đánh dấu được thực hiện bằng tay trước khi quá trình huấn luyện bắt đầu
Hình 2.10 Đánh dấu các điểm landmark trong tập huấn luyện [19]
Input: Tập các shape chưa align
1 Chọn một shape làm chuẩn (thường lấy shape đầu tiên)
2 Repeat:
a. Áp dụng phép biến đổi tương đương T lên các
shape chưa align còn lại so
3 Until: Duyệt hết các shape trong tập shape chưa align Output: Tập các shape đã align
Trang 25Sau khi kết thúc quá trình huấn luyện, ta dùng ASM để tìm kiếm các điểm đặc trưng của khuôn mặt trên ảnh đầu vào Ý tưởng cơ bản của thuật toán là xác định các điểm đặc trưng của khuôn mặt bằng cách mô tả vùng ảnh xung quanh nó và chỉ ra mối quan hệ của nó với các điểm khác Để làm được điều này, ASM cung cấp 2 mô hình:
- Profile model: Có nhiệm vụ mô tả vùng ảnh xung quanh mỗi điểm landmark
Nói cách khác, mô hình này chỉ ra rằng, vùng ảnh sẽ “trông như thế nào?” tương ứng với mỗi điểm landmark Trong quá trình huấn luyện, ta tạo thành các profile training cho mỗi điểm landmark bằng cách lấy mẫu ảnh xung quanh mỗi điểm landmark trong tập ảnh huấn luyện Trong quá trình tìm kiếm, ta lấy mẫu vùng ảnh của các điểm xung quanh landmark khởi tạo Điểm được chọn là điểm khớp với các profile training nhất Tập hợp các điểm tìm được dựa trên landmark khởi tạo, ta có tập các điểm kiểm thử (suggested point) tạo thành shape kiểm thử (suggested shape) [19]
- Shape model: Có nhiệm vụ định nghĩa mối quan hệ của mỗi điểm landmark so
với các điểm còn lại Trong quá trình tìm kiếm, shape kiểm thử tìm ra được có thể không đúng với hình dạng khuôn mặt, shape model sẽ giúp bóp méo lại shape kiểm thử sao cho đúng với hình dạng khuôn mặt nhất Lấy ví dụ, nếu shape kiểm thử là một khuôn mặt có một cái mũi rất dài thì shape model sẽ giúp co ngắn cái mũi đó lại [19]
Chi tiết về profile model và shape model sẽ được trình bày ở phần sau
2.2.3 Profile model và shape model:
a Profile model:
Profile model có nhiệm vụ trích xuất ra khuôn mặt trung bình từ tập huấn luyện và sinh ra shape kiểm thử bằng cách di chuyển các điểm landmark của shape khởi tạo được tạo ra từ khuôn mặt trung bình đến vị trí thích hợp nhất Ta bắt đầu việc tìm kiếm với khuôn mặt khởi tạo, align và định vị nó với khuôn mặt tổng thể lấy từ chương trình phát hiện khuôn mặt
Trong nội dung đồ án này, ta sẽ làm việc với profile 1 chiều (1D profile) Có thể tham khảo về profile 2 chiều (2D profile) tại phần 5.5 của [19]
Tạo profile:
1D Profile của một điểm landmark được tổ chức thành một vector kích thước n × 1
Để tạo thành một profile vector g tại một điểm landmark, ta lấy mẫu cường độ điểm ảnh dọc theo một vector một chiều đi qua điểm landmark gọi là whisker Whisker là một vector một chiều đi qua điểm landmark và vuông góc với cạnh khuôn mặt tại điểm đó [19]
Trang 26Hình 2.11 Whisker được thể hiện dưới các đường thẳng màu trắng
Đầu tiên, ta tiến hành xám hóa ảnh, việc tạo thành profile được thực hiện qua các bước sau [19]:
- Đặt giá trị cho các thành phần của vector g bằng giá trị mức xám dọc theo whisker
- Lấy giá trị cường độ mức xám qua các pixel ảnh trên whisker (màu trắng)
Hình 2.12 Màu vàng là cạnh khuôn mặt
Màu trắng là whisker
- Chuyển các giá trị mức xám của g thành cường độ gradient bằng cách thế mỗi
giá trị tại vị trí i của g bằng trị trung bình giữa nó và i + 1
Trang 27 Xây dựng profile model trong quá trình huấn luyện [19]:
Trong quá trình huấn luyện, với mỗi ảnh trong tập huấn luyện, ta tiến hành xây dựng các profile cho mỗi điểm landmark trong ảnh Sau đó, ta tính được profile trung bình và ma trận hiệp phương sai cho mỗi điểm landmark
Ví dụ, nếu chiều dài của profile g là 7 thì sẽ có 7 phần tử và sẽ là một ma trận 7x7
Nếu bộ huấn luyện có 20 điểm landmark thì ta sẽ có 20 profile trung bình và 20
ma trận hiệp phương sai cho toàn bộ tập huấn luyện
Trong đó:
- i = 1 n
- n: số lượng điểm landmark
- m: số lượng ảnh huấn luyện
Tạo thành shape kiểm thử [19]:
Bắt đầu với khuôn mặt khởi tạo (start shape) lấy được từ phương pháp phát hiện khuôn mặt, tại mỗi điểm landmark của khuôn mặt khởi tạo, ta tiến hành lấy mẫu profile của các điểm dọc theo whisker đi qua điểm đó và chọn ra điểm có profile tốt nhất
Việc đánh giá profile được tính dựa trên khoảng cách giữa nó với profile trung bình tương ứng với điểm đó từ bộ huấn luyện Profile nào có khoảng cách ngắn nhất so với profile trung bình thì điểm tương ứng với profile đó được chọn làm điểm kiểm thử (suggested point) Tập hợp các điểm kiểm thử có được sau khi tìm kiếm với các điểm landmark còn lại, ta được shape kiểm thử
Khoảng cách được sử dụng để đánh giá là khoảng cách Mahalanobis được tính như sau:
Bảng 2.2 Thuật toán tạo thành shape kiểm thử
Input: Ảnh đầu vào
1 Phát sinh shape khởi tạo bằng cách định vị khuôn mặt qua phương pháp
phát hiện khuôn mặt
2 Repeat:
3 For: với mỗi điểm landmark của shape khởi tạo
a For: Với mỗi điểm ảnh nằm trên whisker đi qua điểm landmark
i Tạo profile của điểm đó bằng cách lấy mẫu vùng ảnh xung quanh nó
ii Đánh giá profile mới tạo so với tập huấn luyện
b Chọn ra profile tốt nhất
4 Chọn điểm landmark tương ứng với profile tốt nhất làm điểm kiểm thử
5 Until: Duyệt hết các điểm landmark trong shape khởi tạo
Trang 28Chi tiết về việc tìm shape khởi tạo sẽ được trình bày ở phần sau
b Shape model:
Nhiệm vụ của shape model là biến shape kiểm thử được sinh ra từ profile model thành khuôn mặt (face shape) chính thức Trước đó, ta cần phải align tất cả các shape trong tập huấn luyện.Việc align là cần thiết vì ảnh huấn luyện rất đa dạng gây khó khăn cho việc tính shape trung bình Sau khi align xong, ta tính được shape trung bình từ tập shape đã align Khi đó, một shape bất kì có thể được định nghĩa bằng công thức sau [19][20]:
Trong đó:
là shape được sinh ra
̅ là shape trung bình được tính từ các shape huấn luyện đã được align:
Lưu ý rằng, ta không sử dụng hết các trị riêng tìm được Sau khi sắp xếp giảm dần,
ta sẽ thấy có một số trị riêng cao hơn hẳn các giá trị còn lại Ta chỉ sử dụng các vector riêng tính từ các trị riêng này Để lựa chọn được các trị riêng như vậy, ta thỏa mãn bất đẳng thức sau:
(2.12) Trong đó:
λi: Trị riêng thứ i
f v: tỉ lệ thay đổi mong muốn (thường chọn là 0.98)
Với công thức (2.9), ta có thể suy ra được rất nhiều shape khác nhau bằng cách thay
đổi giá trị tham số vector b Vậy, để có được khuôn mặt chính thức từ shape kiểm thử, ta tiến hành đi tìm b
Gọi x là shape kiểm thử, Ta tìm b sao cho khoảng cách sau là nhỏ nhất
(2.13)
Trang 29Công thức trên có nghĩa rằng, shape được sinh ra từ b phải có khoảng cách so với shape kiểm thử là nhỏ nhất Phép align T là cần thiết vì x có thể ở bất cứ đâu trong
ảnh và ta phải tiến hành đưa shape mới tìm được về đúng vị trí của khuôn mặt trên ảnh
Để tìm b, ta làm các bước sau [20]:
- Gọi Y là shape kiểm thử
- Khởi tạo vector tham số b = 0
- Phát sinh shape theo công thức = ̅ + Φ với b vừa khởi tạo
- Tìm các tham số của phép align (s, Φ, t x , t y ) T để x align vào shape kiểm thử
Tuy nhiên, ta không thực hiện phép align này
- Thế các tham số vừa tìm được vào phép align ngược lên shape kiểm thử Y:
(2.14) Phép align ngược lên một shape là phép biến hình sao cho:
Ta chỉ cần đảo các tham số và thế vào công thức phép biển đổi tương tự để thực
hiện phép align này (1/s, -Φ, -t x , -t y)
- Thực hiện phép tỉ lệ:
=
( ̅) (2.15) Lưu ý, phép nhân ( ̅) là tích vô hướng giữa 2 vector
tử trong b được đặt trong ngưỡng từ [−3 , 3 ] [19][20]
Hình 2.13 Bên trái: shape kiểm thử Bên phải: shape được sinh ra từ shape model dựa trên shape kiểm thử cho ra kết quả tốt hơn
Trang 30CHƯƠNG 3:
KINH NGHIỆM THỰC HIỆN TRONG QUÁ
TRÌNH TRIỂN KHAI PHƯƠNG PHÁP
Chương này sẽ trình bày cách thức triển khai 2 thuật toán Đồng thời truyền đạt lại những kinh nghiệm và khó khăn gặp phải trong quá trình cài đặt và thực hiện
phương pháp MoCap này
3.1 Quá Trình Thực Hiện Viola-Jones:
3.1.1 Huấn luyện:
a Tạo bộ huấn luyện:
Như đã trình bày ở trên, ta sẽ làm việc với các đặc trưng Haar-Like của tập ảnh huấn luyện Để lấy các đặc trưng Haar-Like cũng như kết xuất file chứa thông tin của quá trình huấn luyện, ta down bộ công cụ tại trang blog:
Trang 31Hình 3.2 Positive Image
Hình 3.3 Negative Image
Bỏ tất cả các ảnh positive trong thư mục /temp/positive/rawdata
Chạy file objectmarker.exe trong /temp/positive/ Bắt đầu tiến hành đánh dấu khuôn mặt trong các ảnh huấn luyện Ấn space để kết thúc đánh dấu Ấn Enter để qua ảnh tiếp theo Tất cả thông tin về vùng đánh dấu sẽ được lưu trong info.txt
Trang 32Hình 3.4 Thông tin về vùng ảnh được bắt
Hình 3.5 File info.txt
Bỏ tất cả ảnh Negative vào thư mục temp\negative chạy file create_list.bat Công đoạn này sẽ liệt kê tất cả các ảnh negative có trong thư mục Kết quả sẽ được kết xuất ra file info.txt như sau:
Tạo file mô tả vec cho tập huấn luyện:
D:\TaiLieu\ThucTap\Tool\Make Training\temp\createsamples.exe -info positive/info.txt -vec data/vector.vec -num 527 -w 24 -h 24
Với:
-info là file mô tả các vùng khuôn mặt đã được đánh dấu trước đó ở ảnh positive -vec tên của file vec được tạo thành
-num là số ảnh positive
-w -h lần lượt là chiều rộng và dài của vùng mẫu output
Bắt đầu huấn luyện:
Trang 33D:\TaiLieu\ThucTap\Tool\Make Training\temp\haartraining.exe -data data/cascade -vec data/vector.vec -bg negative/infofile.txt -npos 527 -nneg 1142 -nstages 30 -mem 1000 -mode ALL -w 24 -h 24 –nonsym Với:
-data nơi kết xuất file huấn luyện
-vec file mô tả các ảnh positive
-bg là file mô tả các ảnh negative
-npos là số ảnh positive
-nneg là số ảnh negative
-nstage số bộ phân lớp mạnh được tạo thành Số càng lớn, nhận diện càng chính xác nhưng việc kết xuất file huấn luyện sẽ mất thời gian hơn
-num dung lượng bộ nhớ dùng cho việc huấn luyện, tính theo MB
-mode các chế độ lựa chọn cho đặc trưng HaarLike dùng cho việc huấn luyện Có 3 chế độ là BASIC|CORE|ALL Trong đó, BASIC chỉ sử dụng các đặc trưng là hình chữ nhật đứng và ALL là sử dụng tất cả các đặc trưng HaarLike mà OpenCV hỗ trợ bao gồm cả các hình chữ nhật nghiêng 45 độ
-w –h độ rộng và dài của các vùng ảnh chứa đối tượng Tham số này phải giống như tham số ở trong file vec
Hình 3.6 Quá trình huấn luyện ảnh
Xuất hiện file AdaBoostCARTHaarClassifier.txt và vector.vec Thế toàn bộ file trong haar\cascade2xml\data bằng các file trong haar\temp\data\cascade Copy 2 file AdaBoostCARTHaarClassifier.txt và vector.vec vào thư mục haar\cascade2xml Chạy file convert.bat để kết xuất ra file output.xml [2][4][5][6][8]
b Cấu trúc file huấn luyện XML:
Trang 34Như vậy, kết thúc quá trình huấn luyện, ta được bộ phân lớp AdaBoost được ghi dưới dạng file XML Sau đây, ta sẽ tìm hiểu về cấu trúc tổ chức dữ liệu cũng như cách thức truy xuất thông tin trong file huấn luyện XML của OpenCV
Dưới đây là một đoạn của bộ phân lớp:
<opencv_storage>
<haarcascade_frontaleye type_id="opencv-haar-classifier"> <size>