TỔNG QUAN1.1 ĐẶT VẤN ĐỀ Đề tài nhận dạng chữ số viết tay thực sự cần thiết, đã và đang ứng dụng rộng rãi trong nhiều lĩnh vực trong đời sống, cụ thể như nhận dạng các chữ số trên chi phi
TỔNG QUAN
ĐẶT VẤN ĐỀ
Đề tài nhận dạng chữ số viết tay thực sự cần thiết, đã và đang ứng dụng rộng rãi trong nhiều lĩnh vực trong đời sống, cụ thể như nhận dạng các chữ số trên chi phiếu ngân hàng, mã số trên bì thư của dịch vụ bưu chính, đặc biệt ở các trường học hiện nay, đều 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 từ bảng điểm viết tay của của giáo viê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 Vì vậy 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 Vấn đề lớn luôn đặt ra là 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 Thông thường con người không thể luôn viết một ký tự chính xác theo cùng một cách Do vậy, xây dựng hệ thống nhận dạng chữ viết có thể nhận dạng bất cứ ký tự nào một cách đáng tin cậy trong tất cả các ứng dụng là điều không dễ dàng Đối với bài toán nhận dạng chữ số viết tay, mạng neuron nhiều lớp sẽ được huấn luyện dựa trên các pixel, đơn vị nhỏ nhất của hình ảnh Vì vậy mạng neuron nhân tạo là công cụ vô cùng thích hợp cho việc xử lý, phân tích hình ảnh và mang lại kết quả rất khả quan [1].
Vì vậy nhóm chọn đề tài “ỨNG DỤNG XỬ LÍ ẢNH NHẬN DẠNG CHỮ SỐ VIẾT TAY” mục đích nghiên cứu các phương pháp trích đặc trưng cơ bản và huấn luyện sử dụng mô hình Neural Network nhằm tiếp cận cũng như nắm rõ những nguyên lí cơ bản về nhận dạng sử dụng Neural Network Đồng thời cũng áp dụng những kiến thức lí thuyết từ môn xử lí ảnh vào việc tiền xử lí dữ liệu ảnh trước khi huấn luyện.
MỤC TIÊU
Đề tài có khả năng nhận dạng được dữ liệu số từ 0 đến 9 và phân biệt chữ số với các kí tự khác Với mục tiêu đặt ra cho đề tài là viết chương trình có khả năng huấn luyện mô hình mạng Neural nhân tạo, và chưa đặt nặng vấn đề sai số trong quá trình thử nghiệm các phương pháp Sau khi thực hiện đề tài sinh viên có kiến thức và hiểu biết cơ bản về NeuralNetwork, và phương pháp PCA, cũng như các phương pháp xử lí ảnh trong quá trình thu thập và chọn lọc dữ liệu.
NỘi DUNG NGHIÊN CỨU
Quá trình thực hiện đề tài thông qua 7 nội dung nghiên cứu sau:
NỘI DUNG 1: Tìm hiểu và tham khảo các tài liệu, giáo trình, nghiên cứu các chủ đề, các nội dung liên quan đến đề tài
NỘI DUNG 2: Thu thập và phân loại dữ liệu liệu ảnh vào các tập khác nhau, và đặt tên theo chuẩn nhất định.
NỘI DUNG 3: Tiền xử lí dữ liệu ảnh thu được.
NỘI DUNG 4: Nghiên cứu phương pháp tính toán, trích đặc trưng dùng PCA cùng các phương pháp trích đặc trưng dùng dò biên
NỘI DUNG 5: Viết chương trình huấn luyện mạng Neural nhân tạo, nhận dạng dữ liệu chữ số 0 đến 9 viết tay.
NỘI DUNG 6: Tiến hành huấn luyện thử nghiệm và cân chỉnh.
NỘI DUNG 7: Viết báo cáo đề tài.
BỐ CỤC
Với đề tài nhận dạng chữ số viết tay ứng dụng mạng Neural Network thì phần báo cáo có bố cục như sau
Chương này trình bày đặt vấn đề dẫn nhập lý do chọn đề tài, mục tiêu, nôi dung nghiên cứu, các giới hạn thông số và bố cục bài báo cáo.
Chương 2: Phương Pháp-Tính Toán
Chương này trình bày sơ đồ khối, mô tả nguyên lí từng khối, lựa chọn phương pháp cho từng khối Trình bày ngắn những phương pháp cũng như tính toán sử dụng trong đề tài.
Chương 3: Kết Quả Mô Phỏng
Sử dụng các phương pháp đã lựa chọn cũng như các tính toán từ chương 2 để viết chương trình sử dụng phần mềm Matlab Mỗi phương pháp đều đưa ra kết quả hiệu suất học của chương trình huấn luyện sau 10 lần học
Chương 4: Kết Luận Đánh giá mức độ hoàn thiện đề tài.
PHƯƠNG PHÁP – TÍNH TOÁN
GIỚI THIỆU
Đề tài nhận dạng chữ số viết tay ứng dụng xử lí ảnh, cụ thể là ứng dụng mạng NeuralNetwork (mạng Nơ-Ron nhân tạo) Sử dụng các phương pháp trích đặc trưng phân tích thành phần chính (PCA), phân đoạn ảnh dùng thuật toán Otsu kiến nghị ngưỡng xám, sau đó dùng phép hình thái học giản ảnh, để tăng độ mượt của ảnh ngõ vào.
PHƯƠNG PHÁP-TÍNH TOÁN
2.2.1 Thiết kế sơ đồ khối
Từ mục tiêu của đề tài nhóm đưa ra sơ đồ khối như sau:
Hình 2.1: Sơ đồ khối tiến trình huấn luyện ảnh
Khối dữ liệu ảnh: Dữ liệu ảnh bao gồm 10 tệp ảnh, tệp ảnh chứa mỗi một tệp ảnh chứa 150 tấm ảnh chữ số từ 0 đến 9.
Khối tiền xử lý: ảnh đi qua khối này sẽ được thực hiện một số phương pháp tiền xử lý nhằm tăng cường ảnh, lọc ảnh để loại bỏ những thành phần không mong muốn hay giảm kích thước nhưng vẫn giữ lại những đặc trưng cần thiết của ảnh Tóm lại những phương pháp tiền xử lý dữ liệu ảnh thu được, nhằm làm tăng hiệu quả của việc trích đặc trưng của ảnh. Đối với đề tài nhận dạng chữ số viết tay, nhóm lựa chọn một số phương pháp tiền xử lí phù hợp như sau:
- Giảm kích thước ảnh ngõ vào.
- Dịch tâm ảnh trong miền tần số.
- Phân đoạn ảnh dùng thuật toán Otsu để kiến nghị ngưỡng mức xám.
- Dùng hình thái học, cụ thể là phép giãn ảnh (Dilation).
Khối trích đặc trưng: ở đề tài này khối trích đặc trưng áp dụng phương pháptrích đặc trưng cơ bản là PCA, phân tích thành phần chính nhằm chỉ giữ lại các thành phần đặc trưng nhất của ảnh.
Khối Neural Network: Mạng Neural nhân tạo, có chức năng học ảnh từ dữ liệu ảnh được đưa vào lớp ngõ vào (Input Layer), sau đó sẽ thực hiện tính toán bên trong các lớp ẩn (Hidden Layer) dựa trên dữ liệu từ lớp ngõ vào, sau đó chuyển tiếp kết quả đến lớp tiếp theo Lớp ngõ ra (Output Layer) sẽ thực hiện đánh giá và đưa ra kết quả dựa trên các thuật toán thích hợp.
2.2.2 Tính toán từng phương pháp
Sau khi phân tích đưa ra các phương pháp cho từng khối Ta tiếp tục nghiên cứu cụ thể từng phương pháp và cách thức tính toán, thực hiện phương pháp. a Khối dữ liệu ảnh.
Dữ liệu ảnh tự chụp bằng điện thoại gồm 300 ảnh, số lượng các ảnh trong các tệp phải bằng nhau để đơn giản khi viết chương trình huấn luyện.
Chuẩn bị tập các đối tượng: Các tập số từ 0 đến 9, với mỗi tập 150 ảnh cần nhận dạng được tập hợp và phân loại Hình 2.2.
Hình 2.2: Các tập ảnh từ s0 đến s9
Chuẩn bị tâp ảnh kiểm tra: chọn ngẫu nhiên 10 từ số 0 đến số 9 để vào file “anh test”, như Hình 2.3
Hình 2.3: Các ảnh test sau khi huấn luyện b Khối tiền xử lý.
Giảm kích thước ảnh ngõ vào.
Trước khi đưa vào mạng Neural nhân tạo, tất cả dữ liệu ảnh cần được chuẩn hóa, trước tiên cần xét đến tính tối ưu về bộ nhớ cũng như thời gian học của mạng. Việc giảm kích thước ảnh đủ để mạng Neural có thể học và nhận dạng ổn định là thực sự cần thiết Và các ảnh huấn luyện cần chuẩn hóa theo cùng một kích thước giống nhau Vì thế phải dùng hàm imresize
B = imresize(A,[numrows numcols]); để resize lại kích thước các ảnh ngõ vào Còn kích thước rezise thế nào là hợp lí thì sẽ trình bày kết quả mô phỏng ở chương 3.
Phương pháp dịch tâm trong miền tần số.
Như chúng ta biết thì ảnh thông thường có số lượng điểm ảnh lớn vì thế để thực hiện một số phép toán phức tạp thì đòi hỏi dung lượng bộ nhớ lớn Vì vậy để đơn giản cho quá trình tính toán, thì cách đơn giản là chuyển ảnh sang miền tần số nhờ phép biến đổi Fourier (DFT) Với ảnh ta có:
F(u,v)Trong Matlab biến đổi DFT được thực hiện bằng thuật toán biến đổi Fourier nhanh, FFT Biến đổi FFT của ảnh có kích thước MxN được thực hiện bởi hàm fft trong toolbox với cú pháp như sau
Sau khi biến đổi Fourier, để nhìn ảnh và đánh giá ảnh dễ rang ta tiếp tục chuyển tâm ảnh, phương pháp này không làm thay đổi giá trị của các điểm ảnh, chỉ thay đổi vị trí của các giá trị điểm ảnh đó Hàm fftshift trong toolbox được sử dụng để chuyển gốc tọa độ của biến đổi đến trung tâm của ảnh hay nói cách khác là nó thực hiện chức năng tương tự việc nhân (-1) x+y
Fc(u,v) Hàm fftshift trong toolbox có cú pháp như sau
Fc= fftshift(F) Sau đó để chuyển đổi ảnh về lại miền không gian thì sử dụng phép biến đổi Fourier ngược theo
) Hàm ifft trong toolbox hỗ trợ biến đổi FFT ngược với cú pháp như sau: f = ifft2(F)
Với F là biến đổi Fourier sau khi đã các góc phần tư về vị trí ban đầu, f là ảnh trên miền không gian Nếu ngõ vào tính toán F là số thực thì tương ứng ngõ ra cũng là dạng số thực Tuy nhiên, trong thực tế, hàm ifft2 thường có một vài thành phần ảo rất nhỏ là kết quả của việc làm trong vốn là đặc trưng trong tính toán dấu chấm động Do vậy tốt nhất ta nên lấy phần thực của kết quả ảnh ra sau cùng bằng hàm real. f = real(F) Phân đoạn ảnh dùng thuật toán Otsu.
Phương pháp kiến nghị ngưỡng Otsu liên quan đến tính toán ở tất cả các giá trị ngưỡng có thể có của ảnh thường bắt đầu từ ngưỡng xám 0 (màu đen), Khi tính toán tại một ngưỡng nào đó sẽ chia làm hai phần gọi lần lượt là nền (background) và vật thể (foreground) Sau đó tính toán phương sai cho các mức xám ở mỗi bên của ngưỡng theo các bước sau.
Bước 1: Giá trị ngưỡng giả sử ban đầu là T = 0.
Bước 2: Tính các thông số của phần nền tại T đã chọn ở Bước 1.
Tính giá trị trung bình Tính phương sai với n là tổng số pixel của ảnh. là số pixel tương ứng với múc xám k 0k T.
Bước 3: Tính các thông số của phần vật thể tại T đã chọn ở Bước 1.
Tính trọng số Tính giá trị trung bình Tính phương sai với n là tổng số pixel của ảnh. là số pixel tương ứng với múc xám k. k L-1 Với L là số mức xám.
Bước 4: Tính tổng phương sai của phần nền và phần vật thể:
= + x x Bước 5: Tăng giá trị T lên một và lặp lại từ bước 2 đến bước 4, sau đó lại tăng T lên đến khi T = L-1.
Bước 6: Sau khi đã tính toán được các thông số phương sai của từng giá trị ngưỡng
T thì so sánh các giá trị phương sai với nhau, tại ngưỡng T nào có giá trị nhỏ nhất thì ngưỡng T đó chính là ngưỡng T được kiến nghị.
Sau khi có được ngưỡng xám T được kiến nghị ta tiến hành phân đoạn ảnh dựa vào ngưỡng xám T là ảnh gốc và g(x,y) là ảnh sau khi phân đoạn. g(x,y) Trong Matlab ta viết chương trình phân đoạn dựa vào thuật toán Otsu như sau: n imhist a = ( ); % biểu diễn lược đồ
N=sum n ( ); % tổng các giá trị của tật cả các mức xám trong biểu đồ max=0; % khởi tạo giá trị lớn nhất bằng 0 for i =1:256
P (i)=n(i)/N; %Tính mật độ xác suất end for T = : 2 255 % step through all thresholds from 2 to 255 w0 sum = (P (1: )); T % Tính trọng số lớp nền w1 sum = (U T ( +1 256 : )); % Tính trọng số lớp vật thể u0 dot = ([ : 0 T -1],U(1: ))/ T w0 ; % Tính trung bình của lớp nền u1 dot = ([T :255], ( +1 256 U T : ))/ w1 ;% Tính trung bình lớp vật thể sigma =w0 w1 * *(( - )^2); u1 u0 % Tính phương sai tổng của cả hai lớp nền và vật thể sigma max if > % so sánh giá trị sigma và giá trị max max =sigma; % cập nhật giá trị của sigma cho max threshold T = -1; % Giá trị ngưỡng mong muốn tương ứng với phương sai tối đa giữa các lớp end end
%%Tiến hành phân đoạn ảnh ngõ vào có kích thước 100x100 for r = : 1 100 for c = : 1 100 a if (r,c) >= threshold a (r,c) = 0; else a (r,c) = 255; end end end
Phương pháp giãn ảnh Dilation
Phép toán Dilation là thao tác giãn nở/ phình to các đối tượng ảnh đơn sắc A và B là hai tập hợp con trong Z , thực hiện phép toán Dilation trong A theo B, kí hiệu là và được 2 xác định như sau : = {z | }.
Trong Matlab, ta có hàm Dilation như sau: imdilate.
KẾT QUẢ
Cơ sở dữ liệu
Bài báo cáo sử dụng cơ sở dữ liệu là các hình chụp thực tế các chữ số từ 0 đến 9 được viết tay Dữ liệu huấn luyện gồm 1500 ảnh trong đó mỗi một chữ số có 150 ảnh Còn lại chúng ta có file gồm 10 số ảnh từ 0 đến 9 để thử nghiệm.
Thông số ban đầu của mạng Neuron
Ở bài toán nhận diện số viết tay bằng mạng neuron, chúng ta có ngõ vào là các tập ảnh, ngõ ra là kết quả nhận diện, ngõ ra là của chúng ta sẽ cần 2 neuron để thể hiện kết quả số từ 0 đến 9 Với ảnh 2 chiều sau khi resize thành kích thước 100 x 100 thì mỗi ảnh sẽ có 10.000 pixel, ta sẽ chuyển mỗi ảnh 100x100 này thành dữ liệu một chiều 10000 pixel x 1 pixel Như vậy chúng ta cần xây dựng một mạng neuron gồm 10000 đầu vào và 2 đầu ra. Sau một hồi tinh chỉnh các thông số mạng neuron và thử nghiệm, ta lựa chọn được các thông số tối ưu cho mạng neuron như sau:
Dưới đây là code khai báo các thông số của hàm huấn luyện mạng neuron:
Kết quả thực nghiệm
3.3.1 Lưu đồ giải thuật mạng neuron: Đầu tiên, tập ảnh ngõ vào sẽ được resize về dạng 100x100, sau đó chuyển sang ảnh xám Từ những ảnh xám này ta có thể sử dụng tiếp các phép xử lý ảnh như central shift (để hỗ trợ cho việc trích đặc trưng ảnh) hoặc phân đoạn ảnh (lọc ra những chi tiết quan trọng cần học của ảnh), hay giãn ảnh, sau đó ta đem ảnh đi trích đặc trưng (PCA) Như vậy là xong công đoạn tiền xử lý ảnh, việc tiếp theo cần làm là đưa các ảnh đã tiền xử lý vô mạng neuron để học Đợi mạng học xong ta khảo sát kết quá, hiệu xuất mạng neuron học được, tự đó chọn ra phương pháp xử lý ảnh tối ưu nhất.
Lưu ý: Tập ảnh trước khi được xử lý bằng các phương pháp central shift hay phân đoạn hay giãn ảnh, … đều phải được resize về kích thước 100x100 và đồng thời được đổi từ ảnh màu về ảnh xám.
Ta tiến hành tiền xử lý ảnh bằng phương pháp dịch tâm Nghĩa là ảnh sẽ được chuyển từ miền không gian sang miền tần số để dịch tâm, sau khi dịch tâm xong ta chuyển ảnh lại về miền không gian Phương pháp này kết hợp với PCA sau 1 lần học sẽ cho ra kết quả học như hình dưới:
Chúng ta sẽ cùng xem xét kết quả học, ở đây lấy ví dụ hai số là số 1 và số 7:
Chúng ta sẽ loại bỏ không sử dụng phương pháp này vì khi dịch tâm thì các đặc trưng ảnh không còn nữa, lúc ta trích đặc trưng ảnh sẽ không chính xác.
3.3.3 Phương pháp Otsu để phân đoạn ảnh
Khi sử dụng phương pháp Otsu để phân đoạn ảnh, mỗi ảnh sẽ có một ngưỡng phân đoạn (threshold) kiến nghị, trong đồ án này nếu ta sử dụng ngưỡng phân đoạn được khuyến nghị của công thức Otsu thì ảnh sau tiền xử lý không tránh khỏi những điểm nhiễu không mong muốn, dẫn đến sai sót khi trích đặc trưng ảnh (PCA) Dưới đây là ví dụ về các hình sử dụng threshold là ngưỡng khuyến nghị.
Thế nên ta sẽ lấy ngưỡng phân đoạn kiến nghị trừ đi 35 mức xám để ra ngưỡng phân đoạn lý tưởng nhất, như vậy ta có thể loại bỏ được các chi tiết gây nhiễu bằng cách cho mức xám của chúng bằng 0 Sau khi chọn lại ngưỡng phân đoạn, chúng ta có các ảnh đã xóa được xóa nhiễu như hình dưới đây:
Tiếp theo, vào công đoạn trích đẵ trưng các ảnh đã phân đoạn và đưa vào cho mạng neuron học:
Sau đây là hiệu quả phân biệt chữ số 1 và 7 của mạng neuron, với các ảnh chữ số 1 và số 7 là các ảnh được viết tay ngẫu nhiên:
Trong rất nhiều ảnh test, chỉ có số ít ảnh mạng neuron nhận dạng sai, phần lớn ảnh đều được nhận dạng đúng Điều này một phần chứng tỏ giai đoạn tiền xử lý chưa đủ tối ưu để mạng học chính xác Ảnh sau tiền xử lý vẫn còn nhiều răng cưa, chưa mượt mà, đây là một trong những lý do khiến cho mạng neuron gặp khó khăn trong việc học chính xác từng chữ số.
3.3.4 Phương pháp Otsu để phân đoạn ảnh kết hợp giãn ảnh
Do ảnh sau khi phân đoạn chưa được mượt mà, vẫn còn những thành phần răng cưa trên thân số 7 và số 1 nên trước khi trích đặc trưng ảnh, ngoài phương pháp Otsu ta dùng
CHƯƠNG 3 KẾT QUẢ thêm phương pháp giãn ảnh để ảnh được mượt mà hơn Dưới đây là ảnh các chữ số sau khi thực hiện giãn ảnh 2 lần. Ảnh sau khi đã được mượt mà hơn sẽ được trích đặc trưng chính xác hơn, giúp mạng neuron phân biệt được số 1 và số 7 hiệu quả, dưới đây là hiệu suất học của mạng:
Ta cùng khảo sát kết quả học của mạng:
Kết quả test đều chính xác nhất trong các phương pháp