Nhận dạng ký tự viết tay là một lĩnh vực được quan tâm nghiên cứu và được ứng dụng rộng rãi trong nhiều lĩnh vực như: nhận dạng các chữ số trên phiếu chi ngân hàng, mã số trên bì thư của
Trang 1Đà Nẵng – Năm 2018
Trang 2ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA
- -
HUỲNH VĂN NHỨT
NHẬN DẠNG CHỮ SỐ VIẾT TAY SỬ DỤNG
KỸ THUẬT HỌC SÂU (DEEP LEARNING)
Chuyên ngành :Khoa học máy tính
Mã số: 60.48.01.01
LUẬN VĂN THẠC SĨ
Người hướng dẫn khoa học: TS HUỲNH HỮU HƯNG
Đà Nẵng – Năm 2018
Trang 3Tôi 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ác giả
Huỳnh Văn Nhứt
Trang 4MỞ ĐẦU 1
1 Tính cấp thiết của đề tài 1
2 Mục tiêu nghiên cứu 1
3 Đối tượng và phạm vi nghiên cứu 1
4 Phương pháp nghiên cứu 2
5 Ý nghĩa của đề tài 2
6 Bố cục luận văn 2
CHƯƠNG 1 TỔNG QUAN VỀ XỬ LÝ ẢNH VÀ NHẬN DẠNG CHỮ SỐ VIẾT TAY 3
1.1 Tổng quan về nhận dạng chữ số viết tay 3
1.1.1 Giới thiệu chung 3
1.1.2 Những khó khăn trong việc nhận dạng chữ số viết tay 3
1.1.3 Các công trình nghiên cứu trong và ngoài nước 4
1.1.4 Các bước trong quá trình xử lý ảnh 5
1.1.5 Một số khái niệm trong xử lý ảnh 7
1.2 Các phương pháp xử lý ảnh 8
1.2.1 Lọc mịn ảnh 8
1.2.2 Nhị phân ảnh 8
1.2.3 Chỉnh nghiêng 8
1.2.4 Chuẩn kích thước 9
1.2.5 Lấp khoảng trống ảnh 9
1.2.6 Phát hiện biên và làm trơn biên 11
1.2.7 Xác định hướng của điểm biên (Freeman code) 11
1.2.8 Làm trơn đường biên 12
1.3 Các phương pháp nhận dạng chữ số viết tay 14
1.3.1 Phương pháp đối sánh mẫu 14
1.3.2 Phương pháp tiếp cận cấu trúc 14
1.3.3 Phương pháp học máy với SVM (Support vector machine) 15
CHƯƠNG 2 MÔ HÌNH MẠNG NEURAL TÍCH CHẬP 16
2.1 Mạng neural nhân tạo 16
2.1.1 Sơ lược về neural sinh học 16
2.1.2 Mạng Neural nhân tạo 17
2.1.3 Kiến trúc mạng 19
2.1.4 Mạng một tầng 19
Trang 52.1.6 Huấn luyện mạng neural 21
2.2 Mạng Neural tích chập (Convolutional Neural Networks – CNNs) 24
2.2.1 Convolution (tích chập) 24
2.2.2 Khái niệm CNNs 25
2.2.3 Cấu trúc mạng neural tích chập 27
2.2.4 Những phương pháp tích chập (convolution) 28
2.2.5 Một số phép tích chập thường sử dụng trong xử lý ảnh 32
CHƯƠNG 3 NHẬN DẠNG CHỮ SỐ VIẾT TAY VỚI MẠNG NƠ RON TÍCH CHẬP 35
3.1 Bài toán nhận dạng 35
3.1.1 Phát biểu bài toán 35
3.1.2 Ảnh đầu vào của bài toán 35
3.2 Mô hình tổng quan 36
3.3 Xây dựng mạng Neural nhận dạng ký tự 37
3.3.1 Xây dựng mạng neural 37
3.3.2 Xử lý dữ liệu (phân tích ảnh) 37
3.4 Xây dựng chương trình thử nghiệm 43
3.4.1 Giới thiệu Python 43
3.4.2 Giới thiệu Tensorflow và cách cài đặt 44
3.4.3 Xây dựng mô hình mạng tích chập 44
3.4.4 Đầu vào và nhãn 47
3.4.5 Lớp Convolution với hàm kích hoạt relu 48
3.4.6 Lớp Pooling 48
3.4.7 Lớp FC 49
3.4.8 Mô hình đầy đủ 50
3.4.9 Huấn luyện và kiểm chứng mô hình 51
3.5 Kết quả thử nghiệm 52
KẾT LUẬN 53
TÀI LIỆU THAM KHẢO 55 QUYẾT ĐỊNH GIAO ĐỀ TÀI LUẬN VĂN (bản sao)
Trang 6NHẬN DẠNG CHỮ SỐ VIẾT TAY
SỬ DỤNG KỸ THUẬT HỌC SÂU (DEEP LEARNING)
Huỳnh Văn Nhứt, học viên cao học khóa 33 Chuyên ngành Khoa học máy tính
Mã số: 60480101 Khóa: 33 Trường Đại học Bách khoa – ĐHĐN
TÓM TẮT
Vấn đề nhận dạng chữ viết tay nói chung và nhận dạng chữ số viết tay nói riêng là một thách thức lớn đối với các nhà nghiên cứu Bài toán lớn luôn đặt ra phía trước vì sự phức tạp của việc nhận dạng chữ viết phụ thuộc nhiều vào phong cách viết và cách thể hiện ngôn ngữ của người viết
Nhận dạng ký tự viết tay là một lĩnh vực được quan tâm nghiên cứu và được ứng dụng rộng rãi trong nhiều lĩnh vực như: nhận dạng các chữ số trên phiếu chi ngân hàng, mã số trên
bì thư của dịch vụ bưu chính, …
Luận văn đã tập trung nghiên cứu các vấn đề như sau:
- Xử lý và phân tích được được các ký tự ảnh đầu vào
- Chuyển đổi ký tự sang ma trận điểm ảnh và ma trận Kernel
- Tiến hành nhận dạng ký tự bằng thuật toán mạng neural tích chập
Từ khóa : Nhận dạng, học sâu, chữ số viết tay, mạng nơ ron, tích chập
The thesis focuses on the following issues:
- Handling and analyzes the input image character
- Convert characters into pixel matrix and matrix Kernel
- Conduct a character recognition algorithm using neural network
convolution
Key words : recognition, deep learning, handwriting, neural network, convolution
Trang 7Số hiệu
Trang 8hình Tên hình Trang
2.13 Ma trận điểm ảnh (ảnh gốc) và ma trận kernel (đóng vai
3.7 Lưu đồ xác định hình chữ nhật nhỏ nhất ngoại tiếp ký số
Trang 9MỞ ĐẦU
1 Tính cấp thiết của đề tài
Nhận dạng là lĩnh vực được các nhà khoa học rất quan tâm để giải quyết các yêu cầu trong cuộc sống hiện nay, có nhiều lĩnh vực nhận dạng như nhận dạng tín hiệu, nhận dạng tiếng nói hay nhận dạng ảnh Vấn đề nhận dạng chữ viết tay nói chung và nhận dạng chữ số viết tay nói riêng là một vấn đề thách thức đối với những nhà nghiên cứu
Chữ số viết tay xuất hiện ở hầu hết trong các công việc của các cơ quan, nhà máy, xí nghiệp, trường học Trong các trường phổ thông hiện nay, có một bộ phận quản lý điểm thực hiện các khâu tiếp nhận và nhập vào máy tính bảng điểm viết tay của giáo viên bộ môn, công tác này luôn chiếm nhiều thời gian và đôi khi không đảm bảo tiến độ hoạt động của nhà trường
Để nhận dạng chữ số viết tay, có nhiều phương pháp và kỹ thuật khác nhau như: logic mờ, giải thuật di truyền, mô hình xác xuất thống kê, mô hình mạng nơ ron Đã có nhiều công trình nghiên cứu về nhận dạng chữ số viết tay đạt hiệu quả cao, tuy nhiên, các ứng dụng vẫn chưa đáp ứng hoàn toàn các yêu cầu của người dùng
Hiện nay với sự phát triển không ngừng của máy tính, phương pháp Deep Learning ra đời đã đáp ứng cơ bản trong việc nhận dạng và xử lý ảnh Deep Learning
là một thuật toán dựa trên một số ý tưởng từ não bộ tới việc tiếp thu nhiều tầng biểu đạt, cả cụ thể lẫn trừu tượng, qua đó làm rõ nghĩa của các loại dữ liệu Deep Learning được ứng dụng trong nhận diện hình ảnh, nhận diện giọng nói, xử lý ngôn ngữ tự nhiên Hiện nay rất nhiều các bài toán nhận dạng sử dụng Deep Learning để giải quyết
do Deep Learning có thể giải quyết các bài toán với số lượng cũng như kích thước đầu vào lớn với hiệu năng cũng như độ chính xác vượt trội so với các phương pháp phân lớp truyền thống
Với những lý do trên, tôi chọn nghiên cứu đề tài :”Nhận dạng chữ số viết tay sử
dụng kỹ thuật học sâu (Deep learning)”
2 Mục tiêu nghiên cứu
Mục tiêu chính của đề tài này là sử dụng kỹ thuật Deep learning để xây dựng chương trình nhận dạng chữ số viết tay
3 Đối tƣợng và phạm vi nghiên cứu
Trang 10- Kỹ thuật Deep Learning
3.2 Phạm vi nghiên cứu
- Nghiên cứu kỹ thuật xử lý ảnh
- Ảnh quét chữ số viết tay
- Nghiên cứu mạng Nơ ron nhận dạng chữ viết tay
- Phương pháp Deep Learning
- Các tài liệu liên quan tới lập trình
4.2 Phương pháp thực nghiệm
- Xây dựng chương trình thử nghiệm
- Kiểm thử tính hiệu quả của chương trình với các chữ số khác nhau
5 Ý nghĩa của đề tài
Về khoa học: Đề tài sẽ mang ý nghĩa cung cấp về mặt lý thuyết để làm rõ các phương pháp và kỹ thuật nhận dạng chữ số viết tay
Về thực tiễn: Góp phần hỗ trợ cho việc nhập văn bản với dữ liệu số
6 Bố cục luận văn
Nội dung của luận văn được chia thành các phần như sau:
Mở đầu
Chương 1: Tổng quan về xử lý ảnh và nhận dạng chữ số viết tay
Chương 2: Mô hình mạng Nơ ron tích chập
Chương 3: Nhận dạng chữ viết tay với mô hình mạng Nơ ron tích chập
Kết luận và hướng phát triển
Tài liệu tham khảo
Trang 11CHƯƠNG 1 TỔNG QUAN VỀ XỬ LÝ ẢNH VÀ NHẬN DẠNG CHỮ SỐ VIẾT TAY
1.1 Tổng quan về nhận dạng chữ số viết tay
1.1.1 Giới thiệu chung
Hiện nay, vấn đề nhận dạng chữ số viết tay rất cần thiết, có nhiều ứng dụng rộng rãi trong đời sống xã hội như nhận dạng bảng điểm, nhận dạng bảng số xe, nhận dạng phiếu hàng hóa,… Vấn đề nhận dạng chữ viết tay nói chung và nhận dạng chữ số viết tay nói riêng là một thách thức lớn đối với các nhà nghiên cứu Mỗi người có một cách viết chữ số khác nhau, chúng ta không thể xác định cách duy nhất để nhận dạng chữ
số Do vậy, xây dựng hệ thống nhận dạng chữ số viết tay một cách đáng tin cậy để có
có thể nhận dạng bất cứ ký tự số nào là điều không dễ dàng
Các hệ thống nhận dạng trước đây như (LeCun et al., 1998), (Simard et al., 2003), (Kégl & BusaFekete, 2009) đều sử dụng các đặc trưng cơ bản từ ảnh ký tự như đường biên, cạnh, độ dày, giá trị mức xám, haar-like, với các xử lý đặc thù như lấy mẫu, dao động các điểm ảnh, biến đổi ảnh, thêm dữ liệu ảo Sau đó hệ thống nhận dạng huấn luyện các mô hình học tự động như k láng giềng (kNN), mạng nơ-ron, máy véc tơ hỗ trợ (SVM), boosting Các hệ thống này cơ bản đáp ứng yêu cầu của người sử dụng, tuy nhiên vẫn chưa thỏa mãn một cách triệt để yêu cầu đề ra Với mong muốn tìm ra giải pháp để nhận dạng chữ số viết tay hiệu quả, chúng tôi nghiên cứu kỹ thuật học sâu (Deep learning), đây là phương pháp có thể giải quyết các bài toán với số lượng lớn, kích thước đầu vào lớn với hiệu năng cũng như độ chính xác vượt trội so với các phương pháp phân lớp truyền thống
1.1.2 Những khó khăn trong việc nhận dạng chữ số viết tay
Chữ viết tay được viết bởi những người khác nhau, ở những trạng thái khác nhau nên đôi khi một số chữ viết bị nhòe hoặc mờ, bề mặt ký tự có thể bị mờ hoặc che khuất bởi một đối tượng khác, dẫn đến đọc ký tự sai
Hình 1.1 Minh họa ảnh ký tự bị nhòe
Trang 12Trong một số trường hợp, người viết có thể viết các chữ số dính liền nhau dẫn đến việc phân tích ký tự chưa được chính xác, dẫn đến đọc ký tự sai
Hình 1.2 Minh họa số viết sát, dính liền nhau
Một số chữ viết nằm giao nhau, cắt nhau hoặc chữ số này chứa trong chữ số kia gây khó khăn trong việc nhận dạng, dẫn đến đọc ký tự sai
Hình 1.3 Ảnh minh họa ký tự số nằm giao nhau hoặc cắt nhau
- Giới hạn về cơ sở dữ liệu ảnh : Trong phạm vi của đề tài này, chúng tôi chỉ giới
hạn nhận dạng mười ký tự số viết tay từ không đến chín
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
1.1.3 Các công trình nghiên cứu trong và ngoài nước
1.1.3.1 Công trình trong nước
Nhận dạng văn bản viết tay nói chung và nhận dạng chữ số viết tay nói riêng là một trong những lĩnh vực khó đối với các nhà khoa học, đã có nhiều công trình nghiên cứu về nhận dạng chữ số viết tay, các công trình này chưa thật sự mang lại kết quả cao, ở Việt Nam trong những năm gần đây có rất nhiều những nhóm nghiên cứu về nhận dạng chữ viết tay sử dụng các mô hình phổ biến như: SVM (Support Vector Machine), HMM (Hidden Markov Model), đường cong tham số B-SPLINE, mạng Neuron,… Nhưng nhìn chung chất lượng nhận dạng của các mô hình này chưa đạt kết quả như mong muốn vì chữ viết tay còn nhiều các yếu tố tác động đến như: độ cao, độ nghiêng, các nét liền,… đều ảnh hưởng rất nhiều đến quá trình nhận dạng Hiện tại, chúng ta mới chỉ có được những sản phẩm thử nghiệm như hệ thống nhận dạng chữ số
và chữ cái viết tay rời rạc trên các phiếu xuất nhập cảnh của nhóm nghiên cứu ở Đại học quốc gia thành phố Hồ Chí Minh; Ngoài ra, có một số công trình của các tác giả như công trình “Nhận dạng bảng điểm viết tay với đặc trưng GIS” của tác giả Lê Thanh Trúc; công trình “Áp dụng một số chiến lược SVM đa lớp cho bài toàn nhận dạng chữ viết tay hạn chế” của tác giả Phạm Anh Phương
Trang 131.1.3.2 Công trình nước ngoài
Ngày nay, với sự phát triển của các thiết bị cầm tay, đặc biệt là các dòng điện thoại thông minh nên việc nhận dạng chữ số viết tay đã nhận được sự quan tâm đáng
kể Nhận dạng chữ số viết tay được thực hiện qua hai hình thức là nhận dạng online và nhận dạng offline Với nhận dạng online, máy tính sẽ nhận dạng các chữ số được viết lên màn hình ngay sau khi nó được viết Đối với những hệ nhận dạng này, máy tính sẽ lưu lại các thông tin về nét chữ số như thứ tự nét viết, hướng và tốc độ của nét viết trong khi nó đang được viết ra Đây chính là cơ sở để máy tính nhận dạng được chữ số,
do đó việc nhận dạng không gặp quá nhiều khó khăn Hệ thống nhận dạng chữ số viết tay trực tuyến trên một trạm làm việc của IBM do nhóm nghiên cứu gồm H.S.M.Beigi, C.C.Tapert, M.Ukeison và C.G.Wolf ở phòng thực hành Watson IBM cài đặt là một trong những sản phẩm nhận dạng chữ số viết tay online tiêu biểu Tuy nhiên, do chưa
có nhiều ứng dụng thực tế nên nhận dạng chữ số viết tay trực tuyến chưa được biết đến nhiều và khi nhắc đến nhận dạng chữ số viết tay chúng ta thường hiểu hình thức nhận dạng ở đây là offline Các kết quả nhận dạng chữ số viết tay offline hiện này còn rất hạn chế
Khi giải quyết bài toán nhận dạng chữ số viết tay đều buộc phải giới hạn trong một phạm vi nào đó với những tiêu chuẩn cụ thể cho mẫu chữ nhận dạng Chính vì vậy, các kết quả thu được cũng chỉ được áp dụng một cách hạn chế ở lĩnh vực hẹp trong một bài toán cụ thể nào đó như công trình nhận dạng chữ viết Tiếng Hoa của tác giả Jun Tan, Jian Huang Lai, Wei-Shi Zheng; công trình nhận dạng chữ ký số của tác giả Yip, W.K., Goh, A., Ngo, D.C.L., Teoh, A.B.J
1.1.4 Các bước trong quá trình xử lý ảnh
Hình 1.4 Sơ đồ tổng quát các giai đoạn xử lý ảnh cơ bản
Đối
tượng
Thu nhận ảnh
Tiền
xử
lý
-Cải thiện ảnh -Phục hồi ảnh -Xử lý hình thái
Tách đối tượng
Mô tả/
Biểu diễn
Đánh giá
-Phân đoạn ảnh
Trích chọn đặc trưng
-Nhận dạng -Ra quyết định -Phân cụm
Trang 141.1.4.1 Thu nhận ảnh
Các thiết bị thu nhận ảnh có hai loại chính ứng với hai loại ảnh thông dụng Raster, Vector và có thể cho ảnh đen trắng hoặc ảnh màu Các thiết bị thu nhận ảnh Raster thông thường là camera, scanner Còn các thiết bị thu nhận ảnh Vector thông thường là sensor hoặc bàn số hoá digitalizer hoặc được chuyển đổi từ ảnh Raster
1.1.4.2 Tiền xử lý
Sau bộ thu nhận, ảnh chữ số viết tay có thể nhiễu, độ tương phản thấp nên cần đưa vào bộ tiền xử lý để nâng cao chất lượng Chức năng chính của bộ tiền xử lý là lọc nhiễu, nâng độ tương phản để làm ảnh rõ hơn, nét hơn Gồm các bước chính sau: Tăng cường ảnh (hay còn gọi là cải thiện ảnh): là quá trình biến đổi 1 ảnh để có kết quả phù hợp với mục tiêu xác định Mục tiêu này có ảnh hưởng lớn đến việc lựa chọn cách thức thực hiện các bước xử lý Đây là một nhánh nghiên cứu lớn với nhiều ứng dụng trong lĩnh vực xử lý ảnh, thông thường chia làm hai dạng là: xử lý trên miền không gian và miền tần số
Phục hồi ảnh: là cả thiện ảnh theo một hướng xác định nhằm đưa ảnh về nguyên trạng ban đầu Mặc dù cải thiện ảnh và phục hồi ảnh có nét tương đồng nhưng trong phần lớn trường hợp, cải thiện ảnh mang tính chủ quan nhiều hơn, trong khi phục hồi ảnh lại là quá trình mang tính khách quan Quá trình phục hồi ảnh cố gắn tái tạo ảnh đã
bị giảm chất lượng dựa trên việc xem xét cách thức suy biến ảnh Do đó các kỹ thuật phục hồi ảnh hướng đến mục tiêu mô hình hóa sự suy biến và áp dụng quá trình ngược lại để khôi phục ảnh ban đầu Điều này thường dẫn đến việc xây dựng tiêu chí về chất lượng để đánh giá mức độ tối ưu của kết quả thu được
Xử lý hình thái: là thao tác toán học dùng để trích xuất các thành phần ảnh nhằm biểu diễn và mô tả hình dạng các vùng bên trong ảnh, chẳng hạn như biên, khung xương hay đường bao lồi Bên cạnh đó kỹ thuật xử lý hình thái học cũng được sử dụng trong quá trình tiền xử lý và hậu xử lý như lọc, xén hay làm mảnh đối tượng
Sau khi ảnh ký tự đã qua các bước tiền xử lý sẽ cho ảnh như sau:
Hình 1.5 Minh họa ảnh sau tiền xử lý
Ảnh ban đầu Ảnh đã qua tiền xử lý
Trang 151.1.4.3 Tách đối tượng
Tách đối tượng (hay phân vùng ảnh) là tách một ảnh đầu vào thành các vùng thành phần để biểu diễn phân tích, nhận dạng ảnh Đây là phần phức tạp khó khăn nhất trong xử lý ảnh và cũng dễ gây lỗi, làm mất độ chính xác của ảnh
1.1.4.4 Mô tả/ biểu diễn
Đầu ra ảnh sau phân đoạn chứa các điểm ảnh của vùng cộng với mã liên kết với các vùng lận cận Việc biến đổi các số liệu này thành dạng thích hợp là cần thiết cho
xử lý tiếp theo bằng máy tính Việc chọn các tính chất để thể hiện ảnh gọi là trích chọn đặc trưng gắn với việc tách các đặc tính của ảnh dưới dạng các thông tin định lượng hoặc làm cơ sở để phân biệt lớp đối tượng này với đối tượng khác trong phạm vi ảnh nhận được
Ảnh sau khi số hoá sẽ được lưu vào bộ nhớ, hoặc chuyển sang các khâu tiếp theo
để phân tích Nếu lưu trữ ảnh trực tiếp từ các ảnh thô, đòi hỏi dung lượng bộ nhớ cực lớn và không hiệu quả theo quan điểm ứng dụng và công nghệ Thông thường, các ảnh thô đó được biểu diễn lại theo các đặc điểm của ảnh được gọi là các đặc trưng ảnh
1.1.5 Một số khái niệm trong xử lý ảnh
1.1.5.1 Điểm ảnh
Điểm ảnh (Pixel) là một phần tử của ảnh số tại toạ độ (x, y) với độ xám hoặc
màu nhất định Kích thước và khoảng cách giữa các điểm ảnh đó được chọn thích hợp sao cho mắt người cảm nhận sự liên tục về không gian và mức xám (hoặc màu) của ảnh số gần như ảnh thật Mỗi phần tử trong ma trận được gọi là một phần tử ảnh
1.1.5.2 Độ phân giải ảnh
Độ phân giải (Resolution) của ảnh là mật độ điểm ảnh được ấn định trên một ảnh
số được hiển thị Theo định nghĩa, khoảng cách giữa các điểm ảnh phải được chọn sao cho mắt người vẫn thấy được sự liên tục của ảnh Việc lựa chọn khoảng cách thích hợp
tạo nên một mật độ phân bổ, đó chính là độ phân giải và được phân bố theo trục x và y
trong không gian hai chiều
Trang 161.1.5.3 Mức xám của ảnh
Một điểm ảnh (pixel) có hai đặc trưng cơ bản là vị trí (x, y) của điểm ảnh và độ
xám của nó Dưới đây chúng ta xem xét một số khái niệm và thuật ngữ thường dùng trong xử lý ảnh
Định nghĩa: Mức xám của điểm ảnh là cường độ sáng của nó được gán bằng giá
trị số tại điểm đó
Các thang giá trị mức xám thông thường: 16, 32, 64, 128, 256 (Mức 256 là mức
phổ dụng Lý do: từ kỹ thuật máy tính dùng 1 byte (8 bit) để biểu diễn mức xám: Mức xám dùng 1 byte biểu diễn: 28=256 mức, tức là từ 0 đến 255)
1.2 Các phương pháp xử lý ảnh
1.2.1 Lọc mịn ảnh
Lọc mịn ảnh là một dạng lọc thông thấp, là giá trị của một điểm ảnh, là trung bình trọng số của các điểm ảnh lân cận, hay giá trị điểm ảnh là kết quả của các điểm ảnh lân cận với một nhân Nhân có kích thước tuỳ ý 3x3, 5x5, kích thước nhân càng
lớn thì càng nhiều điểm lân cận ảnh hưởng vào điểm ảnh kết quả
Lọc mịn ảnh có tác dụng hạn chế ảnh bị nhiểu
1.2.2 Nhị phân ảnh
Là quá trình biến đổi một ảnh xám thành ảnh nhị phân ảnh nhị ảnh là ảnh mà giá trị của các điểm ảnh chỉ được biểu diễn bằng một trong hai giá trị là 0 (Đen) và 255 (Trắng) (tương ứng với 0 và 1)
Vì giá trị của điểm ảnh được biểu diễn bởi 2 giá trị là 0 hoặc 1, nên một điểm ảnh được biểu diễn bằng 1 bit nên ảnh có kích thước rất nhỏ
Gọi giá trị cường độ sáng tại một điểm ảnh là I(x,y)
INP(x,y) là cường độ sáng của điểm ảnh trên ảnh nhị phân
(Với 0 < x < image.width) và (0 < y < image.height)
Để biến đổi ảnh xám thành ảnh nhị phân Ta so sánh giá trị cường độ sáng của điểm ảnh với một ngưỡng nhị phân T
Nếu I(x,y) > T thì INP(x, y) = 0 (0)
Nếu I(x,y) > T thì INP(x, y) = 255 (1)
1.2.3 Chỉnh nghiêng
Chỉnh nghiêng ảnh là một phép biến đổi tuyến tính của toạ độ điểm ảnh Trước hết ta phải xác định góc nghiêng tổng thể của đối tượng và ta dịch chuyển điểm ảnh đối tượng theo phương ngang tuỳ theo giá trị góc nghiêng tổng thể này và giá trị y của điểm này
Trang 17Hình 1.6 Xác định độ nghiêng của ảnh
Chuyển gốc toạ độ về trọng tâm ảnh như hình b
Góc nghiêng của kí tự được qui ước tính là góc từ trục tung, hướng về bên trái có giá trị dương, hướng về bên phải có giá trị âm
Góc nghiêng tổng thể kí tự là hướng trung bình của các điểm ảnh đối tượng có giá trị góc khoảng –450
đến 450 theo quy ước tính góc trên Các điểm ảnh đối tượng có hướng ngồi khoảng –450
Với (x, y) là toạ độ điểm ảnh sau khi phóng và sx ,sy là tỷ lệ phóng theo trục x và
y tương ứng, fx(x,y) là giá trị điểm ảnh kết quả ứng với giá trị toạ độ (x, y)
Chú ý: Sau khi phóng ảnh, ảnh có thể bị rời rạc, răng cưa biên Để khắc phục tình trạng này, ta thực hiện một số xử lý bằng phép đóng morphology
Trang 18ta sử dụng 2 thành phần cấu trúc không đối xứng và thực hiện phép đóng 2 lần trên 2 thành phần cấu trúc này, vì khi thực hiện phép giãn thì chỉ cần giãn về 1 phía:
Trang 191.2.6 Phát hiện biên và làm trơn biên
Ta có giải thuật dò tìm biên như sau:
Bước 1: Quét ảnh đến khi gặp điểm ảnh đen Gọi nó là pixel 1
Bước 2: Lặp
- Nếu ”điểm ảnh hiện thời là đen“ thì “dò ngược”
- Ngược lại “sang phải” đến khi “gặp pixel 1”
Hình 1.10 Minh họa dò biên
1.2.7 Xác định hướng của điểm biên (Freeman code)
Các hướng được quy ước như sau:
Hình 1.11 Hướng quy ước mã hóa
0 1 0
1 1 1
0 1 0
Trang 20Với hướng quy ước trên, đường biên được mã hóa như sau:
Hình 1.12 Đường biên đã được mã hóa
1.2.8 Làm trơn đường biên
Làm trơn đường biên là duyệt theo đường biên, nếu hai điểm liên tiếp trên đường biên có hiệu số hướng lớn hơn 1 thì có thể hiệu chỉnh để có đường biên mà hai điểm liên tiếp có hiệu số hướng bằng 1
Theo mã hướng Freeman, hiệu số hướng của 2 điểm liên tiếp nhau trên đường biên được định nghĩa :
Gọi ci là mã hướng tại điểm biên đang xét pi , ci+1 là mã hướng của điểm kế tiếp trên đường biên pi+1
Đặt d=ci+1-ci và Dabs=|d| nếu |d|4 và dabs=8-|d| nếu |d|>4
Ta có các trường hợp sau:
- dabs1 : Điểm biên trơn
- dabs=2 và ci chẵn, ci+1 chẵn : bỏ pi+1 và thay hướng pi như sau:
Trang 21- dabs=2 và ci lẻ , ci+1 lẻ : Bỏ pi+1 và thay hướng pi như hình sau:
- dabs=3, ci lẻ, ci+1 chẵn
Hình 1.16 Dabs=3, ci lẻ, ci+1 chẵn
Trang 221.3 Các phương pháp nhận dạng chữ số viết tay
Có nhiều phương pháp trong các hệ thống nhận dạng chữ số viết tay, có thể kể
đến như : đối sánh mẫu, thống kê, cấu trúc, mạng nơ-ron, SVM,…
1.3.1 Phương pháp đối sánh mẫu
Đây là phương pháp tương đối đơn giản dựa trên việc so sánh các nguyên mẫu với nhau để nhận dạng chữ số Toán tử đối sánh xác định mức độ giống nhau giữa hai véc tơ (nhóm các điểm, hình dạng, độ cong…) các kỹ thuật đối sánh có thể tiếp cận
theo ba hướng:
Đối sánh trực triếp: Ảnh chứa chữ số đầu ở dạng xám hoặc nhị phân được so
sánh trực tiếp mới tập mẫu chuẩn dựa trên một số đặc trưng tương đồng nào đó
Các mẫu biến dạng và đối sánh mềm: Ý tưởng cơ bản là đối sánh một cách tối ưu mẫu chưa biết với tất cả các mẫu có thể mà các mẫu này có thể kéo giãn ra hoặc co lại Chỉ một không gian đặc trưng được thành lập, các véc tơ chưa biết được đối sánh bằng
cách sử dụng quy hoạch động và một hàm biến dạng
Đối sánh giảm nhẹ: Kỹ thuật này sử dụng hình dáng đặc trưng cơ bản của ảnh chứa chữ số, trên cơ sở một số vùng đối sánh đã được đánh giá tốt, các phần tử của
ảnh được so sánh với các vùng đối sánh này
Kỹ thuật đối sánh mẫu chỉ áp dụng tốt đối với nhận dạng chữ số in, còn đối với
chữ số viết tay thì các kỹ thuật này tỏ ra kém hiệu quả
1.3.2 Phương pháp tiếp cận cấu trúc
Phương pháp này dựa vào việc mô tả đối tượng nhờ một số khái niệm biểu diễn đối tượng cơ sở trong ngôn ngữ tự nhiên Đặc trưng của phương pháp phân tích cấu trúc là nhìn nhận mỗi mẫu chữ như được cấu thành từ những đối tượng hình học, quan tâm tới các nét, hướng và đặc tả những đối tượng cũng như quan hệ giữa chúng Các phương pháp cấu trúc áp dụng cho các bài toán nhận dạng chữ số được phát triển theo
hai hướng sau:
Phương pháp ngữ pháp : Vào khoảng giữa thập niên 1960, các nhà khoa học bắt đầu nghiên cứu các luật của ngôn ngữ học để phân tích tiếng nói và chữ viết Sau đó các luật đa dạng của chính tả, từ vựng và ngôn ngữ học đã được áp dụng cho các chiến
lượt nhận dạng
Phương pháp đồ thị : Các đơn vị chữ số viết tay được mô tả bởi các cây hoặc đồ thị Các dạng nguyên thủy của ký tự (các nét) được lựa chọn bởi một hướng tiếp cận cấu trúc Đối với mỗi lớp, một đồ thị hoặc cây được thành lập trong giai đoạn huấn luyện để mô tả các nét, các ký tự hoặc các từ Giai đoạn nhận dạng gán một đồ thị chưa viết vào một trong các lớp bằng cách sử dụng một độ đo để so sánh các đặc điểm
giống nhau giữa các đồ thị
Trang 231.3.3 Phương pháp học máy với SVM (Support vector machine)
1.3.3.2 Ý tưởng
Cho trước một tập huấn luyện, được biểu diễn trong không gian vector, trong đó mỗi tài liệu là một điểm, phương pháp này tìm ra một lớp siêu phẳng f quyết định tốt nhất có thể chia các điểm trên không gian này thành ra hai lớp riêng biệt bởi khoảng cách của điểm dữ liệu gần nhất
Ý tưởng của phương pháp SVM là ánh xạ (tuyến tính hoặc phi tuyến) dữ liệu vào không gian các vector đặc trưng (space of feature vectors) mà ở đó một siêu phẳng tối
ưu được tìm ra để tách dữ liệu thuộc hai lớp khác nhau
Mục đích của phương pháp SVM là tìm được khoảng cách biên lớn nhất
Trang 24CHƯƠNG 2
MÔ HÌNH MẠNG NEURAL TÍCH CHẬP
Một trong những mô hình Deep Learning tiên tiến giúp chúng ta xây dựng được những hệ thống thông minh với độ chính xác cao đó là Convolutional Neural Network (CNNs – Mạng nơ-ron tích chập) Trong chương này, chúng tôi sẽ trình bày về Convolution (tích chập) cũng như ý tưởng của mô hình CNNs trong nhận dạng chữ số viết tay
2.1 Mạng neural nhân tạo
2.1.1 Sơ lược về neural sinh học
Qua quá trình nghiên cứu về bộ não, người ta thấy rằng: Bộ não con người bao gồm khoảng 1011 neuron tham gia vào khoảng 1015 kết nối trên các đường truyền Mỗi đường truyền này dài khoảng hơn một mét Các neuron có nhiều đặc điểm chung với các tế bào khác trong cơ thể, ngoài ra chúng còn có những khả năng mà các tế bào khác không có được, đó là khả năng nhận, xử lý và truyền các tín hiệu điện hóa trên các đường mòn neuron, các con đường này tạo nên hệ thống giao tiếp của bộ não Những thành phần chính trong cấu trúc của một neural trong bộ não con người
Hình 2.1 Mô hình neural sinh học
Trong đó :
-Các Soma là thân của neural
-Các dendrites là các dây mảnh, dài, gắn liền với soma, chúng truyền dữ liệu (dưới dạng xung điện thế) đến cho soma xử lý Bên trong soma các dữ liệu đó được tổng hợp lại Có thể xem gần đúng sự tổng hợp ấy như là một phép lấy tổng tất cả các
dữ liệu mà neural nhận được
Trang 25Input Xi Tổng So sánh với ngưỡng
Weight Wi
Output
-Một loại dây dẫn tín hiệu khác cũng gắn với soma là các axon Khác với dendrites, axons có khả năng phát các xung điện thế, chúng là các dây dẫn tín hiệu từ Neural đi các nơi khác Chỉ khi nào điện thế trong soma vượt quá một giá trị ngưỡng nào đó (threshold) thì axon mới phát một xung điện thế, còn nếu không thì nó ở trạng thái nghỉ
-Axon nối với các dendrites của các neural khác thông qua những mối nối đặc biệt gọi là synapse Khi điện thế của synapse tăng lên do các xung phát ra từ axon thì synapse sẽ nhả ra một số chất hoá học (neurotransmitters); các chất này mở "cửa" trên dendrites để cho các ions truyền qua Chính dòng ions này làm thay đổi điện thế trên dendrites, tạo ra các xung dữ liệu lan truyền tới các Neural khác
Có thể tóm tắt hoạt động của một Neural như sau: Neural lấy tổng tất cả các điện thế vào mà nó nhận được và phát ra một xung điện thế nếu tổng ấy lớn hơn một ngưỡng nào đó Các Neural nối với nhau ở các synapses Synapse được gọi là mạnh khi nó cho phép truyền dẫn dễ dàng tín hiệu qua các Neural khác Ngược lại, một synapse yếu sẽ truyền dẫn tín hiệu rất khó khăn
Các synapses đóng vai trò rất quan trọng trong sự học tập Khi chúng ta học tập thì hoạt động của các synapses được tăng cường, tạo nên nhiều liên kết mạnh giữa các Neural Có thể nói rằng người nào học càng giỏi thì càng có nhiều synapses và các synapses ấy càng mạnh mẽ, hay nói cách khác, thì liên kết giữa các Neural càng nhiều, càng nhạy bén
2.1.2 Mạng Neural nhân tạo
Mạng Nơron nhân tạo được thiết kế để mô hình một số tính chất của mạng nơron sinh học Để mô phỏng các tế bào thần kinh và các khớp nối thần kinh của bộ não con người, trong mạng nơron nhân tạo cũng có các thành phần có vai trò tương tự các thành phần trong nơron thần kinh Hai thành phần chính cấu tạo nên mạng nơron nhân tạo là các nơron và các synapse (mô phỏng các khớp nối thần kinh)
Neural nhân tạo là một đơn vị tính toán có nhiều đầu vào và một đầu ra
Hình 2.2 Mô hình Neural nhân tạo ở mức đơn giản
Trang 26Hoạt động của Neural:
Giả sử có N inputs, Neural sẽ có N Weights (trọng số) tương ứng với N đường truyền inputs Neural sẽ lấy tổng có trọng số của tất cả các inputs Nói như thế có nghĩa là Neural sẽ lấy input thứ nhất, nhân với weight trên đường input thứ nhất, lấy input thứ hai nhân với weight của đường input thứ hai v.v , rồi lấy tổng của tất cả các kết quả thu được Đường truyền nào có weight càng lớn thì tín hiệu truyền qua đó càng lớn, như vậy có thể xem weight là đại lượng tương đương với synapse trong Neural sinh học Có thể viết kết quả lấy tổng của Neural như sau:
Kết quả này sẽ được so sánh với threshold t của Neural, nếu nó lớn hơn t thì Neural cho output là 1, còn nếu nhỏ hơn thì output là 0 Ngoài ra ta cũng có thể trừ tổng nói trên cho t, rồi so sánh kết quả thu được với 0, nếu kết quả là dương thì Neural cho ouput bằng 1, nếu kết quả âm thì output là 0 Dưới dạng toán học ta có thể viết output của Neural như sau:
Trong đó f là hàm Heaviside:
Hình 2.3 Hàm Heaviside
f được gọi là threshold function hay transfer function của Neural, còn giá trị (-t) còn được gọi là bias hay offset của Neural
Nếu chúng ta đưa thêm một input nữa vào, input thứ 0, có giá trị luôn luôn bằng
1 và weight luôn luôn bằng bias (-t) thì output của Neural còn có thể viết dưới dạng:
Trang 272.1.3 Kiến trúc mạng
Là một hệ thống bao gồm nhiều phần tử xử lý đơn giản (hay còn gọi là Neural) tựa như Neural thần kinh của não người, hoạt động song song và được nối với nhau bởi các liên kết Neural Mỗi liên kết kèm theo một trọng số nào đó, đặc trưng cho tính kích hoạt hoặc ức chế giữa các Neural
Có thể xem các trọng số là phương tiện để lưu trữ thông tin dài hạn trong mạng Neural và nhiệm vụ của quá trình huấn luyện của mạng là cập nhật các trọng số khi có thêm thông tin về mẫu học Hay nói một cách khác, các trọng số đều được điều chỉnh sao cho dáng điệu vào ra của mạng sẽ mô phỏng hoàn toàn phù hợp với môi trường đang xem xét
2.1.4 Mạng một tầng
Mạng một tầng với S Neural được minh họa trong hình 2.4 Chú ý rằng với mỗi một đầu vào trong số R đầu vào sẽ được nối với từng Neural và ma trận trọng số bây giờ sẽ có S hàng
Một tầng bao gồm ma trận trọng số, các bộ cộng, vector ngưỡng b, hàm chuyển
và vector đầu ra a
Mỗi phần tử của vector đầu vào p được nối với từng Neural thông qua ma trận trọng số W Mỗi Neural có một ngưỡng b i, một bộ cộng, một hàm chuyển f và một đầu
ra a i cùng với nhau, các đầu ra tạo thành một vector đầu ra a Thông thường thì số
lượng đầu vào của tầng khác với số lượng Neural.(R#S)
Các Neural trong cùng một tầng có hàm chuyển là không giống nhau, ta có thể định nghĩa các Neural trong một tầng có hàm chuyển khác nhau bằng cách kết hợp song song hai mạng Neural giống ở trên Cả hai sẽ có đầu vào giống nhau và mỗi mạng sản xuất ra vài đầu ra
Trang 28Ma trận trọng số cho các phần tử trong vector đầu vào W:
Dữ liệu từ tất cả các nút trong lớp nhập được tích hợp, ta gọi là tổng trọng số và chuyển kết quả cho các nút trong lớp ẩn Gọi là “ẩn” vì các nút trong lớp này chỉ liên
Trang 29lạc với các nút trong lớp nhập và lớp xuất
Các nút trong lớp xuất nhận các tín hiệu tổng trọng hóa từ các nút trong lớp ẩn Mỗi nút trong lớp xuất tương ứng với một biến phụ thuộc
để học các trọng số Có 3 kiểu học chính, mỗi kiểu học tương ứng với một nhiệm vụ học trừu tượng Đó là học có giám sát (có mẫu), học không giám sát và học tăng cường Thông thường loại kiến trúc mạng nào cũng có thể dùng được cho các nhiệm
vụ
2.1.6.2 Học có giám sát
Một thành phần không thể thiếu của phương pháp này là sự có mặt của một
“người thầy” (ở bên ngoài hệ thống) “Người thầy” này có kiến thức về môi trường thể hiện qua một tập hợp các cặp đầu vào - đầu ra đã được biết trước Hệ thống học (ở đây
là mạng Neural) sẽ phải tìm cách thay đổi các tham số bên trong của mình (các trọng
số và các ngưỡng) để tạo nên một ánh xạ có khả năng ánh xạ các đầu vào thành các
Trang 30đầu ra mong muốn Sự thay đổi này được tiến hành nhờ việc so sánh giữa đầu ra thực
sự và đầu ra mong muốn
2.1.6.3 Học không giám sát
Trong học không có giám sát, ta được cho trước một số dữ liệu x và hàm chi phí cần được cực tiểu hóa có thể là một hàm bất kỳ của dữ liệu x và đầu ra của mạng, f – hàm chi phí được quyết định bởi phát biểu của bài toán Phần lớn các ứng dụng nằm trong vùng của các bài toán ước lượng như mô hình hóa thống kê, nén, lọc, phân cụm
2.1.6.4 Học tăng cường
Dữ liệu x thường không được tạo trước mà được tạo ra trong quá trình một agent tương tác với môi trường Tại mỗi thời điểm t, agent thực hiện hành động yt và môi trường tạo một quan sát xt với một chi phí tức thời Ct, theo một quy trình động nào đó (thường là không được biết) Mục tiêu là một sách lược lựa chọn hành động để cực tiểu hóa một chi phí dài hạn nào đó, nghĩa là chi phí tích lũy mong đợi Quy trình hoạt động của môi trường và chi phí dài hạn cho mỗi sách lược thường không được biết, nhưng có thể ước lượng được Mạng Neural nhân tạo thường được dùng trong học tăng cường như một phần của thuật toán toàn cục Các bài toán thường được giải quyết bằng học tăng cường là các bài toán điều khiển, trò chơi và các nhiệm vụ quyết định tuần tự (sequential decision making) khác
Hãy bắt đầu bằng cách cho các weights những giá trị ngẫu nhiên, lúc này Neural chưa biết gì hết Bây giờ hãy input chữ A Neural sẽ lấy tổng có trọng số của các inputs và so sánh kết quả với 0 Nếu kết quả dương thì output là 1, âm thì output là 0 Khả năng Neural đoán đúng là 50%, vì các weights đang có giá trị hoàn toàn ngẫu nhiên Nếu Neural đoán đúng thì chúng ta không cần làm gì cả, nhưng khi Neural đoán sai (output bằng 0), thì chúng ta phải tăng các weights của các inputs đang hoạt động (các inputs khác không) lên, sao cho lần tới tổng có trọng số sẽ vượt quá threshold và tạo nên output là 1
Ngược lại, khi đưa chữ B vào và Neural đoán sai (output bằng 1), thì ta phải giảm các weights của các inputs đang hoạt động xuống, sao cho lần tới tổng có trọng
số sẽ nhỏ hơn threshold và buộc Neural phải cho output bằng 0
Như vậy, khi dạy chữ B thành công rồi thì Neural vẫn còn lưu giữ những gì đã học với chữ A trước đó, vì khi input là các chữ khác nhau thì nhóm các đường inputs đang hoạt động cũng khác nhau hoặc là không hoàn toàn trùng nhau Chúng ta chỉ biến đổi weights của các inputs đang hoạt động thôi, chúng ta chỉ việc lập đi lập lại quá
trình dạy như trên cho tới khi Neural “học thuộc bài” mới thôi
Trang 312.1.6.5 Thuật toán huấn luyện mạng
Thuật Toán Lan Truyền Ngược Back Propagation
Đây là phương pháp thông dụng nhất để huấn luyện cho các mạng Neural truyền thẳng nhiều lớp
Tiêu chuẩn huấn luyện: Làm cho sai số đầu ra càng nhỏ càng tốt
Triết lý của phương pháp: Dựa trên đầu ra để điều chỉnh trọng số của lớp ra, sau
đó dựa trên tính toán của lớp ra để điều chỉnh trọng số của lớp ẩn
Huấn luyện mạng Neural nhiều lớp sử dụng thuật toán Lan truyền ngược gồm hai quá trình:
1 Quá trình truyền tuyến tính:
- Dữ liệu từ lớp nhập qua lớp ẩn và đến lớp xuất để Thay đổi giá trị của trọng số liên kết W của các Neural trong mạng biểu diễn được dữ liệu học
- Tìm ra sự khác nhau giữa giá trị thật hàm mẫu mà mạng tính được và kết quả dự đoán của mạng gọi là lỗi (học có giám sát)
2 Quá trình truyền ngược: Giá trị lỗi sẽ được truyền ngược lại sao cho quá trình huyến luyện (học) sẽ tìm ra trọng số Wi để lỗi nhỏ nhất
Những hạn chế của phương pháp lan truyền ngược:
Ngoài những thành công của giải thuật học lan truyền ngược, vẫn còn có một số khía cạnh làm cho giải thuật trở nên chưa được bảo đảm là mọi lúc đều tốt Khó khăn chủ yếu là ở quá trình huấn luyện lâu Có thể do nhịp độ học và động lực không tối ưu
Sự sai sót trong việc huấn luyện nói chung xuất hiện từ hai nguồn: mạng liệt và những cực tiểu địa phương
Mạng liệt: Xảy ra khi những trọng số được điều chỉnh tới những giá trị rất lớn Tổng đầu vào của một đơn vị ẩn hoặc đơn vị đầu ra có thể bởi vậy mà đạt giá trị rất cao (hoặc dương hoặc âm), và qua hàm kích hoạt sigmoid, đơn vị sẽ có một giá trị kích hoạt rất gần 0 hoặc rất gần 1 Giá trị hiệu chỉnh trọng số gần 0, và quá trình huấn luyện
có thể đi đến một trạng thái dừng ảo
Cực tiểu địa phương: Bề mặt sai số của mạng rất phức tạp đầy những ngọn đồi và những thung lũng Bởi vì sự hạ độ dốc, mạng có thể bị mắc bẫy tại một cực tiểu địa phương khi có nhiều cực tiểu thấp hơn gần bên cạnh Những phương pháp thống kê có thể giúp để tránh cái bẫy này, nhưng chúng làm chậm Một phương án khác là tăng thêm số lượng đơn vị ẩn Như vậy sẽ làm việc trong không gian sai số nhiều chiều, nên
cơ hội gặp bẫy nhỏ hơn Tuy nhiên việc tăng cũng có giới hạn trên, khi vượt qua giới hạn này, cơ hội mắc bẫy lại tăng lên
Trang 322.2 Mạng Neural tích chập (Convolutional Neural Networks – CNNs)
2.2.1 Convolution (tích chập)
Tích chập được sử dụng đầu tiên trong xử lý tín hiệu số (Signal processing) Nhờ vào nguyên lý biến đổi thông tin, các nhà khoa học đã áp dụng kĩ thuật này vào xử lý ảnh và video số Để dễ hình dung, ta có thể xem tích chập như một cửa sổ trượt (sliding window) áp đặt lên một ma trận Ta có thể theo dõi cơ chế của tích chập qua hình minh họa bên duới
Hình 2.6 Minh họa tích chập
Ma trận bên trái là một bức ảnh đen trắng Mỗi giá trị của ma trận tương đương với một điểm ảnh (pixel), 0 là màu đen, 1 là màu trắng (nếu là ảnh grayscale thì giá trị biến thiên từ 0 đến 255)
Sliding window còn có tên gọi là kernel, filter hay feature detector Ở đây, ta dùng một ma trận filter 3×3 nhân từng thành phần tương ứng (element-wise) với ma trận ảnh bên trái Giá trị đầu ra do tích của các thành phần này cộng lại Kết quả của tích chập là một ma trận (convoled feature) sinh ra từ việc trượt ma trận filter và thực hiện tích chập cùng lúc lên toàn bộ ma trận ảnh bên trái Dưới đây là một vài ví dụ của phép toán tích chập
Ta có thể làm mờ bức ảnh ban đầu bằng cách lấy giá trị trung bình của các điểm ảnh xung quanh cho vị trí điểm ảnh trung tâm
Trang 34- Trong mô hình Feedforward Neural Network (mạng Neural truyền thống), các layer kết nối trực tiếp với nhau thông qua một trọng số w (weighted vector) Các layer này còn được gọi là có kết nối đầy đủ (fully connected layer) hay affine layer
- Trong mô hình CNNs thì ngược lại Các layer liên kết được với nhau thông qua
cơ chế convolution Layer tiếp theo là kết quả convolution từ layer trước đó, nhờ vậy
mà ta có được các kết nối cục bộ Nghĩa là mỗi Neural ở layer tiếp theo sinh ra từ filter
áp đặt lên một vùng ảnh cục bộ của Neural layer trước đó
- Mỗi layer như vậy được áp đặt các filter khác nhau, thông thường có vài trăm đến vài nghìn filter như vậy Một số layer khác như pooling/subsampling layer dùng
để chắt lọc lại các thông tin hữu ích hơn (loại bỏ các thông tin nhiễu) Tuy nhiên, ta sẽ không đi sâu vào khái niệm của các layer này
Trong suốt quá trình huấn luyện, CNNs sẽ tự động học được các thông số cho các filter Ví dụ trong tác vụ phân lớp ảnh, CNNs sẽ cố gắng tìm ra thông số tối ưu cho các filter tương ứng theo thứ tự raw pixel > edges > shapes > facial > high-level features Layer cuối cùng được dùng để phân lớp ảnh
Hình 2.9 Mô hình mạng nơ ron truyền thống
Hình 2.10 Image Classification with CNN
Trang 35CNNs có tính bất biến và tính kết hợp cục bộ (Location Invariance and Compositionality) Với cùng một đối tượng, nếu đối tượng này được chiếu theo các góc độ khác nhau (translation, rotation, scaling) thì độ chính xác của thuật toán sẽ bị ảnh hưởng đáng kể Pooling layer sẽ cho ta tính bất biến đối với phép dịch chuyển (translation), phép quay (rotation) và phép co giãn (scaling)
- Tính kết hợp cục bộ cho ta các cấp độ biểu diễn thông tin từ mức độ thấp đến mức độ cao và trừu tượng hơn thông qua convolution từ các filter Đó là lý do tại sao CNNs cho ra mô hình với độ chính xác rất cao Cũng giống như cách con người nhận biết các vật thể trong tự nhiên Ta phân biệt được một con chó với một con mèo nhờ vào các đặc trưng từ mức độ thấp (có 4 chân, có đuôi) đến mức độ cao (dáng đi, hình thể, màu lông)
2.2.3 Cấu trúc mạng neural tích chập
Mạng neural tích chập là một dạng của mạng neural đa tầng, mỗi tầng thuộc một trong 3 dạng: tích chập (convolution), lấy mẫu con (subsampling), kết nối đầy đủ (full connection) như hình sau
Hình 2.11 Minh họa mô hình CNNs
CNNs xem ảnh đầu vào là tầng input, mỗi pixel là một neural, ảnh đầu vào này còn gọi là feature map Feature map có thể coi như là một ảnh thông thường, trong đó mỗi pixel được gọi là một neural
Tầng tích chập (C - convolution): Hoạt động như bộ trích chọn đặc trưng, nghĩa
là một hay nhiều kết xuất của tầng trước được tích chập với một hay nhiều kernel để sinh ra một hay nhiều kết xuất (feature map)
Trang 36Tầng lấy mẫu con (S - subsampling): Lấy mẫu con của mạng neural tích chập
giúp mạng chịu được những biến dạng của dữ liệu như tịnh tiến, quay, nghiêng Toán
tử lấy mẫu con như trong hình sau:
Tầng kết nối đầy đủ (F – Full connection): thực hiện công việc phân lớp như
trong mạng neural đa lớp thông thường, … Các tầng sau, mỗi tầng có một số feature map, mỗi feature map có một số kernel duy nhất, số lượng kernel bằng số lượng feature map ở tầng trước Các kernel trong cùng một feature map có kích thước bằng nhau, kích thước kernel là một tham số của bài toán thiết kế mạng Các giá trị điểm ảnh trong một feature map được tính toán bằng tổng các tích chập của các kernel tương ứng với các feature map trong tầng trước Số lượng feature map trong tầng cuối cùng (tầng output) bằng số lượng kết xuất đầu ra của bài toán
Ví dụ: Trong bài toán nhận dạng các số từ 0 đến 9, thì sẽ có 10 feature map trong tầng output và feature map nào có giá trị cao nhất sẽ được dùng làm kết quả của bài toán
2.2.4 Những phương pháp tích chập (convolution)
Convolution là một khái niệm quen thuộc trong xử lý tín hiệu số Trong lĩnh vực
xử lý ảnh thao tác convolution được dùng để biến đổi ảnh thành một dạng mong muốn nào đó như: làm nổi cạnh (detect edge), làm mượt ảnh (smoothing), làm sắc nét (sharpening),