Mơ hình mạng Perceptron 1 lớp

Một phần của tài liệu (LUẬN văn THẠC sĩ) giải pháp đếm con giống ứng dụng công nghệ xử lý ảnh (Trang 50)

Huấn luyện mạng:

Thuật toán huấn luyện mạng Perceptron được gọi là thuật toán học Perceptron. Thuật tốn học này cịn được gọi là thuật toán học sửa sai (Error Correction Learning Rule).

Thuật tốn học Perceptron được tóm tắt như sau [15]: Bước 1: Chọn tốc độ học 𝜂 > 0.

Bước 2: Khởi động: - Gán sai số E = 0 - Gán biến chạy k = 1

- Gán các vector trọng số 𝑤𝑖(𝑘) (𝑖 = 1, 𝑛̅̅̅̅̅) bằng giá trị ngẫu nhiên nhỏ bất kỳ.

Bước 3: Q trình huấn luyện bắt đầu, tính:

𝑦𝑖(𝑘) = 𝑠𝑡𝑒𝑝(𝑤𝑖𝑇(𝑘)𝑥(𝑘)) = 𝑠𝑡𝑒𝑝 (∑ 𝑤𝑖𝑗(𝑘)𝑥𝑗(𝑘)

𝑚

𝑗=1

) (𝑖 = 1, 𝑛̅̅̅̅̅) (3.1)

𝑤𝑖(𝑘 + 1) = 𝑤𝑖(𝑘) + 𝜂(𝑑𝑖(𝑘) − 𝑦𝑖(𝑘)). 𝑥(𝑘) (𝑖 = 1, 𝑛̅̅̅̅̅) (3.2)

Bước 5: Tính sai số tích lũy:

𝐸 = 𝐸 +1

2‖𝑑(𝑘) − 𝑦(𝑘)‖2 (3.3)

Bước 6: Nếu k < K thì gán k = k+1 và trở lại bước 3. Nếu k = K thì tiếp tục bước 7. Bước 7: Kết thúc một chu kỳ huấn luyện (epoch).

- Nếu 𝐸 = 0 thì kết thúc quá trình học.

- Nếu 𝐸 ≠ 0 thì gán 𝐸 = 0, k = 1 và trở lại bước 3 bắt đầu một chu kỳ huấn luyện mới.

3.5.2. Mạng truyền thẳng nhiều lớp Cấu trúc mạng: Cấu trúc mạng:

Mạng truyền thẳng nhiều lớp là mạng truyền thẳng có từ hai lớp tế bào thần kinh xử lý trở lên. Lớp tế bào thần kinh nối với ngõ vào gọi là lớp vào (thường lớp vào không thực hiện các phép toán xử lý), lớp tế bào thần kinh nối với ngõ ra gọi là lớp ẩn. Kết nối giữa các tế bào thần kinh ở các lớp có thể đầy đủ hoặc khơng đầy đủ.

Khác với mạng truyền thẳng 1 lớp, mạng truyển thẳng nhiều lớp có thể giải bài tốn khơng khả phân tuyến tính.

Huấn luyện mạng:

Thuật toán huấn luyện mạng truyền thẳng nhiều lớp là thuật toán lan truyền ngược. Thuật tốn lan truyền ngược thực hiện hai bước truyền thơng tin. Thứ nhất, mẫu dữ liệu vào x(k) được truyền từ ngõ vào đến ngõ ra, kết quả của việc truyền dữ liệu theo hướng thuận là tạo ra tín hiệu y(k) ở ngõ ra của mạng. Sau đó sai số là sai lệch giữa d(k) và y(k) được truyền ngược từ lớp ra trở về lớp trước đó để cập nhật trọng số của mạng.

Lớp vào Lớp ẩn Lớp ẩn Lớp ra Hình 3.6 Mạng truyền thẳng nhiều lớp

Thuật toán lan truyền ngược để huấn luyện mạng truyền thằng nhiều lớp được tóm tắt như sau [15]:

Bước 1: Chọn tốc độ 𝜂 > 0, chọn sai số cực đại 𝐸𝑚𝑎𝑥. Bước 2: Khởi động:

