Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.88 MB, 30 trang )
<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
<b>BỘ GIÁO DỤC & ĐÀO TẠO</b>
<b>TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP. HỒ CHÍ MINHKHOA ĐIỆN – ĐIỆN TỬ</b>
<b>BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH</b>
</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2"><b>BỘ GIÁO DỤC & ĐÀO TẠO</b>
<b>TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP. HỒ CHÍ MINHKHOA ĐIỆN – ĐIỆN TỬ</b>
<b>BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH</b>
</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3"><b>TRƯỜNG ĐH. SƯ PHẠM KỸ THUẬT TP.HCM CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM KHOA ĐIỆN-ĐIỆN TỬĐộc lập – Tự do – Hạnh phúcBỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH</b>
<i> TP. Hồ Chí Minh, ngày 10 tháng 11 năm 2021.</i>
Họ tên sinh viên 1: Phạm Văn Dũng___________________ MSSV: 19161216_______
Tên đề tài: Ứng dụng xử lý ảnh trong nhận dạng chữ số viết tay
<b>1. MÔ TẢ MỤC TIÊU CỦA ĐỀ TÀI</b>
Mục tiêu của đề tài là hiểu biết và có kiến thức cơ bản về phương pháp PCA, và Neural Network.
Đề tài có khả năng nhận được những kiểu viết khác nhau của dữ liệu số 1 hay số 7. Đồng thời cũng phân biệt được số 1 và số 7.
Mục tiêu đặt ra cho đề tài là viết chương trình có khả năng học, và khơng đặt nặng vấn đề sai số thấp nhất có thể.
Sau khi thực hiện đề tài, có khả năng sử dụng các lệnh cơ bản của MATLAB để lập trình cơ bản về Neural Network.
<b>2. MÔ TẢ CÔNG VIỆC THỰC HIỆN ĐỀ TÀI</b>
<i>Các công việc thực hiện trong đề tài:</i>
Thu thập dữ liệu chụp ảnh số 1 và số 7 viết tay, xử lí dữ liệu ảnh thu được. 2
Tìm hiểu những kiến thức cơ bản về mạng neuron, đề xuất giải pháp để tiền xử lý ảnh (resize, đổi sang ảnh xám, central shift, phân đoạn ảnh) sao
</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">cho tối ưu nhất
3 Tổng hợp ý kiến với thành viên nhóm và thử nghiệm các phương pháp xử lý ảnh
4 Viết báo cáo kết quả thử nghiệm, đưa ra nhận xét đánh giá hiệu quả hệ thống mạng neuron
5 Chuẩn bị 2 tập ảnh số 1 và số 7 cần nhận dạng và tập ảnh test. 6 Nghiên cứu các phương pháp tiền xử lý.
7 <sup>Nghiên cứu và viết chương trình tiền xử lí ảnh, và tiến hành cho huấn luyện</sup> mạng Neural nhân tạo
8 Viết báo cáo chương 1 tổng quan và chương 2 phương pháp tính tốn.
<i>(Ký ghi rõ họ tên) (Ký ghi rõ họ tên)</i>
<b>XÁC NHẬN CỦA GIẢNG VIÊN HƯỚNG DẪN</b>
<i>(Ký ghi rõ họ tên)</i>
<b>Th.S Nguyễn Duy Thảo</b>
</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">Đề 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ể ln 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.
Đề 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ề Neural Network, 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.
</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">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 tố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>1.4 BỐ CỤC</b>
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
<b>Chương 1: Tổng Quan </b>
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.
<b>Chương 2: Phương Pháp-Tính Tốn</b>
Chương này trình bày sơ đồ khối, mơ tả ngun 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 tốn sử dụng trong đề tài.
<b>Chương 3: Kết Quả Mô Phỏng</b>
Sử dụng các phương pháp đã lựa chọn cũng như các tính tố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.
<b>Chương 4: Kết Luận </b>
Đánh giá mức độ hoàn thiện đề tài.
7
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">Đề 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 Neural Network (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
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">thành phần chính (PCA), phân đoạn ảnh dùng thuật tố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.
<b>2.2.1 Thiết kế sơ đồ khối</b>
Từ mục tiêu của đề tài nhóm đưa ra sơ đồ khối như sau:
<b>Hình 2.1: Sơ đồ khối tiến trình huấn luyện ảnh </b>
Chức năng các khối:
<b>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</b>
chứa 150 tấm ảnh chữ số từ 0 đến 9.
<b>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ử</b>
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).
9
</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10"><b>Khối trích đặc trưng: ở đề tài này khối trích đặc trưng áp dụng phương pháp</b>trí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.
<b>Khối Neural Network: Mạng Neural nhân tạo, có chức năng học ảnh từ dữ liệu ảnh</b>
được đưa vào lớp ngõ vào (Input Layer), sau đó sẽ thực hiện tính tố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 tốn thích hợp.
<b>2.2.2 Tính tốn từng phương pháp </b>
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 tốn, thực hiện phương pháp.
<b>a. Khối dữ liệu ảnh.</b>
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
<b>được tập hợp và phân loại Hình 2.2.</b>
</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11"><b>b. Khối tiền xử lý.</b>
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 tố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 tố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
F = fft2(f)
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) .<small>x+y</small>
Fc(u,v)=
11
</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">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 tố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 tố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 tố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 tố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 tố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.
</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">là số pixel tương ứng với múc xám k
với n là tổng số pixel của ảnh. là số pixel tương ứng với múc xám k.
Bước 6: Sau khi đã tính tố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 tốn Otsu như sau:
<small>n imhist a</small><b><small>=( );</small></b><small>% biểu diễn lược đồ </small>
<small>N</small><b><small>=</small></b><small>sum n</small><b><small>( );</small></b><small>% tổng các giá trị của tật cả các mức xám trong biểu đồ</small>
<small>max</small><b><small>=;</small></b><small>% khởi tạo giá trị lớn nhất bằng 0</small>
</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14"><small> max</small><b><small>=</small></b><small>sigma</small><b><small>;</small></b><small>% cập nhật giá trị của sigma cho max</small>
<small> threshold T</small><b><small>= -</small></b><small>1</small><b><small>;</small></b><small>% Giá trị ngưỡng mong muốn tương ứng với phương sai tối đa giữa các lớp</small>
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 tốn Dilation trong A theo B, kí hiệu là và được <small>2</small>
xác định như sau : = {z | }.
Trong Matlab, ta có hàm Dilation như sau: imdilate.
<i>B = [0 1 0; 1 1 1; 0 1 0];a = imdilate(a,B);</i>
B chính là nhân tạo hình. Trong Matlab, chương trình cũng cung cấp cho ta nhiều
<b>nhân tạo hình khác nhau, để biết thêm chí tiết gõ help strel. Trong thực tế, người ta chọn </b>
những nhân tạo ảnh sao cho , tức là sử dụng nhân tạo ảnh có các phần tử trong nhân tạo ảnh đối xứng qua chính tâm của nó. Bên cạnh đó, với việc ta lê những cái tâm z của nhân tạo ảnh B ảnh đi khắp A và tìm những điểm nào mà thì ta có thể hiểu như = Ubi.Abi với Abi là những khu vực mà <small>.</small>
Với đề tại nhóm chọn nhân tạo hình B = [0 1 0; 1 1 1; 0 1 0]; nhằm dãn nở để các phần nét đứt của dữ liệu ảnh sau khi phân đoạn được trơn tru hơn.
<b>c. Khối trích đặc trưng.</b>
Ở khối này sử dung phương pháp trích đặc trưng cơ bản là PCA (Priciple Component Analysis) gọi là phương pháp phân tích thành phần chính. Mục đích của phương pháp này nhằm loại bỏ đi một số thành phần trong không gian dữ liệu và chỉ dữ lại những thành phần đặc trưng nhất.
</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15"><b>Hình 2.4 Quá trình trích đặc trưng dùng phương pháp PCABước 1: Tạo một tập S gồm m ảnh kích thước RxC.</b>
Mỗi ảnh được chuyển thành một vector (N = mxn) chiều dùng hàm reshape(M,N,1) như mơ tả sau:
<b>Hình 2.4: Biểu diễn ảnh có kích thước m hàng x n cột thành vector Nx1</b>
Mỗi ảnh là một ma trận cột, ghép m ma trận cột tương ứng với m ảnh thành một ma trận có kích thước nxm.
=
Chỉ số đầu là thành phần của vector, chỉ số sau đó là số thứ tự của ảnh.
15
</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16"><b>Bước 2: Tính ảnh trung bình.</b>
= . = =
Trong Matlab, dung lệnh mean (X, dim) để tính giá trị trung bình của ma trận X, với dim là chiều lấy trung trình, nếu dim =1 lấy trung bình theo cột, nếu dim = 2 lấy trung bình theo hàng, khơng có tham số dim thì mặc định dim bằng 1.
<b>Bước 3: Tính sai biệt ảnh trung bình</b>
= , = , … , =
Nhằm mục đích tạo ra sự giãn tương đối giá trị pixel của các ảnh. Sau đó xây dựng ma trận từ các vừa tìm được
Đặt A = ( …) sẽ được ma trận có kích thước nxm.
<b>Bước 4: Tính ma trận hiệp phương sai</b>
Nhằm thể hiện sự tương quan của từng vector đối với các vector còn lại trong khơng gian.
C = A.A<small>T</small>
Vì ma trận C có kích thước quá lớn (nxn) nên để tìm eigenvector của C ta tìm eigenvector và eigenvalue của ma trận L:
L = A<small>T </small>.A
Trị riêng (eigenvalue λ ), và vectơ riêng (eigenvector x ) của ma trận hợp phương sai<small>ii</small>
này chính là đặc trưng thành phân thiết yếu của ảnh.
Các vectơ riêng là không gian đặc trưng các tập mẫu trong cơ sở dữ liệu ảnh. Các vectơ riêng được sắp xếp theo thứ tự từ cao đến thấp theo trị riêng tương ứng. Vectơ riêng có trị riêng lớn nhất sẽ mang nhiều đặc trưng thiết yếu nhất của không gian các tập mẫu (tức nó quyết định nhiều nhất sự biến đổi trong ảnh). Ngược lại, vectơ riêng có trị riêng bé nhất sẽ mang thành phần ít đặc trưng nhất trong không gian đặc trưng các tập mẫu. Ở đây
</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">cho thấy chỉ với m hướng đặc trưng mang trị riêng lớn nhất trong n×n khơng gian đặc trưng.
Dùng hàm [V,D] = eig(L) để tìm trị riêng D và vectơ riêng V của ma trận L. Hàm này tạo ra một ma trận đường chéo D của các giá trị riêng và một ma trận V có các cột tương ứng là các vector riêng, do đó: X * V = V * D
<b>Bước 5: Thực hiện phép chiếu</b>
Chiếu lần lượt các ảnh trong cơ sở dữ liệu đến không gian đặc trưng hướng này, để sinh ra các ảnh đặc trưng trong không gian ảnh mới.
Tính sự sai số của ảnh cần nhận dạng với ảnh trung bình của các ảnh trong cơ sở dữ liệu.
Chiếu sai số lên không gian đặc trưng của các ảnh mẫu trong cơ sở dữ liệu.
<i><small>r</small> =[] .</i><small>T</small>
Từ đặc trưng đã trích từ phương pháp PCA, các hệ số biểu diễn ảnh có thể dùng để làm ngõ vào của một mạng phục vụ cho việc huấn luyện và
phân loại.
<b>d. Khối mạng Neural nhân tạo.</b>
Mạng nơ-ron nhân tạo (ANN - Artifical Neural Networks) là một trong những công cụ rất mạnh trong vấn đề phân loại và nhận dạng đối tượng. Dựa trên cấu trúc của nơ-ron sinh học như hình trong hệ thống thần kinh người, nhiều dạng mạng nơ ron nhân tạo đã được xây dựng và phát triển.
17
</div>