Thiết kế và thi công hệ thống phân loại trái cây dùng mạng neural

74 28 0
Thiết kế và thi công hệ thống phân loại trái cây dùng mạng neural

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

BỘ GIÁO DỤC & ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH - ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG ĐỀ TÀI: THIẾT KẾ VÀ THI CÔNG HỆ THỐNG PHÂN LOẠI TRÁI CÂY DÙNG MẠNG NEURAL GVHD: PGS.TS Nguyễn Thanh Hải SVTH1: Nguyễn Đức Hòa MSSV: 14141116 SVTH2: Nguyễn Ngọc Phát MSSV: 14141226 Tp Hồ Chí Minh – 8/2020 BỘ GIÁO DỤC & ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH - ĐỒ ÁN TỐT NGHIỆP NGÀNH KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG ĐỀ TÀI: THIẾT KẾ VÀ THI CÔNG HỆ THỐNG PHÂN LOẠI TRÁI CÂY DÙNG MẠNG NEURAL GVHD: PGS.TS Nguyễn Thanh Hải SVTH1: Nguyễn Đức Hòa MSSV: 14141116 SVTH2: Nguyễn Ngọc Phát MSSV: 14141226 Tp Hồ Chí Minh – 8/2020 TRƯỜNG ĐH SPKT TP HỒ CHÍ MINH KHOA ĐIỆN-ĐIỆN TỬ CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT NAM ĐỘC LẬP - TỰ DO - HẠNH PHÚC BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH o0o -Tp HCM, ngày tháng năm 2020 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Chuyên ngành: Hệ đào tạo: Nguyễn Đức Hòa MSSV: 14141116 Nguyễn Ngọc Phát MSSV: 14141226 Kỹ thuật Điện tử - Truyền thông Mã ngành: 14141 Đại học quy Mã hệ: Khóa: 2014 Lớp: 141413 I TÊN ĐỀ TÀI: THIẾT KẾ VÀ THI CÔNG HỆ THỐNG PHÂN LOẠI TRÁI CÂY DÙNG MẠNG NEURAL II NHIỆM VỤ Các số liệu ban đầu: - Sử dụng Arduino Uno R3 để thực điều khiển làm xử lý trung tâm - Sử dụng PC lập trình, xử lý ảnh, làm giao diện điều khiển - Sử dụng Camera Webcam Logitech C270p để thu nhận ảnh - Huấn luyện phân loại loại trái - Mơ hình dây chuyền phân loại trái Nội dung thực hiện: - Đọc tài liệu, thu thập thông tin làm sở - Thu thập liệu trái - Xử lý ảnh - Nhận dạng mạng nơ ron, mạng nhân tạo mạng tích chập - Thiết kế thi cơng mơ hình dây chuyền - Chạy thử, kiểm tra, hiệu chỉnh - Hoàn thiện mơ hình gồm máy tính, Arduino, băng chuyền, camera, ngoại vi - Đánh giá chất lượng - Viết báo cáo III NGÀY GIAO NHIỆM VỤ: 13/03/2020 IV NGÀY HOÀN THÀNH NHIỆM VỤ: 03/08/2020 V HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: PGS.TS Nguyễn Thanh Hải CÁN BỘ HƯỚNG DẪN BM ĐIỆN TỬ CÔNG NGHIỆP – Y SINH ii TRƯỜNG ĐH SPKT TP HỒ CHÍ MINH CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT NAM KHOA ĐIỆN-ĐIỆN TỬ ĐỘC LẬP - TỰ DO - HẠNH PHÚC BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH o0o -Tp HCM, ngày 04 tháng 08 năm 2020 LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên 1: Nguyễn Đức Hòa Lớp: 14141DT3B MSSV: 14141116 Họ tên sinh viên 2: Nguyễn Ngọc Phát Lớp: 14141DT2A MSSV: 14141226 Tên đề tài: Thiết kế thi công hệ thống phân loại trái dùng mạng neural Tuần/ngày Tuần (13/3 – 18/3) Tuần (18/3 – 25/3) Tuần (25/3 – 1/4) Tuần (1/4 – 8/4) Tuần (8/4 – 15/4) Nội dung Xác nhận GVHD Chọn đề tài, viết đề cương chi tiết ĐATN Nghiên cứu tài liệu liên quan làm sở Thu thập tập ảnh liệu Nghiên cứu xử lý ảnh, tiền xử lý ảnh Cài phần mềm Matlab, nghiên cứu xử lý ảnh Matlab Tuần (15/4 – 22/4) Tuần (22/4 – 29/4) Tuần (29/4 – 6/5) Tiến hành nhận dạng xử lý ảnh với hình ảnh có sẵn Tuần (6/5 – 13/5) Tuần 10 (13/5 – 20/5) Xây dựng mạng nơ ron riêng để nhận dạng Tìm hiểu mạng nơ ron chạy thử đề tài cũ mạng nơ ron Thiết kế mơ hình xây chuyền báo cáo tiến độ iii Tuần 11 (20/5 – 27/5) Tuần 12 (27/5 – 3/6) Hồn thiện mơ hình, thiết kế giao diện điều khiển Tuần 13 (3/6 – 10/6) Viết chương trình lấy mẫu để thu thập liệu nhanh Tuần 14 (10/6 – 17/6) Tuần 15 (17/6 – 24/6) Tuần 16 (24/6 – 1/7) Tuần 17 (1/7 – 8/7) Tuần 18 (8/7 – 15/7) Tuần 19 (15/7 – 22/7) Tuần 20 (22/7 – 29/7) Tuần 21 (29/7 – 3/8) Viết chương trình điều khiển, thu thập thêm liệu tập ảnh đầu vào Chạy chương trình mơ hình hệ thống thực tế Viết báo cáo chương 1,2 Nghiên cứu thêm mạng nơ ron tích chập, áp dụng vào mơ hình Viết báo cáo chương 3, Viết báo cáo chương 5, Hồn thiện mạng nơ ron tích chập chạy thực tế mơ hình Hiệu chỉnh báo cáo Hồn thiện báo cáo GV HƯỚNG DẪN (Ký ghi rõ họ tên) iv LỜI CAM ĐOAN Đề tài tự thực dựa vào số tài liệu trước khơng chép từ tài liệu hay cơng trình có trước Người thực đề tài Nguyễn Đức Hòa Nguyễn Ngọc Phát v LỜI CẢM ƠN Em xin gởi lời cảm ơn sâu sắc đến Thầy Nguyễn Thanh Hải – giảng viên môn Điện tử công nghiệp – y sinh tận tình hướng dẫn cho chúng em để thực đề tài tốt nghiệp Em chân thành cảm ơn Thầy Ngô Bá Việt - Giảng viên môn Điện tử cơng nghiệp – y sinh góp ý chia sẻ nhiều kinh nghiệm quý báu cho em cải thiện đề tài tốt Em xin gởi lời chân thành cảm ơn thầy cô Khoa Điện-Điện Tử truyền đạt kiến thức bổ ích cho chúng em để làm sở cho việc thực đề tài tốt nghiệp Em xin gửi lời đồng cảm ơn với bạn bè lớp giúp đỡ, có góp ý bổ ích cho việc thực đề tài Xin chân thành cảm ơn! Người thực đề tài Nguyễn Đức Hòa Nguyễn Ngọc Phát vi MỤC LỤC Trang bìa i Nhiệm vụ đồ án ii Lịch trình iii Cam đoan v Lời cảm ơn vi Mục lục vii Liệt kê hình ảnh ix Liệt kê bảng xi Tóm tắt xii CHƯƠNG 1: TỔNG QUAN 1.1 ĐẶT VẤN ĐỀ 1.2 MỤC TIÊU 1.3 NỘI DUNG NGHIÊN CỨU 1.4 GIỚI HẠN 1.5 BỐ CỤC CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 XỬ LÝ ẢNH CHO VIỆC PHÂN LOẠI 2.1.1 Màu sắc 2.1.2 Kích thước 2.2 DÂY CHUYỀN PHÂN LOẠN TRÁI CÂY DÙNG VI ĐIỀU KHIỂN 2.3 NHẬN DẠNG VÀ PHÂN LOẠI 2.3.1 Mạng Nơron nhân tạo 2.3.3 Mạng Nơron tích chập CHƯƠNG 3: TÍNH TỐN VÀ THIẾT KẾ 3.1 GIỚI THIỆU 3.2 TÍNH TỐN VÀ THIẾT KẾ HỆ THỐNG 3.2.1 Thiết kế dây chuyền hệ thống 3.2.2 Sơ đồ kết nối hệ thống 14 3.3 THIẾT KẾ PHẦN MỀM, TÍNH TỐN CHƯƠNG TRÌNH 15 3.3.1 Thiết kế giao diện đồ họa 15 vii 3.3.2 Tính tốn chương trình điều khiển 16 CHƯƠNG 4: THI CÔNG HỆ THỐNG DÂY CHUYỀN PHÂN LOẠI TRÁI CÂY 21 4.1 THI CÔNG HỆ THỐNG 21 4.1.1 Thiết kế giao diện 21 4.1.2 Thi cơng mơ hình 22 4.2 CÁCH THU NHẬN ẢNH ĐẦU VÀO 23 4.3 CHƯƠNG TRÌNH CHÍNH CỦA HỆ THỐNG 27 4.3.1 Chương trình huấn luyện ảnh đầu vào dùng mạng ANN 29 4.3.2 Chương trình nhận diện mạng ANN 30 4.3.3 Chương trình huấn luyện nhận dạng dùng mạng CNN 31 4.4 TÀI LIỆU HƯỚNG DẪN THAO TÁC 33 CHƯƠNG 5: KẾT QUẢ, NHẬN XÉT VÀ ĐÁNH GIÁ HỆ THỐNG 34 5.1 KẾT QUẢ 34 5.1.1 Lý thuyết 34 5.1.2 Tập liệu 34 5.1.3 Kết mơ hình phần cứng 35 5.1.4 Kết nhận dạng 35 5.2 NHẬN XÉT VÀ ĐÁNH GIÁ 40 CHƯƠNG 6: KẾT LUẬN, HƯỚNG PHÁT TRIỂN 41 6.1 KẾT LUẬN 41 6.2 HƯỚNG PHÁT TRIỂN 41 TÀI LIỆU THAM KHẢO 42 PHỤ LỤC 43 viii LIỆT KÊ HÌNH ẢNH Hình Trang Hình 2.1: Mơ hình hệ thống phân loại bút chì Hình 2.2: Mơ hình hệ thống kiểm tra lỗi vỉ thuốc Hình 2.3: Sơ đồ mạng nơ ron nhân tạo Hình 2.4: Mơ hình mạng nơ ron tích chập Hình 3.1: Sơ đồ khối dây chuyền phân loại trái cây………………………………9 Hình 3.2: Board Arduino Uno R3 10 Hình 3.3: Module Relay kênh 11 Hình 3.4: Mơ hình băng tải 11 Hình 3.5: Động servo MG996R 12 Hình 3.6: Camera Logitech C270p 13 Hình 3.7: Cáp nối USB Tybe B 13 Hình 3.8: Apdater 9V 14 Hình 3.9: Sơ đồ kết nối hệ thống dây chuyền phân loại trái 15 Hình 3.10: Giao diện đồ họa hệ thống 16 Hình 3.11: Sơ đồ khối bước trích xuất đặc trưng dùng xử lý ảnh 16 Hình 3.12: Mơ hình mạng ANN phân loại trái 19 Hình 3.13: Sơ đồ mạng CNN phân loại trái 19 Hình 4.1: Giao diện hồn thiện chương trình 21 Hình 4.2: Vị trí đặt camera nhìn từ ngồi vào đèn led chiếu sáng cho buồng chụp…22 Hình 4.3: Camera nhìn từ phía buồng chụp 23 Hình 4.4: Vị trí đặt động Servo 23 Hình 4.5: Vị trí đặt động DC băng tải Arduino 24 Hình 4.6: Mơ hình nhìn từ bên phải 25 Hình 4.7: Vị trí cho trái vào đầu băng chuyền 25 Hình 4.8: Vị trí trái 25 Hình 4.9: Lưu đồ chương trình chụp ảnh mẫu 26 Hình 4.10: Ảnh chụp hình chương trình chụp ảnh lấy liệu 27 Hình 4.11: Lưu đồ hệ thống 28 Hình 4.12: Lưu đồ vi điều khiển………………………………………………… 29 Hình 4.13: Lưu đồ chương trình huấn luyện mạng ANN 30 Hình 4.14: Lưu đồ nhận dạng trái dùng mạng ANN 31 Hình 4.15: Sơ đồ bước huấn luyện mạng CNN 32 Hình 4.16: Giao diện chương trình 33 ix Thiết kế thi công hệ thống phân loại trái dùng mạng Neural LOGO= imread(LOGO); axes(handles.LOGO); imshow(LOGO); %%%%%%%%%%%%% TOMATO = 'tomato.jpg'; TOMATO = imread(TOMATO); axes(handles.TOMATO); imshow(TOMATO); %%%%%%%%%%%%% APPLE = 'apple.jpg'; APPLE= imread(APPLE); axes(handles.APPLE); imshow(APPLE); %%%%%%%%%%%%%% BANANA = 'banana.jpg' BANANA = imread(BANANA); axes(handles.BANANA); imshow(BANANA); %%%%%%%%%%%%%%% cam = webcam('Logitech HD Webcam C270'); cam.BacklightCompensation=1; cam.Brightness=100; hinh=snapshot(cam); axes(handles.CAMERA); imshow(hinh); % UIWAIT makes guinhandien wait for user response (see UIRESUME) % uiwait(handles.figure1); % - Outputs from this function are returned to the command line function varargout = guinhandien_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 47 Thiết kế thi công hệ thống phân loại trái dùng mạng Neural % eventdata MATLAB % handles reserved - to be defined in a future version of structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; % - Executes on button press in pushbutton1 function pushbutton2_Callback(hObject, eventdata, handles) % hObject handle to pushbutton4 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) huanluyen; function pushbutton4_Callback(hObject, eventdata, handles) % hObject handle to pushbutton4 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % clear ar; global hoa; hoa = '1'; % set(handles.pushbutton4,'userdata',0); %%stop % writeDigitalPin(ar, 'D11', 0); function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % global dem % logical(dem) = 1; % if get(handles.pushbutton1,'userdata')== %% nhan nut stop tren chuong trinh % x =~ logical(dem); % else % x = logical(dem); % end % if x == % test1; % else % dung; % end % global kq; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 48 Thiết kế thi công hệ thống phân loại trái dùng mạng Neural % % % % global DEM; global kq; DEM=0; % set(handles.DEMTO,'string',' '); % % % % test1; global ar; global g1; global g2; % global kq; global demc; global demt; global demch; global dung; dung = 0; demch=0; demt=0; demc=0; global hoa; hoa = '0'; clear ar; ar=arduino('COM7', 'uno'); writeDigitalPin(ar, 'D3', 0); writeDigitalPin(ar, 'D4', 0); writeDigitalPin(ar, 'D8', 0); % % % if dung ==1 writeDigitalPin(ar, 'D11', 0); elseif dung == writeDigitalPin(ar, 'D11', 1); % end for k=1:1000 %khai bao arduino clear cam; cam = webcam('Logitech HD Webcam C270'); cam.BacklightCompensation=1; cam.Brightness=100; if hoa == '1' %% nhan nut stop tren chuong trin writeDigitalPin(ar,'D11',0); break; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 49 Thiết kế thi công hệ thống phân loại trái dùng mạng Neural else for l=1:1000000000 hinh=snapshot(cam); imwrite(hinh,'C:\Users\ACER\Pictures\11.jpg'); anhthu=imread('C:\Users\ACER\Pictures\11.jpg'); imshow(anhthu); a= imresize(anhthu, [75 100]); d=rgb2gray(a); c= zeros(75,100); mtb = zeros(75,100); for u=1:75 for y=1:100 if (u < 10) || (u > 60) d(u,:) = 0; elseif (y < 15) ||(y>85) d(:,y) = 0; end end end kt=7500; for i=1:75 for j=1:100 if (d(i,j) < 64) c(i,j) = 0; kt = kt - 1; mtb(i,j) = 0; else c(i,j) = 1; mtb(i,j) = d(i,j); end end end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% load('mangnoron'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% if (mtb(36,50) ~= 0) ||(mtb(18,50) ~= 0)||(mtb(54,50) ~= 0) ||(mtb(9,50) ~= 0) ||(mtb(63,50) ~= 0) % if mtb(:,64) ~= BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 50 Thiết kế thi công hệ thống phân loại trái dùng mạng Neural tong= sum(sum(mtb)); tb = tong/kt; cv21 = [tb;kt]; %so sanh voi mang no ron out=sim(net,cv21); if (out(1,1)> out(3,1) && out(1,1)> out(5,1)) text(10,90,' ca chua ','FontSize',14,'color',[0 0]); kq='1'; demc=demc+1; set(handles.DEMTO,'string',demc); elseif (out(3,1)> out(5,1) && out(3,1)> out(1,1)) text(10,90,' tao ','FontSize',14,'color',[0 0]); kq='2'; demt=demt+1; set(handles.DEMAP,'string',demt); else text(10,90,' chuoi ','FontSize',14,'color',[0 0]); kq='3'; demch=demch+1; set(handles.DEMBA,'string',demch); % else % text(10,90,' khong co du lieu','FontSize',14,'color',[0 0]); % kq='4'; % demt=demt+1; % set(handles.DEMAP,'string',demt); end g1 = servo(ar,'D10'); writePosition(g1, 1); g2 = servo(ar,'D9'); writePosition(g2, 0); %dieu khien servo if kq == '1' writePosition(g1, 0.4); writeDigitalPin(ar, 'D3', 1); pause(5); writePosition(g1, 1); writeDigitalPin(ar, 'D3', 0); elseif kq == '2' writePosition(g2, 0.6); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 51 Thiết kế thi công hệ thống phân loại trái dùng mạng Neural writeDigitalPin(ar, 'D4', 1); pause(5); writePosition(g2, 0); writeDigitalPin(ar, 'D4', 0); else writeDigitalPin(ar, 'D8', 1); pause(5); writeDigitalPin(ar, 'D8', 0); end clear g1; clear g2; clear kq; break; end if hoa == '1' set(handles.DEMTO,'string','0'); set(handles.DEMAP,'string','0'); set(handles.DEMBA,'string','0'); break; end end end end function TO_Callback(hObject, eventdata, handles) % hObject handle to TO (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hint: get(hObject,'Value') returns toggle state of TO % - Executes on button press in checkbox2 Code chương huấn luyện dùng mạng CNN % • CLEARING COMMAND WINDOW, WORKSPACE AND CLOSE ALL FIGURES •••••••••••••••••••••••••••••••••••••••••••••• clc; clear all; % • PROMPT USER FOR IMAGE INFORMATION BEFORE STARTING MAIN CODE ••••••••••••••••••••••••••••••••••••••••••• BỘ MƠN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 52 Thiết kế thi công hệ thống phân loại trái dùng mạng Neural input = questdlg('How you want to locate your image folder?', |input char| 'Options to Locate Image Folder', 'Insert a link','Browse for it','Browse for it'); switch input case {'Insert a link'} prompt = {'Link to Image Folder:'}; dlgtitle = 'Input'; dims = [1 35]; PtMIF = {'D:\PathToFolder\FolderName'}; %Path to Main Image Folder % answer = inputdlg(prompt,dlgtitle,dims,PtMIF); case {'Browse for it'} PtMIF = uigetdir('D:\'); %Path to Main Image Folder case quit cancel; end input = questdlg('Are you using COLOUR or GRAYSCALE images?', |input char| 'Define Images Channel Number or 3', 'Colour','Grayscale','Grayscale'); switch input case {'Grayscale'} IIL.NoC = 1; %Number of Channels (NoC) of Image Input Layer (IIL) for Grayscale Image case {'Colour'} IIL.NoC = 3; %Number of Channels (NoC) of Image Input Layer (IIL) for Colour Image end prompt = {'The desired width of all sample images?' dlgtitle dims default Classify cell IIL.ImS(1) Layer (IIL) 'The desired height of all sample images?'}; = 'Input'; = [1 35]; = {'50','50'}; %{Default} Number of Item to = inputdlg(prompt,dlgtitle,dims,default); = str2double(cell{1}); %Image Width of Image Input BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 53 Thiết kế thi công hệ thống phân loại trái dùng mạng Neural IIL.ImS(2) = str2double(cell{2}); %Image Length of Image Input Layer (IIL) prompt = {'Number of image categories to classify?' dlgtitle dims default Classify cell NoIC (3) NoIS (30) ToIFE samples?', 'Number of image samples per category?'}; = 'Input'; = [1 35]; = {'3','400'}; %{De3fault} Number of Item to = inputdlg(prompt,dlgtitle,dims,default); = str2double(cell{1}); %Number of Image Categories = str2double(cell{2}); %Number of Image Samples = questdlg('Type of file extension of input image |input char| 'Options to Locate Image Folder', 'jpeg','jpg','png','jpg'); % • COUNT NUMBER OF JPG IMAGES IN SUBFOLDERS •••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• %VAR%VALUE %DESCRIPTION %UNIT %TYPE1 %TYPE2 imds = imageDatastore(PtMIF,'IncludeSubfolders',true,'LabelSource','fol dernames'); %gan thu muc PtMIF cho imds S = dir(fullfile(PtMIF,'*')); % NoSF = setdiff({S([S.isdir]).name},{'.',' '}); % list of subfolders of D for i = 1:numel(NoSF) T(i,:) = dir(fullfile(PtMIF,NoSF{i},'*.jpg')); % Improve by specifying the file extension end NoITS = numel(T); %Number of Images for Training numTrainingFiles = 0.7; [imdsTrainx,imdsTestx] = splitEachLabel(imds,numTrainingFiles,'randomize'); %chia ti le giua file test va file train 7:3 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 54 Thiết kế thi công hệ thống phân loại trái dùng mạng Neural %% Resize Images inputSize=[IIL.ImS(1) IIL.ImS(2) 3]; %kich thuoc ngo vao la cac so da nhap o tren va la anh rgb imdsTrain=augmentedImageDatastore(inputSize, imdsTrainx); imdsTest=augmentedImageDatastore(inputSize, imdsTestx); % • DEFINE THE CONVOLUTIONAL NEURAL NETWORK ARCHITECTURE ••••••••••••••••••••••••••••••••••••••••••••••••• %VAR%VALUE %DESCRIPTION %UNIT %TYPE1 %TYPE2 inputSize=[IIL.ImS(1) IIL.ImS(2) 3]; layers = [ imageInputLayer([IIL.ImS(1) IIL.ImS(2) IIL.NoC]) %An image input layer inputs 2-D images to a network and applies data normalization convolution2dLayer(3,32,'Padding','same') reluLayer maxPooling2dLayer(2,'Stride',2) %%layer thu nhat convolution2dLayer(3,64,'Padding','same') reluLayer maxPooling2dLayer(2,'Stride',2) %%layer thu convolution2dLayer(3,128,'Padding','same') reluLayer maxPooling2dLayer(2,'Stride',2) %%layer thu fullyConnectedLayer(numel(NoSF)) softmaxLayer classificationLayer]; options = trainingOptions('sgdm', 'MaxEpochs',15, 'InitialLearnRate',1e-4, 'ValidationData',imdsTest, 'ValidationFrequency',10, 'Verbose',false, 'Plots','training-progress'); %% net = trainNetwork(imdsTrain,layers,options); %huan luyen mang noron save mangtichchap net; Code chương trình nhận diện dùng mạng CNN function varargout = Mangtichchap(varargin) % MANGTICHCHAP MATLAB code for Mangtichchap.fig BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 55 Thiết kế thi công hệ thống phân loại trái dùng mạng Neural % MANGTICHCHAP, by itself, creates a new MANGTICHCHAP or raises the existing % singleton* % % H = MANGTICHCHAP returns the handle to a new MANGTICHCHAP or the handle to % the existing singleton* % % MANGTICHCHAP('CALLBACK',hObject,eventData,handles, ) calls the local % function named CALLBACK in MANGTICHCHAP.M with the given input arguments % % MANGTICHCHAP('Property','Value', ) creates a new MANGTICHCHAP or raises the % existing singleton* Starting from the left, property value pairs are % applied to the GUI before Mangtichchap_OpeningFcn gets called An % unrecognized property name or invalid value makes property application % stop All inputs are passed to Mangtichchap_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 Mangtichchap % Last Modified by GUIDE v2.5 28-Jul-2020 18:09:14 % Begin initialization code - DO NOT gui_Singleton = 1; gui_State = struct('gui_Name', 'gui_Singleton', 'gui_OpeningFcn', 'gui_OutputFcn', 'gui_LayoutFcn', BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH EDIT mfilename, gui_Singleton, @Mangtichchap_OpeningFcn, @Mangtichchap_OutputFcn, [] , 56 Thiết kế thi công hệ thống phân loại trái dùng mạng Neural '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 Mangtichchap is made visible function Mangtichchap_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 Mangtichchap (see VARARGIN) % Choose default command line output for Mangtichchap handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes Mangtichchap wait for user response (see UIRESUME) % uiwait(handles.figure1); LOGO= 'logo.jpg'; LOGO= imread(LOGO); axes(handles.LOGO); imshow(LOGO); %%%%%%%%%%%%% TOMATO = 'tomato.jpg'; TOMATO = imread(TOMATO); axes(handles.TOMATO); imshow(TOMATO); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 57 Thiết kế thi công hệ thống phân loại trái dùng mạng Neural %%%%%%%%%%%%% APPLE = 'apple.jpg'; APPLE= imread(APPLE); axes(handles.APPLE); imshow(APPLE); %%%%%%%%%%%%%% BANANA = 'banana.jpg'; BANANA = imread(BANANA); axes(handles.BANANA); imshow(BANANA); %%%%%%%%%%%%%%% cam = webcam('Logitech HD Webcam C270'); cam.BacklightCompensation=1; cam.Brightness=100; hinh=snapshot(cam); axes(handles.CAMERA); imshow(hinh); % - Outputs from this function are returned to the command line function varargout = Mangtichchap_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; % - Executes on button press in pushbutton9 function pushbutton9_Callback(hObject, eventdata, handles) % hObject handle to pushbutton9 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global hoa; hoa = '1'; % - Executes on button press in pushbutton8 function pushbutton8_Callback(hObject, eventdata, handles) % hObject handle to pushbutton8 (see GCBO) BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 58 Thiết kế thi công hệ thống phân loại trái dùng mạng Neural % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) training; % - Executes on button press in pushbutton7 function pushbutton7_Callback(hObject, eventdata, handles) % hObject handle to pushbutton7 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global kq; global demc; global demt; global demch; global dung; dung = 0; demch=0; demt=0; demc=0; global hoa; hoa = '0'; clear ar; ar=arduino('COM7', 'uno'); writeDigitalPin(ar, 'D3', 0); writeDigitalPin(ar, 'D4', 0); writeDigitalPin(ar, 'D8', 0); writeDigitalPin(ar, 'D11', 1); for k=1:1000000 %khai bao arduino clear cam; cam = webcam('Logitech HD Webcam C270'); cam.BacklightCompensation=1; cam.Brightness=100; if hoa == '1' writeDigitalPin(ar,'D11',0); break; else for l=1:1000000000 hinh=snapshot(cam); imwrite(hinh,'C:\Users\ACER\Pictures\11.jpg'); anhthu=imread('C:\Users\ACER\Pictures\11.jpg'); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 59 Thiết kế thi công hệ thống phân loại trái dùng mạng Neural imshow(anhthu); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% load('mangtichchap'); b = imread('C:\Users\ACER\Pictures\11.jpg'); ModImg = imresize(b,[50 50]); %Resize image to IIL imwrite(ModImg,'C:\Users\ACER\Pictures\12.jpg'); a = rgb2gray(ModImg); if a(25,25) > 64 imwrite(ModImg,'C:\Users\ACER\Pictures\12.jpg'); imdsTestx = imread('C:\Users\ACER\Pictures\12.jpg'); %% Nhan dien trai cay YPred = classify(net,imdsTestx); YPred = string(YPred); clc; if YPred == "s1" text(10,90,' ca chua ','FontSize',14,'color',[0 0]); kq='1'; demc=demc+1; set(handles.DEMTO,'string',demc); elseif YPred == "s2" text(10,90,' tao ','FontSize',14,'color',[0 0]); kq='2'; demt=demt+1; set(handles.DEMAP,'string',demt); elseif YPred == "s3" text(10,90,' chuoi ','FontSize',14,'color',[0 0]); kq='3'; demch=demch+1; set(handles.DEMBA,'string',demch); else text(10,90,' khong co du lieu ','FontSize',14,'color',[0 0]); end % Dieu khien servo g1 = servo(ar,'D10'); writePosition(g1, 1); g2 = servo(ar,'D9'); writePosition(g2, 0); %dieu khien servo if kq == '1' writePosition(g1, 0.4); writeDigitalPin(ar, 'D3', 1); pause(5); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 60 Thiết kế thi công hệ thống phân loại trái dùng mạng Neural writePosition(g1, 1); writeDigitalPin(ar, 'D3', elseif kq == '2' writePosition(g2, 0.6); writeDigitalPin(ar, 'D4', pause(5); writePosition(g2, 0); writeDigitalPin(ar, 'D4', else writeDigitalPin(ar, 'D8', pause(5); writeDigitalPin(ar, 'D8', end 0); 1); 0); 1); 0); clear g1; clear g2; clear kq; break; end if hoa == '1' set(handles.DEMTO,'string','0'); set(handles.DEMAP,'string','0'); set(handles.DEMBA,'string','0'); break; end end end end BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 61 ... trình thi cơng hệ thống Với để tài ? ?Thi? ??t kế thi công hệ thống phân loại trái dùng mạng Neural? ?? bao gồm: giao diện điều khiển mơ hình hệ thống Đề tài phân loại loại trái khác đếm số lượng trái loại. .. điều thi? ??t bị cảm biến, thuật toán hỗ trợ đời Trong số tốn ? ?phân loại trái cây? ?? đề tài đáng ta tìm hiểu Để tài ? ?Thi? ??t kế và thi công hệ thống phân loại trái dùng mạng Neural ” với mục tiêu phân loại. .. nhận mạng theo số lần lặp: 10 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 20 Thi? ??t kế thi công hệ thống phân loại trái dùng mạng Neural CHƯƠNG 4: THI CÔNG HỆ THỐNG DÂY CHUYỀN PHÂN LOẠI TRÁI CÂY Đề

Ngày đăng: 26/05/2021, 10:41

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan