BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM THÀNH PHỐ HỒ CHÍ MINH

Dương Xuân Huy

PHÂN LỚP ĐỒNG PHỤC SINH VIÊN

DÙNG MÔ HÌNH HỌC SÂU

Chuyên ngành: Khoa học máy tính

Mã số:

8 48 01 01

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH

NGƯỜI HƯỚNG DẪN KHOA HOC:

PGS.TS. LÊ HOÀNG THÁI

Thành phố Hồ Chí Minh - 2019

Lời cam đoan

Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi. Các số liệu,

kết quả nêu trong luận văn là trung thực và chưa từng được ai công bố trong

bất kỳ công trình nào khác.

Tôi xin cam đoan đây là công trình nghiên cứu của bản thân tôi, dưới sự

hướng dẫn khoa học của Thầy PGS.TS. Lê Hoàng Thái (Khoa Công nghệ

Thông tin, Trường Đại học Khoa học Tự nhiên - Đại học Quốc gia Thành phố

Hồ Chí Minh). Các thông tin và số liệu của luận văn có nguồn gốc rõ ràng, cụ

thể, các trích dẫn theo đúng quy định hiện hành.

Tôi xin cam đoan nội dung và kết quả của luận văn này xuất phát từ

công sức và quá trình lao động, nghiên cứu hoàn toàn trung thực, khách quan.

Tp. Hồ Chí Minh, tháng 12 năm 2019

Tác giả

Dương Xuân Huy

Lời cám ơn

Lời đầu tiên, tôi xin gửi lời cám ơn sâu sắc nhất đến thầy PGS.TS. Lê Hoàng

Thái (Khoa Công nghệ Thông tin, Trường Đại học Khoa học Tự nhiên - Đại học

Quốc gia Thành phố Hồ Chí Minh) đã hướng dẫn luận văn cũng như phát triển định

hướng. Tôi cũng xin cám ơn thầy ThS. Trần Sơn Hải (Khoa Công nghệ Thông tin,

Trường Đại học Sư Phạm Thành phố Hồ Chí Minh) đã góp công sức hướng dẫn, hỗ

trợ và các đồng chí trong Ban Chấp hành Đoàn Trường, Ban Chấp hành đoàn các

khoa Giáo dục Tiểu học, Giáo dục Mầm non, Giáo dục Đặc Biệt, Công nghệ Thông

tin của Trường Đại học Sư phạm Thành phố Hồ Chí Minh đã bỏ nhiều thời gian hỗ

trợ trong việc thu thập, kiểm tra và gán nhãn dữ liệu để thực hiện được đề tài trong

luận văn này.

Tôi cũng gửi lời cám ơn chân thành đến quý Thầy/ Cô giảng dạy các môn

ngành Khoa học máy tính khóa K28 đã cung cấp kiến thức quý báu làm nền tảng cơ

bản trong quá trình học tập nghiên cứu. Đồng thời, xin gửi lời cám ơn đến quý

Thầy/Cô Ban Chủ nhiệm khoa Công nghệ Thông tin và quý Thầy/Cô phòng Sau

Đại học Trường Đại học Sư phạm Thành phố Hồ Chí Minh đã hỗ trợ, tạo điều kiện

thuận lợi cho tôi trong suốt thời gian qua.

Trong quá trình thực hiện và tìm hiểu nghiên cứu đề tài, tôi đã gặp rất nhiều

khó khăn và được quý Thầy/Cô hỗ trợ, động viên để tôi hoàn thành tốt Luận văn

này.

Cuối cùng, tôi xin bày tỏ lòng biết ơn đến gia đình, bạn bè đã động viên, hỗ

trợ vật chất lẫn tinh thần trong suốt quá trình học tập cũng như nghiên cứu thực hiện

luận văn này.

Chân thành cám ơn quý vị.

Tác giả

Dương Xuân Huy

MỤC LỤC

Trang

Lời cam đoan

Lời cảm ơn

Mục lục

Danh mục thuật ngữ và viết tắt

Danh mục các bảng biểu

Danh mục hình vẽ

CHƯƠNG 1. TỔNG QUAN .................................................................................... 1

1.1. Khái quát về đồng phục sinh viên ................................................................... 1

1.2. Bài toán phân lớp đồng phục sinh viên ........................................................... 6

1.3. Mục tiêu hướng đến của bài toán .................................................................... 7

1.4. Hướng tiếp cận và giải pháp cho bài toán ....................................................... 7

CHƯƠNG 2. CƠ SỞ LÝ THUYẾT VÀ CÁC NGHIÊN CỨU LIÊN QUAN ... 10

2.1. Hệ thống phân lớp hình ảnh........................................................................... 10

2.1.1. Bài toán phân lớp .................................................................................. 10

2.1.2. Các kỹ thuật phân lớp cơ bản................................................................ 12

2.1.3. Các tiêu chuẩn đánh giá ........................................................................ 23

2.2. Kỹ thuật phân lớp ảnh dùng Convolutional Neural Network ........................ 23

2.2.1. Kiến trúc cơ bản của mô hình CNN ..................................................... 26

2.2.2. Một số kiến trúc CNN thông dụng ....................................................... 33

2.2.3. Tập dữ liệu đầu vào cho mô hình CNN ................................................ 41

2.2.4. Độ đo đánh giá mô hình ........................................................................ 42

CHƯƠNG 3. MÔ HÌNH CNN CHO PHÂN LỚP ĐỒNG PHỤC SINH VIÊN

CÁC KHOA CỦA TRƯỜNG ĐẠI HỌC SƯ PHẠM TP. HCM .. 46

3.1. Tiền xử lý ảnh và chuẩn hóa dữ liệu.............................................................. 46

3.2. Đề xuất mô hình CNN ................................................................................... 49

3.3. Quá trình huấn luyện mô hình và phân lớp hình ảnh .................................... 53

CHƯƠNG 4. THỰC NGHIỆM VÀ BÀN LUẬN ................................................ 55

4.1. Cơ sở dữ liệu .................................................................................................. 55

4.2. Môi trường thực nghiệm ................................................................................ 58

4.3. Quá trình thực nghiệm ................................................................................... 59

4.4. Kết quả thực nghiệm ...................................................................................... 59

4.4.1. Tỉ lệ tập huấn luyện và kiểm tra ........................................................... 59

4.4.2. Kích thước ảnh đầu vào ........................................................................ 65

4.4.3. Tăng thêm số lượng ảnh đầu vào .......................................................... 68

4.4.4. Tổng kết kết quả thực nghiệm .............................................................. 73

CHƯƠNG 5. KẾT LUẬN VÀ KHUYẾN NGHỊ ................................................. 75

5.1. Kết luận .......................................................................................................... 75

5.2. Kiến nghị ....................................................................................................... 76

TÀI LIỆU THAM KHẢO ...................................................................................... 77

DANH MỤC THUẬT NGỮ VÀ VIẾT TẮT

Nguyên mẫu Diễn giải Chữ viết tắt

Mạng nơ-ron tích chập CNN Convolutional Neural Networks

Neural Networks Mạng nơ-ron NN

Support Vector Machine Máy vector hỗ trợ SVM

K-Nearest Neighbor K Láng giềng gần nhất KNN

ReLU Rectified Linear Unit Hàm kích hoạt ReLU

GPU Graphics Processing Unit Bộ xử lý đồ họa

CONV Covolutional layer Tầng tích chập

POOL Pooling layer Tầng giảm số chiều

FC Fully connected layer Tầng kết nối đầy đủ

DANH MỤC CÁC BẢNG BIỂU

Bảng 4.1. Thống kê số lượng và dung lượng của tập ảnh đồng phục sinh viên. ..... 56

Bảng 4.2. Thống kê số liệu tập dữ liệu đầu vào ....................................................... 58

Bảng 4.3. Thống kê kết quả thực nghiệm thay đổi tỉ lệ phân bố tập dữ liệu ........... 64

Bảng 4.4. Thống kê kết quả thực nghiệm với 3 kích thước ảnh đầu vào ................ 68

Bảng 4.5. Thống kê kết quả thực nghiệm với bộ dữ liệu tăng thêm ........................ 70

Bảng 4.6. Thống kê kết quả thực nghiệm huấn luyện 300 lần với bộ dữ liệu tăng

thêm ......................................................................................................... 71

DANH MỤC HÌNH VẼ Hình 1.1. Đồng phục sinh viên một số khoa trực thuộc Trường Đại học Sư phạm

Thành phố Hồ Chí Minh. .......................................................................... 2

Hình 1.2. Chương trình Perfect Student do Đoàn Trường triển khai. ....................... 2

Hình 1.3. Ảnh sinh viên đang mặc đồng phục được đăng tải trên mạng xã hội. ....... 3

Hình 1.4. Mô tả đồng phục của một số khoa nhiều đặc điểm gần giống nhau. ......... 4

Hình 1.5. Minh họa vấn đề phân lớp đồng phục sinh viên ........................................ 5

Hình 1.6. Các bước thực hiện bài toán phân lớp đồng phục dùng mô hình CNN ..... 6

Hình 2.1. Mô tả bài toán phân lớp và bài toán phân cụm ........................................ 11

Hình 2.2. Thuật toán K-Mean với 3 vùng dữ liệu ................................................... 13

Hình 2.3. Phân vùng đối tượng trong SVM với đường thẳng (trái), siêu phẳng

(phải) ....................................................................................................... 16

Hình 2.4. Mô tả nhiều siêu phẳng có thể phân chia tập dữ liệu thành 2 vùng ......... 17

Hình 2.5. Biểu diễn một mô hình phân lớp cơ bản .................................................. 19

Hình 2.6. Minh họa một mô hình nơ-ron thần kinh ................................................. 20

Hình 2.7. Mô hình toán học mô tả cấu trúc của nơ-ron ........................................... 21

Hình 2.8. Mô hình mạng nơ-ron cơ bản .................................................................. 22

Hình 2.9. Bộ dữ liệu chữ ký số MNIST ................................................................... 25

Hình 2.10. Bộ dữ liệu hình ảnh với 10 phân lớp CIFAR-10 [11]............................ 25

Hình 2.11. Một mô hình CNN với các thành phần cơ bản ...................................... 26

Hình 2.12. Một số bộ lọc Kernel trong xử lý ảnh .................................................... 29

Hình 2.13. Tích chập bộ lọc vào ảnh với stride = 1 ................................................. 29

Hình 2.14. Tích chập bộ lọc vào ảnh với stride = 1 có thêm padding ..................... 30

Hình 2.15. Minh họa tầng Pooling với pooling window = 2 và stide = 2 ............... 32

Hình 2.16. Mô hình CNN với tầng FC cho kết quả dự đoán 4 phân lớp ................. 33

Hình 2.17. Mô hình LeNet-1 ................................................................................... 34

Hình 2.18. Mô hình LeNet-4 ................................................................................... 34

Hình 2.19. Mô hình LeNet-5 ................................................................................... 34

Hình 2.20. Mô hình VGG-16 ................................................................................... 36

Hình 2.21. Mô tả quá trình xử lý của mô hình VGG-16 ......................................... 37

Hình 2.22. Mô tả một residual block ....................................................................... 38

Hình 2.23. Cấu trúc của ResNet 34 và ResNet 50 ................................................... 39

Hình 2.24. Mô tả qui trình tính toán của ResNet 50 ................................................ 39

Hình 2.25. Biểu diễn mô hình DenseNet ................................................................. 40

Hình 2.26. Số lượng liên kết giữa các tầng trong DenseNet ................................... 40

Hình 2.27. Biểu đồ Confusion-Matrix với 5 phân lớp ............................................. 43

Hình 3.1. Minh họa một số ảnh thu thập trong tập dữ liệu đồng phục sinh viên .... 47

Hình 3.2. Mô tả giai đoạn chuẩn hóa hình ảnh ........................................................ 49

Hình 3.3. Cấu trúc mô hình CNN trong quá trình thực nghiệm thay đổi tỉ lệ tập

huấn luyện và kiểm tra ............................................................................ 51

Hình 3.4. Minh họa mô hình CNN đề xuất cho bài toán phân lớp đồng phục ........ 52

Hình 4.1. Mô tả một số hình ảnh sau khi tổng hợp và chuẩn hóa cơ bản ................ 56

Hình 4.2. Mô tả quá trình áp dụng các phép biến đổi trên ảnh gốc ......................... 57

Hình 4.3. Môi trường thực nghiệm .......................................................................... 58

Hình 4.4. Kết quả thực nghiệm khi chia bộ dữ liệu theo tỉ lệ 10-90 ....................... 61

Hình 4.5. Kết quả thực nghiệm khi chia bộ dữ liệu theo tỉ lệ 20-80 ....................... 62

Hình 4.6. Kết quả thực nghiệm khi chia bộ dữ liệu theo tỉ lệ 30-70 ....................... 62

Hình 4.7. Kết quả thực nghiệm khi chia bộ dữ liệu theo tỉ lệ 50-50 ....................... 63

Hình 4.8. Kết quả thực nghiệm thay đổi tỉ lệ phân bố tập dữ liệu ........................... 65

Hình 4.9. Cấu trúc mô hình khi thay đổi kích thước các tập ảnh đầu vào ............... 66

Hình 4.10. Kết quả mô hình sử dụng tập ảnh đầu vào 50 x 75 pixel....................... 66

Hình 4.11. Kết quả mô hình sử dụng tập ảnh đầu vào 100 x 150 pixel................... 67

Hình 4.12. Kết quả mô hình sử dụng tập ảnh đầu vào 150 x 225 pixel................... 67

Hình 4.13. Kết quả thực nghiệm với bộ dữ liệu tăng thêm kích thước 50 x75 ....... 69

Hình 4.14. Kết quả thực nghiệm với bộ dữ liệu tăng thêm kích thước 150x225 .... 70

Hình 4.15. Tổng hợp kết quả sau khi huấn luyện 100 lần với bộ dữ liệu tăng thêm ... 71

Hình 4.16. Tổng hợp kết quả sau khi huấn luyện 300 lần với bộ dữ liệu tăng thêm ... 72

Hình 4.17. Huấn luyện 300 lần với bộ dữ liệu tăng thêm kích thước 50 x 75 ........ 72

1

CHƯƠNG 1. TỔNG QUAN

Ngày nay, vấn đề nhận dạng thương hiệu đang được khá nhiều trường đại học

quan tâm, trong đó những bộ đồng phục cho sinh viên là sản phẩm vừa gần gũi vừa

mang lại hiệu quả về mặc truyền thông khá cao. Hiện nay việc nhận dạng hình ảnh

thương hiệu thông qua những bộ đồng phục này chỉ được thực hiện bằng mắt

thường. Trong khi đó việc nhận dạng hình ảnh hiện nay đã trở thành một chủ đề lớn

trong lĩnh vực Thị giác máy tính được nhiều người nghiên cứu và thực hiện. Tại

chương này chúng ta sẽ tiến hành khảo sát những vấn đề cơ bản liên quan đến

những bộ đồng phục sinh viên và vấn đề về việc nhận dạng và phân lớp những bộ

đồng phục này.

Khái quát về đồng phục sinh viên

Bộ đồng phục là trang phục thiêng liêng, thân thương trong mỗi thế hệ học

sinh, sinh viên. Nó tạo ra một nét đẹp tập thể, đồng đều, mang đến không khí sinh

hoạt sôi nổi trong nhà trường, tạo ra một môi trường mang tính văn hóa cao. Một bộ

đồng phục đẹp, tinh tế, gây ấn tượng không những góp phần tạo nên vẻ đẹp truyền

thống của nhà trường mà còn để lại nhiều kỉ niệm cho bao thế hệ học sinh, sinh

viên.

Hiện nay, chỉ tính riêng tại Trường Đại học Sư phạm Thành phố Hồ Chí Minh

có 22 khoa đang đào tạo sinh viên. Trong đó, 22/22 khoa đều đã có đồng phục riêng

hoặc đang thử nghiệm, khảo sát để lựa chọn mẫu đồng phục phù hợp [1]. Những bộ

đồng phục cho sinh viên là sản phẩm vừa thiết yếu, gần gũi vừa mang lại hiệu quả

về mặc truyền thông khá cao cho đơn vị. Bên cạnh đó, ta có thể dễ phân biệt một

sinh viên đang học tập tại khoa nào thông qua bộ đồng phục. Tùy theo đặc trưng

của từng khoa thì đồng phục có thể là áo thun hoặc áo sơ mi có logo, kiểu dáng,

màu sắc, họa tiết trang trí khác nhau.

Đoàn Thanh niên Cộng sản Hồ Chí Minh và Hội Sinh viên Việt Nam Trường

cũng ban hành Chương trình “Perfect Student” trong đó có khuyến khích sinh viên

sử dụng trang phục lịch sự, đồng phục áo khoa khi đến trường. Ngoài những giờ

học tập tại giảng đường, trong các hoạt động phong trào, sinh hoạt dã ngoại, hoạt

2

động tình nguyện, sinh viên cũng được khuyến khích mặc đồng phục khoa khi tham

dự để tạo nên một môi trường sinh hoạt tập thể cũng như tăng cường hiệu quả

truyền thông hình ảnh cho các khoa.

Hình 1.1. Đồng phục sinh viên một số khoa trực thuộc Trường Đại học Sư phạm

Thành phố Hồ Chí Minh.

Hình 1.2. Chương trình Perfect Student do Đoàn Trường triển khai.

3

Các hoạt động ngoại khóa cho sinh viên được tổ chức theo nhiều cấp độ như

lớp, khoa, trường [2]. Do đó, trong một năm học, trung bình mỗi tháng sẽ có ít nhất

một hoạt động ngoại khóa cho sinh viên tham gia. Để lưu lại kỉ niệm cũng như

minh chứng cho việc tham gia hoạt động, sinh viên thường chụp ảnh để lưu trữ hoặc

đăng tải lên các mạng xã hội.

Trước đây, để chụp ảnh bạn phải có một chiếc máy ảnh kỹ thuật số đắt tiền

nhưng với sự phát triển vượt bậc của công nghệ, điều này có thể thực hiện dễ dàng

với một chiếc điện thoại thông minh giá thành rẻ. Theo một số thống kê cho thấy

1/3 người Việt Nam có sử dụng điện thoại thông minh và tập trung nhiều ở độ tuổi

từ 18 đến 24 tuổi, lứa tuổi của học sinh, sinh viên.

Bên cạnh đó là sự bùng nổ của các phương tiện truyền thông, các kênh thông

tin đại chúng, các mạng xã hội như Facebook, Instagram, Zalo… không khó để tìm

thấy hình ảnh của các bạn sinh viên đang mặc bộ đồng phục của khoa, trường khi

đang học tập hoặc tham gia các hoạt động tại trường. Ta có thể nhận thấy khối

lượng hình ảnh này là vô cùng lớn và liên tục tăng nhanh.

Hình 1.3. Ảnh sinh viên đang mặc đồng phục được đăng tải trên mạng xã hội.

Song việc nhận biết và phân lớp xem các bạn sinh viên đang mặc đồng phục

của khoa nào chỉ có thể thực hiện được khi người phân lớp có hiểu biết đề các đặc

4

trưng riêng của các bộ đồng phục này. Chưa kể đến việc nhằm đảm bảo tính đơn

giản, phù hợp với nhiều mục đích sử dụng nên các mẫu đồng phục thường được tối

giản các họa tiết thiết kế nên việc hai bộ đồng phục của hai khoa khác nhau có

nhiều điểm gần giống nhau rất dễ xảy ra. Để phân biệt một bộ đồng phục ta cần phải

xem xét đến nhiều chi tiết trên áo chứ không đơn giản dựa trên kiểu dáng, màu sắc.

Khi số lượng hình ảnh lớn, những đặc trưng chi tiết của đồng phục làm cho công việc

này tốn nhiều thời gian.

Tại hình bên dưới ta có thể thấy, hai mẫu đồng phục của sinh viên khoa Ngữ

văn và khoa Địa lí có cùng hình dạng là áo sơ mi với màu trắng chủ đạo và một số