- Gán sai số E=0 - Gán biến chạy k=1

- Gán các trọng số 𝑤𝑖𝑞(𝑘), 𝑣𝑞𝑗(𝑘) (𝑖 = 1, 𝑛̅̅̅̅̅; 𝑗 = 1, 𝑚̅̅̅̅̅̅; 𝑞 = 1, 𝑙̅̅̅̅) bằng giá trị

ngẫu nhiên nhỏ bất kỳ

Bước 3: (Truyền thuận dữ liệu) Tính ngõ ra của mạng với tín hiệu vào là 𝑥(𝑘): Lớp ẩn: 𝑛𝑒𝑡𝑞(𝑘) = ∑ 𝑣𝑞𝑗(𝑘)𝑥𝑗(𝑘) 𝑚 𝑗=1 (𝑞 = 1, 𝑙̅̅̅̅) (3.4) 𝑧𝑞(𝑘) = 𝑎ℎ(𝑛𝑒𝑡𝑞(𝑘)) (𝑞 = 1, 𝑙̅̅̅̅) (3.5) Lớp ra: 𝑛𝑒𝑡𝑖(𝑘) = ∑ 𝑤𝑖𝑞(𝑘)𝑧𝑞(𝑘) 𝑙 𝑞=1 (𝑖 = 1, 𝑛̅̅̅̅̅) (3.6) 𝑦𝑖(𝑘) = 𝑎𝑜(𝑛𝑒𝑡𝑖(𝑘)) (𝑖 = 1, 𝑛̅̅̅̅̅) (3.7) x2 x3 xm y2 ym

Bước 4: (Lan truyền ngược sai số) Cập nhập trọng số của mạng: Lớp ra: 𝛿𝑜𝑖(𝑘) = [(𝑑𝑖(𝑘) − 𝑦𝑖(𝑘))][𝑎′𝑜(𝑛𝑒𝑡𝑖(𝑘))] (𝑖 = 1, 𝑛̅̅̅̅̅) (3.8) 𝑤𝑖𝑞(𝑘 + 1) = 𝑤𝑖𝑞(𝑘) + 𝜂𝛿𝑜𝑖(𝑘)𝑧𝑞(𝑘) (𝑖 = 1, 𝑛̅̅̅̅̅) (𝑞 = 1, 𝑙̅̅̅̅) (3.9) Lớp ẩn: 𝛿ℎ𝑞(𝑘) = [∑ 𝛿𝑜𝑖(𝑘)𝑤𝑖𝑞(𝑘) 𝑛 𝑖=1 ] [𝑎′ℎ(𝑛𝑒𝑡𝑞(𝑘))] 𝑞 = 1, 𝑙̅̅̅̅) (3.10) 𝑣𝑞𝑗(𝑘 + 1) = 𝑣𝑞𝑗(𝑘) + 𝜂𝛿ℎ𝑞(𝑘)𝑥𝑗(𝑘) (𝑗 = 1, 𝑚̅̅̅̅̅̅) (𝑞 = 1, 𝑙̅̅̅̅) (3.11)

Bước 5: Tính sai số tích lũy:

𝐸 = 𝐸 +1

2∑(𝑑𝑖(𝑘) − 𝑦𝑖(𝑘))2

𝑛

𝑖=1

(3.12)

Bước 6: Nếu k < K thì gán k = k+1 và trở lại bước 3. Nếu k = K thì tiếp tục bước 7 Bước 7: Kết thúc một chu kỳ huấn luyện.

Nếu 𝐸 < 𝐸𝑚𝑎𝑥 thì kết thúc quá trình học.

Nếu 𝐸 ≥ 𝐸𝑚𝑎𝑥 thì gán E = 0, k = 1 và trở lại bước 3 bắt đầu một chu kỳ huấn luyện mới.

Có nhiều mơ hình mạng nơ-ron dùng để nhận dạng ảnh, trong đó mạng nơ- ron truyền thẳng nhiều lớp với thuật tốn lan truyền ngược là mơ hình đơn giản và hay được sử dụng nhất. Trong đề tài này, tác giả sử dụng mạng nơ-ron truyền thẳng 2 lớp với thuật toán lan truyền ngược.

