Luận văn thạc sĩ: Phân loại độ tuổi người qua ảnh dùng mạng nơ ron tích chập

Luận văn khám phá phân loại độ tuổi chính xác từ ảnh mặt người dùng mạng CNN. Nghiên cứu sâu về ứng dụng trí tuệ nhân tạo trong nhận diện tuổi.

Chuyên ngành

Khoa Học Máy Tính

Người đăng

Ẩn danh

Thể loại

Luận Văn Thạc Sĩ

2020

75
2
0

Phí lưu trữ

30 Point

Tóm tắt

I. Toàn cảnh luận văn Phân loại độ tuổi bằng mạng nơ ron

Luận văn thạc sĩ kỹ thuật này tập trung vào một chủ đề quan trọng trong lĩnh vực thị giác máy tính: nghiên cứu phân loại độ tuổi của người bằng ảnh mặt người sử dụng mạng nơ ron tích chập. Với sự phát triển vượt bậc của phần cứng và khả năng tính toán song song, trí tuệ nhân tạo AIhọc sâu ứng dụng đã mở ra những hướng đi mới. Trong đó, mạng CNN (Convolutional Neural Network) nổi lên như một công cụ mạnh mẽ, cho phép máy tính có khả năng "nhìn" và phân tích hình ảnh một cách hiệu quả. Bài toán nhận dạng tuổi qua khuôn mặt không chỉ là một thách thức học thuật mà còn có giá trị thực tiễn to lớn. Việc xác định tuổi tác và giới tính từ ảnh khuôn mặt đóng vai trò cơ bản trong các tương tác xã hội và nhiều ứng dụng thương mại. Ví dụ, trong ngành bán lẻ, việc theo dõi hành vi khách hàng theo độ tuổi giúp tối ưu hóa chiến lược tiếp thị. Trong lĩnh vực an ninh, nó hỗ trợ kiểm soát truy cập và thực thi pháp luật. Luận văn này đề xuất xây dựng một mô hình kiến trúc mạng nơ ron tích chập để phân lớp dữ liệu hình ảnh, từ đó dự đoán độ tuổi của một người. Nghiên cứu này không chỉ so sánh giữa các phương pháp machine learning truyền thống và học sâu mà còn đi sâu vào việc xây dựng, huấn luyện và đánh giá một mô hình cụ thể, đóng góp vào kho tàng báo cáo khoa học AI và các đồ án tốt nghiệp nhận dạng tuổi.

1.1. Tầm quan trọng của ước tính độ tuổi bằng deep learning

Việc ước tính độ tuổi bằng deep learning đã trở thành một nhiệm vụ cốt lõi trong các ứng dụng thông minh. Nó không chỉ giới hạn trong tương tác người-máy mà còn mở rộng sang các lĩnh vực như quảng cáo định hướng và thống kê dân số. Phân tích đặc điểm khuôn mặt là một chủ đề được quan tâm từ những năm 90, nhưng chỉ đến khi các kỹ thuật học sâu ra đời, độ chính xác và độ tin cậy của các hệ thống này mới thực sự đáp ứng được nhu cầu thực tế. Một hệ thống có khả năng tự động nhận dạng tuổi chính xác giúp doanh nghiệp hiểu rõ hơn về đối tượng khách hàng, cá nhân hóa trải nghiệm và tăng cường an ninh. Theo nghiên cứu của GilLevi và Tal Hassner (2015), các mô hình Deep Neural Network đầu tiên đã cho thấy kết quả vượt trội so với các phương pháp truyền thống như SVM hay GMM.

1.2. Hướng tiếp cận của luận văn Mạng CNN và xử lý ảnh

