1. Trang chủ
  2. » Thể loại khác

BÁO CÁO ĐỒ ÁN ĐỀ TÀI: XÂY DỰNG HỆ THỐNG AI NHẬN DIỆN KHUÔN MẶT TRONG MUA SẮM Giáo viên hướng dẫn: ThS Phan Trọng Thanh

42 66 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Xây Dựng Hệ Thống Ai Nhận Diện Khuôn Mặt Trong Mua Sắm
Tác giả Trần Thị Ngọc Anh, Nguyễn Trọng Nghĩa
Người hướng dẫn ThS. Phan Trọng Thanh
Trường học Đại Học Công Nghệ Thông Tin Và Truyền Thông Việt - Hàn
Thể loại báo cáo đồ án
Năm xuất bản 2021
Thành phố Đà Nẵng
Định dạng
Số trang 42
Dung lượng 5,17 MB

Cấu trúc

  • MỤC LỤC

  • MỤC LỤC HÌNH ẢNH

  • LỜI CẢM ƠN

  • LỜI NÓI ĐẦU

  • CHƯƠNG 1. GIỚI THIỆU

    • 1.1. Giới thiệu về đề tài

    • 1.2. Vấn đề cần giải quyết

    • 1.3. Đề xuất nội dung thực hiện

    • 1.4. Chức năng dự kiến

  • CHƯƠNG 2. NGHIÊN CỨU TỔNG QUAN

    • 2.1. Tổng quan về Python

      • 2.1.1. Python là gì?

      • 2.1.2. Đặc điểm

      • 2.1.3. Tính năng chính

      • 2.1.4. Python được sử dụng ở đâu?

      • 2.1.5. Lý do nên bắt đầu lập trình với Python

    • 2.2. Tổng quan về quá trình xử lí ảnh

      • 2.2.1. Quá trình xử lí ảnh

      • 2.2.2. Các vấn đề cơ bản trong xử lí ảnh

    • 2.3. Tổng quan về các thư viện cài đặt

      • 2.3.1. Open CV

      • 2.3.2. Tensorflow

      • 2.3.3. Matplotlib

      • 2.3.4. Pillow

      • 2.3.5. Scipy

      • 2.3.6. Scikit-learn

    • 2.4. Hệ thống nhân diện khuôn mặt

      • 2.4.1. Các ứng dụng phổ biến

      • 2.4.2. Các loại hệ thống xác thực

      • 2.5.3. Các phương pháp xác thực gương mặt

        • Phương pháp truyền thống:

        • Nhận diện 3D:

        • Các phương pháp nhận diện khác:

      • 2.5.4. Các pretrain model facenet

        • Một số bộ dữ liệu public về face

        • Một số fretrain model phổ biến

      • 2.5.1. Tổng quan về thư viện

      • 2.5.2. Cấu trúc CNNs

        • 12-calibration-net

        • 24-calibration-net

        • 48-calibration-net

      • 2.6.3. Cách thức hoạt dộng

      • 2.5.4. Các bài toán khác nhau về Face

      • 2.5.5. Thuật toán nhận dạng Facenet

        • Khái quát thuật toán:

        • Triple loss

  • CHƯƠNG 3. DEMO CHƯƠNG TRÌNH

    • 3.1. Đăng kí tài khoản

    • 3.2. Đăng nhập hệ thống

    • 3.3. Trang mua hàng

    • 3.4. Trang đặt hàng

    • 3.5. Trang giỏ hàng

    • 3.6. Trang thanh toán

    • 3.7. Trang thanh toán thành công

    • 4.1. Kết quả

      • 4.1.1. Kết quả đạt được

      • 4.1.2. Hạn chế còn tồn đọng

    • 4.2. Hướng phát triển

  • TÀI LIỆU THAM KHẢO

Nội dung

GIỚI THIỆU

Vấn đề cần giải quyết

Hệ thống nhận diện khuôn mặt là ứng dụng máy tính tự động xác định hoặc nhận dạng cá nhân từ hình ảnh kỹ thuật số hoặc video Phương pháp thực hiện bao gồm việc so sánh các đặc điểm khuôn mặt đã chọn từ hình ảnh với cơ sở dữ liệu khuôn mặt.

Hệ thống này thường được áp dụng trong các hệ thống an ninh, và có thể so sánh với các dạng sinh trắc học khác như hệ thống nhận dạng vân tay và nhận diện tròng mắt.

Thu thập và phân tích tài liệu liên quan đến nhận dạng khuôn mặt là bước quan trọng trong việc tìm hiểu các phương pháp và công cụ xây dựng hệ thống nhận dạng hiệu quả.

1.3 Đề xuất nội dung thực hiện Đối với đề tài “Xây dựng hệ thống AI nhận diện khuôn mặt trong mua sắm” Việc hệ thống có thể nhận dạng chính xác là một việc quan trọng Đối với đề tài này, chúng em thực hiện xây dựng hệ thống nhận diện gương mặt sử dụng Deep learning với khả năng “Nhận dạng gương mặt nhanh chóng và chính xác”.

