1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Nhận diện phân loại Đối tượng dùng mạng nơron tích chập (cnn nhận diện Ảnh hoạt hình pokemon)

40 1 0
Tài liệu đã được kiểm tra trùng lặp

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Nhận diện phân loại đối tượng dùng mạng nơ-ron tích chập (CNN nhận diện ảnh hoạt hình Pokémon)
Tác giả Trần Minh Hiệp, Trần Tuấn Phong, Hồ Anh Đức
Người hướng dẫn TS. Vũ Văn Định
Trường học Trường Đại học Điện lực
Chuyên ngành Công nghệ thông tin
Thể loại Báo cáo chuyên đề học phần
Năm xuất bản 2025
Thành phố Hà Nội
Định dạng
Số trang 40
Dung lượng 2,29 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • CHƯƠNG 1 GIỚI THIỆU VỀ HỌC MÁY (8)
    • 1.1 Khái niệm về học máy (8)
    • 1.2 Ứng dụng của học máy (8)
    • 1.3 Các loại học máy (8)
      • 1.3.1 Học có giám sát (Supervised Learning) (9)
      • 1.3.2 Học không giám sát (Unsupervised Learning) (9)
      • 1.3.3 Học tăng cường (Reinforcement Learning) (9)
    • 1.4 Quy trình xây dựng mô hình học máy (9)
    • 1.5 Thách thức khi áp dụng học máy (10)
  • CHƯƠNG 2. TÌM HIỂU VỀ MẠNG TÍCH CHẬP CNN (Convolutional (11)
    • 2.1 Mạng tích chập CNN (11)
      • 2.1.1 Mạng CNN(Convolutional Neural Network) là gì ? (11)
      • 2.1.2 Các thành phần chính của một mạng CNN (Convolutional Neural Network) (11)
      • 2.1.3 Cấu trúc của mạng CNN là gì? (19)
      • 2.1.4 Hướng dẫn cách lựa chọn tham số CNN (21)
    • 2.2 Nhận dạng hình ảnh hoạt hình sử dụng CNN (22)
  • CHƯƠNG 3 NHẬN DẠNG HÌNH ẢNH HOẠT HÌNH POKEMON SỬ DỤNG CNN (22)
    • 3.1 Vấn đề của bài toán (22)
    • 3.2 Hướng giải quyết (23)
    • 3.3 Một số thư viện đã dùng (30)
      • 3.3.1 TensorFlow (30)
      • 3.3.2 Scikit-learn (31)
      • 3.3.3 Keras (32)

Nội dung

CHƯƠNG 1 : GIỚI THIỆU VỀ HỌC MÁY 1.1 Khái niệm về học máyHọc máy Machine learning là một lĩnh vực con của Trí tuệ nhân tạoArtificialIntelligence sử dụng các thuật toán cho phép máy tính

GIỚI THIỆU VỀ HỌC MÁY

Khái niệm về học máy

Máy học là một nhánh của Trí tuệ nhân tạo, sử dụng các thuật toán cho phép máy tính học từ dữ liệu để thực hiện các công việc mà không cần được lập trình rõ ràng, từ đó cung cấp khả năng tự động học hỏi và cải thiện hiệu suất dựa trên kinh nghiệm từ dữ liệu đầu vào Nó tập trung phát triển các phần mềm có thể truy cập và tận dụng nguồn dữ liệu để tự học và tối ưu hóa kết quả Tuy nhiên, việc triển khai máy học vẫn đòi hỏi sự đánh giá của con người trong việc tìm hiểu dữ liệu gốc và lựa chọn kỹ thuật phù hợp để phân tích, đồng thời dữ liệu trước khi sử dụng phải sạch, không lệch và không chứa dữ liệu giả Các mô hình máy học cần một lượng dữ liệu đủ lớn để huấn luyện và đánh giá, và trước đây thiếu quyền truy cập vào dữ liệu lớn đã khiến các thuật toán gặp khó khăn trong việc mô hình hóa các mối quan hệ Sự tăng trưởng của dữ liệu lớn (big data) đã cung cấp cho các thuật toán máy học khối lượng dữ liệu phong phú để cải thiện độ chính xác và khả năng dự báo của mô hình.

Ứng dụng của học máy

Nhiều hoạt động hàng ngày của chúng ta được trợ giúp bởi các thuật toán machine learning, bao gồm:

Trong y tế hiện đại, việc xác định bệnh lý cho một bệnh nhân mới có thể dựa trên dữ liệu lịch sử của những bệnh nhân có cùng bệnh lý và các đặc điểm tương đồng đã được chữa khỏi trước đó Những thông tin này giúp xây dựng các mô hình chẩn đoán có độ tin cậy cao và hỗ trợ quyết định lâm sàng Đồng thời, dữ liệu lịch sử cũng được sử dụng để xác định loại thuốc phù hợp nhất cho từng trường hợp, tối ưu hiệu quả điều trị và giảm thiểu tác dụng phụ.

Trong lĩnh vực ngân hàng, việc xác định khả năng khách hàng chậm trả các khoản vay hoặc rủi ro tín dụng do nợ xấu được thực hiện dựa trên phân tích điểm tín dụng (credit score) Đồng thời, hệ thống còn xác định xem các giao dịch có dấu hiệu phạm tội hoặc lừa đảo hay không nhằm tăng cường quản lý rủi ro và bảo vệ an toàn cho danh mục cho vay.

Trong giáo dục, cần phân loại học sinh dựa trên hoàn cảnh sống và kết quả học tập để xác định nhu cầu hỗ trợ phù hợp Việc đánh giá đồng thời yếu tố môi trường và thành tích học tập giúp nhận diện những trường hợp đặc biệt, chẳng hạn học sinh có hoàn cảnh sống khó khăn nhưng vẫn đạt thành tích tốt, từ đó thiết kế các biện pháp hỗ trợ cụ thể Các biện pháp này có thể gồm cấp học bổng, hỗ trợ thiết bị học tập, tư vấn tâm lý và các dịch vụ hỗ trợ học tập nhằm đảm bảo mọi học sinh có cơ hội tiếp cận giáo dục chất lượng Phân bổ nguồn lực dựa trên nhu cầu thực tế sẽ tối ưu hóa hiệu quả can thiệp, đồng thời tăng cường công bằng và chất lượng giáo dục cho cả lớp.

Trong thương mại điện tử, phân loại khách hàng theo sở thích cụ thể giúp triển khai personalized marketing và xây dựng hệ thống khuyến nghị chính xác dựa trên dữ liệu thu thập từ website và social media Việc phân tích hành vi người dùng và mức độ quan tâm từ các nguồn dữ liệu này cho phép hiểu rõ nhu cầu của từng nhóm khách hàng và tối ưu hóa trải nghiệm mua sắm Chiến lược marketing được cá nhân hóa và hệ thống gợi ý sản phẩm sẽ tăng tỷ lệ chuyển đổi, nâng cao doanh thu và tăng sự hài lòng của khách hàng Để tối ưu hóa hiệu quả, nội dung và đề xuất nên được căn chỉnh bằng các từ khóa chủ chốt như thương mại điện tử, phân loại khách hàng, sở thích, personalized marketing, hệ thống khuyến nghị, dữ liệu website và social media.

Các loại học máy

Học máy được chia làm ba loại chính dựa vào cách xử lý dữ liệu: học có giám sát, học không giám sát và học tăng cường.

1.3.1 Học có giám sát (Supervised Learning)

Học có giám sát là phương pháp sử dụng dữ liệu đã được gắn nhãn để huấn luyện một mô hình máy học Quá trình này giúp máy học học được mối quan hệ giữa đầu vào và đầu ra, từ đó có thể dự đoán kết quả cho dữ liệu mới Mục tiêu là cải thiện độ chính xác và khả năng tổng quát hoá bằng cách tối ưu hóa các tham số dựa trên các ví dụ đã gắn nhãn.

Ví dụ: Dự đoán số lượng món ăn được đặt trong giờ cao điểm dựa trên dữ liệu cũ.

Thuật toán phổ biến: Hồi quy tuyến tính, cây quyết định, mạng nơ-ron. Ưu điểm: Chính xác cao nếu dữ liệu chất lượng tốt.

Nhược điểm: Cần dữ liệu có nhãn, tốn công thu thập.

1.3.2 Học không giám sát (Unsupervised Learning)

Làm việc với dữ liệu không có nhãn, nhằm tìm ra các mẫu hoặc cấu trúc ẩn.

Ví dụ: Phân nhóm khách hàng theo hành vi đặt món.

Thuật toán phổ biến:K-means,phân cụm phân cấp (Hierarchical clustering),PCA. Ưu điểm: Không cần gán nhãn thủ công.

Nhược điểm: Khó đánh giá kết quả.

1.3.3 Học tăng cường (Reinforcement Learning)

Tác nhân (agent) học thông qua tương tác với môi trường và điều chỉnh hành động để tối đa hóa phần thưởng.

Ví dụ: Hệ thống đề xuất món ăn tối ưu theo thói quen người dùng. Ưu điểm: Phù hợp với các tình huống ra quyết định tuần tự.

Nhược điểm: Khó huấn luyện, đòi hỏi thời gian dài và môi trường mô phỏng tốt.

Quy trình xây dựng mô hình học máy

Quy trình xây dựng một mô hình học máy thường gồm các bước:

Thu thập dữ liệu: Từ hệ thống website hoặc thiết bị đầu cuối.

Tiền xử lý: Làm sạch, chuẩn hóa và định dạng dữ liệu.

Chia tập dữ liệu: Huấn luyện – kiểm thử – (có thể có kiểm định).

Chọn và huấn luyện mô hình: Dựa trên bài toán cụ thể. Đánh giá: Sử dụng độ chính xác, F1-score,… để kiểm tra hiệu quả.

Triển khai: Tích hợp vào hệ thống thực tế và giám sát hiệu suất.

Thách thức khi áp dụng học máy

Một số khó khăn khi triển khai học máy trong thực tế:

 Dữ liệu thiếu hoặc nhiễu: Làm giảm độ chính xác của mô hình.

 Mô hình khó hiểu: Như mạng nơ-ron là “hộp đen”, khó giải thích kết quả.

 Chi phí cao: Với các mô hình lớn hoặc cần xử lý dữ liệu theo thời gian thực.

 Vấn đề đạo đức và bảo mật: Dữ liệu cá nhân cần được xử lý đúng quy định.

 Hiệu suất ngoài thực tế không như kỳ vọng: Do môi trường thay đổi (concept drift).

TÌM HIỂU VỀ MẠNG TÍCH CHẬP CNN (Convolutional

Mạng tích chập CNN

2.1.1 Mạng CNN(Convolutional Neural Network) là gì ?

Mạng CNN (Convolutional Neural Network) là một kiến trúc mạng nơ-ron sâu được sử dụng phổ biến trong các bài toán xử lý ảnh, âm thanh và video Nó được thiết kế để tự động học các đặc trưng của dữ liệu thông qua các lớp tích chập và pooling, từ đó tối ưu hóa khả năng nhận diện và trích xuất đặc trưng cho các tín hiệu hình ảnh, âm thanh và video.

CNN phân loại hình ảnh bằng cách nhận ảnh đầu vào và xử lý qua các lớp của mạng để gán nhãn cho các hạng mục như chó, mèo, hổ và các đối tượng khác Ảnh được máy tính xem như một mảng pixel và kết quả phụ thuộc vào độ phân giải của ảnh; tùy độ phân giải, CNN làm việc với tensor có kích thước H × W × D (H là chiều cao, W là chiều rộng, D là số kênh màu) Quá trình học từ dữ liệu giúp CNN nhận diện đặc trưng và phân loại chính xác vào các nhãn mong muốn.

Ví dụ: Hình ảnh là mảng ma trận RGB 6x6x3 (3 ở đây là giá trị RGB).

Trong kỹ thuật nhận diện ảnh, CNN (mạng nơ-ron tích chập) được sử dụng cho quá trình training và kiểm tra hình ảnh Mỗi hình ảnh đầu vào đi qua chuỗi lớp tích chập với các bộ lọc (kernels) nhằm trích xuất đặc trưng, tiếp đó các đặc trưng được xử lý qua các lớp fully connected để ghép nối thông tin, và cuối cùng qua hàm Softmax để ước lượng xác suất phân loại cho các nhãn, với giá trị xác suất nằm giữa 0 và 1 Toàn bộ luồng CNN mô tả quá trình xử lý từ ảnh đầu vào đến đầu ra, cho phép phân loại đối tượng dựa trên các xác suất được tính toán.

2.1.2 Các thành phần chính của một mạng CNN (Convolutional Neural Network) Lớp đầu vào – Input Layer

Input Layer (lớp đầu vào) là lớp đầu tiên trong một mạng neural, chứa dữ liệu đầu vào và định nghĩa kích thước cũng như định dạng của dữ liệu để truyền sang các lớp tiếp theo Trong mạng CNN (Convolutional Neural Network), input layer nhận ảnh đầu vào hoặc một tập hợp ảnh có kích thước cố định, và mỗi ảnh được biểu diễn dưới dạng ma trận các pixel với giá trị của từng pixel phản ánh mức độ sáng tại vị trí tương ứng trên ảnh.

Khi ảnh được đưa vào input layer, nó được xử lý qua chuỗi các lớp tiếp theo của mạng nơ-ron nhằm trích xuất đặc trưng và tạo ra dự đoán Quá trình này gồm các lớp tích chập (convolutional layer) để phát hiện các đặc điểm ở nhiều vị trí trên ảnh, lớp kích hoạt (activation layer) áp dụng hàm phi tuyến giúp mô hình học được các mối quan hệ phức tạp, và lớp giảm mẫu (pooling layer) làm giảm kích thước dữ liệu đồng thời giữ lại thông tin quan trọng Sau đó là các lớp fully connected layer, nơi các đặc trưng được kết nối và chuyển hóa thành các giá trị dự đoán Toàn bộ tham số và trọng số của mạng được học và tối ưu trong quá trình huấn luyện, giúp mạng nhận diện và phân loại hình ảnh một cách hiệu quả.

Input layer có thể được sử dụng trong nhiều loại mạng neural khác nhau, từ mạng feedforward cho các bài toán suy luận cho dữ liệu tĩnh đến mạng hồi quy cho dữ liệu chuỗi Các loại dữ liệu đầu vào như âm thanh và văn bản có thể có định dạng và cách xử lý khác nhau tại lớp input, tùy thuộc vào bài toán mà mạng được thiết kế để giải quyết.

Lớp tích chập - Convolution Layer

Trong mạng nơ-ron, lớp tích chập là lớp đầu tiên dùng để trích xuất các đặc trưng từ hình ảnh đầu vào Quá trình tích chập duy trì mối quan hệ giữa các pixel bằng cách học các đặc trưng hình ảnh thông qua các ô vuông nhỏ trên dữ liệu đầu vào Đây là một phép toán có hai đầu vào: ma trận hình ảnh và một bộ lọc hay hạt nhân (kernel).

Hình 2.1 Lớp tích chập - Convolution Layer(1)

- Xem xét 1 ma trận 5 x 5 có giá trị pixel là 0 và 1 Ma trận bộ lọc 3 x 3 như hình bên dưới.

Hình 2.2 Lớp tích chập - Convolution Layer(2)

- Sau đó, lớp tích chập của ma trận hình ảnh 5 x 5 nhân với ma trận bộ lọc 3 x 3 gọi là 'Feature Map' như hình bên dưới.

Hình 2.3 Lớp tích chập - Convolution Layer(3)

Một hình ảnh có thể được xử lý bằng cách kết hợp với các bộ lọc khác nhau để thực hiện các tác vụ như phát hiện cạnh, làm mờ và làm sắc nét thông qua việc áp dụng các bộ lọc (kernel) Quá trình tích chập với các kernel khác nhau sẽ cho ra các hình ảnh xử lý khác nhau, như minh họa trong ví dụ: các hình ảnh sau khi áp dụng các kernel khác nhau cho thấy sự khác biệt giữa các kết quả.

Hình 2.4 Lớp tích chập - Convolution Layer(4)

Lớp ReLU (Rectified Linear Unit) là một trong những lớp kích hoạt phổ biến trong các mạng neural, kể cả mạng CNN (Convolutional Neural Network) Chức năng của lớp ReLU là biến đổi giá trị đầu vào thành đầu ra bằng cách áp dụng hàm ReLU lên từng phần tử của ma trận đầu vào, tạo thành ma trận đầu ra tương ứng.

- Hàm ReLU được định nghĩa như sau: f(x) = max(0, x)

Trong đó, x đại diện cho giá trị đầu vào và max(0, x) là hàm trả về giá trị lớn nhất giữa 0 và x Điều này có nghĩa là hàm ReLU xuất ra 0 khi đầu vào là âm và xuất ra chính giá trị đầu vào khi đầu vào là dương ReLU, hay Rectified Linear Unit, là một hàm kích hoạt phổ biến trong mạng nơ-ron nhờ đặc tính giữ nguyên các giá trị dương và loại bỏ phần âm, từ đó giúp quá trình huấn luyện diễn ra hiệu quả hơn Nhờ đặc trưng này, đồ thị của ReLU thể hiện sự cắt tại 0 và tăng tuyến tính khi x > 0.

Lớp ReLU trong mạng CNN được dùng để kích hoạt các đặc trưng quan trọng của ảnh như cạnh, góc và đường cong, giúp mô hình nhận diện đặc trưng một cách hiệu quả Giá trị âm trong đầu vào bị chuyển về 0, từ đó giảm hiện tượng quá khớp và cải thiện khả năng khái quát hóa khi huấn luyện Ngoài ra, tính phi tuyến của ReLU giúp tăng tốc độ huấn luyện và giảm độ phức tạp tính toán của mạng, đồng thời tối ưu hóa hiệu suất tổng thể cho CNN.

- Tại sao ReLU lại quan trọng: ReLU giới thiệu tính phi tuyến trong ConvNet.

Vì dữ liệu trong thế giới mà chúng ta tìm hiểu là các giá trị tuyến tính không âm.

Trong mạng CNN, ReLU được áp dụng sau lớp tích chập để tạo ra bản đồ đặc trưng và kích hoạt các đặc trưng quan trọng của ảnh Các giá trị âm trong bản đồ đặc trưng được chuyển thành 0, trong khi các giá trị dương được giữ nguyên, giúp sinh ra các kích hoạt có ý nghĩa cho các lớp tiếp theo.

Có một số hàm kích hoạt phi tuyến như tanh và sigmoid có thể được dùng thay cho ReLU tùy thuộc vào bài toán và đặc điểm dữ liệu Tuy nhiên, ReLU vẫn được ưa chuộng hơn nhờ hiệu suất tính toán cao và khả năng giúp mạng học nhanh hơn, giảm hiện tượng vanishing gradient và mang lại sự hội tụ ổn định ở nhiều trường hợp.

Trong kiến trúc mạng CNN, lớp pooling là một thành phần quan trọng giúp giảm kích thước của bản đồ đặc trưng do lớp tích chập tạo ra trong quá trình trích xuất đặc trưng của ảnh Quá trình này giảm số lượng tham số và phép tính, đồng thời tăng độ bất biến của mô hình đối với dịch chuyển và biến đổi nhỏ của ảnh Lớp pooling phổ biến gồm max pooling và average pooling, hoạt động bằng cách chia bản đồ đặc trưng thành các cửa sổ và lấy giá trị lớn nhất hoặc giá trị trung bình trong mỗi cửa sổ, từ đó tạo ra bản đồ đặc trưng kích thước nhỏ hơn mà vẫn giữ lại những đặc trưng quan trọng Việc chọn kích thước cửa sổ và bước nhảy (stride) ảnh hưởng đến mức độ chi tiết của đặc trưng và hiệu suất nhận diện của mạng, vì vậy pooling đóng vai trò cân bằng giữa hiệu quả tính toán và chất lượng đặc trưng được trích xuất.

Các phương pháp pooling phổ biến trong xử lý ảnh và nhận diện đặc trưng là Max Pooling và Average Pooling Trong Max Pooling, một cửa sổ trượt (sliding window) được áp dụng lên bản đồ đặc trưng và chỉ giữ lại giá trị lớn nhất trong mỗi vùng, giúp nén kích thước dữ liệu và làm nổi bật các đặc trưng quan trọng Ngược lại, với Average Pooling, giá trị trung bình của từng vùng được tính toán và giữ lại làm đại diện cho vùng đó, giúp làm mượt bản đồ đặc trưng và giảm nhiễu.

Nhận dạng hình ảnh hoạt hình sử dụng CNN

Thị giác máy tính có nhiều ứng dụng thiết thực như nhận dạng khuôn mặt, kiểm tra chất lượng và bảo mật, đồng thời có thể nhận dạng thành công nhiều đối tượng khác nhau trong ảnh Trong bài viết này, chúng ta sẽ xây dựng một hệ thống nhận diện các nhân vật hoạt hình trên hình ảnh bằng cách triển khai một mô hình học máy có giám sát Mô hình này sẽ được huấn luyện dựa trên dữ liệu được gán nhãn để nhận diện đúng các nhân vật hoạt hình Phương pháp đề xuất sử dụng mạng thần kinh để xử lý và nhận dạng các đặc trưng của các nhân vật trong ảnh một cách hiệu quả Kết quả mong đợi là một hệ thống nhận diện đáng tin cậy và có hiệu suất cao cho các nhân vật hoạt hình trong ảnh.

NHẬN DẠNG HÌNH ẢNH HOẠT HÌNH POKEMON SỬ DỤNG CNN

Vấn đề của bài toán

Thị giác máy tính là một nhánh của trí tuệ nhân tạo cho phép máy tính “nhìn” và hiểu nội dung hình ảnh Một trong những ứng dụng phổ biến của thị giác máy tính là nhận dạng và phân loại đối tượng trong ảnh, nhờ các thuật toán học máy và học sâu giúp xác định loại, vị trí và ngữ cảnh của đối tượng Các ứng dụng này được triển khai rộng rãi trong các hệ thống tự động, từ nhận diện khuôn mặt và xe cộ đến phân tích y tế và quản lý hình ảnh trên web, nhằm tối ưu hóa quy trình làm việc và nâng cao hiệu quả của dịch vụ liên quan đến hình ảnh và video.

Trong đề tài này, mục tiêu là xây dựng một hệ thống nhận dạng các nhân vật hoạt hình Pokemon từ hình ảnh đầu vào Mỗi hình ảnh chứa đúng một nhân vật Pokemon và hệ thống cần phân loại chính xác nhân vật đó (ví dụ: Pikachu, Bulbasaur, Charmander, v.v.) Để giải quyết bài toán, chúng ta áp dụng học máy có giám sát với mạng nơ-ron tích chập (CNN), cho phép tự động trích xuất các đặc trưng từ hình ảnh như màu sắc, hình dạng và đường nét Nhờ khả năng này, CNN giúp mô hình phân biệt các Pokemon khác nhau một cách chính xác và hiệu quả, từ đó tạo ra một hệ thống nhận dạng Pokemon nhanh nhạy và đáng tin cậy cho việc nhận diện các nhân vật hoạt hình.

Hướng giải quyết

Bước 1: Chuẩn bị dữ liệu

 Thu thập tập dữ liệu hình ảnh các nhân vật hoạt hình Pokemon từ các nguồn như Kaggle, GitHub, Google Image hoặc bộ dữ liệu bạn tự xây dựng.

 Tạo một thư mục gốc chứa các thư mục con, mỗi thư mục con tương ứng với một loại Pokemon (ví dụ: pikachu, bulbasaur, charmander, ).

 Đặt hình ảnh của từng loại Pokemon vào đúng thư mục tương ứng theo nhãn.

Chia dữ liệu thành hai phần chính: tập huấn luyện (training set), dùng để huấn luyện mô hình, và tập kiểm tra (test set), dùng để đánh giá độ chính xác của mô hình sau khi huấn luyện.

Bước 2: Xây dựng mô hình CNN:

Hình 3.1 Khởi tạo mô hình

• Khởi tạo một mô hình Sequential, nơi các lớp sẽ được xếp theo thứ tự tuyến tính từ đầu đến cuối.

2.2 Thiết lập định dạng đầu vào

Hình 3.2 Thiết lập định dạng đầu vào

• inputShape: Kích thước của ảnh đầu vào Với TensorFlow, định dạng phổ biến là (chiều cao, chiều rộng, số kênh màu).

• chanDim = -1: Trục tương ứng với kênh màu (RGB), cần cho BatchNormalization.

2.3 Kiểm tra định dạng hình ảnh

Hình 3.3 Kiểm tra định dạng hình ảnh

• Một số backend sử dụng định dạng kênh màu ở đầu (channels_first) Dòng này đảm bảo mô hình tương thích.

Hình 3.4 Lớp Conv đầu tiên

• ReLU để phi tuyến tính hóa

• BatchNormalization để ổn định đầu ra.

• MaxPooling giảm kích thước đặc trưng.

Hình 3.5 Khối Conv thứ hai

• 2 lớp tích chập liên tiếp với 64 bộ lọc giúp trích xuất đặc trưng sâu hơn

• Pooling và dropout tiếp tục giảm overfitting và số chiều.

Hình 3.6 Khối Conv thứ ba

• Tăng số lượng bộ lọc lên 128 để học đặc trưng phức tạp hơn

• Vẫn giữ cấu trúc tương tự để đảm bảo mô hình học sâu hơn nhưng không bị overfitting.

2.7 Khối Conv thứ Fully Connected

Hình 3.7 Khối Conv thứ Fully Connected

• Flatten(): Biến ma trận đầu ra thành vector 1 chiều

• Dense(1024): Lớp dày với 1024 nơ-ron

• Dropout 50% giúp mô hình tổng quát hóa tốt hơn.

• Lớp cuối cùng có số nơ-ron bằng số lớp phân loại (ví dụ: số Pokémon)

• Hàm softmax giúp đưa ra xác suất dự đoán cho từng lớp.

Bước 3 : Huấn luyện mô hình

3.1 Cấu hình và tham số huấn luyện

Hình 3.9 Cấu hình và tham số huấn luyện

• EPOCHS = 100: số vòng lặp huấn luyện toàn bộ dữ liệu.

• INIT_LR = 1e-3: learning rate khởi tạo.

• BS = 32: batch size (kích thước mini-batch khi train).

• IMAGE_DIMS: kích thước ảnh đầu vào (96x96 RGB).

3.2 Tiền xử lý dữ liệu ảnh

Hình 3.10 Tiền xử lý dữ liệu ảnh

 Đọc toàn bộ ảnh từ thư mục dataset.

 Resize mỗi ảnh về kích thước 96x96.

 Chuyển ảnh sang mảng số (img_to_array) và chuẩn hóa giá trị pixel từ [0-255] về [0-1].

 Lấy nhãn (label) từ tên thư mục chứa ảnh (phân loại ảnh theo folder).

 Kết quả: data chứa ảnh, labels chứa nhãn tương ứng.

3.3 Mã hóa nhãn (One-hot encoding)

Hình 3.11 Mã hóa nhãn (One-hot encoding)

 Dùng LabelBinarizer để chuyển nhãn chữ (string) thành vector nhị phân (one- hot), ví dụ:

 Đây là định dạng cần thiết để huấn luyện phân loại đa lớp với Keras.

Hình 3.12 Chia tập train/test

 Chia tập dữ liệu thành:

 80% cho huấn luyện (trainX, trainY)

 20% cho kiểm thử (testX, testY)

 random_stateB giúp đảm bảo lần chia luôn giống nhau giữa các lần chạy.

3.5 Tăng cường dữ liệu (Data Augmentation)

Hình 3.13 Tăng cường dữ liệu (Data Augmentation)

 Dùng ImageDataGenerator để tạo ảnh biến thể từ ảnh gốc:

• Xoay (rotate), dịch (shift), zoom, lật ngang

 Giúp mô hình học tổng quát tốt hơn, tránh bị học tủ (overfitting).

3.6 Xây dựng và biên dịch mô hình

Hình 3.14 Xây dựng và biên dịch mô hình

 Khởi tạo mạng CNN SmallerVGGNet với đầu vào 96x96x3, đầu ra là số lớp tương ứng số nhãn.

 Dùng hàm mất mát categorical_crossentropy vì đây là bài toán phân loại đa lớp.

Hình 3.15 Huấn luyện mô hình

 Huấn luyện mô hình trong 100 epoch.

 Sử dụng ảnh tăng cường (aug.flow) làm đầu vào.

 Mỗi epoch chạy len(trainX) // BS bước (batch).

 Dùng testX/testY làm validation để theo dõi mô hình có bị overfitting không.

3.8 Lưu mô hình và nhãn

Hình 3.16 Lưu mô hình và nhãn

 Lưu mô hình CNN đã huấn luyện vào file h5 để dùng lại sau.

 Lưu bộ mã hóa nhãn (LabelBinarizer) vào file pickle để sử dụng trong quá trình dự đoán.

3.9 Vẽ biểu đồ Loss và Accuracy

Hình 3.17 Vẽ biểu đồ Loss và Accuracy

 Vẽ biểu đồ loss và accuracy trên cả tập train và validation.

 Dễ dàng đánh giá quá trình học của mô hình.

 Lưu biểu đồ ra file plot.png.

Bước 4 :Đánh giá và kiểm tra mô hình

Hình 3.18 Đánh giá và kiểm tra mô hình (1)

Hình 3.19 Đánh giá và kiểm tra mô hình (2)

4.1 Nhập ảnh và xử lý đầu vào

 Đọc đường dẫn ảnh từ dòng lệnh.

 Dùng OpenCV để load ảnh đầu vào và resize về kích thước chuẩn 96x96 (kích thước mô hình yêu cầu).

 Chuẩn hóa dữ liệu ảnh từ [0-255] về [0-1] để phù hợp với dữ liệu khi train.

 Chuyển ảnh sang định dạng NumPy array và thêm chiều batch (batch size = 1).

4.2 Tải mô hình đã huấn luyện

 load_model('pokedex.model'): Tải mô hình CNN đã huấn luyện ở bước train.

 pickle.load('lb.pickle'): Load label binarizer (mã hóa nhãn đầu ra thành one-hot) để giải mã kết quả dự đoán thành tên thật (ví dụ: "pikachu").

 Dự đoán ảnh đầu vào bằng model (model.predict( )), kết quả trả về xác suất cho từng lớp.

 np.argmax( ): Lấy lớp có xác suất cao nhất.

 Tra tên lớp tương ứng từ label binarizer.

4.4 Kiểm tra dự đoán (demo)

Để đánh giá tính đúng sai của nhãn dự đoán, kiểm tra xem tên file ảnh có chứa nhãn dự đoán hay không Đây là một mẹo kiểm tra hữu ích khi bạn đặt tên ảnh test theo đúng nhãn thật, giúp bạn dễ dàng đối chiếu kết quả dự đoán với nhãn thật và xác nhận độ chính xác của mô hình Việc này hỗ trợ tối ưu hóa quy trình gán nhãn và đánh giá chất lượng dữ liệu trong pipeline xử lý ảnh.

 Gắn nhãn dự đoán, phần trăm chính xác và trạng thái correct/incorrect lên ảnh đầu ra.

 Hiển thị ảnh kết quả bằng cv2.imshow.

Một số thư viện đã dùng

TensorFlow là nền tảng học máy mã nguồn mở được thiết kế bởi đội ngũ Google Brain và tổ chức nghiên cứu trí tuệ máy của Google nhằm triển khai các ứng dụng học máy và học sâu một cách dễ dàng Đây là sự kết hợp giữa đại số tính toán và các kỹ thuật tối ưu hóa để đơn giản hóa việc tính toán các biểu thức toán học TensorFlow có một hệ sinh thái toàn diện và linh hoạt, bao gồm các công cụ, thư viện và tài nguyên cộng đồng hỗ trợ các nhà nghiên cứu xây dựng và triển khai các ứng dụng học máy trên nhiều nền tảng Đây cũng là một trong những thư viện máy học lâu đời nhất.

Trang chủ của TF tại địa chỉ sau: https://www.tensorflow.org/

Trang mã nguồn Github của TF nằm tại: https://github.com/tensorflow/tensorflow

Sklearn là thư viện học máy mã nguồn mở mạnh mẽ cho Python, cung cấp một loạt công cụ cho học máy và mô hình thống kê, từ phân loại và hồi quy đến phân cụm và giảm chiều dữ liệu với giao diện nhất quán Dự án bắt đầu vào năm 2007 do David Cournapeau tham gia Google Summer of Code và hiện được duy trì bởi một đội ngũ tình nguyện viên Thư viện này phần lớn được viết bằng Python và xây dựng dựa trên NumPy, SciPy và Matplotlib, giúp người dùng triển khai các mô hình và phân tích dữ liệu một cách hiệu quả.

Trang chủ của Sklearn tại địa chỉ sau: https://scikit-learn.org/.

Trang Github chứa mã nguồn Sklearn nằm tại: https://github.com/scikit-learn/scikit- learn.

Một số sản phẩm thương mại sử dụng Sklearn như Spotify, Evernote,Booking.com, J.P.Morgan, Hugging Face, Télécom ParisTech, Aweber,

Keras là một thư viện học sâu mã nguồn mở dành cho Python, được Francois Chollet, một nhà nghiên cứu trí tuệ nhân tạo của Google, phát triển Keras có thể chạy trên các thư viện mã nguồn mở như TensorFlow, Theano, R hay Cognitive Toolkit (CNTK) Mục tiêu thiết kế của Keras là cho phép thử nghiệm các mạng học sâu nhanh chóng Các tổ chức hàng đầu như Google, Square, Netflix, Huawei và Uber hiện đang sử dụng Keras.

Trang chủ của Keras tại địa chỉ sau: https://keras.io/

Trang Github chứa mã nguồn của Keras nằm tại: https://github.com/keras-team/keras

NumPy (Numeric Python) là một thư viện toán học phổ biến và mạnh mẽ cho Python, cho phép làm việc hiệu quả với ma trận và mảng Dữ liệu ma trận và mảng lớn được xử lý nhanh hơn nhiều so với thuần Python nhờ tối ưu ở cấp độ core và các kỹ thuật vector hóa NumPy đóng vai trò là nền tảng cho các ứng dụng khoa học dữ liệu và phân tích số liệu nhờ khả năng xử lý mảng lớn nhanh và tiết kiệm tài nguyên Bạn có thể truy cập trang chủ của NumPy tại https://www.numpy.org để tìm tài liệu hướng dẫn, API và ví dụ sử dụng.

Pandas là một thư viện Python nổi tiếng cho xử lý dữ liệu với các cấu trúc dữ liệu nhanh, mạnh mẽ và linh hoạt, mang lại sự tiện ích cho phân tích dữ liệu Tên của thư viện bắt nguồn từ khái niệm panel data (bảng dữ liệu), phản ánh khả năng làm việc với dữ liệu có cấu trúc và dữ liệu chuỗi thời gian Pandas được thiết kế để làm việc dễ dàng và trực quan với dữ liệu có cấu trúc ở dạng bảng, đa chiều và có tiềm năng không đồng nhất, giúp người dùng xử lý và phân tích dữ liệu một cách hiệu quả.

Trang chủ của Sklearn tại địa chỉ sau: https://www.pandas.pydata.org

CHƯƠNG 4 : CODE VÀ CHẠY CHƯƠNG TRÌNH

Bước 1 : Cài thư viện trong máy ở trong file requirements.txt

Hình 4.1 Cài thư viện trong máy ở trong file requirements.txt (1)

Hình 4.2 Cài thư viện trong máy ở trong file requirements.txt (2)

Bước 2 : Chạy mô hình trong file train.py

Hình 4.3 Chạy mô hình trong file train.py (1)

Hình 4.4 Chạy mô hình trong file train.py (2)

Hình 4.5 Chạy mô hình trong file train.py (3)

Bước 3 : Sau khi cài xong thư viện và chạy mô hình ta sẽ thực hiện nhận diện qua lệnh sau :

Qua quá trình thực hiện đề tài, nhóm đã xây dựng thành công một mô hình mạng nơron tích chập (CNN) có khả năng nhận diện và phân loại đối tượng trong ảnh hoạt hình với độ chính xác tương đối cao Việc áp dụng CNN cho trích xuất đặc trưng và phân biệt các nhân vật cho thấy hiệu quả rõ rệt ngay cả khi hình ảnh bị cách điệu, biến dạng hoặc thiếu chi tiết Mô hình được huấn luyện trên một tập dữ liệu ảnh hoạt hình đa dạng và đạt kết quả tốt trong quá trình kiểm thử, cho thấy tiềm năng ứng dụng trong các hệ thống phân loại ảnh, trò chơi hoặc trợ lý ảo dùng nhân vật hoạt hình Tuy nhiên, nhóm vẫn nhận thấy một số hạn chế như số lượng dữ liệu huấn luyện còn chưa đủ lớn, mô hình chưa tối ưu về hiệu năng và khả năng khái quát hóa còn chưa cao khi gặp nhân vật mới.

Trong tương lai, nhóm sẽ tiếp tục nâng cấp mô hình bằng cách mở rộng tập dữ liệu, thử nghiệm các kiến trúc mạng tiên tiến như ResNet và tối ưu hóa tốc độ xử lý để đáp ứng các ứng dụng thực tế Đề tài hướng tới việc làm rõ cách hoạt động của mạng CNN, đồng thời rèn luyện kỹ năng xử lý dữ liệu, đánh giá hiệu suất mô hình và tiếp cận sâu hơn với các ứng dụng trí tuệ nhân tạo trong lĩnh vực thị giác máy tính.

Ngày đăng: 10/10/2025, 15:05

HÌNH ẢNH LIÊN QUAN

Hình 2.1 Lớp tích chập - Convolution Layer(1) - Nhận diện phân loại Đối tượng dùng mạng nơron tích chập (cnn nhận diện Ảnh hoạt hình pokemon)
Hình 2.1 Lớp tích chập - Convolution Layer(1) (Trang 12)
Hình 2.3 Lớp tích chập - Convolution Layer(3) - Nhận diện phân loại Đối tượng dùng mạng nơron tích chập (cnn nhận diện Ảnh hoạt hình pokemon)
Hình 2.3 Lớp tích chập - Convolution Layer(3) (Trang 13)
Hình 2.5 Lớp Relu - Nhận diện phân loại Đối tượng dùng mạng nơron tích chập (cnn nhận diện Ảnh hoạt hình pokemon)
Hình 2.5 Lớp Relu (Trang 14)
Hình 2.6 Lớp Pooling - Nhận diện phân loại Đối tượng dùng mạng nơron tích chập (cnn nhận diện Ảnh hoạt hình pokemon)
Hình 2.6 Lớp Pooling (Trang 17)
Hình 2.7 Cấu trúc của mạng CNN - Nhận diện phân loại Đối tượng dùng mạng nơron tích chập (cnn nhận diện Ảnh hoạt hình pokemon)
Hình 2.7 Cấu trúc của mạng CNN (Trang 21)
Hình 3.18 Đánh giá và kiểm tra mô hình (1) - Nhận diện phân loại Đối tượng dùng mạng nơron tích chập (cnn nhận diện Ảnh hoạt hình pokemon)
Hình 3.18 Đánh giá và kiểm tra mô hình (1) (Trang 29)
Hình 3.20 TensorFlow (1) - Nhận diện phân loại Đối tượng dùng mạng nơron tích chập (cnn nhận diện Ảnh hoạt hình pokemon)
Hình 3.20 TensorFlow (1) (Trang 30)
Hình 3.24 Keras - Nhận diện phân loại Đối tượng dùng mạng nơron tích chập (cnn nhận diện Ảnh hoạt hình pokemon)
Hình 3.24 Keras (Trang 32)
Hình 3.23 Scikit-learn (2) - Nhận diện phân loại Đối tượng dùng mạng nơron tích chập (cnn nhận diện Ảnh hoạt hình pokemon)
Hình 3.23 Scikit-learn (2) (Trang 32)
Hình 4.2 Cài thư viện trong máy ở trong file requirements.txt (2) - Nhận diện phân loại Đối tượng dùng mạng nơron tích chập (cnn nhận diện Ảnh hoạt hình pokemon)
Hình 4.2 Cài thư viện trong máy ở trong file requirements.txt (2) (Trang 35)
Hình 4.6 Trường hợp test (1) - Nhận diện phân loại Đối tượng dùng mạng nơron tích chập (cnn nhận diện Ảnh hoạt hình pokemon)
Hình 4.6 Trường hợp test (1) (Trang 36)
Hình 4.4 Chạy mô hình trong file train.py (2) - Nhận diện phân loại Đối tượng dùng mạng nơron tích chập (cnn nhận diện Ảnh hoạt hình pokemon)
Hình 4.4 Chạy mô hình trong file train.py (2) (Trang 36)
Hình 4.7 Trường hợp test (2) - Nhận diện phân loại Đối tượng dùng mạng nơron tích chập (cnn nhận diện Ảnh hoạt hình pokemon)
Hình 4.7 Trường hợp test (2) (Trang 37)
Hình 4.8 Trường hợp test (4) - Nhận diện phân loại Đối tượng dùng mạng nơron tích chập (cnn nhận diện Ảnh hoạt hình pokemon)
Hình 4.8 Trường hợp test (4) (Trang 38)
Hình 4.9 Trường hợp test (5) - Nhận diện phân loại Đối tượng dùng mạng nơron tích chập (cnn nhận diện Ảnh hoạt hình pokemon)
Hình 4.9 Trường hợp test (5) (Trang 38)

🧩 Sản phẩm bạn có thể quan tâm