Luận văn xác định hướng tiếp cận chính là sử dụng phương pháp học sâu, cụ thể là mạng nơ ron tích chập (CNN). Khác với các phương pháp học máy truyền thống yêu cầu bước trích xuất đặc trưng khuôn mặt thủ công, CNN có khả năng tự động học các đặc trưng từ dữ liệu thô. Quá trình này giúp mô hình khám phá ra những đặc điểm phức tạp và tinh vi liên quan đến quá trình lão hóa mà con người khó có thể định nghĩa bằng các quy tắc. Nền tảng của phương pháp này là các kỹ thuật xử lý ảnh kỹ thuật số tiên tiến, kết hợp với các thư viện mã nguồn mở mạnh mẽ như OpenCV, TensorFlow, và Keras để xây dựng và huấn luyện mô hình CNN một cách hiệu quả. Hướng đi này hứa hẹn mang lại độ chính xác cao và khả năng ứng dụng rộng rãi.

II. Khám phá thách thức khi nhận dạng tuổi qua ảnh mặt người

Mặc dù con người có thể dễ dàng ước tính độ tuổi của người khác, đây lại là một bài toán phức tạp đối với máy tính. Luận văn đã chỉ ra nhiều khó khăn và thách thức cốt lõi trong quá trình nhận dạng tuổi qua khuôn mặt. Thách thức lớn nhất đến từ chất lượng và sự đa dạng của dữ liệu. Hình ảnh khuôn mặt có thể được thu thập từ nhiều nguồn khác nhau, dẫn đến sự không đồng nhất về điều kiện ánh sáng (thiếu sáng, chói), góc nhìn, biểu cảm, và sự che khuất (đeo kính, râu, tóc). Những yếu tố này ảnh hưởng trực tiếp đến chất lượng của quá trình trích xuất đặc trưng khuôn mặt và làm giảm hiệu suất của mô hình. Một vấn đề khác là sự biến dạng và thay đổi tỷ lệ của đối tượng trong ảnh. Khuôn mặt có thể chỉ chiếm một phần nhỏ của bức ảnh hoặc ở những tư thế khó nhận dạng. Đặc biệt, vấn đề dữ liệu mất cân bằng (Imbalanced Data) là một trở ngại lớn. Trong thực tế, số lượng ảnh của một số nhóm tuổi nhất định (ví dụ: người già) thường ít hơn các nhóm tuổi khác (ví dụ: thanh niên). Nếu không được xử lý đúng cách, mô hình sẽ có xu hướng dự đoán thiên về các lớp đa số, dẫn đến kết quả phân lớp ảnh thiếu chính xác. Cuối cùng, hiệu năng máy tính cũng là một rào cản, vì các mô hình học sâu ứng dụng thường yêu cầu tài nguyên tính toán lớn để huấn luyện.

2.1. Vấn đề về chất lượng và sự đa dạng của bộ dữ liệu

Chất lượng dữ liệu là yếu tố quyết định thành công của bất kỳ mô hình machine learning nào. Đối với bài toán age estimation using cnn, các hình ảnh bị nhiễu, mờ, độ phân giải thấp, hoặc chụp trong điều kiện ánh sáng không lý tưởng đều là những thách thức lớn. Sự đa dạng về góc nhìn (chính diện, nghiêng), biểu cảm (vui, buồn, ngạc nhiên), và các phụ kiện (kính, mũ) làm cho việc nhận dạng các đặc trưng liên quan đến tuổi tác trở nên khó khăn hơn. Như được đề cập trong tài liệu, các bức ảnh chụp trong thực tế hiếm khi thỏa mãn điều kiện lý tưởng, do đó một mô hình mạnh mẽ cần phải có khả năng khái quát hóa tốt trên nhiều điều kiện khác nhau.

2.2. Khó khăn từ dữ liệu mất cân bằng và hiệu năng tính toán

Dữ liệu mất cân bằng là tình trạng tỷ lệ mẫu giữa các lớp (nhóm tuổi) không đồng đều. Ví dụ, một bộ dữ liệu UTKFace hay IMDB-WIKI có thể chứa nhiều hình ảnh của người trẻ hơn người cao tuổi. Điều này khiến mô hình học tốt hơn trên lớp đa số và kém hiệu quả trên lớp thiểu số. Để giải quyết vấn đề này, các kỹ thuật như tăng cường dữ liệu (data augmentation) hoặc cân bằng trọng số (weight balancing) cần được áp dụng. Bên cạnh đó, việc huấn luyện mô hình CNN với hàng triệu tham số đòi hỏi cấu hình phần cứng mạnh, đặc biệt là GPU, để giảm thời gian tính toán và đạt được hiệu suất tối ưu. Đây là một chi phí không nhỏ đối với nhiều dự án nghiên cứu.