Với hệ thống này, chúng em sẽ sử dụng các thư viện được cung cấp bởi PIP trong python và sử dụng Visual Studio Code để lập trình.

The system is capable of collecting facial data, training the acquired facial data, and ultimately performing its primary function of face recognition.

Chức năng dự kiến

Python là một ngôn ngữ lập trình bậc cao, đa năng, được phát triển bởi Guido van Rossum và ra mắt lần đầu vào năm 1991 Với thiết kế dễ đọc, dễ học và dễ nhớ, Python nổi bật với cú pháp rõ ràng và cấu trúc thuận tiện, rất phù hợp cho những người mới bắt đầu học lập trình.

Python là một ngôn ngữ lập trình hoàn toàn động, sử dụng cơ chế cấp phát bộ nhớ tự động Được phát triển trong một dự án mã nguồn mở dưới sự quản lý của tổ chức phi lợi nhuận Python Software Foundation, Python ban đầu được thiết kế để chạy trên nền tảng Unix Qua thời gian, ngôn ngữ này đã mở rộng khả năng tương thích với nhiều hệ điều hành khác nhau, bao gồm MS-DOS, Mac OS, OS/2, Windows, Linux và các hệ điều hành thuộc họ Unix.

Python ban đầu được phát triển để hoạt động trên nền tảng Unix, nhưng đã mở rộng sang nhiều hệ điều hành khác như MS-DOS, Mac OS, OS/2, Windows và Linux Mặc dù có sự đóng góp từ nhiều cá nhân, Guido van Rossum vẫn là tác giả chủ yếu và giữ vai trò quan trọng trong việc định hướng phát triển của Python.

Python là một ngôn ngữ lập trình dễ học và dễ đọc, nổi bật với mã nguồn rõ ràng và cấu trúc trực quan.

Ngôn ngữ Python chủ yếu sử dụng các từ khóa bằng tiếng Anh và hạn chế việc sử dụng từ khóa từ ngôn ngữ khác Đồng thời, Python cũng phân biệt giữa chữ hoa và chữ thường trong các từ khóa.

Trong Python, việc sử dụng lùi đầu dòng (indentation) để tạo các khối lệnh là rất quan trọng Các khối lệnh con sẽ được thụt lùi sâu hơn so với khối lệnh cha mà chúng thuộc về.

Python có khả năng mở rộng linh hoạt, cho phép người dùng tích hợp dễ dàng với ngôn ngữ lập trình C Bằng cách này, bạn có thể tạo ra các hàm tùy chỉnh để đáp ứng nhu cầu cụ thể, mở rộng chức năng của trình thông dịch hoặc liên kết Python với các ứng dụng viết bằng C Điều này giúp nâng cao khả năng và tính linh hoạt của ứng dụng mà bạn đang phát triển.

Ngôn ngữ lập trình đơn giản, dễ học: Python có cú pháp rất đơn giản, rõ ràng.

Python dễ đọc và viết hơn nhiều so với các ngôn ngữ lập trình khác như C++, Java hay C# Sự đơn giản của Python giúp lập trình viên tập trung vào việc giải quyết vấn đề thay vì phải lo lắng về cú pháp phức tạp, từ đó mang lại trải nghiệm lập trình thú vị hơn.

Python là một ngôn ngữ lập trình miễn phí và mã nguồn mở, cho phép người dùng tự do sử dụng, phân phối và thậm chí áp dụng cho mục đích thương mại Với tính chất mã nguồn mở, người dùng không chỉ có thể sử dụng các phần mềm và chương trình được phát triển bằng Python mà còn có khả năng chỉnh sửa mã nguồn theo nhu cầu Cộng đồng Python rộng lớn luôn nỗ lực cải thiện và cập nhật ngôn ngữ này, đảm bảo sự phát triển liên tục.

NGHIÊN CỨU TỔNG QUAN

Tổng quan về Python

Python là ngôn ngữ lập trình bậc cao, đa năng, do Guido van Rossum phát triển và ra mắt lần đầu vào năm 1991 Với thiết kế dễ đọc, dễ học và dễ nhớ, Python nổi bật với cú pháp rõ ràng và cấu trúc hợp lý, rất phù hợp cho người mới bắt đầu học lập trình.

Python là một ngôn ngữ lập trình hoàn toàn động, sử dụng cơ chế cấp phát bộ nhớ tự động Được phát triển trong khuôn khổ dự án mã mở dưới sự quản lý của tổ chức phi lợi nhuận Python Software Foundation, Python ban đầu được thiết kế để chạy trên nền tảng Unix Qua thời gian, ngôn ngữ này đã mở rộng khả năng tương thích với nhiều hệ điều hành khác nhau, bao gồm MS-DOS, Mac OS, OS/2, Windows, Linux và các hệ điều hành thuộc họ Unix.

Python ban đầu được phát triển để chạy trên nền Unix, nhưng đã mở rộng ra nhiều hệ điều hành khác như MS-DOS, Mac OS, OS/2, Windows và Linux Dù có sự đóng góp của nhiều cá nhân, Guido van Rossum vẫn là tác giả chủ yếu và giữ vai trò quan trọng trong việc định hướng phát triển của Python.

Python là một ngôn ngữ lập trình dễ học và dễ đọc, nổi bật với mã nguồn rõ ràng và bố cục trực quan.

Ngôn ngữ Python chủ yếu sử dụng các từ khóa bằng tiếng Anh và hạn chế việc sử dụng từ khóa từ các ngôn ngữ khác Ngoài ra, Python cũng phân biệt giữa chữ hoa và chữ thường.

Python sử dụng lùi đầu dòng (indentation) để xác định các khối lệnh, với các khối lệnh con được thụt vào sâu hơn so với khối lệnh cha mà chúng thuộc về.

Python có khả năng mở rộng linh hoạt, cho phép người dùng tích hợp dễ dàng với ngôn ngữ lập trình C Việc này giúp mở rộng chức năng của trình thông dịch Python, cũng như liên kết nó với các ứng dụng viết bằng C, từ đó tạo ra các lệnh phụ trợ hoặc đáp ứng nhu cầu cụ thể của người dùng.

Ngôn ngữ lập trình đơn giản, dễ học: Python có cú pháp rất đơn giản, rõ ràng.

Python là ngôn ngữ lập trình dễ đọc và viết hơn so với các ngôn ngữ như C++, Java hay C# Điều này giúp lập trình viên tập trung vào việc tìm ra giải pháp thay vì lo lắng về cú pháp, làm cho quá trình lập trình trở nên thú vị hơn.

Python là một ngôn ngữ lập trình miễn phí và mã nguồn mở, cho phép người dùng tự do sử dụng, phân phối và thậm chí ứng dụng cho mục đích thương mại Với tính chất mã nguồn mở, bạn không chỉ có thể sử dụng các phần mềm và chương trình được phát triển bằng Python mà còn có khả năng thay đổi mã nguồn theo nhu cầu của mình Python được hỗ trợ bởi một cộng đồng lớn, luôn nỗ lực cải thiện và cập nhật ngôn ngữ này.

Khả năng di chuyển của các chương trình Python cho phép chúng chạy trên nhiều nền tảng khác nhau mà không cần thay đổi mã nguồn Python hoạt động mượt mà trên hầu hết các hệ điều hành như Windows, macOS và Linux.

Khả năng mở rộng và tích hợp của Python cho phép bạn dễ dàng kết hợp các đoạn mã viết bằng C, C++ và các ngôn ngữ khác, mang lại sự linh hoạt cho ứng dụng Việc này không chỉ nâng cao tính năng của ứng dụng mà còn cung cấp khả năng scripting mà các ngôn ngữ lập trình khác khó đạt được.

Ngôn ngữ Python là một ngôn ngữ thông dịch cấp cao, giúp lập trình viên không phải lo lắng về việc quản lý bộ nhớ hay dọn dẹp dữ liệu không cần thiết như trong C/C++ Khi chạy mã Python, ngôn ngữ này tự động chuyển đổi mã thành ngôn ngữ máy tính, cho phép người dùng tập trung vào việc phát triển ứng dụng mà không cần quan tâm đến các hoạt động ở cấp thấp.

Python cung cấp một thư viện tiêu chuẩn phong phú, giúp giảm bớt khối lượng công việc lập trình Nhờ vào các thư viện này, bạn không cần phải tự viết toàn bộ mã Chẳng hạn, để kết nối với cơ sở dữ liệu MySQL trên Web server, bạn chỉ cần nhập thư viện MySQLdb và sử dụng nó Những thư viện này đã được kiểm tra kỹ lưỡng và được hàng trăm lập trình viên tin dùng, đảm bảo tính ổn định và an toàn cho mã nguồn của bạn.

Lập trình hướng đối tượng (OOP) trong Python là một phương pháp hiệu quả để giải quyết các vấn đề phức tạp một cách trực quan Bằng cách chia nhỏ các vấn đề thành các phần dễ quản lý hơn thông qua việc tạo ra các đối tượng, OOP giúp lập trình viên tổ chức và phát triển mã nguồn một cách hiệu quả hơn.

2.1.4 Python được sử dụng ở đâu?

Lập trình ứng dụng web cho phép bạn phát triển các web app có khả năng mở rộng bằng cách sử dụng các framework và CMS tích hợp trong Python Một số nền tảng phổ biến để xây dựng web app bao gồm Django, Flask, Pyramid, Plone và Django CMS Nhiều trang web nổi tiếng như Mozilla, Reddit, Instagram và PBS cũng được phát triển bằng ngôn ngữ Python.

