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
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO
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
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
Trang 3kế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
Trang 4Lờ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ả
Trang 5Dươ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
Trang 63.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
Trang 7DANH MỤC THUẬT NGỮ VÀ VIẾT TẮT Chữ viết
CNN Convolutional Neural
SVM Support Vector Machine Máy vector hỗ trợ KNN K-Nearest Neighbor K Láng giềng gần nhất 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
FC Fully connected layer Tầng kết nối đầy đủ
Trang 8DANH 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
Trang 9DANH 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
Trang 10Hì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
Trang 11CHƯƠ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
Trang 12độ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
Trang 13Cá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
Trang 14trư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,
Trang 15trá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
Trang 16Mô 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
Trang 17Mụ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
- 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
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
Trang 18đã 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
Trang 19phầ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
Trang 20CHƯƠ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
Trang 21Hì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 …
Trang 222.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ó
Trang 23Hì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ộ
(2.2) Công thức tính khoảng cách Euclid
|𝐾𝑖| 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
Trang 24phù 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
Để 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)
Trang 25Bướ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ư
Trang 26mộ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ữ
Trang 27liệ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 ⊆ R n , 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
Trang 28Khoảng cách từ siêu phẳng H+ và H– đến H0 được tính bằng khoảng cách Euclid là 2
‖𝑤‖2 với ‖𝑤‖2 = ∑𝑛𝑖=1𝑤𝑖2 (2.6) (theo định mức L2 norm) Để tìm siêu phẳng H0 với biên lớn nhất, ta giải bài toán tìm 𝑤 và 𝑏 sao cho 2
‖𝑤‖2đạt cực đại với 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‖𝑤‖22với điều kiện 𝑦𝑖‖𝑤 ∗ 𝑥𝑖 − 𝑏‖ >=
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 :
- 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
- Hàm Gaussian (Radial Basis Function Kernel):
K(x, y) = ℮
−|𝑥−𝑦|2 2𝛼2
- 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 :
Trang 29Hì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
Trích chọn đặc trưng
Huấn luyện
Dữ liệu
huấn luyện
Trích chọn đặc trưng
Dữ liệu
kiểm tra
Kiểm tra phân lớp Dữ liệu đã phân lớp
Mô hình huấn luyện
Trang 30Nã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ỏ
Trang 31Ta 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
Trang 32lượ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
Trang 33trong 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 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ó
Trang 34Đ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ý
Trang 35Hì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]
Trang 362.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
Trang 37việ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ý
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ó kích thước mxn) như sau :
𝑓(𝑥, 𝑦) ∗ 𝑘(𝑥, 𝑦) = ∑ ∑ 𝑘(𝑢, 𝑣)𝑓(𝑥 − 𝑢, 𝑦 − 𝑣)
𝑛 2
𝑣=−𝑛2
𝑚 2
Trang 38Đặ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
Trang 39Á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ì
Trang 40ả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