Mơ hình học sâu (deeplearning)

Một phần của tài liệu Thiết kế và thi công phần mềm nhận diện lỗi trong chỉnh lưu hỗ trợ công tác giảng dạy và hướng dẫn thực hành (Trang 34)

CHƯƠNG 2 Mô hình mạng Neuron tích chập

2.2. Mơ hình học sâu (deeplearning)

2.2.1. Lựa chọn mạng học sâu.

Học sâu là một nhánh của học máy, mơ hình dạy cho máy tính làm nhưng giống với con người hay làm. Đó là: Học từ kinh nghiệm. Các thuật toán học máy sử dụng các phương pháp tính tốn để "học" thơng tin trực tiếp từ dữ liệu mà không dựa vào chương trình được cài đặt trước như một mơ hình. Học sâu đặc biệt phù hợp để nhận dạng hình ảnh, điều này rất quan trọng để giải quyết các vấn đề như nhận dạng khuôn mặt, phát hiện chuyển động và nhiều công nghệ hỗ trợ cho người lái xe tiên tiến như lái xe tự động, phát hiện làn đường, phát hiện người đi bộ và tự động đỗ xe.

Trong đề tài này thì nhóm chúng em sử dụng: Deep Learning Toolbox( cơng cụ học sâu) được MATLAB thiết kế đơn giản để tạo và kết nối các lớp của mạng nơ- ron tích chập.

Học chuyển tiếp thường được sử dụng trong các ứng dụng học sâu. Chúng ta có thể lấy một mạng được đào tạo sẵn và sử dụng nó như một điểm khởi đầu để tìm hiểu một nhiệm vụ mới. Tinh chỉnh một mạng lưới với việc học chuyển giao thường nhanh hơn và dễ dàng hơn nhiều so với việc đào tạo một mạng lưới với trọng lượng khởi tạo ngẫu nhiên từ đầu. Bạn có thể nhanh chóng chuyển các tính năng đã học sang một nhiệm vụ mới bằng cách sử dụng một số lượng nhỏ hình ảnh đào tạo.

33 Công cụ học sâu chứa rất nhiều mạng lưới phân loại hình ảnh được đào tạo sẵn đã học cách trích xuất các tính năng mạnh mẽ và thơng tin từ hình ảnh tự nhiên và chúng ta có thể sử dụng nó làm cơ sở để nghiên cứu một dự án mới. Phần lớn các mạng được đào tạo sẵn được đào tạo trên một tập hợp con của cơ sở dữ liệu Hình

2.3, được sử dụng trong thử nghiệm nhận dạng hình ảnh quy mơ lớn Hình 2.4. Các

mạng này đã được đào tạo trên hơn một triệu hình ảnh và có thể phân loại hình ảnh thành 1000 loại đối tượng, chẳng hạn như bàn phím, cốc cà phê, bút chì và nhiều động vật. Sử dụng một mạng được đào tạo sẵn với học tập chuyển giao thường nhanh hơn và dễ dàng hơn nhiều so với đào tạo một mạng từ đầu.

34

Hình 2.4: Một số thuộc tính của các mạng học sâu.

Các mạng được đào tạo sẵn có các đặc điểm khác nhau như là: độ chính xác, tốc độ và kích thước mạng. Chọn một mạng lưới nói chung là một sự đánh đổi giữa các đặc điểm này. Hình 2.4 so sánh độ chính xác xác thực với thời gian cần thiết để đưa ra dự đoán bằng mạng.

Sau khi quan sát bảng so sánh, báo cáo về các mạng học sâu cùng với tập CSDL thu được thì nhóm chùng em chọn một trong những mạng có tốc độ đào tạo nhanh đó là: Alexnet.

2.2.2. Cấu trúc mạng Alexnet.

AlexNet là một mạng lưới thần kinh phức tạp sâu 8 lớp. Mạng được đào tạo sẵn có thể phân loại hình ảnh thành 1000 loại đối tượng, chẳng hạn như bàn phím, chuột, bút chì và nhiều động vật. Kết quả là, mạng đã học được các đại diện tính năng phong phú cho một loạt các hình ảnh. Mạng có kích thước đầu vào hình ảnh là 227- by-227.

35 AlexNet đã được đào tạo trên hơn một triệu hình ảnh và có thể phân loại hình ảnh thành 1000 loại đối tượng (như bàn phím, cốc cà phê, bút chì và nhiều động vật). Mạng lưới đã học được các đại diện tính năng phong phú cho một loạt các hình ảnh. Mạng lấy một hình ảnh làm đầu vào và xuất nhãn cho đối tượng trong hình ảnh cùng với xác suất cho từng loại đối tượng.

Hình 2.5: Kiến trúc mạng và thơng tin chi tiết về các lớp mạng của mạng Alexnet.