Tổng quan về các thư viện cài đặt

Phân loại không có mẫu, hay còn gọi là phân loại không giám sát (unsupervised classification hay clustering), là quá trình gán các mẫu vào các lớp khác nhau dựa trên tiêu chuẩn đồng dạng Các lớp này vẫn chưa được biết đến hoặc định danh cho đến khi quá trình phân loại diễn ra.

Hệ thống nhận dạng tự động bao gồm ba khâu tương ứng với ba giai đoạn chủ yếu sau đây:

- Thu nhận dữ liệu và tiền xử lý

- Nhận dạng, ra quyết định

Bốn cách tiếp cận khác nhau trong lý thuyết nhận dạng là:

- Đối sánh mẫu dựa trên các đặc trưng được trích chọn

- Đối sánh cấu trúc

- Phân loại dựa trên mạng nơ-ron nhân tạo

Trong các ứng dụng, việc sử dụng một phương pháp duy nhất để phân loại “tối ưu” là không khả thi; vì vậy, cần áp dụng nhiều phương pháp và cách tiếp cận khác nhau đồng thời Các phương thức phân loại tổ hợp đang ngày càng được ưa chuộng trong nhận dạng, với những kết quả triển vọng từ việc thiết kế các hệ thống lai (hybrid system) kết hợp nhiều mô hình.

Giải quyết bài toán nhận dạng trong các ứng dụng mới hiện nay không chỉ đặt ra thách thức về thuật giải mà còn yêu cầu tốc độ tính toán nhanh chóng Tất cả các ứng dụng này đều có nhiều đặc điểm đặc trưng cần thiết, không thể chỉ dựa vào ý kiến của chuyên gia mà phải được trích chọn thông qua các quy trình phân tích dữ liệu.

Nén ảnh là quá trình giảm thiểu không gian lưu trữ, được thực hiện theo hai phương pháp chính: nén có bảo toàn thông tin và nén không bảo toàn thông tin Nén không bảo toàn thường mang lại tỷ lệ nén cao hơn nhưng khả năng phục hồi dữ liệu kém hơn Dựa trên hai phương pháp này, có bốn cách tiếp cận cơ bản trong nén ảnh.

Kỹ thuật nén ảnh thống kê dựa vào việc phân tích tần suất xuất hiện của các giá trị điểm ảnh, từ đó phát triển chiến lược mã hóa phù hợp Một ví dụ tiêu biểu cho phương pháp mã hóa này là định dạng tệp *.TIF.

Nén ảnh không gian là kỹ thuật mã hóa dựa trên vị trí của các điểm ảnh, khai thác sự tương đồng giữa các điểm ảnh trong các vùng lân cận Một ví dụ điển hình cho kỹ thuật này là mã nén *.PCX.

Nén ảnh sử dụng phép biến đổi là một kỹ thuật nén không bảo toàn, giúp tối ưu hóa dung lượng hình ảnh mà vẫn giữ được chất lượng tốt Kỹ thuật này thường hiệu quả hơn so với các phương pháp khác, với định dạng *.JPG là một ví dụ điển hình cho cách tiếp cận này.

Nén ảnh Fractal là một kỹ thuật sử dụng tính chất Fractal của các đối tượng ảnh, cho phép thể hiện sự lặp lại của các chi tiết trong hình ảnh Phương pháp này tính toán để chỉ cần lưu trữ phần gốc của ảnh cùng với quy luật sinh ra ảnh dựa trên nguyên lý Fractal, giúp tối ưu hóa dung lượng lưu trữ mà vẫn giữ nguyên chất lượng hình ảnh.

2.3 Tổng quan về các thư viện cài đặt

OpenCV (Open Computer Vision) là một thư viện mã nguồn mở hàng đầu cho xử lý thị giác máy tính, machine learning và xử lý ảnh Được viết bằng C/C++, OpenCV có tốc độ tính toán nhanh, phù hợp cho các ứng dụng thời gian thực Thư viện này hỗ trợ nhiều ngôn ngữ lập trình như C/C++, Python và Java, và có thể hoạt động trên các hệ điều hành như Windows, Linux, MacOS, Android và iOS Với cộng đồng hơn 47 nghìn người dùng và hơn 6 triệu lượt tải xuống, OpenCV đang trở thành công cụ phổ biến trong lĩnh vực xử lý ảnh và thị giác máy tính.

OpenCV có rất nhiều ứng dụng như nhận dạng ảnh, xử lý ảnh, phục hồi ảnh/video, thực tế ảo, các ứng dụng khác,…

OpenCV, viết tắt của Open Source Computer Vision, là thư viện mã nguồn mở phục vụ cho việc phát triển các chức năng thị giác máy tính Mặc dù thiếu tài liệu hướng dẫn đầy đủ, nhiều nhà phát triển cho rằng OpenCV là một trong những thư viện khó học nhất Tuy nhiên, nó vẫn cung cấp những công cụ cần thiết để giúp người dùng dễ dàng tiếp cận và học hỏi về thị giác máy tính.