III. Phương pháp tiền xử lý và tăng cường dữ liệu ảnh tối ưu

Để xây dựng một mô hình ước tính độ tuổi bằng deep learning hiệu quả, bước chuẩn bị dữ liệu đóng vai trò nền tảng. Luận văn đã trình bày một quy trình chi tiết, bắt đầu từ việc lựa chọn và phân tích bộ dữ liệu. Nghiên cứu này sử dụng bộ dữ liệu IMFDB (Indian Movies Face Database), một tập dữ liệu lớn với hơn 26.000 hình ảnh được thu thập từ các bộ phim, đảm bảo sự đa dạng về tư thế, biểu cảm và điều kiện ánh sáng. Quá trình tiền xử lý dữ liệu ảnh là một bước không thể thiếu. Đầu tiên, các thuộc tính không liên quan đến bài toán phân loại độ tuổi như biểu cảm, tư thế, trang điểm đã được loại bỏ để mô hình tập trung vào các đặc trưng cốt lõi. Tiếp theo, dữ liệu nhiễu như ảnh quá mờ, quá tối, hoặc khuôn mặt bị che khuất một phần được lọc bỏ thủ công. Một bước quan trọng khác là chuẩn hóa kích thước ảnh. Tất cả hình ảnh trong bộ dữ liệu được điều chỉnh về cùng một kích thước (ví dụ: 128x128 pixel) để đảm bảo tính nhất quán cho đầu vào của mạng CNN. Cuối cùng, kỹ thuật tăng cường dữ liệu (data augmentation) được áp dụng để giải quyết vấn đề dữ liệu hạn chế và mất cân bằng. Các phép biến đổi như xoay, lật, dịch chuyển ảnh được thực hiện để tạo ra các mẫu dữ liệu mới, giúp mô hình khái quát hóa tốt hơn và giảm thiểu hiện tượng overfitting.

3.1. Phân tích và lựa chọn bộ dữ liệu IMFDB Adience UTKFace

Việc lựa chọn bộ dữ liệu phù hợp là rất quan trọng. Luận văn đã chọn bộ dữ liệu IMFDB vì tính đa dạng và nhãn chi tiết về độ tuổi, giới tính, biểu cảm. Ngoài ra, trong lĩnh vực nhận dạng tuổi qua khuôn mặt, còn có các bộ dữ liệu công khai nổi tiếng khác như bộ dữ liệu Adiencebộ dữ liệu UTKFace. Mỗi bộ dữ liệu có những đặc điểm riêng: UTKFace cung cấp một lượng lớn ảnh với nhãn tuổi chính xác, trong khi Adience tập trung vào ảnh chụp trong điều kiện thực tế, không qua chỉnh sửa. Việc hiểu rõ ưu và nhược điểm của từng bộ dữ liệu giúp nhà nghiên cứu lựa chọn nguồn tài nguyên phù hợp nhất cho mục tiêu của mình.

3.2. Quy trình chuẩn hóa và làm sạch dữ liệu ảnh với OpenCV

Quy trình tiền xử lý dữ liệu ảnh được thực hiện một cách bài bản. Thư viện OpenCV được sử dụng để thực hiện các tác vụ như đọc, thay đổi kích thước và chuyển đổi không gian màu của ảnh. Các ảnh nhiễu, không chứa khuôn mặt rõ ràng hoặc chất lượng quá thấp đã được loại bỏ để đảm bảo tập dữ liệu huấn luyện sạch. Sau đó, tất cả các ảnh được đưa về một kích thước đồng nhất, ví dụ 128x128 pixel. Giá trị pixel của ảnh cũng được chuẩn hóa (normalize) bằng cách chia cho 255, đưa các giá trị về khoảng [0, 1]. Điều này giúp quá trình huấn luyện diễn ra ổn định và nhanh hội tụ hơn.