đường nét trang trí màu đỏ. Có 2 điểm khác biệt để phân biệt ở hai mẫu đồng phục

này. Thứ nhất, ống tay áo đồng phục sinh viên khoa Ngữ văn có viền màu đỏ còn ở

sinh viên khoa Địa lí có màu trắng trơn. Thứ hai, đồng phục sinh viên khoa Địa lí có

thêm cầu vai màu đỏ còn ở khoa Ngữ văn thì công có chi tiết này.

Hình 1.4. Mô tả đồng phục của một số khoa nhiều đặc điểm gần giống nhau.

Vấn đề được đặt ra là từ một ảnh chụp bất kỳ có sinh viên đang mặc áo khoa,

làm sao tự động phân lớp ảnh để xác định sinh viên có trên hình là sinh viên của

khoa nào. Kết quả phân lớp cho mục đích thống kê số liệu phục vụ cho các mục tiêu

kiểm tra, giám sát hoặc các nghiên cứu khác. Bài toán phân lớp ảnh tự động hiện

nay đã trở nên khá phổ biến như phân lớp ảnh động vật, phương tiện, các loài hoa,

5

trái cây…[3] sử dụng các kỹ thuật máy học truyền thống hoặc các kỹ thuật học sâu

[4]. Vận dụng ý tưởng về bài toán phân lớp và các kỹ thuật máy học này, ta cũng có

thể giải quyết bài toán phân lớp đồng phục của sinh viên.

Hình 1.5. Minh họa vấn đề phân lớp đồng phục sinh viên

Qua hình minh họa ta phân tích bài toán được xây dựng cơ bản gồm 3 bước:

Bước 1: Hình ảnh đồng phục sinh viên.

Bước 2: Mô hình phân lớp sử dụng các kỹ thuật xử lý hình ảnh, phân lớp để

nhận dạng và dự đoán phân lớp hình ảnh.

Bước 3: Đưa ra kết luận sinh viên trong ảnh mặc đồng phục của khoa nào.

Đây là bài toán phân lớp tập ảnh thành nhiều lớp riêng biệt. Bộ ảnh đầu vào là

ảnh màu kỹ thuật số, ở đây là hình ảnh sinh viên mặc đồng phục của khoa. Nguồn

ảnh có thể thu thập trực tiếp từ các thiết bị ghi hình như máy quay phim, máy ảnh,

điện thoại hoặc tải từ các website, mạng xã hội, trích xuất từ hệ thống camera giám

sát… Tập ảnh này sẽ được đưa vào bộ xử lý của máy tính để xử lý rút trích các đặc

trưng của ảnh để đưa vào các mô hình huấn luyện, học với kết quả mong muốn trả

về là xác định ảnh thuộc phân lớp nào, đồng phục sinh viên đang mặc là của khoa

nào.

Ta có thể thấy để thực hiện bài toán này quan trọng nhất là phải tìm kỹ thuật

trích xuất đặc trưng của ảnh và mô hình huấn luyện phù hợp để có kết quả phân lớp

tối ưu nhất. Hệ thống phân lớp này cần phải có độ chính xác cao, khả năng thích

ứng nhanh, giải quyết vấn đề nhanh với nguồn dữ liệu lớn được bổ sung liên tục,

nhưng vẫn phải đảm bảo tốc độ xử lý ổn định và chi phí hoạt động. Đây là những

yêu cầu mà các mô hình học sâu đang hướng đến để giải quyết [5].

Hiện nay có một mô hình học sâu tiên tiến tích hợp cả quá trình trích xuất đặc

trưng và huấn luyện ảnh để phân lớp đó là mô hình mạng nơ-ron tích chập CNN.

6

Mô hình CNN đã được khá nhiều nhà nghiên cứu lựa chọn vì khả năng linh hoạt

trong việc giải quyết các bài toán phân lớp với nhiều loại hình ảnh [3]. Đặc điểm

của nó là dễ triển khai và điều chỉnh cấu trúc tạo nên những biến thể khác nhau để

xử lý những yêu cầu tính toán khác nhau.

Bài toán phân lớp đồng phục sinh viên

Hình 1.6. Các bước thực hiện bài toán phân lớp đồng phục dùng mô hình CNN

Đầu vào: tập ảnh chụp sinh viên đang mặc đồng phục.

Đầu ra: ảnh đồng phục thuộc về phân lớp của khoa nào.

Bài toán phân lớp đồng phục sinh viên thực hiện qua 3 bước:

Bước 1: Tổng hợp tập hình ảnh sinh viên mặc đồng phục.

Bước 2: Những hình ảnh trên được đưa vào hệ thống phân lớp bằng CNN để

tiến hành huấn luyện.

Bước 3: Kết quả huấn luyện của hệ thống phân lớp CNN xác định hình ảnh

thuộc về phân lớp ảnh của khoa nào.

Kết quả của hệ thống phân lớp CNN đã xây dựng sẽ cho kết quả với N lớp từ

1…N. N là số lớp hệ thống phân lớp CNN sẽ phân chia sau quá trình xử lý ảnh và

huấn luyện. Số N tùy thuộc chúng ta xác định ban đầu khi đưa N tập dữ liệu khác

biệt vào hệ thống phân lớp CNN. Ý nghĩa của N tập dữ liệu ở đây chính là số lượng

khoa chúng ta đưa vào để phân lớp. Giả sử tại Trường Đại học Sư phạm Thành phố

Hồ Chí Minh đang quản lý 22 khoa có đồng phục khác nhau thì số lượng tập dữ liệu

sẽ là N = 22.

7

Mục tiêu hướng đến của bài toán

Với sự hạn chế về lượng thời gian cũng và giới hạn của một luận văn, tác giả

không thực hiện việc phân lớp cho tất cả các loại đồng phục khoa như đã nêu ở trên

mà chỉ thử nghiệm trên một số khoa để tìm hiểu một mô hình CNN phù hợp cho

việc phân lớp hình ảnh đồng phục sinh viên.

Phạm vi bài toán:

- Bài toán áp dụng với đối tượng đầu vào là ảnh màu, cụ thể là ảnh chụp

sinh viên đang mặc áo đồng phục.

- Hình ảnh được lấy từ các thiết bị ghi hình như máy ảnh, điện thoại hay

thu thập từ mạng xã hội facebook.

- Bài toán thử nghiệm phân lớp ảnh đồng phục sinh viên được tổng hợp từ

4 khoa trực thuộc Trường Đại học Sư phạm Thành phố Hồ Chí Minh

bao gồm các khoa: Giáo dục Tiểu học, Giáo dục Mầm non, Giáo dục Đặc

biệt và Công nghệ Thông tin.

Yêu cầu bài toán:

- Đề xuất mô hình CNN để giải quyết việc phân lớp dữ liệu đầu vào là hình

ảnh đồng phục sinh viên.

- Phân tích, làm rõ mô hình CNN đề đã xuất.

- Chỉnh sửa mô hình CNN đã đề xuất trong luận văn sao cho kết quả phân

lớp đạt hiệu quả tốt.

Dự kiến kết quả:

- Đề xuất mô hình CNN phù hợp với việc phân lớp ảnh đồng phục sinh

viên.

- Độ chính xác của việc phân lớp sau khi áp dụng thử nghiệm mô hình

CNN ở mức chấp nhận được.

- Dữ liệu sau khi đưa vào mô hình CNN huấn luyện có khả năng áp dụng

cho nhiều bài toán khác.

Hướng tiếp cận và giải pháp cho bài toán

Để có thể huấn luyện mô hình phân lớp đồng phục sinh viên hiệu quả bước

đầu tiên là chuẩn bị bộ dữ liệu huấn luyện. Để đảm bảo độ chính xác của dữ liệu, tôi

8

đã liên hệ trực tiếp với Ban Chấp hành Đoàn Thanh niên, Hội Sinh viên của các

khoa để tổng hợp và xác nhận hình ảnh. Bên cạnh đó, qua hơn 8 năm học tập và

công tác tại Trường Đại học Sư phạm Thành phố Hồ Chí Minh, tôi được trực tiếp

tiếp xúc khá nhiều với sinh viên các khoa thông qua các hoạt động ngoại khóa, bản

thân tôi cũng có thể kiểm tra lại các hình ảnh đồng phục sinh viên các khoa được

cung cấp có chính xác hay không.

Sử dụng một số kỹ thuật để tiền xử lý và chuẩn hóa dữ liệu ảnh thu thập ban

đầu với mục đích tập trung vào vùng ảnh cần xử lý, loại bỏ bớt những ảnh quá nhỏ,

mờ, bị che phủ quá nhiều các chi tiết cần thấy để xác định phân lớp, ảnh có nhiều

chi tiết thừa, gây nhiễu cao ảnh hưởng đến kết quả huấn luyện và đưa hình ảnh về

cùng một chuẩn kích thước để đưa vào hệ thống phân lớp. Bên cạnh đó sử dụng một

số phép biến đổi cơ bản để tăng lượng dữ liệu đầu vào để phục vụ cho việc huấn

luyện.

Đối với việc lựa chọn mô hình phân lớp hình ảnh, tôi tiến hành khảo sát các

phương pháp, mô hình có liên quan đã được sử dụng trong việc giải quyết các bài

toán phân lớp hình ảnh. Thông qua đó để có cơ sở đánh giá, so sánh các phương

pháp, mô hình khác nhau để lựa chọn hướng tiếp cận thích hợp. Cuối cùng là lựa

chọn phương pháp, mô hình có khả năng tính toán giải quyết yêu cầu đặt ra và tiến

hành thực nghiệm.

Tiến hành cài đặt để thử nghiệm mô hình đã đề xuất. Trong quá trình thực

nghiệm cần tinh chỉnh chất lượng ảnh đầu vào, các tham số của mô hình huấn luyện

để nâng cao kết quả phân lớp. Nhận xét, đánh giá mô hình dựa vào các tiêu chí cụ

thể như độ phân lớp chính xác sau khi huấn luyện, hiệu suất huấn luyện, hàm lỗi,

tốc độ huấn luyện...

Tóm lại, ở chương này ta đã cơ bản khái quát được bức tranh tổng thể về bài

toán phân lớp đồng phục sinh viên. Với những thành tựu khoa học hiện tại của

ngành khoa học máy tính mà cụ thể là lĩnh vực thị giác máy tính và máy học, người

ta đã có nghiên cứu ra những kỹ thuật để máy tính có thể nhận diện và tiến hành

phân lớp dựa trên hình ảnh. Bài toán cơ bản được đặt ra là phù hợp với khả năng xử

lý của hiện tại của máy tính với những kỹ thuật nhận diện và phân lớp. Trong những

9

phần tiếp theo ta sẽ tiến hành tìm hiểu sâu hơn về những kỹ thuật này và nghiên cứu

thử nghiệm, đề xuất kỹ thuật phù hợp để giải quyết bài toán được đặt ra.

10

CHƯƠNG 2. CƠ SỞ LÝ THUYẾT VÀ CÁC NGHIÊN CỨU LIÊN QUAN

Trong chương này ta sẽ nghiên cứu sâu hơn về cấu trúc của một bài toán phân

lớp hình ảnh. Trong các bài toán xử lý bằng thị giác máy tính trên hình ảnh, có 2

khái niệm cần phân biệt là phân cụm và phân lớp. Do đó ta phải tìm hiểu rõ khái

niệm nào là phù hợp với bài toán mà ta đã phát biểu. Từ việc xác định đúng khái

niệm, ta sẽ tìm hiểu và áp dụng những kỹ thuật phù hợp để xử lý vấn đề. Để tiến tới

việc thực nghiệm và để xuất mô hình phù hợp ở phần sau, trước hết ta phải ta có

một cái nhìn tổng quát về những kỹ thuật, mô hình xử lý ảnh cơ bản, tiêu biểu nhất

để học hỏi những lợi thế của từng kỹ thuật mang lại và những mặt hạn chế của nó.

Hệ thống phân lớp hình ảnh

2.1.1. Bài toán phân lớp

Bài toán phân lớp dữ liệu là một trong những nghiên cứu rộng rãi nhất trong

cộng đồng khai thác dữ liệu và máy học. Vấn đề này đã được nghiên cứu bởi các

nhà khoa học ở nhiều ngành trong nhiều thập kỷ. Dữ liệu của bài toán phân lớp rất

đa dạng, có thể kể đến một số loại dữ liệu điển hình như số học, chữ viết, hình ảnh,

âm thanh, dữ liệu sinh học... Ứng dụng của bài toán phân lớp được sử dụng ở nhiều

lĩnh vực như phân tích thị trường tiêu dùng, chẩn đoán y khoa, giám sát hành vi,

phân tích dữ liệu đa phương tiện, phân tích dữ liệu sinh học, lọc và phân lớp tài liệu,

phân tích mạng xã hội.

Một bài toán khác có nhiều điểm tương đồng và dễ gây nhầm lẫn với bài toán

phân lớp là bài toán phân cụm. Ý tưởng chung của hai bài toán thành là đưa từng dữ

liệu con từ tập dữ liệu lớn về các nhóm được xác định bằng các nhãn.

Kết quả của bài toán phân cụm (Clustering) là phân chia các dữ liệu về các

nhóm dựa trên những đặc trưng tương đồng của dữ liệu mà không quan tâm đến cấu

trúc của nhóm dữ liệu. Trong khi đó, bài toán phân lớp (Classification) dựa trên nền

tảng của tập dữ liệu được huấn luyện, phân tích cấu trúc của nhóm dữ liệu để xác

định phân lớp của dữ liệu.

11

Hình 2.1. Mô tả bài toán phân lớp và bài toán phân cụm

Trong máy học, bài toán phân cụm sử dụng kiểu máy học không giám sát với

mục tiêu là để khai thác dữ liệu, mô hình hóa cấu trúc nền tảng hoặc sự phân bố

trong dữ liệu để hiểu rõ hơn về nó. Đối lập với nó, bài toán phân lớp được thực thi

bằng kiểu máy học có giám sát với mục đích xây dựng được các hàm ánh xạ một

cách tối ưu nhất để khi bạn có một dữ liệu đầu vào bất kỳ, bạn có thể dự đoán được

kết quả phân lớp của nó. Ta có thể hiểu một cách đơn giản là bài toán phân cụm

phân chia các dữ liệu có sẵn về từng nhóm còn bài toán phân lớp dự đoán kết quả

phân lớp của dữ liệu đầu vào dựa trên những tập dữ liệu đã được huấn luyện trước.

Mục tiêu đặt ra của luận văn là xác định đồng phục sinh viên đang mặc trong

một tấm ảnh bất kỳ thuộc về khoa nào trùng khớp với ý tưởng của bài toán phân

lớp, cụ thể ở đây là phân lớp hình ảnh. Với sự phát triển không ngừng của khoa học

và sự quan tâm, nghiên cứu của các chuyên gia trong lĩnh vực thị giác máy tính, đã

có khá nhiều phương pháp được đề xuất với nhiều mức độ phức tạp khác nhau cho

bài toán phân lớp dữ liệu nói chung và phân lớp hình ảnh nói riêng. Ta có thể nhắc

tới một số phương pháp được sử dụng khá phổ biến như: K-Mean, KNN, SVM,

Neural Networks, CNN, các cải biến của CNN …

12

2.1.2. Các kỹ thuật phân lớp cơ bản

K-Means

Một trong những thuật toán phổ biến và đơn giản nhất cho bài toán phân cụm

dữ liệu, K-Means [6], được công bố lần đầu tiên vào năm 1955. Mặc dù đã qua hơn

60 năm nhưng K-Means vẫn được tiếp tục nghiên cứu cải tiến và sử dụng rộng rãi

trong lĩnh vực máy học. Thuật toán K-Means là một trong những thuật toán học

không giám sát cơ bản và là một trong những tiền đề quan trọng để nghiên cứu, xây

dựng, cải tiến các thuật toán khác.

Ý tưởng của thuật toán này là chia tập dữ liệu gồm N đối tượng thành K vùng

(K, N là số nguyên dương và K ≤ N) sao cho các vùng tách biệt nằm cách xa nhau

và các đối tượng thuộc cùng một vùng sẽ có khoảng cách gần nhau trong khi các

đối tượng khác vùng thì có khoảng cách xa nhau. Trên thực tế, khi xét N đối tượng,

mỗi đối tượng có m thuộc tính hay đặc trưng, ta tiến hành phân chia các đối tượng

thành K vùng dựa trên độ tương đồng của các thuộc tính hay đặc trưng thông qua

việc áp dụng các phép tính toán của thuật toán.

Các bước để thực hiện một thuật toán K-Means như sau:

Bước 1: Chọn ngẫu nhiên k phần tử đại diện cho K vùng dữ liệu, nó có thể

biết đến với các tên gọi khác như điểm đại diện, phần tử trung tâm...

Bước 2: Tính khoảng cách giữa các phần tử khác trong tập dữ liệu và phần

tử đại diện của từng vùng K, thường tính bằng khoảng cách Euclid.

Bước 3: Nhóm các phần tử vào vùng gần nhất. Nghĩa là một phần tử có

khoảng cách Euclid gần với phần tử đại diện của vùng nào nhất thì sẽ thuộc về

vùng đó.

Bước 4: Xác định phần tử đại diện mới của vùng. Lúc này phần tử đại diện

của một vùng được xác định bằng giá trị trung bình các phần tử khác có trong

vùng.

Bước 5: Thực hiện lại từ bước 2 đến bước 4 cho đến khi không còn xuất

hiện sự thay đổi vùng của các phần tử thuộc tất cả các vùng. Nghĩa là tất cả

phần tử đều đã được phân về vùng thích hợp nhất với nó.

13

Hình 2.2. Thuật toán K-Mean với 3 vùng dữ liệu

Ở hình bên trái là 3 phần tử đại diện cho 3 vùng dữ liệu, phân vùng cũng được

chia theo các phần tử đại diện này. Sau nhiều phép tính toán, cập nhật phần tử trung

tâm, gom nhóm các phân tử, cuối cùng ta có được phân vùng thích hợp nhất cho bộ

dữ liệu.

𝑥∈𝐾𝑖

(2.1) 𝑥 Các công thức sử dụng trong thuật toán K-Means : 𝑐𝑖 = 1 |𝐾𝑖|

d(x,𝑐𝑖) = ‖x − 𝑐𝑖‖ = √(𝑥1 − 𝑐𝑖1)2 + (𝑥2 − 𝑐𝑖2)2 + ⋯ + (𝑥𝑛 − 𝑐𝑖𝑛)2 (2.2)

(2.1) Công thức tính phần tử đại diện.

(2.2) Công thức tính khoảng cách Euclid.

𝑐𝑖 là phần tử trung tâm của vùng 𝐾𝑖

𝑥 là các phần tử thuộc vùng K

|𝐾𝑖| là kích thước của vùng 𝐾𝑖 (tổng số phần tử x có trong vùng 𝐾𝑖)

d(x,𝑐𝑖) là khoảng cách giữa phần tử 𝑥 đến phần tử đại diện 𝑐𝑖

Thuật toán K-Mean là một thuật toán kinh điển, tương đối đơn giản, được

dùng phổ biến trong việc xây dựng trong thực tế, độ phức tạp tuyến tính. Tuy nhiên

K-Mean cũng có những yếu điểm sau:

- Giá trị K vùng phải được cài đặt trước khi thực hiện thuật toán. Đối với

những trường hợp cần phân vùng dữ liệu nhưng chưa biết được số lượng vùng

cần phân chia thì thuật toán này dường như không thể sử dụng được.

- Phần tử đại diện ban đầu được chọn ngẫu nhiên sẽ ảnh hưởng lớn đến hiệu

năng của thuật toán và kết quả đầu ra. Đôi khi phần tử đại diện ban đầu không

14

phù hợp dẫn đến tốc độ hội tụ chậm hoặc thậm chí đưa ra kết quả phân vùng

không chính xác.

- Số lượng phần tử trong từng vùng cũng như cách phân bổ của các phần tử