Chương 4

NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU

4.1 Thiết kế chậu chứa cá

Chậu chứa cá có nhiệm vụ chứa cá trong quá trình thu nhận ảnh đầu vào. Chậu chứa là một yếu tố quan trọng và ảnh hưởng lớn đến kết quả xử lý ở các bước tiếp theo. Chậu chứa phải đảm bảo một số yêu cầu như: có màu tương phản với cá, ánh sáng có thể phân bố đều trong tồn diện tích bể, độ cao mức nước khơng thay đổi trên tồn diện tích đáy chậu. Để đáp ứng các yêu cầu trên, chúng tôi đã sử dụng chậu chứa cá bằng vật liệu mica, chậu chứa hình hộp vng, kích thước 13cmx13cm. Nguồn sáng gồm 4 bóng đèn led (9W, 806lm) được đặt phía dưới chậu chứa và cách đáy chậu 18cm. Camera có độ phân giải 13 Megapixel được sử dụng và đặt cố định ở phía trên chậu chứa, cách đáy chậu một khoảng 15cm. Chiều cao mực nước chứa trong bể từ 1cm đến 1,5 cm sao cho hạn chế việc cá bơi chồng lên nhau.

4.2. Tạo dữ liệu ảnh cá và ảnh tạp dùng để huấn luyện mạng nơ-ron

Tác giả thực nghiệm cho cá và tạp chất vào chậu chứa. Dùng máy chụp hình kỹ thuật số (13 Megapixel) chụp lại ảnh cá và ảnh tạp.Thực hiện chụp nhiều lần, tác giả thu được một lượng lớn ảnh cá và ảnh tạp dùng làm dữ liệu huấn luyện mạng nơ-ron.

Sử dụng phần mềm để tách từng con cá và từng tạp chất riêng biệt. Tác giả đã tạo ra 300 tập tin ảnh của 300 con cá có hình dạng bơi khác nhau và 150 tập tin ảnh của 150 tạp chất. Trong đó dữ liệu ảnh cá và ảnh tạp dùng để huấn luyện mạng nơ-ron là 200 tập tin ảnh cá và 100 tập tin ảnh tạp, 100 tập tin ảnh cá và 50 tập tin ảnh tạp cịn lại dùng để kiểm tra độ chính xác việc học của mạng nơ-ron.

Hình 4.2 Một số hình ảnh cá

4.3. Quá trình xử lý ảnh

Tác giả sử dụng giao diện đồ họa (GUI) trong Matlab để xây dựng chương trình cho việc nhận dạng và đếm cá giống

Hình 4.4. Giao diện đồ họa chương trình nhận dạng và đếm cá

Chuyển ảnh màu RGB thành ảnh mức xám

Tác giả đã sử dụng hàm rgb2gray của Matlab để thực hiện được tác vụ này.

Dữ liệu vào của hàm là ảnh màu RGB, dữ liệu ra của hàm là ảnh mức xám. Quan sát ảnh xám sau khi sử dụng hàm rgb2gray ta thấy đối tượng cá có màu đen hơn nền xung quanh. Ảnh sau khi chuyển thành ảnh mức xám

Đảo pixel ảnh xám

Do ở bước xác định trọng tâm của ảnh ta cần hiển thị điểm trọng tâm nên nếu đối tượng cá có màu đen thì sẽ khơng quan sát được điểm trọng tâm. Vì vậy, tác giả đã thực hiện đảo các pixel 0 thành pixel 1, đảo pixel 1 thành pixel 0 (hay đảo đen thành trắng, trắng thành đen) bằng hàm imcomplement của Matlab. Dữ liệu vào

của hàm này có thể là ảnh nhị phân, ảnh xám hoặc ảnh màu RGB. Kết quả trong đề tài này, tác giả chọn dữ liệu vào của hàm imcomplement là ảnh xám, dữ liệu ra của

hàm cũng là ảnh xám nhưng đối tượng cá đã được chuyển sang màu trắng cịn nền thì màu tối.

Lọc nhiễu cho ảnh mức xám