IV. Hướng dẫn xây dựng mô hình mạng CNN phân loại độ tuổi

Trọng tâm của luận văn là việc xây dựng và huấn luyện mô hình CNN để giải quyết bài toán phân lớp ảnh theo độ tuổi. Mô hình được đề xuất dựa trên kiến trúc LeNet nhưng được tùy chỉnh để phù hợp với độ phức tạp của dữ liệu. Cấu trúc này bao gồm nhiều lớp tích chập (Convolutional Layer) xen kẽ với các lớp gộp (Pooling Layer) để thực hiện trích xuất đặc trưng khuôn mặt ở nhiều cấp độ khác nhau. Các lớp tích chập đầu tiên học các đặc trưng đơn giản như cạnh, góc, trong khi các lớp sâu hơn học các đặc trưng phức tạp hơn như mắt, mũi, và các nếp nhăn. Sau khối trích xuất đặc trưng, dữ liệu được làm phẳng (Flatten) và đưa vào các lớp kết nối đầy đủ (Fully Connected Layer) để thực hiện phân loại. Lớp đầu ra sử dụng hàm kích hoạt Softmax để tính toán xác suất thuộc về mỗi nhóm tuổi (ví dụ: 'Trẻ', 'Trung niên', 'Già'). Việc lựa chọn các thành phần của mô hình như thuật toán tối ưu (Optimizer) và hàm mất mát (loss function) là cực kỳ quan trọng. Luận văn sử dụng thuật toán Adam, một phương pháp tối ưu hiệu quả và phổ biến trong học sâu ứng dụng. Hàm lỗi Cross-Entropy được chọn để đo lường sự khác biệt giữa xác suất dự đoán và nhãn thực tế, từ đó điều hướng quá trình học của mô hình. Các kỹ thuật như Dropout cũng được áp dụng để chống lại hiện tượng overfitting, giúp mô hình hoạt động tốt trên cả dữ liệu chưa từng thấy.

4.1. Kiến trúc mạng CNN đề xuất VGG16 ResNet và mô hình tùy chỉnh

Mô hình đề xuất trong luận văn bao gồm 3 lớp tích chập với số lượng bộ lọc tăng dần (25, 50, 75) và kích thước kernel là 3x3, theo sau bởi các lớp Max Pooling. Kiến trúc này là một mô hình tùy chỉnh, đơn giản nhưng hiệu quả. Trong thực tế, các nhà nghiên cứu cũng thường sử dụng các kiến trúc có sẵn mạnh mẽ hơn như kiến trúc VGG16 hay kiến trúc ResNet thông qua kỹ thuật học chuyển giao (transfer learning). Những mô hình này đã được huấn luyện trước trên các bộ dữ liệu khổng lồ như ImageNet, giúp chúng học được các đặc trưng hình ảnh tổng quát và có thể tinh chỉnh lại cho bài toán cụ thể như nhận dạng tuổi qua khuôn mặt.

4.2. Huấn luyện mô hình với TensorFlow Keras và PyTorch

Quá trình huấn luyện mô hình CNN được thực hiện bằng cách sử dụng các framework học sâu hiện đại. TensorFlow, Keras, và PyTorch là những lựa chọn hàng đầu, cung cấp các API cấp cao giúp đơn giản hóa việc xây dựng, huấn luyện và triển khai mô hình. Trong luận văn, mô hình được định nghĩa, biên dịch (compile) với thuật toán tối ưu Adam và hàm lỗi Cross-Entropy. Sau đó, mô hình được huấn luyện trên tập dữ liệu huấn luyện qua nhiều epoch, và hiệu suất được theo dõi trên tập dữ liệu kiểm tra (validation set) để phát hiện sớm hiện tượng overfitting và tìm ra phiên bản mô hình tốt nhất.

V. Cách cài đặt và đánh giá hiệu quả mô hình CNN thực tế