cũng gây ảnh hưởng nhiều đến việc thuật toán có đưa ra kết quả tốt hay không.

- Cũng vì những lý do trên mà thuật toán này sẽ rất khó để đạt hiệu suất cao

đối với tập dữ liệu có kích thước lớn và nhiều phân vùng.

Tuy nhiên tùy theo yêu cầu và mục đích đề ra của một số bài toán thì phương

pháp này vẫn phù hợp, có một độ ổn định có thể chấp nhận được. Do đó tận ngày

nay, phương pháp này vẫn được áp dụng và thậm chí được nghiên cứu để đưa ra

những phương pháp cải tiến.

K - Nearest Neighbor

Nếu K-Means là một thuật toán của phương pháp máy học không giám sát cơ

bản thì đối với phương pháp máy học có giám sát chúng ta có thuật toán KNN [7].

Sở dĩ nó được gọi là thuật toán học có giám sát bởi vì mục tiêu của nó cố gắng dự

đoán phân loại một đối tượng dựa trên sự phân loại đã biết của các điểm khác trước

đó. Do đó, khác với K-Means, KNN tiếp nhận dữ liệu đầu vào là một loạt các dữ

liệu đã được gắn nhãn, phân loại trước và thuật toán sẽ chúng để gắn nhãn cho

những dữ liệu mới.

Để gắn nhãn một đối tượng dữ liệu mới, nó tìm kiếm K đối tượng dữ liệu gần

nhất trong tập dữ liệu đã được gắn nhãn và huấn luyện (do đó thuật toán này mới có

lên là K - Nearest Neighbor, nghĩa là K láng giềng gần). Nhãn của một đối tượng

mới sẽ do những đối tượng láng giềng gần nhất với nó bầu chọn, nhãn nào được hầu

hết số đông láng giềng bầu chọn sẽ được gắn cho đối tượng mới.

K là số lượng láng giềng được xét đến trong một kiểm tra hay bỏ phiếu để xác

định phân lớp. Do đó, K là một tham số nguyên dương được xác định trước khi thực

hiện thuật toán. Khoảng cách để xác định mức độ gần nhau của đối tượng thông

thường cũng được tính bằng khoản Euclid.

Các bước để thực hiện một thuật toán K-Nearest Neighbor như sau:

Bước 1 : Xác định giá trị tham số K (số láng giềng gần nhất)

15

Bước 2 : Tính khoảng cách giữa đối tượng cần phân lớp với tất cả các đối

tượng trong tập dữ liệu đã được huấn luyện.

Bước 3 : Sắp xếp lại giá trị khoảng cách theo thứ tự xa gần và xác định K

láng giềng gần dựa trên những giá trị khoảng cách gần nhất.

Bước 4 : Kiểm tra phân lớp của các láng giềng gần này và gắn nhãn cho đối

tượng mới dựa trên đại đa số láng giềng ở cùng một lớp.

Bước 5 : Trả về phân lớp cho đối tượng.

Thuật toán KNN có một điểm khác biệt với các mô hình học có giám sát sẽ

nhắc đến ở những phần tiếp theo là nó không xây dựng một mô hình dự đoán từ dữ

liệu sau khi huấn luyện để sử dụng ở các lần phân lớp tiếp theo. Mọi tính toán của

KNN đều nằm ở giai đoạn kiểm tra, trong đó việc tính toán lại khoảng cách của

từng đối tượng mới với các đối tượng đã có trong tập dữ liệu huấn luyện chiếm

nhiều thời gian. Đây là một nhược điểm của thuật toán KNN.

Bên cạnh đó việc chọn giá trị K sao cho phù hợp cũng là một khó khăn. Do tập

dữ liệu huấn luyện cũng có những đối tượng mang giá trị nhiễu, nếu giá trị K quá

nhỏ và lại vướng phải những giá trị nhiễu này thì kết quả chắc chắn sẽ sai. Ngược

lại nếu chọn giá trị K quá lớn sẽ khó phân lớp chính xác đối với những đối tượng có

khoảng cách gần biên giữa hai vùng đối tượng (do khoảng cách của đối tượng này

cách đều các vùng nên số lượng đối tượng có sẵn có khoảng cách gần đối tượng

mới của từng vùng sẽ gần bằng nhau). Một số nhà nghiên cứu đã cải tiến vấn đề này

bằng cách đánh trọng số tăng dần đối với các đối tượng có khoảng cách càng gần.

Nếu gặp trường hợp số lượng bầu chọn giữa các vùng bằng hoặc gần bằng nhau thì

những giá trị trọng số này sẽ cho ra một kết quả phân lớp chính xác hơn.

Support Vector Machine

SVM là một thuật toán thuộc phương pháp máy học có giám sát, nó có thể sử

dụng cho cả các bài toán phân lớp lẫn đệ quy. Tuy nhiên nó được ứng dụng nhiều

hơn cho bài toán phân lớp. Thuật toán này dựa trên lý thuyết học thống kê, còn gọi

là lý thuyết học tính toán, chiều VC (viết tắt của chiều Vapnik - Chervonenkis) do

hai nhà khoa học Vapnik (1999), Chervonenkis (1974) đề xuất, được biết đến như

16

một độ đo khả năng phân loại của các thuật toán máy học [8]. Xét một cách đơn

giản, SVM là thuật toán phân loại dữ liệu thành hai lớp: lớp dương (+) dữ liệu thuộc

lớp người dùng đang quan tâm và ngược lại là lớp âm (-).

Mô tả cụ thể thuật toán SVM như sau: với một tập dữ liệu X cho trước trong

không gian nhiều chiều (tương ứng với số thuộc tính của dữ liệu được xét tới). Khi

xét một đối tượng có thuộc vào một lớp nào đó hay không, ta có thể đánh các cặp

ký hiệu đối lập nhau cho đối tượng đó như +1 với –1, 0 với 1. Mục đích của thuật

toán SVM là tìm một siêu phẳng (hyperplane) tách lớp tối ưu cho phép chia tất cả

các đối tượng thành hai phần sao cho các đối tượng ở cùng một lớp người dùng

đang quan tâm nằm về một phía của siêu phẳng, các đối tượng khác nằm ở phía còn

lại.

Để hiểu được một siêu phẳng là gì ta bắt đầu xét từ một tập hợp ở không gian

2 chiều. Giả sử ta có 2 điểm nằm trên một không gian 2 chiều, ta có thể vẽ được

một đường thẳng tuyến tính chia không gian thành 2 vùng tách biệt chứa các điểm

này. Nếu xét ở không gian 3 chiều thì thay vì đường thẳng, ta sẽ có một mặt phẳng

để phân chia các vùng không gian. Và tương tự như thế ta có một siêu phẳng phân

chia các vùng đối tượng với không gian n chiều.

Hình 2.3. Phân vùng đối tượng trong SVM với đường thẳng (trái), siêu phẳng

(phải)

Ngoài ra ta cần hiểu thêm một khái niệm biên, hay lề (margin). Biên là

khoảng cách từ phần tử trong một lớp ở gần siêu phẳng nhất tới siêu phẳng đó.

Trong một không gian đa chiều, có thể xuất hiện nhiều siêu phẳng phân chia tập dữ

17

liệu thành 2 vùng riêng biệt. Nhưng siêu phẳng được gọi là tối ưu khi phân tập dữ

liệu thành hai lớp riêng biệt với vùng biên lớn nhất.

Ở hình bên dưới ta có thể thấy A, B, C đều là các siêu phẳng thỏa mãn điều

kiện phân tập dữ liệu thành 2 vùng tách biệt. Nhưng siêu phẳng B nằm rất gần lớp

+1 và siêu phẳng C nằm rất gần lớp – 1. Trong khi siêu phẳng A lại nằm cách đều

cả 2 vùng, nên có có biên lớn nhất, từ đó ta suy ra A chính là siêu phẳng tối ưu nhất.

Hình 2.4. Mô tả nhiều siêu phẳng có thể phân chia tập dữ liệu thành 2 vùng

Thuật toán SVM được thực hiện như sau :

Xét một tập dữ liệu huấn luyện có n phần tử được biểu diễn như sau : {(x1, y1),

(x2, y2), ... (xn, yn)}. Trong đó xi là một vector đầu vào được biểu diễn trong không

gian X ⊆ Rn, yi là nhãn của phần tử xi ; vì chúng ta chỉ quan tâm phần tử bất kỳ có

thuộc lớp đang xét hay không nên yi ∈ {1,−1}. Nhiệm vụ của ta là tìm siêu phẳng

H0 (viết tắt cho hyperplane) và hai siêu phẳng H+, H– nằm ở hai phía, gần với các

phần tử của các lớp nhất, song song với H0 và có cùng khoảng cách đến H0 như hình

trên.

H0 : y = 𝑤 ∗ 𝑥 = b hay y = 𝑤 ∗ 𝑥 – b = 0 (2.3)

Với điều kiện không có phần tử nào của tập mẫu nằm giữa H+ và H–, ta có :

H+ : 𝑤 ∗ 𝑥 – b >= +1 với y = +1 (2.4)

H– : 𝑤 ∗ 𝑥 – b >= –1 với y = –1 (2.5)

Hoặc tương đương 𝑦𝑖‖𝑤 ∗ 𝑥𝑖 − 𝑏‖ >= 1.

18

Khoảng cách từ siêu phẳng H+ và H– đến H0 được tính bằng khoảng cách

2 với ‖𝑤‖2 = ∑ 𝑤𝑖

𝑛 𝑖=1

2 ‖𝑤‖2

đạt cực đại với

Euclid là (2.6) (theo định mức L2 norm). Để tìm siêu

2 ‖𝑤‖2

‖𝑤‖2

phẳng H0 với biên lớn nhất, ta giải bài toán tìm 𝑤 và 𝑏 sao cho

ràng buộc 𝑦𝑖‖𝑤 ∗ 𝑥𝑖 − 𝑏‖ >= 1. Người ta có thể chuyển bài toán này sang bài toán tương đương dễ giải hơn là cực tiểu hóa 1 2 với điều kiện 𝑦𝑖‖𝑤 ∗ 𝑥𝑖 − 𝑏‖ >= 2

1

(2.7)

1. Lời giải cho bài toán tối ưu này là cực tiểu hóa hàm Lagrange :

𝑛 𝑖=1

2 - ∑ 𝛼𝑖[𝑦𝑖(∥ 𝑤. 𝑥𝑖 ∥ − 𝑏) − 1 ]

2

L(𝑤, b, 𝛼)= ‖𝑤‖2

Trong đó α là các hệ số Lagrange, α ≥ 0. Sau đó người ta chuyển thành bài

toán đối ngẫu là cực đại hóa hàm W(α) :

𝛼

𝑊(𝑎) = max (2.8) max 𝛼 (min L(𝑤, b, 𝛼)) 𝑤,𝑏

Từ đó giải để tìm được các giá trị tối ưu cho w, b và α. Về sau, việc phân lớp

một đối tượng mới chỉ là việc kiểm tra hàm dấu sign(w*x - b).

Lời giải tìm siêu phẳng tối ưu trên có thể mở rộng trong trường hợp dữ liệu

không thể tách rời tuyến tính bằng cách ánh xạ dữ liệu vào một không gian có số

chiều lớn hơn bằng cách sử dụng một hàm nhân K (Kernel). Có thể nhắc đến một số

hàm nhân thường dùng sử dụng như :

- Hàm nhân tuyến tính (Linear Kernel) : K(x,y) = x*y

- Hàm nhân đa thức (Polynomial Kernel) : K(x, y)=(x*y +1)d

−|𝑥−𝑦|2 2𝛼2

- Hàm Gaussian (Radial Basis Function Kernel):

K(x, y) = ℮

- Hàm tiếp tuyến hyperpol (Hyperpolic tangent Kernel) :

K(x, y)= tanh (a*x*y - b)

Trong bài toán phân lớp, phương pháp SVM có khả năng cho kết quả phân

lớp với độ chính xác tương đối cao, hiệu quả. Trên thực tế, với một quy trình giải

quyết bài toán phân lớp thì thuật toán SVM chỉ nằm ở một phần cuối của hệ thống

phân lớp. Ta có thể biểu diễn một quy trình bài toán phân lớp như sau :

19

Trích chọn Huấn luyện Mô hình huấn luyện đặc trưng Dữ liệu huấn luyện

Kiểm tra

phân lớp Dữ liệu kiểm tra Dữ liệu đã phân lớp Trích chọn đặc trưng

Hình 2.5. Biểu diễn một mô hình phân lớp cơ bản

Trong bài toán phân lớp SVM đóng vai trò như một hệ hỗ trợ ra quyết định

để xác định phân lớp của một đối tượng mới, trong hình trên đó là giai đoạn “Kiểm

tra phân lớp”. SVM sử dụng kết quả từ tập thông tin đặc trưng của dữ liệu đã được

xử lý bằng các phương pháp rút để tiến hành phân lớp. Việc trích chọn đặc trưng là

một bước quan trọng có ảnh hưởng lớn đến bài toán phân lớp với SVM. Tùy theo

loại dữ liệu và tính chất của dữ liệu, các nhà nghiên cứu phải có cái nhìn khái quát

về dữ liệu đó để chọn ra các đặc trưng thích hợp cho bài toán phân loại đó. Việc này

tuy cần thiết nhưng cũng là điểm bất lợi của một hệ thống phân lớp sử dụng SVM.

Ta có thể thấy ở hình trên việc trích chọn đặc trưng ảnh hưởng đến cả 2 quá trình

huấn luyện và phân lớp. Nếu như chọn đặc trưng không phù hợp thì việc huấn luyện

sẽ cho ra mô hình sau huấn luyện sử dụng để phân lớp không chính xác. Từ đó dẫn

đến kết quả không đạt được như mong muốn.

Mạng nơ-ron

Mạng nơ-ron (Neural Network) hay mạng nơ-ron nhân tạo (Artificial Neural

Network) là một mô hình tính toán được lấy ý tưởng dựa trên hoạt động liên kết

giữa các tế bào thần kinh (nơ-ron thần kinh) của con người [9]. Tại sao con người

có tư duy, có thể nhận biết được những sự vật, hiện tượng khác nhau. Đó là kết quả

của hoạt động của hàng triệu nơ-ron thần kinh trong bộ não con người. Nơ-ron là

đơn vị cơ bản cấu tạo hệ thống thần kinh và là một phần quan trọng nhất của não.

20

Não chúng ta gồm khoảng 10 triệu nơ-ron và mỗi nơ-ron liên kết với 10.000 nơ-ron

khác. Có thể hiểu vai trò của những nơ-ron thần kinh này trong việc nhận biết của

con người là lưu trữ, truyền tải các thông tin, dữ kiện về một sự vật, hiện tượng qua

lại lẫn nhau để đưa về trung ương thần kinh tổng hợp, phân tích và đưa ra kết luận.

,

Hình 2.6. Minh họa một mô hình nơ-ron thần kinh

Trong hình minh họa trên ta quan tâm đến một số thuộc tính sau :

- Bộ phận trung tâm của một nơ-ron bao gồm phần thân (cell body hay

soma) có chứa nhân (nucleus), được ví như bộ xử lý, tính toán của một

nơ-ron.

- Các sợi nhánh (dendrites) được gắn liền với phần thân với nhiệm vụ

truyền tải dữ liệu (trong sinh học nó được truyền dưới dạng các xung điện

thế) từ những nơ-ron khác đến phần thân của nơ-ron để tổng hợp, xử lý.

Một nơ-ron sẽ tổng hợp dữ liệu từ những nơ-ron trước đó cung cấp và tiếp

tục truyền tải kết quả này đến những nơ-ron khác và cứ như thế tạo thành

một mạng lưới thần kinh.

- Các sợi trục (axon) có cấu tạo như các sợi nhánh nhưng có nhiệm vụ là

truyền tải dữ liệu sau khi nơ-ron đã tổng hợp đến các nơ-ron khác. Có thể

hiểu sợi trục của một nơ-ron này chính là sợi nhánh của một nơ-ron khác.

Đặc điểm của sợi trục là nó chỉ phát xung điện thế khi điện thế trong phần

thân vượt quá một giá trị ngưỡng cho phép (threshold). Ví dụ khi ta nhận

diện một người có nguồn gốc từ châu Á, ta sẽ dựa vào vài đặc điểm và

các ngưỡng như mái tóc phải màu đen, da có màu vàng nhạt, mắt nhỏ.

21

Ta có thể thấy được qua mô hình sinh học của các nơ-ron thần kinh, một

người có càng nhiều nơ-ron thần kinh liên kết mạnh mẽ với nhau thì khả năng tư

duy, phân tích, tính toán càng tốt, xử lý vấn đề nhanh và chính xác. Dựa trên kiến

trúc này, các nhà khoa học đã nghiên cứu và mô hình hóa lại thành một mạng nơ-

ron nhân tạo nên công nghệ trí tuệ nhân tạo. Mô hình toán học cơ bản mô tả lại cấu

trúc của một nơ-ron được thể hiện như hình bên dưới.

Hình 2.7. Mô hình toán học mô tả cấu trúc của nơ-ron

Trong hình, x1…xn là các thông tin đầu vào được truyền vào một nơ-ron (giống

như các dữ liệu được truyền từ sợi nhánh), w1…wn để diễn tả trọng số, mức độ quan

trọng của thông tin, thông tin càng có giá trị đến kết quả thì có trọng số càng cao và

ngược lại. Những thông tin này được đưa vào nơ-ron tổng hợp và kiểm tra với một

ngưỡng (threshold) 𝜃 sau đó đưa ra kết luận là hàm y. Công thức tính hàm y như

sau: y = w1x1 + w2x2 + … + wnxn – 𝜃 (2.9)

Thực tế trong toán học, threshold có thể mang cả dấu (+) lẫn dấu (–), nên các

nhà toán học đưa vào thêm số bias được biểu diễn: bias = b = – 𝜃.

Ta cập nhật công thức (2.9) như sau : y = w1x1 + w2x2 + … + wnxn + b (2.10)

Từ kết quả của công thức (2.10), giá trị của hàm y sẽ được so sánh với

threshold b của nơ-ron, nếu nó lớn hơn b thì nơ-ron cho đầu ra là 1, còn nếu nhỏ

hơn thì đầu ra là 0. Ta có thể thấy giá trị 0, 1 này như là tín hiệu để thông báo việc

có truyền dữ liệu hay không. Nếu tổng hợp các thuộc tính (có nhân với trọng số để

xem mức độ quan trọng của nó) mà vượt qua một ngưỡng của nơ-ron thì nơ-ron sẽ

phát tín hiệu (có thể hiểu là tạo liên kết) tới nơ-ron kế tiếp.

Dựa trên nguyên lý hoạt động của nơ-ron và kiến trúc thống bao gồm nhiều

nơ-ron liên kết với nhau thông qua việc truyền tín hiệu dựa trên việc đánh giá chất

22

lượng các thuộc tính của dữ liệu, các nhà khoa học đã mô hình hóa thành một mạng

nơ-ron đa tầng ứng dụng trong lĩnh vực máy học, cụ thể là bài toán phân lớp mà ta

đang xét đến.

Hình 2.8. Mô hình mạng nơ-ron cơ bản

Mô hình mạng nơ-ron cơ bản gồm 3 tầng : tầng đầu vào (input), tầng ẩn

(hidden) và tầng đầu ra (output). Mỗi tầng có nhiều nút là những nơ-ron chứa những

biến có giá trị độc lập và liên kết với các nơ-ron trong tầng kế tiếp.

- Tầng đầu vào (Input Layer) : là tầng đầu tiên với các nơ-ron chứa các thuộc

tính của đối tượng mới được đưa vào cần phân lớp, thường là đặc trưng của dữ liệu

được trích xuất từ trước.

- Tầng ẩn (Hidden Layer) : số nơ-ron trong tầng ẩn là ngẫu nhiên tùy từng mô

hình, thường là do kinh nghiệm của người thiết kế mô hình xác định. Nếu số nơ-ron