36 - Lớp đầu tiên, lớp đầu vào hình ảnh, u cầu hình ảnh đầu vào có kích thước 227- by-227-by-3, trong đó 3 là số kênh màu.

- Năm lớp ở giữa có chức năng phân tích chia nhỏ ảnh đầu vào để huấn luyện. - Ba lớp cuối cùng của mạng được đào tạo sẵn được cấu hình cho 1000 lớp. Ba lớp này phải được tinh chỉnh cho vấn đề phân loại mới. Trích xuất tất cả các lớp, ngoại trừ ba lớp cuối cùng, từ mạng được đào tạo sẵn

2.3. Các bước thiết kế và ứng dụng mạng Alexnet vào mơ hình.

➢ Bước 1: Truy cập vào “Cơng cụ học sâu”. Code: deepNetworkDesigner.

➢ Bước 2: Chọn mạng Alexnet.

Hình 2.7: Chọn mạng Alexnet

➢ Bước 3: Thiết lập dữ liệu đầu vào cho chế độ huấn luyện.

Ở bước này, nhóm chúng em chia nhỏ dữ liệu ra thành những tệp riêng như: “chinh_luu_ban_ky”, “chinh_luu_toan_ky”, “chinh_luu_cau”. Bởi vì khi dùng cách

37 này, chúng ta chỉ cần tinh chỉnh đầu ra và đầu vào một mạng được đào tạo sẵn với các bộ dữ liệu nhỏ hơn nhiều so với dữ liệu đào tạo ban đầu.

 Giảm dung lượng bộ nhớ máy tính, thời gian mỗi lần thực hiện thao tác huấn luyện.

 Dễ dàng cập nhật thêm dữ liệu đầu vào cho ứng dụng.

Hình 2.8: Thiết lập dữ liệu đầu vào.

Chúng ta chọn vào ô Randomize bên phần Validation để chọn ra 30% ngẫu nhiên được lấy từ tập CSDL.

38 ➢ Bước 4: Cài đặt ngõ ra.

39

Hình 2.10: Lớp ngõ ra của mạng Alexnet.

Như vậy chúng ta có thể thấy, mạng Alexnet được thiết lập sẵn đó là: • 4096 ảnh đầu vào.

• 1000 tệp ngõ ra.

 Khơng thể huấn luyện được bởi vì khác đầu vào và ngõ ra nên chúng ta cần phải thiết lập lại các thông số này.

Cho nên chúng ta cần tạo và thiết kế lại 2 lớp này như Hình 2.11 và Hình 2.12 bên dưới để có thể huấn luyện mạng học sâu( ở đây nhóm chúng em cài đặt Outputsize = 7 theo như số tệp được đặt trong tệp chinh_lưu_ban_ky).

40

Hình 2.11: Lớp được kểt nối đầy đủ sau khi chỉnh sửa.

41 ➢ Bước 5: Thiết lập thông số huấn luyện của mạng.

Hình 2.13: Thiết lập thơng số huấn luyện.

Nhằm giúp cho việc huấn luyện tốt hơn, chính xác hơn, nhanh hơn, nhóm chúng em thiết lập thơng số huấn luyện tại bảng Training Options( Tùy chọn Đào tạo) để đào tạo như sau:

• Đặt InitialLearnRate( tỷ lệ học tập ban đầu) thành một giá trị nhỏ để làm chậm việc học trong các lớp được chuyển giao. Ở đây nhóm chúng em chọn 0,0001.

• Xác định ValidationFrequency( tần số xác thực) sao cho độ chính xác trên dữ liệu xác thực được tính tốn mỗi mảng một lần. Ở đây nhóm chúng em chọn 7 vì có 7 tệp con trong tệp chinh_luu_ban_ky.

• Chỉ định một số lượng nhỏ các mảng. Một mảng là một chu kỳ đào tạo đầy đủ trên toàn bộ tập dữ liệu đào tạo. Đối với học tập chuyển tiếp, chúng ta không cần phải đào tạo trong quá nhiều mảng. Ở đây nhóm chúng em chọn 8 mảng.

• Chỉ định kích thước lơ nhỏ, nghĩa là có bao nhiêu hình ảnh để sử dụng trong mỗi lần lặp lại. Để đảm bảo toàn bộ bộ dữ liệu được sử dụng trong mỗi thời đại, hãy đặt kích thước lơ nhỏ để chia đều số lượng mẫu đào tạo. Ở đây nhóm chúng em chọn 35 vì ở đây có 7 tệp mỗi tệp có 50 ảnh, lấy huấn luyện 70% thì cịn 245 ảnh. Sau đó chúng ta lấy 245

42

Hình 2.14: Quá trình huấn luyện chỉnh lưu bán kỳ.

43

Hình 2.16: Q trình huấn luyện chỉnh lưu tồn kỳ.

➢ Bước 6: Lưu dữ liệu đã được huấn luyện.

Tại mục Export( xuất) chúng ta có được 2 mục đó là Generate Code for Training ( Xuất code cho huấn luyện) và Export Trained Network and Results( Xuất thông tin và kết quả của chế độ huấn luyện).

44 Chúng ta có thể chọn mục “Xuất code cho huấn luyện” để kiểm tra và chỉnh sửa code cho chế độ huấn luyện trong trường hợp thay đổi các thông số đầu vào và đầu ra.

Hình 2.18: Xuất code ra file.

Đồng thời ta chọn “Xuất thông tin và kết quả của chế độ huấn luyện” để lưu kết quả đã huấn luyện lại dùng cho cơng tác nghiên cứu.

Hình 2.19: Xuất kết quả huấn luyện.

Sau khi xuất kết quả ra thì chúng ta thu được dữ liệu trong MATLAB như sau.

45 Chúng ta lưu kết quả đạt được này vào file “CL_ban_ky.mat ” để dùng hỗ trợ cho việc lập trình.

➢ Bước 7: Thiết lập giao diện để sử dụng.

Để xây dựng giao diện như hình 2.19 thì nhóm chúng em thực hiện như sau : • Logo trường và khoa ở hai góc trên cùng.

• Tên đề tài nghiên cứu ở giữa hai logo này.

• Thanh lựa chọn “Chọn mạch nhận diện” để lựa chọn các mạch nhận diện như là : mạch chỉnh lưu bán kỳ, mạch chỉnh lưu cầu, mạch chỉnh lưu toàn kỳ.

• Nút nhấn “Ảnh nhận diện” để chọn ảnh đầu vào cần nhận diện.

• Nút nhấn “Nhận diện” để nhận diện ảnh đầu vào này là loại gì, có chính xác hay khơng, có sai gì khơng. Bên cạnh đó khi chúng ta nhấn vào nút này sẽ xuất ra ảnh sơ đồ nguyên lý của mạch ngay bên dưới để nếu có sai thì chúng ta biết cách để sửa lại cho chính xác.

• Nút nhấn “Close” để đóng ứng dụng lại.

• Sử dụng WORD để tạo file .htm để tạo chú thích tên nhãn dán. Bởi vì tại nơi hiển thị dạng lỗi nếu hiển thị tên tiếng việt dễ bị lỗi, nên nhóm chúng em sử dụng chú thích để người dùng dễ hiểu hơn, chúng ta có thể click vào chọn mục “Tên nhãn dán” để xem chi tiết lỗi.

46

47

48

CHƯƠNG 3. Đánh giá.

3.1. Thử nghiệm ứng dụng trong thực tế.

Ứng dụng nhận dạng lỗi trong mạch chỉnh lưu đã được thử nghiệm thực tế với các loại mạch chỉnh lưu đã được liệt kê khác nhau được nêu ở trên. Nhóm các mạch chỉnh lưu được chọn để xây dựng bộ dữ liệu nhận dạng đều đạt được kết quả với độ chính xác khá cao.

49

3.2. Ưu điểm của đề tài.

➢ Sau khi hoàn thành đề tài nghiên cứu khoa học này, nhóm chúng em đánh giá giao diện dễ sử dụng, khơng tạo sự khó hiểu cho người dùng.

➢ Độ chính xác của mỗi q trình huấn luyện của mạng là 100% nên độ tin cậy cao. ➢ Thời gian nhận diện nhanh chóng.

3.3. Nhược điểm của đề tài.

➢ Người sử dụng quên thay đổi thanh chọn hiển thị mạch chỉnh lưu làm cho sai lệch các lỗi. Bởi vì lỗi của mạch chỉnh lưu này có thể sẽ là đúng của mạch chỉnh lưu khác.

➢ Chưa thể viết dấu tiếng Việt để hiển thị được. Nhưng có chú thích “Tên nhãn dán” nên nhược điểm này khơng ảnh hưởng nhiều đến q trình nhận diện nhiều.

C. KẾT LUẬN VÀ KIẾN NGHỊ.

Đề tài đã nghiên cứu, tìm hiểu bài tốn tự động nhận dạng, tìm kiếm lỗi sai trong mạch chỉnh lưu. Nhóm đã thực hiện phát triển, cài đặt phương án giải quyết cho bài toán dựa trên sự tìm kiếm, thống kê các hướng tiếp cận đã được cơng bố qua rất nhiều bài báo, cơng trình khoa học trên thế giới, tiếp cận được nền công nghệ máy về phương pháp lẫn cấu trúc của mạng học sâu.

Những kết quả đã đạt được trong quá trình nhận diện lỗi như sau:

- Hoàn thiện xây dựng bộ cơ sở dữ liệu ảnh phục vụ huấn luyện nhận dạng cho ba mạch chỉnh lưu thơng dụng trong phịng thực hành D302, với số lượng ảnh gốc trong mỗi mạch chỉnh lưu dao động từ 250 – 400 ảnh.

- Cài đặt và tinh chỉnh một mạng nơ-ron tích chập đã được huấn luyện trước, ứng dụng vào bài toán nhận dạng lỗi trong mạch chỉnh lưu. Đồng thời xây dựng hệ thống tự động nhận dạng lỗi trong mạch chỉnh lưu dễ sử dụng kết hợp với độ chính xác cao trên máy tính.

Thực nghiệm với bộ dữ liệu test và trong thực tế đã cho kết quả khá tốt, nguyên nhân chính là do phạm vi số lượng mạng chỉnh lưu được thu gọn lại ứng dụng cho phòng thực hành khơng được tính là nhiều nếu so sánh với số lượng mạch chỉnh lưu đang có hiện nay

50 tại Việt Nam nói riêng và cả thế giới nói chung. Hệ thống tự động nhận dạng lỗi trong mạch chỉnh lưu cịn có nhiều thiếu sót cần được cải thiện nhiều hơn về mặt chất lượng của bộ CSDL ảnh huấn luyện cũng như độ chính xác và tốc độ vận hành trong mỗi lần nhận diện. Trong tương lai, để có thể cải thiện độ chính xác của mơ hình nhận dạng, nhóm đề tài đề xuất cài đặt thử nghiệm và đánh giá các loại mơ hình mạng Học sâu đã được huấn luyện trước, đặc biệt là các mạng đã đạt được kết quả cao trong cuộc thi Nhận dạng ảnh quy mô lớn do ImageNet tổ chức thường niên như: ZF Net (2013), VGG Net (2014), GoogleNet và Microsoft ResNet (2015)… Và đặc biệt nếu có thể thì nên phát triển theo hướng code trên Python thay vì Matlab để giảm nhẹ về mặt dung lượng cần có để sử dụng chương tình này.

51

Tài liệu tham khảo.

1. www.mathworks.com 2. www.wikipedia.org

3. Giáo trình Điện tử cơ bản – Trần Thu Hà (Chủ biên).

4. Giáo trình Thực tập Điện tử - Trương Thị Bích Nga (Chủ biên). 5. Văn kiện Nghị quyết Đại hội Đảng toàn quốc lần thứ XIII.

Chương trình máy tính.

➢ Code xử lý nút “Ảnh đầu vào”. global I;

% Tao khoang trong

set(handles.edit1,'string',''); % Lay anh dau vao

[Filename,Pathname]=uigetfile({'*.*';'*.jpg';'*.png'},'File

Select');

% Lay duong dan file image

fullfile=strcat(Pathname,Filename);

%hien thi image len axes + dieu chinh kich thuoc dau vao a=imread(fullfile); I = imresize(a, [227 227]); axes(handles.axes1); imshow(I); ➢ Code xử lý nút “Nhận diện”. global I; luachon = get(handles.luachon,'value');

52 switch luachon

case 2 % CL ban ky % Ket qua nhan duoc

net = load('CL_ban_ky.mat');

[YPred,probs] = classify(net.trainedNetwork_1,I); imshow(I)

% Xuat ra man hinh

set(handles.edit1,'string',YPred); axes(handles.axes2)

imshow('C:\matlab_NCKH\CL_ban_ky.png')

set(handles.edit2,'string','So do nguyen ly mach'); case 3 % CL cau

% Ket qua nhan duoc

net = load('CL_cau.mat');

[YPred,probs] = classify(net.trainedNetwork_2,I); imshow(I)

% Xuat ra man hinh

set(handles.edit1,'string',YPred); axes(handles.axes2)

imshow('C:\matlab_NCKH\CL_cau.png')

set(handles.edit2,'string','So do nguyen ly mach'); case 4 % CL toan ky

53 net = load('CL_toan_ky.mat');

[YPred,probs] = classify(net.trainedNetwork_3,I); imshow(I)

% Xuat ra man hinh

set(handles.edit1,'string',YPred); axes(handles.axes2)

imshow('C:\matlab_NCKH\CL_toan_ky.png')

set(handles.edit2,'string','So do nguyen ly mach'); end

➢ Code xử lý nút “Close”.

answer = questdlg('Do you want to close?', ... 'Close', ... 'Yes','No','No'); switch answer case 'Yes' close; case 'No' end

➢ Chèn “Tên nhãn dán” vào giao diện. web tên.htm

Một phần của tài liệu Thiết kế và thi công phần mềm nhận diện lỗi trong chỉnh lưu hỗ trợ công tác giảng dạy và hướng dẫn thực hành (Trang 34)

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

(57 trang)