Chương cuối cùng của luận văn tập trung vào việc cài đặt môi trường, thử nghiệm và đánh giá hiệu quả của mô hình phân loại độ tuổi bằng ảnh mặt người đã được xây dựng. Môi trường thực nghiệm được thiết lập trên một máy tính có cấu hình phù hợp, sử dụng các thư viện Python phổ biến như TensorFlow, Keras, OpenCV và Scikit-learn. Sau khi quá trình huấn luyện mô hình CNN hoàn tất, mô hình tốt nhất (thường là mô hình có độ lỗi thấp nhất trên tập kiểm tra) được lưu lại và sử dụng để đánh giá trên tập dữ liệu kiểm chứng (test set) – một tập dữ liệu hoàn toàn độc lập mà mô hình chưa từng thấy trước đây. Việc đánh giá này đảm bảo tính khách quan về hiệu suất của mô hình. Các phương pháp đánh giá hiệu quả được sử dụng rất đa dạng. Độ chính xác (Accuracy) là một chỉ số phổ biến, nhưng đối với bài toán có dữ liệu mất cân bằng, các chỉ số khác như Precision, Recall, F1-score và ma trận nhầm lẫn (Confusion Matrix) cung cấp một cái nhìn toàn diện hơn. Đối với bài toán ước tính tuổi, độ lỗi tuyệt đối trung bình (MAE) là một thước đo quan trọng, cho biết sai số trung bình giữa tuổi dự đoán và tuổi thật. Kết quả thực nghiệm được trình bày chi tiết qua các bảng và biểu đồ, so sánh hiệu quả của mô hình trên từng nhóm tuổi và phân tích các trường hợp dự đoán sai để tìm ra điểm yếu và hướng cải thiện trong tương lai.

5.1. Phân tích kết quả qua ma trận nhầm lẫn và độ chính xác

Ma trận nhầm lẫn (Confusion Matrix) là một công cụ trực quan để đánh giá hiệu suất của mô hình phân lớp ảnh. Nó cho thấy số lượng các dự đoán đúng và sai cho từng lớp cụ thể. Dựa vào ma trận này, có thể tính toán các chỉ số như độ chính xác, độ phủ, và điểm F1. Phân tích ma trận nhầm lẫn giúp xác định các cặp lớp mà mô hình thường bị nhầm lẫn, ví dụ như giữa nhóm tuổi 'Trung niên' và 'Già', từ đó có những chiến lược cải tiến phù hợp. Kết quả trong luận văn cho thấy mô hình đạt được độ chính xác khả quan, chứng tỏ tiềm năng của phương pháp age estimation using cnn.

5.2. Đo lường sai số dự đoán bằng độ lỗi tuyệt đối trung bình MAE

Trong các bài toán hồi quy hoặc ước tính giá trị liên tục, độ lỗi tuyệt đối trung bình (MAE - Mean Absolute Error) là một thước đo hiệu quả. Mặc dù bài toán này được tiếp cận như một bài toán phân loại (phân nhóm tuổi), MAE vẫn có thể được áp dụng để đánh giá sai số trung bình. Bằng cách gán một giá trị tuổi đại diện cho mỗi nhóm (ví dụ: 'Trẻ' = 20, 'Trung niên' = 40), có thể tính toán sự chênh lệch tuyệt đối giữa tuổi dự đoán và tuổi thực tế. MAE càng thấp cho thấy mô hình dự đoán càng gần với giá trị thật, phản ánh chính xác hơn hiệu suất thực tế của hệ thống ước tính độ tuổi bằng deep learning.

05/10/2025

Trích đoạn nội dung tài liệu