của tầng ẩn quá nhiều thì mô hình liên kết mạng sẽ phức tạp, quá trình học sẽ chậm,

còn nếu số nơ-ron quá ít thì hệ thống sẽ học nhanh nhưng độ chính xác của mô hình

sẽ giảm.

- Tầng đầu ra (Output Layer) : là tầng cuối cùng, với các nơ-ron chứa các

thông tin đã được tổng hợp sau khi xử lý tính toán các nơ-ron ở tầng ẩn, đây chính

là những đặc điểm cuối cùng để đưa ra kết luận về phân lớp của dữ liệu.

Thông tin từ tất cả các nơ-ron trong tầng đầu vào được tích hợp hay tính tổng

trọng số và chuyển kết quả cho các nơ-ron trong tầng ẩn. Gọi là “ẩn” vì các nơ-ron

23

trong tầng này chỉ liên kết với các nơ-ron ở tầng đầu vào và đầu ra, chỉ có người

thiết kế mạng mới biết được cấu trúc của tầng này ; người dùng chỉ sử dụng mô

hình sau khi huấn luyện để áp dụng vào phân lớp dữ liệu mà không hề hay biết cấu

trúc của mô hình được xây dựng như thế nào.

NN là mô hình cơ bản của máy học (machine learning). Phương pháp học sâu

(deep learning) ra đời sau này phát triển từ máy học cơ bản với sự cải tiến từ bằng

cách gia tăng số lượng các tầng ẩn và mô hình của nó được gọi là deep neural

network. Mô hình học càng sâu tức là quá trình huấn luyện càng xử lý với nhiều

tầng. Mối liên kết giữa nhiều tầng ẩn trong học sâu cũng giống như mối liên kết

giữa các tầng trong máy học cơ bản. Đầu ra của một tầng ẩn này sẽ là đầu vào của

tầng ẩn tiếp theo. Qua quá trình huấn luyện với nhiều tầng ẩn, các thông tin được sẽ

phân tích, đối chứng rất chi tiết, mô hình sau khi huấn luyện hiểu biết cặn kẽ mọi

chiều hướng của dữ liệu, kết quả phân loại sẽ cho kết quả tối ưu hơn.

2.1.3. Các tiêu chuẩn đánh giá

Mục tiêu cuối cùng của các kỹ thuật phân lớp hình ảnh từ tập ảnh đầu mới

đầu vào thông qua mô hình đã được huấn luyện trước sẽ được phân vào các lớp đối

tượng thích hợp. Để có thể đánh giá được liệu kỹ thuật phân lớp đó hiệu quả hay

không, các nhà nghiên cứu cần sử dụng một số tiêu chuẩn đánh giá toàn bộ quá

trình kỹ thuật đó, có thực hiện. Tùy theo yêu cầu của người đánh giá, có thể nhiều

tiêu chuẩn khác nhau, tuy nhiên một số tiêu chuẩn không thể thiếu như : số lượng

dữ liệu đưa vào huấn luyện, độ chính xác, thời gian huấn luyện, giá trị lỗi (error-

rate) …

Kỹ thuật phân lớp ảnh dùng Convolutional Neural Network

Với sự phát triển hiện tại của ngành khoa học máy tính, cụ thể trí thông minh

nhân tạo thì mô hình học sâu (deep learning) đang là phương pháp mới nhất và

được nghiên cứu ứng dụng ngày càng phổ biến. Đối với bài toán phân lớp hình ảnh

thì cấu trúc mạng nơ-ron tích chập - Convolutional Neural Network (CNN) là tiêu

biểu nhất. Ngoài xử lý các bài toán về hình ảnh trong lĩnh vực thị giác máy tính,

CNN còn được sử dụng trong các hệ thống xử lý ngôn ngữ tự nhiên, các hệ hỗ trợ ra

quyết định…do khả năng linh hoạt và khả năng xử lý vấn đề sâu của nó.

24

Điểm đặc biệt khiến CNN được ưu tiên trong bài toán phân lớp ảnh bằng

phương pháp deep learning là khả năng xử lý độ lớn của tập dữ liệu [5]. Ý tưởng

của chúng ta trong deep learning là nếu cho máy tính học càng nhiều thì nó sẽ cho

kết quả phân lớp càng chính xác. Xét ví dụ trong tập dữ liệu hình ảnh chữ ký số

MNIST [10], một hình ảnh trong tập MNIST có kích thước 28x28 pixel. Tổng số

nơ-ron trong lớp đầu vào sẽ là 28 x 28 = 784, con số này có thể dễ dàng xử lý với

khả năng của máy tính hiện tại. Nhưng nếu với một ảnh có kích thước 1000x1000

pixel nghĩa là ta cần phải xử lý 106 nơ-ron và với một tập dữ liệu có từ vài trăm đến

vài nghìn dữ liệu thì số lượng phép tính cần xử lý để huấn luyện một tầng ẩn cũng là

một vấn đề lớn. CNN giải quyết được điều này, nó trích xuất các đặc trưng của hình

ảnh và chuyển đổi, giảm số chiều mà không mất đi các đặc trưng của ảnh đó.

Ý tưởng về mô hình CNN đầu tiên hình thành từ những năm thập niên 80 của

thế kỷ XX, sau đó được Yann LeCun nghiên cứu phát triển và đề xuất mô hình cho

bài toán nhận diện chữ ký số. Mô hình đầu tiên được đề xuất là LeNet-1, qua nhiều

lần cải tiến thành các mô hình LeNet-4 và LeNet-5. LeNet-5 được xem là mô hình

khá đầy đủ và có một cấu trúc ổn định. Nó đã chứng minh được tính ổn định, mạnh

mẽ, hiệu quả và là một mô hình đặt tiền đề cho các mô hình CNN sau này. Từ việc

giải quyết bài toán nhận diện chữ ký số với bộ dữ liệu MNIST, mô hình cũng có thể

ứng dụng giải quyết bài toán phân loại hình ảnh với bộ dữ liệu CIFAR-10. Các

nghiên cứu hiện nay cho thấy CNN có khả năng làm việc hiệu quả trên hầu hết các

bộ dữ liệu mẫu với việc thiết kế một mô hình với số tầng, các thông số, phương

pháp huấn luyện hợp lý.

25

Hình 2.9. Bộ dữ liệu chữ ký số MNIST

Hình 2.10. Bộ dữ liệu hình ảnh với 10 phân lớp CIFAR-10 [11]

26

2.2.1. Kiến trúc cơ bản của mô hình CNN

Hình 2.11. Một mô hình CNN với các thành phần cơ bản

Phát biểu một cách tổng quan đơn giản nhất khi quan sát hình trên, ta có thể

thấy bài toán nhận dạng hình ảnh với mô hình CNN [5] thực hiện một số bước như

sau :

- Phân giải hình ảnh thành một ma trận.

- Rút trích các đặc trưng trong ảnh.

- Tìm các đặc trưng tổng quát giữ lại, giảm mẫu, thu nhỏ số chiều.

- Đưa kết quả sau khi giảm mẫu vào một mạng nơ-ron để dự đoán.

- Ba bước trên có thể thực hiện nhiều lần tùy theo độ phức tạp của mô hình.

- Trả về kết quả phân lớp của ảnh theo thứ tự độ thuộc với từng phân lớp (Tức

là phân lớp có trọng số càng cao thì khả năng hình ảnh sẽ thuộc về phân lớp đó

và ngược lại với các phân lớp có trọng số nhỏ dần).

Ở hình ta thấy từ hình ảnh đầu vào qua nhiều tầng xử lý khác nhau sẽ cho kết

quả xử lý cuối cùng là các bản đồ đặc trưng và phân lớp ảnh. Hình 17 thể hiện 02

giai đoạn có trong một mô hình CNN là học đặc trưng (feature learning) và phân

lớp dữ liệu (classification). Công việc trích xuất các đặc trưng của hình ảnh với mô

hình CNN là hoàn toàn tự động, việc trích xuất sẽ có nhiều kết quả khác nhau dựa

vào cấu hình và số lượng của các tầng xử lý trong giai đoạn huấn luyện đặc trưng.

Sau đó các đặc trưng tổng quát cuối cùng sẽ được liên kết với nhau và đưa về những

phân lớp kết quả đầu ra. Không như các kỹ thuật phân lớp truyền thống tiến hành

27

việc phân lớp dựa trên các đặc trưng ảnh được rút trích thủ công, mô hình CNN

thực hiện việc rút trích đặc trưng ảnh này một cách tự động [5]. Đầu vào đơn giản là

hình ảnh mà bạn cần phân lớp, mô hình CNN sẽ thực hiện mọi thứ cho bạn và trả về

kết quả phân lớp mà bạn mong muốn. Việc này tiết kiệm được khá nhiều thời gian,

công sức cho người sử dụng, nhưng tất nhiên đổi lại cần phải có máy tính có cấu

hình tốt để giải quyết công việc xử lý, tính toán.

Cũng trên hình ta thấy những khái niệm ta cần quan tâm đối với một mô hình

CNN có thể kế đến là Convolution, ReLu, Pooling, Flatten, Fully Connected,

Softmax. Trong đó Convolution, Pooling, Fully Connected có thể nói là các tầng xử

lý chính còn ReLu, Flatten, Softmax là các kỹ thuật để hỗ trợ quá trình xử lý.

Tầng Convolution

Convolution có nghĩa là tích chập. Trong toán học, tích chập là một phép toán

thực hiện với hai hàm số f và g, kết quả cho ra một hàm số thứ 3. Trong lĩnh vực xử

lý ảnh, tích chập được sử dụng khá rộng rãi và hết sức quan trọng. Ví dụ : đối với

yêu cầu làm mờ ảnh, phép tích chập giữa ma trận lọc và ảnh gốc sẽ cho ra kết quả

ảnh đã được làm mờ (xóa nhiễu).

Công thức tích chập giữa hàm ảnh f (x, y) và bộ lọc k (x, y) (k là ma trận có

𝑚 2

𝑛 2 𝑓(𝑥, 𝑦) ∗ 𝑘(𝑥, 𝑦) = ∑ ∑ 𝑘(𝑢, 𝑣)𝑓(𝑥 − 𝑢, 𝑦 − 𝑣)

kích thước mxn) như sau :

𝑢=

𝑣=

−𝑚 2

−𝑛 2

(2.11)

Tầng tích chập là một tầng ẩn trong mô hình CNN được dùng để phát hiện và

trích xuất đặc trưng của hình ảnh. Giống như các tầng ẩn khác, tầng tích chập nhận

dữ liệu của tầng đầu vào (ở đây là ma trận biểu diễn ảnh cần phân lớp), tiến hành

các phép biến đổi (tích chập) để tạo ra dữ liệu đầu vào cho tầng tích chập ẩn kế tiếp.

Số lượng tầng tích chập là do nhà thiết kế mô hình xây dựng. Phép biến đổi được sử

dụng là phép tính tích chập. Mỗi tầng tích chập chứa một hoặc nhiều bộ lọc hay bộ

phát hiện đặc trưng (filter - feature detector) tùy theo người thiết kế mô hình cho

phép phát hiện và trích xuất các đặc trưng của hình ảnh.

28

Đặc trưng ảnh là những chi tiết xuất hiện trong ảnh, từ đơn giản như góc,

cạnh, hình dạng, chữ viết, chữ số tới đối tượng phức tạp hơn như đôi mắt, khuôn

mặt, hoặc đối tượng cụ thể như con chó, mèo, chiếc xe, đèn giao thông, …

Bộ lọc hay bộ phát hiện đặc trưng là các Kernel được biểu diễn dưới dạng ma

trận vuông (phổ biến nhất là ma trận 3x3 hay 5x5). Khái niệm Kernel là một thường

xuất hiện trong lĩnh vực thị giác máy tính thường dùng để biến đổi hình ảnh với một

mục đích nào đó. Mục đích của chúng trong mô hình CNN là giúp tăng cường, phát

hiện và trích xuất các loại đặ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...

Ảnh gốc

Áp dụng Kernel để phát hiện cạnh

Áp dụng Kernel tăng cường cạnh

29

Áp dụng Kernel làm sắc nét ảnh

Hình 2.12. Một số bộ lọc Kernel trong xử lý ảnh

Như đã thảo luận về việc CNN giải quyết được vấn đề hình ảnh có kích thước

lớn trong deep learning thì tầng tích chập này là bước để thực hiện điều đó. Ngay tại

tầng này, các bộ lọc sẽ áp vào từng điểm ảnh, vùng ảnh và trượt đến toàn bộ hình

ảnh theo thứ tự từ trái qua phải, từ trên xuống dưới. Mỗi lần áp một bộ lọc vào một

vùng trong ảnh, phép tính tích chập giữa bộ lọc và giá trị điểm ảnh trong vùng ảnh

đó sẽ được thực hiện. Sau phép tích chập này, kích thước ảnh sẽ bị giảm nhỏ lại.

Hình 2.13. Tích chập bộ lọc vào ảnh với stride = 1

Để xác định bộ lọc sẽ trượt qua các vùng ảnh như thế nào, ta có thêm tham số

bước trượt (Stride). Bước trượt là khoảng cách giữa 2 bộ lọc khi nó quét qua toàn

ảnh. Với stride = 1, bộ lọc sẽ quét 2 điểm ảnh ngay cạnh nhau, nhưng với stride = 2,

bộ lọc sẽ quét điểm số 1 và số 3, bỏ qua điểm số 2 ở giữa. Có thể thấy ở hình trên

với một ảnh có kích thước 5x5, sau khi áp dụng bộ lọc 3x3 với bước trượt là 1 thì

30

ảnh trích xuất ra sẽ giảm kích thước còn 3x3. Ta chọn bước trượt và bộ lọc càng lớn

thì ảnh đầu ra của ảnh sẽ càng giảm nhỏ. Nếu muốn giữ nguyên kích thước của ảnh

sau khi áp dụng bộ lọc thì ta có thể thêm vùng đệm (Padding). Bộ đệm này sẽ tạo

thêm một vùng ảnh trống bao quanh ảnh gốc, các điểm ảnh trống này có giá trị là 0,

do đó nó không làm ảnh hưởng đến kết quả tích chập ảnh với bộ lọc mà chỉ giúp giữ

nguyên kích thước của ảnh sau khi chập.

Hình 2.14. Tích chập bộ lọc vào ảnh với stride = 1 có thêm padding

Nếu chú ý ta có thể thấy một số bộ lọc mang giá trị âm, việc tích chập các bộ

lọc này với ảnh gốc sẽ tạo nên một số điểm có giá trị âm. Trên thực tế ảnh màu

thường được thể hiện và lưu trữ theo chuẩn RGB. Chuẩn màu RGB với 3 kênh màu,

mỗi kênh màu nhận giá trị dương từ 0 đến 255 (màu đen sẽ có dạng {0,0,0}, màu

trắng {255,255,255}, màu đỏ {255,0,0}, …) Để giải quyết các giá trị âm sau khi

tích chập, người ta sử dụng thêm các hàm kích hoạt (activation function) như

sigmoid, relu, elu… Một hàm kích hoạt điển hình là relu được sử dụng khá phổ biến

với nhiệm vụ chuyển tất cả các điểm ảnh giá trị âm về 0, lúc này đây các điểm ảnh

này sẽ có màu đen và những điểm ảnh khác được chạy qua bộ lọc sẽ được hiện rõ

hơn. Trong toán học, ReLu được gọi là một hàm phi tuyến tính.

31

Cuối cùng sau tất cả các tính toán, kết quả đầu ra của các tầng tích chập là một

biểu đồ đặc trưng (feature map) và tập đặc trưng này là một bản scan của đầu vào

ban đầu, nhưng được trích xuất ra các đặc trưng trừu tượng hơn.

Tầng Pooling

Tầng này có chức năng gần giống như một phần của tầng tích chập đó là làm

giảm kích thước của hình ảnh đầu vào. Ở đây toàn bộ các điểm ảnh đều được quét

qua với bước trượt tương tự định nghĩa ở hàm tích chập. Nhưng ở đây phép biến đổi

chỉ là so sánh và chọn điểm ảnh tiêu biểu để đại diện cho một vùng chọn chứ không

phải áp dụng một bộ lọc để làm thay đổi giá trị của từng điểm ảnh đó. Đôi khi trong

các nghiên cứu khác người ta đặt tên cho tầng này là subsampling (lấy mẫu nhỏ)

hay downsampling (giảm mẫu) với cùng một tính năng.

Ở tầng tích chập, mặc dù các bộ lọc làm giảm kích thước của hình ảnh nhưng

mỗi liên kết giữa những điểm ảnh cạnh nhau dường như vẫn được giữ lại. Nhưng ở

tầng pooling, việc giảm kích thước của hình ảnh dựa vào đặc trưng cục bộ vùng

đang xét duyệt, nó sẽ quyết định chọn một giá trị đại diện và loại bỏ các giá trị khác

trong phạm vi vùng đó. Tùy vào mục đích, yêu cầu của bài toán người ta sẽ sử dụng

tiêu chí để chọn giá trị đại diện bằng các hàm min pooling (lấy giá trị nhỏ nhất đại

diện), max pooling (lấy giá trị nhỏ nhất đại diện), average pooling (trung bình cộng

các giá trị làm đại diện),… Thông thường với mục tiêu tăng cường đặc trưng cho

ảnh để tiếp tục đưa vào huấn luyện ở các tầng kế tiếp, người ta thường sử dụng hàm

max pooling.

32

Hình 2.15. Minh họa tầng Pooling với pooling window = 2 và stide = 2

Thông thường trong một mô hình mạng CNN, tầng Pooling được nối trực tiếp

ngay sau tầng tích chập. Mục đích giúp hạn chế tham số mà ta cần phải tính toán, từ

đó giảm thời gian tính toán, tránh việc so sánh quá khớp (overfitting).

Tầng Fully Connected

Tầng FC là tầng cuối cùng của mô hình CNN, ở tầng này ta sẽ biết được cơ

sở để đưa ra quyết định về phân lớp của hình ảnh. Tầng FC sẽ sử dụng kết quả của

các tầng tích chập và pooling và chuyển thành một vector giá trị có độ dài là N, với

N tương ứng với số lớp cần phân lớp hay nhận diện. Ví dụ với bộ dữ liệu MNIST có

10 loại ký tự từ 0-9 nên tại tầng FC sẽ xuất ra một vector có chiều dài N = 10 với

giá trị đầu tiên của vector thể hiện cho phân lớp ký tự “0”, giá trị cuối cùng của

vector thể hiện cho phân lớp ký tự “9” và thứ tự này do chúng ta sắp xếp từ đầu

trước khi đưa tập dữ liệu vào huấn luyện. Cụ thể hơn với ví dụ bên dưới, tầng FC

trả về vector với 4 phân lớp theo thứ tự “dog”, “cat”, “boat”, “bird” với giá trị

{0.01 ; 0.04 ; 0.94 ; 0.02}. Với kết quả này thì phân lớp thứ 3 “boat” có giá trị cao

nhất 0.94, do đó kết quả hình ảnh đầu vào sẽ được dự đoán vào phân lớp “boat”.

33

Hình 2.16. Mô hình CNN với tầng FC cho kết quả dự đoán 4 phân lớp

Các đặc trưng đã được rút trích ở tầng tích chập và pooling được thực tế biểu

diễn ở dạng các ma trận nhiều chiều. Để FC có thể dùng được các đặc trưng này

phải thông qua một hàm đó là Flatten (làm phẳng), hàm này đã biến các ma trận đặc

trưng thành một vector. Ta có thể nhận thấy tầng FC có cấu trúc như một mô hình

NN đã được giới thiệu ở phần trước với nhiệm vụ lấy các thông tin đặc trưng đầu

vào và trả về phân lớp của hình ảnh. Tùy theo mô hình, tầng FC có thể được thực

hiện nhiều lần, mỗi lần như thế các đặc trưng của ảnh lại càng được trừu tượng hơn,

