Các kỹ thuật phát hiện bất thường có thể được chia thành 3 phương pháp dựa trên tính khả dụng cho các nhãn là: - Phát hiện bất thường giám sát - Phát hiện bất thường bán giám sát - Phát
GIỚI THIỆU TỔNG QUAN VỀ BÀI TOÁN
Tổng quan về bài toán nhận diện hành vi bất thường
Phát hiện và nhận diện hành vi bất thường là quá trình giám sát và phân tích hành vi của người dùng cùng trạng thái môi trường xung quanh nhằm nhận diện và suy diễn các hoạt động đang diễn ra có phải là bất thường hay không Bất thường còn được gọi là ngoại lai, sai lệch hoặc bất thường trong khai phá dữ liệu và lý thuyết thống kê Nhận dạng hành vi không chỉ là một chủ đề trong tính toán nhận biết ngữ cảnh mà còn là nền tảng cho nhiều lĩnh vực như tính toán khắp nơi, tương tác người máy và tính toán di động Một trong những mục tiêu của nhận dạng hành vi là cung cấp thông tin về hành vi của đối tượng người dùng, từ đó cho phép hệ thống tính toán chủ động và hỗ trợ con người trong công việc.
Quá trình giám sát hành vi người dùng bắt đầu với việc thu thập dữ liệu, đặc biệt là dữ liệu chuyển động như danh sách hình ảnh và video Khi đã có dữ liệu, các kỹ thuật trí tuệ nhân tạo dựa trên lý thuyết xác suất thống kê được triển khai để phân loại hành vi Mô hình thông thường của các hệ thống phân loại gồm các bước liên quan đến tiền xử lý dữ liệu, trích xuất đặc trưng và xây dựng mô hình nhằm nhận diện hành vi một cách hiệu quả, đồng thời tối ưu hóa độ chính xác và hiệu suất vận hành.
Trích chọn đặc trưng là quá trình trích xuất và lựa chọn những đặc trưng quan trọng từ dữ liệu thô để làm đại diện cho các mẫu dữ liệu huấn luyện Dữ liệu có thể chứa rất nhiều thuộc tính, nhưng chỉ một phần là cần thiết và mang lại thông tin có giá trị cho mô hình Việc trích chọn đặc trưng giúp loại bỏ các thuộc tính dư thừa, đơn giản hóa biểu diễn dữ liệu và cải thiện hiệu suất mô hình mà không làm giảm độ chính xác Thiếu bước này có thể làm mô hình trở nên quá phức tạp và nhạy với nhiễu từ các thuộc tính không liên quan, dẫn đến kết quả kém ngay cả với các thuật toán tốt nhất.
Phân lớp dữ liệu là bước quan trọng sau khi trích xuất đặc trưng, nơi các kỹ thuật học máy được áp dụng để xây dựng bộ phân lớp các hành vi Các mô hình phân loại dựa trên các thuật toán phổ biến như KNN (k-Nearest Neighbors), cây quyết định, Naive Bayes và SVM (Support Vector Machine), cùng với các phương pháp khác nhằm phân loại hành vi dựa trên đặc trưng đã trích xuất Quá trình huấn luyện và đánh giá mô hình giúp tối ưu hóa độ chính xác nhận diện hành vi, cải thiện hiệu suất hệ thống và đảm bảo khả năng tổng quát hóa dữ liệu mới.
Một số kỹ thuật giải quyết bài toán
Phát hiện bất thường hầu như luôn dựa vào nhãn để phân loại một cá thể là bình thường hay bất thường và từ đó quyết định kết quả cuối cùng Các kỹ thuật này có thể được phân thành ba phương pháp dựa trên mức độ có sẵn của nhãn.
- Phát hiện bất thường giám sát
- Phát hiện bất thường bán giám sát
- Phát hiện bất thường không giám sát
Trên thực tế, phát hiện bất thường là vấn đề trọng yếu của hệ thống phát hiện xâm nhập, và lĩnh vực này ngày càng thu hút sự quan tâm của các nhà khoa học trên toàn thế giới Nhiều nhà khoa học đã ứng dụng các kỹ thuật Machine Learning để xây dựng các mô hình dựa trên tập dữ liệu huấn luyện nhằm nhận diện hành vi bất thường và phát hiện xâm nhập một cách hiệu quả Các hệ thống này đã và đang được triển khai trong thực tế như hệ thống phát hiện xâm nhập trên CCTV, hệ thống theo dõi sức khỏe trong bệnh viện, hệ thống phát hiện gian lận trong giao dịch thẻ tín dụng tại ngân hàng, và hệ thống phát hiện thiệt hại công nghiệp.
… Dưới đây là một số công trình nghiên cứu giải quyết bài toán phát hiện bất thường ứng dụng phương pháp học máy nổi tiếng:
Ming.Y với nghiên cứu “Real Time Anomaly Detection for Denial-of-Service
Attacks by Weighted k-Nearest Neighbor Classifiers” vào năm 2011 Thuật toán k-
Nearest Neighbor (viết tắt là KNN) dựa vào khoảng cách gần nhất giữa các đối tượng cần xếp lớp với các đối tượng trong tập dữ liệu để xác định nhãn của mẫu mới một cách hiệu quả Tác giả đề xuất sự kết hợp giữa thuật toán di truyền và KNN nhằm chọn thuộc tính và trọng số cho mô hình, từ đó tối ưu hóa hiệu năng phân loại và phát hiện bất thường Kết quả thử nghiệm với nhiều cuộc tấn công DDoS được áp dụng để đánh giá hệ thống phát hiện bất thường.
Johansen và Lee trong công trình nghiên cứu “CS424 network security:
Bayesian Network Intrusion Detection (BINDS) đề xuất xây dựng một hệ thống phát hiện xâm nhập dựa trên mô hình Mạng Bayes nhằm phân biệt giữa các cuộc tấn công và hoạt động bình thường của mạng Hệ thống này nhận diện bằng cách so sánh các chỉ số đặc trưng của từng mẫu lưu lượng mạng, từ đó phát hiện hành vi bất thường và nâng cao hiệu quả an ninh mạng.
Bài nghiên cứu của Henri Bouma và đồng nghiệp trình bày một hệ thống phát hiện sớm móc túi trong siêu thị dựa trên đặc trưng, được triển khai qua ba thành phần chính: tracking hành vi của người đi bộ từ camera, trích xuất đặc trưng của các đối tượng được theo dõi, và module phát hiện hành vi móc túi Kết quả thử nghiệm cho thấy hệ thống có hiệu suất tương đối cao trên bộ dữ liệu được sử dụng, nhưng do dữ liệu hạn chế và tỷ lệ báo giả cao nên cần cải thiện thêm để tăng độ chính xác và độ tin cậy của hệ thống.
Trong một nghiên cứu khác, tác giả Fath U Min Ullah và các cộng sự đã xây dựng hệ thống phát hiện hành vi bạo lực trong video, có thể ứng dụng tại các địa điểm công cộng như sân bay, đường phố, bệnh viện và trường học Phương pháp được sử dụng là học sâu (Deep Learning) Kết quả thử nghiệm thu được rất cao, với độ chính xác hơn 95% trên các bộ dữ liệu benchmark gồm video phim, cảnh bạo lực và trận đấu khúc côn cầu.
Trong nghiên cứu của Asma’a Al Ibrahim và đồng nghiệp, hệ thống giám sát thi cử được đề xuất gồm ba lớp: phát hiện khuôn mặt, nhận diện trạng thái đáng ngờ bằng mạng nơ-ron và phát hiện hành vi bất thường bằng phương pháp Gaussian Kết quả thử nghiệm cho thấy độ chính xác trên 90%, cho thấy hiệu quả của kiến trúc này trong việc phát hiện hành vi bất thường Tuy nhiên, dữ liệu còn hạn chế và việc kiểm tra chủ yếu áp dụng với các hành vi đơn giản trên khuôn mặt Do đó hệ thống cần cải thiện để xử lý các hành vi đa dạng và phức tạp hơn trong môi trường thi cử thực tế.
Một nghiên cứu được đề xuất bởi Bùi Ngọc Anh và cộng sự tại đại học FPT nhằm phân tích sự chú ý của sinh viên trong lớp Nghiên cứu này phân tích ánh nhìn và hướng nhìn của sinh viên trong suốt một buổi học để xác định mức độ chú ý của từng bài giảng Kết quả thu được sẽ được gửi về tập dữ liệu và phân tích của trường nhằm hỗ trợ nhà trường trong việc phân tích dữ liệu giáo viên, chất lượng bài giảng và thái độ học tập của sinh viên Theo kết quả nghiên cứu của chúng tôi, hiện tại ở nước ta chưa có nhiều nghiên cứu về chủ đề này.
Phạm vi của đề tài
Phát hiện hành vi bất thường trong ứng dụng phát hiện gian lận thi cử là một bài toán rất rộng, đòi hỏi nhiều phương pháp tiếp cận khác nhau tùy thuộc vào điều kiện hoạt động và loại trang thiết bị phần cứng được sử dụng Trong thực tế, còn tồn tại nhiều tương tác phức tạp và gian lận tinh vi mà các cảm biến camera CCTV hiện nay chưa thể nhận diện đầy đủ Do giới hạn về kiến thức, kinh nghiệm, thời gian và nguồn lực phần cứng, trước mắt chúng tôi sẽ giới hạn bài toán này trong khuôn khổ được trình bày sau đây.
- Chỉ sử dụng Camera giám sát thông thường để làm đầu vào cho việc nhận diện
- Thực hiện nhận diện trong phòng thi nhỏ, có ít hơn 20 thí sinh
- Các thí sinh ngồi xen kẽ để đảm bảo camera an ninh ở 1 vị trí có thể bao quát tất cả các thí sinh, không ai bị che khuất nhau
- Có thể nhận diện từng thí sinh bằng khuôn mặt, phục vụ cho việc truy xuất lịch sử sau này
- Các hành vi bất thường bao gồm: Quay trái, quay phải, quay ra phía sau, cúi đầu làm việc riêng trong gầm bàn, nhổm lên phía trước
Hệ thống có thể chưa hoạt động đúng thời gian thực và đôi khi đòi hỏi phần cứng mạnh, bao gồm nhiều GPU, để duy trì hiệu suất thời gian thực Để đạt được thời gian thực, cần tối ưu hóa phần mềm và kiến trúc hệ thống nhằm giảm độ trễ và tăng khả năng xử lý song song; nếu tối ưu hóa chưa tốt, hệ thống có thể bị chậm hoặc không đáp ứng kịp nhịp làm việc.
Các bài toán con cần giải quyết
Với đầu vào chỉ từ một camera giám sát thông thường, phương pháp đề xuất tập trung xây dựng các module trích xuất đặc trưng phù hợp với ảnh màu RGB để hệ thống phát hiện hành vi gian lận hoạt động hiệu quả nhất Các bài toán con mà chúng tôi đề xuất tập trung giải quyết bao gồm tối ưu hóa quá trình trích xuất đặc trưng, tích hợp các module này vào khung phát hiện, và nâng cao hiệu suất nhận diện trên dữ liệu đầu vào hạn chế.
1.4.1 Phát hiện khuôn mặt (Face Detection) và phân tích điểm mốc khuôn mặt (Face Landmark Estimation)
Face detection là một bài toán điển hình trong lĩnh vực Computer Vision, tương tự như vấn đề Object detection nhưng tập trung vào phát hiện khuôn mặt Đầu vào của các mô hình face detection có thể là một ảnh đơn hoặc một tập ảnh, và kích thước của ảnh có thể cố định hoặc linh hoạt tùy thuộc vào kiến trúc của mô hình detection Đầu ra của các mô hình này là một tập hợp các bounding box, mỗi bounding box bao gồm 4 giá trị để miêu tả hình chữ nhật và tương ứng với một khuôn mặt được tìm thấy trong ảnh.
Facial landmark là việc phát hiện ra các vị trí như mắt, mũi, miệng trên khuôn mặt Bài toán phát hiện các điểm landmark trên khuôn mặt thường được học song song với mô hình face detection Ứng dụng của bài toán này là để giúp chúng ta có thể căn chỉnh khuôn mặt, phát hiện hướng nhìn của khuôn mặt, Đầu vào của mô hình này là một khuôn mặt, trong khi đầu ra đối với bài toán này thì đa dạng hơn nhiều Đầu ra có thể là 5 điểm landmark chính, đại diện cho vị trí mắt, mũi, miệng hoặc cũng có thể là 68 điểm landmark miêu tả chi tiết các góc cạnh của khuôn mặt, thậm chí chúng ta còn có thể có các bộ landmark 3D tương ứng
Hình 1.1 Mô hình RetinaFace [1] giúp phát hiện khuôn mặt, các điểm landmark
Hình 1.2 Đầu ra của các mô hình face detection (các boundingbox màu xanh)
Trong bài toán phát hiện hành vi gian lận trong thi cử, mô hình của chúng tôi cần phải phát hiện ra các vị trí xuất hiện của khuôn mặt trong hình ảnh Các khuôn mặt đó sẽ được căn chỉnh lại bằng thuật toán Face Alignment, sau đó các khuôn mặt sẽ được đưa qua mô hình nhận diện khuôn mặt để phát hiện xem khuôn mặt đó là thí sinh nào trong phòng thi, phục vụ cho 2 bài toán lớn đó là theo dõi thí sinh trong phòng thi và phòng tránh tình trạng gian lận trong việc đi thi hộ
1.4.2 Ước lượng khung xương người (Human Pose Estimation) Ước tính tư thế của con người là một công nghệ dựa trên thị giác máy tính để phát hiện và phân tích tư thế của con người Thành phần chính của ước lượng tư thế người là mô hình hóa cơ thể người Có ba loại mô hình cơ thể người được sử dụng nhiều nhất: mô hình dựa trên khung xương, dựa trên đường viền và dựa trên khối lượng Ước tính tư thế 2D của con người — vấn đề bản địa hóa các điểm chính về giải phẫu hoặc “các bộ phận” —đã tập trung chủ yếu vào tìm kiếm các bộ phận cơ thể của các cá nhân Suy ra tư thế của nhiều người trong hình ảnh, đặc biệt là các cá nhân tương tác với xã hội, tạo ra một tập hợp độc đáo của những thách thức Đầu tiên, mỗi hình ảnh có thể chứa một số lượng người có thể xảy ra ở bất kỳ vị trí hoặc quy mô nào Thứ hai, sự tương tác giữa mọi người gây ra sự giao thoa không gian phức tạp, do tiếp xúc, khớp cắn và khớp chân tay, làm cho sự liên kết của các bộ phận trở nên khó khăn Thứ ba, thời gian thực hiện rất phức tạp, có xu hướng phát triển với số lượng người trong hình ảnh thay đổi và tăng lên, làm cho hiệu suất thời gian thực trở thành một thách thức
Quy trình bắt đầu từ dữ liệu đầu vào là hình ảnh chứa con người và được phân tích dựa trên các yếu tố chính như khoảng cách giữa hai mắt, khoảng cách từ tai đến mắt, từ mắt đến mũi, từ mũi đến miệng và từ các bộ phận khác đến nhau, nhằm xác định các điểm trên cơ thể người Mục tiêu là xây dựng một bản đồ các điểm đánh dấu trên cơ thể và liên kết chúng thành các bộ phận có mối quan hệ với nhau để phục vụ cho việc dự đoán hành động của con người Qua đó hệ thống có thể nhận diện cấu trúc cơ thể, đo đạc các khoảng cách và từ đó hỗ trợ các ứng dụng như nhận dạng tư thế, theo dõi chuyển động và phân tích hành động.
Trong bài toán phát hiện gian lận thi cử, chúng tôi ứng dụng tính năng ước lượng khung xương người để theo dõi và phân tích hành động của thí sinh trong phòng thi Việc ước lượng khung xương cho phép nhận diện các động tác đáng nghi, cảnh báo kịp thời và tăng cường tính công bằng, an ninh cho kỳ thi thông qua giám sát hiệu quả.
1.4.3 Nhận diện khuôn mặt (Face Recognition)
Nhận diện khuôn mặt là phương thức xác định hoặc xác nhận danh tính của một cá nhân dựa trên các đặc điểm trên khuôn mặt của họ Các hệ thống nhận diện khuôn mặt có thể được dùng để nhận diện người trong ảnh, video hoặc trong thời gian thực, phục vụ cho các ứng dụng như an ninh, quản lý truy cập và giám sát tự động.
Nhận diện khuôn mặt là một loại bảo mật sinh trắc học đang được sử dụng rộng rãi trong các hệ thống an ninh và thực thi pháp luật Các dạng nhận diện sinh trắc học khác như nhận dạng giọng nói, nhận dạng vân tay và nhận dạng võng mạc mắt hoặc mống mắt cũng đóng vai trò quan trọng cho xác thực danh tính Công nghệ này chủ yếu phục vụ bảo mật và an ninh, nhưng ngày càng nhận được sự quan tâm ở những lĩnh vực ứng dụng khác Việc tối ưu hóa tính hiệu quả và bảo mật dữ liệu sinh trắc học đòi hỏi thiết kế hệ thống chặt chẽ và tuân thủ các quy định về quyền riêng tư và bảo vệ thông tin nhạy cảm.
Bài toán nhận diện khuôn mặt bắt đầu từ dữ liệu đầu vào là hình ảnh khuôn mặt Quá trình phân tích dựa trên các yếu tố chính như khoảng cách giữa hai mắt, độ sâu của hốc mắt, khoảng cách từ trán đến cằm, hình dạng gò má và đường viền môi, tai và cằm giúp xác định các điểm mốc trên khuôn mặt làm chìa khóa để phân biệt các khuôn mặt khác nhau Sau đó, các đặc trưng khuôn mặt được so sánh với các hồ sơ có trong cơ sở dữ liệu và kết quả đầu ra là ID của người được nhận diện trong cơ sở dữ liệu.
Hình 1.3 Đầu ra của nhận dạng khuôn mặt
Trong bài toán phát hiện gian lận thi cử, hệ thống nhận diện khuôn mặt được triển khai để biến kết quả nhận diện thành dữ liệu xác thực danh tính thí sinh Kết quả nhận diện cho biết thí sinh đó là ai trong cơ sở dữ liệu của trường, từ đó hỗ trợ công tác quản lý phòng thi và ngăn chặn gian lận thi cử một cách hiệu quả.
1.4.4 Nhận diện hành vi bất thường (Abnormal Activity Detection)
Trong phạm vi đề tài đã định ở mục 1.3, hệ thống kết hợp kết quả trích xuất đặc trưng từ ba module (hình ảnh khuôn mặt, tọa độ các điểm mốc trên khuôn mặt, tọa độ các khung xương nửa người) để module nhận diện hành vi bất thường trả về kết quả cho từng thí sinh (từng khuôn mặt) dưới dạng JSON Nội dung JSON chứa hai thông tin chính: thí sinh có hành vi bất thường hay không và danh tính của thí sinh (người đó là ai) Ví dụ: { "candidate_id": "ID_001", "has_anomalous_behavior": false, "identity": "Nguyễn Văn A" }.
Tổng kết chương 1
Trong chương này, chúng tôi trình bày tổng quan về bài toán nhận diện hành vi bất thường, đặc biệt trong ngữ cảnh thi cử, đồng thời định nghĩa lại phạm vi các hành vi bị xem là bất thường như quay trái, quay phải, quay ra phía sau, cúi đầu làm việc riêng dưới bàn và nhổm lên phía trước; phần này cũng xác định và phân tích các bài toán con cùng các kỹ thuật cần giải quyết, bao gồm phát hiện khuôn mặt, phân tích các điểm mốc, ước lượng khung xương, nhận dạng khuôn mặt và nhận diện các hành vi bất thường; từ các phân tích này, chúng tôi tiến hành nghiên cứu, so sánh và thực nghiệm, và sẽ mô tả cụ thể hơn ở các phần tiếp theo của báo cáo.
CÁC NGHIÊN CỨU CÓ LIÊN QUAN
Bài toán phát hiện khuôn mặt (Face Detection) và phân tích điểm mốc khuôn mặt (Face Landmark Estimation)
2.1.1 Multi-Scale Cascade Fully Convolutional Network for Face Detector[2]
Phương pháp này tiếp cận bài toán bằng cách khai thác đặc trưng từ mạng CNN kết hợp với Cascade Classifier để tối ưu hoá nhận diện Bài báo giới thiệu một Mạng Fully Convolutional Đa Quy Mô (Multi-scale Fully Convolutional Network); thay vì sinh ra một vector đặc trưng, đầu ra của mạng là một heatmap cho khu vực quan tâm Mô hình được mô tả gồm hai bước.
Proposal Generation: Mô hình tạo ra một image pyramid với các tỉ lệ khác nhau Theo bài báo, mỗi ảnh được thay đổi kích thước theo một danh sách kích thước xác định, bắt đầu từ 600 và tiếp tục ở các kích thước khác nhằm tăng khả năng nhận diện ở nhiều quy mô đối tượng, đồng thời tối ưu hóa quá trình trích xuất đặc trưng ở từng cấp độ Việc sử dụng pyramid kích thước giúp hệ thống phát hiện và phân tích đối tượng hiệu quả hơn bằng cách làm nổi bật thông tin ở nhiều tỷ lệ khác nhau.
Các ảnh được đưa về năm kích thước 400, 260, 170, 100 và 60 pixel, sau đó đồng thời chạy qua các mạng FCN (Fully Convolutional Networks) Bằng cách cộng các heatmap do các mạng FCN sinh ra, ta sẽ thu được một score map phản ánh mức độ nhận diện tại từng vị trí của ảnh.
Đầu vào của bước này là scoremap và mạng FCN được thiết kế phức tạp để nâng cao độ chính xác Nhiệm vụ của mạng FCN ở bước này là phân loại các proposal xem chúng có phải là khuôn mặt hay không, là một trong những cách tiếp cận sớm sử dụng heatmap trong nhận diện khuôn mặt Tuy nhiên, mô hình này chỉ có thể nhận biết được những khuôn mặt gần như trực diện trong điều kiện tự nhiên và hoạt động không tốt với các biến đổi về góc nhìn và ánh sáng Bên cạnh đó, phương pháp này chưa giải quyết bài toán face alignment, tức là căn chỉnh vị trí và hình dạng khuôn mặt trong ảnh.
Hình 2.1 Mô hình multi-scale cascade fully convolutional network
2.1.2 Multi-Task Cascaded Convolutional Networks [3]
Đây được xem là một phương pháp tiên phong trong học sâu cho kết hợp nhận diện và căn chỉnh khuôn mặt Mô hình gồm ba mạng con lần lượt là P-net, R-net và O-net: P-net đề xuất các vùng chứa khuôn mặt, R-net tinh chỉnh và loại bỏ các đề xuất sai từ P-net, còn O-net tương tự R-net nhưng tập trung mô tả đặc điểm khuôn mặt với 5 điểm landmark Kiến trúc của các mạng này được thiết kế đơn giản khi thay thế bộ lọc 5×5 bằng bộ lọc 3×3 và tăng số lượng bộ lọc để bổ sung thông tin phân loại và giảm lượng tính toán.
Hình 2.2 Khái quát mô hình multi-task FCN
Hình 2.3 Chi tiết kiến trúc của các mạng trong mô hình
CenterFace là một mô hình nhận diện khuôn mặt được giới thiệu vào năm 2019, mang ý tưởng tương tự như bài báo Object as Points khi coi khuôn mặt như một điểm duy nhất thay vì một bounding box Mạng CNN được sử dụng trong CenterFace là MobileNetV2 và mô hình tận dụng một feature pyramid do MobileNetV2 xây dựng để khai thác đặc trưng ở nhiều cấp độ Mục tiêu chính của CenterFace là sinh ra một heatmap mà tại các điểm có giá trị bằng 1 biểu thị khuôn mặt có mặt, còn tại các điểm có giá trị bằng 0 biểu thị không có khuôn mặt.
Loss function của mô hình này là một biến thể của focal loss Để dự đoán bounding box của khuôn mặt và 5 điểm landmark, mô hình dùng phương pháp hồi quy để ước lượng cả bounding box và 5 landmark Loss function của toàn bộ mô hình được cho trong công thức 2.2 ở phần dưới.
Hình 2.4 Kiến trúc của mô hình CenterFace
RetinaFace là mô hình face detection ra đời năm 2019, là một mô hình one stage Hiện nay, mô hình này đang cho kết quả cao trên các benchmark khác nhau Mô hình RetinaFace sử dụng multi-task loss bao gồm các task như face detection, face alignment, face box regression, dense regression, bằng việc học kết hợp nhiều task, kết quả của mô hình được cải thiện đáng kể Ngoài việc sử dụng multi-task learning mô hình còn sử dụng feature pyramid cùng với context module
Feature pyramid trong RetinaFace được xây dựng từ P2 đến P6, cho phép mô hình nhận diện khuôn mặt ở nhiều kích thước khác nhau Các mức P2 đến P5 được tính toán từ đầu ra của các khối residual thuộc mạng ResNet tương ứng, trong khi P6 được tạo bằng cách trượt filter 3x3 với stride 2 trên P5 Hình minh họa cho thấy cách tính toán của feature pyramid Mục tiêu của feature pyramid là giúp mô hình khai thác cả đặc trưng ở mức thấp lẫn mức cao, từ đó nâng cao khả năng phân loại khuôn mặt có kích thước khác nhau trong ảnh.
Context module trong RetinaFace được lấy cảm hứng từ các mô hình SSH và PyramidBox, với ý tưởng chính là mở rộng receptive field (khu vực tiếp nhận) để trích xuất thông tin ngoài khuôn mặt Việc áp dụng context module giúp RetinaFace học thêm các đặc trưng ngữ cảnh của bức ảnh, từ nền và các đối tượng xung quanh, nhờ đó tăng khả năng nhận diện và độ chính xác trong các điều kiện thực tế có phông nền phức tạp.
Hình 2.5 Mô hình RetinaFace và Context module trong mô hình SSH
Bài toán ước lượng khung xương người (Human Pose Estimation)
Như chúng ta đã biết, ước tính tư thế của nhiều người khó hơn so với trường hợp một người vì vị trí và số lượng người trong ảnh thường không xác định Để giải quyết vấn đề này, thông thường có thể áp dụng một trong hai cách tiếp cận chính: tiếp cận bottom-up, ghép nối các khớp của từng người từ tập dữ liệu lớn, và tiếp cận top-down, phát hiện trước từng người rồi ước lượng tư thế cho từng cá nhân Mỗi phương pháp có ưu nhược điểm tùy thuộc vào số lượng người, mức độ che khuất và yêu cầu độ chính xác của kết quả.
- Cách tiếp cận đơn giản là kết hợp một máy dò người (humans’ detection) trước, sau đó ước lượng các bộ phận và sau đó tính toán tư thế cho mỗi người Phương pháp này được gọi là phương pháp tiếp cận từ trên xuống
- Một cách tiếp cận khác là phát hiện tất cả các bộ phận trong ảnh (tức là các bộ phận của mỗi người), tiếp theo là liên kết/nhóm các bộ phận thuộc về những người riêng biệt Phương pháp này được gọi là phương pháp tiếp cận từ dưới lên
Hình 2.6 Ảnh minh hoạ cho bài toán ước lượng khung xương
Trong lĩnh vực ước tính tư thế của nhiều người, cách tiếp cận từ trên xuống thường dễ triển khai hơn so với cách tiếp cận từ dưới lên, bởi việc thiết lập một bộ phát hiện người hoạt động hiệu quả dễ hơn nhiều so với tích hợp các thuật toán liên kết/nhóm phức tạp Tuy nhiên, thật khó để đánh giá tổng thể hiệu suất giữa các phương pháp, vì hiệu quả phụ thuộc vào từng thuật toán phát hiện người và thuật toán liên kết/nhóm được sử dụng Do đó, chúng ta sẽ tập trung vào ước tính tư thế của nhiều người bằng cách áp dụng các kỹ thuật học sâu nhằm nâng cao độ chính xác và khả năng tổng quát của hệ thống.
OpenPose là một hệ thống nhận diện và đánh dấu các bộ phận cơ thể người theo cách tiếp cận từ dưới lên Hệ thống này trước tiên phát hiện các điểm chính của cơ thể ở mỗi người trong ảnh, sau đó gán các điểm này cho từng cá nhân riêng biệt, nhờ đó OpenPose có thể xác định vị trí và mối liên hệ giữa các điểm cơ thể trên mỗi người một cách chính xác Hình minh họa dưới đây trình bày kiến trúc của mô hình OpenPose, cho thấy các lớp xử lý, mạng phát hiện điểm và tầng ghép nối điểm lại với nhau để tạo nên cấu trúc pose đầy đủ cho cả ảnh.
Hình 2.7 Sơ đồ cấu trúc OpenPose
Mạng OpenPose lần đầu trích xuất đặc trưng từ một hình ảnh bằng cách dùng một số lớp đầu tiên (ví dụ VGG-19 trong sơ đồ trên) Các đặc trưng này sau đó được đưa vào hai nhánh song song của các lớp convolutional để xử lý trên mạng Nhánh đầu tiên dự đoán một tập hợp heatmaps thể hiện vị trí của các khớp cơ thể ở từng điểm, trong khi nhánh thứ hai dự đoán các trường liên kết vùng (Part Affinity Fields) nhằm xác định mối quan hệ giữa các khớp và ghép nối chúng thành cấu trúc cơ thể hoàn chỉnh.
Trong hệ thống nhận diện tư thế người, có 18 bản đồ tin cậy (confidence maps), mỗi bản đồ đại diện cho một phần cụ thể của bộ xương tư thế người Nhánh thứ hai dự đoán một tập hợp gồm 38 trường PAFs (Part Affinity Fields) thể hiện mức độ liên kết giữa các bộ phận và giúp xác định quan hệ không gian giữa chúng.
Hình 2.8 Ảnh minh hoạ áp dụng mạng OpenPose
Các giai đoạn tiếp theo được dùng để tinh chỉnh các dự đoán của từng nhánh trong hệ thống nhận diện tư thế người Sử dụng bản đồ độ tin cậy từng phần (part-wise confidence maps), đồ thị lưỡng phân (bipartite graphs) được hình thành giữa các cặp phần cơ thể như minh họa ở hình trên Với các giá trị PAF, các liên kết yếu trong đồ thị hai bên sẽ bị loại bỏ, giúp tối ưu hóa các kết nối giữa các phần và cải thiện độ chính xác gán nhánh Qua các bước này, có thể ước tính và gán bộ xương tư thế người cho mỗi người trong ảnh.
DeepCut là một phương pháp từ dưới lên để ước lượng tư thế của nhiều người trong ảnh hoặc video, thể hiện cách tiếp cận bottom-up so với các phương pháp từ trên xuống Các tác giả đã tiếp cận nhiệm vụ bằng cách xác định các vấn đề then chốt như làm thế nào để tách các phần cơ thể giữa cảnh có nhiều người, ghép các khớp và phần cơ thể thành các cá thể riêng biệt khi bị che khuất hoặc giao thoa, duy trì tính nhất quán qua các khung hình và theo dõi tư thế theo thời gian, cũng như tối ưu hóa chi phí tính toán để xử lý các tập dữ liệu phức tạp Nhờ xác định và giải quyết những thách thức này, DeepCut đưa ra một khuôn khổ tích hợp nhận diện khớp, ghép khớp cho từng cá nhân và xử lý hiện tượng bị che khuất, nhằm đạt hiệu suất cao trên các tập dữ liệu thực tế.
Xây dựng một tập hợp gồm D ứng cử viên cho các bộ phận cơ thể, đại diện cho mọi vị trí có thể xuất hiện của các bộ phận trên mỗi người trong hình ảnh Từ tập hợp này, chọn một tập con các bộ phận cơ thể làm đầu vào cho quá trình nhận diện và phân tích vị trí của các bộ phận trên người trong ảnh.
Chúng ta gắn nhãn cho từng bộ phận cơ thể đã chọn bằng một trong các lớp C của bộ phận cơ thể; các lớp này đại diện cho các loại bộ phận khác nhau, ví dụ như cánh tay.
- Phân vùng các bộ phận cơ thể của cùng một người
Hình 2.9 Ảnh minh hoạ áp dụng DeepCut
Vấn đề trên được giải quyết bằng cách mô hình hóa thành một bài toán Lập trình tuyến tính số nguyên (ILP - Integer Linear Programming) Mô hình này xem xét bộ ba biến nhị phân (x, y, z) với các miền giá trị được xác định như nêu trong các công thức dưới đây Việc chuyển đổi sang ILP cho phép tối ưu hóa mục tiêu đồng thời và đảm bảo các ràng buộc của hệ thống.
Xem xét hai ứng cử viên cho bộ phận cơ thể D và D' từ tập hợp các ứng viên D, và hai lớp cơ thể C và C' từ tập hợp các lớp C Các ứng cử viên cho bộ phận cơ thể được lấy qua RCNN (Region-based Convolutional Neural Networks) nhanh hơn so với CNN (Convolutional Neural Networks) dày đặc Bây giờ, chúng ta có thể phát triển tập hợp các trường hợp sau.
- Nếu x(D,C) = 1 thì nó có nghĩa là ứng viên bộ phận cơ thể đó D thuộc về lớp C
- Ngoài ra, y(D,D') = 1 chỉ ra rằng các ứng cử viên bộ phận cơ thể D và D' thuộc về cùng một người
Phương pháp này xác định z(D,D’,C,C’) bằng z = x(D,C) × x(D’,C’) × y(D,D’) Nếu giá trị z bằng 1, điều này có nghĩa là phần cơ thể D thuộc lớp C, phần cơ thể D’ thuộc lớp C’, và hai phần D, D’ thuộc về cùng một người Cách diễn giải này cho thấy cách kết hợp x(D,C), x(D’,C’) và y(D,D’) để nhận diện người dựa trên sự liên hệ giữa các phần cơ thể và lớp phân loại, phục vụ cho các ứng dụng nhận diện thông qua phân tích phần cơ thể và mức độ khớp giữa chúng.
Trường hợp cuối cùng có thể được sử dụng để phân vùng tư thế của nhiều người khác nhau Các phát biểu trên có thể được diễn giải dưới dạng một bài toán tối ưu tuyến tính với các biến (x, y, z) Nhờ đó, bài toán tối ưu tuyến tính số nguyên (ILP) được thiết lập và tư thế của nhiều người có thể được ước lượng đồng thời.
2.2.3 RMPE (Regional Multi-person Pose Estimation - AlphaPose) [7]
Bài toán nhận diện khuôn mặt (Face Recognition)
2.3.1 Tiền xử lý dữ liệu đầu vào
Ảnh khuôn mặt đầu vào được chụp ở nhiều góc nghiêng và hướng khác nhau có thể làm phức tạp việc nhận diện khuôn mặt do tính đa dạng và sự mất cân bằng của dữ liệu Vì vậy, tiền xử lý đầu vào tập trung vào căn chỉnh khuôn mặt để các khuôn mặt cần nhận diện được chuẩn hóa về một hình thức đồng nhất Quá trình căn chỉnh khuôn mặt giúp loại bỏ ảnh hưởng của pose, góc nhìn, ánh sáng và biểu cảm, từ đó nâng cao độ chính xác và tính bền vững của các phương pháp nhận diện khuôn mặt khi làm việc với dữ liệu thực tế.
Căn chỉnh khuôn mặt gồm hai bước cơ bản:
- Nhận dạng cấu trúc hình học của khuôn mặt trong ảnh kỹ thuật số
- Cố gắng có được sự căn chỉnh chính tắc của khuôn mặt dựa trên phép tịnh tiến, tỷ lệ và xoay
Trong bài toán này, chúng tôi xử lý căn chỉnh khuôn mặt sử dụng các điểm mốc của khuôn mặt
Trong không gian tọa độ đầu ra này, tất cả các mặt trên toàn bộ tập dữ liệu phải:
- Được căn giữa trong hình ảnh
- Xoay sao cho mắt nằm trên một đường ngang (nghĩa là xoay khuôn mặt sao cho hai mắt nằm dọc theo cùng một tọa độ y)
- Được chia tỷ lệ sao cho kích thước của các mặt gần giống nhau
Hình 2.12 Ảnh minh hoạ việc căn chỉnh lại khuôn mặt 2.3.2 FaceNet [9]
FaceNet là một mô hình học sâu trực tiếp ánh xạ hình ảnh khuôn mặt vào một không gian Euclid nhỏ, sao cho khoảng cách giữa các nhúng phản ánh mức độ giống nhau của khuôn mặt Khi nhúng đã được học, các tác vụ nhận diện khuôn mặt, xác thực và phân nhóm có thể được thực hiện dễ dàng bằng cách so sánh vectơ đặc trưng Phương pháp của nhóm tác giả sử dụng một mạng sâu phức hợp được huấn luyện để tối ưu hóa trực tiếp nhúng thay vì dùng một lớp bottleneck như các phương pháp học sâu trước đây Để huấn luyện, họ sử dụng bộ ba ảnh gốc, khuôn mặt phù hợp và khuôn mặt không phù hợp được căn chỉnh gần đúng và sinh ra bằng kỹ thuật khai thác bộ ba trực tuyến Lợi ích của phương pháp này là biểu diễn hiệu quả hơn đáng kể, đạt hiệu suất nhận diện khuôn mặt hiện đại chỉ với nhúng 128 chiều cho mỗi khuôn mặt.
FaceNet là một hệ thống nhận diện khuôn mặt dựa trên học sâu, sử dụng mạng tích chập (CNN) để học các đặc trưng của khuôn mặt Mô hình cố gắng tối ưu nhằm giảm sự khác biệt giữa các ảnh của cùng một người ở những điều kiện chụp khác nhau và tăng sự phân biệt giữa khuôn mặt của các người khác nhau, từ đó cải thiện hiệu quả nhận diện khuôn mặt trên tập dữ liệu đa dạng.
Hình 2.13 Mô hình nhúng ảnh khuôn mặt
Sau khi nhúng tất cả hình ảnh mẫu vào không gian Euclidean một chiều, mục tiêu được xác định bằng cách đánh giá sự gần gũi với yêu cầu và sự khác biệt với các đối tượng còn lại Hàm mất mát Triplet Loss được sử dụng để tối ưu điều này bằng cách làm cho embedding của anchor gần với embedding của một mẫu cùng nhãn (positive) và xa với embedding của một mẫu khác (negative) Quá trình tối ưu đảm bảo rằng khoảng cách giữa anchor và positive nhỏ hơn khoảng cách giữa anchor và negative, từ đó cải thiện khả năng phân biệt và nhận diện trong hệ thống dựa trên embedding.
Trên phương diện biểu diễn toán học, mục đích của hàm mất mát áp dụng như công thức sau:
Do vậy hàm mất mát lúc này sẽ được viết như sau:
Với alpha ở đây là tham số dùng để hỗ trợ phân biệt giữa mẫu mục tiêu cần đạt được với những mẫu khác
Trong các bài toán nhận dạng khuôn mặt đơn giản, mô hình phân loại khuôn mặt có thể là ResNet50 hay VGG để trích chọn đặc trưng từ một khuôn mặt Có thể coi lúc này ta phân loại các khuôn mặt là huấn luyện mô hình để phân loại khuôn mặt thuộc vào các class khác nhau với mỗi người trong cơ sở dữ liệu là một class cần phân loại
Softmax function đưa ra xác suất cho mỗi lớp và tổng các xác suất này bằng 1 khi dữ liệu ảnh đầu vào được xử lý Từ công thức (2.6) và hai biểu thức liên quan đến Softmax và Cross-Entropy, Softmax Loss được hiểu như là tổng các thành phần từ hai công thức này Qua đó, Softmax Loss kết nối xác suất dự đoán từ Softmax với sai số đo được bởi Cross-Entropy, giúp mô hình học cách phân loại ảnh chính xác hơn Việc tối ưu Softmax và Cross-Entropy trong cùng một khối loss thúc đẩy hiệu quả của mạng neural trong các bài toán nhận diện hình ảnh đa lớp.
Trong các bài toán nhận diện khuôn mặt, sau khi huấn luyện, mô hình sẽ loại bỏ phần nhận diện cụ thể và trả về một vector nhúng (embedding) có kích thước 512 hoặc 256 chiều Vector nhúng này được đưa vào không gian tìm kiếm để thực hiện so sánh khuôn mặt dựa trên các đo khoảng cách Các phương pháp đo khoảng cách phổ biến gồm Euclidean distance và Cosine distance, dùng để ước lượng mức độ tương đồng giữa các khuôn mặt dựa trên đại diện vector Việc chuyển đổi khuôn mặt thành vector nhúng và thực hiện so sánh trong không gian vector giúp hệ thống nhận diện khuôn mặt hoạt động nhanh và có thể mở rộng quy mô.
Với các mô hình đưa hình ảnh vào không gian Euclidean để nhận dạng dựa trên khoảng cách là không đủ, do vậy ArcFace đưa ra một phương hướng kết với góc để đưa ra dự đoán chính xác hơn trong không gian này ArcFace hỗ trợ sự phân tách cao trong không gian khuôn mặt Hiện tại theo kết quả của nhóm tác giả, ArcFace đang có kết quả tốt nhất so với các phương pháp đương thời và có chi phí tính toán không đáng kể
ArcFace là một phương pháp tính toán hàm mất mát để nhận diện khuôn mặt được tốt trong không gian Eucildean do vậy nó vẫn cần một đầu vào sử dụng kiến trúc mạng học sâu để nhúng dữ liệu ảnh khuôn mặt đầu vào
Công thức nền của ArcFace Loss dựa trên Softmax Loss:
Softmax Loss có nhược điểm chính là thiếu tính đa dạng trong biểu diễn xác suất, khiến mô hình dễ bị nhận diện nhầm và xảy ra sai sót khi số lượng người cần nhận diện quá lớn Khi quy mô dữ liệu và số lớp tăng lên, nhược điểm này làm giảm độ chính xác nhận diện và tăng sai lệch kết quả, đặt thách thức cho hiệu suất tổng thể của hệ thống nhận diện.
Hình 2.14 Ý tưởng hình thành của ArcFace Loss
Theo bài báo, nhóm tác giả quyết định thay thế vectơ nhúng khuôn mặt bằng một biểu diễn dựa trên các góc trong không gian, đồng thời chuẩn hóa tỉ lệ và bỏ đi tham số thiên vị Việc chuyển sang biểu diễn bằng góc giúp tăng tính ổn định và khả năng so khớp giữa các mẫu khuôn mặt khi chịu biến đổi ánh sáng và góc chụp Công thức trở thành một mô hình mô tả khuôn mặt bằng các góc không gian kết hợp với vectơ chuẩn hóa, đồng thời loại bỏ tham số lệch để tối ưu hiệu suất nhận diện.
Tuy nhiên để công thức này được mạnh mẽ hơn trong việc phân loại, nhóm tác giả đã thêm vào một tham số khoảng cách tăng sự phân biệt giữa các khuôn mặt với nhau:
Annoy (Approximate Nearest Neighbors Oh Yeah) là một thư viện C++ có liên kết Python, được thiết kế để tìm kiếm các điểm gần nhất với một điểm truy vấn nhất định trong không gian Thư viện này sử dụng các kỹ thuật Approximate Nearest Neighbors để đạt hiệu suất cao và xây dựng các cấu trúc dữ liệu tối ưu cho việc tra cứu nhanh Nó tạo ra các cấu trúc dữ liệu dựa trên tệp chỉ đọc lớn được ánh xạ vào bộ nhớ, cho phép nhiều tiến trình chia sẻ dữ liệu cùng một lúc mà không sao chép Với tích hợp Python mạnh mẽ, Annoy là lựa chọn phổ biến cho các ứng dụng máy học, đề xuất và tìm kiếm tương đồng trên tập dữ liệu lớn.
Annoy có khả năng sử dụng các tệp tĩnh làm chỉ mục, cho phép chia sẻ chỉ mục giữa các quy trình một cách hiệu quả Nó tách việc tạo chỉ mục khỏi quá trình tải, để có thể chuyển các chỉ mục dưới dạng tệp và ánh xạ chúng vào bộ nhớ nhanh chóng Nhờ cách làm này, chỉ mục của Annoy có dung lượng bộ nhớ rất nhỏ và tiêu thụ tài nguyên hiệu quả, phù hợp cho các ứng dụng tìm kiếm và gợi ý đòi hỏi hiệu suất cao.
Để thực hiện tìm kiếm hàng xóm gần nhất trên một hệ thống có nhiều CPU, ta chỉ cần xây dựng một chỉ mục duy nhất Từ chỉ mục này có thể phân phối và sao chép các tệp tĩnh vào môi trường sản xuất và các nền tảng như Hadoop, giúp triển khai nhanh chóng và hiệu quả Bất kỳ tiến trình nào cũng có thể mmap chỉ mục vào bộ nhớ và thực hiện tra cứu ngay lập tức, từ đó tăng tốc độ phản hồi cho các truy vấn tìm kiếm hàng xóm gần nhất.
Bài toán nhận diện hành vi bất thường (Abnormal Activity Detection)
Dựa trên một số cuộc khảo sát của Chen và Wei (2013); Presti và Cascia (2016); Edwards và cộng sự (2016); Synnott và cộng sự (2015) về phân tích chuyển động của con người dựa trên hình ảnh màu và hình ảnh chiều sâu, cũng như phân loại hành động dựa trên phân tích khung xương và việc giới thiệu bộ dữ liệu mới cho xử lý các tương tác phức tạp, ta thấy sự tiến bộ đáng kể của các phương pháp nhận diện chuyển động Việc theo dõi và xác định đối tượng và chuyển động của con người trong video giám sát đã trở thành một chủ đề nóng của nghiên cứu Từ năm 2006 đến nay, tài liệu cho thấy mức độ quan tâm của giới nghiên cứu đối với nhận diện hành vi bất thường trong lĩnh vực này tăng lên nhanh chóng Những tiến bộ này mở ra khả năng xử lý các tương tác phức tạp và mở rộng ứng dụng trong giám sát an ninh, phân tích hành vi và hệ thống an toàn công cộng.
Hình 2.16 Thống kê số lượng nghiên cứu qua các năm
Trong bài báo về Đánh giá về các phương pháp phát hiện hoạt động bất thường của Dhiman, C., & Vishwakarma và cộng sự năm 2018 Nhóm tác giả đã kết luận về sự phát triển nhanh chóng của các chiến lược thiết kế đặc trưng cho bài toán Từ sử dụng đặc trưng được thiết kế thủ công (handcrafted feature) cho đến đặc trưng sâu (deep features) cho nhiều bài toán bao gồm an ninh, giám sát, phân tích đám đông Cách thiết kế đặc trưng cũng thay đổi dựa theo chiều đầu vào trong từng ứng dụng Ví dụ với ảnh màu RGB, ảnh chiều sâu và phân tích khung xương người Trong một vài năm qua, do sự phát triển của các loại cảm biến như cảm biến hồng ngoại (sử dụng trong Microsoft
Kinect có khả năng nhận dạng hoạt động bất thường dựa trên ảnh đầu vào ở dạng ảnh chiều sâu và phân tích khung xương người, tuy nhiên độ chính xác của ảnh chiều sâu thường không cao trong cảnh đám đông công khai khi nền liên tục thay đổi và ánh sáng biến động ở các không gian mở Vì vậy, phân tích ảnh màu RGB được sử dụng mạnh hơn trong những điều kiện này Nhờ ưu thế của các đặc trưng sâu từ các phương pháp học sâu (Deep Learning), hiệu suất nhận dạng đã vượt qua các đặc trưng được thiết kế thủ công.
Một số nhóm phương pháp tiếp cận bằng đặc trưng sâu có thể được kể đến như
2.4.1 Temporal regularity model (Mô hình đều đặn theo thời gian) [13]:
Mô hình này tập trung đánh giá các đặc trưng của mạng nơ-ron tích chập (CNN) theo thời gian để nắm bắt các sự kiện bất thường trong video Ravanbakhsh và cộng sự đã sử dụng CNN được đào tạo trước về nhận dạng đối tượng để phát hiện sự bất thường và áp dụng cách tiếp cận hai kênh để biểu diễn video dưới dạng appearance và motion bằng optical flow Họ đề xuất mạng TCP (Temporal CNN Pattern), trong đó lớp Lượng tử hóa nhị phân (Binary Quantization) được đặt làm lớp cuối cùng của CNN nhằm biểu diễn các mẫu chuyển động tạm thời cho phân đoạn bất thường Tuy nhiên, TCP không thể huấn luyện end-to-end và đòi hỏi quá trình xử lý hậu kỳ nặng nề, đồng thời yêu cầu ma trận đặc trưng tích chập đã được tính toán trước đó.
Các phương pháp phát hiện bất thường dựa trên mã hóa thưa thớt (sparse coding) liên quan đến việc xây dựng một từ điển cho các sự kiện bình thường, nơi lỗi tái dựng nhỏ cho thấy sự kiện bình thường và các sự kiện bất thường gây lỗi tái dựng lớn Việc tối ưu hóa các hệ số thưa thớt tốn thời gian và có thể trở thành tắc nghẽn cho quá trình học từ điển Bên cạnh đó, các khung lân cận về thời gian được gán các hệ số thưa thớt khác nhau, dẫn đến mất tính liên kết theo thời gian giữa các khung Để giữ lại thông tin cục bộ giữa các khung lân cận, phương pháp dựa trên mã hóa thưa thớt nhất quán theo nhịp độ (Temporally Coherent Sparse Coding - TSC) được giới thiệu, trong đó các khung tương tự được mã hóa bằng cùng hệ số thưa thớt [14] TSC được ánh xạ tới biểu diễn tương đương của nó bằng cách sử dụng nhiều mạng RNN xếp chồng lên nhau, và việc tối ưu hóa các tham số của mạng RNN này đã làm giảm nhu cầu tinh chỉnh các siêu tham số và tăng tốc dự đoán bất thường do cho phép sử dụng kiến trúc mạng nông hơn.
2.4.2 Mô hình không gian-thời gian (Spatio-temporal model):
Zhou và cộng sự đã tiên phong trong việc sử dụng CNN theo không gian-thời gian để phát hiện và định vị các bất thường Mô hình phát hiện bất thường theo không gian-thời gian của Fang và cộng sự được lấy cảm hứng từ thông tin nổi bật (saliency information) thu được từ video, đại diện cho thông tin không gian SI được trích xuất từ các vùng nổi bật trên khung hình Chuyển động tạm thời được thể hiện bằng multiscale histogram optical flow (MHOF) Mạng học sâu PCANet được dùng để trích xuất đặc trưng từ SI và MHOF nhằm phát hiện bất thường.
Một khi các sự kiện bất thường được phát hiện, cần giải thích lý do tại sao chúng được đánh giá là bất thường Hinami và cộng sự đề xuất một cách tiếp cận kết hợp phát hiện bất thường ở mức tổng thể với việc kể lại các sự kiện bất thường bằng cách tích hợp mô hình phát hiện bất thường nhanh Fast-RCNN (MT-FRCN) và một mô hình phát hiện sự kiện riêng cho từng môi trường [17] Hiện tại, kiến thức ngữ nghĩa được sử dụng để giải thích sự bất thường bị hạn chế trong các hành động, trong khi hiểu biết sâu sắc về các khái niệm trực quan có thể được mở rộng để giải thích các tương tác đối tượng phức tạp hơn xảy ra trong các sự kiện bất thường Sun và cộng sự đã kết hợp OC-SVM (one-class SVM) với CNN để thiết kế một mô hình có thể huấn luyện đầu cuối nhằm phát hiện bất thường [18] Để mô hình hóa vận tốc và hướng của các thực thể trong video, các đặc trưng Optical Flow được đưa làm đầu vào cho CNN, và mô hình DOC (Deep One Class) của họ được trang bị hàm Radial Basis Function (RBF) mang lại khả năng phát hiện bất thường rất tốt.
2.4.3 Mô hình học đại diện (Representation learning model):
Hu và cộng sự đã sử dụng mạng D-IncSFA (deep incremental slow feature analysis network) để khai thác các cấp độ trừu tượng cao từ video và phát hiện các điểm bất thường ở một bước Phát hiện bất thường toàn cầu được thực hiện bằng cách dùng mô hình thời gian, trong khi phát hiện bất thường cục bộ được thực hiện bằng phân tích đa tỷ lệ dựa trên giá trị đạo hàm tổng bình phương (summed squared derivative - SSD) Phương pháp này không dựa trên bất kỳ mô hình phân loại nào và không sử dụng các đặc trưng được thiết kế thủ công.
Mặc dù các mô hình học sâu rất tốt trong việc trích xuất mức độ trừu tượng cao từ video, việc xây dựng các tác vụ hồi quy như phát hiện tắc nghẽn và đếm đám đông gặp khó khăn do nhãn dữ liệu hiện có không đủ khả năng để tinh chỉnh các tham số học Vấn đề này đã được giải quyết bằng học số liệu sâu dưới dạng hồi quy (deep metric learning - DML) áp dụng cho các phương pháp tiếp cận dựa trên mật độ (density-based approaches) DML không chỉ trích xuất các đặc trưng dựa trên mật độ mà còn học cách đo khoảng cách tốt hơn Hiện tại, phương pháp này được chứng minh có thể áp dụng hiệu quả cho phát hiện tắc nghẽn và đếm đám đông.
Bài toán cảnh báo gian lận trong thi cử dựa trên nhận diện hành vi bất thường
Mặc dù có rất nhiều nghiên cứu xoay quanh bài toán nhận diện hành vi bất thường, tuy nhiên hầu hết chúng mới tập trung cho các bài toán trong phát hiện hành vi trộm cắp, bạo lực, phát hiện người bị ngã, bị thương, kiểm soát đám đông, phân tích đám đông mà chưa tập trung nhiều trong các bài toán như cảnh báo gian lận trong thi cử Lý do cho sự thiếu sót này có thể dễ dàng nhận thấy được khi chúng ta chưa có một bộ dữ liệu public chuẩn và định nghĩa chung cho bài toán này để các nhóm nghiên cứu có thể tập trung xây dựng phương pháp tiếp cận và thực nghiệm, so sánh chung trên các bộ dữ liệu đó
Nghiên cứu có liên quan gần như là duy nhất chúng tôi có thể tìm được là của nhóm tác giả Asma`a Al Ibrahim, Gibrael Abosamra và Mohamed Dahab vào năm 2018
Nhóm tác giả đã xây dựng một bộ dữ liệu riêng khá đơn giản với một số hành động đáng nghi như nhìn trái, nhìn phải, … và đề xuất một hệ thống gồm 3 module: nhận diện khuôn mặt bằng phương pháp Haar Cascade detector, nhận diện trạng thái đáng nghi bằng mạng nơ-ron và phân loại trạng thái bất thường bằng mô hình Gaussian Hệ thống cho kết quả tốt trên tập dữ liệu mà nhóm tác giả đã xây dựng trong môi trường nghiên cứu của họ Tuy nhiên, hệ thống này còn tồn tại một số điểm yếu.
Việc dựa vào các phương pháp xử lý ảnh quá đơn giản như Background Subtraction để phát hiện thí sinh làm bài thi và Haar Cascade để nhận diện khuôn mặt khiến hệ thống giám sát thi trực tuyến dễ bị ảnh hưởng bởi sự biến động của ánh sáng, chất lượng hình ảnh và loại camera Những yếu tố này làm giảm đáng kể độ chính xác và độ ổn định của hệ thống khi điều kiện ánh sáng thay đổi hoặc camera bị thay thế, do đó cần đầu tư vào các giải pháp nhận diện và xử lý ảnh hiện đại, bền vững, có khả năng thích ứng với nhiều điều kiện ánh sáng và nhiều loại camera để đảm bảo công bằng và an toàn cho kỳ thi.
Hai mô-đun nhận diện trạng thái đáng nghi và phân loại trạng thái bất thường có thể được gộp chung lại với nhau, nhưng hiện nay vẫn bị tách làm hai bước, điều này có thể ảnh hưởng đáng kể đến tốc độ xử lý Các mô hình được áp dụng cho đến nay chưa đạt được độ phức tạp phù hợp, và khả năng tổng quát hóa ngoài tập dữ liệu của tác giả vẫn là một câu hỏi lớn.
- Chưa có khả năng nhận diện, mapping thí sinh là ai
Vì vậy, trong đề tài nghiên cứu khoa học này, chúng tôi đã đặt ra mục tiêu cải tiến tốt hơn hướng tiếp cận này bằng cách:
Chúng ta sẽ áp dụng các phương pháp hiện đại nhất trong việc phát hiện thí sinh và nhận diện khuôn mặt nhằm nâng cao độ chính xác và tính khả thi thực tế của hệ thống Công nghệ nhận diện khuôn mặt tiên tiến cho phép nhận diện nhanh chóng và đáng tin cậy dù ở nhiều điều kiện ánh sáng và góc nhìn khác nhau Việc tối ưu hóa thuật toán và tích hợp dữ liệu người dùng an toàn sẽ giảm sai lệch và tăng cường hiệu quả xử lý thực tế của kỳ thi Nhờ đó hệ thống có độ tin cậy cao hơn và phù hợp với yêu cầu thực tế của quá trình kiểm tra.
- Sử dụng mô hình nhận diện và phân loại hành vi đáng ngờ tốt hơn, kết hợp nhiều đặc trưng có thể được trích xuất như:
- Khung xương nửa người trên từng thí sinh (Upper human pose)
- Vị trí (location) và các điểm mốc (landmark) của khuôn mặt
- Đặc trưng hình ảnh (sử dụng CNN) trên hình ảnh nửa người trên của từng thí sinh
- Bổ sung khả năng nhận diện khuôn mặt để dễ dàng lưu trữ và truy xuất cá thể có hành vi gian lận.
Tổng kết chương 2
Như vậy, qua chương 2, chúng tôi đã tìm hiểu và nghiên cứu các phương pháp tiếp cận cho 4 bài toán: Phát hiện khuôn mặt và ước lượng điểm mốc khuôn mặt, nhận diện khuôn mặt và nhận diện hành vi bất thường Trên cơ sở những tổng hợp này, chương 3 sau đây sẽ đi vào phân tích kỹ các phương pháp tiếp cận được chúng tôi lựa chọn hoặc đưa ra cho từng bài toán con ở trên.
PROPOSED ALGORITHMS
Face Detection + Facial Landmark detection
Đối với bài toán face detection và facial landmark detection, mô hình retinaface hiện đang được áp dụng rộng rãi ở không chỉ nghiên cứu mà còn trong các sản phẩm thực tế
Một số ưu điểm của mô hình này so với các mô hình face detection khác:
- Mô hình phục vụ cùng lúc nhiều bài toán: chúng ta có thể có face detection, face alignment, thậm chí là cả dense face
- Bằng việc sử dụng một backbone nhẹ, mô hình retinaface có thể chạy realtime trên các thiết bị sử dụng CPU với ảnh có kích thước 480x640
- Độ chính xác cao: mô hình RetinaFace vượt trội hơn so với các mô hình two- stage khác 1.1% AP khi AP của mô hình RetinaFace đạt 91.4%
- Mô hình RetinaFace giúp cải thiện độ chính xác của mô hình ArcFace cho bài toán face recognition trên nhiều benchmark khác nhau
Hình 3.1 Mô hình retinaface giúp cải thiện độ chính xác của bài toán face recognition
Trong bài toán nhận diện điểm đặc trưng khuôn mặt (facial landmark), RetinaFace đạt kết quả vượt trội so với MTCNN Qua thực nghiệm, chúng tôi nhận thấy RetinaFace cho kết quả facial landmark tốt hơn hẳn so với CenterFace.
Hình 3.2 So sánh NME của mô hình retinaface với MTCNN
Với những ưu điểm nổi bật của mô hình RetinaFace được nêu ở trên, chúng tôi quyết định tích hợp RetinaFace cho mô-đun nhận diện khuôn mặt và căn chỉnh khuôn mặt (face alignment) trong hệ thống phát hiện hành vi gian lận thi cử Việc áp dụng RetinaFace cho quá trình nhận diện và căn chỉnh khuôn mặt sẽ tăng độ chính xác, tối ưu hóa quy trình xác thực danh tính và giám sát hành vi gian lận trong các kỳ thi, cả tại chỗ lẫn thi trực tuyến Chúng tôi tập trung tối ưu luồng xử lý hình ảnh để đảm bảo tốc độ thời gian thực và khả năng mở rộng, đồng thời tuân thủ các yêu cầu bảo mật dữ liệu và quyền riêng tư, nhằm mang lại một hệ thống đáng tin cậy, hiệu quả và dễ bảo trì.
Human Pose Estimation
Như đã nêu ở phần 2 chúng ta có rất nhiều cách tiếp cận để giải quyết bài toán này nhưng mỗi cách đều có ưu nhược điểm riêng biệt nhưng nhìn tổng quan phương pháp PAF đã cho tốc độ và độ chính xác tương đối hợp lý (một số mô hình có độ chính xác cao hơn nhưng về mặt tốc độ lại chậm hơn đáng kể) Từ đặc điểm đó của mô hình PAF Pose chúng tôi đã quyết định sử dụng mô hình này
Phương pháp tiếp cận sử dụng một đại diện không tham số, mà chúng tôi gọi là Đối tượng chung sở thích Trường (Part Affinity Fields), để học cách liên kết các bộ phận cơ thể với các cá nhân trong hình ảnh Kiến trúc mã hóa ngữ cảnh toàn cầu, cho phép một bước phân tích cú pháp từ dưới lên(bottom-up) tham lam duy trì độ chính xác cao trong khi đạt được hiệu suất thời gian thực, không phân biệt số lượng người trong ảnh Kiến trúc được thiết kế để cùng tìm hiểu các vị trí bộ phận và sự liên kết của chúng thông qua hai nhánh của cùng một trình tự quá trình dự đoán
Hình 3.3 Ảnh minh hoạ áp dụng mô hình phát hiện khung xương
Ảnh đầu vào có kích thước w × h và hệ thống dự đoán 2D vị trí các điểm chính cho mỗi người trong ảnh Đầu tiên, một mạng chuyển tiếp dự đoán đồng thời tập bản đồ tin cậy 2D (S) và tập trường vectơ 2D (L) cho các mối quan hệ giữa các khớp Tập S gồm các bản đồ S1, S2, , SJ với Sj ∈ R^{w×h}, j ∈ {1, ,J}, trong khi tập L gồm C trường vectơ L1, L2, , LC với Lc ∈ R^{w×h×2}, mỗi vị trí ảnh trong Lc mã hóa một vector 2D Cuối cùng, các bản đồ tin cậy và các trường vectơ được phân tích cú pháp bằng suy luận tham lam để xuất ra các điểm chính 2D cho tất cả mọi người trong ảnh.
Hình 3.4 Ảnh minh hoạ bản đồ tin cậy và PAF
Kiến trúc được thể hiện trong hình 3.4, đồng thời dự đoán bản đồ độ tin cậy cho phát hiện và các Part Affinity Fields (PAFs) mã hóa liên kết giữa các phần cơ thể Mạng chia thành hai nhánh song song: nhánh trên cùng (màu be) dự đoán bản đồ độ tin cậy và nhánh dưới cùng (màu xanh lam) dự đoán các Part Affinity Fields Mỗi nhánh là một kiến trúc dự đoán lặp đi lặp lại, được tinh chỉnh qua các giai đoạn liên tiếp t ∈ {1, 2, …, T} với giám sát trung gian ở từng giai đoạn để cải thiện độ chính xác.
Hình ảnh được phân tích lần đầu tiên bởi một mạng phức hợp (được khởi tạo bởi
Hệ thống dựa trên 10 lớp đầu tiên của VGG-19 được tinh chỉnh để sinh ra tập hợp các bản đồ đặc trưng F làm đầu vào cho giai đoạn đầu của mỗi nhánh Ở giai đoạn đầu, mạng tạo ra tập hợp bản đồ tin cậy phát hiện S1 = ρ1(F) và tập hợp các Part Affinity Fields L1 = φ1(F), trong đó ρ1 và φ1 là các CNN được dùng để suy luận ở Stage 1 Ở các giai đoạn tiếp theo, các dự đoán từ cả hai nhánh ở giai đoạn trước, kết hợp với đặc điểm hình ảnh gốc F, được ghép nối và sử dụng để tạo ra các dự đoán tinh chỉnh.
Hình 3.5 Ảnh minh hoạ việc tinh chỉnh bản đồ tin cậy và PAF
Hình 3.5 minh họa quá trình tinh chỉnh các bản đồ tin cậy và affinity fields qua từng giai đoạn Để hướng dẫn mạng dự đoán lặp lại bản đồ tin cậy của các bộ phận cơ thể ở nhánh đầu tiên và các PAF ở nhánh thứ hai, chúng tôi áp dụng hai hàm mất mát ở cuối mỗi giai đoạn, tương ứng cho từng nhánh Chúng tôi sử dụng hàm mất mát L2 giữa các dự đoán được ước tính với bản đồ tin cậy và trường xác thực cơ sở Để giải quyết thực tế một số bộ dữ liệu không được gắn nhãn đầy đủ cho mọi người, chúng tôi cân nhắc các hàm mất mát có thành phần giảm theo không gian Cụ thể, hàm mất mát ở cả hai nhánh ở giai đoạn t được mô tả như sau:
Trong công thức (3.4), S∗j là bản đồ độ tin cậy của phần ground truth, L∗c là trường vectơ ái lực của ground truth, và W là mặt nạ nhị phân với W(p) = 0 tại vị trí ảnh p khi chú thích còn thiếu Mặt nạ này được dùng để tránh phạt những dự đoán tích cực thực sự trong quá trình huấn luyện, giúp mô hình không bị lệch bởi nhãn thiếu Việc giám sát trung gian ở mỗi giai đoạn và bổ sung gradient theo định kỳ giải quyết vấn đề gradient biến mất và duy trì tín hiệu học sâu trong quá trình tối ưu Mục tiêu tổng thể của khung này là tối ưu hàm mục tiêu chung bằng cách kết hợp thông tin từ bản đồ độ tin cậy và trường vectơ ái lực, đồng thời sử dụng mask để xử lý nhãn thiếu và nâng cao hiệu suất trên tập dữ liệu thực tế.
Nhờ phương pháp này cho kết quả tốt và có ảnh hưởng sâu đến nhận diện các khớp liên kết trên cơ thể, từ đó hình thành nền tảng cho phân tích hành vi của từng cá nhân dựa trên cấu trúc vận động Với những ưu điểm nổi bật của mô hình, chúng tôi quyết định áp dụng công nghệ Human Pose Estimation cho module phân tích hành vi và phát hiện gian lận trong thi cử, nhằm nâng cao độ chính xác và mức độ tin cậy của hệ thống.
Face Recognition
Khi phát hiện khuôn mặt được xử lý trong khung hình của video, khuôn mặt đó được cắt ra thành các ảnh nhỏ làm dữ liệu đầu vào cho mô hình nhận diện khuôn mặt Những ảnh này dùng cho quá trình huấn luyện và nhận diện, giúp cải thiện độ chính xác và hiệu suất của hệ thống nhận diện khuôn mặt trên nhiều điều kiện quay khác nhau.
Khuôn mặt ban đầu có thể quay ở nhiều góc khác nhau, và để tối ưu hóa nhận diện khuôn mặt, quá trình tiền xử lý sẽ áp dụng các landmarks của khuôn mặt để căn chỉnh sao cho khuôn mặt nằm ở hướng chính diện, từ đó tăng độ chính xác của hệ thống nhận diện.
Trong nhận diện và tinh chỉnh khuôn mặt, các landmark thông thường cho kết quả là 68 điểm trên khuôn mặt Tuy nhiên để tinh chỉnh khuôn mặt bằng landmark hiệu quả nhất, ta chỉ cần 5 điểm chính: đuôi mắt trái, đuôi mắt phải, đỉnh mũi, mép miệng trái và mép miệng phải Mỗi điểm này đại diện cho tọa độ (x, y) trên ảnh, phục vụ cho các tác vụ như căn chỉnh hình dáng, phân tích đặc trưng và tối ưu hóa quy trình xử lý ảnh khuôn mặt.
Qua nhiều nghiên cứu và phân tích, chúng tôi quyết định lựa chọn FaceNet làm nền tảng cho hệ thống nhận diện khuôn mặt FaceNet là một hệ thống sinh embedding khuôn mặt dựa trên một mô hình CNN và áp dụng Triplet Loss để xác định mức độ tương đồng giữa hai khuôn mặt, từ đó trả lời câu hỏi hai khuôn mặt có giống nhau hay không.
Thông tin đặc điểm khuôn mặt được trích xuất thông qua việc đi qua mô hình CNN, và đầu ra của bước này được gọi là Face Embedding Face Embedding là đại diện số học tổng hợp các đặc điểm nhận diện quan trọng của khuôn mặt, cho phép so sánh và nhận diện khuôn mặt với độ chính xác cao trong các hệ thống nhận diện khuôn mặt, đồng thời làm cơ sở cho lưu trữ và đối chiếu khuôn mặt với cơ sở dữ liệu.
Ví dụ về Face Embedding: array([[0.18137567, 0.0069863 , 0.20530661, 0.99788007, 0.4644828 ,
Để xây dựng cơ sở dữ liệu embedding khuôn mặt cho những người cần nhận diện làm dữ liệu tham chiếu để so sánh, nhóm sẽ chỉ lấy đầu ra từ mô hình CNN thuộc phương pháp FaceNet và ứng dụng thư viện Annoy để lưu trữ và tra cứu các embedding.
Mã nguồn minh hoạ xây dựng cơ sở dữ liệu khuôn mặt: dimension = 512
From the /database directory, the code collects all jpg files, prints their basenames, and then builds an AnnoyIndex with a specified dimension using Euclidean distance for fast nearest-neighbor search It loops over each image path, opens the image, resizes it to 160 by 160 pixels using Image.ANTIALIAS, converts it to a NumPy array, and computes its embedding by running the embeddings tensor in the face_comp_sess TensorFlow session, feeding the image (expanded to a batch via np.expand_dims) into images_placeholder while setting phase_train_placeholder to False This pipeline prepares the image embeddings for downstream tasks such as similarity retrieval or clustering within the AnnoyIndex.
# print(generated_embeddings) tree.add_item(i, generated_embeddings[0]) tree.build(10) # 10 trees tree.save('annoy_tree.ann')
Annoy là một thuật toán so sánh vectơ tốc độ cao do Spotify phát triển, được thiết kế để hoạt động trong thời gian thực dựa trên khoảng cách Euclidean giữa các vectơ Thuật toán này hỗ trợ tính toán đa luồng nhằm tăng tốc độ so sánh và xác định mức độ tương đồng giữa khuôn mặt cần nhận diện và khuôn mặt có trong cơ sở dữ liệu Với hiệu suất tối ưu và khả năng mở rộng, Annoy phù hợp cho các ứng dụng nhận diện khuôn mặt và các hệ thống tìm kiếm theo vectơ đặc trưng, giúp xử lý khối lượng dữ liệu lớn một cách nhanh chóng và hiệu quả.
Ví dụ tìm kiếm 3 khuôn mặt giống nhất trong cơ sở dữ liệu: annoy_index, annoy_score annoy_tree.get_nns_by_vector(generated_embeddings[0], 3, search_k=-1, include_distances=True)
Và kết quả trả về: array([[9, 8, 3], [0.3486881, 0.3754361, 0.39987653]])
Kết quả khi được trình bày trên ảnh:
Hình 3.8 Kết quả xác định đối tượng trong ảnh
Abnormal Activity Detection
Việc xây dựng các mô hình liên kết thời gian đòi hỏi dữ liệu huấn luyện phức tạp và phạm vi nghiên cứu này hiện chưa cần thiết, vì vậy nhóm quyết định tiếp cận bài toán abnormal activity detection ở dạng độc lập, đưa ra kết quả cho từng người trong từng khung hình xử lý Qua nhiều thử nghiệm, nhóm tự xây dựng một mô hình phân loại gồm hai đầu vào để nhận diện hoạt động bất thường.
- Hình ảnh được cắt ra của mỗi người
- Kết quả Pose Estimation của người đó
Sau khi frame đi qua bước Human Pose Estimation, dựa trên các pose được phát hiện trong frame, chúng ta có thể cắt ra hình ảnh của từng người trong frame ấy, mỗi hình ảnh được giới hạn bởi một bounding box bao phủ toàn bộ phần pose được ước lượng.
Hình 3.9 Ảnh của mỗi người được cắt ra dựa trên biên của pose
Lưu ý input được sử dụng trong model là ảnh gốc được cắt ra và không có phần khung pose được visualize.
Kết quả Pose Estimation của mỗi người sẽ bao gồm:
18 điểm theo định nghĩa của bộ dataset COCO gồm: Mũi, Cổ, Vai phải, Khuỷu tay phải, Cổ tay phải, Vai trái, Khuỷu tay trái, Cổ tay trái, Hông phải, Đầu gối phải, Mắt cá chân phải, Hông trái, Đầu gối trái, Mắt cá chân trái, Mắt phải, Mắt trái, Tai phải và Tai trái Đây là tập hợp các điểm mấu chốt dùng cho nhận diện con người trong thị giác máy tính, phục vụ cho việc theo dõi chuyển động và ước lượng vị trí của các bộ phận cơ thể.
- Confidence của bộ pose cho mỗi người
Với mỗi điểm trong 18 điểm, có 3 giá trị bao gồm:
- Toạ độ x tương đối của điểm trong bộ pose đó
- Toạ độ y tương đối của điểm trong bộ pose đó
- Confidence score của điểm đó Để mã hoá thông tin này sao cho một mô hình Machine Learning có thể học được, nhóm chuyển đổi kết quả Pose Estimation của mỗi người thành dạng một vector có 55 giá trị, đặt tên là Human Vector, vector này có cấu trúc như sau:
- Giá trị đầu tiên là confidence score của bộ pose
- Với 18 điểm pose tiếp theo, mỗi điểm thêm 3 giá trị vào human vector: toạ độ x tương đối của điểm trong bộ pose, toạ độ y tương đối của điểm trong bộ pose, confidence score của điểm đó
- Với các điểm pose không tồn tại (không phát hiện được bởi mô hình pose estimation), gán 3 giá trị của nó bằng 0
get_human_vector converts a Human object into a fixed-length feature vector for machine learning It initializes the vector with the human's overall score, then loops through 18 body-part identifiers, appending a triplet for each part If a part is missing, it adds [0, 0, 0]; otherwise it adds the part's x, y coordinates and its score The function returns a one-dimensional NumPy array of dtype float32 that combines global and per-body-part features for consistent downstream processing.
Vì các giá trị confidence score và các toạ độ tương đối đều nằm trong khoảng 0-1 nên human vector thu được sẽ là float32 vector:
Sơ đồ của mô hình nhận diện hành vi bất thường được chúng tôi đề xuất như sau:
Hình 3.10 Mô hình nhận diện hành vi bất thường
Các ảnh cắt của mỗi người được đưa qua backbone CNN ResNet-50 để trích xuất đặc trưng Các đặc trưng này được truyền qua các lớp fully connected nhằm giảm chiều xuống còn 64 Sau đó, chúng được ghép với vector đặc trưng tương ứng của người đó, tạo thành lớp ẩn có 119 neuron cho sự kết hợp giữa đặc trưng hình ảnh và pose Các neuron này tiếp tục đi qua thêm các lớp fully connected, lớp cuối cùng có 2 neuron biểu thị cho hai lớp và sử dụng hàm kích hoạt softmax để phân loại.
Sơ đồ hệ thống
Mô hình hoạt động của hệ thống của chúng tôi được mô tả như hình 3.11 dưới đây:
- Từng frame được ghi lại từ camera và gửi tới hàng đợi frame (queue frame) trên máy chủ
- Mỗi frame được đi qua mô hình Human Pose Estimation, trả ra các pose có trong frame
From the poses detected in each frame, the system crops the images of each pose, encodes each pose into a human pose vector, aggregates these vectors into a batch, and feeds the batch into the Anomaly Activity Detector model.
Hình 3.11 Mô hình hoạt động của hệ thống
Khi hệ thống phát hiện bất thường từ mô hình Anomaly Activity Detection cho kết quả, hình ảnh ở từng pose được chuyển tới mô hình Face Detection; nếu có thể nhận diện khuôn mặt dựa trên độ nghiêng của các landmark, khuôn mặt sẽ được đưa sang Face Alignment để căn chỉnh và tiếp tục qua Face Recognition để vectơ hoá và tìm kiếm trong cơ sở dữ liệu khuôn mặt có sẵn, từ đó xác định danh tính của người có hành vi bất thường.
- Kết quả cuối cùng sẽ được hiển thị trên màn hình dưới dạng cảnh báo cho hành vi bất thường.
Tổng kết chương 3
Trong Chương 3, chúng tôi đã phân tích kỹ lưỡng lý do lựa chọn các phương pháp và áp dụng cách tiếp cận giải quyết cho từng bài toán con, đồng thời mô tả đầy đủ luồng hoạt động của hệ thống thử nghiệm đề xuất Chương 4 tiếp tục tập trung vào chuẩn bị dữ liệu, triển khai, huấn luyện và đánh giá các phương pháp đã chọn cho các bài toán con của đề tài này, nhằm cung cấp nền tảng so sánh hiệu suất và định hướng tối ưu hóa quy trình nghiên cứu.
Chuẩn bị bộ dữ liệu chung
Hiện nay không có bất kỳ tập dữ liệu mở nào liên quan đến bài toán nhận diện hành vi gian lận trong thi cử, nên chúng tôi quyết định tự xây dựng một bộ dữ liệu riêng nhằm phục vụ cho việc huấn luyện mô hình và đánh giá kết quả của hệ thống, từ đó tăng cường độ chính xác và độ tin cậy của các phương pháp phát hiện gian lận trong thi cử.
Chúng tôi bố trí một phòng thi giả định gồm có 3 bàn học và 11 sinh viên tham gia thi:
Hình 4.1 Ảnh ví dụ một phòng thi giả định
Chúng tôi thu từ các thiết bị quay được một bộ dữ liệu thô dưới dạng video dài
Quá trình xử lý video kéo dài 20 phút, tương đương với hơn 36.000 khung hình, và sau đó việc gán nhãn được thực hiện trên toàn bộ khung hình của video theo từng bài toán xử lý cụ thể.
Face Detection + Landmark
Bộ dữ liệu huấn luyện cho RetinaFace được thực hiện theo nguyên tắc của tác giả và được huấn luyện trên tập dữ liệu công khai WIDER FACE Tập dữ liệu này gồm 32.203 ảnh với 393.703 khuôn mặt được gắn nhãn, phản ánh mức độ biến đổi cao về kích thước khuôn mặt, tư thế, biểu cảm và độ sáng khác nhau.
Bộ dữ liệu được chia dựa trên 6 lớp Mỗi lớp, được lấy ngẫu nhiên 40%/10%/50% dữ liệu để huấn luyện, xác thực và kiểm thử
Hình 4.2 Ví dụ minh hoạ về WIDER FACE
Ngoài bộ dữ liệu trên, nhóm chúng tôi đã kết hợp thêm 2 bộ dữ liệu khác, bao gồm UMDFaces, và RMFD (Real-World Mask Face Dataset) Trong đó:
Bộ dữ liệu UMDFaces được chia thành hai phần: ảnh tĩnh và khung hình video; chúng tôi không sử dụng phần khung hình video và chỉ lấy ảnh tĩnh để bổ sung vào bộ dữ liệu huấn luyện cho mục đích nhận diện khuôn mặt.
Để giúp mô hình dự đoán chính xác hơn với các khuôn mặt đeo khẩu trang, chúng tôi đã bổ sung RMFD (Real-World Mask Face Dataset) vào bộ dữ liệu của mình Việc thêm RMFD cho phép mô hình học các đặc trưng thực tế của khuôn mặt có khẩu trang, từ đó cải thiện hiệu suất nhận diện và khả năng tổng quát hóa trong mọi điều kiện ánh sáng, góc nhìn và độ che phủ của khẩu trang.
Hình 4.3 Một số ảnh mẫu trong tập UMDFaces
Hình 4.4 Sample trong tập dữ liệu RMFD
Sau khi kết hợp các bộ dữ liệu như trên, bộ dữ liệu huấn luyện của chúng tôi có hơn 4.103.364 samples
Trong bài báo RetinaFace, các tác giả đã gắn nhãn 5 điểm landmark trên tập dữ liệu WIDER FACE nhằm giúp mô hình học tốt hơn Trong đề tài này, nhóm chúng tôi đã sử dụng một mô hình pretrained do các tác giả bài báo phát triển, tiến hành dự đoán landmark trên toàn bộ bộ dữ liệu của chúng tôi và sử dụng kết quả này làm annotation landmark cho nghiên cứu Việc tận dụng các landmark được dự đoán từ mô hình pretrained giúp đảm bảo tính nhất quán và cung cấp cơ sở chú thích landmark tin cậy cho quá trình huấn luyện và đánh giá hệ thống nhận diện khuôn mặt.
Mô hình retinaface được chúng tôi huấn luyện sử dụng SGD với momentum 0.9 , weight decay = 0.0005, batch size = 16, và train trên NVIDIA Tesla P100 16GB được cung cấp bởi google colab Trong quá trình huấn luyện mô hình, chúng tôi đặt giá trị learning rate bắt đầu từ 0.001, sau đó tăng lên 0.01 sau 5 epochs, sau đó chia cho 10 tại epoch thứ 55 và 68 Chúng tôi đã cho mô hình học qua 100 epochs Trong bài báo cáo của mình, chúng tôi sử dụng kỹ thuật Online Hard Example Mining trong quá trình huấn luyện, bằng cách cho mô hình học tập trung vào 0.3 sample có sai số dự đoán cao nhất trong mỗi batch Chúng tôi áp dụng kỹ thuật OHEM vào quá trình huấn luyện sau khi hoàn thành 75 epoch
Kết quả huấn luyện của mô hình của chúng tôi được thể hiện trong hình bên dưới
Bảng biểu 4.1 AP của mô hình trên tập WIDER FACE hard set
Hình 4.5 Kết quả dự đoán của mô hình trên tập huấn luyện
Hình 4.6 Kết quả dự đoán của mô hình chúng tôi đề xuất
Mô hình phát hiện khuôn mặt hoạt động tốt trong điều kiện của bài toán Tuy còn một số bất tiện do vị trí và góc quay của máy quay khiến khuôn mặt đôi khi không được nhận diện đầy đủ Tuy nhiên, nhược điểm này có thể khắc phục bằng cách sử dụng các góc máy khác nhau và các loại camera chuyên dụng khác nhau, từ đó cải thiện độ bao phủ và độ tin cậy của hệ thống trong thực tế.
Human Pose Estimation
Chúng tôi sử dụng bộ dữ liệu có tên là COCO Bộ dữ liệu COCO bao gồm hơn
Khoảng 100 nghìn cá thể người được gắn nhãn với tổng số hơn 1 triệu điểm mốc, tương ứng với nội dung của các bộ dữ liệu chứa các điểm đặc trưng Bộ thử nghiệm gồm “test-challenge”, “test-dev” và các tập con “tiêu chuẩn thử nghiệm”, mỗi tập có khoảng 20K hình ảnh Đánh giá COCO xác định độ tương đồng của các điểm mốc trên cơ thể người (OKS) và sử dụng AP (độ chính xác trung bình) dựa trên 10 ngưỡng OKS làm chỉ số cạnh tranh chính OKS đóng vai trò tương tự IoU trong phát hiện và nhận diện các điểm mốc; nó được tính từ quy mô của người và khoảng cách giữa các điểm dự đoán và điểm ground-truth.
Hình 4.7 Sample trong tập dữ liệu COCO
Mô hình được cài đặt bằng framework Pytorch, phần backbone CNN mobilenet
Trong quá trình huấn luyện, mô hình được thử nghiệm với nhiều loại hàm mất mát khác nhau và kết quả cho thấy L2 loss mang lại hiệu suất tốt và thời gian hội tụ nhanh, nên L2 loss được áp dụng cho tập dữ liệu COCO Mô hình được huấn luyện bằng Radam optimizer với learning rate khởi đầu 1e-3 và momentum 0.9 Quá trình huấn luyện diễn ra trong 10 epoch trên bộ dữ liệu COCO, với batch size 4, chạy trên máy chủ có GPU NVIDIA Tesla P100 được cung cấp miễn phí bởi Google Colaboratory trong 10 tiếng.
Trong quá trình huấn luyện, mô hình đạt 61.8% dựa trên đánh giá OKS (độ tương đồng giữa các điểm keypoint trên đối tượng) và AP (Average Precision) được tính trên 10 ngưỡng OKS, làm chỉ số đánh giá chính cho hiệu suất nhận diện.
Kết quả dự đoán được cho trong hình dưới đây:
Hình 4.8 Ảnh dự đoán của mô hình trong 1 thời điểm
Hình 4.9 Ảnh dự đoán của mô hình trong 1 thời điểm khác
Kết quả khảo sát cho thấy triển vọng tích cực ở những trường hợp lý tưởng, khi các thí sinh được sắp xếp với khoảng cách và cự ly rõ ràng Thực tế tại Trường Đại học Công nghiệp Hà Nội cho thấy mỗi bàn chỉ có hai thí sinh ngồi và khoảng cách giữa các bàn được duy trì đủ để tách biệt thí sinh một cách rõ ràng, từ đó tăng tính an toàn và thuận tiện cho kỳ thi Việc đảm bảo quy tắc cự ly trong khu vực thi phù hợp với tình hình hiện nay của trường và góp phần nâng cao hiệu quả tổ chức thi.
Hình 4.10 Ảnh minh hoạ áp dụng thuật toán dự đoán khung xương
Ngoài ra đôi khi mô hình cũng dự đoán sai trong trường hợp không xác định
Hình 4.11 Ảnh minh hoạ cho trường hợp dự đoán nhầm lẫn
Những vấn đề này có thể khắc phục bằng cách tăng thêm dữ liệu đào tạo cho các tình huống và môi trường cụ thể Đặc biệt, bổ sung dữ liệu từ môi trường sinh viên đang ngồi học, viết bài và tham gia hoạt động học tập sẽ giúp mô hình hiểu ngữ cảnh rõ hơn, cải thiện độ chính xác và tính phù hợp của các phản hồi Việc mở rộng dữ liệu đào tạo từ các bối cảnh thực tế của người học sẽ tối ưu hóa hiệu suất, đồng thời mang lại trải nghiệm người dùng mượt mà hơn trong quá trình học tập và sáng tác nội dung.
Face Recognition
Mô hình nhận diện khuôn mặt được huấn luyện trên tập dữ liệu VGGFace2 VGGFace2 là tập dữ liệu với khoảng 3,3 triệu ảnh khuôn mặt của khoảng 9000 người
Trong quá trình huấn luyện, tập dữ liệu được phân chia theo tỉ lệ 80/20, trong đó 80% dữ liệu được dùng cho huấn luyện và 20% dữ liệu được dùng để đánh giá hiệu suất của mô hình trong quá trình huấn luyện.
Để triển khai nhận diện khuôn mặt bằng transfer learning, chúng tôi đã sử dụng Inception‑ResNet làm backbone được pretrained trên ImageNet Mô hình được huấn luyện bằng optimizer Adam với learning rate khởi tạo 1e‑4 và thực hiện 50 epoch, chạy trên bộ GPU NVIDIA Tesla P100 do Google Colaboratory cung cấp Dữ liệu đầu vào được load với batch size 16 và quá trình huấn luyện kéo dài khoảng 5 giờ Để đánh giá khả năng học hỏi và sự đa dạng trong nhận diện, chúng tôi đã sử dụng bộ dữ liệu LFW, gồm 13.000 ảnh khuôn mặt của 1.680 người.
Kết quả kiểm tra mô hình được trình bày ở bên dưới:
Bảng biểu 4.2 Kết quả kiểm tra mô hình
Model name LFW accuracy Training dataset haui_face_reg_03042021 0.8527 VGGFace2 Đầu ra mô hình là vector với 512 chiều sử dụng để so sánh và xây dựng hệ thống khuôn mặt trong cơ sở dữ liệu Với sự hỗ trợ của công cụ Annoy đã làm việc tìm kiếm khuôn mặt trong cơ sở dữ liệu trở nên nhanh chóng và chính xác Tốc độ của lấy face embedding và kết hợp của Annoy để tìm kiếm khuôn mặt trong cơ sở dữ liệu là 38 khung hình trên giây, hoàn toàn có thể đáp ứng trong thời gian thực
Sau khi xây dựng một rừng cây quyết định bởi Annoy, đây cũng là cơ sở dữ liệu khuôn mặt để đưa ra đối chiếu thì chúng ta được một file có định dạng ann Với những lần sử dụng sau này, chúng ta chỉ cần load lại file có sẵn thay vì xây dựng lại rừng cây quyết định mới trừ trường hợp muốn mở rộng hay thu hẹp lại cơ sở dữ liệu khuôn mặt nhận dạng
ANNOY_PATH = './annoy_tree.ann'
DIMENSION = 512 annoy_tree = AnnoyIndex(DIMENSION, 'euclidean') annoy_tree.load(ANNOY_PATH) # super fast, will just mmap the file
Hình 4.12 Kết quả dự đoán của mô hình
Để ứng dụng thực tế, mô hình nhận diện khuôn mặt vẫn cần cải thiện độ chính xác, đặc biệt ở các góc khuất khi chỉ có một nửa khuôn mặt hoặc chỉ thấy phần tóc hoặc gáy Hệ thống cần nhận diện từ những vùng khó khăn như góc nhìn không chuẩn thay vì chỉ nhận diện toàn bộ khuôn mặt ở hướng chính diện Việc tăng cường xử lý các trường hợp này sẽ nâng cao độ tin cậy của công nghệ nhận diện khuôn mặt trong thực tế và các ứng dụng liên quan.
Hình 4.13 Hình ảnh đầu đối tượng trong các trường hợp khó
Hình 4.14 cho thấy hình ảnh có id_0 và id_5 được nhận diện chính xác Để khắc phục việc nhận diện sai và tránh nhầm lẫn, ở những mặt góc khó như các ví dụ ở trên sẽ không đưa ra kết quả nhận diện.
Abnormal Activity Detection
Như đã đề cập ở đầu chương 4, nhóm cần tự xây dựng một bộ dữ liệu để phục vụ cho quá trình huấn luyện và đánh giá mô hình phát hiện hành vi bất thường Để thực hiện điều này, nhóm trích xuất các khung hình từ video gốc với tốc độ 10 khung hình/giây, thu được 10.650 khung hình để gán nhãn, nhằm tạo nguồn dữ liệu chất lượng cho quá trình huấn luyện và đánh giá hiệu suất của mô hình.
Trong mỗi khung hình, nhóm thực hiện chạy mô hình Pose Estimation, trích xuất hộp bao trọn đầu của từng người và xuất kết quả ở định dạng tương thích với công cụ gán nhãn VIA Sau đó, nhóm tiến hành gán nhãn để tạo tập dữ liệu có nhãn phục vụ cho huấn luyện và đánh giá mô hình phân tích tư thế.
Hình 4.15 Giao diện của công cụ gán nhãn VIA
Mỗi vùng trong một frame biểu thị phần đầu của một người Các thành viên trong nhóm sẽ gán nhãn cho từng người xuất hiện trong chuỗi frame Với những frame có hành động đáng ngờ rõ ràng, thuộc tính abnormal được gán là true Sau khi phân tích qua toàn bộ các frame, sẽ gán nhãn cho người tiếp theo.
Các region này được map lại với các pose được detect trong từng frame để lấy nhãn cho tập dữ liệu huấn luyện và đánh giá
Qua quá trình gán nhãn và xử lý, nhóm thu được một bộ dữ liệu gồm 94,165 mẫu Mỗi mẫu gồm một ảnh đã được crop và một vector đặc trưng của người kèm nhãn trạng thái abnormal là true hoặc false Bộ dữ liệu có định dạng chuẩn, cho phép dễ dàng tích hợp vào quy trình huấn luyện mô hình nhận diện bất thường và phục vụ cho các nghiên cứu phân loại ảnh dựa trên nhãn boolean về trạng thái bất thường.
- Thư mục images chứa tất cả các ảnh đã được crop của từng người trong từng frame
Hai tệp train.json và val.json đại diện cho dữ liệu huấn luyện và dữ liệu đánh giá trong quy trình học máy Chúng chứa các vector đặc trưng của con người, nhãn nhận diện và ánh xạ giữa các thông tin này với các ảnh tương ứng trong thư mục images Cấu trúc dữ liệu này giúp quá trình huấn luyện mô hình và đánh giá hiệu suất diễn ra một cách nhất quán và có thể mở rộng cho các tác vụ nhận diện.
Cấu trúc của file label dạng JSON:
Hình 4.16 Cấu trúc file label dạng JSON
Bộ dữ liệu được chia thành hai tập: tập huấn luyện (train) và tập đánh giá (validation) Việc chia được thực hiện ngẫu nhiên và đảm bảo 30% mẫu của mỗi lớp được đưa vào tập validation, tức là tỉ lệ train/validation cho mỗi lớp vào khoảng 70/30 Sau khi chia, phân phối dữ liệu giữa hai tập phản ánh sự đại diện của các lớp ban đầu trong cả train và validation. -**Support Pollinations.AI:** -🌸 **Ad** 🌸Powered by Pollinations.AI free text APIs [Support our mission](https://pollinations.ai/redirect/kofi) to keep AI accessible for everyone.
Bảng biểu 4.3 Bảng phân phối dữ liệu
Có thể thấy khoảng 25% số mẫu là thuộc về lớp bất thường (Abnormal)
4.5.1 Cài đặt và huấn luyện:
Mô hình được triển khai trên framework PyTorch, với backbone CNN ResNet50 sử dụng triển khai của thư viện torchvision và được khởi tạo với trọng số pretrained trên ImageNet nhằm áp dụng Transfer Learning Quá trình huấn luyện được thực hiện bằng bộ tối ưu Adam với learning rate khởi đầu 1e-4 Mô hình được huấn luyện qua 80 epochs trên bộ dữ liệu đã được chuẩn bị, với kích thước batch là 32 và chạy trên máy chủ có GPU để tối ưu hiệu suất.
NVIDIA Tesla P100 được cung cấp miễn phí bởi dịch vụ Google Colaboratory trong 10 tiếng
Hình 4.17 Train log của thực nghiệm 4.5.2 Kết quả đạt được:
Thông qua log huấn luyện, mô hình cho thấy sự hội tụ nhanh chỉ sau khoảng 4 epoch, đạt độ chính xác gần như tuyệt đối trên tập huấn luyện và 98,76% trên tập đánh giá Các metric thu được trên tập đánh giá được báo cáo chi tiết trong phần tiếp theo.
Bảng biểu 4.4 Các metric thu được trên tập đánh giá
Một số kết quả minh hoạ trên tập validation:
Hình 4.18 Ảnh minh hoạ cho các thời điểm khác nhau trên tập validation
Có thể thấy mô hình có thể nhận diện tốt các hành vi gian lận rõ ràng, tuy nhiên vẫn có
1 số trường hợp có thể khiến cho mô hình bị nhầm lẫn hoặc đưa ra báo động giả:
Hình 4.19 Ảnh minh hoạ cho các score dễ gây nhầm lẫn
Những trường hợp này thường có confidence score (xác suất của lớp abnormal trong vector softmax cuối cùng) thấp, vì vậy ta có thể hạn chế vấn đề này bằng cách loại bỏ các dự đoán có confidence score thấp hơn một ngưỡng nhất định Ví dụ, đặt ngưỡng ở 0.9 sẽ loại bỏ những dự đoán không chắc chắn và cải thiện độ tin cậy của phân loại cuối cùng.
Tổng kết chương 4
Trong chương 4, chúng tôi trình bày công tác chuẩn bị dữ liệu và thực tế nhóm đã tự xây dựng một bộ dữ liệu gồm 36.000 khung hình do thiếu dữ liệu đặc thù cho bài toán này; ngoài ra, các kỹ thuật cụ thể để giải quyết cho từng bài toán nhỏ bao gồm RetinaFace cho phát hiện khuôn mặt và lấy được các điểm mốc khuôn mặt, với backbone CNN Mobilenet được áp dụng; giải pháp cho định danh khuôn mặt chúng tôi áp dụng kỹ thuật Transfer Learning, trong đó mô hình sử dụng Inception ResNet làm backbone đã được huấn luyện trên ImageNet Đặc biệt, phần phát hiện hành vi bất thường là phần quan trọng nhất của mô hình Từ các bài toán nhỏ đã được giải quyết, chúng tôi thu được các đặc trưng khác nhau của đối tượng (con người) trong video Từ các đặc trưng này, việc đánh giá hành vi bất thường thông qua một mạng CNN với đầu ra là các confidence score Để đánh giá các score này, một ngưỡng cứng đã được lựa chọn để phân biệt hành vi bất thường và bình thường Với các hành vi bất thường sẽ được hiện lên với màu cảnh báo (ví dụ đỏ) và có hiện lên ID đối tượng chúng ta tìm thấy Với các bước đề suất này, chúng tôi đã tiến hành thực nghiệm và kết quả đạt được là khả quan Ngoài ra, ở phần cuối chương chúng tôi cũng đi phân tích các ưu điểm của mô hình cũng như các vấn đề còn tồn tại và dự kiến tiếp tục phát triển trong tương lai gần.