Tác giả đã sử dụng hàm medfilt2 của Matlab để thực hiện được tác vụ này. Dữ liệu vào của hàm này là ảnh mức xám chưa được lọc nhiễu, dữ liệu ra của hàm cũng là ảnh mức xám nhưng đã được lọc nhiễu.

Tăng độ tương phản cho ảnh mức xám

Tác giả đã sử dụng hàm imadjust của Matlab để thực hiện được tác vụ này. Dữ liệu vào của hàm này là ảnh mức xám đã được lọc nhiễu, dữ liệu ra của hàm cũng là ảnh mức xám nhưng có độ tương phản giữa hai màu đen và trắng rõ nét hơn.

Phân đoạn ảnh

Chuyển ảnh mức xám thành ảnh nhị phân đen trắng.

Để thực hiện được tác vụ này, tác giả đã sử dụng 2 hàm graythresh và

im2bw của Matlab.

 Hàm graythresh dùng để xác định ngưỡng giá trị mức xám của ảnh mức xám đã được làm tăng độ tương phản. Dữ liệu vào của hàm này là ảnh mức xám, dữ liệu ra của hàm là ngưỡng giá trị mức xám của ảnh.

 Hàm im2bw dùng để chuyển ảnh mức xám thành ảnh nhị phân đen

trắng. Những điểm ảnh nào trong ảnh có giá trị mức xám lớn hơn ngưỡng giá trị mức xám thì thành màu đen, ngược lại thì thành màu trắng. Lúc này ảnh là một ma trận điểm, mỗi điểm có giá trị hoặc là 0 hoặc là 1.

Loại bỏ các vùng ảnh nhỏ có ít số pixel

Để thực hiện được tác vụ này, tác giả đã sử dụng hàm bwareaopen của Matlab. Do ảnh chụp thực tế có rất nhiều tạp chất nhỏ li ti mà ta không thể xây dựng chúng thành ảnh tạp mẫu để huấn luyện cho mạng nơ-ron. Vì vậy cần phải loại bỏ các tạp chất nhỏ này.

Dữ liệu vào của hàm bwareaopen này là ảnh nhị phân, dữ liệu ra của hàm

Hình 4.5 Ảnh gốc Hình 4.6 Ảnh xám

Hình 4.7 Ảnh đảo pixel Hình 4.8 Ảnh lọc nhiễu

Hình 4.9 Ảnh tăng độ tương phản Hình 4.10 Ảnh nhị phân đen trắng

4.4. Q trình trích đặc trưng của ảnh Tìm trọng tâm của ảnh cá: Tìm trọng tâm của ảnh cá:

Theo [13] việc xác định tọa độ trọng tâm của đối tượng được thực hiện theo công thức sau: 𝑆 = ∑ ∑ 𝑏𝑤(𝑥, 𝑦) 𝑦𝑆𝑖𝑧𝑒 𝑦=1 𝑥𝑆𝑖𝑧𝑒 𝑥=1 𝑀𝑥 = ∑ ∑ 𝑦. 𝑏𝑤(𝑥, 𝑦) 𝑦𝑆𝑖𝑧𝑒 𝑦=1 𝑥𝑆𝑖𝑧𝑒 𝑥=1 𝑀𝑦 = ∑ ∑ 𝑥. 𝑏𝑤(𝑥, 𝑦) 𝑦𝑆𝑖𝑧𝑒 𝑦=1 𝑥𝑆𝑖𝑧𝑒 𝑥=1 𝑥0 = 𝑀𝑦 𝑆 ; 𝑦0 = 𝑀𝑥 𝑆 (4.1)

Mx, My là momen so với trục x và trục y.

xSize, ySize là kích thước ảnh nhị phân của đối tượng.