giống như một đặc trưng tổng quát mang tính đại diện cho từng phân lớp. Ví dụ với

hình ảnh con chó thì, từng điểm ảnh trong đó là những đặc trưng cấp thấp, sau khi

tổng hợp tạo thành những đặc trưng cấp cao hơn như lỗ tai, mũi, miệng, … Chính

những đặc trưng cấp cao này cho ta biết đây là hình ảnh của một con chó.

Nhưng thực tế lúc này đây, đầu ra của các tầng FC vẫn là một vector giá trị, và

thường nhiều hơn số lượng phân lớp ta cần phân chia. Ngay sau tầng FC, vector giá

trị sẽ được chuẩn hóa lần cuối bằng hàm Softmax (một hàm chuẩn hóa theo cơ số

mũ e trong toán học) để trả về phân bố xác suất với N phân lớp.

2.2.2. Một số kiến trúc CNN thông dụng

Như đã bàn luận ở phần trên, việc xây dựng kiến trúc của mô hình CNN hoàn

toàn tùy thuộc vào ý đồ của người thiết kế. Ở phần này, luận văn chỉ giới thiệu một

số kiến trúc mà tác giả nhận thấy nó được sử dụng, nhắc đến trong nhiều công trình

nghiên cứu khác, chứ không khẳng định mô hình nào là thông dụng nhất.

34

LeNet-5

LeNet [12] là một trong những kiến trúc CNN ra đời đầu tiên và nổi tiếng

nhất được Yann LeCin phát triển từ đầu năm 1998. Cấu trúc của LeNet có đầy đủ

các thành phần của một mạng CNN với các tầng Convolution, Pooling và tầng FC

để giải quyết bài toán nhận diện chữ ký số với bộ dữ liệu MINIST. Đến nay LeNet

đã trải qua nhiều phiên bản với độ lỗi (error rate) được cải tiến đáng kể LeNet-1

(1,7%), LeNet-4 (1,1%), LeNet-5 (0,95%), Boosted LeNet-4 (0,7%). Độ lỗi của mô

hình LeNet giảm dần do quá trình học của nó ngày càng sâu hơn, với nhiều tầng

convolution, pooling và FC hơn.

Hình 2.17. Mô hình LeNet-1

Hình 2.18. Mô hình LeNet-4

Hình 2.19. Mô hình LeNet-5

35

Thông số của mô hình LeNet-5:

- Kiến trúc tổng quát : Đầu vào - CONV - POOL - CONV - POOL - FC -

FC - Softmax - Đầu ra.

- Đầu vào : ảnh trắng đen 32x32 pixel

- CONV 1 : 6 bộ lọc 5x5, stride = 1, tạo thành 6 biểu đồ đặc trưng 28x28.

- POOL 1 : average pooling với bộ lọc 2x2, stride =2, tạo thành 6 biểu đồ

đặc trưng 14x14.

- CONV 2 : 16 bộ lọc 5x5, stride = 1, tạo thành 16 biểu đồ đặc trưng

10x10.

- POOL 2 : average pooling với bộ lọc 2x2, stride =2, tạo thành 16 biểu đồ

đặc trưng 5x5.

- FC 1 : gồm 120 nơ-ron 1x1 liên kết với 400 nơ-ron (5x5x16) từ tầng

trước.

- FC 2 : gồm 84 nơ-ron 1x1 liên kết với 120 nơ-ron từ tầng trước.

- Đầu ra : kích hoạt softmax, chuẩn hóa 84 nơ-ron thành phân bổ xác suất

cho 10 phân lớp.

VGG-16

VGG-16 hay VGGNet [13] là mô hình của nhóm tác giả Karen Simonyan và

Andrew Zisserman đề xuất trong cuộc thi ILSVRC năm 2014 của ImageNet (một

cuộc thi về nhận dạng hình ảnh với quy mô lớn). Mô hình VGGNet có độ lỗi thấp

nhất trong nhiệm vụ phân lớp hình ảnh trong cuộc thi.

36

Hình 2.20. Mô hình VGG-16

VGG-16 ra đời năm 2014 là một biến tấu độc đáo trong các mô hình mạng

CNN. Nếu một số mô hình trước đó như LeNet hay AlexNet đều xây dựng theo

kiểu lặp lại các cặp xử lý CONV – POOLING, thì ngoài phương thức này, VGG-16

sử dụng thêm các chuỗi Convolution liên tiếp CONV – CONV – CONV ở phân

đoạn giữa và cuối của mô hình. Việc này nếu suy xét có thể nói nó làm mất khá

nhiều thời gian trong khâu tính toán của mô hình nhưng kết quả đạt được của nó thì

đáng để cân nhắc. Các đặc trưng sau nhiều tầng tích chập liên tục vẫn sẽ được giữ

lại và khái quát hơn so với việc ta thực hiện pooling mỗi lần tích chập. Hơn nữa, ở

giai đoạn hiện tại, phần cứng của máy tính đã phát triển mạnh hơn với sự ra đời của

bộ xử lý đồ họa GPU khiến cho việc xử lý khối lượng phép tính phức tạp đã không

còn là một vấn đề quá khó khăn.

Mô hình được gọi là VGG-16 với con số 16 tương ứng với 13 tầng CONV và

3 tầng fully connected. Trong đó 13 tầng CONV được sắp theo thứ tự thực hiện 2

lần 2 tầng CONV – CONV và 3 lần 3 tầng CONV – CONV – CONV, sau mỗi lần

thực hiện sẽ thực hiện một lần max - pooling. VGG-16 có một phiên bản học sâu

hơn nữa là VGG-19 với một chút bổ sung là thêm 1 lần 3 tầng CONV – CONV –

CONV.

37

Hình 2.21. Mô tả quá trình xử lý của mô hình VGG-16

Như đã nêu về ý đồ giữ lại thật nhiều đặc trưng của ảnh nhất, mô hình VGG-

16 đã sử dụng những bộ lọc nhỏ nhất có thể. Mỗi tầng CONV sử dụng bộ lọc 3x3

với stride = 1. Tầng Pooling sử dụng phương pháp max-pooling với bộ lọc 2x2 với

stride = 2. Trong 3 tầng FC, thì 2 tầng đầu tiên đều có 4096 nơ-ron liên kết với

nhau, đến tầng cuối cùng để đáp ứng yêu cầu phân lớp 1000 ảnh của ILSVRC 2014

thì nó mới sử dụng hàm softmax để đưa về 1000 nơ-ron.

Mô hình VGG đã chiến thắng một số đối thủ mạnh như AlexNet và

GoogLeNet. Nó đã được chứng minh rằng độ sâu của mô hình học có ảnh hưởng

cao đến độ chính xác của bài toán phân loại và bằng cách sử dụng kiến trúc CNN

thông thường với độ sâu tăng đáng kể vẫn có thể đạt được hiệu suất tốt trên bộ dữ

liệu lớn và đầy thách thức như ImageNet.

ResNet

Tiếp tục với cuộc thi ILSVRC năm 2015 của ImageNet [3], một mô hình mới

đã được đề xuất với độ lỗi chỉ còn 3,57%. Đó chính là mô hình ResNet [14] do các

nhà nghiên cứu của Microsoft phát triển. ResNet là viết tắt của Residual Network,

một mô hình dựa trên cấu tạo cơ bản của CNN, ý tưởng của nó có một điểm giống

với VGG-16 là tạo thành nhiều tầng để cho việc học được sâu hơn.

Một số thuật toán deep learning (với nhiều tầng và số lượng tham số lớn)

thường gặp phải vấn đề vanishing gradient hoặc exploding gradient [14]. Ta sẽ đi

nhanh về 2 khái niệm này, gradient trong toán học có nghĩa là đạo hàm. Trong

CNN, ta biết việc huấn luyện của mô hình chính là việc cập nhật các trọng số sao

cho các đặc trưng được trích xuất của ảnh phù hợp nhất với phân lớp của ảnh. Việc

tìm giá trị lớn nhất hay nhỏ nhất chính là tính đạo hàm của hàm số đó. Trên thực tế

38

khi ta càng học sâu hơn, đi xuống các tầng thấp hơn thì giá trị của đạo hàm sẽ nhỏ

dần tới một mức độ nhất định thì nó dường như không còn thay đổi trọng số của đặc

trưng nữa, khiến chúng không hội tụ thì hiện tượng này gọi là vanishing gradient.

Trong một số trường hợp khác thì ngược lại, đạo hàm làm các giá trị trọng số bị

thay đổi quá lớn làm cho nó phân kỳ (hay phân rã) thì hiện tượng này gọi là

exploding gradient. Vấn đề khó khăn của deep learning ta phải tăng số tầng để mô

hình học sâu hơn và cho kết quả tối ưu hơn nhưng khi tăng số tầng quá lớn thì độ

chính xác của mô hình lại bắt đầu bão hòa, thậm chí có nguy cơ bị giảm, tức là mô

hình không học được gì thêm nữa.

Đóng góp lớn nhất của ResNet là tìm ra giải pháp cho vấn đề này. Residual có

thể dịch là phần thừa hay phần còn lại. Nhưng ở đây tác giả hướng tới tính kế thừa

từ các phần trước đó. Ý tưởng chính của mô hình là tạo thành các residual block

nhằm tạo mối liên kết đến với các tầng đã thực hiện trước đó. Giống như việc ta học

tập lại kinh nghiệm do cha ông để lại.

Hình 2.22. Mô tả một residual block

Trong hình trên, với x là đặc trưng đã được học, qua một số tầng convolution

và pooling ta thu được các đặc trưng F(x). Ta sẽ gộp cả x và F(x) lại và đưa vào

tầng sau để học tiếp, việc này sẽ khiến mô hình dễ học hơn và có sự thay đổi rõ rệt

thay vì không học thêm được gì thêm khi hàm F(x) đã tiến đến bão hòa.

Với cách làm này ResNet có 2 phiên bản là ResNet 34 và ResNet 50. Cơ bản 2

phiên bản này chỉ khác nhau về cấu trúc của một residual block. ResNet 34 sử dụng

bộ lọc 3x3 ở 2 tầng CONV và giữ nguyên kích thước của ảnh. Trong khi ResNet 50

lại có cấu tạo như nút thắt cổ chai, nó dùng các bộ lọc 1x1 để giảm kích thước ảnh ở

tầng đầu tiên và khôi phục kích thước ở tầng cuối kèm theo một bộ lọc 3x3 để xử lý

39

ở tầng giữa. Việc này giúp làm giảm số lượng phép tính khi chỉ phải áp dụng một

bộ lọc 3x3 với một kích thước ảnh đã giảm đi một nữa.

Hình 2.23. Cấu trúc của ResNet 34 và ResNet 50

Hình 2.24. Mô tả qui trình tính toán của ResNet 50

Trong hình trên, ta có thể thấy ResNet là một mô hình học sâu với 4 khối

convolution. Mỗi khối thể hiện một loạt các phép tích chập trên cùng một kích

thước ảnh và áp dụng cấu trúc 3 tầng của ResNet 50. Biểu đồ đặc trưng của ảnh

được giảm tịnh tiến bằng các lần tích chập với sự gia tăng độ sâu của quá trình học

ở mỗi khối. Các đường nét liền thể hiện tính kế thừa từ những đặc trưng đã học

trước của một tầng. Các đường nét đứt thể hiện tính kế thừa những đặc trưng đã học

từ một khối với số chiều nhỏ hơn trước đó. Về sau người ta phát triển một mô hình

khác là ResNeXt cũng bằng việc thay đổi lại cấu trúc residual block.

DenseNet

DenseNet [15] (Dense connected convolutional network) được công bố năm

2017. Ý tưởng đằng sau DenseNet đơn giản là việc tham chiếu các biểu đồ đặc

trưng từ tầng trước trong mạng có thể rất hữu ích. Do đó, biểu đồ đặc trưng của mỗi

40

tầng được nối với đầu vào của mỗi tầng liên tiếp trong một khối dense. Điều này

cho phép các tầng sau trong mạng tận dụng trực tiếp các đặc trưng từ các tầng trước

đó, các đặc trưng trong mạng được tái sử dụng nhiều lần và hiệu quả hơn.

Hình 2.25. Biểu diễn mô hình DenseNet

Cái tên dense tức là dày đặc ban đầu có thể khiến ta lo lắng về độ phức tạp, số

lượng phép tính toán khổng lồ phải thực hiện. Tuy nhiên, do mạng có khả năng sử

dụng trực tiếp bất kỳ biểu đồ tính năng nào trước đó, các tác giả nhận thấy rằng họ

có thể huấn luyện sâu hơn với số chiều của đầu ra rất nhỏ (ví dụ chỉ với 12 bộ lọc

mỗi tầng), giúp giảm đáng kể tổng số tham số cần thiết. Các tác giả gọi số lượng bộ

lọc được sử dụng trong mỗi tầng tích chập là tốc độ tăng trưởng (growth rate), vì

mỗi tầng liên tiếp sẽ có nhiều lớp (đó là kết quả của việc tích lũy và nối tất cả các

lớp trước của tầng trước với đầu vào của tầng tiếp theo). Với một mô hình CNN

truyền thống nếu chúng ta có N tầng thì sẽ có N liên kết được tạo ra, còn với

DenseNet sẽ tạo ta tới N * (N+1) / 2 liên kết.

Hình 2.26. Số lượng liên kết giữa các tầng trong DenseNet

Hãy tưởng tượng ban đầu ta có một ảnh (28,28,3). Ta khởi tạo biểu đồ đặc

trưng bằng phép tích chập tạo ra một lớp (28,28,24). Sau mỗi lớp tiếp theo (trong

dense block) nó sẽ tạo thêm K = 12 đặc trưng. Khi đó đầu ra tiếp theo sẽ là

(28,28,24 +12), (28,28,24 +12+12). Ở mỗi khối dense sẽ có normalization,

nonlinearity và dropout. Để giảm kích thước và độ sâu của biểu đồ đặc trưng thì các

41

tầng chuyển đổi (transition layer) sẽ được đặt giữa các khối dense, nó gồm CONV

có bộ lọc 1x1, POOL dùng phép average pooling (2x2) với stride = 2, đầu ra giảm

thành (14,14,48).

Ưu điểm của DenseNet so với ResNet là nó cho cùng kết quả độ chính xác khi

thử nghiệm trên bộ dữ liệu của ImageNet với chỉ một nửa số phép tính toán. Việc sử

dụng hiệu quả các biểu đồ đặc trưng cũng giúp DenseNet giải quyết hiệu quả vấn đề

overfitting và vashing gradient.

2.2.3. Tập dữ liệu đầu vào cho mô hình CNN

Đối với phương pháp máy học và học sâu, tập dữ liệu đóng vai trò rất quan

trọng, không có dữ liệu, máy tính không thể học được. Cho dù thuật toán có hiệu

quả hoặc kích thước của tập dữ liệu lớn như thế nào thì với một bộ dữ liệu không đủ

tốt, toàn bộ mô hình sẽ thất bại. Tùy theo mục đích mà yêu cầu của bài toán mà ta

có thể sử dụng những bộ dữ liệu phổ biến trong lĩnh vực, những bộ dữ liệu được

người dung cung cấp sẵn hoặc tự chuẩn bị thu thập dữ liệu theo ý muốn.

Một bộ dữ liệu cơ bản sẽ được chia làm 2 thành phần: bộ dữ liệu huấn luyện

(training dataset) và bộ dữ liệu kiểm tra (test dataset). Bộ dữ liệu huấn luyện bao

gồm cả dữ liệu đầu vào và phân lớp đầu ra của nó. Bộ dữ liệu này được đưa vào

trong mô hình CNN để huấn luyện, tạo nên các biểu đồ đặc trưng và mạng nơ-ron

liên kết các đặc trưng, từ đó cập nhật các trọng số để kết quả dữ liệu được đưa về

gần chính xác với phân lớp đã xác định từ trước nhất. Bộ dữ liệu kiểm tra được sử

dụng để đánh giá hiệu quả của mô hình sau khi đã được huấn luyện. Cụ thể là với

mô hình đặc trưng đã được huấn luyện trước đó, phần trăm số lượng ảnh trong tập

này được dự đoán phân lớp chính xác sẽ thể hiện hiệu quả của mô hình. Do đó, để

đảm bảo tính khách quan, 2 bộ dữ liệu này phải tách biệt, không đan xen lẫn nhau.

Bởi vì những dữ liệu trong bộ dữ liệu huấn luyện đã được mô hình cân chỉnh các

trọng số, nếu đưa vào kiểm tra việc cho ra kết quả phân lớp đúng là đương nhiên.

Việc phân chia tỉ lệ dữ liệu trong 2 tập này cũng khá quan trọng, người ta đã

nghiên cứu và sử dụng một số phương pháp phân chia phổ biến có thể kể đến như

Hold-Out hay K-Fold Cross-Validation [16].

42

Phương pháp Hold-Out

Trong phương pháp Hold-Out, tập dữ liệu đầu vào được phân chia một cách

ngẫu nhiên thành 2 phần là : tập dữ liệu huấn luyện và tập dữ liệu kiểm tra. Thông

thường 2/3 dữ liệu được cấp cho tập dữ liệu huấn luyện và 1/3 còn lại đưa vào trong

tập dữ liệu kiểm tra (một số nghiên cứu khác có thể sử dụng tỉ lệ 80 - 20).

Phương pháp này thích hợp cho các tập dữ liệu lớn và ít có thời gian để huấn

luyện mô hình. Tuy nhiên, do việc lấy ngẫu nhiên nên các mẫu có thể không đại

diện cho toàn bộ dữ liệu (thiếu phân lớp trong tập kiểm tra). Để khắc phục điểm yếu

này có thể cải tiến bằng cách dùng phương pháp lấy mẫu sao cho mỗi lớp được

phân bố đều trong cả 2 tập dữ liệu huấn luyện và kiểm tra.

Phương pháp K-Fold hay Cross-Validation

K-Fold hay một cái tên khác là Cross-Validation : đây là phương pháp nâng

cấp của Hold-Out. Toàn bộ tập dữ liệu sẽ được chia thành K tập con. Quá trình học

của máy sẽ diễn ra K lần. Trong mỗi lần, một tập con được dùng để kiểm tra và K-1

tập còn lại dùng để huấn luyện, cứ như thế đến khi tất cả K tập con đều đã được

dùng để kiểm tra.

Với nhiều lần huấn luyện và kiểm tra như thế rõ ràng có thể thấy phương pháp

này sẽ tốn nhiều thời gian để máy tính xử lý. Nhưng bù lại, có thể nó sẽ cho ta kết

quả tốt hơn với việc huấn luyện kỹ càng như thế.

2.2.4. Độ đo đánh giá mô hình

Đánh giá hiệu quả của một mô hình máy học là phải đo được mức độ chính

xác mà mô hình trả về sau quá trình huấn luyện với bộ dữ liệu. Thường người ta sẽ

tập trung vào khả năng dự đoán của mô hình hơn là tốc độ phân loại hay xây dựng

mô hình, khả năng co dãn…

Với việc trả về kết quả phân lớp của một đối tượng dữ liệu, cơ bản ta sẽ thu

được 4 giá trị kết quả sau đây :

- TP (true positive) : dự đoán đúng việc dữ liệu có thuộc phân lớp

- FP (false positive) : dữ liệu không thuộc phân lớp nhưng lại dự đoán là có

- TN (true negative) : dự đoán đúng việc dữ liệu không thuộc phân lớp

43

- FN (false negative) : dữ liệu thuộc phân lớp nhưng lại dự đoán là không

Confusion-Matrix

Để hiểu 4 giá trị TP, FP, TN, FN, ta lấy một ví dụ nhỏ bằng kết quả dự đoán

phân lớp ảnh xe hơi như sau :

Phân lớp dự đoán

Xe hơi Không phải xe hơi

Xe hơi TP FN Phân lớp thực tế

Không phải xe hơi FP TN

Confusion-Matrix [17] là một loại biểu đồ thể hiện sự tương quan giữa giá trị

