Вы находитесь на странице: 1из 89

GVHD : Nguyễn Tấn Lũy

Luận văn
Đề tài: Camera dùng mạng
Nơtron trong matlab giao tiếp
Plc

SVTH: :  Bùi Văn Dương trang  1
GVHD : Nguyễn Tấn Lũy

LỜI NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN

……………………………………………………………………………………………….
………………………………………………………………

……………………………………………………………………………………………….
………………………………………………………………

……………………………………………………………………………………………….
………………………………………………………………

……………………………………………………………………………………………….
………………………………………………………………

……………………………………………………………………………………………….
………………………………………………………………

……………………………………………………………………………………………….
………………………………………………………………

……………………………………………………………………………………………….
………………………………………………………………

……………………………………………………………………………………………….
………………………………………………………………

……………………………………………………………………………………………….
………………………………………………………………

……………………………………………………………………………………………….
………………………………………………………………

……………………………………………………………………………………………….
………………………………………………………………

……………………………………………………………………………………………….
………………………………………………………………

……………………………………………………………………………………………….
………………………………………………………………

……………………………………………………………………………………………….
………………………………………………………………

……………………………………………………………………………………………….
………………………………………………………………

SVTH: :  Bùi Văn Dương trang  2
GVHD : Nguyễn Tấn Lũy

……………………………………………………………………………………………….
………………………………………………………………

……………………………………………………………………………………………….
………………………………………………………………

Tp.Hồ Chí Minh. Ngày ….. Tháng …… Năm


2013

Giáo viên hướng dẫn

Nguyễn Tấn Lũy

SVTH: :  Bùi Văn Dương trang  3
GVHD : Nguyễn Tấn Lũy

LỜI NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN

……………………………………………………………………………………………….
………………………………………………………………

……………………………………………………………………………………………….
………………………………………………………………

……………………………………………………………………………………………….
………………………………………………………………

……………………………………………………………………………………………….
………………………………………………………………

……………………………………………………………………………………………….
………………………………………………………………

……………………………………………………………………………………………….
………………………………………………………………

……………………………………………………………………………………………….
………………………………………………………………

……………………………………………………………………………………………….
………………………………………………………………

……………………………………………………………………………………………….
………………………………………………………………

……………………………………………………………………………………………….
………………………………………………………………

……………………………………………………………………………………………….
………………………………………………………………

……………………………………………………………………………………………….
………………………………………………………………

……………………………………………………………………………………………….
………………………………………………………………

……………………………………………………………………………………………….
………………………………………………………………

……………………………………………………………………………………………….
………………………………………………………………

SVTH: :  Bùi Văn Dương trang  4
GVHD : Nguyễn Tấn Lũy

……………………………………………………………………………………………….
………………………………………………………………

……………………………………………………………………………………………….
………………………………………………………………

Tp.Hồ Chí Minh. Ngày ….. Tháng …… Năm


2013

Giáo viên phản biện

SVTH: :  Bùi Văn Dương trang  5
GVHD : Nguyễn Tấn Lũy

Lời Cảm Ơn

Chúng em xin gửi lời cảm ơn chân thành tới Ban Giám Hiệu và các thầy cô
trường ĐH Công Nghiệp TP. Hồ Chí Minh đã tận tình giảng dạy chúng em trong
thời gian qua.

Trong quá trình thực hiện đồ án môn học, chúng em xin chân thành cảm ơn
GVHD Thầy Nguyễn Tấn Lũy đã tận tình giúp đỡ tạo điều kiện cho chúng em xây
dựng và phát triển đề tài, các thầy cô trong khoa, ban quản lý thư viện trường
cùng các bạn trong và ngoài lớp đã trao đổi, góp ý, giúp đỡ chúng em hoàn thành
đồ án môn học.

SVTH: :  Bùi Văn Dương trang  6
GVHD : Nguyễn Tấn Lũy

Mục Lục
Chương 1 giới thiêu...................................................................................................6

Chương 2 nội dung......................................................................................................7

I lý thuyet co ban..........................................................................................................7

1 mạng noron ...............................................................................................................7

1.1 câu trúc và mô hình mạng noron ...........................................................................7

1.2 câu tạo và Phuong thưc làm việc của mạng noron...............................................11

1.3 các luật học...........................................................................................................20

1.4 Thuật toán lan truyền ngược ...............................................................................24

1.5 Kết luận ...............................................................................................................32

2 xử lý ảnh trong matlab.........................................................................................33

2.1 một số lẹnh cơ bản trong xử lý ảnh......................................................................34

2.2 Các bước thu thập ảnh cỏ bản.............................................................................38

2.3 Tao giao diện gui.................................................................................................41

3 kết nối matlab và PLC.........................................................................................46

3.1 tạo kết nối với PC Access....................................................................................46

3.2 các bước tạo kết nôi OPC....................................................................................48

II Thiết kế và thi công mô hình..................................................................................53

1 Phần Cứng……………………………………………………………….……………..53

2 Nguyên Lý Hoạt Động…………………………………………………………….54

SVTH: :  Bùi Văn Dương trang  7
GVHD : Nguyễn Tấn Lũy

3 Sơ đồ khối................................................................................................................55

3.1 khối camera...........................................................................................................56

3.2Khối cảm biến........................................................................................................56

3.3 Khối máy tính.......................................................................................................57

4 Học và huấn luyện mạng Noron..............................................................................57

4.1 Ma trận dữ liệu......................................................................................................57

4.2 Tạo ma trận dữ liệu ra...........................................................................................59

4.3 tao mạng noron qua công cu network nẻual........................................................60

5 Phần mềm................................................................................................................66

5.1 Lưu đồ chương trình chính...................................................................................66

5.2 Lưu đồ xử lý ảnh...................................................................................................67

III Thực nghiệm.........................................................................................................69

1 Thiết lập thực nghiệm........................................................................................69

2 kết quả...................................................................................................................69

3 đánh giá....................................................................................................................69

IV kết luận và hướng phát triển .................................................................................70

1 kết luân..................................................................................................................70

2 hướng phát triên.......................................................................................................70

Phụ lục........................................................................................................................71

SVTH: :  Bùi Văn Dương trang  8
GVHD : Nguyễn Tấn Lũy

CHƯƠNG 1 . GIỚI THIỆU

Thời đại tự động hóa và số hóa đang đóng một vai trò thiết yếu trong tất cả
các ngành trên mọi lĩnh vực và đời sống. mọi công việc tự động hóa dựa trên số
hóa và xử lý hình ảnh đang thực sự làm giảm bớt đi công sức và tiền bạc cho xã
hội. làm đẩy nhanh tốc độ xử lý công việc, mang lại nhiều thuận lợi về thời gian
trong sản xuất và đời sống, cuộc sống trở nên tiện ích và hiện đại hơn

Là một sinh viên của ngành tự động nắm được ý nghĩa trên em đã quyết định
chọn đề tài “ Nhận dạng hình dáng sản phẩm dùng xử lý ảnh và mạng noural nhân
tạo”, dựa trên nên tảng của mô hình “SMC automatic 200” đã được làm đồ án
trước đó, đề tài này là một hướng phát triển ,nó đã trở nên ưu việt và hiệu quả hơn
rất nhiều so với đề tài trước đó.

Đề tài thực sự hữu ích cho những ai học ngành tự động vì nó đòi hỏi người
làm phải kiên trì , tìm hiểu và nghiên cứu rất nhiều. nó đã cho em hiểu nhiều về
matlab, về xử lý ảnh và đặc biệt là hiểu về mạng neural còn khá mới mẽ, nhưng
cũng đã được ứng dụng rất nhiều trong thực tế.

Tuy đã hết sức cố gắng để hoàn thành đề tài. Tuy nhiên không thể tránh khỏi
những thiếu xót và khiếm khuyết rất mong được quý thầy cô và các bạn góp ý để
em có thể ngày càng hoàn thiện hơn

SVTH: :  Bùi Văn Dương trang  9
GVHD : Nguyễn Tấn Lũy

CHƯƠNG 2. NỘI DUNG


I LÝ THUYẾT CƠ BẢN
1. Mạng Noron
1.1 Cấu Trúc Và Mô Hình Mạng Nơron

1.1.1 Mô hình một nơron sinh học


Phần tử xử lý cơ bản của một mạng nơron sinh học là một nơron, phần tử
này có thể chia làm bốn thành phần cơ bản như sau: dendrites, soma, axon, và
synapses.

- Dendrites: là phần nhận tín hiệu đầu vào.


- Soma: là hạt nhân.
- Axon: là phần dẫn ra tín hiệu xử lý.
- Synapses: là đường tín hiệu điện hóa giao tiếp giữa các nơron.

Kiến trúc cơ sở này của bộ não con người có một vài đặc tính chung. Một
cách tổng quát, thì một nơron sinh học nhận đầu vào từ các nguồn khác nhau, kết
hợp chúng tại với nhau, thực thi tổ hợp phi tuyến chúng để cho ra kết quả cuối
cùng ở đầu ra. Hình 1.1 chỉ ra mối quan hệ giữa bốn phần tử của một nơron sinh
học.

Hình 1.1.1 Một nơron sinh học

SVTH: :  Bùi Văn Dương trang  10
GVHD : Nguyễn Tấn Lũy

Một nơron sinh học chỉ có một số chức năng cơ bản như vậy, ta nhận thấy
khả năng xử lý thông tin của nó là rất yếu. Để có được khả năng xử lý thông tin
hoàn hảo như bộ não con người, thì các nơron phải kết hợp và trao đổi thông tin
với nhau. Ta hình dung sơ đồ liên kết, và trao đổi thông tin giữa hai nơron như hình
1.2.

Hình 1.1.2. Sự liên kết các nơron

1.1.2 Cấu trúc và mô hình của một nơron nhân tạo


Mô hình toán học của mạng nơron sinh học được đề xuất bởi McCulloch và
Pitts, thường được gọi là nơron M-P, ngoài ra nó còn được gọi là phần tử xử lý và
được ký hiệu là PE (Processing Element).

Mô hình nơron có m đầu vào x1, x2, ..., xm, và một đầu ra yi như sau:

SVTH: :  Bùi Văn Dương trang  11
GVHD : Nguyễn Tấn Lũy

Hình 1.1.3 Mô hình một nơron nhân tạo

Giải thích các thành phần cơ bản:

- Tập các đầu vào: Là các tín hiệu vào của nơron, các tín hiệu này thường
được đưa vào dưới dạng một vector m chiều.
- Tập các liên kết (các trọng số): Mỗi liên kết được thể hiện bởi một trọng
số (thường được gọi là trọng số liên kết). Trọng số liên kết giữa tín hiệu
vào thứ j cho nơron i thường được ký hiệu là w ij. Thông thường các trọng
số này được khởi tạo ngẫu nhiên ở thời điểm khởi tạo mạng và được cập
nhật liên tục trong quá trình học mạng.
- Bộ tổng (Hàm tổng): Thường dùng để tính tổng của tích các đầu vào với
trọng số liên kết của nó.
- Ngưỡng: Ngưỡng này thường được đưa vào như một thành phần của hàm
truyền.
- Hàm truyền: Hàm này dùng để giới hạn phạm vi đầu ra của mỗi nơron.
Nó nhận đầu vào là kết quả của hàm tổng và ngưỡng đã cho. Thông
thường, phạm vi đầu ra của mỗi nơron được giới hạn trong đoạn [0,1]
hoặc [-1,1]. Các hàm truyền rất đa dạng, có thể là các hàm tuyến tính

SVTH: :  Bùi Văn Dương trang  12
GVHD : Nguyễn Tấn Lũy

hoặc phi tuyến. Việc lựa chọn hàm truyền tùy thuộc vào từng bài toán và
kinh nghiệm của người thiết kế mạng.
- Đầu ra: Là tín hiệu đầu ra của một nơron, với mỗi nơron sẽ có tối đa một
đầu ra.
Về mặt toán học, cấu trúc của một nơron i được mô tả bằng cặp biểu thức
sau:

n
neti = ∑ wij x j
yi = f (neti − θ i ) j =1

trong đó: x1, x2, …xm là các tín hiệu đầu vào, còn w i1, wi2,…,wim là các trọng số

θi
kết nối của nơron thứ i, net i là hàm tổng, f là hàm truyền, là một ngưỡng, yi
là tín hiệu đầu ra của nơron.

Như vậy, tương tự như nơron sinh học, nơron nhân tạo cũng nhận các tín
hiệu đầu vào, xử lý (nhân các tín hiệu này với trọng số liên kết, tính tổng các
tích thu được rồi gửi kết quả đến hàm truyền), và cho một tín hiệu đầu ra (là kết
quả của hàm truyền).

• Hàm truyền có thể có các dạng sau:


1 khi x ≥ 0
y=
0 khi x < 0
- Hàm bước (1.6)
- Hàm giới hạn chặt (hay còn gọi là hàm bước)
 1 khi x ≥ 0
y = sgn( x) = 
− 1 khi x < 0
(1.7)

- Hàm bậc thang

SVTH: :  Bùi Văn Dương trang  13
GVHD : Nguyễn Tấn Lũy

1 khi x >1

y = sgn( x) =  x khi 0 ≤ x ≤ 1
0 khi x<0

(1.8)

- Hàm ngưỡng đơn cực


1
y=
1 + e − λx
với λ>0 (1.9)

- Hàm ngưỡng hai cực


2
y= −1
1 + e − λx
với λ>0 (1.10)

• Đồ thị các dạng hàm truyền được biểu diễn như sau:

Hình 1.1.4 Đồ thị các dạng hàm truyền

SVTH: :  Bùi Văn Dương trang  14
GVHD : Nguyễn Tấn Lũy

1.2 Cấu Tạo Và Phương Thức Làm Việc Của Mạng Nơron
Dựa trên những phương pháp xây dựng nơron đã trình bày ở mục trên, ta có thể
hình dung mạng nơron như là một hệ truyền đạt và xử lý tín hiệu. Đặc tính truyền
đạt của nơron phần lớn là đặc tính truyền đạt tĩnh.

Khi liên kết các đầu vào/ra của nhiều nơron với nhau, ta thu được một mạng
nơron, việc ghép nối các nơron trong mạng với nhau có thể là theo một nguyên tắc
bất kỳ. Vì mạng nơron là một hệ truyền đạt và xử lý tín hiệu, nên có thể phân biệt
các loại nơron khác nhau, các nơron có đầu vào nhận thông tin từ môi trường bên
ngoài khác với các nơron có đầu vào được nối với các nơron khác trong mạng,
chúng được phân biệt với nhau qua vector hàm trọng số ở đầu vào w.

Nguyên lý cấu tạo của mạng nơron bao gồm nhiều lớp, mỗi lớp bao gồm nhiều
nơron có cùng chức năng trong mạng. Hình 1.5 là mô hình hoạt động của một
mạng nơron 3 lớp với 8 phần tử nơron. Mạng có ba đầu vào là x 1, x2, x3 và hai đầu
ra y1, y2. Các tín hiệu đầu vào được đưa đến 3 nơron đầu vào, 3 nơron này làm
thành lớp đầu vào của mạng. Các nơron trong lớp này được gọi là nơron đầu vào.
Đầu ra của các nơron này được đưa đến đầu vào của 3 nơron tiếp theo, 3 nơron này
không trực tiếp tiếp xúc với môi trường bên ngoài mà làm thành lớp ẩn, hay còn
gọi là lớp trung gian. Các nơron trong lớp này có tên là nơron nội hay nơron ẩn.
Đầu ra của các nơron này được đưa đến 2 nơron đưa tín hiệu ra môi trường bên
ngoài. Các nơron trong lớp đầu ra này được gọi là nơron đầu ra.

SVTH: :  Bùi Văn Dương trang  15
GVHD : Nguyễn Tấn Lũy

Hình 1.1.5 Mạng nơron ba lớp

Mạng nơron được xây dựng như trên là mạng gồm 3 lớp mắc nối tiếp nhau đi từ
đầu vào đến đầu ra. Trong mạng không tồn tại bất kỳ một mạch hồi tiếp nào. Một
mạng nơron có cấu trúc như vậy gọi là mạng một hướng hay mạng truyền thẳng
một hướng (Feed forward network), và có cấu trúc mạng ghép nối hoàn toàn (vì
bất cứ một nơron nào trong mạng cũng được nối với một hoặc vài nơron khác).
Mạng nơron bao gồm một hay nhiều lớp trung gian được gọi là mạng Multilayer
Perceptrons) (MLP-Network).

Mạng nơron khi mới được hình thành thì chưa có tri thức, tri thức của mạng sẽ
được hình thành dần dần sau một quá trình học. Mạng nơron được học bằng cách
đưa vào những kích thích, và mạng hình thành những đáp ứng tương ứng, những
đáp ứng tương ứng phù hợp với từng loại kích thích sẽ được lưu trữ. Giai đoạn này
được gọi là giai đoạn học của mạng. Khi đã hình thành tri thức mạng, mạng có thể
giải quyết các vấn đề một cách đúng đắn. Đó có thể là vấn đề ứng dụng rất khác
nhau, được giải quyết chủ yếu dựa trên sự tổ chức hợp nhất giữa các thông tin đầu
vào của mạng và các đáp ứng đầu ra.

SVTH: :  Bùi Văn Dương trang  16
GVHD : Nguyễn Tấn Lũy

• Nếu nhiệm vụ của một mạng là hoàn chỉnh hoặc hiệu chỉnh các thông tin thu
được không đầy đủ hoặc bị tác động của nhiễu. Mạng nơron kiểu này được
ứng dụng trong lĩnh vực hoàn thiện mẫu, trong đó có một ứng dụng cụ thể là
nhận dạng chữ viết.
• Nhiệm vụ tổng quát của một mạng nơron là lưu giữ động các thông tin.
Dạng thông tin lưu giữ này chính là quan hệ giữa các thông tin đầu vào và
các đáp ứng đầu ra tương ứng, để khi có một kích thích bất kỳ tác động vào
mạng, mạng có khả năng suy diễn và đưa ra một đáp ứng phù hợp. Đây
chính là chức năng nhận dạng theo mẫu của mạng nơron. Để thực hiện chức
năng này, mạng nơron đóng vai trò như một bộ phận tổ chức các nhóm
thông tin đầu vào, và tương ứng với mỗi nhóm là một đáp ứng đầu ra phù
hợp. Như vậy, một nhóm bao gồm một loại thông tin đầu vào và một đáp
ứng đầu ra. Các nhóm có thể được hình thành trong quá trình học, và cũng
có thể không hình thành trong quá trình học.
Hình 1.6 là một số liên kết đặc thù của mạng nơron. Nơron được vẽ là các vòng
tròn xem như một tế bào thần kinh, chúng có các mối liên hệ đến các nơron khác
nhờ các trọng số liên kết. Tập hợp các trọng số liên kết này sẽ lập thành các ma
trận trọng số tương ứng.

1.2.1 Mạng nơron một lớp


Mỗi một nơron có thể phối hợp với các nơron khác tạo thành một lớp các
trọng số. Mạng một lớp truyền thẳng như hình 1.6a. Một lớp nơron là một nhóm
các nơron mà chúng đều có cùng trọng số, nhận cùng một tín hiệu đầu vào đồng
thời.

SVTH: :  Bùi Văn Dương trang  17
GVHD : Nguyễn Tấn Lũy

Trong ma trận trọng số, các hàng là thể hiện nơron, hàng thứ j có thể đặt
nhãn như một vector wj của nơron thứ j gồm m trọng số wji. Các trọng số trong
cùng một cột thứ j (j=1,2,...,n) đồng thời cùng nhận một tín hiệu đầu vào xj.

wj = [wj1, wj2, ..., wjm]

Tại cùng một thời điểm, vector đầu vào x = [x1, x2,..., xn] có thể là một nguồn
bên ngoài là cảm biến hoặc thiết bị đo lường đưa tới mạng.

(a) Mạng truyền thẳng một lớp (b) Mạng hồi tiếp một lớp

(c) Mạng truyền thẳng nhiều lớp

SVTH: :  Bùi Văn Dương trang  18
GVHD : Nguyễn Tấn Lũy

(d) Mạng nơron hồi quy

Hình 1.1.6 Một số dạng mạng nơron

1.2.2 Mạng nơron truyền thẳng nhiều lớp


Mạng nơron nhiều lớp (Hình 1.6.c) có các lớp được phân chia thành 3 loại sau
đây:

• Lớp vào là lớp nơron đầu tiên nhận tín hiệu vào x i (i = 1, 2, ..., n). Mỗi tín
hiệu xi được đưa đến tất cả các nơron của lớp đầu vào. Thông thường, các
nơron đầu vào không làm biến đổi các tín hiệu vào x i, tức là chúng không có
các trọng số hoặc không có các loại hàm chuyển đổi nào, chúng chỉ đóng vai
trò phân phối các tín hiệu.
• Lớp ẩn là lớp nơron sau lớp vào, chúng không trực tiếp liên hệ với thế giới
bên ngoài như các lớp nơron vào/ra.
• Lớp ra là lớp nơron tạo ra các tín hiệu ra cuối cùng.

1.2.3 Mạng nơron phản hồi


Mạng nơron phản hồi là mạng mà đầu ra của mỗi nơron được quay trở lại

nối với đầu vào của các nơron cùng lớp được gọi là mạng Laeral như hình 1.6b

SVTH: :  Bùi Văn Dương trang  19
GVHD : Nguyễn Tấn Lũy

1.2.4 Mạng nơron hồi quy


Mạng nơron phản hồi có thể thực hiện đóng vòng được gọi là mạng nơron
hồi quy như hình 1.6d. Mạng nơron hồi quy có trọng số liên kết đối xứng như
mạng Hopfield, mạng luôn hội tụ về trạng thái ổn định (Hình 1.6.b). Mạng BAM
thuộc nhóm mạng nơron hồi quy, gồm 2 lớp liên kết 2 chiều, không được gắn với
tín hiệu vào/ra. Nghiên cứu mạng nơron hồi quy mà có trọng số liên kết không đối
xứng, thì sẽ gặp phải vấn đề phức tạp nhiều hơn so với mạng truyền thẳng và mạng
hồi quy có trọng số liên kết đối xứng.

1.2.5 Mạng Hopfield


Mạng Hopfield là mạng phản hồi một lớp, được chỉ ra trong hình 1.6.b. Cấu
trúc chi tiết của nó được thể hiện trong hình 1.7. Khi hoạt động với tín hiệu rời rạc,
nó được gọi là mạng Hopfield rời rạc, và cấu trúc của nó cũng được gọi là mạng
hồi quy.

Hình 1.1.7 Cấu trúc của mạng Hopfield


SVTH: :  Bùi Văn Dương trang  20
GVHD : Nguyễn Tấn Lũy

Như mạng Hopfield đã vẽ ở trên, ta thấy nút có một đầu vào bên ngoài x j và

θj
một giá trị ngưỡng (j = 1,2,...n). Một điều quan trọng cần nói ở đây là mỗi nút
không có đường phản hồi về chính nó. Nút đầu ra thứ j được nối tới mỗi đầu vào

của nút khác qua trọng số wij, với i j, (i = 1,2,...,n), hay nói cách khác wii = 0, (với
i = 1,2,...,n).

Một điều quan trọng nữa là trọng số của mạng Hopfield là đối xứng, tức là
wij = wji, (với i,j = 1,2,...,n). Khi đó, luật cập nhật cho mỗi nút mạng là như sau:

 n 
 
y ( k +1)
i = sgn ∑ wij y j + xi − θ ,
(k )

 jj =≠1i 
 
i = 1,2,...,n (1.11)

Luật cập nhật trên được tính toán trong cách thức không đồng bộ. Điều này
có nghĩa là, với một thời gian cho trước, chỉ có một nút mạng cập nhật được đầu ra
của nó. Sự cập nhật tiếp theo trên một nút sẽ sử dụng chính những đầu ra đã được
cập nhật. Nói cách khác, dưới hình thức hoạt động không đồng bộ của mạng, mỗi
đầu ra được cập nhật độc lập.

Có sự khác biệt giữa luật cập nhật đồng bộ và luật cập nhật không đồng bộ.
Với luật cập nhật không đồng bộ thì sẽ chỉ có một trạng thái cân bằng của hệ (với
giá trị đầu đã được xác định trước). Trong khi đó, với luật cập nhật đồng bộ thì có
thể làm mạng hội tụ ở mỗi điểm cố định hoặc một vòng giới hạn.

SVTH: :  Bùi Văn Dương trang  21
GVHD : Nguyễn Tấn Lũy

1.2.6 Mạng BAM


Mạng BAM bao gồm hai lớp và được xem như là trường hợp mở rộng của
mạng Hopfield. Ở đây ta chỉ xét mạng rời rạc, vì nó đơn giản và dễ hiểu.

Hình 1.1.8 Cấu trúc của BAM

Khi mạng nơron được tích cực với giá trị đầu vào của vector tại đầu vào của
một lớp, mạng sẽ có hai mẫu trạng thái ổn định, với mỗi mẫu tại đầu ra của nó là
một lớp. Tính động học của mạng thể hiện dưới dạng tác động qua lại giữa hai lớp.
Cụ thể hơn, giả sử một vector đầu vào x được cung cấp cho đầu vào của lớp nơron
y. Đầu vào được xử lý và truyền tới đầu ra của lớp y như sau:

 
y i' = a ∑ wij x j 
 
y’ = a(wx) ; ; với i = 1,2,...,n (1.12)

Ở đó a(.) là hàm truyền, vector y’ bây giờ lại nuôi trở lại lớp nơron X và tạo nên
đầu ra như sau:

 n 
x j = a ∑ wij y i 
 i =1 
x’ = a(wTy’); ; với j = 1,2,...,m (1.13)
SVTH: :  Bùi Văn Dương trang  22
GVHD : Nguyễn Tấn Lũy

Sau đó x’ nuôi trở lại đầu vào của lớp y và tạo ra hàm y’’ theo phương trình
(1.12). Quá trình này cứ tiếp tục, bao gồm các bước như sau:

y(1) = a(wx(0)) (truyền thẳng lần thứ nhất)

x(2) = a(w(T)y(1)) (truyền ngược lần thứ nhất)

y(3) = a(wx(2)) (truyền thẳng lần thứ hai)

x(4) = a(w(T)y(3)) (truyền ngược lần thứ hai) (1.14)

y(k-1) = a(wx(k-2)) (truyền thẳng lần thứ k/2)

x(k) = a(w(T)y(k-1)) (truyền ngược lần thứ k/2)

Chú ý rằng trạng thái cập nhật trong phương trình (1.14) là đồng bộ theo
phương trình (1.12) và (1.13). Trạng thái cập nhật cũng có thể không đồng bộ theo
phương trình (1.12) và (1.13) với các nút i, j được chọn tự do. Người ta đã chỉ ra
rằng, hệ thống ổn định cho cả hai chế độ đồng bộ và không đồng bộ. Tuy nhiên,
chế độ đồng bộ sẽ làm cho hệ thống hội tụ nhanh hơn nhiều.

1.3 Các Luật Học


Thông thường, mạng nơron được điều chỉnh hoặc được huấn luyện để hướng
các đầu vào riêng biệt đến đích ở đầu ra. Cấu trúc huấn luyện mạng được chỉ ra ở
hình dưới. Ở đây, hàm trọng số của mạng được điều chỉnh trên cơ sở so sánh đầu ra
với đích mong muốn (taget), cho tới khi đầu ra của mạng phù hợp với đích. Những
cặp vào/đích (input/taget) được dùng để giám sát cho sự huấn luyện mạng.

SVTH: :  Bùi Văn Dương trang  23
GVHD : Nguyễn Tấn Lũy

Hình 1.1.9: Cấu trúc huấn luyện mạng nơron

Để có được một số cặp vào/ra, ở đó mỗi giá trị vào được gửi đến mạng và
giá trị ra tương ứng được thực hiện bằng mạng là sự xem xét và so sánh với giá
trị mong muốn. Bình thường, nó sẽ tồn tại một sai số vì giá trị mong muốn không
hoàn toàn phù hợp với giá trị thực. Sau mỗi lần chạy, ta có tổng bình phương của
tất cả các sai số. Sai số này được sử dụng để xác định các hàm trọng số mới.

Sau mỗi lần chạy, hàm trọng số của mạng được sửa đổi với đặc tính tốt hơn
tương ứng với đặc tính mong muốn. Từng cặp giá trị vào/ra phải được kiểm tra và
trọng số được điều chỉnh một vài lần. Sự thay đổi các hàm trọng số của mạng sẽ
được dừng lại, nếu tổng các bình phương sai số nhỏ hơn một giá trị đặt trước, hoặc
đã chạy đủ một số lần chạy xác định (trong trường hợp này, mạng có thể không
thoả mãn yêu cầu đặt ra do sai lệch còn cao). Có hai kiểu học:

• Học tham số: là các tham số về trọng số cập nhật kết nối giữa các nơron.
• Học cấu trúc: trọng tâm là sự biến đổi cấu trúc của các mạng nơron gồm số
lượng nút và các loại liên kết.
Giả sử ma trận trọng số bao gồm tất cả các phần tử thích ứng của mạng nơron.
Nhiệm vụ của việc học tham số là tìm ra được ma trận chính xác mong muốn từ
ma trận giả thiết ban đầu (với cấu trúc của mạng nơron có sẵn). Để làm được điều
này thì mạng nơron phải sử dụng các trọng số điều chỉnh, với nhiều phương pháp
học khác nhau để có thể tính toán gần đúng ma trận W cần tìm đặc trưng cho
mạng. Sau đây là 3 phương pháp học:

SVTH: :  Bùi Văn Dương trang  24
GVHD : Nguyễn Tấn Lũy

1.3.1 Học có giám sát


Học có giám sát: là quá trình học có tín hiệu chỉ đạo bên ngoài d (Hình
1.10). Trong học có giám sát, thì tại mỗi thời điểm khi đầu vào được cung cấp tới
mạng nơron, phản ứng đầu ra mong muốn d tương ứng của hệ thống được đưa ra.
Ở hình (1.10), khi mỗi đầu vào x(k) được đặt vào mạng, đầu ra mong muốn tương
ứng d(k) cũng được cung cấp tới mạng. Hiệu giữa đầu ra thực y (k) và đầu ra mong
muốn d(k) được đo trong máy phát tín hiệu lỗi. Máy này sẽ tạo ra tín hiệu lỗi cho
mạng để hiệu chỉnh các trọng số của mạng, và với các hiệu chỉnh này thì đầu ra
thực sẽ tiến sát với đầu ra mong muốn.

Hình 1.1.10: Học có giám sát

1.3.2 Học củng cố


Tín hiệu chủ đạo d có thể lấy từ môi trường bên ngoài, nhưng tín hiệu này
không được đầy đủ, mà chỉ có một vài bit đại diện có tính chất kiểm tra quá trình
tốt hay xấu. Học củng cố cũng là một dạng của học có giám sát, bởi vì mạng vẫn
nhận một số tín hiệu từ bên ngoài. Nhưng tín hiệu phản hồi chỉ mang tính chất
đánh giá hơn là mạng tính chất chỉ dẫn. Nó cho biết mức độ tốt hay xấu của một
đầu ra đặc biệt. Tín hiệu củng cố bên ngoài thường được xử lý bằng máy phát tín
hiệu đánh giá để tạo ra nhiều hơn nữa các thông tin tín hiệu đánh giá, sau đó dùng
để điều chỉnh các trọng số với mục đích đạt được tín hiệu đánh giá tốt hơn.

SVTH: :  Bùi Văn Dương trang  25
GVHD : Nguyễn Tấn Lũy

1.3.3 Học không có giám sát

Hình 1.1.11: Học không có giám sát

Trong phần học không có giám sát, sẽ không có thầy hướng dẫn, tức là
không có tín hiệu d cung cấp tới mạch phản hồi. Điều này cho thấy, ta sẽ không
biết đầu ra đạt giá trị gì. Với loại này, thì các nơron tự xoay xở với các dữ liệu mẫu
mà nó có được, chứ không có “thầy” gợi ý cần luyện theo hướng nào. Mạng phải
tự khám phá mẫu, đặc tính, sự tương quan hay loại đầu vào. Trong khi khám phá
những đặc tính này, tham số của mạng sẽ bị thay đổi. Quá trình này được gọi là tự
tổ chức. Một ví dụ điển hình là quá trình phân loại đối tượng không có thầy, những
lớp thích hợp được hình thành bằng cách khám phá sự tương tự và không tương tự
trong số các đối tượng.

Hình (1.12) mô tả cấu trúc chung của quá trình học của ba phương pháp học
đã nêu ở trên. Trong tín hiệu vào xj (j = 1,2,...,m), có thể được lấy từ đầu ra của các
nơron khác hoặc có thể được lấy ra từ bên ngoài. Trọng số của nơron thứ i được
thay đổi tùy theo tín hiệu ở đầu vào mà nó thu nhận giá trị đầu ra của nó.

Dạng tổng quát của luật học trọng số của mạng nơron cho biết số gia của

∆wi
vector wi là tỉ lệ với tín hiệu học r và tín hiệu đầu vào x(t).

∆wi η .r.x(t )
(t) = (1.15)

SVTH: :  Bùi Văn Dương trang  26
GVHD : Nguyễn Tấn Lũy

η
là một số dương và được gọi là hằng số học dùng để xác định tốc độ học, r là tín

r = f r ( wi , x, d i ).
hiệu học và phụ thuộc: (1.16)

Hình 1.1.12: Sơ đồ cấu trúc chung của quá trình học

Từ hình (1.12) ta thấy, vector trọng số wi = [wi1, wi2,..., wim]T có số gia tỷ lệ


với tín hiệu vào x và tín hiệu học r. Vector trọng số ở thời điểm (t+1) được tính như
sau:

η
wi(t+1) = wi(t) + fr(wi(t),x(t),d(t)).x(t). (1.17)

Phương trình liên quan đến sự biến đổi trọng số trong mạng nơron rời rạc, và
tương ứng với sự thay đổi trọng số trong mạng nơron liên tục theo biểu thức sau:

dwi
= η .r.x(t )
dt
(1.18)

SVTH: :  Bùi Văn Dương trang  27
GVHD : Nguyễn Tấn Lũy

Vấn đề quan trọng trong việc phân biệt luật học cập nhật trọng số có giám
sát hay không có giám sát, hoặc học củng cố là tín hiệu học r. Như vậy, đối với tín
hiệu học r thì nó làm thế nào để thay đổi hoặc cập nhật trọng số trong mạng nơron.

Mạng nơron nhân tạo có các tính chất sau:

• Là hệ phi tuyến
• Là hệ xử lý song song
• Là hệ học và thích nghi: Mạng được luyện từ số liệu quá khứ, có khả năng
tự chỉnh đầu vào khi số liệu đầu vào bị mất.
• Là hệ nhiều biến, nhiều đầu vào, nhiều đầu ra (MISO), rất tiện dùng khi điều
khiển đối tượng có nhiều biến số.

1.4 Thuật Toán Lan Truyền Ngược


Thuật toán lan truyền ngược được ứng dụng để giải các bài toán điều khiển các
hệ phi tuyến phức tạp và bất ổn định. Lan truyền ngược là một phương pháp cho
phép xác định tập trọng số tốt nhất của mạng để giải một bài toán đã cho. Việc áp
dụng phương pháp lan truyền ngược là một quá trình lặp đi lặp lại nhiều lần hai
tiến trình chính: lan truyền tiến để thực hiện ánh xạ và lan truyền ngược sai số để
cập nhật các trọng số. Các trọng số của mạng là các hệ số của mô hình. Phương
pháp giảm gradient được dùng để cập nhật những hệ số này sao cho giảm thiểu
được sai số của mô hình.

Xét lớp mạng 3 lớp như hình (1.14)

SVTH: :  Bùi Văn Dương trang  28
GVHD : Nguyễn Tấn Lũy

Hình 1.1.14: Mạng 3 lớp lan truyền ngược

Thuật toán: Đầu tiên ta cho lan truyền thẳng suốt trong mạng, qua các phần tử
nơron và được tiếp tục với các hàm kích hoạt của phần tử nơron. Các mạng được
nghiên cứu cùng với thuật toán học lan truyền ngược được gọi là mạng lan truyền
ngược.

Huấn luyện các cặp vào/ra.

{(x(k), d(k))}, k = 1,2,...,p

Thuật toán cung cấp một thủ tục cho việc thay đổi các vector trọng số trong
mạng, đầu ra của mạng được lan truyền ngược trở lại lớp đầu vào cho đúng các
mẫu. Cơ sở cho việc cập nhật các trọng số là phương pháp độ dốc Gradient.

Với cặp vào ra (x(k), d(k)), thuật toán lan truyền ngược thực hiện các bước như
sau:

Đầu tiên, mẫu x(k) được lan truyền từ lớp đầu vào qua các lớp ẩn đi đến lớp đầu
ra có kết quả là y(k). Sau đó, sai số giữa y (k) và d(k) được lan truyền ngược trở lại từ

SVTH: :  Bùi Văn Dương trang  29
GVHD : Nguyễn Tấn Lũy

lớp đầu ra tới lớp đầu vào để cập nhật trọng số. Hình (1.14) diễn giải thuật toán lan
truyền ngược. Kết quả có thể mở rộng sang mạng nơron nhiều lớp.

Trên hình (1.14) có m phần tử nơron đầu vào, l phần tử nơron ở lớp ẩn, và n
phần tử nơron ở lớp đầu ra. Đường nét liền diễn tả lan truyền thẳng của các tín
hiệu, đường nét đứt diên tả lan truyền ngược của các sai số. Đầu tiên huấn luyện
vào cặp vào/ra ký hiệu (x,d) để cho đơn giản ta bỏ chỉ số k. Khi một mẫu đầu vào
x được đưa vào thì các phần tử trong mạng sẽ được tính như sau:

Đầu vào phần tử q của lớp ẩn sẽ được tính theo phương trình:

m
net q = ∑ v qj x j
j =1
(1.19)

) = a( ∑
v xj
z q = a (net q j =1
qj

Phương trình đầu ra của q sẽ là: ) (1.20)

Đầu vào phần tử thứ i của lớp đầu ra sẽ là:

l l m
net i = ∑ wiq z q = ∑ wiq a (∑ v qj x j )
q =1 q =1 j =1
(1.21)

Phương trình đầu ra của phần tử nowron thứ i sẽ là:

l l m
y i = a (net i ) = a(∑ wiq z q ) = a(∑ wiq .a(∑ v qj x j ))
q =1 q =1 j =1
(1.22)

Các chỉ số trên được tính toán cho sự lan truyền tiến của các tín hiệu đầu vào
xuyên suốt qua các lớp mạng nơron. Trước khi ta đề cập đến các tín hiệu sai số của
sự lan truyền ngược, ta sẽ định nghĩa một hàm mục tiêu như sau:

SVTH: :  Bùi Văn Dương trang  30
GVHD : Nguyễn Tấn Lũy

2
1 n   l 
2
1 n 1 n
E ( w) = ∑ (d i − y i ) = ∑ [ d i − a (net i )] = ∑ d i − a ∑ wiq z q 
2

2 i =1 2 i =1 2 i =1   q =1 
(1.23)

Sau đó, theo phương pháp độ dốc Gradient, các trọng số nối giữa lớp ẩn và lớp đầu

∆wiq
ra được cập nhật bởi , và nó được tính theo công thức sau:

∂E
∆wiq = −η
∂wiq
(1.24)

∂E
∂wiq
Sử dụng các công thức (1.21-1.23) và thay đổi luật với , ta có:

 ∂E   ∂y   ∂net i   ∂net i 
∆wiq = −η    i    [ ]
 = [ d i − y i ][ a ' (net i )] z q = ηδ oi z q
 ∂y i   ∂net i   ∂net i   ∂wiq 
(1.25)

δ oi
Trong đó, là tín hiệu sai số, chỉ số dưới thứ hai là điểm thứ i trong lớp đầu ra.
Sai số tín hiệu được định nghĩa bởi:

∂E  ∂E   ∂y 
δ oi = − = −    i  = [ d i − y i ][ a ' (net i )]
∂net i  ∂y i   ∂net i 
(1.26)

Trong đó, neti là đầu vào của phần tử nơron thứ i trong lớp đầu ra và

∂a( net i )
a ' (net i ) =
∂net i
.

Bây giờ ta phải tính đầu ra zq của lớp ẩn:

SVTH: :  Bùi Văn Dương trang  31
GVHD : Nguyễn Tấn Lũy

Với trọng số nối giữa đầu vào và các lớp ẩn, ta sử dụng thay đổi luật cùng phương
pháp độ dốc Gradient, ta cập nhật trọng số để kết nối giữa phần tử thứ j của lớp đầu
vào với phần tử thứ q của lớp ẩn. Khi đó:

 ∂E   ∂E   ∂net q   ∂E   ∂z q   ∂net q 
∆v qj = −η   = −η    = −η    
 ∂v qj   ∂net q   ∂v qj   ∂z q   ∂net q   ∂v qj 
(1.27)

Từ công thức (1.23), thì mỗi sai số [di-yi], với i=1,2,...,n là một hàm của zq.

Đánh giá thay đổi luật ta có:

[ ]
n
∆v qj = −η ∑ ( d i − y i ).a' (net i ).wiq .a' (net q ). x j
i =1
(1.28)

Sử dụng công thức (1.26), ta có thể viết lại công thức (1.28) như sau:

[ ]
n
∆v qj = −η ∑ δ oi .wiq .a ' (net q ).x j = η∂ hq x j
i =1
(1.29)

∂ hq
Ở đây, là sai số tín hiệu của phần tử thứ q của lớp ẩn và được định nghĩa như
dưới đây:

∂E  ∂E   ∂z q  n
∂ hq = − = −   = a ' (net q )∑ δ oi wiq
∂net q  ∂z q   ∂net q  i =1

(1.30)

Trong đó, netq là đầu vào phần tử thứ q của lớp ẩn.

Tín hiệu sai số của một phần tử trong lớp ẩn khác so với tín hiệu sai số của
một phần tử trong lớp đầu ra, như đã được chỉ ra trong công thức (1.30) và (1.26).
Do có sự khác nhau này, nên các thủ tục cập nhật các trọng số trên được gọi là luật

SVTH: :  Bùi Văn Dương trang  32
GVHD : Nguyễn Tấn Lũy

∂ hq
học delta tổng quát. Chúng ta xem xét công thức (1.30), sai số tín hiệu của

δ oi
phần tử lớp ẩn q có thể được xác định trong các mẫu của các tín hiệu sai số của
các phần tử ở lớp ra thứ i (yi) cung ứng. Các hệ số là các trọng số được sử dụng

δ oi
cho lan truyền thẳng, nhưng ở đây chúng truyền các tín hiệu sai số ( ) ngược trở
lại, đó chính là các đường nét đứt trong hình (1.13). Điều này đã chứng tỏ được
đặc điểm quan trọng của thuật toán lan truyền ngược – luật cập nhật cục bộ, đây
chính là tính toán trọng số thay đổi dựa vào sự kết nối, và chúng ta chỉ cần giá trị ở
hai đầu của kết nối này.

Sự đạo hàm ở trên có thể dễ dàng mở rộng cho mạng có nhiều hơn một lớp
ẩn, bằng cách sử dụng chuỗi luật liên tiếp. Trong trường hợp chung, với số lớp tùy
ý, thì sự lan truyền ngược được cập nhật luật ở dạng sau:

∆wij = ηδ i x j = ηδ output−i xinput− j


(1.31)

Ở đây, (output-i) và (input-j) quy vào hai đầu của sự kết nối từ phần tử thứ j
tới phần tử thứ i, xj là đầu vào cuối cùng kích hoạt từ một phần tử lớp ẩn, hoặc từ

δi
một đầu vào bên ngoài. Ngoài ra, là tín hiệu học được định nghĩa bởi công thức
(1.26) với đầu ra hoặc lớp cuối cùng của các trọng số kết nối, và được định nghĩa
bởi công thức (1.30) cho tất cả các lớp khác. Khi hàm sigmoid lưỡng cực được sử
dụng làm hàm kích hoạt, đồng thời sử dụng (1.26) và (1.30) ta có hàm y được xác
định như sau:

1
y = a (net ) = −1
1 + e −net

SVTH: :  Bùi Văn Dương trang  33
GVHD : Nguyễn Tấn Lũy

a ' (net ) =
∂a (net ) 1
∂net
[ ]1
= 1 − a 2 (net ) = (1 − y 2 )
2 2
Khi đó ta có:

1
δ oi = (1 − y 2 )[ d i − y i ]
2
(1.32)

n
1
δ hq = (1 − z 2 )∑ δ oi wiq
2 i =1
(1.33)

Thuật toán lan truyền ngược

Xem xét một mạng với Q lớp lan truyền ngược, q=1,2,...,Q; với qneti và qyi
lần lượt là đầu vào và đầu ra của khối trong lớp thứ q. Mạng có m nơron đầu vào, l
nơron ở lớp ẩn, và n nơron đầu ra. Với qwij là trọng số nối từ q-1wj đến qyi.

Đầu vào: các cặp huấn luyện {x (k), d(k) | k=1,2,...,p}, ở đó giá trị đầu vào của

x m( k+)1 = −1
phần tử cuối cùng bằng -1, tức là .

Bước 0 (Đặt giá trị ban đầu)

- Lựa chọn bước tính (Hằng số học) 0<η<1 và E max (sai số lớn nhất cho
phép).
- Chọn các trọng số ban đầu nối từ phần tử thứ j của lớp (q – 1) đến phần
tử thứ i của lớp q là qwij có giá trị nhỏ và ngẫu nhiên.
- Cho sai số E = 0 và k = 1.
Bước 1 (Vòng lặp huấn luyện)

Áp dụng mẫu vào thứ k, cho lớp đầu vào q=1. Khi đó ta có:

SVTH: :  Bùi Văn Dương trang  34
GVHD : Nguyễn Tấn Lũy
q
yi = 1yi = xi(k) cho tất cả các i = 1,2,3,…,m. (1.34)

Bước 2 (Lan truyền thẳng)

Lan truyền tín hiệu thẳng xuyên suốt mạng sử dụng công thức (1.35) cho
mỗi i và q cho tới khi các đầu ra của lớp đầu ra Qyi được thực hiện.

q
y i = a ( q net i ) = a.( ∑ q wijq −1 y j )
j
(1.35)

Bước 3 (Đo lường sai số đầu ra)

δi
Q

Tính toán giá trị sai lệch và tín hiệu sai lệch cho lớp đầu ra như sau:

1 n
E= ∑
2 i =1
(d i( k ) − Q y i ) 2 + E
; (1.36)

Q
δ i = (d i( k ) − Q y i ).a '(Q net i )
(1.37)

Q
δi
Trong đó: là tín hiệu sai lệch của nơron thứ i cho lớp ra Q; là
đạo hàm của hàm truyền a(.) theo tổng trọng số của phần tử i của lớp đầu ra

là .

da
a'(Q neti ) = Q
d ( neti )

SVTH: :  Bùi Văn Dương trang  35
GVHD : Nguyễn Tấn Lũy

Bước 4 (lan truyền ngược sai số)

Các sai số lan truyền ngược với mục đích để cập nhật các trọng số và
q −1
δi
tính toán các tín hiệu sai lệch cho các lớp xử lý:

∆q wij = η .q δ i .q −1 y j q
wijnew = q wijold + ∆ q wij
; (1.38)

δ i = a ' ( q −1net i )∑ q w ji q δ j
q −1

j
; với q=Q,Q-1,...,2 (1.39)

Trong đó:

- là sai lệch tại thời điểm tính của giá trị trọng số liên kết cập nhật
mới và cũ, liên kết từ phần tử thứ j của lớp q-1 đến phần tử i của lớp q.

- là giá trị trọng số liên kết cập nhật mới từ phần tử thứ j của lớp
(q-1) đến phần tử i của lớp q.

- là giá trị trọng số liên kết cũ từ phần tử thứ j của lớp (q-1) đến phần
tử i của lớp q.

- là tín hiệu ra của phần tử j của lớp (q-1).


Bước 5 (Sau mỗi vòng lặp)

Kiểm tra xem đã lặp hết các giá trị mẫu huấn luyện chưa, nếu chưa quay
vòng hết (tức là k<p) tăng k=k+1, và nhảy tới bước 1, ngược lại (tức k=p) thì
chuyển sang bước 6.

Bước 6 (Kiểm tra tổng sai số)

SVTH: :  Bùi Văn Dương trang  36
GVHD : Nguyễn Tấn Lũy

Kiểm tra sự khác nhau giữa tổng sai số và sai số cho phép:

- Nếu tổng sai số nhỏ hơn sai số cho phép (tức là E<E max) thì kết thúc quá
trình huấn luyện, và ghi lại các giá trị trọng số cuối cùng.
- Trái lại, thì lại gán E=0, k=1 và bắt đầu một quá trình huấn luyện mới
bằng cách nhảy tới bước 1.

1.5 Kết Luận


Trong chương này, chúng ta tìm hiểu một mạng nơron và thuật toán lan
truyền ngược. Quá trình học của mạng truyền thẳng chỉ ra một phương thức để
mạng nơron nhận dạng một mẫu, nó giống như quá trình học của lan truyền ngược,
đó là mô tả một quá trình mạng nơron sẽ được huấn luyện.

Một mạng nơron truyền thẳng là một mạng mà ở đó các nơron chỉ được kết
nối tới một lớp tiếp theo. Không có kết nối giữa các nơron với các lớp trước hoặc
với chính nơron đó. Thêm vào đó, các nơron sẽ không kết nối tới các nơron quá xa
ở lớp tiếp theo. Một mẫu được xử lý bởi sự truyền thẳng, độ lệch và các trọng số
kết nối sẽ được áp dụng.

Các mạng nơron được huấn luyện bằng cách sử dụng thuật toán lan truyền
ngược. Thuật toán lan truyền ngược là một dạng huấn luyện có giám sát. Mạng
nơron được đưa vào dữ liệu huấn luyện cho cho ra kết quả, các kết quả này được
so sánh với các kết quả được mong đợi. Sự khác nhau giữa các kết quả thực tế và
các kết quả mong đợi sẽ có một mức sai số nào đó. Để giảm thiểu sai số này, người
ta tiến hành sử dụng thuật toán lan truyền ngược để điều chỉnh các trọng số và độ
lệch của mạng. Đây là cách mà sai số được giảm đáng kể. Trong chương tiếp theo,
chúng ta sẽ tìm hiều về mạng nơron Kohonen. Sự khác nhau quan trọng nhất giữa
mạng nơron Kohonen và mạng nơron lan truyền ngược là phương thức huấn luyện.

SVTH: :  Bùi Văn Dương trang  37
GVHD : Nguyễn Tấn Lũy

Phương thức lan truyền ngược sử dụng phương thức huấn luyện có giám sát. Còn
mạng nơron Kohonen sử dụng phương thức huấn luyện không giám sát.

2. Xử Lý Ảnh Trong Matlab

Hình 1.2.1 Giao diện của matlab

2.1 Một Số Lệnh Cơ Bản trong xử lý ảnh


2.1.1. Lệnh IMREAD
- đọc một hình ảnh vào chương trình
- ví dụ
A=imread('C:\Users\Admin\Documents\Youcam\18.JPG');

2.1.2 Lệnh RGB2GRAY


- chuyển từ ảnh màu sang ảnh xám
- ví dụ
rgb2gray(A)

2.1.3 Lệnh RESHAPE

SVTH: :  Bùi Văn Dương trang  38
GVHD : Nguyễn Tấn Lũy

- Định dạng lại kích thước ma trận.


- Ví dụ:
a=
1 4 7 10
2 5 8 11
3 6 9 12
b = reshape(a,2,6)
b=
1 3 5 7 9 11
2 4 6 8 10 12

2.1.4 Lệnh HORZCAT


- ghép 2 ma trân theo cột, nghĩa là ghép 2 ma trân cùng số dòng với nhau
- ví dụ
2 3
A1= 3 A2= 1
5 8
C=horzcat(A1,A2)
2 3
C= 3 1
5 8
2.1.5 Lệnh VERTCAT
Lệnh này sử dụng tương tự như lệnh HORZCAT. Lệnh này dùng để ghép 2
ma trận theo hàng

2.1.6 Lệnh FOR


- tạo vòng lặp,cho đến khi điều kiện đưa ra không thỏa nữa thì sẽ thoát khỏi
vòng lặp.
Ví dụ:
for i = 1:2

SVTH: :  Bùi Văn Dương trang  39
GVHD : Nguyễn Tấn Lũy

disp(‘ chao cac ban’);


end
chao cac ban
chao cac ban

2.1.7 Lệnh FUNCTION


- Công dụng:
Tạo thêm hàm mới.
- Cú pháp:
function s = n(x)
- Giải thích:
s: tên biến chứa giá trị trả về sau khi thi hành hàm.
n: tên gợi nhớ.

2.1.8 Lệnh INPUT


- Công dụng:
Dùng để nhập vào 1 giá trị.
- Cú pháp:
tên biến = input (‘promt’)
- Giải thích:
tên biến, là nơi lưu giá trị ngập vào.
‘promt’: chuỗi ký tự muốn nhập vào.
- Ví dụ:
x = input(‘nhập giá trị của biến x: ’)
nhập giá trị của biến x: 5
x=5

2.1.9 Lệnh IF …ELSEIF …ELSE


- thỏa điều khiện thì thực hiện chương trình
- Ví dụ:

SVTH: :  Bùi Văn Dương trang  40
GVHD : Nguyễn Tấn Lũy

Viết chương trình nhập vào 2 số và so sánh hai số đó.


a = input(‘Nhập a: ’);
b = input(‘Nhập b: ’);
if a > b
disp(‘a lớn hơn b’);
elseif a ==b
disp(‘a bằng b’);
else
disp(‘a nhỏ hơn b’);
end
nhập a: 4
nhập b: 5
a nhỏ hơn b
2.1.10 Lệnh IM2BW
- biến đổi ảnh xám về ảnh nhị phân với mức ngưỡng đưa ra
- ví dụ:
H = im2bw(J,0.15);

2.1.11 Lệnh IMRESIZE


- Lệnh này làm cho kích thước ảnh giảm đi, nhằm dể dàng xử lý ảnh hơn.
- ví dụ:
Để giảm kích thước của ảnh xuống 8 lần thì chúng ta làm thế này.giả sử ảnh
ban đầu có kích thước 480x640 ảnh thu được là 60x80. Với H là ảnh 480x640
G = imresize(H,0.125);

SVTH: :  Bùi Văn Dương trang  41
GVHD : Nguyễn Tấn Lũy

2.1.12 Lệnh IMWRITE


- ghi và lưu hình ảnh.

- ví dụ:

imwrite(K,'t1.bmp');

2.1.13 Lệnh LOAD


- Nạp file từ đĩa vào vùng đang làm việc.
- ví dụ:
load('C:\Program Files\MATLAB\R2010b\bin\neural');

2.1.14 Lệnh WRITE


- ghi một giá trị vào biến
- ví dụ:
write(tin_hieu_1,1);% giá trị 1 được ghi vào biến ” tin_hieu_1”
2.1.15 Lệnh SET
- đặt thuộc tính cho Handles Graphics
- Ví dụ:
set(handles.slvuong,'String',0); % đặt thuộc tính String cho handles.slvuong
với giá tri là 0.

2.1.16 Lệnh CLEAR


- xóa một ô nhớ hay một cái biến nào đó
- ví dụ:
clear O;

2.1.17 Lệnh GLOBAL


- lệnh này dùng để khai báo một cái biến, khi được khai báo như thế thì các
biến này với được liên kết với nhau.
- ví dụ:
globalngat tin_hieu_1 tin_hieu_2

2.2 Các Bước Thu Nhận Ảnh Cơ Bản

Bước 1:

SVTH: :  Bùi Văn Dương trang  42
GVHD : Nguyễn Tấn Lũy

- Gắn thiết bị thu hình vào máy.

- Cài đặt driver (trình điều khiển) cho thiết bị, (được cho bởi nhà sản xuất).

- Xem thử hình ảnh video trên máy tính thông qua phần mềm của nhà sản
xuất.

- Khởi động matlab.

Bước 2:

- Ta cần chỉ định cho Matlab biết phần cứng nào dùng để lấy dữ liệu (vì có
thể có nhiều camera kết nối với PC).

- Gõ lệnh imaqhwinfo để biết tên các loại thiết bị có thể dùng.

- Chỉ định thiết bị: Tuỳ vào loại thiết bị (adaptor name), mỗi thiết bị cùng
loại gắn vào PC được gắn đánh số ID, thiết bị thứ nhất có deviceID = 1, thiết bị thứ
2 có deviceID = 2,...

- Để liệt kê xem loại winvideo có bao nhiêu thiết bị gắn vào máy tính, ta
cũng dùng lệnh imaqhwinfor với đối số là winvideo:

>> imaqhwinfo('winvideo')

ans =

AdaptorDllName: [1x81 char]

AdaptorDllVersion: '3.5 (R2010a)'

AdaptorName: 'winvideo'

SVTH: :  Bùi Văn Dương trang  43
GVHD : Nguyễn Tấn Lũy

DeviceIDs: {[1]}

DeviceInfo: [1x1 struct]

- Có một thiết bị với DeviceID = 1. Ta có thể tìm hiểu thêm thông tin về
thiết bị này.

>> imaqhwinfo('winvideo',1)

ans =

DefaultFormat: 'YUY2_160x120'

DeviceFileSupported: 0

DeviceName: 'WebCam'

DeviceID: 1

ObjectConstructor: 'videoinput('winvideo', 1)'

SupportedFormats: {1x5 cell}

Bước 3: Tạo đối tượng đại diện vào máy để làm đề tài này.

- Để tạo luồng dữ liệu video, dùng lệnh videoinput.

>> vid = videoinput('winvideo',1)

Summary of Video Input Object Using 'WebCam'.

Acquisition Source(s): input1 is available.

Acquisition Parameters: 'input1' is the current selected source.

SVTH: :  Bùi Văn Dương trang  44
GVHD : Nguyễn Tấn Lũy

10 frames per trigger using the selected source.

'YUY2_160x120' video data to be logged upon START.

Grabbing first of every 1 frame(s).

Log data to 'memory' on trigger.

Trigger Parameters: 1 'immediate' trigger(s) on START.

Status: Waiting for START.

0 frames acquired since starting.

0 frames available for GETDATA.

Bước 4: Hiện thị luồng video trên màng hình để xem thử.

- Để xem trước luồng dữ liệu video, dùng lệnh preview.

>> preview(vid)

- Màn hình lúc này hiện lên cửa sổ video của đối tượng vid.

- Nếu muốn kết thúc xem, dùng lệnh stoppreview. Hoặc để đóng cửa sổ
preview, dùng lệnh closepreview(vid).

Bước 5: Lấy một khung hình ảnh và lưu thành file đồ hoạ.

- Để lấy 1 ảnh vào xử lý ta sử dụng lệnh getsnapshot.

- Để lưu ảnh thành file đồ hoạ ta dùng lệnh imwrite.

Ví dụ: hinh = getsnapshot(vid);

Imwrite(hinh,’1.jpg’);

SVTH: :  Bùi Văn Dương trang  45
GVHD : Nguyễn Tấn Lũy

Bước 6: Làm sạch bộ nhớ

Sau khi lấy dữ liệu hình ảnh ta có thể giải phóng bớt bộ nhớ bằng các lệnh
sau:

Delete(vid)

Clear

Close(gcf)

2.3 Tạo Giao Diện Với Guide

Giao diện người dùng (graphical user interface GUI) cho phép thực hiện các
lệnh trong Matlab thông qua menu, nút nhấn.. tương tự như các ngôn ngữ Visual
Basic.. Lập trình GUI được thực hiện nhờ công cụ GUIDE (GUI Development
Environnment) hoặc bằng cách soạn một file M.

2.3.1 Khởi động giao diện GUI

- Mở phần mềm Matlab, gõ lệnh sau vào cửa số Command

>> guide

- Trong cửa sổ
GUIDE Quick Start
có nhiều lựa chọn
theo một trong các
khung mẫu sau:

SVTH: :  Bùi Văn Dương trang  46
GVHD : Nguyễn Tấn Lũy

Hình 1.2.3 Cửa số GUIDE

 Create New GUI: Tạo hộp thoại GUI mới theo một trong cácloại sau:

• Blank GUI (Default): Hộp thoại GUI trống không có một điều khiển
uicontrol nào cả.

• GUI with Uicontrols: Hộp thoại GUI với một vài uicontrol như
button, … Chương trình có thể chạy ngay.

• GUI with Axes and Menu: Hộp thoại GUI với một uicontrol axes và
button, các menu để hiển thị đồ thị.

• Modal Question Dialog: Hộp thoại đặt câu hỏi Yes, No.

 Open Existing GUI:mở một project có sẵn. Trong hướng dẫn này, các bạn
tạo một project mới nên sẽ chọn Blank GUI.

SVTH: :  Bùi Văn Dương trang  47
GVHD : Nguyễn Tấn Lũy

Hình 1.2.4 Cửa số biên soạn GUI

Giao diện rất giống với các chương trình lập trình giao diện như Visual
Basic, Visual C++, … Di chuyển chuột qua các biểu tượng ở bên trái sẽ thấy tên
của các thanh công cụ điều khiển. Một vài công cụ điều khiển hay dùng như sau:

- Push Button: Là một nút nhấn, giống như nút Command Button trong VB.
Là các nút bấm như nút OK, Cancel mà ta vẫn bấm.

SVTH: :  Bùi Văn Dương trang  48
GVHD : Nguyễn Tấn Lũy

- Toggle button: Là một nút bật giống như push button nhưng có hiển thị
trạng thái thay đổi mỗi khi nhấn nút.

- Radio Button: Nút nhỏ hình tròn để chọn lựa.

- Check Box: Là hộp kiểm tra cho phép đưa vào các chọn lựa khi bấm chuột
vào nó.

- Edit Text: Là hộp văn bản đưa chuỗi ký tự vào đó.

- Static Text: Dòng văn bản dùng để đặt nhãn, tiêu đề, hướng dẫn.

- Pop-up Menu: menu sổ xuống trình bày một bảng các chọn lựa khi nhấp
chuột vào.

- List Box: Gồm một bảng các mục có thể lựa chọn.

- Axes: Vẽ hệ trục.

- Slider: Thanh trượt dùng để đưa giá trị vào trong một vùng giới hạn.

- Run (Ctr + T): nhấn vào để chạy chương trình mà ta đã viết.

- Align Object: dùng để làm cho các điều khiển sắp xếp gọn đẹp theo ý mình
như cùng canh lề bên trái, …

- Grid and Rulers: dùng để cấu hình về lưới trong giao diện vì nó sẽ coi giao
diện như một ma trận các ô vuông nhỏ, ta sẽ thay đổi giá trị này để cho các điều
khiển có thể thả ở đâu tùy ý cho đẹp.

- Menu Editor: trình này để tạo menu cho điều khiển

- Tab Order Editor: sắp xếp Tab order là thứ tự khi ta nhấn phím Tab

- Gui Options: lựa chọn cho giao diện GUI.


SVTH: :  Bùi Văn Dương trang  49
GVHD : Nguyễn Tấn Lũy

- Các bạn save dưới tên: “ TÊN”, khi đó đồng thời xuất hiện cửa sổ Editor và
đang mở file TÊN.m của bạn. Trong thư mục bạn save sẽ có 2 file là:

- TÊN.fig: file này chứa giao diện của chương trình

- TÊN.m: file chứa các mã thực thi cho chương trình như các hàm khởi tạo,
các hàm callback.

2.3.2 Thay đổi thuộc tính điều khiển

Nhấp chuột vào component trong vùng layout để soạn tính chất của
component. Ví dụ: Nhấn chuột vào Edit text, sẽ hiện ra cửa sổ Property Inspector.

- Tag: dùng để đặt tên cho component.

- BackgroundColor: màu nền của component.

- ForegroundColor: màu chữ trên component.

- FontName, fontAngle,fontSize, fontWeight: các đặt tính font chữ trên


component.

- String: văn bản hiển thị trên component.

- Enable: cho phép component hoạt động hay không.

- Visible: hiển thị component hay không.

SVTH: :  Bùi Văn Dương trang  50
GVHD : Nguyễn Tấn Lũy

Hình 1.2.5 Cửa sổ thuộc tính

- Quan trọng nhất đối với các component là callback, tức là hàm con mà file
áp dụng M sẽ gọi khi ta tác động vào component. Để soạn thảo callback, ở cửa số
layout nhấp chuột phải vào component muốn soạn thảo, sau đó chọn View
callbacks -> callback ta sẽ vào màn hình soạn thảo callback cho component đó.
Lưu ý rằng các dòng lệnh sẽ được viết sau dòng “ function tên
component_callback(hobject, eventdata, handles). Sau khi soạn thảo xong ta lưu,
lập tức Matlab sẽ lưu thành hai file có cùng tên nhưng khác nhau về phần mở rộng:

- File có phần mở rộng .fig chứa nội dung của giao diện

- File có phần mở rộng .m chứa những đoạn mã liên quan đến giao diện.

SVTH: :  Bùi Văn Dương trang  51
GVHD : Nguyễn Tấn Lũy

3 Kết Nối Giữa Matlab Và PLC


3.1 Các Bước Tạo Liên Kết PC Access

Hình 1.3.1 Impost symbol

Từ một chương trình PC Access mới, chọn Import Symbols để đưa các biến trong
PLC vào PC Access

Hình 1.3.2 chọn chương trình PLC

Chọn file PLC đã lập trình trước đó.

SVTH: :  Bùi Văn Dương trang  52
GVHD : Nguyễn Tấn Lũy

Hình 1.3.3 chọn các biến liên kết

Sau khi đã import xong thì tiến hành Save file PC Access lại, mở USER1 ra, quét
chọn tất cả các Item ở số 1. Nhấn vào nút nhấn số 2, để đưa xuống Test Client

Hình 1.3.4 kết quả của kết nối

Sau khi đã làm xong bước trên thì ta thấy rằng 1 được hiển thị ra. Sau đó nhấn nút
thứ 2 để tạo kết nối với PLC, khi đã kết nối thành công thì ở vị trí thứ 3 sẽ hiển thị
chử “Good”, và đồng thời khoanh tròn thứ 5 cũng chạy liên tục. khi đã liên kêt
xong , ở vị trí thứ 4 sẽ hiển thị giá trị của PLC truyền lên và nhận xuống cho
matlab

SVTH: :  Bùi Văn Dương trang  53
GVHD : Nguyễn Tấn Lũy

3.2 Các Bước Tạo Kết Nối OPC

Hình 1.3.5 khởi động kết nối OPC

Vào Start để lấy thanh công cụ OPC đã có sẵn trong matlab.

SVTH: :  Bùi Văn Dương trang  54
GVHD : Nguyễn Tấn Lũy

Hình 1.3.6 tìm kiếm liên kết

Sau đó nó sẽ hiện ra giao diện như trên và nhấn vào biểu tượng được khoanh tròn
để OPC tự động tìm kiếm các liên kết có trong máy.

Hình 1.3.7 Kết nối với giao thức S7200

Tất cả các liên kết đã được tìm ra, chúng ta chọn đánh dấu số 1 là
S7200.OPCServer đó chính là liên kết với PC Access của S7200. Nhấn sáng đánh
dấu số 1 và nhấp vào ô khoanh tròn số 2 để tạo thành 1 Client.

SVTH: :  Bùi Văn Dương trang  55
GVHD : Nguyễn Tấn Lũy

Hình 1.3.8 kết nối OPC

Nhấn nút 1 để kết nối với PC Access

Hình 1.3.9 tạo group


SVTH: :  Bùi Văn Dương trang  56
GVHD : Nguyễn Tấn Lũy

Khi đã kết nối xong thì nhấn vào nút số 1 để tạo thành một Group

Hình 1.3.10 thêm Item vào Group

Sau khi dã tạo một Group thì chúng ta tiến hành add các item vào group đó để liên
kết với PC Access , nhấn vào khoanh tròn 1 sẽ hiện ra bảng Add Item , chọn sáng
các Item và nhấn nút 2, sau đó nhấn nút 3 để hoàn tất.

SVTH: :  Bùi Văn Dương trang  57
GVHD : Nguyễn Tấn Lũy

Hình 1.3.11 tạo Item vào Group2

Tương tụ như cách làm trên ta tạo Group thứ 2 và add 2 cái Item còn lại vào
Group_2.

Như vậy chúng ta đã hoàn tất việc tạo OPC kết nối với S7200.

SVTH: :  Bùi Văn Dương trang  58
GVHD : Nguyễn Tấn Lũy

II. THIẾT KẾ VÀ THI CÔNG MÔ HÌNH


1 Phần Cứng
Phân loại sản phẩm dùng xử lý ảnh và mạng noron. Sản phẩm được phân
loại là các sản phẩm có hình tròn , hình tam giác, hình vuông.

Hình 2.1.1 vật nhận dạng

Quá trình phân loại dùng mạng noron để phân loại sản phẩm. đây là mô hình thực
tế của đề tài

SVTH: :  Bùi Văn Dương trang  59
GVHD : Nguyễn Tấn Lũy

Hình 2.1.2 mô hình phần cứng

2 Nguyên Lý Hoạt Động


Dây chuyền bắt đầu hoạt thì sản phẩm sẽ được đưa vào từ bang tải theo
chiều mũi tên số 1. Khi vật được đưa vào thì sẽ bị cảm biến phát hiện ra(cảm biến
ở mũi tế số 3). Ngay khi cảm biến phát hiện ra vật băng tải sẽ dừng lại, sau thới
gian 1 giây khi bang tải dừng lại camera (mũi tên số 4) sẽ chụp hình vật đó , hình
ảnh vừa thu được sẽ được camera chuyển vào chương trình matlab, tại đây matlab
sẽ xử lý hình ảnh, phân tích và đưa hình ảnh vào mạng noron đã được học trước
đó , mạng noron sẽ cho ta nhận dạng đó là vật vuông, tròn hay tam giác, rồi từ đó
matlab sẽ gửi xuống PLC tín hiện vật đó hình dạng thế nào . sau 2 giây để camera
chụp hình thì băng tải chạy tiếp và đưa vật ra khỏi camera theo chiều mũi tên số 2.

SVTH: :  Bùi Văn Dương trang  60
GVHD : Nguyễn Tấn Lũy

Hình 2.2.1 hoạt động của mô hình

• Giao diện của chương trình

Hình 2.2.2 giao diện của giao tiếp

3 Sơ Đồ Khối

SVTH: :  Bùi Văn Dương trang  61
GVHD : Nguyễn Tấn Lũy

Hình 2.3.1 sơ đồ khối

Khối thiết bị trường là cảm biến phát hiện ra có vật thì thông qua PLC sẽ
truyền cho matlab trên máy tính biết đã có vật ở vị trí , lúc này máy ảnh sẽ chụp
hình và đưa vào chương trình để phân , nhận dạng ra vật đó và chuyền ngược trở
lại cho PlC bào đó là vật gì, từ đó PLC sẽ điều khiển cho cánh tay robot hoạt động.
để có thể truyền và nhận dử liệu từ PLC tới máy tính bắt buộc phải thông qua
giao tiếp là OPC trong matlab và PC Access để có thể hiểu được nhau.

3.1 Khối camera

Hình 2.3.2 camera trên mô hình

SVTH: :  Bùi Văn Dương trang  62
GVHD : Nguyễn Tấn Lũy

Khi cảm biến được tích cực lên thì lúc này PLC sẽ báo hiệu cho matlab biết
là có vật , từ đó matlab sẽ ra lệnh cho camera chụp hình và gửi dữ liệu quay chở lại
cho matlab xữ lý.

Camera được dùng ở đây là colorvis.do ở đây ta không cần tới chất lượng
của ảnh tốt nên chọn loại camera này để nó sẽ cho ra ảnh 480x640x3,điều này là
rất tích hợp với mô hình.

3.2 Khối cảm biến

Sử dụng cảm biến quang E3T – FT11 để phát hiện vật. khi có vật thì cảm
biển sẽ tích cực lên mức 1. đay

Hình 2.3.3 hình dáng và hoạt động của cảm biến

Hình dạng của cảm biến E3T-FT11. Cảm biến quang này gồm 1 con thu và 1 con
phát. Khi không có vật đèn bào sẽ sáng lên và đưa ra tín hiệu là mức thấp. khi có
vật đi qua đèn báo tắt , lúc này dây tín hiệu sẽ lên mức 1.

3.3 Khối máy tính

Máy tính sẽ liên kết với camera và webcam thông qua cổng USB, máy tính là trung
tâm của điều khiển, bằng phần mềm matlab, đọc tính hiệu được gửi về từ camera
và xữ lý dữ liệu để đưa ra kết quả phân biệt vật xuống PLC. Máy tính liên kết với
PLC qua giao thức có trong matlab đó là OPC.

3.4 Khối PLC

PLC nhận tín hiệu từ cảm biến, khi cảm biến tích cực thì PLC sẽ báo cho máy tính
thông qua giao thức liên kết là PC Access. Sau khi máy tính xử lý xong thì PLC sẽ
nhận được giá trị nhận dạng của vật vừa được phát hiện và từ đó PLC sẽ điều khiển
cho cánh tay robot đi đúng hướng.

4 Học Và Huấn Luyện Mạng Noron


4.1 Ma Trân Dữ Liệu Vào

SVTH: :  Bùi Văn Dương trang  63
GVHD : Nguyễn Tấn Lũy

Hình 2.4.1 ma trận ngõ vào

Đây là ma trận thực tế được đưa vào mạng noron để học.ở đây khoanh tròn 1
là một phần của ma trận, ma trận này có kích thước 4800x225 ở đây nghĩa là mổi
ảnh mẫu đã tạo ra ma trận 4800x1 như vậy thì mổi 1 cột của khoanh tròn 2 là một
ảnh lấy mẫu, 225 ở đây có nghĩa là có 225 ảnh mẫu.

Hình 2.4.1 ảnh hình tròn được lưu

SVTH: :  Bùi Văn Dương trang  64
GVHD : Nguyễn Tấn Lũy

Từ những hình đã được chụp từ webcam làm ảnh mẫu. ta phải biến
những hình ảnh này thành những ma trân để đưa vào mạng noron để
học. hình ảnh của webcam thu được là 480x640x3. Sau đây là các bước
làm:
- Đọc ảnh được lưu:
A=imread('C:\Users\Admin\Documents\Youcam\hinh
tron\Snapshot_20130511_18.JPG');% 480x640x3
- Chuyển đổi ảnh màu thành ảnh xám
J = rgb2gray(A);%tao ra ảnh 480x640
- Chuyển đổi ảnh xám thành ảnh nhị phân
H = im2bw(J,0.15);%ảnh 480x640
- Do kích thước của ảnh quá lớn nên cần phải giảm dung lượng ảnh xuống 8
lần cho dể xử lý
G = imresize(H,0.125);% ảnh 60x80
- Lọc nhiểu ảnh
K=bwmorph(G,'branchpoints');%ảnh 60x80
Lệnh bwmorph được mô tả như sau:

ảnh chúng ta thu được bây giờ là ảnh nhị phân với kích thước 60x80, tổng số
điểm ảnh là 4800 điểm ảnh, mục đích của chúng ta là đưa về ma trận 4800x1
để tiện xử lý.
- Tạo ma trận điểm ảnh là 4800x1
p=reshape(N,4800,1);% ảnh 4800x1
- Gán ma trận ban đầu
ngovao=p
- Khi đã tạo ra được ma trận 4800x1 thì chúng ta bắt đầu ghép ma trận
ngovao=horzcat(ngovao,p);
+ ở lần đâu tiên ta sẽ gán ma trận ban đầu mà chưa ghép ma trận. ở các lần
sau, đổi hình lần lượt không gán ma trận ban đầu nữa mà tiến hành ghép ma trận
đâu tiên với ma trận sau. Cứ làm như vậy cho tới khi hết ảnh là chúng ta đã có
được ma trân ngõ vào.

SVTH: :  Bùi Văn Dương trang  65
GVHD : Nguyễn Tấn Lũy

4.2 Tạo ma trận dữ liệu ra

Hình 2.4.2 ma trận ngõ ra của mạng noron

ở khoanh tròn 1 là giá trị ngõ ra của hình tròn. Vậy tương ứng với cột thứ nhất của
ma trận đâu vào, mạng noron sẽ huấn luyện làm sao để cho ra cột thứ nhất ở
khoanh tròn 1. ở đây nghĩa là tương ứng 1 cột ngõ vào là 1 cột ngõ ra. Khoanh tròn
2 thể hiện là 1 dãy các cột ban đâu là hình tròn. ở khoanh tròn 3 là mà trận ra
3x225 tương ứng với ngõ vào là 4800x225.

Hình 2.4.3 ma trận ngõ ra của mạng noron

Dể phân biệt hình tròn với hình khác thì, ở khoanh tròn 1 là hình tròn còn khoanh
tròn 2 là hình tam giác.

4.3 Tạo mạng noron qua thanh công cụ network neural


SVTH: :  Bùi Văn Dương trang  66
GVHD : Nguyễn Tấn Lũy

Hình 2.4.4 chọn hình thức học mạng noron

Vào trong “Command Window” trong giao diện matlab gõ lệnh “ nnstart”

Lúc đấy sẽ hiện ra cho chúng ta thanh công cụ để tạo ra mạng noron. ở đây ta chọn
mạng noron là “Pattern Recognition Tool”

SVTH: :  Bùi Văn Dương trang  67
GVHD : Nguyễn Tấn Lũy

Hình 2.4.5 giớ thiệu về mạng noron

Nhấn Next

Hình 2.4.6 chọn ngõ ra và ngõ vào cho mạng noron


SVTH: :  Bùi Văn Dương trang  68
GVHD : Nguyễn Tấn Lũy

Nhấn vào hình tròn 1 để chọn ngõ vào mà bạn đã tạo ra trước đó. Nhấn hình tròn
thứ 2 để chọn ngõ ra đã được tạo trước đó. Khi đã chọn ngõ và ra phù hợp thì lúc
đó nút nhấn “Next” sẽ được hiện lên

Hình 2.4.7 chọn ma trận ngõ vào

Chọn ngõ vào mà đã được tạo trước đó rồi nhấn Finish

SVTH: :  Bùi Văn Dương trang  69
GVHD : Nguyễn Tấn Lũy

Hình 2.4.8 chọn ma trận ngõ ra

Chọn ngõ ra đã được tạo trước đó. Nếu ma trận ngõ ra không quá lớn thì khung
được khoanh 2 ô tròn sẽ hiển thị lên giá trị của nó.

SVTH: :  Bùi Văn Dương trang  70
GVHD : Nguyễn Tấn Lũy

Hình 2.4.9 chọn tỉ lệ học mạng noron

Nhấn “Next” qua

Hình 2.4.10 giới thiệu về hình thức của mạng

Chọn có bao nhiêu lớp ấn mà bạn muốn. nhìn vào mạng noron chúng ta
thấy có 4800 ngõ vào, 10 lớp ẩn và 3 ngõ ra.

SVTH: :  Bùi Văn Dương trang  71
GVHD : Nguyễn Tấn Lũy

Hình 2.4.11 học mạng noron

Nhấn vào nút “Train” được khoanh tròn để cho mạng Noron học. khi học xong ở ô
tròn “%E”xuất hiện 3 giá trị, nếu 3 giá trị này tiến tới 0 thì mạng noron được huấn
luyện là tốt. còn nếu giá trị nay mà lớn hơn 2 thì tốt nhất mạng noron được học lại
cho đến khi đạt được giá trị tốt nhất.

SVTH: :  Bùi Văn Dương trang  72
GVHD : Nguyễn Tấn Lũy

Hình 2.4.12 mạng noron đang được học

Quá trình đang được học

Hình 2.4.13 nếu muốn học lại mang noron


SVTH: :  Bùi Văn Dương trang  73
GVHD : Nguyễn Tấn Lũy

Ô tròn “Train Again” sẽ được nhấn khi bạn muốn học lại chương trình,nếu không
thì Next qua.

Hình 2.4.14 kết quả của việc học mạng noron

ở ô tròn 1 nếu bạn muốn xem tất cả các lệnh trong quá trình huấn luyện mạng
noron thì nhấn nút ô tròn 1.ở ô tròn 2, nếu kết quả huấn luyện mạng noron bạn thấy
là tốt thì khi ấy hãy lưu kết quả đó để sau này lấy nó ra sử dụng. ô tròn 3 là chọn
các kết quả muốn lưu.

SVTH: :  Bùi Văn Dương trang  74
GVHD : Nguyễn Tấn Lũy

Hình 2.4.15 chương trình mạng noron

ở ô tròn 1 thể hiện các lệnh và quá trình chúng ta vừa tạo mạng noron, cái này chỉ
được hiện ra khi nhấn nút “simple script” ở hình trước đó. ở ô thứ 2 là hiển thị các
mục khi bạn nhấn nút “Save Result” ở hình trước đó. Khi muốn lưu mạng noron
vừa tạo được thì hãy nhấn nút thứ 3 để lưu nó lại.nếu trong khung thứ 2 có những
giá trị không muốn lưu thì chung ta hãy nhâp sáng lên và nhấn nút 4. Khi lưu file
lại thì nó sẽ có dạng giống file trong hình số 5.

5 Phần Mềm
5.1 Lưu Đồ Chương Trình Chính

SVTH: :  Bùi Văn Dương trang  75
GVHD : Nguyễn Tấn Lũy

Khi cảm biến được tích cực thì máy chụp hình sẽ chụp hình ảnh ,
đưa hình vào matlab để xử lý ảnh, quá trình xử lý ảnh sẽ phân biệt được
hình dạng của vậy thể , và chuyền dữ liệu xuống cho PLC.

5.2 Lưu Đồ Xử Lý Ảnh

SVTH: :  Bùi Văn Dương trang  76
GVHD : Nguyễn Tấn Lũy

Khi có ảnh được đưa vào matlab thì khi đó ảnh sẽ được chuyển ảnh màu
sang ảnh xám để thuận lợi cho việc lấy mẫu và đưa vào mạng noron. Sau
khi có ảnh xám rồi thì phải chuyển ảnh nhị phân, do ảnh nhị phân có
dung lượng ảnh quá lơn nên người ta phải giảm dung lượng ảnh xuống,
rồi tạo ma trận dữ liệu của ảnh. Khi đó bắt đâu đưa vào mạng noron để
kiểm tra, và đưa ra được phân biệt vật rồi chuyền xuống PLC cho PLC
xữ lý tiếp.

SVTH: :  Bùi Văn Dương trang  77
GVHD : Nguyễn Tấn Lũy

III. Thực Nghiệm


1 Thiết Lập Thực Nghiệm
Chương trình nhằm mục đích xác đinh được đâu là vật hình vuông đâu
là vật hình tròn và đâu là tam giác,qua lấy hình ảnh chup được từ camera
và phân tích dữ liệu nhận đượcvà đưa vào mạng noron vừa được học ,
mạng noron sẽ xuất ra dữ liệu để phân biệt hình dạng của vật thể.

2 Kết Quả
Sau một thời gian tìm hiểu và nghiên cứu về mạng noron, em đã huấn
luyện thành công mạng noron và tiến hành đưa vào thực nghiệm vật thể
thì kết quả cho ra là chính xác so với vật thể thực. từ đó cho thấy về cơ
bản đã đáp ứng được như cầu về đề tài đạt ra , đó là phân loại sản phẩm
dùng xử lý ảnh và mạng noron.

3 Đánh Giá
Đề tài về mạng noron còn tương đối mới mẽ, tìm tài liệu về lý thuyết về
mạng noron thì khá nhiều tuy nhiên về phần học và luyện mạng noron
thì tương đối ít, tuy vậy với sự cố gắng và sự giúp đỡ của thầy Lũy em
đã thực hiện được đề tài theo đúng kế hoạch.

SVTH: :  Bùi Văn Dương trang  78
GVHD : Nguyễn Tấn Lũy

IV Kết Luận Và Hướng Phát Triển


1 Kết Luận
Với những kết quả đã được trình bày ở trên, và chạy trên mô hình thực
tế . có thể đưa ra kết luận sau:
* những điều đã làm được
- Đề tài đáp ứng đúng tiến độ mà nhà trường đưa ra
- Phận loại sản phẩm chình xác khoảng 90%
- Kết nối với PLC qua OPC và kết nối với giữa matlab và camera là
tốt
- Học và huấn luyện mạng noron đã làm được và đáp ứng yêu cầu
* những điều chưa làm được
- Việc camera chụp hình còn chưa thực sự ổn định
- Camera hiển thị trên màn hình bị đứng khi đọc dữ liệu từ PLC
2 hướng phát triển của đề tài
- Camera không bị đứng hình khi đọc dữ liệu từ PLC
- Phát triển và hoàn thiện trong ứng dụng tự động phục vụ công
nghiêp

SVTH: :  Bùi Văn Dương trang  79
GVHD : Nguyễn Tấn Lũy

CHƯƠNG 3 PHỤ LỤC

Chương trình chính:


global nn mm
nn=0;
mm=0;
test2
chương trình con:
function varargout = test2(varargin)
% TEST2 MATLAB code for test2.fig
% TEST2, by itself, creates a new TEST2 or raises the existing
% singleton*.
%
% H = TEST2 returns the handle to a new TEST2 or the handle to
% the existing singleton*.
%
% TEST2('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in TEST2.M with the given input arguments.
%
% TEST2('Property','Value',...) creates a new TEST2 or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before test2_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to test2_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help test2

% Last Modified by GUIDE v2.5 09-May-2013 16:04:54

% Begin initialization code - DO NOT EDIT


gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @test2_OpeningFcn, ...
'gui_OutputFcn', @test2_OutputFcn, ...

SVTH: :  Bùi Văn Dương trang  80
GVHD : Nguyễn Tấn Lũy

'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT

% --- Executes just before test2 is made visible.


function test2_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to test2 (see VARARGIN)
set(handles.vat,'String','');
set(handles.bao,'String','khong co vat');
handles.figure1=gcf;
warning off;
global ngat tin_hieu_1 tin_hieu_2 n m p k
m=0;
k=1;
n=0;
p=0;
set(handles.slvuong,'String',0);
set(handles.sldagiac,'String',0);
set(handles.sltron,'String',0);
ngat = 'MicroWin.Project1.USER1.ngat';
handles.da = opcda('localhost','S7200.OPCServer');
connect(handles.da);
try
handles.data = addgroup(handles.da,'Group_1');
handles.dataIDS = {ngat};
handles.data_itm = additem(handles.data,handles.dataIDS);
guidata(handles.figure1, handles);
set(handles.data,'DataChangeFcn',{@Data_Group_Callback,handles},'UpdateRate',0);
end
Group_2 = addgroup(handles.da);
tin_hieu_1 = additem(Group_2,'MicroWin.Project1.USER1.tinhieu1')
tin_hieu_2 = additem(Group_2,'MicroWin.Project1.USER1.tinhieu2')

SVTH: :  Bùi Văn Dương trang  81
GVHD : Nguyễn Tấn Lũy

handles.output = hObject;
%global handl
%handl=handles;
handles.video = videoinput('winvideo', 1);
set(handles.video,'TimerPeriod', 0.05, ...
'TimerFcn',['if(~isempty(gco)),'...
'handles=guidata(gcf);'... % Update handles
'image(getsnapshot(handles.video));'... % Get picture using GETSNAPSHOT and put it into axes
using IMAGE
'set(handles.cameraaxes,''ytick'',[],''xtick'',[]),'... % Remove tickmarks and labels that are inserted
when using IMAGE
'else '...
'delete(imaqfind);'... % Clean up - delete any image acquisition objects
'end']);
triggerconfig(handles.video,'manual');
handles.video.FramesPerTrigger = Inf; % Capture frames until we manually stop it

% Update handles structure


guidata(hObject, handles);
guidata(handles.figure1, handles);

global hand han


hand=handles;
han=handles;

% UIWAIT makes test2 wait for user response (see UIRESUME)


uiwait(handles.figure1);

% --- Outputs from this function are returned to the command line.
function varargout = test2_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure


%varargout{1} = handles.output;

function Data_Group_Callback(hObject, eventdata, handles)


global ngat tin_hieu_1 tin_hieu_2 n p m
global hand han k v

%guidata(hObject, handles);
y=0;

SVTH: :  Bùi Văn Dương trang  82
GVHD : Nguyễn Tấn Lũy

try
global nn mm
if (nn==0)

x = read(handles.data);
y = x.Value;

drawnow;
end
end
if (y == 1)
nn=1;

k=0
end
if (k==0)
clear O;
%v=%=1000000;
s = videoinput('winvideo', 1);
%v=2;
%end
thuhinh = getsnapshot(s);
mm=mm+1
%imwrite(frame,'d.jpg');
%save data
for vv=1:v
kk=2;
end
set(han.bao,'String','co vat,dang xu ly');
set(han.vat,'String',' ');
load('C:\Program Files\MATLAB\R2010b\bin\neural');
%I = imread('d.jpg');
J = rgb2gray(thuhinh);
%figure, imshow(frame)%, figure, imshow(J);
H = im2bw(J,0.15);
%figure, imshow(H);
G = imresize(H,0.25);
%figure, imshow(G);
K=bwmorph(G,'branchpoints');
figure, imshow(K);
%imwrite(K,'t1.bmp');
%N=imread('C:\Users\Admin\Downloads\New folder (2)\t1.bmp');
%figure, imshow(N)
o=reshape(K,4800,1);
O =net(o)
a=[1 0 0]%ma tran 1.3*3.1=1.1

SVTH: :  Bùi Văn Dương trang  83
GVHD : Nguyễn Tấn Lũy

aa=a*O
b=[0 1 0]
bb=b*O
ccc=[0 0 1]
cc=ccc*O
if (aa>=bb)
if (aa>=cc)
dd=aa
else
dd=cc
end
else
if (bb>=cc)
dd=bb
else
dd=cc
end
end
if (dd==aa)
n = n+1;
set(han.vat,'String','hinh tron');
set(han.slvuong,'String',n);
write(tin_hieu_1,1);
write(tin_hieu_2,1);
set(han.bao,'String','khong co vat');
end
if (dd==bb)
m = m+1;
set(han.vat,'String','hinh tam giac');
set(han.sltron,'String',m);
write(tin_hieu_1,0);
write(tin_hieu_2,1);
set(han.bao,'String','khong co vat');
end
if (dd==cc)
p = p+1;
set(han.vat,'String','hinh vuong');
set(han.sldagiac,'String',p);
write(tin_hieu_1,1);
write(tin_hieu_2,0);
set(han.bao,'String','khong co vat');
end
k=1;
nn=0;
stop(s);
%start(s);

SVTH: :  Bùi Văn Dương trang  84
GVHD : Nguyễn Tấn Lũy

end
%handles.output = hObject;

% --- Executes on button press in ngat.


function ngat_Callback(hObject, eventdata, handles)
% hObject handle to ngat (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%global handl
%chup=handles;
start(handles.video);
%chup.video=handles.video;
set(handles.state,'String','camera, mang neural va ket noi OPC thanh cong');

% --- Executes during object creation, after setting all properties.


function cameraaxes_CreateFcn(hObject, eventdata, handles)
% hObject handle to cameraaxes (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: place code in OpeningFcn to populate cameraaxes

function state_Callback(hObject, eventdata, handles)


% hObject handle to state (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of state as text


% str2double(get(hObject,'String')) returns contents of state as a double

% --- Executes during object creation, after setting all properties.


function state_CreateFcn(hObject, eventdata, handles)
% hObject handle to state (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.


% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

SVTH: :  Bùi Văn Dương trang  85
GVHD : Nguyễn Tấn Lũy

function vat_Callback(hObject, eventdata, handles)


% hObject handle to vat (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of vat as text


% str2double(get(hObject,'String')) returns contents of vat as a double

% --- Executes during object creation, after setting all properties.


function vat_CreateFcn(hObject, eventdata, handles)
% hObject handle to vat (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.


% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function sltron_Callback(hObject, eventdata, handles)


% hObject handle to sltron (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of sltron as text


% str2double(get(hObject,'String')) returns contents of sltron as a double

% --- Executes during object creation, after setting all properties.


function sltron_CreateFcn(hObject, eventdata, handles)
% hObject handle to sltron (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.


% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

SVTH: :  Bùi Văn Dương trang  86
GVHD : Nguyễn Tấn Lũy

function slvuong_Callback(hObject, eventdata, handles)


% hObject handle to slvuong (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of slvuong as text


% str2double(get(hObject,'String')) returns contents of slvuong as a double

% --- Executes during object creation, after setting all properties.


function slvuong_CreateFcn(hObject, eventdata, handles)
% hObject handle to slvuong (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.


% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

% --- Executes on button press in xoa.


function xoa_Callback(hObject, eventdata, handles)
% hObject handle to xoa (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global m n p v
v=1;
m=0;
p=0;
n=0;
set(handles.sltron,'String',0);
set(handles.slvuong,'String',0);
set(handles.sldagiac,'String',0);

function bao_Callback(hObject, eventdata, handles)


% hObject handle to bao (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

SVTH: :  Bùi Văn Dương trang  87
GVHD : Nguyễn Tấn Lũy

% Hints: get(hObject,'String') returns contents of bao as text


% str2double(get(hObject,'String')) returns contents of bao as a double

% --- Executes during object creation, after setting all properties.


function bao_CreateFcn(hObject, eventdata, handles)
% hObject handle to bao (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.


% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function sldagiac_Callback(hObject, eventdata, handles)


% hObject handle to sldagiac (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of sldagiac as text


% str2double(get(hObject,'String')) returns contents of sldagiac as a double

% --- Executes during object creation, after setting all properties.


function sldagiac_CreateFcn(hObject, eventdata, handles)
% hObject handle to sldagiac (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.


% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

% --- Executes on button press in test.


function test_Callback(hObject, eventdata, handles)
% hObject handle to test (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

SVTH: :  Bùi Văn Dương trang  88
GVHD : Nguyễn Tấn Lũy

TÀI LIỆU THAM KHẢO

1 Matlab Va Ứng Dụng Trong Điều Khiển Của Ngyễn Đức


Thành
2 http://doc.edu.vn/default.aspx
3 http://www.mathworks.com/products/opc/
4 help trong matlab
5 http://www.ngohaibac.net

SVTH: :  Bùi Văn Dương trang  89