ỨNG DỤNG MẠNG NEURAL TRONG NHẬN DẠNG KÝ TỰ QUANG HỌC – Tài liệu text

ỨNG DỤNG MẠNG NEURAL TRONG NHẬN DẠNG KÝ TỰ QUANG HỌC

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 (526.8 KB, 33 trang )

TIỂU LUẬN :
ỨNG DỤNG MẠNG NEURAL TRONG NHẬN DẠNG KÝ
TỰ QUANG HỌC
GVHD : TS. Đỗ Phúc.
Sinh viên thực hiện :
Lương Vũ Trúc
Lâm Tú Bình
Huỳnh Thị Phương Oanh
Nguyễn Chí Thanh
Lời mở đầu
Từ khi ra đời, máy tính đã nhanh chóng phát triển và đóng một vai trò rất quan
trọng trong nghiên cứu khoa học kỹ thuật cũng như trong đời sống.
Nhưng một máy tính dù có mạnh đến đâu chăng nữa, cũng chỉ có thể làm việc
theo một chương trình đã được hoạch định sẵn bởi lập trình viên.Nó vẫn không có khả
năng liên tưởng, kết nối sự việc này với sự việc khác, và quan trọng hơn hết là khả năng
sáng tạo như con người.
Vì lý do đó ,mạng noron (Artificial neural networks ) ra đời từ mục đích cố gắng
mô phỏng hoạt động trí tuệ của con người.Từ khi ra đời, mạng neuron đã nhanh chóng
phát triển trong các lĩnh vực về nhận dạng ,phân loại, giảm nhiễu, dự đoán…
Trong phạm vi một bài tiểu luận nhỏ, chúng em chỉ xin trình bày về “Ứng dụng
mạng neuron trong nhận dạng ký tự quang học”.
Để hoàn thành bài tiểu luận này, chúng em đã được sự hướng dẫn nhiệt tình từ
thầy TS Đỗ Phúc.Những bài giảng và tài liệu của thầy chính là cơ sở để chúng em có thể
hoàn thành tốt báo cáo của mình. Chúng em xin chân thành cảm ơn thầy!
Nhóm thực hiện

Chương 1 : Tổng Quan Về Mạng Neural
I.Giới Thiệu
Mạng neural nhân tạo (Artificial Neural Networks : ANN) ra đời xuất phát từ ý
tưởng mô phỏng hoạt động của bộ não con người.

Mạng noron nhân tạo là sự tái tạo bằng kỹ thuật những chức năng của hệ thần kinh
con người với vô số các neural được liên kết truyền thông với nhau qua mạng.Giống như
con người, ANN được học bởi kinh nghiệm, lưu những kinh nghiệm đó và sử dụng trong
những tình huống phù hợp.
Mạng neural trong một vài năm trở lại đây đã được nhiều người quan tâm và đã áp
dụng thành công trong nhiều lĩnh vực khác nhau, như tài chính, y tế, địa chất và vật lý.
Thật vậy, bất cứ ở đâu có vấn đề về dự báo, phân loại và điều khiển, mạng neural đều có
thể ứng dụng được. Ví dụ như khả năng nhận dạng mặt người trong các hệ thống quản lý
thông tin liên quan đến con người (quản lý nhân sự ở các công sở, doanh nghiệp; quản lý
học sinh, sinh viên trong các trường trung học, đại học và cao đẳng;… ); các ngành khoa
học hình sự, tội phạm; khoa học tướng số, tử vi,…
Kết hợp chặt chẽ với logic mờ, mạng neural nhân tạo đã tạo nên cuộc cách mạng
thực sự trong việc thông minh hóa và vạn năng hóa các bộ điều khiển kỹ thuật cao cho cả
hiện nay và trong tương lai. Ví dụ như ứng dụng tự động điều khiển hệ thống lái tàu, hệ
thống dự báo sự cố,…
Mạng neural dựa trên việc mô phỏng cấp thấp hệ thống neural sinh học. Trong
tương lai với sự phát triển mô phỏng neural sinh học, chúng ta có thể có loại máy tính
thông minh thật sự.
Trong phạm vi đề cập những gì liên quan đến kiến thức cơ sở để làm đồ án, chúng em chỉ
xin trình bày những vấn đề có liên quan, những kiến thức được sử dụng phục vụ cho việc
hoàn thành đồ án.

II.Khái Niệm Mạng Neural

1.Sơ lược về neural sinh học
Sau đây là những thành phần chính trong cấu trúc của một nơron trong bộ não con người

Hình 1.1 : Mô hình neuron sinh học

Trong đó :
 Các Soma là thân của noron.
 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à nơron nhận được.
 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ừ nơron đ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 nơron 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 nơron khác.
 Có thể tóm tắt hoạt động của một nơron như sau: nơron 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 nơron 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 nơron 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
nơron.
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 nơron càng nhiều, càng nhạy
bén.

2.Mạng Neural Nhân Tạo
-Noron 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 1.2 : Mô hình neuron nhân tạo ở mức đơn giản
Nơron này sẽ hoạt động như sau: giả sử có N inputs, nơron sẽ có N weights (trọng
số) tương ứng với N đường truyền inputs. Nơron 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à nơron 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 nơron sinh học. Có thể viết kết quả lấy tổng của nơron như sau:

Kết quả này sẽ được so sánh với threshold t của nơron, nếu nó lớn hơn t thì nơron
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ì nơron 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 nơron như
sau:

Trong đó f là hàm Heaviside:

f được gọi là threshold function hay transfer function của nơron, còn giá trị (-t) còn được
gọi là bias hay offset của nơron.
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 nơron còn có thể viết dưới dạng:

Lưu ý là chỉ số của tổng bây giờ bắt đầu từ 0 chứ không phải bằng 1 như trước nữa.

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.
3.1 Mạng Một Tầng
Mạng một tầng với S nơ-ron được minh họa trong hình 3.1. 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 nơ-ron 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.
ai bi

Mỗi phần tử của vector đầu vào p được nối với từng nơ-ron thông qua ma
trận trọng số W. Mỗi nơ-ron có một ngưỡng, một bộ cộng, một hàm chuyển f và một
đầu ra
.
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 nơ-ron.(R#S).
Có phải tất cả các nơ-ron trong cùng một tầng phải có hàm chuyển giống nhau ? Câu trả
lời là không; bạn có thể định nghĩa các nơ-ron 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 nơ-ron 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.
Ma trận trọng số cho các phần tử trong vector đầu vào W:

W=

 w1,1 w1, 2 … w1, R 


 w2,1 w2, 2 … w2, R 
………. ………. .. 


 wS ,1 wS, 2 … wS, R 



pS

a = f(Wp+b)

Hình 3.1 : Mô hình mạng 1 lớp.
Các chỉ số hàng của các phần tử trong ma trận W chỉ ra nơ-ron đích đã kết hợp với
trọng số đó, trong khi chỉ số cột cho biết đầu vào cho trọng số đó. Vì vậy, các chỉ số
w3, 2

trong

nói rằng đây là trọng số của đầu vào thứ 2 nối với nơ-ron thứ 3.

3.2 Mạng Đa Tầng

Hình 3.2 :Ví dụ về một mô hình mạng đa tầng
Mô hình mạng neural ở trên gồm 3 lớp: lớp nhập (input), lớp ẩn(hidden) và lớp
xuất (output). Mỗi nút trong lớp nhập nhận giá trị của một biến độc lập và chuyển vào
mạng.

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 lạc
với các nút trong lớp nhập và lớp xuất, và chỉ có người thiết kế mạng mới biết lớp này
(người sử dụng không biết lớp này).
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.
III.Huấn luyện mạng neural.
1.Phương Pháp Học
Mạng neural nhân tạo phỏng theo việc xử lý thông tin của bộ não người, do vậy đặc trưng
cơ bản của mạng là có khả năng học, khả năng tái tạo các hình ảnh và dữ liệu khi đã học.
Trong trạng thái học thông tin được lan truyền theo hai chiều nhiều lần để 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ụ.
1.1.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 đầ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.
1.2.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.
1.3.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.
1.4.Ví dụ
Giả sử chúng ta muốn dạy nơron phân biệt chữ A và B. Khi đưa input là A chúng ta
muốn nơron cho output là 1, còn khi input là B thì nơron phải cho output bằng 0.

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 nơron chưa biết
gì hết. Bây giờ hãy input chữ A. Nơron 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 nơron đoán
đúng là 50%, vì các weights đang có giá trị hoàn toàn ngẫu nhiên. Nếu nơron đoán đúng
thì chúng ta không cần làm gì cả, nhưng khi nơron đ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à nơron đ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 nơron phải cho output bằng 0.
Như vậy, khi dạy chữ B thành công rồi thì nơron có quên đi chữ đã học trước đó là A
không ? Không, 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. Nhớ là 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 nơron học thuộc bài mới thôi.

2.Thuật Toán Huấn Luyện Mạng
Trong phạm vi đề cập những gì liên quan đến kiến thức cơ sở để làm đồ án, chúng em chỉ
xin trình bày những vấn đề có liên quan, những kiến thức được sử dụng phục vụ cho việc
hoàn thành đồ án.
Trong đồ án, chúng em đã sử dụng mạng feed-forward và thuật toán lan truyền ngược sai
số Back Propagation để xử lý bài toán.
2.1.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 nơron truyền thẳng
nhiều lớp.
Có thể áp dụng cho các mạng truyền thẳng với các hàm chuyển và các
hàm lỗi khả vi.
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: Quá trình truyền tuyến tính và quá trình truyền ngược:
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).

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.
Công thức tính và áp dụng cụ thể cho bài toán sẽ được đề cập trong phần I.2 của
Chương 2.

 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ó

