Chương 1 GIỚI THIỆU: giới thiệu chung về đề tài, mục tiêu nghiên cứu, giới hạn đề tài, phương pháp nghiên cứu, đối tượng và phạm vi nghiên cứu. - Chương 2 CƠ SỞ LÝ THUYẾT: giới thiệu tổng quan về mạng nơ-ron tích chập, kiến trúc mạng nơ-ron tích chập. Lý thuyết về kiến trúc mạng VGG16 và quá trình thu thập ảnh để làm bộ cơ sở dữ liệu. - Chương 3 THIẾT KẾ MÔ HÌNH PHÂN LOẠI ĐỘ TUỔI VÀ GIỚI TÍNH: trình bày chi tiết cách sắp xếp, phân chia số lượng hình ảnh trong tập dữ liệu.
Đưa ra tổng quan quá trình xử lý của mô hình, các khối trong mô hình. Phân tích kiến trúc mạng được dùng để huấn luyện. - Chương 4 KẾT QUẢ: chương này trình bày kết quả sau khi huấn luyện mô hình và kết quả nhận dạng độ tuổi và giới tính dựa trên khuôn mặt trong điều kiện thực tế. - Chương 5 KẾT LUẬN VÀ PHƯƠNG HƯỚNG PHÁT TRIỂN: rút ra các kết luận về kết quả sau khi huấn luyện mô hình cũng như kết quả thực nghiệm.
Đề ra hướng phát triển cho đề tài. 3 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2. GIỚI THIỆU MẠNG NƠ-RON TÍCH CHẬP 2. Tổng quan về mạng nơ-ron tích chập Thuật ngữ Học sâu (DL) hay cụ thể hơn là mạng nơ-ron sâu (DNN) dùng để chỉ mạng thần kinh nhân tạo (ANN) với nhiều lớp ẩn [6].
Những năm qua, Học sâu đã được biết đến là một trong những phương pháp phổ biến và mạnh mẽ nhất trong việc mô phỏng lại chức năng, cách thức hoạt động phức tạp của não bộ con người. Và mạng nơ-ron tích chập (CNN) là một trong những mạng nơ-ron sâu được biết đến rộng rãi nhất, hay nó có tên gọi khác là ConvNet. Năm 1998, mạng CNN được giới thiệu bởi nhóm Yann LeCun, Bottou, Bengio và Haffner [7] thông qua mô hình nhận dạng chữ số viết tay sử dụng kiến trúc mạng LeNet-5. CNN đã dần trở nên nổi tiếng hơn khi nó được áp dụng vào kiến trúc Alexnet và đạt giải nhất trong cuộc thi ImageNet (ILSVRC).
Tên của mô hình mạng này được đặt dựa trên một phép tính dùng trong mạng, phép tính này ảnh hưởng rất nhiều đến mô hình nhận dạng và tạo ra sự khác biệt to lớn đó là phép tính tích chập. CNN đã có những kết quả đột phá trong thập kỷ qua trong hầu hết các lĩnh vực liên quan đến nhận dạng mẫu, xử lý giọng nói… không chỉ dừng lại ở việc nhận dạng và phân loại hình ảnh mà độ chính xác của CNN còn cao hơn, thậm chí tốt hơn con người trong một số trường hợp [8]. Chẳng hạn như khi được sử dụng trong Thị giác máy tính, xử lý tập cơ sở dữ liệu hình ảnh lớn nhất (ImageNet) [6] kết quả đạt được rất đáng kinh ngạc. Mô hình mạng nơ-ron tích chập ngày càng phát triển và mở rộng, được ứng dụng vào các hệ thống xử lý hình ảnh lớn của Google, Amazon hay Facebook.
với nhiều mục đích sử dụng khác nhau. Ví dụ như chức năng tự động nhận dạng khuôn mặt khi ảnh được đăng tải lên Facebook, hay khi nhập một từ khóa bất kì lên Google thì trong mục Hình ảnh (Image) sẽ hiện lên rất nhiều ảnh liên quan đến từ khóa đó. Bên cạnh đó còn có nhiều ứng dụng khác như FaceID ở các điện thoại thông minh, công nghệ phát hiện ra đối tượng trong hình ảnh rồi làm sắc nét các đặc trưng của chúng sau khi phóng to của Lightroom… 2. Điểm đặc trưng của mạng nơ-ron tích chập CNN được tạo thành bởi các nơ-ron mang trọng số (weight) và sai số hay còn gọi là độ lệch (bias).
Mỗi nơ-ron được nhận một số dữ liệu ở đầu vào, sau đó thực hiện hàng loạt các phép tính nhân chập và chọn một hàm truyền phù hợp để đưa ra dự đoán. Ở mạng nơ-ron nhân tạo truyền thống, liên kết đầy đủ giữa tất cả các nơ-ron 4 với nhau gây ra sự dư thừa do các điểm ảnh về cơ bản chỉ chủ yếu bị ảnh hưởng với nhau hay với những điểm ảnh xung quanh nó mà không phụ thuộc nhiều đến các điểm ảnh nằm cách xa khác. Ngoài ra mạng nơ-ron truyền thống còn bị giới hạn bởi kích thước ảnh, khi ảnh có kích thước càng lớn thì số lượng liên kết càng cao dẫn đến sự bùng nổ về khối lượng tính toán [8]. Mạng nơ-ron tích chập ra đời với kiến trúc được thay đổi, nó chỉ xây dựng các liên kết đến những nơ-ron cần thiết trong một vùng nhỏ và sau khi trích xuất đặc trưng thì dữ liệu sẽ được làm phẳng thành véc-tơ của giá trị xác suất.
Khía cạnh có lợi nhất của nó là giảm số lượng tham số (parameters) trong ANN [6]. Ngoài ra, việc áp dụng kiến trúc mạng CNN cho phép chúng ta xây dựng những mô hình với độ chính xác cao bằng cách sử dụng nhiều lớp xử lý có cấu trúc phức tạp hoá. Từ đó thúc đẩy và phát triển những nghiên cứu tiếp cận tới các mô hình lớn để giải quyết được các nhiệm vụ phức tạp – điều mà ANN cổ điển không có khả năng thực hiện được. Điểm nổi bật của CNN so với các phương pháp khác trong Học máy truyền thống chính là độ lớn của tập dữ liệu dùng để huấn luyện.
Mặc dù, phương pháp truyền thống cũng có thể phân loại và gán nhãn, tuy nhiên vẫn còn giới hạn về kích thước tập dữ liệu. Nhưng CNN đã giải quyết được vấn đề này khi huấn luyện với số lượng dữ liệu rất lớn và còn có thể đạt được độ chính xác cao. Bên cạnh đó, điểm chung của các kiến trúc mạng nơ-ron tích chập là kích thước (chiều rộng, chiều cao) của các lớp giảm dần, song song đó thì độ sâu cũng sẽ tăng dần. Khi kích thước của ma trận giảm thì số lượng tham số cũng sẽ giảm đáng kể trong khi độ chính xác của mô hình không bị giảm nhiều.
Số bộ lọc tăng làm tăng độ sâu giúp mạng CNN học được đa dạng và có thể phân biệt được nhiều chi tiết đặc trưng hơn. CẤU TRÚC MẠNG NƠ-RON TÍCH CHẬP Trong mạng nơ-ron tích chập, dữ liệu ảnh đầu vào sẽ được chuyển thành ma trận pixel (với mỗi pixel có giá trị thay đổi từ 0 đến 255) ứng với kích thước [w x h x d], trong đó w là chiều rộng (width), h là chiều cao (height), d là độ sâu (dimension) hay đơn giản là số kênh màu của ảnh đầu vào. Nếu ảnh là màu xám thì chỉ có một kênh màu, còn đối với ảnh màu sẽ có 3 kênh màu là Red, Green và Blue (RGB). Ý tưởng chung của mô hình mạng CNN là nó thực hiện quá trình trích lọc hình ảnh đầu vào trước khi được đưa vào huấn luyện (training) [9].
Quá trình này bao gồm các lớp ẩn (hidden) dùng để rút trích các đặc trưng có trong ảnh, sau đó tiến hành tính toán thông qua các lớp tích chập (Conv) và lớp Pooling. Giả sử ảnh đầu vào là khuôn mặt của một người thì phần này sẽ nhận diện mắt, mũi, miệng… từ đó có thể phát hiện ra được khuôn mặt trên hình. Phần tiếp theo là phân lớp, ở đây ta dùng một số 5 lớp kết nối đầy đủ để kết nối tất cả nơ-ron lại với nhau và xử lý kết quả của phần tích chập.1 Cấu trúc mạng nơ-ron tích chập [9] Như thể hiện ở Hình 2.1 thì một mô hình CNN cơ bản bao gồm những lớp sau: lớp tích chập (convolution layer), lớp gộp (pooling layer), lớp kết nối đầy đủ (fully connected layer). Tuỳ vào số lượng và cách sắp xếp các lớp sẽ xây dựng được những mô hình khác nhau cũng như phù hợp với đặc điểm của từng bài toán.
Lớp tích chập (Convolution layer) Lớp tích chập hay còn gọi là lớp ẩn (hidden layer) được dùng với mục đích là làm giảm kích thước hình ảnh để dễ xử lý mà vẫn giữ được các đặc trưng của dữ liệu (ảnh) ngõ vào. Trong đó, đặc trưng ảnh chính là những chi tiết như cạnh (ngang, chéo…), hình khối, hình tròn, hay phức tạp hơn như mắt, mũi, miệng, hình dạng khuôn mặt, con vật, xe, đèn giao thông. Chúng ta sẽ dùng các bộ lọc để giữ lại những chi tiết quan trọng của bức ảnh, có nhiều bộ lọc được sử dụng phố biến như bộ lọc đường chéo, cạnh, góc, hình vuông, hình tròn… [9]. Ở các lớp (layers) đầu tiên, phép tích chập chỉ thực hiện công việc đơn giản là tìm biên ảnh, các lớp tiếp theo sẽ có nhiệm vụ trích xuất tiếp các đặc trưng khác có trong ảnh.
Trong số rất nhiều điểm trên ảnh đầu vào nó sẽ lấy ra những điểm nổi bật nhất và tập hợp lại để làm hiện lên đặc trưng của đối tượng trong hình. Lớp tích chập chính là lớp quan trọng nhất và cũng là điểm làm cho CNN trở nên khác biệt hơn so với các mô hình mạng khác. Một ví dụ cho lớp tích chập được biểu diễn ở Hình 2.2 bên dưới, ảnh ngõ vào với kích thước là 6x6x3 (6 hàng, 6 cột và 3 kênh màu) sử dụng bộ lọc 3x3x3 sau đó dùng phép tích chập để tính toán và cho ra một giá trị duy nhất. Ngõ ra của lớp tích chập sau khi được tính toán (ở ví dụ này đầu ra có kích thước 4x4) là một tập mang các giá trị đặc trưng của hình ảnh đầu vào hay còn gọi là features map.2 Ví dụ về phép tích chập với hình ảnh đầu vào (6x6x3) và bộ lọc (3x3x3) [10] Một số thuật ngữ được đề cập trong lớp tích chập bao gồm: Kernel, Filter hay Feature detector đều là tên gọi của các bộ lọc (ma trận lọc).
Đây là một ma trận hệ số có giá trị 0 và 1. Tại mỗi vị trí có filter sẽ thực hiện phép toán tính tổng các tích giữa mỗi phần tử trong filter và phần tử đầu vào tương ứng. Stride (bước trượt): chính là khoảng cách mà bộ lọc di chuyển mỗi lần dịch. Ví dụ chúng ta cho stride = 1 thì sau khi tính toán xong tại một vùng ảnh, bộ lọc sẽ được dịch sang phải 1 pixel, cho đến khi dịch hết một hàng sẽ tiếp tục dịch xuống dưới một đơn vị và lặp lại cho đến khi bộ lọc dịch hết ảnh như Hình 2.3 Ví dụ khi bước trượt (stride) bằng 1 Padding (đệm): là phương pháp thêm giá trị 0 ở ngoài viền của ảnh ngõ vào (thêm cột 0 và hàng 0 vào ma trận input).
Được chia thành 2 loại là: valid và same. Valid chính là không dùng padding, ta sẽ sử dụng bộ lọc trực tiếp lên ngõ vào. Same sẽ thêm padding, làm cho ngõ ra có cùng kích thước với ngõ vào. Để rõ hơn ta xét một ảnh vào có kích thước là 5x5, bộ lọc 3x3, stride = 1.