Cùng với sự bùng nổ thông tin, sự phát triển công nghệ cao, sự giao tiếp giữa con người và máy tính đang thay đổi rất nhanh, giờ đây giao tiếp này không còn đơn thuần dùng những thiết bị như chuột, bàn phím,… mà có thể thông qua các biểu hiện của khuôn mặt. Các hệ thống giao tiếp người máy đang được phát triển rất nhiều. Trong số đó, có thể nói đến hệ thống nhận dạng mặt người bằng hình ảnh. Nhận dạng mặt người là xác định danh tính tự động cho từng ảnh đối tượng người dựa vào nội dung của ảnh. Nhận dạng mặt người được ứng dụng trong thực tế như xác minh tội phạm, camera chống trộm, hệ thống chấm công, điểm danh học sinh trong các lớp ở các trường đại học, lưu trữ thông tin khuôn mặt ở các máy ATM,… Phát hiện mặt người trong ảnh là một phần quan trọng của hệ thống nhận dạng mặt người, giải quyết yếu tố việc phát hiện mặt người sẽ giúp tiết kiệm thời gian và nâng cao độ chính xác của việc nhận diện khuôn mặt. Hệ thống nhận dạng mặt người bao gồm 2 bước: phát hiện khuôn mặt người và định danh tự động đối tượng. Công việc chính dựa vào các kỹ thuật rút trích đặc trưng từ ảnh đối tượng và thực hiện đối sánh để định danh tự động. Hiệu quả của hệ thống nhận dạng phụ thuộc vào các phương pháp sử dụng. Bài báo cáo này nghiên cứu về OpenCV – thư viện xử lý ảnh mã nguồn mở và các giải thuật để nhận dạng, phát hiện đối tượng trên thời gian thực. Haar – Like là giải thuật máy học được áp dụng trong đề tài để trích các đặc trưng của đối tượng cần dò tìm, kết hợp với bộ phân tầng Cascade of Boosted Classifiers nhằm nhận dạng, phát hiện đối tượng trên mặt phẳng ảnh thông qua giải thuật Adaboost để phân lớp.
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à kỹ thuật máy tính được sử dụng để xác định kích thước và vị trí 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 bỏ qua 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, với các vị trí máy ảnh khác nhau như nhìn thẳng, nghiêng hoặc từ trên xuống Mỗi tư thế có thể làm cho các bộ phận trên khuôn mặt như mắt, mũi và miệng bị khuất một phần hoặc hoàn toàn, tạo ra những hiệu ứng khác nhau trong bức ảnh.
Sự hiện diện hoặc vắng mặt của các thành phần như mắt kính râm và râu có thể ảnh hưởng đến đặc điểm nhận diện của khuôn mặt Những chi tiết này không phải là đặc trưng riêng của khuôn mặt người, nhưng chúng có thể tạo ra ấn tượng mạnh mẽ và làm thay đổi cách nhìn nhận về người đó.
…Vấn đề này càng làm bài toán trở nên khó 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 đóng vai trò quan trọng trong việc thể hiện cảm xúc, và nó có thể làm thay đổi rõ rệt các đặc trưng cũng như thông số của khuôn mặt Chẳng hạn, khi một người cười, khuôn mặt của họ sẽ khác biệt hoàn toàn so với khi họ thể hiện sự tức giận hoặc 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 chiếu sáng khác nhau và với các thiết bị như máy ảnh kỹ thuật số hay webcam có ảnh hưởng lớn đến chất lượng khuôn mặt Tính chất ánh sáng và thiết bị sử dụng quyết định rõ nét và độ chân thực của hình ảnh.
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à mối quan hệ giữa các đặc trưng khuôn mặt thành các luật Những luật này phụ thuộc lớn vào tri thức của các nhà nghiên cứu Một thách thức lớn 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ể dẫn đến sai sót, khi đối tượng không đáp ứng tất cả các luật Ngược lại, nếu các luật quá tổng quát, có thể gây nhầm lẫn trong việc nhận diện khuôn mặt với các vùng không phải là khuôn mặt.
Hướng tiếp cận dựa trên đặc trưng bất biến tập trung vào việc phát triển các thuật toán nhận diện khuôn mặt không bị ảnh hưởng bởi tư thế, vị trí máy ảnh, điều kiện ánh sáng hay các yếu tố gây nhiễu khác 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 thay đổi về ánh sáng, nhiễu và bị 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, khiến cho việc xác định đối tượng trở nên khó khăn hơn, vì những cạnh này có thể nổi bật hơn so với các cạnh thực sự của khuôn mặt.
Hướng tiếp cận dựa trên so sánh khớp mẫu sử dụng các mẫu chuẩn của khuôn mặt đã được lưu trữ để mô tả các đặc trưng khuôn mặt Các mẫu này được lựa chọn theo tiêu chuẩn cụ thể để thực hiện so sánh, giúp phát hiện khuôn mặt bằng cách quét qua ảnh và tính toán giá trị tương đồng tại mỗi vị trí Sự xuất hiện của khuôn mặt trong ảnh phụ thuộc vào giá trị tương đồng của các điểm 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ả giảm sút 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 đặc điểm tiêu biểu của khuôn mặt người Các thuật toán sử dụng kỹ thuật phân tích thống kê và máy học để xấp xỉ hàm phân lớp tuyến tính, từ đó giúp hệ thống xác định khuôn mặt người Phương pháp này còn đượ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à công cụ 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, mang lại hiệu quả 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 chủ yếu 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 và điều chỉnh đặc trưng Haar - Like bằng cách sử dụng các hình chữ nhật lân cận tại một vị trí cụ thể trong cửa sổ dò tìm, từ đó nâng cao khả năng 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 hình chữ nhật liền kề để xác định vị trí của đối tượng cần tìm Quá trình trích xuất đặc trưng diễn ra bằng cách di chuyển cửa sổ kích thước trên ảnh và tính toán các vùng ảnh nhỏ, sau đó so sánh với ngưỡng học được để 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 nhờ vào việc sử dụng tích phân ảnh, 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 các đố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, cần sử dụng phân tầng với các bộ phân lớp nâng cao dần, được đào tạo từ hàng trăm mẫu đối tượng cần phát hiện Những mẫu này bao gồm mẫu khẳng định (có đối tượng) và mẫu phủ định (không có đối tượng) Bộ phân lớp sẽ trả về giá trị một nếu vùng ảnh tương tự như đối tượng quan tâm và giá trị không nếu không phải Quá trình tìm kiếm diễn ra bằng cách di chuyển cửa sổ tìm kiếm dọc theo ảnh để xác định vị trí của đối tượng Đối với các đối tượng có kích thước không xác định, cần áp dụng thuật toán quét ảnh nhiều lần với tỷ lệ co giãn khác nhau để phát hiện đối tượng mong muốn.
Ảnh tích phân là công cụ quan trọng giúp nâng cao độ chính xác và tốc độ rút trích các đặc trưng Haar Viola và Jones đã áp dụng phương pháp này để cải thiện hiệu quả trong việc nhận diện đối tượng.
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 trưng của chúng Mỗi đặc trưng Haar-Like bao gồm sự kết hợp của hai hoặc ba hình chữ nhật với màu sắc "Trắng" và "Đ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 cả Pixel vùng trắng và vùng đen, tạo ra các giá trị đặc trưng Haar-Like Tuy nhiên, việc tính toán này khá phức tạp và không thể đáp ứng yêu cầu tính toán thời gian thực từ camera hoặc webcam Để giải quyết vấn đề này, Viola và Jones đã đề xuất khái niệm “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 lĩnh vực thị giác máy tính, việc tính toán các đặc trưng có góc quay vẫn là một thách thức cần được giải quyết.
Việc tính toán các đặc trưng trên trong không gian 45 độ là rất khó khăn Do đó, Lienhart đã kế thừa phương pháp Viola-Jones và phát triển khái niệm tích phân ảnh, đưa ra khái niệm mới là Bảng Tích phân Khu vực Xoay (RSAT - Rotated Summed Area Table) 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 đ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à tiến đến góc dưới bên phải của ảnh, giúp thực hiện tính toán một cách nhanh chóng chỉ bằng phép cộng đơ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 tính tổng điểm ảnh của một vùng 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
Giá trị tại điểm P4 trên đạo hàm ảnh được xác định bởi A + B + C + D, trong khi giá trị tại điểm P2 là A + B, tại điểm P3 là A + C, và tại điểm P1 chỉ 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 kết hợp các phép toán cộng và trừ có độ phức tạp O(1), cho phép thực hiện nhanh chóng Tốc độ tính toán với các điểm trên ảnh diễn ra nhanh hơn, rấ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, bộ phận phân loại thường phải xem xét tất cả các đặc trưng của các mẫu trong tập huấn luyện, dẫn đến việc 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 mà chỉ cần xét một hoặc vài đặc trưng là có thể nhận diện được Đối với các bộ phân loại thông thường, bất kể mẫu dễ hay khó, vẫn phải xem xét tất cả các đặc trưng đã học, gây lãng phí thời gian xử lý 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ủa đặc trưng Haar-Like thông qua phân tích ảnh (Integral Image) Kết quả này sau đó được xử lý qua bộ điều chỉnh Adaboost để loại bỏ các đặc trưng không cần thiết, giúp giảm số lượng đặc trưng Cuối cùng, các đặc trưng được chọn sẽ được đưa vào bộ phân lớp để xác định xem đối tượng 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 bằng cách loại bỏ nhanh chóng các mẫu sai (Background), vốn có số lượng lớn hơn nhiều so với các mẫu đúng (object) chứa khuôn mặt cần nhận diện Hệ thống của Viola và Jones đạt độ chính xác cao nhờ thuật toán cascade training, trong đó các bộ nhận dạng được huấn luyện bằng Adaboost với đặc trưng Haar-Like, giúp mô tả tốt thông tin đối tượng Bên cạnh đó, việc sử dụng 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, nổi bật với tốc độ xử lý nhanh chóng 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ở do Intel phát triển, tập trung vào lĩnh vực thị giác máy tính và học máy Được giới thiệu lần đầu vào tháng 1 năm 1999, OpenCV đã cho ra mắt phiên bản 1.0 vào năm 2006.
Gói thư viện OpenCV bao gồm hơn 500 hàm và 2500 thuật toán tối ưu, được phát triển bằ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, và Sony, đồng thời tạo ra nhiều cộng đồng trực tuyến để tham khảo và chia sẻ kiến thức.
Nhiều phiên bản đã được phát triển, đóng góp quan trọng cho sự tiến bộ của cộng đồng thị giác máy tính Các phiên bản này bổ sung nhiều thuật toán đáp ứng nhu cầu thực tế Phiên bản mới nhất, 3.0 RC1, được phát hành vào ngày 24 tháng 4 năm 2005, hỗ trợ trên các hệ điều hành 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 trong bài viết này 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úng hỗ trợ các chức năng cao cấp như nhận dạng đối tượng và hiệu chỉnh Camera/Webcam, đồng thời xử lý và phân tích chuyển động CV chứa các phương thức và hàm đã ổn định, trong khi CVAUX bao gồm các chức năng thử nghiệm dự kiến sẽ được đưa vào phiên bản tiếp theo CVAUX tập trung vào việc phát hiện, theo dõi và nhận dạng các đố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 các đoạn mã mở rộng được tối ưu hóa cho phần cứng của Intel, giúp tăng tốc độ xử lý cho các ứng dụng lớn Gói thư viện đi kèm với 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 giao diện đơn giản, bạn cần hiển thị hình ảnh và hỗ trợ các thao tác từ bàn phím, chuột, cũng như thanh trượt để điều chỉnh thông số Nếu cần, 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, đặc biệt phổ biến trên các ứng dụng mạng xã hội như Facebook Tính năng này giúp người dùng dễ dàng tương tác và nhận diện các đối tượng trong hình ảnh.
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 dễ dàng đọc dữ liệu hình ảnh từ các tập tin hoặc trực tiếp từ video, đồng thời cũng hỗ trợ tạo ra các tập tin ảnh và video mới.
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, giúp nâng cao khả năng xử lý hình ảnh và video.
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 sử dụng các kỹ thuật học máy hoặc các hình thức trí tuệ nhân tạo khác Nhiều ứng dụng này có thể được triển khai thông qua 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 cung cấp nhiều chức năng, bao gồm tách ảnh, lấy mẫu ngẫu nhiên, phục chế, xoay ảnh, làm cong ảnh (warping) và thay đổi hiệu ứng của ảnh.
Ảnh nhị phân là công cụ hữu ích trong việc kiểm tra khuyết điểm hình dạng và các bộ phận quan trọ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 kiểm tra, từ đó nâng cao hiệu quả trong các hệ thống kiểm soát chất lượng.
Cách tính toán thông tin 3D rất quan trọng trong việc sắp xếp và xác định khối lập thể bằng thiết bị stereo hoặc trong không gian nhìn phức tạp từ nhiều góc nhìn của một camera.
Các phép toán cho xử lý ảnh, thị giác máy và biểu diễn ảnh:
OpenCV sử dụng các phép toán phổ biến như: đạ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.
Phương thức GUI cung cấp môi trường API đa phương tiện dễ sử dụng để hiển thị hình ảnh, cho phép người dùng nhập dữ liệu thông qua chuột và bàn phím, đồng thời điều khiển quá trình một cách hiệu quả.