bw là ảnh nhị phân, 𝑏𝑤 = {1 𝑛ế𝑢 (𝑥, 𝑦) ∈ 𝐷 0 𝑛ế𝑢 (𝑥, 𝑦) ∉ 𝐷 , D là miền chứa đối tượng.

M0 = (x0,y0) là tọa độ trọng tâm của đối tượng.

Tìm điểm xuất phát

Điểm xuất phát là điểm mà tại đó bắt đầu thực hiện quá trình chạy dọc đường biên của ảnh cá, từ đó xác định được các điểm nằm trên đường biên của con cá. Điểm xuất phát là điểm mà tại đó bán kính tính từ tâm con cá đến đường biên của cá là lớn nhất.

Trích đặc trưng của ảnh cá

Hình dạng của con cá được xác định bởi các bán kính tính từ trọng tâm của con cá đến biên của nó. Trong đề tài này, tác giả chia đường biên của cá thành 200 đoạn thẳng nhỏ, do đó đặc trưng ảnh của cá chính là 200 bán kính tính từ trọng tâm của con cá đến 200 đoạn thẳng nhỏ tạo thành hình dạng của con cá.

Hình 4.11 Trọng tâm của ảnh cá Hình 4.12 Điểm xuất phát của ảnh cá

Hình 4.13 Trích đặc trưng ảnh cá

4.5. Quá trình thiết kế và huấn luyện mạng nơ-ron

Để thiết kế một mạng nơ-ron, chúng ta cần xác định số nơ-ron ở lớp vào, số nơ-ron lớp ra, số lớp ẩn và số nơ-ron ở lớp ẩn. Do đặc trưng của ảnh cá có 200 giá trị dữ liệu nên số nơ-ron ngõ vào của mạng nơ-ron sẽ được xác định là 200. Sau khi

nhận dạng sẽ cho ra kết luận có phải là ảnh cá hay khơng, vì vậy có thể xác định được số nơ-ron ngõ ra chỉ là 1 nơ-ron.

Sau khi tiến hành chạy thử nhiều lần quá trình huấn luyện và thử nghiệm mạng nơ-ron với dữ liệu huấn luyện đã được tạo ra trước đó, kết quả huấn luyện là tốt nhất khi chọn mạng nơ-ron là mạng truyền thẳng 2 lớp và có các thơng số sau:

- Số nơ-ron ngõ vào: 200 - Số nơ-ron lớp ẩn: 30 - Số nơ-ron lớp xuất: 1

- Hàm huấn luyện là traingdx - Hàm truyền lớp ẩn: logsig - Hàm truyền lớp xuất: logsig - Hàm thực hiện: sse

- Số thế hệ huấn luyện: 250000 - Điểm hội tụ là 10-5.

Quá trình huấn luyện mạng nơ-ron được thực hiện theo sơ đồ hình 4.14. Điều khó khăn trong q trình huấn luyện mạng là phải chọn số nơ-ron lớp ẩn bao nhiêu là hợp lý, nếu số nơ-ron lớp ẩn quá lớn hoăc quá ít cũng làm cho q trình huấn luyện mạng khơng đạt được kết quả chính xác như mong muốn, thậm chí nếu có q ít số nơ-ron lớp ẩn thì q trình học của mạng sẽ khơng hội tụ.

Hình 4.14 Sơ đồ quá trình huấn luyện mạng nơ-ron

Lưu đồ giải thuật quá trình thiết kế và huấn luyện mạng nơ-ron như hình 4.15 Thử nghiệm mạng nơ-ron để kiểm

tra độ chính xác của mạng. Nếu mạng nơ-ron cho kết quả khơng chính xác như mong muốn thì có thể thay đổi bộ dữ liệu huấn luyện

hoặc thiết kế lại mạng nơ-ron. Tạo bộ dữ liệu chuẩn dùng để

huấn luyện mạng nơ-ron

Thiết kế mạng nơ-ron

Đưa dữ liệu vào để huấn luyện mạng nơ-ron

Thử nghiệm cho đến khi chọn được mạng nơ-ron hoạt động có độ chính xác đúng theo u cầu.

Khơng Đạt Khơng Đạt Bắt đầu Dữ liệu ảnh cá và tạp chuẩn Tiền xử lý Trích đặc trưng Chọn mơ hình mạng nơ-ron Huấn luyện mạng Thử nghiệm mạng Tinh chỉnh mạng Ứng dụng Kết thúc Đạt ? Đạt ? Hình 4.15 Lưu đồ giải thuật quá trình thiết kế và huấn luyện mạng nơ-ron

Sơ đồ huấn luyện ban đầu cho mạng nơ-ron như hình 4.16

Hình 4.16. Sơ đồ huấn luyện mạng nơ-ron ban đầu

Q trình kiểm tra độ chính xác của mạng nơ-ron vừa được huấn luyện như sơ đồ hình 4.17

Dữ liệu đầu vào:

 200 ảnh chụp cá mẫu  100 ảnh chụp tạp chất Tiền xử lý ảnh Phân đoạn ảnh Trích đặc trưng ảnh Mạng nơ-ron: mạng truyền thẳng 2 lớp.  200 nơ-ron ngõ vào  30 nơ-ron lớp ẩn  1 nơ-ron lớp ra Kết quả cho ra là một mạng nơ-ron đã được huấn luyện

Hình 4.17 Sơ đồ quá trình kiểm tra độ chính xác của mạng nơ-ron vừa được huấn luyện

4.6. Quá trình nhận dạng và đếm số lượng cá

Quá trình nhận dạng và đếm cá được tiến hành theo sơ đồ hình 4.18

Ảnh cá cần nhận dạng và đếm sẽ được camera kỹ thuật số thu và đưa vào máy tính để xử lý. Ảnh này là ảnh màu RGB như hình 4.19

Ảnh chụp cá ngẫu nhiên

Tiền xử lý ảnh

Trích đặc trưng ảnh

Mạng nơ-ron đã được huấn luyện.

Quyết định điều khiển: nếu là ảnh cá thì giữ lại, là ảnh tạp thì loại bỏ.

Nếu quyết định điều khiển của mạng nơ-ron chưa đúng với yêu cầu thì quay trở lại thay đổi dữ liệu mẫu huấn luyện cho mạng, thực hiện cho đến khi mạng nơ-ron cho kết quả nhận dạng đúng với yêu cầu thì chọn mạng đó.

Hình 4.18 Sơ đồ q trình nhận dạng và đếm cá

Sau đó chuyển ảnh màu RGB sang dạng ảnh mức xám, thực hiện đảo pixel, lọc nhiễu và tăng độ tương phản cho ảnh mức xám vừa nhận được. Tiếp tục ta chuyển ảnh mức xám các con cá cần nhận dạng và đếm sang dạng ảnh nhị phân đen trắng.

Lúc này ảnh nhị phân đen trắng thu được thực chất là một ma trận các điểm ảnh, trong đó những điểm ảnh biểu diễn hình dạng cá có giá trị là 1 (màu trắng), cịn những điểm ảnh nền có giá trị là 0 (màu đen).

Ảnh cá ngẫu nhiên cần đếm

Tiền xử lý ảnh Phân đoạn ảnh

Chuyển ảnh nhị phân thành dạng ma trận đồng thời ghi nhãn các đối tượng có trong ảnh.

Lần lượt tách từng đối tượng có trong ảnh để trích đặc trưng và đưa vào mạng nơ-ron đã được huấn luyện để nhận quyết định giữ lại hay loại bỏ đối tượng vừa tách.

Sau khi nhận dạng hết toàn bộ

các đối tượng có trong ảnh, cuối cùng phần mềm sẽ kết hợp các ảnh cá để đưa ra ảnh cuối cùng chỉ gồm những con cá.

Ghi nhãn các đối tượng cá và tạp có trong ảnh:

Khi thực hiện gán nhãn các đối tượng cá và tạp có trong ảnh thì lúc này tồn bộ ảnh sẽ được chuyển thành dạng ma trận. Tại những điểm thuộc ảnh nền thì sẽ có giá trị 0, cịn tại những điểm thuộc ảnh đối tượng thứ nhất thì sẽ có giá trị bằng 1, tiếp tục tại những điểm thuộc ảnh đối tượng thứ 2, thứ 3,…thì sẽ có giá trị bằng 2, bằng 3,…

Hình 4.19 Ảnh cá cần nhận dạng Hình 4.20 Ảnh nhị phân đen trắng

Một phần của tài liệu (LUẬN văn THẠC sĩ) giải pháp đếm con giống ứng dụng công nghệ xử lý ảnh (Trang 50)

Tải bản đầy đủ (PDF)

(91 trang)