Những khả năng của OpenCV:

- OpenCV là một gói module hình ảnh lý tưởng cho phép bạn đọc và ghi, thay đổi dữ liệu nhiều hình ảnh cùng một lúc

- Tạo ra thị giác máy tính cho phép bạn xây dựng lại, gián đoạn và thông hiểu môi trường 3D từ môi trường 2D tương ứng của nó.

OpenCV là công cụ phổ biến trong việc nhận diện các đối tượng và hình ảnh đã được lập trình sẵn, bao gồm khuôn mặt, động vật, thực vật và các vật thể đang di chuyển.

- Có thể lưu và chụp bất kỳ khoảnh khắc nào của video và cũng có thể phân tích các thuộc tính khác nhau của nó như chuyển động, nền,…

- OpenCV tương thích với nhiều hệ điều hành như Windows, OS-X, Open BSD và nhiều hệ điều hành khác.

Hình 2 5: Nhận diện khuôn mặt bằng OpenCV

Tính năng và các module phổ biến của OpenCV

Theo tính năng và ứng dụng của OpenCV, có thể chia thư viện này thánh các nhóm tính năng và module tương ứng như sau:

- Xử lý và hiển thị Hình ảnh/ Video/ I/O (core, imgproc, highgui).

- Phát hiện các vật thể (objdetect, features2d, nonfree).

- Geometry-based monocular hoặc stereo computer vision (calib3d, stitching, videostab).

- Computational photography (photo, video, superres).

- Machine learning & clustering (ml, flann).

OpenCV có cấu trúc module, nghĩa là gói bao gồm một số thư viện liên kết tĩnh (static libraries) hoặc thư viện liên kết động (shared libraries)

Một số định nghĩa chi tiết các module phổ biến có sẵn:

Chức năng cốt lõi (core) là một module nhỏ gọn giúp xác định cấu trúc dữ liệu cơ bản, bao gồm mảng đa chiều dày đặc cùng với nhiều chức năng cơ bản cần thiết cho tất cả các module khác.

Module xử lý hình ảnh (imgproc) bao gồm các kỹ thuật lọc hình ảnh tuyến tính và phi tuyến, phép biến đổi hình học như chỉnh kích thước, biến đổi affine và warp phối cảnh, cũng như ánh xạ lại dựa trên bảng chung Ngoài ra, nó còn hỗ trợ chuyển đổi không gian màu, biểu đồ và nhiều tính năng khác.

- Video Analysis (video) – module phân tích video bao gồm các tính năng ước tính chuyển động, tách nền, và các thuật toán theo dõi vật thể

Camera calibration and 3D reconstruction, known as calib3d, involves fundamental multi-dimensional geometric algorithms This process includes single and stereo camera calibration, object pose estimation, stereo correspondence algorithms, and various factors essential for 3D reconstruction.

- 2D Features Framework (features2d) – phát hiện các đặc tính nổi bật của bộ nhận diện, bộ truy xuất thông số, thông số đối chọi.

- Object Detection (objdetect) – phát hiện các đối tượng và mô phỏng của các hàm được định nghĩa sẵn – predefined classes (vd: khuôn mặt, mắt, cốc, con người, xe hơi,…).

- High-level GUI (highgui) – giao diện dễ dùng để thực hiện việc giao tiếp UI đơn giản.

- Video I/O (videoio) – giao diện dễ dùng để thu và mã hóa video.

- GPU – Các thuật toán tăng tốc GPU từ các modun OpenCV khác.

- … và một số module hỗ trợ khác, ví dụ như FLANN và Google test wrapper, Python binding, v.v.

TensorFlow là thư viện mã nguồn mở hàng đầu cho machine learning, được phát triển bởi các nhà nghiên cứu của Google Thư viện này cung cấp hỗ trợ mạnh mẽ cho các phép toán trong machine learning và deep learning, giúp người dùng dễ dàng và nhanh chóng tiếp cận các bài toán phức tạp.

Hệ thống nhân diện khuôn mặt

2.4.1 Các ứng dụng phổ biến

Khi Facebook ra mắt vào năm 2004, mục tiêu chính của nó là kết nối mọi người Hiện nay, trí tuệ nhân tạo (AI) đã trở thành yếu tố cốt lõi trong việc thực hiện nhiệm vụ này AI không chỉ hỗ trợ trong việc kết nối mà còn định hình các sản phẩm của công ty Yann LeCun, nhà khoa học AI của Facebook, cảnh báo rằng nếu không hiểu rõ về AI, mạng xã hội có thể chỉ còn là một công cụ đơn giản.