chương I, luận văn đã trình bày tổng quan về bài toán phân loại độ tuổi qua ảnh mặt người, những ứng dụng của bài toán trong thực tế và hướng tiếp cận giải quyết bài toán dựa trên phương pháp học sâu sử dụng mạng nơ ron tích chập CNN. 10 CHƯƠNG 2: PHÂN LOẠI ĐỘ TUỔI CỦA NGƯỜI BẰNG HÌNH ẢNH SỬ DỤNG MẠNG NƠ RON TÍCH CHẬP 2. Giới thiệu về mạng nơ ron tích chập CNN là một trong những mô hình DL tiên tiến giúp cho chúng ta xây dựng được những hệ thống thông minh với độ chính xác cao như hiện nay. CNN được lấy cảm hứng từ vỏ não thị giác của con người, mỗi khi chúng ta nhìn thấy một vật nào đó, một loại các lớp tế bào thần kinh được kích hoạt, và mỗi lớp sẽ phát hiện ra một đặc trưng của đồ vật đó (hình dạng, kích thước, màu sắc,…).

Lớp thần kinh mà nhận dạng được càng nhiều đặc điểm của đồ vật thì việc nhận dạng hoặc phân loại đồ vật đó đối với con người sẽ trở nên dễ dàng hơn [10]. Ý tưởng đằng sau của mạng nơ ron tích chập là nó thực hiện quá trình trích lọc hình ảnh trước khi đưa vào quá trình huấn luyện, sau quá trình trích lọc thì chúng ta sẽ nhận được các đặc trưng trong hình ảnh đó, và từ các đặc trưng đó chúng ta có thể phát hiện ra những gì mình muốn trong hình ảnh đó. So với các thuật toán phân loại hình ảnh khác, mạng nơ ron tích chập sử dụng quá trình tiền xử lý tối thiểu, nghĩa là mạng học các bộ lọc thường được thiết kế bằng tay trong các hệ thống khác. Bởi vì CNN hoạt động với sự độc lập như vậy khỏi nỗ lực của con người, chúng mang lại nhiều lợi thế hơn các thuật toán khác.

Mục đích của CNN là giảm hình ảnh thành một hình thức dễ xử lý hơn và không mất đi các chi tiết hoặc tính năng quan trọng để hỗ trợ trong việc đưa ra các dự đoán. Điều này rất quan trọng khi chúng ta thiết kế mô hình không chỉ giỏi về các tính năng học tập mà còn xử lý được bộ dữ liệu lớn. Trước khi tìm hiểu về kiến trúc, mô hình của mạng nơ ron tích chập CNN em sẽ trình bày những khái niệm thường được sử dụng khi làm việc với mạng nơ ron CNN. Nhờ vào nguyên lý biến đổi thông tin, các nhà khoa học đã áp dụng kĩ thuật này vào xử lý ảnh và video số.

Để dễ hình dung, ta có thể xem tích chập nhƣ một cửa sổ trượt (sliding window) áp đặt lên một ma trận. Bạn có thể theo dõi cơ chế của tích chập qua hình minh họa bên dưới.1 Minh học phép toán tích chập [10] Ma trận bên trái là một bức ảnh đen trắng. Mỗi giá trị của ma trận tương đương với một điểm ảnh (pixel), 0 là màu đen, 1 là màu trắng (nếu là ảnh grayscale thì giá trị biến thiên từ 0 đến 255). Sliding window còn có tên gọi là kernel, filter hay feature detector.

Ở đây, ta dùng một ma trận filter 3×3 nhân từng thành phần tương ứng (element-wise) với ma trận ảnh bên trái. Gía trị đầu ra do tích của các thành phần này cộng lại. Kết quả của tích chập là một ma trận (convoled feature) sinh ra từ việc trượt ma trận filter và thực hiện tích chập cùng lúc lên toàn bộ ma trận ảnh bên trái. Dưới đây là một vài ví dụ của phép toán tích chập.

