Thị giác máy tính và xử lý ảnh là lĩnh vực công nghệ đang trải qua sự biến đổi đột phá, đặc biệt trong thời kỳ số hóa mạnh mẽ và sự phát triển không ngừng của công nghệ thông tin. Sự hình thành của hai lĩnh vực đã mở ra một loạt các cơ hội mới và thách thức thú vị, ảnh hưởng mạnh mẽ đến nhiều khía cạnh của cuộc sống hàng ngày. Tính đến hiện nay, lĩnh vực thị giác máy tính đã tiến xa hơn bao giờ hết trong giải quyết các tác vụ, yêu cầu khác nhau như nhận diện người, nhận diện xe cộc, v.v. Không dừng lại ở đó, các công nghệ, kỹ thuật ngày càng được hoàn thiện nhằm cải tiến, giải quyết các yêu cầu của bài toán. Việc tiếp tục phát triển công nghệ tạo ra một cơ hội đột phá trong việc cải thiện cuộc sống và công việc, từ tăng cường an ninh cá nhân đến cải thiện quy trình sản xuất và loại bỏ công việc lặp đi lặp lại. Bài toán nhận diện con người trong ảnh có ứng dụng rộng rãi trong nhiều lĩnh vực như an ninh, giám sát, và nhận dạng khuôn mặt. Phương pháp HOG, với khả năng nổi bật trong việc mô tả đặc trưng hình thái của đối tượng, là một công cụ mạnh mẽ cho mục tiêu này. Với mong muốn giải quyết bài toán với phương pháp mới, nhóm quyết định đã lựa chọn đề tài “Nhận diện con người trong ảnh sử dụng phương pháp HOG”. Mục tiêu chung của đề tài này là nghiên cứu và áp dụng các phương pháp tiên tiến để cải thiện hiệu suất và khả năng nhận dạng của phương pháp HOG trong các bài toán nhận dạng hình ảnh.
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN - ĐỒ ÁN CHUYÊN NGÀNH NGÀNH: KHOA HỌC MÁY TÍNH ĐỀ TÀI: NHẬN DIỆN CON NGƯỜI TRONG ẢNH SỬ DỤNG PHƯƠNG PHÁP HOG GVHD: TS Nguyễn Mạnh Cường Nhóm thực hiện: Nhóm Sinh Viên: Nguyễn Quyền Anh Tạ Tuấn Anh Lê Hoàng Điệp Lớp: 20231IT6052002 Hà Nội – Năm 2023 2020600385 2020602676 2020601903 Khóa: 15 Mục lục LỜI CẢM ƠN LỜI NÓI ĐẦU CHƯƠNG 1: MỞ ĐẦU 1.1 Tổng quan toán nhận diện vật thể 1.1.1 Phát biểu toán 1.1.2 Mục tiêu toán 1.1.3 Phương pháp nghiên cứu 1.1.4 Đối tượng phạm vi nghiên cứu 1.1.5 Ứng dụng 1.2 Giới thiệu xử lý ảnh thị giác máy tính 1.2.1 Giới thiệu xử lý ảnh 1.2.2 Giới thiệu thị giác máy tính 1.3 Phương pháp kỹ thuật xử lý ảnh 10 1.4 Phương pháp kỹ thuật thị giác máy tính 11 Chương 2: Nhận dạng người HOG 14 2.1 Một số mơ hình nhận dạng: 14 2.1.1 Histogram of Oriented Gradients(HOG) 14 2.1.1 OpenPose 26 2.1.2 YOLO (You Only Look Once) 28 2.2 Một số mơ hình học máy thường dùng với HOG 31 2.2.1 Principal Component Analysis (PCA) 31 2.2.2 Support Vector Machines (SVM) 32 2.2.3 Convolutional Neural Networks (CNN) 33 Chương 3: Thực nghiệm 36 3.1 Dữ liệu thực nghiệm 36 3.2 Tiền xử lý liệu: 36 3.3 Chia liệu huấn luyện mơ hình 41 3.3.1 Chia liệu 41 3.3.2 Huấn luyện mơ hình 41 3.3.3 Đánh giá mơ hình 41 3.3.4 Lưu mơ hình 42 3.4 Kết thực nghiệm 42 KẾT LUẬN 44 TÀI LIỆU THAM KHẢO 45 Hình 1 Ví dụ nhận diện người HOG Hình Ví dụ thị giác máy tính Hình Quá trình xử lý ảnh 10 Hình Các bước hệ thông xử lý ảnh 11 Hình Resize kích thước tất ảnh liệu lích thước chung 15 Hình 2 Phép tốn chuyển vị ma trận 16 Hình Ví dụ điểm ảnh 17 Hình Gradient điểm ảnh 18 Hình Cơng thúc tính tốn đặc trưng cho ô (cell) 18 Hình Chia ảnh thành block 16x16 19 Hình Tính toán đặc trưng HOG cell 20 Hình Đồ thị sau vote hết cell vào bin 21 Hình Ví dụ chuẩn hóa tới vector gradient 21 Hình 10 Sự thay đổi vector gradient trường hợp 22 Hình 11 Cơng thức tính giá trị chuẩn hóa 23 Hình 12 Cơng thức tính số chiều vector đặc trưng ảnh 23 Hình 13 Sơ đồ khối bước phát đối tượng HOg-SVM 30 Hình 3.1: Tổng quan liệu huấn luyện 36 Hình 3.2: Dữ liệu sau trích rút 40 Hình 3.3: Kết thực nghiệm 43 LỜI CẢM ƠN Chúng em muốn bắt đầu việc gửi lời biết ơn chân thành tới thầy cô khoa Công nghệ thông tin Trường Đại học Công Nghiệp Hà Nội Sự nhiệt huyết dẫn tận tâm họ truyền đạt đến chúng em kiến thức quý báu học hữu ích Đặc biệt, chúng em muốn bày tỏ lòng biết ơn sâu sắc đến giảng viên Nguyễn Mạnh Cường, người tận tâm hướng dẫn bảo chúng em suốt hành trình học tập, nghiên cứu hồn thành đồ án Cảm ơn anh vô Chúng em muốn gửi lời tri ân đặc biệt tới gia đình bạn bè, người ln bên cạnh, khuyến khích hỗ trợ chúng em mặt tinh thần vật chất Đó thực nguồn động viên quan trọng giúp chúng em vượt qua khó khăn q trình học tập Trong q trình nghiên cứu thực đề tài, chúng em nhận thức lực kiến thức cịn hạn chế, khơng tránh khỏi thiếu sót Chúng em mong nhận thơng cảm góp ý xây dựng từ phía q thầy bạn học Xin chân thành cảm ơn! LỜI NÓI ĐẦU Thị giác máy tính xử lý ảnh lĩnh vực công nghệ trải qua biến đổi đột phá, đặc biệt thời kỳ số hóa mạnh mẽ phát triển không ngừng công nghệ thông tin Sự hình thành hai lĩnh vực mở loạt hội thách thức thú vị, ảnh hưởng mạnh mẽ đến nhiều khía cạnh sống hàng ngày Tính đến nay, lĩnh vực thị giác máy tính tiến xa hết giải tác vụ, yêu cầu khác nhận diện người, nhận diện xe cộc, v.v Khơng dừng lại đó, cơng nghệ, kỹ thuật ngày hoàn thiện nhằm cải tiến, giải yêu cầu toán Việc tiếp tục phát triển công nghệ tạo hội đột phá việc cải thiện sống công việc, từ tăng cường an ninh cá nhân đến cải thiện quy trình sản xuất loại bỏ cơng việc lặp lặp lại Bài toán nhận diện người ảnh có ứng dụng rộng rãi nhiều lĩnh vực an ninh, giám sát, nhận dạng khuôn mặt Phương pháp HOG, với khả bật việc mô tả đặc trưng hình thái đối tượng, công cụ mạnh mẽ cho mục tiêu Với mong muốn giải tốn với phương pháp mới, nhóm định lựa chọn đề tài “Nhận diện người ảnh sử dụng phương pháp HOG” Mục tiêu chung đề tài nghiên cứu áp dụng phương pháp tiên tiến để cải thiện hiệu suất khả nhận dạng phương pháp HOG tốn nhận dạng hình ảnh Nội dung báo cáo bao gồm chương sau: Chương 1: Phát biểu toán Trong chương 1, nhóm tiến hành phát biểu tốn, xác định liệu đầu vào, liệu đầu toán, đặc điểm toán Chương 2: Các kỹ thuật giải toán Sau phát biểu xác định rõ ràng yêu cầu tốn, nhóm trình bày kỹ thuật giải tốn có ưu nhược điểm chúng Tiếp theo, giải pháp đề xuất cho tốn đặt Và mơ tả chi tiết giải pháp lựa chọn Chương 3: Thực nghiệm Tại chương này, nhóm tập chung trình bày trình thực nghiệm kết đạt với kỹ thuật giải toán chương Phần kết luận: Cuối phần kết luận, nhóm tổng hợp kết đạt được, hướng phát triển mở rộng đề tài nghiên cứu tương lai CHƯƠNG 1: MỞ ĐẦU 1.1 Tổng quan toán nhận diện vật thể 1.1.1 Phát biểu toán Bài toán nhận diện vật thể lĩnh vực quan trọng lĩnh vực trí tuệ nhân tạo thị giác máy tính Nó liên quan đến việc xác định định danh vật thể ảnh video 1.1.2 Mục tiêu toán Mục tiêu toán nhận diện vật thể tạo hệ thống tự động có khả phân loại định vị vật thể hình ảnh cách xác Điều thường bao gồm hai nhiệm vụ chính: phát vật thể (object detection) phân loại vật thể (object classification) Phát vật thể (Object Detection): Bài toán liên quan đến việc tìm kiếm định vị vị trí vật thể ảnh Thơng thường, kết tốn phát vật thể biểu diễn hình chữ nhật bao quanh vật thể cần nhận diện Phân loại vật thể (Object Classification): Sau phát vị trí vật thể ảnh, toán phân loại vật thể nhằm xác định loại vật thể mà vật thể thuộc Điều thường thực cách áp dụng mơ hình học máy mạng nơ-ron sâu để phân loại vật thể dựa đặc trưng trích xuất từ vùng ảnh chứa vật thể 1.1.3 Phương pháp nghiên cứu Có nhiều phương pháp mơ hình khác phát triển để giải toán nhận diện vật thể Trong số đó, số phương pháp phổ biến bao gồm: HOG, R-CNN (Region-based Convolutional Neural Networks), Fast R-CNN, Faster R-CNN, YOLO (You Only Look Once), SSD (Single Shot MultiBox Detector), RetinaNet EfficientDet Các phương pháp thường sử dụng mạng nơ-ron sâu (deep neural networks) để học phát vật thể Histogram of Oriented Gradients: HOG (Histogram of Oriented Gradients) phương pháp phổ biến trích xuất đặc trưng cho tốn nhận diện vật thể Nó giới thiệu Navneet Dalal Bill Triggs vào năm 2005 áp dụng thành công nhiều lĩnh vực nhận diện khuôn mặt, nhận diện xe, nhận diện người, nhiều ứng dụng khác Ý tưởng HOG biểu diễn vật thể dựa phân bố gradient điểm ảnh vật thể Q trình trích xuất đặc trưng HOG bao gồm bước sau: - Chuẩn bị ảnh - Tính tốn gradient - Tạo cell - Tính tốn histogram - Chuẩn hóa block - Kết hợp đặc trưng Với vector đặc trưng HOG, ta sử dụng mơ hình máy học SVM (Support Vector Machine) để phân loại vật thể nhận diện chúng ảnh video Hình 1 Ví dụ nhận diện người HOG HOG có ưu điểm đơn giản, dễ triển khai, hiệu việc trích xuất đặc trưng vật thể có hình dạng biên độ biến thiên Tuy nhiên, có số hạn chế khơng xử lý tốt với biến dạng không đổi tỷ lệ khơng thích hợp cho việc nhận diện vật thể có hình dạng phức tạp Do đó, ứng dụng phức tạp hơn, phương pháp nhận diện vật thể đại mạng nơ-ron sâu (deep neural networks) thường sử dụng 1.1.4 Đối tượng phạm vi nghiên cứu Đề tài tập chung nghiên cứu toán nhận diện vật thể mà đối tượng hướng tới chủ yếu nhận diện người(human detection) Đối tượng nghiên cứu dựa trênc phương pháp, thuật tốn, mơ hình áp dụng nhận dạng người Phạm vi nghiên cứu bao gồm việc xây dựng hệ thống nhận diện người có khả nhận biết xác với tốc độ cao, đồng thời đáp ứng yêu cầu kỹ thuật 1.1.5 Ứng dụng Bài tốn nhận diện người có nhiều ứng dụng quan trọng lĩnh vực khác Dưới số ứng dụng phổ biến toán nhận diện người: - Nhận dạng xác minh người dùng - Phân tích hành vi người - Nhận dạng biểu cảm tư - Theo dõi đếm người - Giao tiếp người máy tính 1.2 Giới thiệu xử lý ảnh thị giác máy tính 1.2.1 Giới thiệu xử lý ảnh Xử lý ảnh trình xử lý hình ảnh kỹ thuật số thuật tốn phương pháp tính tốn để cải thiện phân tích thơng tin ảnh Đầu xử lý ảnh ảnh tốt kết luận Ảnh tốt Xử lý ảnh Ảnh Kết luận Trong xử lý ảnh, kỹ thuật sử dụng để xử lý biến đổi hình ảnh Các kỹ thuật sử dụng để cải thiện chất lượng hình ảnh, nhận diện đối tượng phân đoạn hình ảnh Các ứng dụng xử lý ảnh bao gồm nhận diện khuôn mặt, xử lý ảnh y tế xử lý ảnh số Các bước q trình xử lý ảnh bao gồm: Hệ đinh Thu nhận ảnh Tiền xử lý Trích chọn đặc điểm So sánh kết luận Hậu xử lý Lưu Trữ - Thu nhận ảnh: việc thu nhận ảnh thực thơng qua thiết bị máy ảnh, ảnh chụp từ vệ tinh qua cảm biến (Sensors), qua máy quét (Scanner) - Tiền xử lý: bước trình xử lý ảnh bao gồm kỹ thuật lọc nhiễu, cân độ sáng, cắt ảnh thay đổi kích thước ảnh - Trích trọn đặc điểm: Nhằm tiến tới hiểu ảnh Có thể sử dụng cơng cụ như: dò biên đẻ xác đinh biên, phân vùng, làm mảnh để trích xương - Hậu xử lý: hiệu chỉnh lại đặc điểm cử đặc trưng trích từ bước trến cho bước thực thuận tiện nhanh chóng khơng làm ảnh hưởng đến kết quả: 1.2.2 Giới thiệu thị giác máy tính Thị giác máy tính (Computer vision: xử lí nhận dạng hình ảnh) lĩnh vực bao gồm phương pháp thu nhận, xử lý ảnh kỹ thuật số, phân tích nhận dạng hình ảnh và, nói chung liệu đa chiều từ giới thực thông tin số biểu tượng, ví dụ dạng định Nói cách đơn giản hơn, thị giác máy tính nhằm tạo hệ thống nhân tạo tiếp nhận hình ảnh thu hay tập liệu đa chiều để phân tích, xử lí theo ý muốn Hình Ví dụ thị giác máy tính Thị giác máy tính bao gồm nhiều phương pháp kỹ thuật, bao gồm bước tiền xử lý, rút trích đặc trưng, phân đoạn phân loại - Tiền xử lý: thị giác máy tính bao gồm kỹ thuật lọc nhiễu, cân độ sáng cắt ảnh để chuẩn bị ảnh cho bước xử lý Điều quan trọng cần nhớ tập liệu đối tượng cụ thể nhận dạng ảnh hưởng đến hiệu suất việc nhận dạng đối tượng dựa HOG Hiệu suất bị ảnh hưởng thiết lập tham số lựa chọn phân loại Do đó, việc đánh giá kỹ lưỡng hiệu suất công cụ phát đối tượng dựa HOG tập liệu công việc bạn quan trọng 2.1.3.1 Ứng dụng HOG phát đối tượng: Nhận diện khn mặt: Phương pháp HOG sử dụng để phát khuôn mặt ảnh video Điều áp dụng hệ thống an ninh, nhận dạng khuôn mặt cho thiết bị di động ứng dụng khác Nhận diện người bộ: HOG sử dụng rộng rãi để phát người hình ảnh video Điều áp dụng hệ thống giám sát an ninh, giám sát giao thông ứng dụng khác Nhận diện xe hơi: HOG sử dụng để phát xe hình ảnh video Điều áp dụng hệ thống giám sát an ninh, giám sát giao thông ứng dụng khác Phát vật thể: HOG sử dụng để phát vật thể khác nhau, chẳng hạn động vật, đồ vật nhiều Điều áp dụng ứng dụng giám sát môi trường, giám sát nông nghiệp ứng dụng khác Tuy nhiên, cần lưu ý hiệu suất phương pháp phát đối tượng dựa HOG bị ảnh hưởng nhiều yếu tố khác nhau, chẳng hạn chất lượng tập liệu huấn luyện, kích thước hình dáng đối tượng, điều kiện chiếu sáng 2.2 Một số mơ hình học máy thường dùng với HOG 2.2.1 Principal Component Analysis (PCA) Principal Component Analysis (PCA) phương pháp phân tích liệu thống kê sử dụng để giảm chiều liệu trích xuất đặc trưng quan trọng Nó phương pháp phân tích linh hoạt sử dụng rộng rãi lĩnh vực xử lý liệu máy học Mục tiêu PCA biến đổi không gian liệu ban đầu thành khơng gian có số chiều thấp hơn, trục gọi thành phần Các thành phần xếp theo thứ tự giảm dần 31 phương sai, tức thành phần giữ lại phương sai lớn liệu, thành phần giữ lại phương sai nhỏ dần Quá trình PCA bao gồm bước sau: - Chuẩn bị liệu: Dữ liệu chuẩn bị tiền xử lý trước áp dụng PCA Điều bao gồm chuẩn hóa liệu để đảm bảo biến có đơn vị đo lường - Tính tốn ma trận hiệp phương sai: Ma trận hiệp phương sai tính tốn từ liệu Ma trận cho biết mối quan hệ tương quan biến liệu - Tìm thành phần chính: Các thành phần tính tốn cách tìm vector riêng (eigenvector) ma trận hiệp phương sai Các vector riêng tương ứng với giá trị riêng (eigenvalue) thể phương sai tương ứng thành phần - Giảm chiều liệu: Các thành phần xếp theo thứ tự giảm dần giá trị riêng Chúng ta giữ lại số thành phần quan trọng nhất, loại bỏ thành phần quan trọng Việc giúp giảm số chiều liệu giữ lại thông tin quan trọng - Tạo lại liệu: Dữ liệu tạo cách kết hợp thành phần chọn Điều cho phép biểu diễn lại liệu khơng gian có số chiều thấp PCA có nhiều ứng dụng xử lý liệu máy học, bao gồm giảm chiều liệu, trích xuất đặc trưng, nén liệu khôi phục liệu Nó sử dụng để tìm hiểu mối quan hệ biến liệu tạo biểu đồ phân tích 2.2.2 Support Vector Machines (SVM) Support Vector Machine (SVM) thuật toán máy học sử dụng rộng rãi lĩnh vực nhận dạng vật thể Nó thuật tốn học có giám sát, sử dụng để phân loại phân biệt đối tượng liệu Ý tưởng SVM tìm siêu phẳng (hyperplane) không gian đặc trưng liệu, phân tách lớp liệu khác cho khoảng cách từ điểm liệu gần tới siêu phẳng lớn Các điểm liệu gần với siêu phẳng gọi vector hỗ trợ (support vectors), điểm quan trọng trình phân loại Quá trình huấn luyện SVM bao gồm bước sau: 32 - Chuẩn bị liệu: Dữ liệu huấn luyện phải chuẩn bị tiền xử lý trước áp dụng SVM Điều bao gồm chuẩn hóa liệu để đảm bảo biến có đơn vị đo lường - Xác định lớp đặc trưng: Các lớp liệu phải xác định đặc trưng điểm liệu cần trích xuất - Xây dựng mơ hình SVM: Mơ hình SVM xây dựng cách tìm siêu phẳng tối ưu để phân tách lớp liệu Tối ưu hóa thực cách tìm kiếm siêu phẳng có khoảng cách lớn đến vector hỗ trợ - Xác định hàm định: Siêu phẳng tối ưu sử dụng để xác định hàm định, cho phép phân loại điểm liệu vào lớp tương ứng SVM có nhiều ưu điểm nhận dạng vật thể Đặc biệt, có khả xử lý hiệu tốn phân loại khơng gian có số chiều cao SVM tốt việc xử lý liệu nhiễu có khả tổng quát hóa tốt liệu Hơn nữa, SVM hỗ trợ sử dụng hàm kernel, cho phép phân loại đối tượng không tuyến tính khơng gian đặc trưng Tuy nhiên, SVM có số hạn chế Khi số lượng liệu lớn, việc huấn luyện SVM trở nên tốn thời gian tài ngun tính tốn SVM nhạy cảm với việc lựa chọn thông số, bao gồm hàm kernel tham số kiểm soát Điều đòi hỏi điều chỉnh cẩn thận để đạt hiệu suất tốt SVM sử dụng rộng rãi ứng dụng nhận dạng vật thể, bao gồm nhận dạng khuôn mặt, phát vật thể ảnh, phân loại chữ viết tay, nhiều ứng dụng khác 2.2.3 Convolutional Neural Networks (CNN) Convolutional Neural Networks (CNN) kiến trúc mạng thần kinh sử dụng rộng rãi lĩnh vực nhận dạng vật thể CNN đạt thành công đáng kể việc xử lý phân loại ảnh, vượt qua nhiều phương pháp truyền thống trước CNN thiết kế đặc biệt để xử lý liệu không gian ảnh video Kiến trúc CNN chủ yếu dựa hai thành phần chính: lớp tích chập (convolutional layers) lớp tổng hợp (pooling layers) Những thành phần cho phép CNN tự động học đặc trưng cấp cao từ liệu đầu vào mà không cần can thiệp thủ cơng Các lớp tích chập CNN sử dụng lọc nhỏ, thực phép tích chập liệu đầu vào để tìm đặc trưng cục Những đặc trưng cạnh, góc, đặc điểm bật khác ảnh Lớp tổng 33 hợp sử dụng để giảm kích thước khơng gian đặc trưng cách lấy giá trị lớn trung bình vùng định Sau lớp tích chập tổng hợp, CNN thường có nhiều lớp kết nối đầy đủ (fully connected layers) để phân loại đưa dự đoán Những lớp thường sử dụng để học mối quan hệ phức tạp đặc trưng trích xuất lớp đầu tương ứng với lớp vật thể cần nhận dạng Quá trình huấn luyện CNN bao gồm bước sau: - Chuẩn bị liệu: Dữ liệu huấn luyện cần chuẩn bị tiền xử lý trước đưa vào CNN Điều bao gồm chuyển đổi kích thước ảnh, chuẩn hóa liệu tạo tập liệu huấn luyện, xác thực kiểm tra - Xây dựng kiến trúc CNN: Kiến trúc CNN xác định cách xếp chồng lớp tích chập, lớp tổng hợp lớp kết nối đầy đủ Những lớp cấu hình với thơng số kích thước lọc, số lượng lớp, hàm kích hoạt hệ số học - Huấn luyện mạng: Mạng CNN huấn luyện cách đưa liệu huấn luyện vào mạng, tính tốn điều chỉnh trọng số mạng để giảm thiểu sai số dự đoán nhãn thực tế - Đánh giá tinh chỉnh: Sau huấn luyện, mạng CNN đánh giá cách sử dụng liệu xác thực kiểm tra Nếu hiệu suất chưa đạt yêu cầu, ta điều chỉnh thơng số mạng lặp lại q trình huấn luyện CNN có nhiều ưu điểm nhận dạng vật thể Đầu tiên, CNN có khả tự động học đặc trưng từ liệu, giúp giảm cơng sức việc trích xuất đặc trưng thủ cơng Nó có khả xử lý liệu không gian lớn giải toán phân loại với độ phức tạp cao CNN có khả giữ tính tổng qt việc nhận dạng vật thể Nhờ sử dụng lớp tích chập tổng hợp, CNN học đặc trưng cục xây dựng mơ hình phân loại có khả nhìn nhận đối tượng từ nhiều góc độ tỷ lệ khác Tuy nhiên, CNN có số hạn chế Mạng CNN có xu hướng tốn tài ngun tính tốn nhớ, đặc biệt cần xử lý ảnh có độ phân giải cao mơ hình sâu Điều đòi hỏi sử dụng phần cứng mạnh mẽ để đạt hiệu suất tốt Ngoài ra, việc huấn luyện mạng CNN cần có lượng lớn liệu huấn luyện thời gian đáng kể CNN áp dụng thành công nhiều ứng dụng nhận dạng vật thể, bao gồm nhận dạng khuôn mặt, phát vật thể ảnh, phân loại đối 34 tượng, nhiều lĩnh vực khác Nó đạt kết ấn tượng thi ImageNet, nơi mạng CNN đạt độ xác cao vượt qua người việc phân loại ảnh 35 Chương 3: Thực nghiệm 3.1 Dữ liệu thực nghiệm Bộ liệu chứa hình ảnh cảnh quay CCTV (trong nhà ngồi trời), nửa số có người nửa số khơng có người Hình ảnh đánh dấu sau: 0_n.png 1_n.png Chữ số loại hình ảnh, nghĩa cảnh khơng có người nghĩa cảnh có người, n số hình ảnh tồn tập liệu Nguồn liệu: • cảnh quay camera quan sát từ youtube; • tập liệu hình ảnh nhà mở; • cảnh quay từ camera quan sát tơi Hình 3.1: Tổng quan liệu huấn luyện 3.2 Tiền xử lý liệu: Phần tiền xử lý liệu đề tài đóng vai trị quan trọng việc đảm bảo chất lượng hiệu suất mơ hình nhận diện người sử dụng phương pháp Histogram of Oriented Gradients (HOG) Trước đưa liệu vào mơ hình, thực loạt bước tiền xử lý để chuẩn bị liệu cách xác hiệu Đầu tiên, chúng tơi chuẩn hóa kích thước tất ảnh để đảm bảo đồng trình xử lý Điều giúp giảm phức tạp mơ hình tăng khả tổng qt hóa Tiếp theo, chúng tơi chuyển đổi ảnh màu thành ảnh xám để giảm chiều sâu tăng tốc độ xử lý Bước quan trọng rút trích đặc trưng HOG từ ảnh Chúng sử dụng thư viện scikit-image để thực q trình này, điều giúp 36 chúng tơi tận dụng ưu điểm HOG việc nhận diện biên hình dạng đối tượng ảnh Đồng thời, chúng tơi chuẩn hóa độ sáng ảnh HOG để đảm bảo tính quán đồng dải giá trị pixel # Hàm đọc chuẩn bị ảnh def read_and_preprocess_image(image_path): image = cv2.imread(image_path) return image # Hàm trích xuất đặc trưng HOG từ ảnh def extract_hog_features(image, resize_dim=(64, 128)): # Chuẩn hóa kích thước ảnh resized_image = cv2.resize(image, resize_dim) # Chuyển đổi ảnh thành ảnh grayscale gray_image = cv2.cvtColor(resized_image, cv2.COLOR_BGR2GRAY) # Trích xuất đặc trưng HOG features = hog.compute(gray_image) return features Gán nhãn cho ảnh q trình định rõ liệu ảnh có chứa người hay không Mỗi ảnh gán nhãn dương có người nhãn âm khơng có Q trình quan trọng để huấn luyện mơ hình nhận diện người Điều quan trọng đảm bảo độ xác cơng q trình gán nhãn, đảm bảo đa dạng liệu Gán nhãn tự động thủ cơng, hai địi hỏi kiểm sốt chặt chẽ để đảm bảo chất lượng tập liệu def no_human(): # Đọc gán nhãn cho ảnh khơng có người (0) data_no_human, labels_no_human = [], [] for image_file in os.listdir(no_human_folder): image_path = os.path.join(no_human_folder, image_file) image = read_and_preprocess_image(image_path) if image is not None: hog_features = extract_hog_features(image) data_no_human.append(hog_features) 37 labels_no_human.append(0) data_no_human = np.vstack(data_no_human) print(data_no_human) print(data_no_human.shape) print('-' * 30) return data_no_human, labels_no_human 38 def human(): # Đọc gán nhãn cho ảnh có người (1) data_human, labels_human = [], [] for image_file in os.listdir(human_folder): image_path = os.path.join(human_folder, image_file) image = read_and_preprocess_image(image_path) if image is not None: hog_features = extract_hog_features(image) data_human.append(hog_features) labels_human.append(1) data_human = np.vstack(data_human) print(data_human) print(data_human.shape) print('-' * 30) return data_human, labels_human Ghép data từ mẫu liệu có người khơng có người để chuẩn bị cho mơ hình huấn luyện: def data_label(): # Kết hợp liệu từ hai nhóm data = np.concatenate((data_human, data_no_human), axis=0) labels = labels_no_human + labels_human labels = np.array(labels) return data, labels 39 Hình 3.2: Dữ liệu sau trích rút Dữ liệu sau trích rút đặc trưng HOG bao gồm ma trận đặc trưng mảng nhãn tương ứng: Nhãn 0: Khơng có người ảnh Nhãn 1: Có người ảnh Các giá trị vector đặc trưng mơ tả hình dạng đặc điểm cấu trúc vùng ảnh, đặc biệt vùng có đối tượng quan trọng Vector sau sử dụng để huấn luyện mơ hình nhận dạng đối tượng thực nhiệm vụ phân loại Điều quan trọng việc trích xuất đặc trưng HOG giúp giảm chiều liệu tạo biểu diễn tổng quát đặc điểm hình học ảnh 40 3.3 Chia liệu huấn luyện mơ hình 3.3.1 Chia liệu def train_svm(data, labels): # Chia tập liệu thành tập huấn luyện tập kiểm tra scaler = MinMaxScaler() X = scaler.fit_transform(data) y = labels X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, shuffle=True, random_state=14) 3.3.2 Huấn luyện mô hình Ta thực huấn luyện mơ hình SVM # Huấn luyện mơ hình SVM svm_model = SVC(kernel='rbf', C=1000) svm_model.fit(X_train, y_train) # Lưu mơ hình huấn luyện joblib.dump(svm_model, 'Data/models/svm_model.joblib') print('Da train xong') return X_train, X_test, y_train, y_test 3.3.3 Đánh giá mơ hình def danh_gia_model(X_train, X_test, y_train, y_test): model = joblib.load('Data/models/svm_model.joblib') y_pred = model.predict(X_test) cm = np.array(confusion_matrix(y_test, y_pred, labels=[1, 0])) f1 = f1_score(y_test, y_pred) accuracy = accuracy_score(y_test, y_pred) recall = recall_score(y_test, y_pred) # Hiển thị kết đánh giá mơ hình print("Độ xác: {:.2f}%".format(accuracy * 100)) print("Nhớ lại: {:.2f}%".format(recall * 100)) print("Chính xác dự đốn: {:.2f}%".format(precision_score(y_test, y_pred) * 100)) 41 confusion = pd.DataFrame(cm, index=['No Human', 'Human'], columns=['Predicted No Human', 'Predicted Human']) print(confusion) print(classification_report(y_test, y_pred)) 3.3.4 Lưu mơ hình # Lưu mơ hình huấn luyện joblib.dump(svm_model, 'Data/models/svm_model.joblib') • joblib.dump: Phương thức thư viện joblib sử dụng để lưu đối tượng SVM model (đã huấn luyện) vào file • svm_model: Đối tượng mơ hình SVM khởi tạo huấn luyện • 'Data/models/svm_model_2.joblib': Đường dẫn tên file để lưu trữ mơ hình Trong trường hợp này, mơ hình lưu thư mục 'Data/models/' với tên file 'svm_model_2.joblib' 3.4 Kết thực nghiệm def test(): new_image_path = 'Data/Img/Anh1.jpg' new_image = cv2.imread(new_image_path) svm_model = joblib.load('Data/models/svm_model.joblib') # Trích xuất đặc trưng HOG từ ảnh new_hog_features = extract_hog_features(new_image) scaler2 = MinMaxScaler() x = scaler2.fit_transform(new_hog_features.reshape(-1, 1)) # Reshape để có kích thước phù hợp với liệu đầu vào mơ hình new_hog_features = x.reshape(1, -1) print(new_hog_features) # Sử dụng mơ hình huấn luyện để dự đoán prediction = svm_model.predict(new_hog_features) print(prediction) if prediction == 1: image = imutils.resize(new_image, width=min(1600, new_image.shape[1])) 42 (regions, _) = hog.detectMultiScale(image, winStride=(4, 4), padding=(4, 4), scale=1.05) # Drawing the regions in the Image for (x, y, w, h) in regions: cv2.rectangle(image, (x, y), (x + w, y + h), (0, 0, 255), 2) # Showing the output Image cv2.imshow("Image", image) cv2.waitKey(0) cv2.destroyAllWindows() else: print("No Human") Hình 3.3: Kết thực nghiệm 43 KẾT LUẬN Trong thời gian thực đề tài, nhóm chúng em có nhiều kinh nghiệm thú vị đáng giá Nhóm chúng em tìm hiểu kỹ thuật khác học máy để giải toán phân loại thu nhập, qua khơng tích luỹ kiên thức chun mơn mà cịn học cách làm việc nhóm, cách phân chia công việc quản lý thời gian hiệu Đây chắn học, kinh nghiệm quý chúng em đường tương lai Chúng em tìm hiểu, nghiên cứu mơ hình học máy như: PCA, SVM, CNN sử dụng phương pháp HOG để nhận diện người ảnh Ngoài kiến thức, kỹ mơ hình học máy chúng em sử dụng kỹ thuật phân tích liệu, tiền xử lý liệu để hiểu rõ liệu từ lựa chọn mơ hình phù hợp làm liệu để mơ hình cho kết tốt Tiếp theo, thảo luận hiệu suất phương pháp HOG việc nhận diện người Đánh giá ưu điểm khả xử lý ảnh lớn, độ xác cao khả tự động hóa Tuy nhiên, cần thảo luận hạn chế độ phức tạp tính tốn ảnh hưởng ánh sáng mơi trường Ngồi ra, đề cập đến nghiên cứu cơng trình liên quan, so sánh kết đạt với phương pháp khác để làm bật tính đặc biệt phương pháp HOG Mơ hình cho kết ổn với độ xác đạt 80% Tuy nhiên số tốt, chương trình chúng em cịn vài hạn chế dẫn đến kết tốt như: khơng có thuật tốn cụ thể để xác định tốc độ học tối ưu Cuối cùng, đề xuất hướng phát triển nghiên cứu tương lai Có thể đề cập đến việc kết hợp HOG với phương pháp khác, tận dụng deep learning để cải thiện hiệu suất, tìm kiếm ứng dụng thực tế lĩnh vực an ninh, giám sát giao thông, hay cơng nghiệp sản xuất Tóm lại, cách kết hợp điểm mạnh yếu phương pháp HOG, đề tài khơng cung cấp nhìn tổng quan nhận diện người ảnh mà mở hướng nghiên cứu tiềm cho tương lai 44 TÀI LIỆU THAM KHẢO https://github.com/SamPlvs/Object-detection-via-HOG-SVM https://github.com/BUPTLdy/human-detector https://www.kaggle.com/datasets/constantinwerner/human-detectiondataset 45