Vào năm 2018, Apple đã giới thiệu tính năng nhận diện khuôn mặt trên dòng sản phẩm iPhone X, đánh dấu sự khởi đầu của một xu hướng mới trong ngành công nghiệp smartphone Từ đó, nhiều điện thoại thông minh khác cũng đã áp dụng công nghệ nhận diện khuôn mặt, mang lại trải nghiệm bảo mật và tiện lợi cho người dùng.

Một số ngân hàng tại Australia đã bắt đầu áp dụng công nghệ xác thực khuôn mặt cho các giao dịch tại ATM Trong khi đó, Trung Quốc đã triển khai hệ thống nhận diện khuôn mặt trên toàn quốc, không chỉ giúp chấm điểm công dân mà còn hỗ trợ trong việc xác minh nhiều tội phạm đang lẩn trốn.

Hệ thống nhận diện khuôn mặt được nghiên cứu và phát triển nội bộ tại các cơ quan, nhằm phục vụ cho việc chấm công nhân viên Công nghệ này có tính ứng dụng cao và đang được nhiều công ty, doanh nghiệp cũng như quốc gia quan tâm và áp dụng.

2.4.2 Các loại hệ thống xác thực

Hầu hết các hệ thống xác thực dựa vào thông tin sinh trắc để định danh cá nhân, với các thông tin này là duy nhất cho mỗi người, bao gồm vân tay, ADN, vân mắt, và khuôn mặt Ở Việt Nam, phương pháp xác thực bằng vân tay là phổ biến nhất Trước đây, khi công nghệ computer vision chưa phát triển, các hệ thống xác thực bằng vân tay và vân mắt được áp dụng rộng rãi Gần đây, xác thực bằng khuôn mặt đã trở nên phổ biến hơn, tuy nhiên về độ chính xác, các hệ thống xác thực vân tay và vân mắt vẫn đáng tin cậy hơn do dữ liệu không thay đổi, trong khi khuôn mặt có thể thay đổi theo thời gian.

Hệ thống nhận diện khuôn mặt ngày càng trở nên phổ biến nhờ vào khả năng xác thực nhanh chóng và tiện lợi, cho phép xác thực từ xa mà không cần tiếp xúc như khi sử dụng vân tay hay vân mắt Điều này mang lại sự thuận tiện cho người dùng, vì họ có thể nhìn người khác mà không cần phải xin phép, nhưng nếu muốn chạm vào, cần phải có sự đồng ý từ phía đối phương.

2.5.3 Các phương pháp xác thực gương mặt

Các phương pháp truyền thống: Xác thực khuôn mặt bằng cách trích xuất ra một

“landmark” cho khuôn mặt Nó như là một bản đồ xác định các vị trí cố định trên khuôn mặt của một người như mắt, mũi, miệng, lông mày,….

Hình 2 10: Phương pháp truyền thống

Landmark face đã loại bỏ thông tin không cần thiết, chỉ giữ lại các thông tin chính, giúp mỗi khuôn mặt được nén thành một véc tơ n chiều, thường là 68 chiều.

Sử dụng đầu vào là landmark face, áp dụng các thuật toán cổ điển như SVM, k-

NN, Naive Bayes, Random Forest, MLP, … để phân loại khuôn mặt cho một người.

Kỹ thuật nhận diện 3D sử dụng không gian ba chiều để biểu diễn khuôn mặt, cho phép xác định các đặc trưng khác nhau trên bề mặt như đường viền của mắt, mũi và cằm.

Nhận diện khuôn mặt 3D có ưu điểm vượt trội so với phương pháp 2D nhờ khả năng không bị ảnh hưởng bởi sự thay đổi ánh sáng Việc sử dụng dữ liệu 3D đã nâng cao đáng kể độ chính xác trong nhận dạng khuôn mặt Để tạo ra hình ảnh 3D, một cụm ba camera được sử dụng, mỗi camera được hướng về một góc khác nhau Tất cả các camera này phối hợp chặt chẽ để theo dõi và nhận diện khuôn mặt của người dùng trong thời gian thực.

Các phương pháp nhận diện khác:

Ngoài ra còn có một số phương pháp nhận diện khuôn mặt như nhận diện cảm biến da và phương pháp kết hợp.

Phương pháp kết hợp sử dụng đồng thời thông tin từ nhận diện khuôn mặt landmark, nhận diện 3D và cảm biến da, mang lại độ chính xác cao hơn Phương pháp này nhận diện tốt trong các trường hợp khuôn mặt có biểu cảm như cau mày, chớp mắt và co dãn khi cười, nói, đồng thời ít nhạy cảm với ánh sáng.

Một số bộ dữ liệu public về face

- CASIA-WebFace: Bộ dữ liệu bao gồm gần 500,000 ảnh được thu thập từ khoảng 10,000 người.

- VGGFace2: Bộ dữ liệu gồm khoảng 3 triệu ảnh được thu thập từ gần 9,000 người.

Một số fretrain model phổ biến

- Bạn có thể sử dụng pretrain model từ facenet repo - davidsandberg

2.5.1 Tổng quan về thư viện

