CƠ SỞ LÝ THUYẾT
Giới thiệu về phần mềm mã nguồn mở
Dò tìm và xác định mặt người là một kỹ thuật máy tính giúp xác định kích thước và vị trí của khuôn mặt trong ảnh, video hoặc từ camera Kỹ thuật này nhận diện các đặc trưng của khuôn mặt, đồng thời loại bỏ các yếu tố ngoại cảnh như cây cối và nhà cửa.
1.1.2 Những yếu tố ảnh hưởng đến bài toán
Có nhiều yếu tố ảnh hưởng đến việc nhận dạng đối tượng:
Tư thế và góc chụp ảnh ảnh hưởng lớn đến hướng khuôn mặt, có thể là nhìn thẳng, nghiêng hoặc từ trên xuống Sự thay đổi này làm cho các thành phần trên khuôn mặt như mắt, mũi, miệng có thể bị khuất một phần hoặc hoàn toàn.
Sự hiện diện hoặc thiếu vắng một số thành phần không đặc trưng cho khuôn mặt người, chẳng hạn như mắt kính râm hay râu, đã làm cho vấn đề trở nên phức tạp hơn rất nhiều.
- Sự che khuất: mặt người có thể bị che khuất bởi các đối tượng khác
Sự biểu cảm của khuôn mặt có khả năng thay đổi đáng kể các đặc trưng và thông số của khuôn mặt Chẳng hạn, khuôn mặt của một người sẽ trông rất khác biệt khi họ cười, tức giận hay sợ hãi.
- Sự phức tạp của hình nền: hình nền phức tạp sẽ khiến xác định khuôn mặt trở nên khó khăn
Ảnh chụp trong các điều kiện khác nhau, như ánh sáng và loại thiết bị (máy ảnh kỹ thuật số, webcam, v.v.), có ảnh hưởng đáng kể đến chất lượng khuôn mặt.
1.1.3 Các phương pháp pháp dò tìm khuôn mặt
Có 4 phương pháp xác định khuôn mặt trên ảnh, tương ứng với 4 hướng tiếp cận khác nhau
Hướng tiếp cận dưa trên tri thức sử dụng các thuật toán để mã hóa đặc trưng và quan hệ giữa các thành phần của khuôn mặt thành các luật Những luật này thường phản ánh mối quan hệ giữa các phần trên khuôn mặt và phụ thuộc nhiều vào kiến thức của các nhà nghiên cứu Một thách thức lớn trong phương pháp này là chuyển đổi tri thức con người thành các luật một cách hiệu quả Nếu các luật quá chi tiết, quá trình nhận diện khuôn mặt có thể gặp sai sót trong việc phân loại các đối tượng.
Một số đối tượng không đáp ứng đủ các tiêu chí của luật đã được thiết lập Tuy nhiên, các quy định quá chung chung có thể dẫn đến việc nhận diện nhầm một khu vực nào đó không phải là khuôn mặt, nhưng lại bị xác định là khuôn mặt.
Hướng tiếp cận dựa trên đặc trưng bất biến trong nhận diện khuôn mặt tập trung vào việc phát triển các thuật toán nhằm xác định các đặc trưng không bị ảnh hưởng bởi tư thế khuôn mặt, vị trí camera hay điều kiện ánh sáng Tuy nhiên, các thuật toán này cần được điều chỉnh để thích ứng với những yếu tố như ánh sáng, nhiễu và sự che khuất Một thách thức lớn là bóng của đối tượng có thể tạo ra các cạnh mới, làm cho việc xác định đối tượng trở nên khó khăn hơn.
Hướng tiếp cận dựa trên so sánh khớp mẫu sử dụng mẫu chuẩn của khuôn mặt đã được lưu trữ để mô tả và phát hiện các đặc trưng khuôn mặt Quá trình này bao gồm việc quét ảnh và tính toán giá trị tương đồng cho từng vị trí, với sự xuất hiện của khuôn mặt phụ thuộc vào giá trị này so với mẫu chuẩn Mặc dù phương pháp này dễ cài đặt, nhưng hiệu quả của nó giảm khi tỷ lệ, tư thế và hình dáng khuôn mặt thay đổi.
Hướng tiếp cận dựa trên diện mạo khác với phương pháp so sánh khớp mẫu, khi mà các mô hình được học từ tập ảnh huấn luyện thể hiện tính chất tiêu biểu của sự xuất hiện của mặt người Các thuật toán áp dụng kỹ thuật phân tích thống kê và máy học để xấp xỉ một hàm phân lớp tuyến tính, từ đó giúp hệ thống xác định mặt người Phương pháp này thường được gọi là tiếp cận theo các phương pháp học máy.
Giới thiệu đặc trưng Haar - Like
Đặc trưng Haar - Like của Viola và Jones là những đặc trưng ảnh số quan trọng trong nhận dạng đối tượng, đặc biệt là trong việc dò tìm khuôn mặt Những đặc trưng này cho phép nhận dạng nhanh chóng và chính xác trong thời gian thực Trước đây, các phương pháp nhận dạng thường dựa vào cường độ sáng tối của ảnh, yêu cầu tính toán lớn trên từng điểm ảnh Để khắc phục vấn đề này, Viola và Jones đã phát triển ý tưởng sử dụng các hình chữ nhật lân cận trong cửa sổ dò tìm, giúp tối ưu hóa quá trình phát hiện đối tượng.
Đặc trưng Haar - Like là một phương pháp dò tìm đối tượng hiệu quả, sử dụng tập hợp các hình chữ nhật liền kề để xác định vị trí của đối tượng cần tìm trong cửa sổ phát hiện Quá trình trích xuất đặc trưng này bao gồm việc di chuyển cửa sổ kích thước trên ảnh và tính toán trên từng vùng nhỏ, sau đó so sánh với ngưỡng để phân biệt đối tượng Ưu điểm nổi bật của Haar - Like là tốc độ tính toán nhanh chóng nhờ vào việc sử dụng tích phân ảnh (Integral images), cho phép trích xuất đặc trưng với bất kỳ kích thước nào trong thời gian liên tục Những đặc trưng này phản ánh sự tương phản giữa các mối liên hệ của đối tượng, giúp xác định và phát hiện đối tượng thông qua các liên hệ không gian giữa chúng.
Để huấn luyện bộ phân lớp trong phương pháp Viola-Jones, việc phân tầng với các bộ phân lớp được nâng cao dần là cần thiết, sử dụng hàng trăm mẫu đối tượng để dò và phát hiện Những mẫu này bao gồm các hình ảnh có đối tượng (mẫu khẳng định) và không có đối tượng (mẫu phủ định), với kích thước co giãn 20x20 Bộ phân lớp sẽ trả về giá trị một nếu vùng tìm kiếm giống đối tượng quan tâm, và giá trị không nếu không phải Quá trình này bao gồm việc di chuyển cửa sổ tìm kiếm dọc theo ảnh để xác định vị trí của đối tượng trong toàn bộ bức ảnh từ camera, đặc biệt hữu ích trong việc tìm kiếm các đối tượng có kích thước chưa xác định.
11 cần phải có một thuật toán quét qua ảnh trong nhiều lần với tỷ lệ co giãn khác nhau để tìm được đối tượng mà chúng ta quan tâm
Ảnh phân tích (Integral image) là một công cụ quan trọng giúp cải thiện khả năng rút trích đặc trưng Haar một cách chính xác và nhanh chóng Viola và Jones đã áp dụng phương pháp này để xử lý ảnh, nhằm tăng cường hiệu quả trong việc trích xuất thông tin.
Tại mỗi điểm (i,j) trong ảnh gốc, chúng ta tính tổng giá trị tất cả những điểm ảnh phía bên trái và ở trên so với điểm (i, j):
Hình 1.2: Tính toán vùng S dựa trên các vùng trước đó
Viola và Jones đã giới thiệu bốn đặc trưng cơ bản để nhận diện đối tượng và trích xuất các đặc trưng của chúng Mỗi đặc trưng Haar-like được cấu thành từ sự kết hợp của hai hoặc ba hình chữ nhật mang màu sắc "Trắng" hoặc "Đen".
Hình 1.3: Các đặc trưng Haar - Like cơ bản
Ngoài 4 đặc trưng cơ bản trên, để xác định các góc cạnh và cụ thể là các đường cong thì rất khó xác định chính xác Do đó, với bài toán khó như nhận dạng mặt người thì Viola và Jones đã mở rộng ra 3 tập (Nhóm) đặc trưng sau:
1 Đặc trưng cạnh (edge features):
2 Đặc trưng đường (line features):
3 Đặc trưng xung quanh tâm (center- surround features):
Hình 1.4: Các đặc trưng mở rộng từ đặc trưng Haar - Like
1.2.2 Trích đặc trưng Haar - Like từ ảnh Đặc trưng Haar - Like sẽ được diễn đạt được tri thức về các đối tượng trong ảnh (bởi vì nó biểu diễn mối liên hệ giữa các bộ phận của đối tượng) , điều mà bản thân từng điểm ảnh không thể diễn đạt được- dựa trên việc co dãn của khung cửa sổ tìm kiếm Để tính giá trị các đặc trưng Haar - Like, ta tính sự chênh lệch giữa tổng các Pixel của các vùng đen và các vùng trắng như công thức:
Tổng số Pixel trên ảnh, bao gồm Pixel vùng trắng và Pixel vùng đen, sẽ cung cấp các giá trị đặc trưng Haar-Like Tuy nhiên, việc tính toán này có thể khá phức tạp và tốn thời gian, dẫn đến khó khăn trong việc đáp ứng yêu cầu tính toán thời gian thực từ camera hoặc webcam.
13 laptop) Do đó Viola và Jones đề xuất một khái niệm gọi là “tích phân ảnh”
(Integral Image) để tính toán nhanh cho các đặc trưng cơ bản của Haar - Like
Mặc dù “tích phân ảnh” đã thu hút sự quan tâm của nhiều nhà nghiên cứu trong cộng đồng thị giác máy tính, nhưng việc tính toán các đặc trưng có góc quay vẫn còn gặp nhiều thách thức.
Việc tính toán các đặc trưng trong không gian 45 độ là rất phức tạp Để giải quyết vấn đề này, Lienhart đã kế thừa phương pháp Viola-Jones, phát triển khái niệm tích phân ảnh và giới thiệu RSAT - Bảng Tích phân Khu vực Xoay Tích phân ảnh được định nghĩa thông qua một mảng 2 chiều tương ứng với kích thước của ảnh cần tính toán.
Mỗi phần tử trong đạo hàm ảnh được tính bằng tổng của các điểm ảnh ở vị trí phía trên và bên trái của nó Quá trình này bắt đầu từ góc trên bên trái và di chuyển đến góc dưới bên phải, giúp thực hiện tính toán một cách nhanh chóng chỉ bằng phép cộng số nguyên đơn giản.
Hình 1.5: Các tính Integral Image của ảnh
Sau khi tính toán tích phân ảnh, việc xác định tổng điểm ảnh trong một khu vực bất kỳ trên ảnh trở nên rất đơn giản.
Tính toán với các đặc trưng căn bản:
Hình 1.6: Cách tính nhanh vùng D với các tổng các điểm ảnh trên ảnh
Tại điểm P4 trên đạo hàm ảnh, giá trị được xác định là A + B + C + D Tương tự, tại điểm P2, giá trị là A + B; tại điểm P3, giá trị là A + C; và tại điểm P1, giá trị là A.
Vậy ta có thể viết lại biểu thức tính D ở trên như sau:
Sử dụng RSAT – tính toán đặc trưng xoay
Hình 1.7: Các tính nhanh tổng điểm ảnh D trên ảnh với các đặc trưng xoay 45 0
Với các đặc trưng Haar- Like xoay 45 0 của tích phân ảnh tại một điểm (x, y) được tính theo công thức (Lienhart):
Tổng Pixel của một vùng bất kỳ (cụ thể vùng D) trên ảnh vẫn được tính theo cách sau:
Như vậy tổng các điểm ảnh trong một hình chữ nhật (kể cả trường hợp xoay
45 0 ) bất kì đều có thể thay đổi được tính nhanh dựa trên tích phân ảnh tại 4 đỉnh của nó:
Cách tính toán sử dụng các phép toán cộng và trừ, với độ phức tạp O(1), giúp tăng tốc độ xử lý các điểm trên ảnh, từ đó phù hợp cho các bài toán yêu cầu tính toán theo thời gian thực.
Hình 1.8: Cách trích đặc trưng Haar - Like
1.2.3 Mô hình Cascades of Boosted Classifiers
Trong quá trình huấn luyện, việc bộ phận phân loại xem xét tất cả các đặc trưng của mẫu trong tập huấn luyện tiêu tốn nhiều thời gian Tuy nhiên, không phải mẫu nào cũng khó nhận dạng; có những mẫu đơn giản chỉ cần một hoặc vài đặc trưng để nhận diện Các bộ phân loại thông thường, bất kể độ khó của mẫu, vẫn phải xem xét tất cả các đặc trưng đã học, dẫn đến việc xử lý mất thời gian không cần thiết.
Định vị đối tượng
Mô hình dò tìm đối tượng
Hình 1.16: Dò tìm đối tượng với Haar - Like Features- Cascade of Boosted
Sơ đồ trên mô tả quá trình tính toán giá trị đặc trưng Haar-Like thông qua phân tích ảnh (Integral Image) Kết quả này được đưa vào bộ điều chỉnh Adaboost để loại bỏ các đặc trưng không cần thiết, giảm thiểu số lượng đặc trưng Các đặc trưng còn lại sẽ được chuyển đến bộ phân lớp để xác định xem có phải là mặt người hay không Cấu trúc Cascade giúp tăng tốc độ nhận dạng nhờ vào việc loại bỏ sớm các mẫu sai (Background), thường có số lượng lớn hơn so với các mẫu đúng (object) chứa khuôn mặt cần nhận diện.
Hệ thống Viola và Jones nổi bật với độ chính xác cao, nhờ vào thuật toán cascade training và việc huấn luyện các bộ nhận dạng bằng Adaboost Các đặc trưng Haar-Like giúp mô tả tốt thông tin đối tượng, trong khi tính tích phân ảnh (Integral Image) cho phép tính nhanh các đặc trưng mà không làm giảm tốc độ nhận dạng của hệ thống.
Mô hình Haar-Like Features kết hợp với Cascade of Boosted Classifiers là một phương pháp hiệu quả cho việc nhận diện và định vị khuôn mặt người, nổi bật với tốc độ xử lý nhanh và độ chính xác cao.
Tổng quan về thư viện OpenCV
OpenCV (Thư viện Thị giác Máy tính Mã nguồn Mở) là một thư viện mã nguồn mở về thị giác máy tính và học máy do Intel phát triển Được giới thiệu vào tháng 1 năm 1999, phiên bản 1.0 của OpenCV đã ra mắt vào năm 2006.
Gói thư viện OpenCV bao gồm hơn 500 hàm và hơn 2500 thuật toán tối ưu, được phát triển bằng ngôn ngữ C/C++ và Python, tương thích với các hệ điều hành như Windows, Linux và Android Các thuật toán này hỗ trợ nhận dạng khuôn mặt và theo dõi chuyển động con người, giúp xây dựng ứng dụng nhanh chóng và nâng cao hiệu quả tính toán Kể từ khi ra mắt, OpenCV đã thu hút sự quan tâm của nhiều nhà nghiên cứu và các công ty lớn như Google, Yahoo, Microsoft, IBM, Sony, cùng với việc hình thành nhiều cộng đồng mạng để tham khảo và tra cứu thông tin.
Nhiều phiên bản đã được phát triển, đóng góp quan trọng vào sự tiến bộ của cộng đồng thị giác máy tính Những phiên bản này không chỉ cải thiện hiệu suất mà còn giúp bổ sung các giải pháp hiệu quả hơn cho các vấn đề hiện tại.
27 thuật đáp ứng như cầu thực tại, phiên bản 3.0 RC1 được phát hành 24-4-2005 là phiên bản mới nhất, hỗ trợ trên Windows, Linux/ Mac và iOS
Hình 1.18: Lịch sử các phiên bản OpenCV
1.4.2 Cấu trúc và ứng dụng của OpenCV
Cấu trúc của OpenCV gồm có 5 phần chính:
Hình 1.19: Cấu trúc cơ bản của OpenCV
Phần CV và CVAUX bao gồm các thư viện cơ bản phục vụ cho xử lý hình ảnh và các thuật toán máy tính Chức năng chính của phần này là hỗ trợ nhận dạng đối tượng, hiệu chỉnh Camera/Webcam, cũng như xử lý và phân tích chuyển động CV chứa các phương thức và hàm đã được ổn định, trong khi CVAUX bao gồm các chức năng thử nghiệm cho phiên bản tiếp theo, với các thư viện phục vụ cho việc phát hiện, theo dõi và nhận dạng đối tượng như khuôn mặt và mắt.
- Phần MLL là bộ thư viện về các thuật toán học máy, bao gồm nhiều bộ phân cụm và phân loại thống kê
- Phần HighGUI chứa đựng những thủ tục vào ra, các chức năng về lưu trữ cũng như đọc các file ảnh và video
- Phần CxCore dùng để tổ chức dữ liệu cơ sở, thực hiện các thuật toán
(các phép tính – các phép tính ma trận , hỗ trợ tài liệu XML, các thao tác cơ bản, vẽ, chú thích
Module thương mại cuối cùng của IPP cung cấp mã mở rộng tối ưu hóa cho phần cứng của Intel, giúp tăng tốc xử lý ứng dụng lớn Gói thư viện đi kèm bao gồm tài liệu hướng dẫn chi tiết về các chức năng của OpenCV, tập trung vào thu nhập, xử lý ảnh và các thuật toán phân tích dữ liệu ảnh.
Truy xuất ảnh và phim: đọc ảnh số từ camera, từ file, ghi ảnh và phim;
Cấu trúc dữ liệu ảnh số và các dữ liệu hỗ trợ cần thiết: ma trận, vector, chuỗi, xâu và cây
Xử lý ảnh căn bản bao gồm các kỹ thuật như tìm viền, nhận diện chuyển động, và thay đổi trong không gian 3D Ngoài ra, nó còn liên quan đến việc đối chiếu bản mẫu và xấp xỉ các đơn vị hình học cơ bản như mặt phẳng, đa giác, ellipse và đường thẳng.
Phân tích dữ liệu ảnh: nhận dạng đối tượng- thực tế, theo dõi các chi tiết và phân tích chuyển động
Để tạo một giao diện đơn giản, bạn nên hiển thị hình ảnh và cung cấp các thao tác bằng bàn phím, chuột, cũng như thanh trượt để điều chỉnh thông số Nếu cần thiết, bạn có thể tự tạo thêm các phím điều khiển thông qua thao tác chuột hoặc tích hợp các thư viện giao diện như wxWidgets.
Chức năng vẽ và chú thích lên ảnh là một tính năng quan trọng trong việc nhận dạng người trong hình ảnh, thường được áp dụng trong các ứng dụng mạng xã hội như Facebook.
Hình 1.20: Các khía cạnh và ứng dụng của OpenCV
Hình trên cho thấy một vài ví dụ về ứng dụng của OpenCV như nhận dạng khuôn mặt, nhận dạng viền, nhận dạng biên
1.4.3 Những đặc trưng của OpenCV
OpenCV có rất nhiều chức năng Sau đây là những tóm tắt cơ bản về hệ thống chức năng của các hàm trong OpenCV
Image và Video I/O cho phép người dùng truy xuất dữ liệu hình ảnh từ tập tin hoặc video trực tiếp Ngoài ra, người dùng còn có khả năng tạo ra các tập tin hình ảnh và video.
Thị giác máy tính và các thuật toán xử lý ảnh: cho phép thao tác với nhiều chuẩn thị giác máy mà không cần có mã nguồn của chúng
Module thị giác máy ở cấp độ cao của OpenCV cung cấp các tính năng như nhận dạng khuôn mặt, dò tìm và theo dõi Nó tích hợp luồng thị giác, kích cỡ camera và âm thanh nổi, mang đến khả năng xử lý hình ảnh và video hiệu quả.
Trí tuệ nhân tạo và máy học đóng vai trò quan trọng trong các ứng dụng thị giác máy, thường yêu cầu các phương pháp học máy hoặc hình thức trí tuệ nhân tạo khác Nhiều công cụ và thuật toán hữu ích trong lĩnh vực này đã được tích hợp sẵn trong gói OpenCV.
Lấy mẫu ảnh và phép biến đổi là công cụ hữu ích trong việc xử lý nhóm phần tử ảnh như một đơn vị OpenCV hỗ trợ nhiều chức năng như tách ảnh, lấy ngẫu nhiên, phục chế, xoay ảnh, làm cong ảnh và thay đổi hiệu ứng của ảnh.
Ảnh nhị phân là công cụ quan trọng trong việc kiểm tra khuyết điểm hình dạng và các bộ phận thiết yếu trong hệ thống Việc tạo và phân tích ảnh nhị phân giúp xác định rõ ràng các vật thể cần được theo dõi, từ đó nâng cao hiệu quả trong quá trình kiểm tra.
Các hàm tính toán thông tin 3D rất hữu ích trong việc sắp xếp và xác định các khối lập thể khi sử dụng thiết bị stereo hoặc khi làm việc với không gian nhìn phức tạp từ nhiều góc nhìn của một camera.
OpenCV cung cấp nhiều phép toán quan trọng cho xử lý ảnh, thị giác máy và biểu diễn ảnh, bao gồm các phép toán đại số học, thống kê và tính toán hình học.
Đồ họa: giúp người dùng viết chữ và vẽ trên hình ảnh Thêm vào đó những chức năng này được sử dụng nhiều trong ghi nhãn và đánh dấu