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.