Xem thêm: Viber

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.

Chương 2 : Nhận Dạng Ký Tự Quang Học Trong
Mạng Neural Nhân Tạo
Phương Pháp Và Thuật Toán Nhận Dạng Ký Tự
I.Các Bước Xây Dựng Nên Bài Toán
Dưới đây là các bước chính khi tiến hành thiết kế và thực thi mạng noron nhân tạo
cho bài toán nhận dạng ký tự :
Xác định dữ liệu đầu vào, và đầu ra mong muốn để tiến hành huấn luyện cho
mạng noron.
Đầu vào : Vì tiểu luận chỉ tập trung vào nghiên cứu và cài đặt quá trình nhận dạng
ký tự neural, nên các dữ liệu đầu vào phải qua xử lý và đạt chuẩn yêu cầu trước
khi đưa vào nhận dạng.Các yêu cầu dữ liệu đầu vào là các file ảnh dạng văn bản
có định dạng *.bmp, đây là dạng file ảnh chuẩn, có kiểu màu pixel đen và trắng,
để việc tiến hành nhận dạng được chính xác.Các file ảnh này đã qua giai đoạn tiền
xử lý : xử lý ảnh nhiễu, ảnh đa sắc, lọc ảnh…
 Đầu ra mong muốn : là một file text chứa các ký tự Unicode tương ứng mà
chương trình mong muốn huấn luyện mạng học thuộc.Số ký tự đầu ra mong muốn
phải tương ứng với số kí tự ảnh đầu vào cần huấn luyện.

ABCDEFGHIJKMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
0123456789
+-\?*^@&:<>

Hình 2.2 Một ví dụ về mẫu các ký tự trong nhận dạng ký tự quang
học.
2.Xác Định Cấu Trúc Mạng
-Mạng noron được xây dựng theo phương pháp học có giám sát.
Bài toán lựa chọn mạng Feed-forward 3 lớp với cấu trúc như sau :
-Số noron lớp đầu vào : 150 noron.
Giải thích : Việc huấn luyện cho mạng học là một vòng lặp duyệt qua lần lượt các ký tự
ảnh giúp mạng noron nhớ và nhận dạng các ký tự ảnh này.Với mỗi vòng lặp, một ký tự sẽ
được đưa vào giảng dạy cho mạng noron học.Trong quá trình này, mỗi ký tự sẽ được
phân tích và chuyển tỉ lệ vào một ma trận nhị phân 15 x 10 .Ứng với mỗi điểm lưới của
ma trận sẽ được tuyến tính hóa tạo ra tương ứng với một noron đầu vào.Vì vậy ma trận sẽ
tạo ra 15×10=150 noron đầu vào.
Lưu ý : Việc chọn số lượng noron đầu vào hay nói cách khác việc chọn tỉ lệ ma trận đầu
vào cho kí tự là rất quan trọng.
Nếu số lượng noron lớn quá sẽ dẫn đến việc :
1.Nhận dạng những kí tự có font chữ nhỏ hoặc trung bình bị sai hoặc không chính xác.
2.Chương trình viết ra phải duyệt qua rất nhiều vòng lặp dẫn đến chương trình bị chậm,
hoặc gây ra tình trạng bị đứng máy khi chạy.
Nếu số lượng noron quá nhỏ :
-Việc phân tích các kí tự ảnh thông thường và lớn sẽ dẫn đến sai số lớn, vì vậy, việc
nhận dạng kí tự cũng sẽ thiếu tính chính xác.

-Qua kiểm nghiệm, và dựa trên nhiều tài liệu, nhận thấy giá trị 150 noron đầu vào là khá
phù hợp để nhận dạng với kiểu kí tự ảnh có font chữ trung bình, và phổ biến.Các kí tự
ảnh này có chiều cao trung bình là 70 pixel và chiều rộng khoảng 54 pixel.
-Số noron lớp ẩn : 500 noron.Việc lựa chọn giá trị này dựa trên thực nghiệm của các tài
liệu chuyên về nhận dạng kí tự quang học.Số noron này được quyết định từ những kết
quả tối ưu và giá trị lỗi cơ sở trong quá trình huấn luyện.

-Số noron đầu ra : 16 noron tương ứng với 16 bit nhị phân của mã Unicode.Từ 16 noron
này ta tổng hợp và chuyển thành 16 bit nhị phân, sau cùng chuyển thành 1 kí tự Unicode.

3.Thuật toán huấn luyện mạng.
Mạng feed- forward sử dụng giải thuật lan truyền ngược sai số Back Propagation.
Giải thuật gồm 2 bước :
 Bước 1:

-Lan truyền xuôi đầu vào qua mạng.
Sử dụng các công thức :
Công thức chung tính đầu ra của một noron thứ i tại lớp thứ k:
n

∑w x
ij

j =0

yi= f (

j

-bi)

Với f là hàm chuyển sigmoid lưỡng cực được tính theo công thức :

f=

2

−1
1 − e −αt

α: hệ số góc của hàm chuyển
t: biến net-input
bi: hệ số ngưỡng hay độ lệch
Áp dụng đối với mô hình mạng của chương trình :
-Công thức cho đầu ra của một noron thứ i (1250) tại lớp ẩn
n

∑w x
ai= f (

j =1

ij

j

-bi)

wij

Với

: trọng số tại noron thứ i của lớp ẩn kết nối với đầu vào thứ j của lớp vào
xj

: giá trị đầu vào của noron thứ j tại lớp vào

bi : giá trị ngưỡng hay độ lệch của noron thứ i của đầu vào
-Công thức cho đầu ra của một noron thứ k (k =116)tại lớp output
n

n