Ta có thể làm mờ bức ảnh ban đầu bằng cách lấy giá trị trung bình của các điểm ảnh xung quanh cho vị trí điểm ảnh trung tâm.2 Minh họa phép tích chập với bộ lọc [14] Ngoài ra, ta có thể phát hiện biên cạnh bằng cách tính vi phân (độ dị biệt) giữa các điểm ảnh lân cận.3 Minh họa phép tích chập với bộ lọc cạnh [14] b. Lớp tích chập (Convolutional Layers) Lớp tích chập được dung để phát hiện và trích xuất đặc trưng – chi tiết của ảnh. Giống như các lớp ẩn khác, lớp tích chập lấy dữ liệu đầu vào, thực hiện các phép chuyển đổi để tạo ra dữ liệu đầu vào cho lớp kế tiếp (đầu ra của lớp này là đầu vào của lớp sau). Phép biến đổi được sử dụng là phép tính tích chập.

Mỗi lớp tích chập 13 chứa một hoặc nhiều bộ lọc - bộ phát hiện đặc trưng (filter - feature detector) cho phép phát hiện và trích xuất những đặc trưng khác nhau của ảnh. Đặc trưng ảnh là những chi tiết xuất hiện trong ảnh, từ đơn giản như cạnh, hình khối, hình tam giác, chữ viết tới phức tạp như mắt, mặt, chó, mèo, bàn, ghế, xe, đèn giao thông. Bộ lọc phát hiện đặc trưng của ảnh là bộ lọc giúp phát hiện và trích xuất các đặc trưng của ảnh, có thể là bộ lọc góc, cạnh, đường chéo, hình tròn, hình vuông, v. Bộ lọc (Kernel/Filter) Độ phức tạp của đặc trưng được phát hiện bởi bộ lọc tỉ lệ thuận với độ sâu của lớp tích chập mà nó thuộc về.

Nghĩa là bộ lọc ở lớp tích chập càng sâu thì phát hiện các đặc trưng càng phức tạp. Trong mạng CNN, những lớp tích chập đầu tiên sử dụng bộ lọc hình học (geometric filters) để phát hiện những đặc trưng đơn giản như cạnh ngang, dọc, chéo của bức ảnh. Những lớp tích chập sau đó được dùng để phát hiện đối tượng nhỏ, bán hoàn chỉnh như mắt, mũi, tóc, v. Những lớp tích chập sâu nhất dùng để phát hiện đối tượng hoàn hỉnh như: chó, mèo, chim, ô tô, đèn giao thông, v.

Mục đích của việc tích chập (Convolutional) là để lấy ra được các hình dạng (pattern) trong hình ảnh bằng cách sử dụng các bộ lọc (Filter/Kernel) [2]. Kernel có thể được coi là tham số của mô hình CNN và được sử dụng để tính toán tích chập (convolve) trên ảnh. Chúng ta có thể thấy thao tác tích chập được mô tả trong hình dưới (Hình 2.4 Bộ lọc W (kernel) [10] Ta định nghĩa kernel là một ma trận vuông kích thước k*k trong đó k là số lẻ. k có thể bằng 1, 3, 5, 7, 9,… Ví dụ kernel kích thước 3*3 Kí hiệu phép tính tích chập (⊗), kí hiệu Y = X ⊗ W, Y = X ⊗W.

Với mỗi phần tử x{ij}xij trong ma trận X lấy ra một ma trận có kích thước bằng kích thước của bộ lọc W có phần tử x{ij} xij làm trung tâm (đây là vì sao kích thước của kernel thường lẻ) gọi là ma trận A. Sau đó tính tổng các phần tử của phép tính element-wise của ma trận A và ma trận W, rồi viết vào ma trận kết quả Y. Tức mỗi phần của image sẽ được nhân tích chập với kernel để tạo thành một ma trận mới - làm đầu vào cho lớp tiếp theo. Một kernel có hai tham số cần quan tâm đến đó là stride và size.

Size là kích thước của một kernel (có thể là kích thước của một hình chữ nhật bất kì) và stride là số bước nhảy của kernel. Nếu stride bằng 1 thì gần như toàn bộ pixel trên ảnh sẽ được trượt qua và tính tích chập. Nếu stride bằng 2 chúng ta cứ cách 2 pixel lại tính tích chập một lần và như vậy số lượng pixel của ảnh đầu ra bị giảm đi một nửa so với stride = 1. Để hiểu cách thức hoạt động của lớp tích chập cũng như phép tính tích chập, hãy cùng xem ví dụ về bộ lọc phát hiện cạnh (edge filters/ detectors) dưới đây.

15 Ví dụ về bộ lọc cạnh Trong ví dụ này, CNN được sử dụng để phân loại tập các ảnh viết tay của các số từ 00 tới 99. Đầu vào là những bức ảnh trắng đen (Gray Scale) và được biểu diễn bởi một ma trận các điểm ảnh với kích thước cố định h × wh × w. Lớp tích chập đầu tiên của CNN sử dụng 44 bộ lọc kích thước 3×33×3: F1F1, F2F2, F3F3, F4F4 với giá trị tương ứng như trong hình 1. Các giá trị tại mỗi ô của các bộ lọc có thể được biểu diễn bởi màu sắc tương ứng với Đen (−1−1), Xám (00), Trắng (11) như trong hình dưới đây.5 Các Bộ lọc cạnh với kích thước 3 x 3 [10] Để minh hoạ cho phép nhân chập, chúng ta sử dụng đầu vào là một bức ảnh viết tay của số 77, biểu diễn dưới dạng ma trận 30×2230×22 và áp dụng riêng biệt từng bộ lọc ở trên.

Phép nhân tích chập được thực hiện bằng cách trượt ma trận lọc 3×33×3 trên ma trận ảnh đầu vào 32×2232×22 (bộ lọc dịch sang phải/ xuống dưới 11 cột/ hàng mỗi một lần trượt) cho đến khi nó đi qua hết tất cả các vùng kích thước 3×33×3. Việc trượt ma trận lọc trên ma trận đầu vào được gọi là “chập” (convoling). Như minh hoạ trong hình 2, ma trận F1F1 được chập với từng vùng (block - region) điểm ảnh kích thước 3×33×3 của ảnh đầu vào. Tại mỗi vị trí di chuyển của ma trận F1F1, giá trị đầu ra được tính bằng tích chập (dot-product) của ma trận F1F1 với vùng bao phủ tương ứng.

Minh họa phép nhân chập với bộ lọc cạnh Ô đầu tiên (0, 0) (0, 0) của ma trận đầu ra (giá trị 0.01) ra là kết quả của phép nhân chập giữa ma trận F1F1 với góc trái trên cùng của ma trận đầu vào và được tính như sau: 17 Hình 2. Kết quả của phép tích chập với bộ lọc cạnh [10] Từ các ma trận đầu ra kích thước 28×2028×20, chúng ta thấy được cả bốn bộ lọc F1F1, F2F2, F3F3 và F4F4 dều được sử dụng để phát hiện cạnh trong bức ảnh (thể hiện bởi những điểm ảnh sáng hơn) (Hình 2.8): F1: Phát hiện cạnh đứng phải. F2: Phát hiện cạnh đứng trái. F3: Phát hiện cạnh ngang dưới.

F4: Phát hiện cạnh ngang trên. Ví dụ về bộ lọc cạnh Trong bước thực hiện tích chập của màng còn có thêm hai thuộc tính đấy là stride và padding. Stride là khoảng cách giữa 2 kernel khi thực hiện quét. Với stride = 1, kernel sẽ quét 2 ô ngay cạnh nhau, nhưng với stride = 2, kernel sẽ quét ô số 1 và ô số 3.

Bỏ qua ô ở giữa. Điều này nhằm tránh việc lặp lại giá trị ở các ô đã quét. Chúng ta chọn thông số của stride và của kernel càng lớn thì size của feature map càng nhỏ, một phần lý do đó là bởi kernel phải nằm hoàn toàn trong input. Có một cách để giữ nguyên kích cỡ của feature map so với ban đầu.

Đấy là Padding. Khi ta điều chỉnh padding = 1, là thêm 1 vùng điểm ảnh xung quanh viền của hình ảnh đầu vào (Hình 2.9), muốn phần viền xung quanh càng dày thì ta cần phải tăng giá trị padding lên.9 Phép tích chập với giá trị padding bằng 1 [11] d.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