trả về của phân lớp dự đoán so với phân lớp thực tế ban đầu. Trên thực tế người ta

biểu diễn Confusion-Matrix tương quan giữa tất cả phân lớp của toàn tập dữ liệu để

quan sát bao nhiêu dữ liệu được phân lớp đúng và nếu sai thì nó sẽ đưa vào phân

lớp nào từ đó điều chỉnh các thông số của mô hình, tập dữ liệu cho phù hợp.

Hình 2.27. Biểu đồ Confusion-Matrix với 5 phân lớp

Accuracy

Dựa trên mối liên hệ của 4 giá trị kết quả, người ta lập công thức để tính được

độ chính xác (Accuracy) của mô hình như sau :

44

𝐴𝑐𝑐𝑢𝑟𝑎𝑐𝑦 = (2.12) 𝑇𝑃 + 𝑇𝑁 𝑇𝑃 + 𝑇𝑁 + 𝐹𝑃 + 𝐹𝑁

Ở đây, độ chính xác được hiểu là những dự đoán đúng của mô hình trên tổng

số kết quả dự đoán được. Từ đó, ta sẽ có thêm khái niệm độ lỗi (Error_rate) của mô

hình sẽ được tính bằng công thức

Error_rate = 1 – Accuracy (2.13)

Precision và Recall

Precision là tỷ lệ kết quả dự đoán đúng phân lớp trên tất cả dự đoán đúng của

toàn mô hình. Giá trị ta quan tâm ở đây với một phân lớp bất kỳ thì bao nhiêu kết

quả mà mô hình có thể phân lớp đúng là bao nhiêu, còn việc mô hình đánh giá dữ

liệu này thuộc một phân lớp nào đó khác thì không quan trọng.

𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛 = (2.14) 𝑇𝑃 𝑇𝑃 + 𝐹𝑃

Recall là tỷ lệ kết quả dự đoán đúng trên tổng số dữ liệu thuộc về phân lớp đã

được biết. Tỷ lệ này rất quan trọng, ta có thể thấy nếu với một bộ dữ liệu đầu vào ta

đã phân lớp sẵn, thì việc mô hình bỏ mất nhiều dữ liệu phân lớp này hết sức tai hại

và ảnh hưởng nhiều đến hiệu quả của mô hình.

𝑅𝑒𝑐𝑎𝑙𝑙 = (2.15) 𝑇𝑃 𝑇𝑃 + 𝐹𝑁

Độ đo F1

Để dung hòa 2 giá trị Precision và Recall, người ta tạo ra thêm một giá trị độ

đo F1 để xem xét mức độ đóng góp của cả 2 giá trị này. Giá trị F1 càng cao tức là

mô hình càng tốt, tỷ lệ dự đoán đúng cao và tỷ lệ bị không bỏ mất dữ liệu cũng cao.

2 𝐹1 𝑠𝑐𝑜𝑟𝑒 = = (2.16) 2 ∗ 𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛 ∗ 𝑅𝑒𝑐𝑎𝑙𝑙 𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛 + 𝑅𝑒𝑐𝑎𝑙𝑙 + 1 𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛 1 𝑅𝑒𝑐𝑎𝑙𝑙

Qua chương này ta đã tìm hiểu được những kỹ thuật phân lớp cơ bản nhất.

Trong nhiều năm qua, các nhà khoa học đã không ngừng nghiên cứu, cải tiến các kỹ

45

thuật tiên tiến để giải quyết bài toán phân lớp hình ảnh, đây luôn là chủ đề nóng

trong lĩnh vực thị giác máy tính. Mục đích chính trong những cải tiến này là làm sao

tạo nên một mô hình vừa phù hợp với nguồn dữ liệu ban đầu, vừa dễ cài đặt, thực

thi, tiết kiệm chi phí, thời gian xử lý của máy nhưng vẫn mang lại hiệu suất khả

quan nhất.

46

CHƯƠNG 3. MÔ HÌNH CNN CHO PHÂN LỚP ĐỒNG PHỤC SINH VIÊN

CÁC KHOA CỦA TRƯỜNG ĐẠI HỌC SƯ PHẠM TP. HCM

Với những kết quả nghiên cứu được từ những kỹ thuật xử lý bài toán phân lớp

hình ảnh ứng với yêu cầu đã đặt ra là phân lớp hình ảnh đồng phục của sinh viên.

Trong những kỹ thuật đó, CNN là một kỹ thuật học sâu phổ biến, ưu điểm của nó là

dễ xây dựng và thực thi, mọi công việc từ rút trích các đặc trưng của hình ảnh đến

việc nghiên cứu, phân tích mối liên hệ giữa các đặc trưng để đánh giá, đưa ra kết

luận về phân lớp của hình ảnh. Do đó, trong chương này, tác giả sẽ chọn hướng tiếp

cận của kỹ thuật CNN và tiến hành đề xuất mô hình để huấn luyện trên tập dữ liệu

hình ảnh đồng phục sinh viên do tác giả thu thập.

Tiền xử lý ảnh và chuẩn hóa dữ liệu

Tập dữ liệu đầu vào của bài toán là ảnh màu kỹ thuật số chụp các sinh viên có

mặc đồng phục áo khoa trong quá trình sinh hoạt tại trường. Tập ảnh lấy 2 nguồn

chính là từ các trang mạng xã hội của sinh viên và từ các Đoàn Thanh niên - Liên

chi hội Sinh viên của khoa. Tất cả tập ảnh đều đã được bộ phận quản lý của Đoàn

Thanh niên - Liên chi hội Sinh viên của khoa kiểm tra và gắn nhãn. Với giới hạn và

thời gian cho phép của luận văn, tác giả đã liên hệ và thu thập hình ảnh của 4 khoa

thuộc Trường Đại học Sư phạm Thành phố Hồ Chí Minh để thí nghiệm mô hình

bao gồm các khoa : Giáo dục Tiểu học, Giáo dục Mầm non, Giáo dục Đặc biệt,

Công nghệ Thông tin.

Do thu thập dữ liệu từ nhiều nguồn cung cấp khác nhau, các hình ảnh này có

thể là ảnh khổ đứng (portrail) hoặc khổ ngang (landspace) và mỗi ảnh lại có kích

thước khác nhau. Với một chiếc điện thoại hiện nay có thể chụp được một tấm hình

có kích thước từ 3000 đến 4000 pixel, trong khi con số này với một chiếc máy ảnh

có thể lên tới vài chục nghìn pixel. Hình ảnh càng lớn, số lượng đặc trưng đầu vào

càng nhiều thì quá trình huấn luyện sẽ tốn nhiều thời gian. Tất nhiên hình ảnh càng

chi tiết thì quá trình huấn luyện sẽ đạt kết quả tốt nhưng phải làm sao cân đối cho

hợp lý giữa thời gian huấn luyện và hiệu suất thì việc thực thi mô hình mới có ý

nghĩa. Do đó tất cả dữ liệu hình ảnh sẽ được chuẩn hóa để giảm kích thước và đưa

về cùng một tỉ lệ để thuận lợi cho quá trình huấn luyện.

47

Hình 3.1. Minh họa một số ảnh thu thập trong tập dữ liệu đồng phục sinh viên

Thông thường người ta thường chuẩn hóa hình ảnh theo tỉ lệ 1 : 1, ví dụ như

32x32 trong bộ dữ liệu CIFAR-10 hay 28x28 trong các bộ dữ liệu MINST,

FASHION MINST… Nhưng tùy theo cấu trúc của hình ảnh, một số nhà nghiên cứu

có thể tùy chỉnh tỉ lệ này sao cho phù hợp. Ví dụ như chia tập dữ liệu thành 3 tập

con với tỉ lệ hình ảnh là 128x128 và 64x128. Với mục tiêu tập trung vào huấn luyện

phần đồng phục áo khoa, tác giả đề xuất thử nghiệm với tỉ lệ chiều ngang và chiều

dọc là 2 : 3 (ví dụ : 100 -150 pixel) để chiếu theo chiều dọc của thân áo.

48

Ảnh thực tế Ảnh sau khi chuẩn hóa

Kích thước : 2400 x 1600 pixel

Kích thước: 1000 x 1500 pixel

Kích thước: 1000 x 1500 pixel

Kích thước: 1000 x 1500 pixel

49

Kích thước: 1000 x 1500 pixel

Kích thước: 1400 x 2100 pixel

Hình 3.2. Mô tả giai đoạn chuẩn hóa hình ảnh

Đề xuất mô hình CNN

Như đã giới thiệu ở trên, một số kỹ thuật phân lớp ảnh thông thường cần phải

kết hợp với một kỹ thuật rút trích đặc trưng phía trước. Công việc trích xuất đặc

trưng này là một trong những thế mạnh của kỹ thuật phân lớp bằng mô hình CNN.

Quá trình rút trích đặc trưng được thực hiện hoàn toàn tự động trong mô hình CNN.

Trong quá trình nghiên cứu, tác giả nhận thấy các mô hình CNN nổi tiếng và

hiện đại như VGG-16, VGG-19, ResNet-34, ResNet-50, ResNeXt, DenseNet… đã

được huấn luyện sẵn trên bộ dữ liệu của ImageNet và đạt được những kết quả rất

khả quan. Tuy nhiên ImageNet là một kho dự liệu ảnh khổng lồ bao phủ trên nhiều

lĩnh vực, với nhiều đặc tính khác nhau trong khi kết quả hướng đến của bài toán đặt

ra là chỉ xác định phân lớp đồng phục áo của một số khoa nên qui mô thực tế tương

50

đối nhỏ hơn. Bên cạnh đó, cấu trúc của các mạng này khá phức tạp, để có thể thực

thi được cần phải các bộ công cụ chuyên biệt và yêu cầu những GPU có khả năng

mạnh nhằm tăng tốc đáng kể cho quá trình huấn luyện.

Trước những khó khăn đó, tác giả đề xuất một mô hình CNN đơn giản hơn,

lấy ý tưởng từ những mô hình CNN trước đó cho bài toán phân lớp đồng phục áo

sinh viên của 04 khoa thuộc Trường. Công việc xử lý chính trong việc rút trích các

đặc trưng để huấn luyện được thực hiện tương đối giống với mô hình LeNet-5 bằng

các tầng convolution và pooling liên kết với nhau. Nhưng thay vì chỉ thực hiện 2 lần

CONV - POOL, mô hình này hướng tới việc học sâu hơn như VGG-16 nhưng

không quá sâu do thời gian và khả năng phần cứng máy tính không đáp ứng được.

Do đó việc huấn luyện các đặc trưng của mô hình sẽ gồm 4 tầng CONV - POOL.

Sau những tầng này, để giảm bớt sự liên kết quá khớp giữa các đặc trưng, tác giả sẽ

sử dụng thêm các hàm Dropout. Phần cuối của mô hình sẽ là 2 tầng FC với vector

cuối cùng sẽ có 4 giá trị phù hợp với 4 phân lớp ảnh đầu vào.

Tập dữ liệu đầu vào của mô hình sẽ gồm 4 phân lớp tương ứng với đồng phục

áo sinh viên 4 khoa Giáo dục Tiểu học, Giáo dục Mầm non, Giáo dục Đặc biệt,

Công nghệ Thông tin. Tập dữ liệu này sẽ được phân chia thành 02 tập con là tập dữ

liệu huấn luyện và tập dữ liệu kiểm tra bằng phương pháp Hold-Out (1/3 cho tập

kiểm tra và 2/3 cho tập huấn luyện).

Để dễ hình dung, ta có thể xem những thông số của mô hình mạng CNN trong

quá trình chạy thực nghiệm bằng ngôn ngữ Python trên môi trường Anaconda 3 -

Jupyter Notebook:

51

Hình 3.3. Cấu trúc mô hình CNN trong quá trình thực nghiệm thay đổi tỉ lệ tập

huấn luyện và kiểm tra

52

Hình 3.4. Minh họa mô hình CNN đề xuất cho bài toán phân lớp đồng phục

53

Hình trên mô tả mô hình CNN cho bài toán phân lớp đồng phục sinh viên.

Bài toán phân lớp đồng phục bao gồm 5 khối thực thi chính : khối đầu tiên sử dụng

đầu vào là các hình ảnh thuộc tập dữ liệu huấn luyện để rút trích các đặc trưng cơ

bản với bộ lọc có kích thước 2x2 và tiến hành max-pooling để giảm mẫu biểu đồ

đặc trưng ; 3 khối tiếp theo cũng rút trích các đặc trưng với số lượng bộ lọc tăng dần

và tiến hành max-pooling, tuy nhiên do sử dụng nhiều bộ lọc, các khối này sẽ thực

hiện dropout để tránh xảy ra tình trạng overfitting ; khối cuối cùng là các tầng FC,

được giảm nhỏ dần để tiến tới vector giá trị cuối cùng có độ dài bằng với số lượng

phân lớp ban đầu, khối này cũng thực hiện thêm một lần dropout để tránh

overfitting.

Mô hình CNN đề xuất sẽ được hiện thực hóa trên ngôn ngữ Python. Tác giả

sẽ sử dụng một số bộ thư viện hỗ trợ trong việc xây dựng mô hình và hoàn thiện hệ

thống phân loại ảnh sử dụng trong ngôn ngữ Python như Tensorflow, Keras.

Quá trình huấn luyện mô hình và phân lớp hình ảnh

Quá trình huấn luyện dữ liệu thông thường sẽ yêu cầu cân chỉnh một số tham

số như Filter, Epoch, Batch size, ... Số lượng tham số, giá trị tham số thay đổi sẽ

cho kết quả huấn luyện khác nhau. Việc lựa chọn thông số phù hợp sẽ tốn thời gian

thực nghiệm nhưng cũng chính là điều phải làm để đạt được kết quả tối ưu.

Với tập dữ liệu không quá lớn, số lượng phân lớp khá ít nên việc áp dụng mô

hình kiến trúc mạng đơn giản 4 tầng ở trên có thể áp dụng được và có thể đạt được

hiệu suất tốt cũng như thời gian xử lý cũng nhanh. Tuy nhiên để mô hình CNN đạt

kết quả tốt thì nó phải được huấn luyện với nhiều dữ liệu, do đó trong quá trình thực

hiện có thể dùng thêm một số phương pháp xử lý ảnh để gia tăng số lượng hình ảnh

như xoay hình, tăng giảm cường độ sáng, co giãn hình…

Mô hình sử dụng bộ lọc có kích thước nhỏ, số lượng bộ lọc ở từng tầng tích

chập tăng tiến theo bội số của 2 (4,8,12,16) giúp mô hình học ngày càng sâu hơn

cùng với và để kích hoạt biểu đồ đặc trưng sau mỗi lần tích chập thì tác giả sử dụng

hàm kích hoạt ReLu. Bên cạnh đó, hàm max-pooling cũng được sử dụng sau mỗi

tầng tích chập vừa giảm kích thước vừa tăng cường biểu đồ đặc trưng.

54

Để đánh giá hiệu suất huấn luyện mô hình CNN trên, tác giả sử dụng một số

giá trị như Training Accuracy, Training Loss, Test Accuracy. Mô hình cũng dùng

phương pháp Hold-Out để phân chia bộ dữ liệu ban đầu. Trên thực tế, tập dữ liệu

huấn luyện được chia thành hai phần là phần dữ liệu huấn luyện và phần dữ liệu đối

sánh (validation) với mục đích trong mỗi lần huấn luyện, mô hình sẽ kiểm tra kết

quả phân lớp sau khi cập nhật các trọng để tiếp tục huấn luyện trong những lần tiếp

theo.

Quá trình thu thập và tiền xử lý nguồn dữ liệu hình ảnh đã được mô tả trong

chương này. Tác giả cũng đã dựa trên ý tưởng từ các mô hình CNN nổi tiếng như

LeNet và VGG để đề xuất một mô hình CNN với 5 khối xử lý chính bao gồm 4 tầng

CONV - POOL, 2 tầng FC và 4 lần Dropout. Việc thực nghiệm mô hình và đánh giá

kết quả sẽ được nhắc đến ở chương tiếp theo.

55

CHƯƠNG 4. THỰC NGHIỆM VÀ BÀN LUẬN

Dựa trên mô hình CNN đã đề xuất, tác giả sẽ tiến hành thực nghiệm để đưa ra

kết luận và hướng giải quyết cho bài toán phân lớp hình ảnh đồng phục sinh viên.

Chương này sẽ mô tả kỹ quá trình thực nghiệm và nguồn dữ liệu hình ảnh được sử

dụng trong quá trình thực nghiệm huấn luyện và kiểm tra mô hình đã nêu.

Cơ sở dữ liệu

Thông qua hệ thống Đoàn Thanh niên - Hội Sinh viên Việt Nam của 4 khoa

Giáo dục Tiểu học, Giáo dục Mầm non, Giáo dục Đặc biệt, Công nghệ Thông tin,

hình ảnh được gửi về từ cá nhân các sinh viên, các chi đoàn, chi hội (tương đương

với một lớp học) và kể cả kho hình ảnh của các khoa. Nội dung trong ảnh thể hiện

những sinh viên đang mặc áo đồng phục của khoa trong quá trình học tập, vui chơi,

tham gia các hoạt động ngoại khóa.

Dữ liệu thu thập được là ảnh màu được chụp bằng các thiết bị di động hoặc

máy chụp hình (có thể là ảnh gốc hoặc tải lại từ các phương tiện lưu trữ tạm thời)

với nhiều kích thước và định dạng khác nhau, (*.jpg, *png, *jpeg, *raw, *nef …).

Trong quá trình thu thập, tác giả cũng đặt ra yêu cầu trong hình ảnh có đối tượng

chính là sinh viên và chỉ xuất hiện một bạn sinh viên trong hình (không quan tâm

đến nền phía sau) để việc.

Tuy nhiên trong quá trình tổng hợp hình ảnh tác giả cũng đã kiểm tra lại một

số hình ảnh xuất hiện nhiều hơn 1 sinh viên trong hình, tác giả cũng đã sử dụng các

phần các mềm xử lý ảnh chuyên dụng để điều chỉnh hình ảnh tập trung về 1 đối

tượng duy nhất. Sau đó, tất cả các ảnh đều được chuẩn hóa về cùng một kích thước

là 1000 x 1500 pixel (W x H) (bất kể hình đang ở khổ đứng hay khổ ngang).

56

Hình 4.1. Mô tả một số hình ảnh sau khi tổng hợp và chuẩn hóa cơ bản

Các hình ảnh này được sắp xếp lại thành các thư mục được đặt tên theo những

chữ cái đầu tiên của tên khoa và số lượng hình ảnh theo cú pháp: “tên viết tắt” + “_”

+ “số lượng ảnh”. Ví dụ khoa Giáo dục Tiểu học có 641 là thư mục “GDTH_641”.

Bảng 4.1. Thống kê số lượng và dung lượng của tập ảnh đồng phục sinh viên.

Khoa Số lượng ảnh Tên thư mục Dung lượng

Giáo dục Tiểu học 641 GDTH_641 461 MB

Giáo dục Mầm non 476 GDMN_476 559 MB

Giáo dục Đặc biệt 383 GDDB_383 266 MB

Công nghệ Thông 517 CNTT_517 618 MB

tin

Với số lượng dữ liệu ảnh như trên cũng tương đối khả quan cho mô hình huấn

luyện của CNN. Tuy nhiên, để cho mô hình được huấn luyện sâu hơn, tác giả sử

dụng thêm một số phép biến đổi ảnh cơ bản để đa dạng hóa và gia tăng số lượng

hình ảnh của tập dữ liệu ban đầu. Việc làm nay theo thuật ngữ chuyên ngành gọi là

Data Augmentation, trong quá trình thử nghiệm, tác giả cũng sẽ thử nghiệm huấn

luyện trước và sau khi dùng Data Augmentation.

Các phép biến đổi được sử dụng là:

- Xoay sang phải 3 độ

- Xoay sang trái 5 độ

57

- Xoay sang phải 7 độ