∑ wkj a j − bk
yk= f(

j =1

n

∑ wkj (
)=f [

j =1

∑w x
f(

j =1

ij

j

)]

 Bước 2 : Lan truyền ngược

Tính toán sai lệch giữa đầu ra thực và đầu ra mong muốn của noron thứ k
tại đầu ra.
ei= ti- yi
Tổng bình phương sai số của mạng ứng với mẫu học (Xs, Ts):

E=

1 p

2 k =1

( ti- yi) 2

P: số phần tử đầu ra
Nếu E< ε và l+1Thông tin sai số sẽ được lan truyền ngược qua mạng để điều chỉnh lại
trọng số tại vòng lặp l.
-Công thức điều chỉnh trọng số với liên kết giữa noron thứ j trong lớp ẩn và
noron thứ i trong lớp ra tại lần lặp l+1: (l+1wij

wij

(l+1) =

(l)+ η.ei(l).yj.f’(yi(l))

Với η: hệ số học

ei(l) : giá trị sai lệch của noron thứ i trong lớp ra, trong lần dạy (lặp )
thứ l .

f’: đạo hàm của hàm chuyển lưỡng cực ,công thức f’=
η : hệ số học

1 − x2
2

yi(l) : giá trị đầu ra của noron thứ i trong lớp ra tại vòng lặp thứ l.
yj (l): giá trị đầu ra của noron thứ j trong lớp ẩn tại vòng lặp thứ l.

-Công thức điều chỉnh trọng số với liên kết giữa noron vào thứ j và noron
ẩn thứ i, tại lần lặp thứ l+1 (l+1 m

wij

∑w

wij

(l+1) =

(l)+ η.xj.f’(yi).

k =1

ki

(l + 1).ek (l ). f ‘ ( yk (l ))

Với :
η: hệ số học
xj : giá trị đầu ra của noron thứ j trong lớp vào.
yi : giá trị đầu ra của noron thứ i trong lớp ẩn
wki(l+1) : trọng số liên kết giữa noron thứ k trong lớp ra và noron thứ i
trong lớp ẩn trong lần lặp thứ l+1 .
yk (l) : giá trị đầu ra của noron thứ k trong lớp ra.
 Các tham số sử dụng trong chương trình

Tốc độ học η = 150.
Hệ số góc α Sigmoid= 0.014.
Giá trị ngưỡng hay độ lệch : 30
Số lần dạy 300-600 tùy độ phức tạp của từng loại font.
Ngưỡng của lỗi = 0.0002.

II.Phương Pháp và Thuật Toán Nhận Dạng Kí Tự
1.Xử lý dữ liệu (Phân tích ảnh)

-Quá trình phân tích ảnh thực chất là phân tích chuỗi văn bản ảnh thành từng ký tự một.
Việc phân tích này dựa trên việc nhận dạng các pixel màu của ký tự ảnh với dữ liệu đầu
vào đã được xử lý và chuyển thành định dạng *.bmp chỉ có 2 pixel điểm đen RGB(0,0,0)
và điểm trắng RGB(255, 255, 255).
Quá trình phân tích ảnh được thực hiện tuần tự như sau :
-Phân tích văn bản thành từng dòng văn bản .
-Phân tích từng dòng văn bản thành từng ký tự ảnh một.
1.1.Tách dòng kí tự

– Việc tách dòng kí tự chính là cơ sở để tiến hành tách từng kí tự một cách dễ dàng và
nhanh chóng.
 Thuật toán :

-Bắt đầu từ điểm ảnh (x, y) đầu tiên của file ảnh (0,0), gán số dòng đang xét lines =0;
a.-Xác định giới hạn trên của dòng : Quét hết chiều rộng của ảnh, trên cùng một giá trị
y ( chạy x<=chiều rộng ảnh, giữ nguyên y )
+ Nếu gặp một pixel đen thì ghi nhận y chính là tọa độ giới hạn trên của
dòng(top_line).Dừng duyệt x.
+Nếu không, tiếp tục duyệt
+Nếu khi quét hết chiều rộng của ảnh, vẫn không tìm thấy giá trị điểm màu đen thì
reset lại x=0, và tiếp tục duyệt đến dòng tiếp theo (tăng y=y+1)
b.-Xác định giới hạn dưới của dòng :
+ Bắt đầu duyệt từ giới hạn trên (đỉnh ) vừa tìm thấy của dòng (0,top_line)
+ Tương tự như xác định giới hạn trên, ta duyệt hết chiều rộng của ảnh trên cùng một
giá trị y.
+Nếu duyệt hết dòng mà không tìm thấy ký tự pixel đen nào thì ghi nhận y-1 là giới
hạn dưới của dòng (bottom_line).Dừng duyệt.Tăng số dòng lên (lines++).
+Nếu chưa tìm thấy bottom_line, tiếp tục duyệt đến dòng tiếp theo (tăng y, reset x=0).

Giới hạn dưới

c.Bắt đầu từ giới hạn dưới y (bottom_line) vừa tìm thấy sau cùng,lặp lại các bước a,b
để xác định các giới hạn của các dòng tiếp theo, cho đến khi duyệt hết chiều cao của
ảnh thì dừng, quá trình xác định dòng ký tự hoàn tất.

Giới hạn trên

1.2.Tách từng kí tự

 Thuật toán :

Xét lần lượt từng dòng
1.-Bắt đầu xét từ giá trị giới hạn trên y của dòng (top_line) và giá trị x đầu tiên (x=0)
2.Xác định giới hạn trên của ký tự : Quét hết chiều rộng của ảnh, trên cùng giá trị y.
+ Nếu phát hiện pixel đen thì đánh dấu y là giá trị đỉnh của ký tự
(top_character).Dừng quét.
+Nếu quét hết chiều rộng, mà vẫn không tìm thấy pixel đen nào thì tăng y và reset lại
x, tiếp tục thực hiện lại bước 2.
3. Xác định giới hạn dưới của ký tự :Bắt đầu duyệt từ giới hạn trên (đỉnh ) vừa tìm
thấy của ký tự (0,top_character)

+ Tương tự như xác định giới hạn trên, ta duyệt hết chiều rộng của ảnh trên cùng một
giá trị y.
+Nếu duyệt hết dòng mà không tìm thấy ký tự pixel đen nào thì ghi nhận y-1 là giới
hạn dưới của ký tự (bottom_character).Dừng duyệt.
+Nếu chưa tìm thấy bottom_character, tiếp tục duyệt đến dòng tiếp theo (tăng y, reset
x=0).
4.Xác định giới hạn trái của ký tự (xác định giá trị của x )
-Bắt đầu từ giới hạn trên (đỉnh của ký tự – top_character), giá trị x đầu tiên (x=0) .
-Quét đến giới hạn dưới của dòng (bottom_character), giữ nguyên x (quét theo chiều
thẳng đứng )
+Nếu gặp pixel đen đầu tiên, ghi nhận x là giới hạn trái của kí tự (left-character).Dừng
quét.
+Nếu quét đến cuối giới hạn dưới, vẫn không tìm thấy pixel đen nào, thì reset lại y =
giới hạn trên vừa tìm thấy, tăng x lên.(x++),và tiếp tục thực hiện lại bước 4.
5.Xác định giới hạn phải của ký tự (xác định giá trị x )
-Bắt đầu từ giới hạn trên -đỉnh của ký tự (top_character), giới hạn trái của ký tự
(left_character,top_character) .Quét theo chiều thẳng đứng đến giới hạn dưới của

dòng.
+Nếu khi quét hết chiều đứng ,mà vẫn không gặp được pixel đen nào thì ghi nhận x-1
là giới hạn phải của ký tự (right_character).Dừng quét.
+Nếu gặp pixel đen thì tăng x (x++) và reset lại y =top_character của ký tự đang
xét ,để xét đường thẳng đứng tiếp theo.
6. Lặp lại bước 1 đến 5 để xác định giới hạn của ký tự tiếp theo trên cùng dòng.Với
y=top_line của dòng đang xét và giá trị x đầu tiên = right_character của ký tự vừa tìm
thấy.

Sau khi tách ký tự

1.3.Xác Định Giới Hạn Chính Xác Cho Từng Ký Tự
Trong một số trường hợp, việc tách ký tự chưa thực sự chính xác (giống như ví dụ
trên ).Ta cần xác định lại một lần nữa giới hạn chính xác cho từng ký tự.
 Thuật toán :

Xét từng ký tự :
1.Xác định đỉnh ký tự

-Bắt đầu từ đỉnh của ký tự tạm thời,và giới hạn trái của ký tự vừa xác định ở
trên( left_character,top_character).Quét đến giới hạn phải của ký tự, giữ nguyên y.
+Nếu tìm thấy pixel đen thì chọn lại y là giới hạn đỉnh của ký tự
(top_character=y).Dừng quét.
+Nếu không, xét điểm tiếp theo.
+Nếu không tìm thấy pixel đen nào thì tăng y (y++), reset lại x .(x=
left_character).Thực hiện lại bước 1.
2.Xác định giới hạn dưới của ký tự.
– Bắt đầu từ giới hạn dưới hiện thời của ký tự (được xác định ở trên –phần 1.2 ), và

giới hạn trái của ký tự (left_character, bottom_character).Quét x đến giới hạn phải của
ký tự, trên cùng giá trị y .
+ Nếu tìm thấy pixel đen ,đánh dấu y là giới hạn dưới của ký tự ( bottom_character=
y).Ngừng quét.
+Nếu không tìm thấy pixel đen nào, thì reset lại x (= left character ), giảm y
(y–).Thực hiện lại bước 2.
Giới hạn trên

Xác định giới hạn

Giới hạn dưới

1.4.Ánh Xạ Ký Tự Ảnh Vào Ma Trận Giá Trị
Sau khi tách, ký tự ảnh sẽ được ánh xạ vào ma trận 2 chiều, có kích thước 15 x 10.
Vì các ký tự ảnh dù đã chuẩn hóa, chọn lọc nhưng sau khi tách đều có kích thước khá lớn
so với ma trận ( khoảng 58x 74), nên các ký tự ảnh này đều phải qua 1 bước chuyển đổi tỉ
lệ trước khi chuyển giá trị vào ma trận nhị phân 15 x10.

 Lưu ý : Việc chuyển đổi tỉ lệ này là một trong những nguyên nhân gây ra sai số

dẫn đến nhận dạng ký tự bị sai.
Thuật toán : ánh xạ ký tự ảnh vào ma trận pixel ảnh.
a.Xét chiều rộng
-Ánh xạ điểm đầu và điểm cuối của ký tự ảnh tương ứng với giá trị đầu và cuối
của ma trận .
-Khởi tạo với 10 phần tử tương ứng.
-Ánh xạ tọa độ điểm đầu (0,y) và điểm cuối (width,y) của ảnh kí tự tương ứng với
giá trị đầu (0,y) và giá trị cuối (10,y) của ma trận.
-Chia nhỏ chiều rộng thành 10 mốc giá trị, ánh xạ vào chiều rộng của ma trận

pixel.
Ví dụ :
xMT[ 0]=0;
xMT[5]=width/2.
xMT[10]=width.
xMT[2]=xMT[5]/2.
…..
b.Đối với chiều cao:
Khởi tạo với 15 phần tử tương ứng.
Ánh xạ điểm đầu (x,0) và điểm cuối (x,height) của ảnh kí tự tương ứng với giá trị đầu
(x,0) và giá trị cuối (x,15) của ma trận.
Chia nhỏ chiều cao thành 15 mốc giá trị, ánh xạ tương ứng vào chiều cao của ma trận
pixel.
Vd:

yMT[ 0]=0;
yMT[5]=height /3.
xMT[10]=height x 2/3.

xMT[15]=height.

-Lấy các giá trị pixel trong file ảnh tuyến tính hóa vào trong ma trận pixel bằng cách kết
hợp tọa độ chiều cao và chiều rộng.
Vd:MT[i,j]=img[xMT[i],yMT[j] ]
(0,0)
0

15
(10,15)

Hình :

0

10

Ánh xạ lưới ký tự.

c.Chuyển ma trận lưới pixel thành ma trận giá trị
-Bắt đầu từ tọa độ (0,0) của ma trận pixel.Giữ y, duyệt qua x:
Nếu pixel đen thì ghi nhận giá trị 1 vào ma trận giá trị có tọa độ tương ứng.
Nếu pixel trắng thì ghi nhận giá trị 0 vào ma trận giá trị có tọa độ tương ứng.
Nếu x= chiều rộng thì reset lại x=0, tăng y (y++).
Từ ma trận ảnh này ta ánh xạ thành mảng 1 chiều 150 cột 1 dòng, và chuyển
thành 150 noron đầu vào.

Mạng noron tự tạo là sự tái tạo bằng kỹ thuật những công dụng của hệ thần kinhcon người với vô số những neural được link tiếp thị quảng cáo với nhau qua mạng. Giống nhưcon người, ANN được học bởi kinh nghiệm tay nghề, lưu những kinh nghiệm tay nghề đó và sử dụng trongnhững trường hợp tương thích. Mạng neural trong một vài năm trở lại đây đã được nhiều người chăm sóc và đã ápdụng thành công xuất sắc trong nhiều nghành khác nhau, như kinh tế tài chính, y tế, địa chất và vật lý. Thật vậy, bất kể ở đâu có yếu tố về dự báo, phân loại và tinh chỉnh và điều khiển, mạng neural đều cóthể ứng dụng được. Ví dụ như năng lực nhận dạng mặt người trong những mạng lưới hệ thống quản lýthông tin tương quan đến con người ( quản trị nhân sự ở những văn phòng, doanh nghiệp ; quản lýhọc sinh, sinh viên trong những trường trung học, ĐH và cao đẳng ; … ) ; những ngành khoahọc hình sự, tội phạm ; khoa học tướng số, tử vi, … Kết hợp ngặt nghèo với logic mờ, mạng neural tự tạo đã tạo nên cuộc cách mạngthực sự trong việc mưu trí hóa và vạn năng hóa những bộ tinh chỉnh và điều khiển kỹ thuật cao cho cảhiện nay và trong tương lai. Ví dụ như ứng dụng tự động hóa tinh chỉnh và điều khiển mạng lưới hệ thống lái tàu, hệthống dự báo sự cố, … Mạng neural dựa trên việc mô phỏng cấp thấp mạng lưới hệ thống neural sinh học. Trongtương lai với sự tăng trưởng mô phỏng neural sinh học, tất cả chúng ta hoàn toàn có thể có loại máy tínhthông minh thật sự. Trong khoanh vùng phạm vi đề cập những gì tương quan đến kỹ năng và kiến thức cơ sở để làm đồ án, chúng em chỉxin trình diễn những yếu tố có tương quan, những kiến thức và kỹ năng được sử dụng Giao hàng cho việchoàn thành đồ án. II.Khái Niệm Mạng Neural1. Sơ lược về neural sinh họcSau đây là những thành phần chính trong cấu trúc của một nơron trong bộ não con ngườiHình 1.1 : Mô hình neuron sinh họcTrong đó :  Các Soma là thân của noron.  Các dendrites là những dây mảnh, dài, gắn liền với soma, chúng truyền tài liệu ( dướidạng xung điện thế ) đến cho soma giải quyết và xử lý. Bên trong soma những tài liệu đó được tổnghợp lại. Có thể xem gần đúng sự tổng hợp ấy như thể một phép lấy tổng tổng thể những dữliệu mà nơron nhận được.  Một loại dây dẫn tín hiệu khác cũng gắn với soma là những axon. Khác với dendrites, axons có năng lực phát những xung điện thế, chúng là những dây dẫn tín hiệu từ nơron đicá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áinghỉ.  Axon nối với những dendrites của những nơron khác trải qua những mối nối đặc biệt quan trọng gọilà synapse. Khi điện thế của synapse tăng lên do những xung phát ra từ axon thì synapsesẽ nhả ra một số ít chất hoá học ( neurotransmitters ) ; những chất này mở ” cửa ” trêndendrites để cho những ions truyền qua. Chính dòng ions này làm đổi khác điện thế trêndendrites, tạo ra những xung dữ liệu Viral tới những nơron khác.  Có thể tóm tắt hoạt động giải trí của một nơron như sau : nơron lấy tổng tổng thể những đ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ưỡngnào đó. Các nơron nối với nhau ở những synapses. Synapse được gọi là mạnh khi nó chophép truyền dẫn thuận tiện tín hiệu qua những nơron khác. trái lại, một synapse yếu sẽtruyền dẫn tín hiệu rất khó khăn vất vả. Các synapses đóng vai trò rất quan trọng trong sự học tập. Khi tất cả chúng ta học tập thìhoạt động của những synapses được tăng cường, tạo nên nhiều link mạnh giữa cácnơron. Có thể nói rằng người nào học càng giỏi thì càng có nhiều synapses và những synapsesấy càng can đảm và mạnh mẽ, hay nói cách khác, thì link giữa những nơron càng nhiều, càng nhạybén. 2. Mạng Neural Nhân Tạo-Noron nhân tạo là một đơn vị chức năng thống kê giám sát có nhiều nguồn vào và một đầu ra. Hình 1.2 : Mô hình neuron tự tạo ở mức đơn giảnNơron này sẽ hoạt động giải trí như sau : giả sử có N inputs, nơron sẽ có N weights ( trọngsố ) tương ứng với N đường truyền inputs. Nơron sẽ lấy tổng cótrọng số của tổng thể cácinputs. Nói như vậy có nghĩa là nơron sẽ lấy input thứ nhất, nhân với weight trên đườnginput thứ nhất, lấy input thứ hai nhân với weight của đường input thứ hai v.v…, rồi lấytổng của tổng thể những hiệu quả thu được. Đường truyền nào có weight càng lớn thì tín hiệutruyền qua đó càng lớn, như vậy hoàn toàn có thể xem weight là đại lượng tương tự với synapsetrong nơron sinh học. Có thể viết tác dụng lấy tổng của nơron như sau : Kết quả này sẽ được so sánh với threshold t của nơron, nếu nó lớn hơn t thì nơroncho output là 1, còn nếu nhỏ hơn thì output là 0. Ngoài ra ta cũng hoàn toàn có thể trừ tổng nói trêncho t, rồi so sánh tác dụng thu được với 0, nếu hiệu quả là dương thì nơron cho ouput bằng1, nếu hiệu quả âm thì output là 0. Dưới dạng toán học ta hoàn toàn có thể viết output của nơron nhưsau : Trong đó f là hàm Heaviside : f được gọi là threshold function hay transfer function của nơron, còn giá trị ( – t ) còn đượcgọi là bias hay offset của nơron. Nếu tất cả 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 nơron còn hoàn toàn có thể viết dưới dạng : Lưu ý là chỉ số của tổng giờ đây khởi đầu từ 0 chứ không phải bằng 1 như trước nữa. 3. Kiến Trúc MạngLà một mạng lưới hệ thống gồm có nhiều thành phần giải quyết và xử lý đơn thuần ( hay còn gọi là neural ) tựanhư neural thần kinh của não người, hoạt động giải trí song song và được nối với nhau bởi cácliên kết neural. Mỗi link kèm theo một trọng số nào đó, đặc trưng cho tính kích hoạthoặc ức chế giữa những neural. Có thể xem những trọng số là phương tiện đi lại để tàng trữ thông tin dài hạn trong mạngneural và trách nhiệm của quy trình đào tạo và giảng dạy của mạng là update những trọng số khi cóthêm thông tin về mẫu học. Hay nói một cách khác, những trọng số đều được kiểm soát và điều chỉnh saocho dáng điệu vào ra của mạng sẽ mô phỏng trọn vẹn tương thích với môi trường tự nhiên đang xemxét. 3.1 Mạng Một TầngMạng một tầng với S nơ-ron được minh họa trong hình 3.1. Chú ý rằng với mỗimột nguồn vào trong số R nguồn vào sẽ được nối với từng nơ-ron và ma trận trọng số bây giờsẽ có S hàng. Một tầng gồm có ma trận trọng số, những bộ cộng, vector ngưỡng b, hàm chuyển vàvector đầu ra a.ai biMỗi thành phần của vector đầu vào p được nối với từng nơ-ron trải qua matrận trọng số W. Mỗi nơ-ron có một ngưỡng, một bộ cộng, một hàm chuyển f và mộtđầu raCùng với nhau, những đầu ra tạo thành một vector đầu ra a. Thông thường thì số lượng nguồn vào của tầng khác với số lượng nơ-ron. ( R # S ). Có phải tổng thể những nơ-ron trong cùng một tầng phải có hàm chuyển giống nhau ? Câu trảlời là không ; bạn hoàn toàn có thể định nghĩa những nơ-ron trong một tầng có hàm chuyển khác nhaubằng cách phối hợp song song hai mạng nơ-ron giống ở trên. Cả hai sẽ có nguồn vào giốngnhau, và mỗi mạng sản xuất ra vài đầu ra. Ma trận trọng số cho những thành phần trong vector đầu vào W : W =  w1, 1 w1, 2 … w1, R   w2, 1 w2, 2 … w2, R   ………. ………. ..    wS, 1 wS, 2 … wS, R   pSa = f ( Wp + b ) Hình 3.1 : Mô hình mạng 1 lớp. Các chỉ số hàng của những thành phần trong ma trận W chỉ ra nơ-ron đích đã phối hợp vớitrọng số đó, trong khi chỉ số cột cho biết nguồn vào cho trọng số đó. Vì vậy, những chỉ sốw3, 2 trongnói rằng đây là trọng số của nguồn vào thứ 2 nối với nơ-ron thứ 3.3.2 Mạng Đa TầngHình 3.2 : Ví dụ về một quy mô mạng đa tầngMô hình mạng neural ở trên gồm 3 lớp : lớp nhập ( input ), lớp ẩn ( hidden ) và lớpxuất ( output ). Mỗi nút trong lớp nhập nhận giá trị của một biến độc lập và chuyển vàomạng. Dữ liệu từ tổng thể những nút trong lớp nhập được tích hợp – ta gọi là tổng trọng số – vàchuyển hiệu quả cho những nút trong lớp ẩn. Gọi là “ ẩn ” vì những nút trong lớp này chỉ liên lạcvới những nút trong lớp nhập và lớp xuất, và chỉ có người phong cách thiết kế mạng mới biết lớp này ( người sử dụng không biết lớp này ). Các nút trong lớp xuất nhận những tín hiệu tổng trọng hóa từ những nút trong lớp ẩn. Mỗi nút trong lớp xuất tương ứng với một biến nhờ vào. III.Huấn luyện mạng neural. 1. Phương Pháp HọcMạng neural tự tạo phỏng theo việc giải quyết và xử lý thông tin của bộ não người, do vậy đặc trưngcơ bản của mạng là có khả năng học, năng lực tái tạo những hình ảnh và tài liệu khi đã học. Trong trạng thái học thông tin được Viral theo hai chiều nhiều lần để học những trọngsố. Có 3 kiểu học chính, mỗi kiểu học tương ứng với một trách nhiệm 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ếntrúc mạng nào cũng hoàn toàn có thể dùng được cho những trách nhiệm. 1.1. Học có giám sát. Một thành phần không hề thiếu của chiêu thức này là sự xuất hiện của một người thầy ( ởbên ngoài mạng lưới hệ thống ). Người thầy này có kỹ năng và kiến thức về thiên nhiên và môi trường bộc lộ qua một tậphợp những cặp nguồn 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 đổi khác những tham số bên trong của mình ( những trọng số và những ngưỡng ) đểtạo nên một ánh xạ có năng lực ánh xạ những nguồn vào thành những đầu ra mong ước. Sự thayđổi này được thực thi nhờ việc so sánh giữa đầu ra thực sự và đầu ra mong ước. 1.2. 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ố ít tài liệu x và hàm ngân sách cầnđược cực tiểu hóa hoàn toàn có thể là một hàm bất kể của tài liệu x và đầu ra của mạng, f – hàm chiphí được quyết định hành động bởi phát biểu của bài toán. Phần lớn những ứng dụng nằm trong vùngcủa những bài toán ước đạt như quy mô hóa thống kê, nén, lọc, phân cụm. 1.3. 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 quy trình một agent tươngtác với thiên nhiên và môi trường. Tại mỗi thời gian t, agent triển khai hành vi yt và môi trường tự nhiên tạomột quan sát xt với một ngân sách tức thời Ct, theo một tiến 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 vi để cực tiểu hóa một chiphí dài hạn nào đó, nghĩa là ngân sách tích góp mong đợi. Quy trình hoạt động giải trí của môitrường và ngân sách dài hạn cho mỗi sách lược thường không được biết, nhưng hoàn toàn có thể ướclượng được. Mạng neural tự tạo thường được dùng trong học tăng cường như mộtphần của thuật toán toàn cục. Các bài toán thường được xử lý bằng học tăng cườnglà những bài toán tinh chỉnh và điều khiển, game show và những trách nhiệm quyết định hành động tuần tự ( sequentialdecision making ) khác. 1.4. Ví dụGiả sử tất cả chúng ta muốn dạy nơron phân biệt chữ A và B. Khi đưa input là A chúng tamuốn nơron cho output là 1, còn khi input là B thì nơron phải cho output bằng 0. Hãy khởi đầu bằng cách cho những weights những giá trị ngẫu nhiên, lúc này nơron chưa biếtgì hết. Bây giờ hãy input chữ A. Nơron sẽ lấy tổng có trọng số của những inputs và so sánhkết quả với 0. Nếu tác dụng dương thì output là 1, âm thì output là 0. Khả năng nơron đoánđúng là 50 %, vì những weights đang có giá trị trọn vẹn ngẫu nhiên. Nếu nơron đoán đúngthì tất cả chúng ta không cần làm gì cả, nhưng khi nơron đoán sai ( output bằng 0 ), thì chúng taphải tăng những weights của những inputs đang hoạt động giải trí ( những inputs khác không ) lên, saocho lần tới tổng có trọng số sẽ vượt quá threshold và tạo nên output là 1. trái lại, khi đưa chữ B vào và nơron đoán sai ( output bằng 1 ), thì ta phải giảm cácweights của những inputs đang hoạt động giải trí xuống, sao cho lần tới tổng có trọng số sẽ nhỏhơn threshold và buộc nơron phải cho output bằng 0. Như vậy, khi dạy chữ B thành công xuất sắc rồi thì nơron có quên đi chữ đã học trước đó là Akhông ? Không, vì khi input là những chữ khác nhau thì nhóm những đường inputs đang hoạtđộng cũng khác nhau hoặc là không trọn vẹn trùng nhau. Nhớ là tất cả chúng ta chỉ biến đổiweights của những inputs đang hoạt động giải trí thôi. Chúng ta chỉ việc lập đi lập lại quy trình dạynhư trên cho tới khi nơron học thuộc bài mới thôi. 2. Thuật Toán Huấn Luyện MạngTrong khoanh vùng phạm vi đề cập những gì tương quan đến kiến thức và kỹ năng cơ sở để làm đồ án, chúng em chỉxin trình diễn những yếu tố có tương quan, những kỹ năng và kiến thức được sử dụng ship hàng cho việchoàn thành đồ án. Trong đồ án, chúng em đã sử dụng mạng feed-forward và thuật toán Viral ngược saisố Back Propagation để giải quyết và xử lý bài toán. 2.1. Thuật Toán Lan Truyền Ngược Back PropagationĐây là giải pháp thông dụng nhất để đào tạo và giảng dạy cho những mạng nơron truyền thẳngnhiều lớp. Có thể vận dụng cho những mạng truyền thẳng với những hàm chuyển và cáchàm lỗi khả vi. Tiêu chuẩn đào tạo và giảng dạy : Làm cho sai số đầu ra càng nhỏ càng tốt. Triết lý của chiêu thức : dựa trên đầu ra để kiểm soát và điều chỉnh trọng số của lớp ra, sau đó dựatrên thống kê giám sát của lớp ra để kiểm soát và đ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 : Quá trình truyền tuyến tính và quy trình truyền ngược : 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ố link W của những neural trong mạng biểudiễn được tài 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ự kiến của mạng gọi là lỗi ( học có giám sát ). Quá trình truyền ngược : Giá trị lỗi sẽ được truyền ngược lại sao cho quá trìnhhuyến luyện ( học ) sẽ tìm ra trọng số Wi để lỗi nhỏ nhất. Công thức tính và vận dụng đơn cử cho bài toán sẽ được đề cập trong phần I. 2 củaChương 2.  Những hạn chế của giải pháp Viral ngược : Ngoài những thành công xuất sắc của giải thuật học Viral 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 vệ là mọi lúc đều tốt. Khó khăn chủyếu là ở quy trình giảng dạy lâu. Có thể do nhịp độ học và động lực không tối ưu. Sự saisót trong việc giảng dạy nói chung Open 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 kiểm soát và đ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ị chức năng ẩn hoặc đơn vị chức năng đầu ra hoàn toàn có thể vì thế mà đạt giá trị rất cao ( hoặcdương hoặc âm ), và qua hàm kích hoạt sigmoid, đơn vị chức năng sẽ có một giá trị kích hoạt rất gần0 hoặc rất gần 1. Giá trị hiệu chỉnh trọng số gần 0, và quy trình giảng dạy hoàn toàn có thể đi đếnmột trạng thái dừng ảo. Cực tiểu địa phương : mặt phẳng 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 hoàn toàn có thể bị mắc bẫy tại một cực tiểu địaphương khi có nhiều cực tiểu thấp hơn gần bên cạnh. Những chiêu thức 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 giải pháp khác là tăng thêmsố lượng đơn vị chức năng ẩn. Như vậy sẽ thao tác trong khoảng trống sai số nhiều chiều, nên cơ hộigặp bẫy nhỏ hơn. Tuy nhiên việc tăng cũng có số lượng giới hạn trên, khi vượt qua số lượng giới hạn này, thời cơ mắc bẫy lại tăng lên. Chương 2 : Nhận Dạng Ký Tự Quang Học TrongMạng Neural Nhân TạoPhương Pháp Và Thuật Toán Nhận Dạng Ký TựI. Các Bước Xây Dựng Nên Bài ToánDưới đây là những bước chính khi thực thi phong cách thiết kế và thực thi mạng noron nhân tạocho bài toán nhận dạng ký tự : Xác định tài liệu nguồn vào, và đầu ra mong ước để triển khai đào tạo và giảng dạy chomạng noron. Đầu vào : Vì tiểu luận chỉ tập trung chuyên sâu vào nghiên cứu và điều tra và setup quy trình nhận dạngký tự neural, nên những tài liệu nguồn vào phải qua giải quyết và xử lý và đạt chuẩn nhu yếu trướckhi đưa vào nhận dạng. Các nhu yếu tài liệu nguồn vào là những file ảnh dạng văn bảncó định dạng *. bmp, đây là dạng file ảnh chuẩn, có kiểu màu px đen và trắng, để việc thực thi nhận dạng được đúng mực. Các file ảnh này đã qua quy trình tiến độ tiềnxử lý : giải quyết và xử lý ảnh nhiễu, ảnh đa sắc, lọc ảnh …  Đầu ra mong ước : là một file text chứa những ký tự Unicode tương ứng màchương trình mong ước đào tạo và giảng dạy mạng học thuộc. Số ký tự đầu ra mong muốnphải tương ứng với số kí tự ảnh đầu vào cần giảng dạy. ABCDEFGHIJKMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 + – \ ? * ^ @ và : < > Hình 2.2 Một ví dụ về mẫu những ký tự trong nhận dạng ký tự quanghọc. 2. Xác Định Cấu Trúc Mạng-Mạng noron được kiến thiết xây dựng theo phương pháp học có giám sát. Bài toán lựa chọn mạng Feed-forward 3 lớp với cấu trúc như sau : – Số noron lớp nguồn vào : 150 noron. Giải thích : Việc đào tạo và giảng dạy cho mạng học là một vòng lặp duyệt qua lần lượt những ký tựảnh giúp mạng noron nhớ và nhận dạng những ký tự ảnh này. Với mỗi vòng lặp, một ký tự sẽđược đưa vào giảng dạy cho mạng noron học. Trong quy trình này, mỗi ký tự sẽ đượcphân tích và chuyển tỉ lệ vào một ma trận nhị phân 15 x 10. Ứng với mỗi điểm lưới củama trận sẽ được tuyến tính hóa tạo ra tương ứng với một noron nguồn vào. Vì vậy ma trận sẽtạo ra 15×10 = 150 noron nguồn vào. Lưu ý : Việc chọn số lượng noron nguồn vào hay nói cách khác việc chọn tỉ lệ ma trận đầuvào cho kí tự là rất quan trọng. Nếu số lượng noron lớn quá sẽ dẫn đến việc : 1. Nhận dạng những kí tự có font chữ nhỏ hoặc trung bình bị sai hoặc không đúng mực. 2. Chương trình viết ra phải duyệt qua rất nhiều vòng lặp dẫn đến chương trình bị chậm, hoặc gây ra thực trạng bị đứng máy khi chạy. Nếu số lượng noron quá nhỏ : – Việc nghiên cứu và phân tích những kí tự ảnh thường thì và lớn sẽ dẫn đến sai số lớn, thế cho nên, việcnhận dạng kí tự cũng sẽ thiếu tính đúng mực. – Qua kiểm nghiệm, và dựa trên nhiều tài liệu, nhận thấy giá trị 150 noron nguồn vào là kháphù hợp để nhận dạng với kiểu kí tự ảnh có font chữ trung bình, và phổ cập. Các kí tựảnh này có chiều cao trung bình là 70 px và chiều rộng khoảng chừng 54 px. – Số noron lớp ẩn : 500 noron. Việc lựa chọn giá trị này dựa trên thực nghiệm của những tàiliệu chuyên về nhận dạng kí tự quang học. Số noron này được quyết định hành động từ những kếtquả tối ưu và giá trị lỗi cơ sở trong quy trình giảng dạy. – Số noron đầu ra : 16 noron tương ứng với 16 bit nhị phân của mã Unicode. Từ 16 noronnày ta tổng hợp và chuyển thành 16 bit nhị phân, sau cùng chuyển thành 1 kí tự Unicode. 3. Thuật toán huấn luyện và đào tạo mạng. Mạng feed – forward sử dụng giải thuật Viral ngược sai số Back Propagation. Giải thuật gồm 2 bước :  Bước 1 : – Lan truyền xuôi đầu vào qua mạng. Sử dụng những công thức : Công thức chung tính đầu ra của một noron thứ i tại lớp thứ k : ∑ w xijj = 0 yi = f ( – bi ) Với f là hàm chuyển sigmoid lưỡng cực được tính theo công thức : f = − 11 − e − αtα : thông số góc của hàm chuyểnt : biến net-inputbi : thông số ngưỡng hay độ lệchÁp dụng so với quy mô mạng của chương trình : – Công thức cho đầu ra của một noron thứ i ( 1  250 ) tại lớp ẩn ∑ w xai = f ( j = 1 ij – bi ) wijVới : trọng số tại noron thứ i của lớp ẩn liên kết với đầu vào thứ j của lớp vàoxj : giá trị nguồn vào của noron thứ j tại lớp vàobi : giá trị ngưỡng hay độ lệch của noron thứ i của đầu vào-Công thức cho đầu ra của một noron thứ k ( k = 1  16 ) tại lớp output ∑ wkj a j − bkyk = f ( j = 1 ∑ wkj ( ) = f [ j = 1 ∑ w xf ( j = 1 ij ) ]  Bước 2 : Lan truyền ngượcTính toán rơi lệch giữa đầu ra thực và đầu ra mong ước của noron thứ ktại đầu ra.ei = ti – yiTổng bình phương sai số của mạng ứng với mẫu học ( Xs, Ts ) : E = 1 p2 k = 1 ( ti – yi ) 2P : số thành phần đầu raNếu E < ε và l + 1T hông tin sai số sẽ được Viral ngược qua mạng để kiểm soát và điều chỉnh lạitrọng số tại vòng lặp l. - Công thức kiểm soát và điều chỉnh trọng số với link giữa noron thứ j trong lớp ẩn vànoron thứ i trong lớp ra tại lần lặp l + 1 : ( l + 1 wijwij ( l + 1 ) = ( l ) + η. ei ( l ). yj. f ’ ( yi ( l ) ) Với η : thông số họcei ( l ) : giá trị rơi lệch của noron thứ i trong lớp ra, trong lần dạy ( lặp ) thứ l. f ’ : đạo hàm của hàm chuyển lưỡng cực, công thức f ’ = η : thông số học1 − x2yi ( l ) : giá trị đầu ra của noron thứ i trong lớp ra tại vòng lặp thứ l.yj ( l ) : giá trị đầu ra của noron thứ j trong lớp ẩn tại vòng lặp thứ l. - Công thức kiểm soát và điều chỉnh trọng số với link giữa noron vào thứ j và noronẩn thứ i, tại lần lặp thứ l + 1 ( l + 1 wij ∑ wwij ( l + 1 ) = ( l ) + η. xj. f ’ ( yi ). k = 1 ki ( l + 1 ). ek ( l ). f ' ( yk ( l ) ) Với : η : thông số họcxj : giá trị đầu ra của noron thứ j trong lớp vào. yi : giá trị đầu ra của noron thứ i trong lớp ẩnwki ( l + 1 ) : trọng số link giữa noron thứ k trong lớp ra và noron thứ itrong lớp ẩn trong lần lặp thứ l + 1. yk ( l ) : giá trị đầu ra của noron thứ k trong lớp ra.  Các tham số sử dụng trong chương trìnhTốc độ học η = 150. Hệ số góc α Sigmoid = 0.014. Giá trị ngưỡng hay độ lệch : 30S ố lần dạy 300 - 600 tùy độ phức tạp của từng loại font. Ngưỡng của lỗi = 0.0002. II.Phương Pháp và Thuật Toán Nhận Dạng Kí Tự1. Xử lý tài liệu ( Phân tích ảnh ) - Quá trình nghiên cứu và phân tích ảnh thực ra là nghiên cứu và phân tích chuỗi văn bản ảnh thành từng ký tự một. Việc nghiên cứu và phân tích này dựa trên việc nhận dạng những px màu của ký tự ảnh với tài liệu đầuvào đã được giải quyết và xử lý và chuyển thành định dạng *. bmp chỉ có 2 px điểm đen RGB ( 0,0,0 ) và điểm trắng RGB ( 255, 255, 255 ). Quá trình nghiên cứu và phân tích ảnh được triển khai tuần tự như sau : - Phân tích văn bản thành từng dòng văn bản. - Phân tích từng dòng văn bản thành từng ký tự ảnh một. 1.1. Tách dòng kí tự - Việc tách dòng kí tự chính là cơ sở để thực thi tách từng kí tự một cách thuận tiện vànhanh chóng.  Thuật toán : - Bắt đầu từ điểm ảnh ( x, y ) tiên phong của file ảnh ( 0,0 ), gán số dòng đang xét lines = 0 ; a. - Xác định số lượng giới hạn trên của dòng : Quét hết chiều rộng của ảnh, trên cùng một giá trịy ( chạy x < = chiều rộng ảnh, giữ nguyên y ) + Nếu gặp một px đen thì ghi nhận y chính là tọa độ số lượng giới hạn trên củadòng ( top_line ). Dừng duyệt x. + Nếu không, liên tục duyệt + Nếu khi quét hết chiều rộng của ảnh, vẫn không tìm thấy giá trị điểm màu đen thìreset lại x = 0, và liên tục duyệt đến dòng tiếp theo ( tăng y = y + 1 ) b. - Xác định số lượng giới hạn dưới của dòng : + Bắt đầu duyệt từ số lượng giới hạn trên ( đỉnh ) vừa tìm thấy của dòng ( 0, top_line ) + Tương tự như xác lập số lượng giới hạn trên, ta duyệt hết chiều rộng của ảnh trên cùng mộtgiá trị y. + Nếu duyệt hết dòng mà không tìm thấy ký tự px đen nào thì ghi nhận y-1 là giớihạn dưới của dòng ( bottom_line ). Dừng duyệt. Tăng số dòng lên ( lines + + ). + Nếu chưa tìm thấy bottom_line, liên tục duyệt đến dòng tiếp theo ( tăng y, reset x = 0 ). Giới hạn dướic. Bắt đầu từ số lượng giới hạn dưới y ( bottom_line ) vừa tìm thấy sau cuối, lặp lại những bước a, bđể xác lập những số lượng giới hạn của những dòng tiếp theo, cho đến khi duyệt hết chiều cao củaảnh thì dừng, quy trình xác lập dòng ký tự hoàn tất. Giới hạn trên1. 2. Tách từng kí tự  Thuật toán : Xét lần lượt từng dòng1. - Bắt đầu xét từ giá trị số lượng giới hạn trên y của dòng ( top_line ) và giá trị x tiên phong ( x = 0 ) 2. Xác định số lượng giới hạn trên của ký tự : Quét hết chiều rộng của ảnh, trên cùng giá trị y. + Nếu phát hiện px đen thì ghi lại y là giá trị đỉnh của ký tự ( top_character ). Dừng quét. + Nếu quét hết chiều rộng, mà vẫn không tìm thấy px đen nào thì tăng y và reset lạix, liên tục triển khai lại bước 2.3. Xác định số lượng giới hạn dưới của ký tự : Bắt đầu duyệt từ số lượng giới hạn trên ( đỉnh ) vừa tìmthấy của ký tự ( 0, top_character ) + Tương tự như xác lập số lượng giới hạn trên, ta duyệt hết chiều rộng của ảnh trên cùng mộtgiá trị y. + Nếu duyệt hết dòng mà không tìm thấy ký tự px đen nào thì ghi nhận y-1 là giớihạn dưới của ký tự ( bottom_character ). Dừng duyệt. + Nếu chưa tìm thấy bottom_character, liên tục duyệt đến dòng tiếp theo ( tăng y, resetx = 0 ). 4. Xác định số lượng giới hạn trái của ký tự ( xác lập giá trị của x ) - Bắt đầu từ số lượng giới hạn trên ( đỉnh của ký tự - top_character ), giá trị x tiên phong ( x = 0 ). - Quét đến số lượng giới hạn dưới của dòng ( bottom_character ), giữ nguyên x ( quét theo chiềuthẳng đứng ) + Nếu gặp px đen tiên phong, ghi nhận x là số lượng giới hạn trái của kí tự ( left-character ). Dừngquét. + Nếu quét đến cuối số lượng giới hạn dưới, vẫn không tìm thấy px đen nào, thì reset lại y = số lượng giới hạn trên vừa tìm thấy, tăng x lên. ( x + + ), và liên tục thực thi lại bước 4.5. Xác định số lượng giới hạn phải của ký tự ( xác lập giá trị x ) - Bắt đầu từ số lượng giới hạn trên - đỉnh của ký tự ( top_character ), số lượng giới hạn trái của ký tự ( left_character, top_character ). Quét theo chiều thẳng đứng đến số lượng giới hạn dưới củadòng. + Nếu khi quét hết chiều đứng, mà vẫn không gặp được px đen nào thì ghi nhận x-1là số lượng giới hạn phải của ký tự ( right_character ). Dừng quét. + Nếu gặp px đen thì tăng x ( x + + ) và reset lại y = top_character của ký tự đangxét, để xét đường thẳng đứng tiếp theo. 6. Lặp lại bước 1 đến 5 để xác lập số lượng giới hạn của ký tự tiếp theo trên cùng dòng. Vớiy = top_line của dòng đang xét và giá trị x tiên phong = right_character của ký tự vừa tìmthấy. Sau khi tách ký tự1. 3. Xác Định Giới Hạn Chính Xác Cho Từng Ký TựTrong một số ít trường hợp, việc tách ký tự chưa thực sự đúng chuẩn ( giống như ví dụtrên ). Ta cần xác lập lại một lần nữa số lượng giới hạn đúng chuẩn cho từng ký tự.  Thuật toán : Xét từng ký tự : 1. Xác định đỉnh ký tự-Bắt đầu từ đỉnh của ký tự trong thời điểm tạm thời, và số lượng giới hạn trái của ký tự vừa xác lập ởtrên ( left_character, top_character ). Quét đến số lượng giới hạn phải của ký tự, giữ nguyên y. + Nếu tìm thấy px đen thì chọn lại y là số lượng giới hạn đỉnh của ký tự ( top_character = y ). Dừng quét. + Nếu không, xét điểm tiếp theo. + Nếu không tìm thấy px đen nào thì tăng y ( y + + ), reset lại x. ( x = left_character ). Thực hiện lại bước 1.2. Xác định số lượng giới hạn dưới của ký tự. - Bắt đầu từ số lượng giới hạn dưới hiện thời của ký tự ( được xác lập ở trên – phần 1.2 ), vàgiới hạn trái của ký tự ( left_character, bottom_character ). Quét x đến số lượng giới hạn phải củaký tự, trên cùng giá trị y. + Nếu tìm thấy px đen, lưu lại y là số lượng giới hạn dưới của ký tự ( bottom_character = y ). Ngừng quét. + Nếu không tìm thấy px đen nào, thì reset lại x ( = left character ), giảm y ( y -- ). Thực hiện lại bước 2. Giới hạn trênXác định giới hạnGiới hạn dưới1. 4. Ánh Xạ Ký Tự Ảnh Vào Ma Trận Giá TrịSau khi tách, ký tự ảnh sẽ được ánh xạ vào ma trận 2 chiều, có kích cỡ 15 x 10. Vì những ký tự ảnh dù đã chuẩn hóa, tinh lọc nhưng sau khi tách đều có kích cỡ khá lớnso với ma trận ( khoảng chừng 58 x 74 ), nên những ký tự ảnh này đều phải qua 1 bước quy đổi tỉlệ trước khi chuyển giá trị vào ma trận nhị phân 15 x10.  Lưu ý : Việc quy đổi tỉ lệ này là một trong những nguyên do gây ra sai sốdẫn đến nhận dạng ký tự bị sai. Thuật toán : ánh xạ ký tự ảnh vào ma trận px ảnh. a. Xét chiều rộng-Ánh xạ điểm đầu và điểm cuối của ký tự ảnh tương ứng với giá trị đầu và cuốicủa ma trận. - Khởi tạo với 10 thành phần tương ứng. - Ánh xạ tọa độ điểm đầu ( 0, y ) và điểm cuối ( width, y ) của ảnh kí tự tương ứng vớigiá trị đầu ( 0, y ) và giá trị cuối ( 10, y ) của ma trận. - Chia nhỏ chiều rộng thành 10 mốc giá trị, ánh xạ vào chiều rộng của ma trậnpixel. Ví dụ : xMT [ 0 ] = 0 ; xMT [ 5 ] = width / 2. xMT [ 10 ] = width. xMT [ 2 ] = xMT [ 5 ] / 2 ...... b. Đối với chiều cao : Khởi tạo với 15 thành phần tương ứng. Ánh xạ điểm đầu ( x, 0 ) và điểm cuối ( x, height ) của ảnh kí tự tương ứng với giá trị đầu ( x, 0 ) và giá trị cuối ( x, 15 ) của ma trận. Chia nhỏ chiều cao thành 15 mốc giá trị, ánh xạ tương ứng vào chiều cao của ma trậnpixel. Vd : yMT [ 0 ] = 0 ; yMT [ 5 ] = height / 3. xMT [ 10 ] = height x 2/3. xMT [ 15 ] = height .... - Lấy những giá trị px trong file ảnh tuyến tính hóa vào trong ma trận px bằng cách kếthợp tọa độ chiều cao và chiều rộng. Vd : MT [ i, j ] = img [ xMT [ i ], yMT [ j ] ] ( 0,0 ) 15 ( 10,15 ) Hình : 10 Ánh xạ lưới ký tự. c. Chuyển ma trận lưới px thành ma trận giá trị-Bắt đầu từ tọa độ ( 0,0 ) của ma trận px. Giữ y, duyệt qua x : Nếu px đen thì ghi nhận giá trị 1 vào ma trận giá trị có tọa độ tương ứng. Nếu px trắng thì ghi nhận giá trị 0 vào ma trận giá trị có tọa độ tương ứng. Nếu x = chiều rộng thì reset lại x = 0, tăng y ( y + + ). Từ ma trận ảnh này ta ánh xạ thành mảng 1 chiều 150 cột 1 dòng, và chuyểnthành 150 noron nguồn vào .

5/5 - (1 vote)
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments