Академический Документы
Профессиональный Документы
Культура Документы
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
……………………………………………………………………………………………….
………………………………………………………………
……………………………………………………………………………………………….
………………………………………………………………
……………………………………………………………………………………………….
………………………………………………………………
……………………………………………………………………………………………….
………………………………………………………………
……………………………………………………………………………………………….
………………………………………………………………
……………………………………………………………………………………………….
………………………………………………………………
……………………………………………………………………………………………….
………………………………………………………………
……………………………………………………………………………………………….
………………………………………………………………
……………………………………………………………………………………………….
………………………………………………………………
……………………………………………………………………………………………….
………………………………………………………………
……………………………………………………………………………………………….
………………………………………………………………
……………………………………………………………………………………………….
………………………………………………………………
……………………………………………………………………………………………….
………………………………………………………………
……………………………………………………………………………………………….
………………………………………………………………
……………………………………………………………………………………………….
………………………………………………………………
SVTH: : Bùi Văn Dương trang 2
GVHD : Nguyễn Tấn Lũy
……………………………………………………………………………………………….
………………………………………………………………
……………………………………………………………………………………………….
………………………………………………………………
SVTH: : Bùi Văn Dương trang 3
GVHD : Nguyễn Tấn Lũy
……………………………………………………………………………………………….
………………………………………………………………
……………………………………………………………………………………………….
………………………………………………………………
……………………………………………………………………………………………….
………………………………………………………………
……………………………………………………………………………………………….
………………………………………………………………
……………………………………………………………………………………………….
………………………………………………………………
……………………………………………………………………………………………….
………………………………………………………………
……………………………………………………………………………………………….
………………………………………………………………
……………………………………………………………………………………………….
………………………………………………………………
……………………………………………………………………………………………….
………………………………………………………………
……………………………………………………………………………………………….
………………………………………………………………
……………………………………………………………………………………………….
………………………………………………………………
……………………………………………………………………………………………….
………………………………………………………………
……………………………………………………………………………………………….
………………………………………………………………
……………………………………………………………………………………………….
………………………………………………………………
……………………………………………………………………………………………….
………………………………………………………………
SVTH: : Bùi Văn Dương trang 4
GVHD : Nguyễn Tấn Lũy
……………………………………………………………………………………………….
………………………………………………………………
……………………………………………………………………………………………….
………………………………………………………………
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
I lý thuyet co ban..........................................................................................................7
1.2 câu tạo và Phuong thưc làm việc của mạng noron...............................................11
1 Phần Cứng……………………………………………………………….……………..53
SVTH: : Bùi Văn Dương trang 7
GVHD : Nguyễn Tấn Lũy
3 Sơ đồ khối................................................................................................................55
5 Phần mềm................................................................................................................66
2 kết quả...................................................................................................................69
3 đánh giá....................................................................................................................69
1 kết luân..................................................................................................................70
Phụ lục........................................................................................................................71
SVTH: : Bùi Văn Dương trang 8
GVHD : Nguyễn Tấn Lũy
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
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.
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.
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
- 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
và
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).
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)
• Đồ thị các dạng hàm truyền được biểu diễn như sau:
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
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.
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.
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
SVTH: : Bùi Văn Dương trang 18
GVHD : Nguyễn Tấn Lũ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.
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
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
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:
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.
SVTH: : Bùi Văn Dương trang 23
GVHD : Nguyễn Tấn Lũy
Để 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
SVTH: : Bùi Văn Dương trang 25
GVHD : Nguyễn Tấn Lũy
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)
η
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.
• 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ố.
SVTH: : Bùi Văn Dương trang 28
GVHD : Nguyễn Tấn Lũy
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.
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
l l m
net i = ∑ wiq z q = ∑ wiq a (∑ v qj x j )
q =1 q =1 j =1
(1.21)
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
.
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.
[ ]
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:
Ở đâ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)
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à .
- 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)
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)
δ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
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.
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.
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.
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.
SVTH: : Bùi Văn Dương trang 38
GVHD : Nguyễn Tấn Lũy
SVTH: : Bùi Văn Dương trang 39
GVHD : Nguyễn Tấn Lũy
SVTH: : Bùi Văn Dương trang 40
GVHD : Nguyễn Tấn Lũy
SVTH: : Bùi Văn Dương trang 41
GVHD : Nguyễn Tấn Lũy
- ví dụ:
imwrite(K,'t1.bmp');
Bước 1:
SVTH: : Bùi Văn Dương trang 42
GVHD : Nguyễn Tấn Lũ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.
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 =
AdaptorName: 'winvideo'
SVTH: : Bùi Văn Dương trang 43
GVHD : Nguyễn Tấn Lũy
DeviceIDs: {[1]}
- 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
Bước 3: Tạo đối tượng đại diện vào máy để làm đề tài này.
SVTH: : Bùi Văn Dương trang 44
GVHD : Nguyễn Tấn Lũy
Bước 4: Hiện thị luồng video trên màng hình để xem thử.
>> 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.
Imwrite(hinh,’1.jpg’);
SVTH: : Bùi Văn Dương trang 45
GVHD : Nguyễn Tấn Lũy
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)
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.
>> 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
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
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.
- 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ó.
- 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.
- 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.
- Tab Order Editor: sắp xếp Tab order là thứ tự khi ta nhấn phím Tab
- 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.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.
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.
SVTH: : Bùi Văn Dương trang 50
GVHD : Nguyễn Tấn Lũy
- 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
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
SVTH: : Bùi Văn Dương trang 52
GVHD : Nguyễn Tấn Lũy
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
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
SVTH: : Bùi Văn Dương trang 54
GVHD : Nguyễn Tấn Lũy
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.
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
Khi đã kết nối xong thì nhấn vào nút số 1 để tạo thành một 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
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
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
SVTH: : Bùi Văn Dương trang 60
GVHD : Nguyễn Tấn Lũy
3 Sơ Đồ Khối
SVTH: : Bùi Văn Dương trang 61
GVHD : Nguyễn Tấn Lũy
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.
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.
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 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.
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.
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.
SVTH: : Bùi Văn Dương trang 63
GVHD : Nguyễn Tấn Lũy
Đâ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.
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
ở 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.
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.
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
Nhấn Next
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
SVTH: : Bùi Văn Dương trang 69
GVHD : Nguyễn Tấn Lũy
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
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
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
Ô 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.
ở ô 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
ở ô 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.
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
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
SVTH: : Bùi Văn Dương trang 79
GVHD : Nguyễn Tấn Lũy
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
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
% --- 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)
%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;
SVTH: : Bùi Văn Dương trang 85
GVHD : Nguyễn Tấn Lũy
SVTH: : Bùi Văn Dương trang 86
GVHD : Nguyễn Tấn Lũy
SVTH: : Bùi Văn Dương trang 87
GVHD : Nguyễn Tấn Lũy
SVTH: : Bùi Văn Dương trang 88
GVHD : Nguyễn Tấn Lũy
SVTH: : Bùi Văn Dương trang 89