- Tăng cường độ sáng

- Giảm cường độ sáng

Với tổng số lượng hình ảnh ban đầu là 2017 tấm, sau khi thực hiện Data

Augmentation thì tập dữ liệu sẽ có 12,102 tấm. Các ảnh sau khi được biến đổi sẽ

được đặt tên khác để phân biết lẫn nhau và với ảnh gốc ban đầu. Cú pháp đặt tên

như sau: “tên ảnh gốc” + “_” + “tên loại biến đổi”. Qui ước tên loại biến đổi như

sau: xoay sang phải 3 độ - “rotate 3”, xoay sang trái 5 độ - “rotate -5”, xoay sang

phải 7 độ - “rotate 7”, tăng cường độ sáng - “Light”, giảm cường độ sáng - “Dark”.

Ví dụ với ảnh gốc là “IMG_4800.jpg” sẽ có thêm 5 ảnh bản sao được biến đổi là

“IMG_4800_rotate 3.jpg”, “IMG_4800_rotate -5.jpg”, “IMG_4800_rotate 7.jpg”,

“IMG_4800_Light.jpg”, “IMG_4800_Dark.jpg”.

Hình 4.2. Mô tả quá trình áp dụng các phép biến đổi trên ảnh gốc

58

Môi trường thực nghiệm

Thiết bị thực nghiệm: máy tính PC với bộ vi xử lý Intel(R) Xeon(R) CPU E5-

2686 v4 2.30 GHz, hệ điều hành Window Server 2016, bộ nhớ RAM 8GB.

Ngôn ngữ lập trình: ngôn ngữ Python phiên bản 3.6.5 kết hợp với các bộ thư

viện hỗ trợ máy học: Keras và Tensorflow.

Môi trường lập trình: Jupyter Notebook - Anaconda 3

Hình 4.3. Môi trường thực nghiệm

Tập dữ liệu thực nghiệm: sử dụng cùng một tập dữ liệu tự thu thập có sử dụng

một số phép biến đổi để tăng thêm số lượng ảnh.

Bảng 4.2. Thống kê số liệu tập dữ liệu đầu vào

Số ảnh gốc / Số ảnh tăng thêm / Thư mục ảnh Tổng cộng dung lượng dung lượng

CNTT 517 / 618 MB 2585 / 3,1 GB 3102 / 3,71 GB

GDDB 383 / 266 MB 1915 / 1,38 GB 2298 / 1,64 GB

GDTH 641 / 461 MB 3205 / 2,42 GB 3846 / 2,88 GB

GDMN 476 / 559 MB 2380 / 3,82 GB 2856 / 4,37 GB

Tổng cộng 2017 / 1,86 GB 10085 / 11,4 GB 12102 / 12,6 GB

59

Quá trình thực nghiệm

Sử dụng phương pháp Hold-Out để chia tập dữ liệu thành 2 phần là tập dữ liệu

huấn luyện và tập dữ liệu kiểm tra. Trong tập dữ liệu huấn luyện sẽ có một phần để

huấn luyện các đặc trưng và một phần để so sánh và cập nhật các trọng số. Thực

nghiệm thay đổi tỉ lệ phân chia 2 tập huấn luyện và kiểm tra để so sánh kết quả.

Hình ảnh sau khi được chuẩn hóa bằng các công cụ xử lý ảnh chuyên dụng

thông qua hệ thống sẽ được chuẩn hóa về tỉ lệ 2:3 với các kích thước từ lớn đến nhỏ

như: 150 x 225, 100 x 150, 50 x 75 pixel. Mục tiêu là kiểm tra ảnh hưởng của kích

thước ảnh đầu đến hiệu suất của mô hình và lựa chọn kích thước phù hợp.

Thử nghiệm huấn luyện với bộ dữ liệu gốc đồng thời với bộ dữ liệu đã được

tăng thêm số lượng để kiểm tra hiệu quả của mô hình với việc xử lý bộ dữ liệu lớn

và kết quả của việc huấn luyện sâu hơn.

Tăng dần số lần huấn luyện epoch để so sánh tốc độ xử lý của mô hình, kết

hợp đối chiếu với các tham số khác để chọn những bộ tham số vừa hiệu quả về độ

chính xác vừa tiết kiệm được thời gian xử lý.

Kết quả thực nghiệm

4.4.1. Tỉ lệ tập huấn luyện và kiểm tra

Với bước thực nghiệm này, tập dữ dữ liệu đầu vào sẽ được chia thành 2 tập

con là tập dữ liệu huấn luyện và tập dữ liệu kiểm tra. Tỉ lệ phân bố giữa 2 tập này sẽ

được điều chỉnh trong quá trình thực nghiệm. Đối với tập dữ liệu huấn luyện, tổng

số hình ảnh sẽ được chia thành 2 phần với tỉ lệ 1:1, một phần để tiến hành huấn

luyện và một phần dùng để kiểm tra, cập nhật trọng số của mô hình.

Trong bước này ta sẽ tiến hành thực nghiệm với bộ dữ liệu ảnh gốc ban đầu

chưa qua biến đổi tăng thêm ảnh với 4 thư mục ảnh: CNTT_517, GDTH_641,

GDMN_476, GDDB_383 (con số phía sau diễn tả số lượng ảnh có trong thư mục).

Kích thước ảnh đầu vào được sử dụng thử nghiệm với tỉ lệ thấp nhất là 75x50 pixel

để tiết kiệm thời gian xử lý. Số lần huấn luyện thử nghiệm là 400 epoch giúp mô

hình học sâu hơn và xem thử kết quả phân lớp khả quan đến mức nào.

Với ảnh đầu vào là 75x50, mô hình sẽ sử dụng 4 bộ lọc tích chập để tiến hành

rút trích đặc trưng của ảnh, kết quả quá trình này sẽ không làm thay đổi kích thước

60

ảnh, chỉ tăng số chiều thành 4. Tầng Max-Pooling sau đó sẽ thu nhỏ kích thước ảnh

còn 37x25 và vẫn giữ nguyên 4 chiều. Cứ thế tiếp tục 3 tầng CONV – POOL ta sẽ

có lần lượt kích thước ảnh và số liệu là (18x12,8); (9x6,12); (4,3x16), lưu ý mỗi

tầng này đều có sử dụng Dropout. Tầng FC ban đầu sẽ trải biểu đồ đặc trưng thành

vector có độ dài 192 (4x3x16) sau đó tạo liên kết với vector có độ dài 256 và vector

cuối cùng có độ dài là 4 (tương ứng với 4 phân lớp đồng phục của 4 khoa)

Trong quá trình thực nghiệm tỉ lệ phân bố tập dữ liệu huấn luyện và tập dữ

liệu kiểm tra. Tỉ lệ của tập dữ liệu kiểm tra sẽ được tăng dần từ 10% đến 90%. Kết

quả sẽ được thể hiện qua 3 thông số đánh giá là model accuracy (độ chính xác của

quá trình huấn luyện mô hình với tập dữ liệu huấn luyện), model loss (độ lỗi dữ liệu

trong quá trình huấn luyện) và test accuracy (độ chính xác của mô hình trên tập dữ liệu

kiểm tra).

Tỉ lê tập kiểm tra 10%:

61

Hình 4.4. Kết quả thực nghiệm khi chia bộ dữ liệu theo tỉ lệ 10-90

Giá trị hàm lỗi thấp nhất của mô hình là 0.20254 tại lần huấn luyện (epoch)

thứ 358/400. Theo biểu đồ ta có thể quan sát trong những lần huấn luyện đầu tiên,

độ chính xác và độ lỗi của mô hình biến thiên nhanh và có biên độ thay đổi rộng. Ta

có thể dễ hiểu sự biến đổi này diễn ra liên tục và mạnh do thời gian đầu mô hình chỉ

mới rút trích và liên kết các biểu đồ đặc trưng ban đầu, với kết quả phân lớp còn

thấp, mô hình tiến hành thay đổi các trọng số của đặc trưng để tiến hành huấn luyện

lại với mục tiêu kết quả phân lớp được cao nhất có thể. Giai đoạn từ lần huấn luyện

thứ 200 trở về sau thì độ biến thiên này chậm dần và bắt đầu có xu hướng bão hòa.

Lần huấn luyện thứ 358 có độ lỗi dữ liệu thấp nhất, các lần huấn luyện tiếp theo đến

400 không thể cập nhật trọng số nào tốt hơn. Điều này cho thấy việc cập nhật trọng

số đã bắt đầu có hiệu quả, độ chính xác của mô hình tăng cao nhưng vẫn chỉ có thể

đạt đến một mức độ giới hạn.

Tỉ lê tập kiểm tra 20%:

62

Hình 4.5. Kết quả thực nghiệm khi chia bộ dữ liệu theo tỉ lệ 20-80

Ở tỉ lệ này ta thấy được tốc độ biến thiên của mô hình tương đối giống như

chia với tỉ lệ 10 - 90, đến lần huấn luyện khoảng 200 thì độ lỗi của mô hình mới

giảm đáng kể và có xu hướng giảm chậm dần, có khả năng bão hòa. Giá trị hàm lỗi

thấp nhất của mô hình là 0.17033 tại lần huấn luyện thứ 379/400. Khoảng cách từ

lần thứ 379 đến 400 ngắn, vì thế nếu huấn luyện tiếp có khả năng giá trị này sẽ còn

được cải thiện tiếp. Tổng quan ta có thể thấy tỉ lệ này có vẻ là tốt hơn tỉ lệ đầu tiên

mà ta thử nghiệm là 10 – 90.

Tỉ lê tập kiểm tra 30%:

Hình 4.6. Kết quả thực nghiệm khi chia bộ dữ liệu theo tỉ lệ 30-70

Tỉ lệ 30 – 70 gần như tương đương với tỉ lệ 2/3 mà ta đã nhắc khi bình luận

về phương pháp Hold-Out, 1/3 cho tập dữ liệu kiểm tra và 2/3 cho tập dữ liệu huấn

luyện. Nhìn chung, qua 3 lần thử nghiệm đầu tiên ta thấy được 3 tỉ lệ này cho ra kết

63

quả về độ chính xác và độ lỗi của mô hình tương đối giống nhau nhiều. Giá trị hàm

lỗi thấp nhất của mô hình là 0.20737 nhưng kết quả có được từ lần huấn luyện thứ

364/400. Nếu tỉ lệ này cho ra giá trị tốt mà thời điểm bão hòa nhanh hơn, tức là thời

gian và số lần huấn luyện cần thiết giảm bớt, ta có thể xem xét đến việc lựa chọn tỉ

lệ này. Tác giả tiến hành thực nghiệm thêm với tỉ lệ phân bố nhiều hơn cho tập kiểm

tra để xem thử tỉ lệ 30 - 70 này có còn được cải thiện hơn nữa không.

Tỉ lê tập kiểm tra 50%:

Hình 4.7. Kết quả thực nghiệm khi chia bộ dữ liệu theo tỉ lệ 50-50

Với tỉ lệ phân chia 40 – 60 thì độ biến thiên của biểu đồ đã có sự thay đổi và

độ lỗi của mô hình đang có chiều hướng tăng lên. Tác giả không miêu tả tỉ lệ này

mà đi đến tỉ lệ 50 – 50 ta để thấy rõ hơn sự thay đổi này. Độ biến thiên các giá trị độ

chính xác và độ lỗi của mô hình đã bắt đầu tăng, giảm đều. Ta có thể thấy giá trị của

độ lỗi cũng có dấu hiệu bão hòa nhưng vẫn còn ở mức độ rất cao. Cụ thể ở lần huấn

64

luyện thứ 384/400 giá trị này đã đạt mốc thấp nhất là 0.34659. Con số này cao gấp

rưỡi so với 3 tỉ lệ đầu mà ta phân bổ. Có thể nhận thấy nếu càng gia tăng số lượng

hình ảnh của tập kiểm tra thì chất lượng của mô hình sẽ giảm. Điều này là tất nhiên

bởi số lượng hình ảnh trong tập huấn luyện đã giảm đi nhiều, mô hình không được

huấn luyện nhiều thì không thể nào cho kết quả tốt được.

Tác giả đã tiến hành thực nghiệm từ tỉ lệ 10 – 90 đến tỉ lệ 90 – 10 và lập biểu

đồ một số giá trị của mô hình trong quá trình thực nghiệm. Ngoài các giá trị đã phân

tích ở trên, độ chính xác của mô hình khi dùng hình ảnh từ tập dữ liệu kiểm tra và

tốc độ xử lý cũng được lưu lại để đối chiếu.

Bảng 4.3. Thống kê kết quả thực nghiệm thay đổi tỉ lệ phân bố tập dữ liệu

Tỉ lệ tập kiểm tra Model_Loss Thời điểm Test_Accuracy

10 % 0.20254 358/400 92.0792

20 % 0.17033 379/400 93.3168 9

30 % 0.20737 364/400 93.8944

40 % 0.23423 400/400 90.9542

50 % 0.34659 384/400 92.3687

60 % 0.4612 308/400 89.5128

70 % 0.29931 387/400 90.5099

80% 0.44836 291/400 85.1921

90% 1.10426 94/100 63.326

120

100

80

60

40

20

0

10%

20%

30%

40%

50%

60%

70%

80%

90%

Test Accuracy

Model Loss

65

Hình 4.8. Kết quả thực nghiệm thay đổi tỉ lệ phân bố tập dữ liệu

Biểu đồ và hình ảnh trên đã phần nào thể hiện kết quả của bước thực nghiệm

bằng cách thay đổi tỉ lệ phân chia tập dữ liệu huấn luyện và tập dữ liệu tập huấn. Rõ

rang ta có thể thấy số lượng hình ảnh là một tiêu chí thiết yếu với việc sử dụng mô

hình CNN để huấn luyện các đặc trưng của hình ảnh. Song dù số lượng hình ảnh

nhiều hay ít thì tỉ lệ phân bố cho tập dữ liệu huấn luyện và kiểm tra phải hợp lý, tỉ lệ

này nên được chọn từ 20 đến 30 phần trăm trong toàn tập dữ liệu. Với kết quả thực

nghiệm này, tác sẽ sử dụng tỉ lệ 30 – 70 để tiếp tục thử nghiệm ở các bước sau.

4.4.2. Kích thước ảnh đầu vào

Tập dữ liệu gốc sau khi thu thập về đã được chuẩn hóa về cùng một kích thước

1000 x 1500 pixel để đảm bảo tính nhất quán của dữ liệu. Sở dĩ tác giả không chuẩn

hóa về kích thước nhỏ để phù hợp với mô hình huấn luyện với CNN là để có thể thử

nghiệm với nhiều kích thước khác nha. Tại lần thử nghiệm này tác giả sử dụng 3

kích thước ảnh lần lượt giảm dần là 150 x 225 pixel, 100 x 150 pixel và 50 x 75

pixel. Mỗi lần thực nghiệm, tác giả đều sử dụng bộ ảnh 1000 x 1500 rồi đưa về các

kích thước đề xuất để giữ nguyên chất lượng của hình ảnh, không bị mất đặc trưng

khi giảm tỉ lệ ảnh nhiều lần. Tỉ lệ phân bố tập dữ liệu như đã nêu ở trên là 30 – 70

(lúc này tập huấn luyện sẽ có 1411 ảnh và còn lại 606 ảnh cho tập kiểm tra).

66

Hình 4.9. Cấu trúc mô hình khi thay đổi kích thước các tập ảnh đầu vào

Quan sát sự thay đổi các giá trị đầu vào của các tang CONV – POOL –

DropOut. Kích thước ảnh càng lớn thì độ dài của vector được trải ra càng lớn và gấp

nhiều lần so với những tầng sau. Ta tiến hành kiểm tra độ lỗi và kết quả phân lớp

của mô hình với 3 kích thước tập dữ liệu ảnh đầu vào trên.

Hình 4.10. Kết quả mô hình sử dụng tập ảnh đầu vào 50 x 75 pixel

Như đã phân tích ở trên, với tập dữ liệu ảnh đầu vào 50 x 75 pixel, độ lỗi của

mô hình giảm dần qua các lần huấn luyện và kết quả qua 400 lần huấn luyện cũng

67

khá tốt với chỉ hơn 20%. Tuy nhiên biên độ giảm của độ lỗi với tập dữ liệu này gần

như tạo thành một góc 45 độ, kết quả này có thể cho là rất khả quan.

Hình 4.11. Kết quả mô hình sử dụng tập ảnh đầu vào 100 x 150 pixel

Với tập ảnh đầu vào lớn hơn thì trong những lần huấn luyện đầu tiên, sự biến

thiên của độ lỗi có vẻ mịn hơn, không tăng giảm liên tục nhiều như ở kích thước 50

x 75 pixel. Ở khoảng từ lần huấn luyện thứ 200/400 thì độ lỗi của mô hình mới

giảm đến ngưỡng 50% nhưng tới đây, nó không tiếp tục giảm mạnh mà chỉ giao

động nhẹ. Độ lỗi tối ưu nhất của mô hình sau 400 lần huấn luyện chỉ đạt ở mức

0.41682, thấp gấp đôi so với khi thử nghiệm với kích thước 50 x 75 pixel. Giá trị

này đạt được ở lần huấn luyện thứ 304/400, có thể thấy độ lỗi của mô hình đã bão

hòa và gần 100 lần huấn luyện cũng không cải thiện được gì hơn.

Hình 4.12. Kết quả mô hình sử dụng tập ảnh đầu vào 150 x 225 pixel

68

Với lần huấn luyện này, kết quả có mô hình không khả quan hơn so với kích

thước 100 x 150 pixel. Cũng qua 200 lần huấn luyện thì mới giảm độ lỗi tới ngưỡng

gần 50%, thậm chí khi tiếp tục huấn luyện thêm thì cũng không cải thiện được nữa.

Bảng 4.4. Thống kê kết quả thực nghiệm với 3 kích thước ảnh đầu vào

Kích thước Model_Accuracy Model_Loss Test_Accuracy Time cost

50 x 75 0.9404 0.20737 93.8944% 708s

100 x 150 0.9915 0.41682 89.7690% 2707s

150 x 225 1.0000 0.53224 84.8185% 6247s

Qua thực nghiệm với 3 kích thước trên ta có thể nhận thấy với một mô hình

học sâu như CNN, không nhất thiết phải sử dụng hình ảnh quá lớn vẫn có thể đạt

được kết quả phân lớp tốt. Thông qua các nhân chập, đặc trưng của ảnh được rút

trích và sau đó được cường hóa bằng tầng max-pooling thế nên nếu kích thước của

ảnh không thay đổi quá nhiều thì kết quả cũng sẽ không bị ảnh hưởng nhiều. Tuy

nhiên nếu xét ở góc độ khác, số lượng hình ảnh hiện đang dùng còn khá ít, mô hình

chưa được huấn luyện kỹ nên có thể kết quả trên chưa phải là điểm kết. Do đó như

đã nêu, tác giả sẽ sử dụng một số kỹ thuật xử lý ảnh để tăng thêm số lượng hình ảnh

cho tập huấn luyện. Trong phần tiếp theo bộ dữ liệu tăng thêm này sẽ được sử dụng.

4.4.3. Tăng thêm số lượng ảnh đầu vào

Số lượng hình ảnh đầu vào luôn là một vấn đề được quan tâm với những kỹ

thuật phân lớp hình ảnh bằng CNN. Các kỹ thuật xử lý ảnh đã được áp dụng để gia

tăng đáng kể số lượng hình ảnh đầu vào cho tập huấn luyện. Như đã nêu, tác giả đã

sử dụng 5 phép biến đổi ảnh cơ bản để có được tập ảnh đầu vào có hơn 12000 ảnh

chia thành 4 phân lớp.

Số lượng ảnh đầu vào gia tăng sẽ dấn đến thời gian xử lý của máy tính sẽ dài

hơn với mỗi lần huấn luyện. Do đó ở giai đoạn đầu tác giả sẽ giảm bớt số lần huấn