MTCNN là thư viện Python được phát triển bởi người dùng GitHub ipacz, dựa trên nghiên cứu của Zhang, Kaipeng et al về nhận diện khuôn mặt và căn chỉnh thông qua mạng kết nối đa nhiệm xếp tầng, được công bố trong tạp chí IEEE Signal Processing.

MTCNN, viết tắt của Multi-task Cascaded Convolutional Networks, là một phương pháp phát hiện khuôn mặt hiệu quả với ba mạng CNN xếp chồng, hoạt động đồng thời Mỗi mạng có cấu trúc và nhiệm vụ riêng, giúp cải thiện độ chính xác trong việc xác định vị trí khuôn mặt và các điểm quan trọng như mắt, mũi, và miệng.

- MTCNN hoạt động khá nhanh trên CPU, mặc dù S3FD vẫn chạy nhanh hơn trên GPU - nhưng đó là một chủ đề cho một bài đăng khác.

Facenet là công nghệ nhận diện khuôn mặt do Google giới thiệu vào năm 2015 Công nghệ này cho phép người dùng nhập ảnh với kích thước phù hợp, từ đó trả về một vector 128 đặc trưng cho mỗi khuôn mặt Tiếp theo, các vector này được phân loại thành các nhóm khác nhau bằng cách sử dụng SVM, giúp xác định danh tính của từng khuôn mặt.

Trong phần này, sẽ xét đến 3 CNNs về căn chuẩn đóng khung vùng nhận diện: 12- calibration-net, 24-calibration-net, 48-calibration-net.

12-calibration-net là một mạng neural tích chập cạn, với số mẫu hiệu chuẩn vào là

N = 45 Cho một cửa sổ phát hiện với (x, y, w, h) trong đó góc trên bên trái tại (x, y) và kích thước (w, h), mẫu hiện chuẩn được tính như sau:

Cho một cửa sổ phát hiện, các vùng nhận diện được cắt ra và thay đổi kích thước thành 12x12 làm đầu vào cho 12-calibration-net

Trong thử nghiệm về 12-calibration-net, nhận thấy số phát hiện sai vẫn giữ ở tỉ lệ94,8% trên Face Detection Data Set and Benchmark (FDDB)

Mạng hiệu chuẩn 24-calibration-net khác với 12-calibration-net ở số mẫu hiệu chuẩn là N Dữ liệu đầu vào có kích thước 24x24, với các mẫu được xác định trước, và quy trình hiệu chuẩn tương tự như 12-calibration-net.

Trong thử nghiệm về 24-calibration-net, nhận thấy số phát hiện sai vẫn giữ ở tỉ lệ 89% trên Face Detection Data Set and Benchmark (FDDB)

48-calibration-net là một mạng hiệu chuẩn khác với số mẫu hiệu chuẩn là N Kích thước dữ liệu đầu vào của nó là 48x48, trong khi các mẫu đã được xác định trước Quy trình hiệu chuẩn của 48-calibration-net tương tự như quy trình của 12-calibration-net.

MTCNN hoạt động theo 3 bước, mỗi bước có một mạng neural riêng lần lượt là: P- Net, R-Net và O-net.

Với mỗi bức ảnh đầu vào, nó sẽ tạo ra nhiều bản sao của hình ảnh đó với các kích thước khác nhau.

Tại P-Net, thuật toán sử dụng 1 kernel 12x12 chạy qua mỗi bức hình để tìm kiếm khuôn mặt.

DEMO CHƯƠNG TRÌNH

Ngày đăng: 26/12/2021, 23:38

HÌNH ẢNH LIÊN QUAN

Hình 1. 1: Nhận diện khuôn mặt trong mua sắm - BÁO CÁO ĐỒ ÁN ĐỀ TÀI: XÂY DỰNG HỆ THỐNG AI NHẬN DIỆN KHUÔN MẶT TRONG MUA SẮM Giáo viên hướng dẫn: ThS Phan Trọng Thanh
Hình 1. 1: Nhận diện khuôn mặt trong mua sắm (Trang 10)
Hình 2. 1: Sự phổ biến của Python - BÁO CÁO ĐỒ ÁN ĐỀ TÀI: XÂY DỰNG HỆ THỐNG AI NHẬN DIỆN KHUÔN MẶT TRONG MUA SẮM Giáo viên hướng dẫn: ThS Phan Trọng Thanh
Hình 2. 1: Sự phổ biến của Python (Trang 13)
Hình 2. 3: Các bước cơ bản trong một hệ thống xử lí ảnh - BÁO CÁO ĐỒ ÁN ĐỀ TÀI: XÂY DỰNG HỆ THỐNG AI NHẬN DIỆN KHUÔN MẶT TRONG MUA SẮM Giáo viên hướng dẫn: ThS Phan Trọng Thanh
Hình 2. 3: Các bước cơ bản trong một hệ thống xử lí ảnh (Trang 14)
Hình 2. 2: Quá trình xử lý ảnh - BÁO CÁO ĐỒ ÁN ĐỀ TÀI: XÂY DỰNG HỆ THỐNG AI NHẬN DIỆN KHUÔN MẶT TRONG MUA SẮM Giáo viên hướng dẫn: ThS Phan Trọng Thanh
Hình 2. 2: Quá trình xử lý ảnh (Trang 14)
Hình 2. 4: Ảnh thu nhận và ảnh mong muốn - BÁO CÁO ĐỒ ÁN ĐỀ TÀI: XÂY DỰNG HỆ THỐNG AI NHẬN DIỆN KHUÔN MẶT TRONG MUA SẮM Giáo viên hướng dẫn: ThS Phan Trọng Thanh
Hình 2. 4: Ảnh thu nhận và ảnh mong muốn (Trang 16)
Hình 2. 5: Nhận diện khuôn mặt bằng OpenCV - BÁO CÁO ĐỒ ÁN ĐỀ TÀI: XÂY DỰNG HỆ THỐNG AI NHẬN DIỆN KHUÔN MẶT TRONG MUA SẮM Giáo viên hướng dẫn: ThS Phan Trọng Thanh
Hình 2. 5: Nhận diện khuôn mặt bằng OpenCV (Trang 18)
Hình 2. 6: TensorFlow - BÁO CÁO ĐỒ ÁN ĐỀ TÀI: XÂY DỰNG HỆ THỐNG AI NHẬN DIỆN KHUÔN MẶT TRONG MUA SẮM Giáo viên hướng dẫn: ThS Phan Trọng Thanh
Hình 2. 6: TensorFlow (Trang 20)
Hình 2. 7: Biểu đồ lượt star và repos trên github sử dụng TF - BÁO CÁO ĐỒ ÁN ĐỀ TÀI: XÂY DỰNG HỆ THỐNG AI NHẬN DIỆN KHUÔN MẶT TRONG MUA SẮM Giáo viên hướng dẫn: ThS Phan Trọng Thanh
Hình 2. 7: Biểu đồ lượt star và repos trên github sử dụng TF (Trang 21)
Hình 2. 9: Thuật toán phân cụm Scikit-learn - BÁO CÁO ĐỒ ÁN ĐỀ TÀI: XÂY DỰNG HỆ THỐNG AI NHẬN DIỆN KHUÔN MẶT TRONG MUA SẮM Giáo viên hướng dẫn: ThS Phan Trọng Thanh
Hình 2. 9: Thuật toán phân cụm Scikit-learn (Trang 25)
Hình 2. 11: Nhận diện 3D - BÁO CÁO ĐỒ ÁN ĐỀ TÀI: XÂY DỰNG HỆ THỐNG AI NHẬN DIỆN KHUÔN MẶT TRONG MUA SẮM Giáo viên hướng dẫn: ThS Phan Trọng Thanh
Hình 2. 11: Nhận diện 3D (Trang 27)
Hình 2. 10: Phương pháp truyền thống - BÁO CÁO ĐỒ ÁN ĐỀ TÀI: XÂY DỰNG HỆ THỐNG AI NHẬN DIỆN KHUÔN MẶT TRONG MUA SẮM Giáo viên hướng dẫn: ThS Phan Trọng Thanh
Hình 2. 10: Phương pháp truyền thống (Trang 27)
Hình 2. 13: Mô hình MTCNN - BÁO CÁO ĐỒ ÁN ĐỀ TÀI: XÂY DỰNG HỆ THỐNG AI NHẬN DIỆN KHUÔN MẶT TRONG MUA SẮM Giáo viên hướng dẫn: ThS Phan Trọng Thanh
Hình 2. 13: Mô hình MTCNN (Trang 29)
Hình 2. 14: 12-calibration-net - BÁO CÁO ĐỒ ÁN ĐỀ TÀI: XÂY DỰNG HỆ THỐNG AI NHẬN DIỆN KHUÔN MẶT TRONG MUA SẮM Giáo viên hướng dẫn: ThS Phan Trọng Thanh
Hình 2. 14: 12-calibration-net (Trang 29)
Hình 2. 15: 24-calibraton-net - BÁO CÁO ĐỒ ÁN ĐỀ TÀI: XÂY DỰNG HỆ THỐNG AI NHẬN DIỆN KHUÔN MẶT TRONG MUA SẮM Giáo viên hướng dẫn: ThS Phan Trọng Thanh
Hình 2. 15: 24-calibraton-net (Trang 30)
Hình 2. 17: MTCNN - BÁO CÁO ĐỒ ÁN ĐỀ TÀI: XÂY DỰNG HỆ THỐNG AI NHẬN DIỆN KHUÔN MẶT TRONG MUA SẮM Giáo viên hướng dẫn: ThS Phan Trọng Thanh
Hình 2. 17: MTCNN (Trang 30)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w