luyện xuống còn 100 lần và tiếp tục thử nghiệm với 3 kích thước như trước.

69

Hình 4.13. Kết quả thực nghiệm với bộ dữ liệu tăng thêm kích thước 50 x75

Với sự gia tăng số lượng ảnh cho tập huấn luyện, mô hình CNN đã có sự thay

đổi rõ rệt. Sự biến thiên của độ lỗi ở bước thực nghiệm này tương đối mịn hơn so

với giai đoạn chưa tăng thêm số lượng ảnh, độ lỗi có chiều hướng giảm dần qua các

lần huấn luyện. Chỉ với 100 lần huấn luyện, mô hình đã đạt được kết quả phân lớp

với độ chính xác hơn 90% và độ lỗi giảm xuống mức dưới 20%. Độ lỗi ghi nhận ở

lần thứ 100/100 là tối ưu nhất với giá trị 0.18078, thấp hơn cả khi huấn luyện 400

lần như ở giai đoạn trước. Với sự cải thiện của kết quả ở lần huấn luyện thứ 100

này, mô hình có thể vẫn còn có thể học nhiều lần hơn nữa để cho kết quả khả quan

hơn.

70

Hình 4.14. Kết quả thực nghiệm với bộ dữ liệu tăng thêm kích thước 150x225

Khác với khi chưa sử dụng tập dữ liệu ảnh được tăng thêm, với số lượng ảnh

lớn hơn nhiều, dù cho kích thước ảnh của đầu vào như thế nào thì đều cho kết quả

khá tốt. Cũng giống với khi dùng kích thước tập đầu vào 50x75 pixel, độ lỗi của mô

hình CNN với kích thước 150x225 pixel cũng giảm dần đều qua 100 lần huấn

luyện. Độ lỗi ghi nhận ở lần thứ 100/100 là tối ưu nhất với giá trị 0.02508, thậm chí

kết quả này còn cao hơn khi dùng kích thước 50x75 pixel.

Ta tiến hành so sánh các kết quả khi sử dụng 3 kích thước 50 x 75, 100 x 150,

150 x 225 pixel với tập ảnh đầu vào đã được tăng thêm bằng cách phép biến đổi

hình ảnh qua 100 lần huấn luyện.

Bảng 4.5. Thống kê kết quả thực nghiệm với bộ dữ liệu tăng thêm

Kích thước Model_Accuracy Model_Loss Test_Accuracy Time cost

50 x 75 0.9464 0.1808 94.4368% 1060s

71

100 x 150 0.9809 0.0502 98.7882% 5550s

0.9809

0.987882

0.9906

0.987882

0.9464

0.944368

0.1808

0.0502

0.02508

1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0

50x75 pixel

100 x 150 pixel

150 x 225 pixel

Model_Accuracy

Model_Loss

Test_Accuracy

150 x 225 0.9906 0.02508 98.7882% 9557s

Hình 4.15. Tổng hợp kết quả sau khi huấn luyện 100 lần với bộ dữ liệu tăng thêm

Qua biểu đồ và hình ảnh minh họa ta có thể thấy với cả 3 kích thước khác

nhau, độ chính xác của mô hình khi huấn luyện và kiểm thử đều đạt kết quả rất khả

quan và xấp xỉ nhau trong khoảng từ 94% đến 99%, cụ thể giá trị thấp nhất với kích

thước 50x75 pixel là 94.64%, cao nhất với kích thước 150x225 pixel 99.06%. Khi

kích thước ảnh nhỏ 50x75 pixel thì độ chính xác phân lớp thấp hơn gần 5% so với

độ chính xác phân lớp với các kích thước lớn hơn. Chỉ còn giá trị model_loss có sự

khác biệt rõ rệt. Đây có thể là một tiêu chí để ta lựa chọn kích thước đầu vào cho tập

huấn luyện.

Tuy nhiên sau 100 lần huấn luyện, theo như biên độ thay đổi của các giá trị thì

khả năng mô hình vẫn còn có khả năng cái thiện hơn nữa, do đó luận văn đề xuất

tiếp tục tiến hành thực nghiệm với 300 lần huấn luyện.

Bảng 4.6. Thống kê kết quả thực nghiệm huấn luyện 300 lần với bộ dữ liệu tăng thêm

Kích thước Model_Accuracy Model_Loss Test_Accuracy Time cost

50 x 75 0.9809 0.03648 99.2289% 3173s

100 x 150 0.9967 0.01230 99.5594% 12535s

150 x 225 0.9979 0.01630 99.2289% 42853s

0.9809

0.992289

0.9967

0.995594

0.9979

0.992289

0.03648

0.0163

0.0123

1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0

50x75 pixel

100 x 150 pixel

150 x 225 pixel

Model_Accuracy

Model_Loss

Test_Accuracy

72

Hình 4.16. Tổng hợp kết quả sau khi huấn luyện 300 lần với bộ dữ liệu tăng thêm

Hình 4.17. Huấn luyện 300 lần với bộ dữ liệu tăng thêm kích thước 50 x 75

Với lần thử nghiệm với 300 lần huấn luyện, mô đã cho thế những kết quả rõ

nét hơn. Độ lỗi của mô hình đã gần tiến về giá trị 0, tuy nó đã tương đối bão hòa và

không thể đạt giá trị tuyệt đối nhưng đây là một cải thiện rất lớn. Trong 100 lần

huấn luyện đầu tiên độ lỗi giảm mạnh đến khoảng 0.2 và từ đó về sau giảm đều qua

mỗi lần huấn luyện cập nhật các trọng số. Giá trị hàm lỗi sau 300 lần huấn luyện

bây giờ chỉ còn 0.03648, giảm gần 6 lần khi chỉ huấn luyện 100 lần.

So sánh kết quả khi huấn luyện 300 lần với cả 3 kích thước tập ảnh đầu vào, ta

thấy được độ chính xác của mô hình của 3 tập xấp xỉ bằng nhau, độ lỗi cũng đã

73

được cải thiện đáng kể. Đó là so sánh dựa trên kết quả, nếu nhìn nhận ở góc độ năng

suất của mô hình ta sẽ thấy mô hình huấn luyện với kích thước nhỏ là tốt hơn. Một

lần huấn luyện với tập ảnh có kích thước 50 x 75 pixel trung bình mất khoảng 10s,

trong khi với tập ảnh có kích thước 100 x 150 pixel mất khoảng 42s và 142s đối với

tập ảnh có kích thước 150 x 225 pixel. Xét tổng quan kể cả về hiệu suất và năng

suất của mô hình thì ta nên lựa chọn mức độ trung bình đáp ứng được cả 2 tiêu chí

đó là tập ảnh có kích thước 100 x 150 pixel.

4.4.4. Tổng kết kết quả thực nghiệm

Sau quá trình thực nghiệm bằng mô hình CNN với 5 khối xử lý chính bao gồm

4 tầng Convolution, 4 tầng Max-Pooling, 4 tầng DropOut và 2 tầng Fully

Connected với tỉ lệ phân chia bộ dữ liệu gốc bằng phương pháp Hold-Out 1/3 cho

tập kiểm tra và 2/3 cho tập huấn luyện, kết quả phân lớp tốt nhất đạt 93.8944% đối

với tập dữ liệu gốc 2017 ảnh và 99.5594% đối với tập dữ liệu ảnh được tăng thêm

12102 ảnh.

Với bộ dữ liệu ảnh thu thập được, tác giả đã đưa trực tiếp những ảnh này vào

mô hình CNN để huấn luyện. Việc này có thể làm ảnh hưởng đến kết quả phân lớp

của mô hình. Với mục đích phân lớp đồng phục, ảnh dữ liệu có thể chia làm 2 phần,

phần ảnh chứa áo đồng phục sinh viên đang mặc và phần ảnh nền khung cảnh xung

quanh. Không loại trừ tường hợp có những phần nền của các ảnh tương đồng nhau,

trong quá trình huấn luyện, mô hình CNN đã học luôn những đặc trưng của ảnh này

và đó là những đặc trưng gây nhiễu dẫn đến một số ảnh có phần quá nền giống nhau

đã bị đưa về cùng phân lớp. Việc này có thể giải thích cho kết quả cao của mô hình

CNN đã thực nghiệm, để kết quả phân lớp chính xác hơn, ta có thể kết hợp sử dụng

các kỹ thuật nhận diện vùng ảnh áo đồng phục để việc huấn luyện đặc trưng được

tập trung hơn.

Dựa trên kết quả thực nghiệm có thể đưa ra một số bàn luận rằng với bộ dữ

liệu có khối lượng không quá đồ sộ thì tỉ lệ phân bố số lượng ảnh cho tập dữ liệu

huấn luyện phải đủ lớn để cho việc huấn luyện được nhiều hơn và thường tỉ lệ tốt

nhất giao động từ khoảng 70 - 80% toàn tập dữ liệu.

74

Với mô hình học sâu như CNN thì việc sử dụng hình ảnh kích thước nhỏ sẽ

giúp mạng rút trích được nhiều đặc trưng toàn cục nhưng một số đặc trưng tốt có

thể bị mất nhưng ưu điểm là tốc độ huấn luyện nhanh, trong khi sử dụng hình ảnh

có kích thước lớn hơn, nhiều chi tiết hơn thì mô hình sẽ rút trích được nhiều đặc

trưng tốt nhưng bỏ có thể bỏ lỡ một số đặc trưng toàn cục. Không cần quá quan

trọng về kích thước của ảnh, tùy thuộc vào hoàn cảnh sử dụng và yêu cầu thực tế để

lựa chọn, không có kích thước nào được gọi là phù hợp với mọi trường hợp cả.

Với bài toán phân lớp hình ảnh dùng phương pháp mạng nơ-ron tích chập

CNN, thì dữ liệu là một thành phần khá quan trọng. Tuy nhiên CNN vẫn cho kết

quả khá khả quan với những bộ dữ liệu không quá lớn. Bên cạnh đó để phát huy

điểm mạnh của CNN trên những tập dữ liệu lớn, ta có thể sử dụng một số biện pháp

tăng thêm ảnh Data Augmentation để tăng thêm số lượng hình ảnh cho phần huấn

luyện.

Với ý tưởng sơ khai là một phương pháp học sâu, số lượng dữ liệu càng nhiều,

mô hình càng được huấn luyện kỹ thì kết quả phân tích sẽ càng cao. Nhưng không

phải vì thế mà ta phải xây dựng một mô hình CNN đồ sộ qua nhiều tầng xử lý, mô

hình càng cồng kềnh thì thời gian và khả năng thực thi càng khó khăn, vất vả hơn.

Do đó phải xây dựng một cấu trúc mô hình CNN hợp lý, vừa phải, dựa trên đặc

điểm của bộ dữ liệu và yêu cầu đặt ra.

75

CHƯƠNG 5. KẾT LUẬN VÀ KHUYẾN NGHỊ

Kết luận

Luận văn đã nghiên cứu về bài toán phân lớp hình ảnh, các kỹ thuật phân lớp

cơ bản, các tiêu chí để đánh giá hiệu năng của kỹ thuật phân lớp ảnh về độ chính

xác, độ lỗi, thời gian huấn luyện. Tập trung nghiên cứu kỹ hơn về kỹ thuật phân lớp

bằng CNN, các mô hình CNN phổ biến phù hợp cho bài toán phân lớp ảnh.

Luận văn tìm hiểu và mô hình hoá bài toán phân lớp hình ảnh đồng phục sinh

viên với nguồn ảnh được thu thập từ trong quá trình sinh hoạt thường ngày của sinh

viên trong trường và tiếp cận giải quyết bài toán bằng mô hình CNN, một trong

những kỹ thuật phân lớp ảnh tiên tiến hiện nay. Đây là một bài toán phân lớp màu

với đầu vào là hình ảnh được chụp bằng các thiết bị ghi hình như điện thoại, máy

ảnh và được chuẩn hoá tỉ lệ ảnh để có thể làm đầu vào cho mô hình CNN.

Luận văn đã tiến hành thu thập bộ dữ liệu hình ảnh đồng phục sinh viên của 4

khoa Giáo dục Tiểu học, Giáo dục Mầm non, Giáo dục Đặc biệt và Công nghệ

Thông tin trực thuộc Trường Đại học Sư phạm Thành phố Hồ Chí Minh. Tập dữ

liệu này gồm có 2017 hình ảnh đồng phục đã được tiền xử lý về tỉ lệ 2:3 và được

gán nhãn bởi Ban Chấp hành Đoàn Thanh niên của các khoa, Ban Chấp hành Đoàn

Trường.

Luận văn đã đề xuất được mô hình CNN với 5 khối xử lý chính bao gồm 4

tầng Convolution, 4 tầng Max-Pooling, 4 tầng DropOut và 2 tầng Fully Connected

cho phân lớp 4 loại hình ảnh đồng phục sinh viên khoa: đồng phục khoa Giáo dục

Tiểu học, đồng phục khoa Giáo dục Mầm non, đồng phục khoa Giáo dục Đặc biệt

và đồng phục khoa Công nghệ Thông tin. Luận văn đã thực nghiệm mô hình CNN

trên bộ dữ liệu ảnh thu thập được từ chính các sinh viên đang học tập tại các khoa

Giáo dục Tiểu học, Giáo dục Mầm non, Giáo dục Đặc biệt và Công nghệ Thông tin

trực thuộc Trường Đại học Sư phạm Thành phố Hồ Chí Minh. Kết quả thực nghiệm

như đã trình bày trong chương 4 cho thấy tính khả thi của mô hình đề xuất.

Ngoài ra, luận văn đã làm rõ được tính mới của đề tài. Kết quả nghiên cứu có

thể được sử dụng trước mắt trong nội bộ Trường Đại học Sư phạm Thành phố Hồ

Chí Minh với bộ dữ liệu được tổng hợp trực tiếp từ các sinh viên trong trường.

76

Kiến nghị

Về mặt lý thuyết, tiến hành nhiều thực nghiệm hơn để từ đó tìm ra quy luật

xác định kiến trúc và các tham số tối ưu của mô hình CNN cho bài toán phân lớp

đồng phục sinh viên thay vì như hiện nay, luận văn phải tiến hành nhiều thực

nghiệm để xác định tỉ lệ phân chia tập dữ liệu (train, test, validation), kích thước

ảnh đầu vào, số epoch huấn luyện tối ưu. Kết hợp thêm các kỹ thuật nhận diện vùng

ảnh áo đồng phục để kết quả phân lớp chính xác hơn.

Mở rộng việc phân lớp từ 4 loại đến 22 loại để ứng với số lượng đồng phục

sinh viên 22 khoa của Trường Đại học Sư phạm Thành phố Hồ Chí Minh và các

đơn vị khác có sử dụng đồng phục riêng ví dụ như Trung tâm Ngoại ngữ sử dụng

đồng phục riêng cho đội ngũ gác thi tiếng anh theo khung ngoại ngữ 6 bậc dùng cho

người Việt Nam.

Về mặt ứng dụng, xây dựng thành API (hướng dịch vụ người dùng) cung cấp

thực tế, xây dựng sản phẩm hoàn chỉnh hơn cho các nền tảng di động (Android,

IOS, …) hoặc các môi trường điện toán đám mây.

Kết quả nghiên cứu có thể mở rộng ra với nhiều dữ liệu hơn, có thể hướng

đến việc áp dụng vào các hệ thống camera giám sát để phát hiện đối tượng sinh viên

trong quá trình hoạt động tại khuôn viên trường, điểm danh sinh viên trong các lớp

học, phòng họp, hội thảo.

.

77

TÀI LIỆU THAM KHẢO

[1]. Cổng thông tin điện tử Trường Đại học Sư phạm Thành phố Hồ Chí Minh

https://hcmue.edu.vn/vi/

[2]. Cổng thông tin điện tử Đoàn Thanh niên – Hội Sinh viên Việt Nam

Trường Đại học Sư phạm Thành phố Hồ Chí Minh http://doantn.hcmue.edu.vn/

[3]. Deng, J., Dong, W., Socher, R., Li, L. J., Li, K., & Fei-Fei, L. (2009,

June). Imagenet: A large-scale hierarchical image database. In 2009 IEEE

conference on computer vision and pattern recognition (pp. 248-255). IEEE.

[4]. Nath, S. S., Mishra, G., Kar, J., Chakraborty, S., & Dey, N. (2014, July).

A survey of image classification methods and techniques. In 2014 International

Conference on Control, Instrumentation, Communication and Computational

Technologies (ICCICCT) (pp. 554-557). IEEE.

[5]. Shin, H. C., Roth, H. R., Gao, M., Lu, L., Xu, Z., Nogues, I., ... &

Summers, R. M. (2016). Deep convolutional neural networks for computer-aided

detection: CNN architectures, dataset characteristics and transfer learning. IEEE

transactions on medical imaging, 35(5), 1285-1298.

[6]. Dehariya, V. K., Shrivastava, S. K., & Jain, R. C. (2010, November).

Clustering of image data set using k-means and fuzzy k-means algorithms. In 2010

International Conference on Computational Intelligence and Communication

Networks (pp. 386-391). IEEE.

[7]. Ghosh, A. K. (2006). On optimum choice of k in nearest neighbor

classification. Computational Statistics & Data Analysis, 50(11), 3113-3123.

[8]. Cherkassky, V., & Mulier, F. (1999). Vapnik-Chervonenkis (VC) learning

theory and its applications. IEEE Transactions on Neural Networks, 10(5), 985-987.

[9]. Hsu, K. L., Gupta, H. V., & Sorooshian, S. (1995). Artificial neural

network modeling of the rainfall‐runoff process. Water resources research, 31(10),

2517-2530.

[10]. Deng, L. (2012). The MNIST database of handwritten digit images for

machine learning research [best of the web]. IEEE Signal Processing Magazine,

29(6), 141-142.

78

[11]. Krizhevsky, A., Nair, V., & Hinton, G. (2014). The CIFAR-10 dataset.

online: http://www. cs. toronto. edu/kriz/cifar. html, 55.

[12]. Wei, G., Li, G., Zhao, J., & He, A. (2019). Development of a LeNet-5

Gas Identification CNN Structure for Electronic Noses. Sensors, 19(1), 217.

[13]. He, S., Liang, G., Chen, F., Wu, X., & Feng, W. (2018, December).

Object Recognition and 3D Pose Estimation Using Improved VGG16 Deep Neural

Network in Cluttered Scenes. In Proceedings of the International Conference on

Information Technology and Electrical Engineering 2018 (p. 27). ACM.

[14]. He, K., Zhang, X., Ren, S., & Sun, J. (2016). Deep residual learning for

image recognition. In Proceedings of the IEEE conference on computer vision and

pattern recognition (pp. 770-778).

[15]. Huang, G., Liu, Z., Van Der Maaten, L., & Weinberger, K. Q. (2017).

Densely connected convolutional networks. In Proceedings of the IEEE conference

on computer vision and pattern recognition (pp. 4700-4708).

[16]. Soekarno, I., Hadihardaja, I. K., & Cahyono, M. (2014, August). A study

of hold-out and k-fold cross validation for accuracy of groundwater modeling in

tidal lowland reclamation using extreme learning machine. In 2014 2nd

International Conference on Technology, Informatics, Management, Engineering &

Environment (pp. 228-233). IEEE.

[17]. Lewis, H. G., & Brown, M. (2001). A generalized confusion matrix for

assessing area estimates from remotely sensed data. International Journal of Remote

Sensing, 22(16), 3223-3235.

[18]. A. T. Vo, H. S. Tran and T. H. Le, "Advertisement image classification

using convolutional neural network," 2017 9th International Conference on

Knowledge and Systems Engineering (KSE), Hue, 2017, pp. 197-202.

[19]. Kieu, P. N., Tran, H. S., Le, T. H., Le, T., & Nguyen, T. T. (2018,

November). Applying Multi-CNNs model for detecting abnormal problem on chest

x-ray images. In 2018 10th International Conference on Knowledge and Systems

Engineering (KSE) (pp. 300-305). IEEE.