Thiết kế hệ thống giám sát và cảnh báo bệnh phấn trắng trên cây dưa chuột bằng trí tuệ nhân tạo

115 0 0
Thiết kế hệ thống giám sát và cảnh báo bệnh phấn trắng trên cây dưa chuột bằng trí tuệ nhân tạo

Đ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

HỌC VIỆN NÔNG NGHIỆP VIỆT NAM KHOA CƠ ĐIỆN  ĐỒ ÁN TỐT NGHIỆP ĐỀ TÀI: THIẾT KẾ HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO BỆNH PHẤN TRẮNG TRÊN CÂY DƯA CHUỘT BẰNG TRÍ TUỆ NHÂN TẠO Giảng viên hướng dẫn : TS NGÔ TRÍ DƯƠNG Sinh viên thưc : PHẠM TRUNG DUẨN Msv : 605521 Lớp : K60 – TDHB Hà Nội - 2021 LỜI CAM ĐOAN Tôi xin cam đoan cơng trình nghiên cứu riêng tơi, kết nghiên cứu trình bày đồ án trung thực, khách quan chưa dùng để bảo vệ cho đồ án môn học Tôi xin cam đoan giúp đỡ cho việc thực đồ án cám ơn, thông tin trích dẫn đồ án rõ nguồn gốc Hà Nội, ngày tháng năm 2021 Tác giả đồ án Phạm Trung Duẩn i LỜI CẢM ƠN Để hồn thành tốt khóa luận tốt nghiệp trước tiên cho phép em xin gửi lời biết ơn sâu sắc đến Thầy giáo TS NGƠ TRÍ DƯƠNG ThS NGÔ QUANG ƯỚC, em cảm ơn thầy tận tâm, nhiệt tình khơng quản ngại khó khăn, vất vả để theo sát hướng dẫn em suốt q trình thực tập khóa luận tốt nghiệp vừa qua Nhờ tâm huyết sinh viên Thầy mà em biết áp dụng thành thạo kiến thức học vào đề tài tốt nghiệp để chuẩn bị cho ngành nghề công việc sau trường Đồng thời em gửi lời cảm ơn trân thành đến tồn thể q thầy Trường Học Viện Nơng nghiệp Việt Nam nói chung, thầy cô Khoa Cơ – Điện mơn: Tự Động Hóa nói riêng bỏ cơng sức truyền đạt lại kiến thức cho chúng em năm theo học trường Mặc dù có nhiều cố gắng, song chắn không tránh khỏi thiếu sót định Rất mong đóng góp ý kiến Hội đồng chấm đồ án tốt nghiệp, đọc quan tâm đến đề tài đồ án Cuối chúng em chúc Thầy giáo TS NGƠ TRÍ DƯƠNG Và ThS NGƠ QUANG ƯỚC q thầy Học Viện mạnh khỏe để giảng dạy công tác tốt Em xin chân thành cảm ơn! Hà Nội, tháng Sinh viên ii năm 2021 MỤC LỤC LỜI CAM ĐOAN i LỜI CẢM ƠN ii MỤC LỤC iii DANH MỤC BẢNG v DANH MỤC HÌNH .vi CHƯƠNG I: TỔNG QUAN VỀ TÀI LIỆU 1.1 Tổng quan xử lý ảnh 1.2 Những vấn đề xử lý ảnh 1.3 Tổng quan trí tuệ nhân tạo 1.3.1 Giới thiệu trí tuệ nhân tạo 1.3.2 Tìm hiểu Máy học ( Machine Learning ) 1.3.3 Tìm hiểu Học Sâu (Deep Learning) 11 1.3.4 Mối quan hệ AI, Machine Learing DeepLearning 13 1.4 Ứng dụng công nghệ trí tuệ nhân tạo đời sống 13 1.5 u cầu thiết kế mơ hình 24 CHƯƠNG II: Đối tượng phương pháp nghiên cứu 26 2.1 Đối tượng nghiên cứu 26 2.1.1 Tổng quan dưa chuột 26 2.1.2 Kĩ thuật xử lý ảnh 46 2.2 Nội dung nghiên cứu 68 2.3 Phương pháp nghiên cứu 68 CHƯƠNG III: KẾT QUẢ VÀ THẢO LUẬN 70 3.1 Sơ đồ tổng quát 70 3.1.1 Sơ đồ khối hệ thống 70 3.1.2 Sơ đồ cấu trúc hoạt động 70 3.1.3 Sơ đồ khối trình train ảnh 71 iii 3.2 Thiết kế phần cứng 72 3.2.1 Robot 72 3.2.2 Lựa chọn thiết bị 74 3.3 Lưu đồ thuật toán 81 3.4 Bộ liệu 82 3.4.1 Chuẩn bị liệu 82 3.4.2 Train YOLO V4 Colaboratory 83 3.5 Chạy thử robot gửi liệu 87 3.6 Kết thảo luận 90 3.6.1 Kết 90 3.6.2 Thảo luận 90 3.7 Hoạch toán 91 KẾT LUẬN VÀ KIẾN NGHỊ 92 TÀI LIỆU THAM KHẢO 94 Phụ Lục 95 iv DANH MỤC BẢNG Bảng 3.6 Kết chạy thực tế nhà lưới 90 Bảng 3.7 Bảng hoạch toán 91 v DANH MỤC HÌNH Hình 1.1 Quá trình xử lý ảnh Hình 1.2 Các bước hệ thống xử lý ảnh Hình 1.3 Ảnh sau xóa Hình 1.4 Machine Learning Hình 1.5 DeepLearning 11 Hình 1.6 Mối quan hệ AI, Machine Learning, DeepLearning 13 Hình 1.7 Hệ thống Camera nhận dạng khuôn mặt 14 Hình 1.8 Cơng nghệ xử lý ảnh giúp nhận diện xe 15 Hình 1.9 Ứng dụng xử lý ảnh y học 15 Hình 1.10 Ứng dụng cơng nghệ trí tuệ nhân tạo vào máy X-Quang 16 Hình 1.11 Áp dụng cơng nghệ trí tuệ nhân tạo vào kỹ thuật siêu âm 16 Hình 1.12.Giám sát tình trạng máy móc 17 Hình 1.13 Đọc mã vạch sản phẩm 19 Hình 1.14 Kiểm tra 3d 20 Hình 1.15 Phân loại sản phẩm theo màu sắc 24 Hình 2.1 Cây dưa chuột, rễ dưa chuột 26 Hình 2.2 Thân dưa chuột, tua mọc thân 27 Hình 2.3 Lá mầm dưa chuột 28 Hình 2.4 Lá dưa chuột 28 Hình 2.5 Hoa dưa chuột 29 Hình 2.6 Giải phẫu hoa dưa chuột 29 Hình 2.7 Giải phẫu trái dưa leo 30 Hình 2.8 Dưa leo thuộc nhóm ưa nhiệt 31 Hình 2.9 Chuẩn bị nhà lưới 32 Hình 2.10 Hệ thống chiếu sáng giám sát nhà lưới 33 Hình 2.11 Chuẩn bị bầu hệ thống tưới 33 vi Hình 2.12 Dung dịch dinh dưỡng 34 Hình 2.13 Trồng ươm vào bầu 34 Hình 2.14 Cây dưa chuột sau tuần 35 Hình 2.15 Cây dưa chuột sau tuần đậu hoa 35 Hình 2.16 Cây dưa chuột sau 25-28 ngày đậu 35 Hình 2.17 Cây dưa chuột sau 45-50 ngày bắt đầu tàn 36 Hình 2.18 Hình ảnh dưa chuột bị bệnh phấn trắng 37 Hình 2.19 Lá bị bệnh phấn trắng từ 7-10 ngày 38 Hình 2.20 Lá bị bệnh phấn trắng sau 14 ngày 38 Hình 2.21 Bệnh thối rễ dưa chuột 40 Hình 2.22 Bệnh khảm dưa chuột 41 Hình 2.23 Bệnh sương mai dưa chuột 42 Hình 2.24 Bệnh thối trái non dưa chuột 44 Hình 2.25 Bệnh phấn trắng dưa chuột 45 Hình 2.26 Sơ đồ cấu trúc thuật toán LeNet-5 50 Hình 2.27 Sơ đồ cấu trúc thuật tốn AlexNet 50 Hình 2.28 Sơ đồ cấu trúc thuật toán VGG-16 50 Hình 2.29 Sơ đồ cấu trúc thuật tốn GoogleLeNet 51 Hình 2.30 Sơ đồ cấu trúc thuật toán ResNet 51 Hình 2.31 Mơ hình Yolo 52 Hình 2.32 Kết so sánh YOLOv4 với SOTA thời điểm 53 Hình 2.33 Mạch Raspberry PI 3B 54 Hình 2.34 Mặt trước Module Camera Raspberry 55 Hình 2.35 Các khối chức CPU S7-1200 57 Hình 2.36 Các kết nối PLC S7-1200 58 Hình 2.37 Sơ đồ cắm đầu kết nối để cài hệ điều hành 58 Hình2.38 Hướng dẫn cài đặt hệ điều hành trung tâm 59 vii Hình2.39 Giao diện sau cài đặt xong hệ điều hành trung tâm Raspberry Pi3 59 Hình 2.40 Cấu trúc Open CV 60 Hình 2.41 Cài thư viện 62 Hình 2.42 Cài thư viện OpenCV 62 Hình 2.43 Cài thư viện OpenCV cho Raspberry PI 63 Hình 2.44 Giao diện Visual Studio 2015 64 Hình 2.45 Cài OpenCV visual 64 Hình 2.46 Cài OpenCV visual 65 Hình 2.47 Build lib OpenCV Visual Studio 65 Hình 2.48 Giao diện Thonny Python IDE 68 Hình 3.1 Sơ đồ khối hệ thống 70 Hình 3.2 Sơ đồ cấu trúc hoạt động hệ thống 70 Hình 3.3 Sơ đồ khối trình train ảnh 71 Hình 3.4 Robot 72 Hình 3.5 Hình ảnh khung nhơm thiết kế khung xe 72 Hình 3.6 Bánh xe dùng mơ hình 73 Hình 3.7 Hình ảnh Động Cơ DC Servo GM25-370 DC Geared Motor 73 Hình 3.8 Hình ảnh Động RC Servo MG996 74 Hình 3.9 Hình ảnh cấu vít-me 74 Hình 3.10 Raspberry Pi3 75 Hình 3.11 Sơ đồ chân tín hiệu module L298N 76 Hình 3.12 Arduino Nano 77 Hình 3.13 Hình ảnh Modul Webcam Dahua Z2+ Plus 78 Hình 3.14 Hình ảnh Màn hình LCD 5″ cho Raspberry 79 Hình 3.15 Modul sim 800l 79 Hình 3.16 Modul ESP8266 v1 80 Hình 3.17 Lưu đồ thuật tốn q trình xử lí ảnh 81 viii Hình 3.18 Giao diện phần mềm labellmg 82 Hình 3.19 Gán nhãn ảnh 82 Hình 3.20 Ảnh mã hố sau gán nhãn 83 Hình 3.21 Tạo code block 83 Hình 3.22 Dán code chọn tài khoản Google Driver 84 Hình 3.23 Tải mã nguồn YOLO V4 Driver 84 Hình 3.24 UPLOAD file lên Google Driver 84 Hình 3.25 Giải nén file data.zip 84 Hình 3.26 Tạo file Yolo.Names 85 Hình 3.27 Tạo file train.txt val.txt 85 Hình 3.28 Tạo file Yolo.data 85 Hình 3.29 Biên dịch mã nguồn Darknet 86 Hình 3.30.Download pretrain weight 86 Hình 3.31 Train 86 Hình 3.32 Thơng số kết sau train 86 Hình 3.33 Ảnh nhận dạng bệnh phấn trắng 87 Hình 3.34 Ảnh dưa chuột nhà lưới 87 Hình 3.35 Robot chụp ảnh dưa chuột bị bệnh phấn trắng 88 Hình 3.36 Kết hiển thị hình LCD robot 88 Hình 3.37 Gửi cảnh báo bị bệnh phấn trắng Sim Email 88 Hình 3.38 Robot chụp ảnh dưa chuột không bị bệnh 89 Hình 3.39 Gửi liệu khơng bị bênh Sim Email 89 ix Trong thời gian làm khóa luận khoảng thời gian vô ý nghĩa cá nhân em, giúp em tích lũy nhiều kinh nghiệm quý báu sau trường Khóa luận em hồn thành xong cịn tồn nhiều thiếu sót Em mong thầy cô giáo hội đồng giúp đỡ để đề tài em hoàn thiện tốt nhất, để ứng dụng giúp ích cho sống 3.7 Hoạch toán Bảng 3.7 Bảng hoạch toán STT Tên thiết bị Số lượng Đơn giá (VNĐ) Thiết bị nhà lưới 6.500.000 Thiết bị Robot 3.050.000 Raspberry PI Model B 1.300.000 Arduino Nano 80.000 Màn hình LCD inh 900.000 Modul L298 50.000 Webcam Dahua Z2 Plus 720P 1.100.000 Modul Sim 800L 130.000 Modul ESP8622 v1 155.000 10 Tổng 13.265.000 91 KẾT LUẬN VÀ KIẾN NGHỊ Kết luận Sau thời gian nghiên cứu tìm hiểu hướng dẫn nhiệt tình TS.Ngơ Trí Dương đề tài : “Thiết kế hệ thống giám sát cảnh báo bệnh phấn trắng dưa chuột trí tuệ nhân tạo” em hồn thành Qua q trình nghiên cứu tìm hiểu em biết thêm về:  Raspberry PI máy tính nhúng hữu dụng để nghiên cứu phát triển AI, nông nghiệp 4.0  Cách chụp ảnh, xử lí ảnh, xây dựng Đề tài em hoàn thành yêu cầu ban đầu đề ra:  Thiết kế hệ thống giám sát trình phát triển dưa chuột từ xây dựng liệu bệnh phấn trắng  Chụp ảnh  Thiết kế cảnh báo bệnh phấn trắng trí tuệ nhân tạo Từ đề tài cho thấy việc áp dụng công nghệ vào nơng nghiệp khơng cịn q xa nữa, mà thực hiện, nghiên cứu Trong đồ án đưa phương pháp tối ưu với diện tích lớn thay nhiều nguồn nhân công hay thời gian, kịp thời canh tác, robot hoạt động ngày Ở đồ án khơng cịn phát màu với dải màu định sẵn đề tài trước đây, mà nhận dạng đổi tượng đặc điểm đặc trưng Đề nghị Trong trình thực đề tài, việc tìm hiểu tài liệu tham khảo thiết bị kĩ thuật gặp nhiều khó khăn Em mong nhà trường khoa xây dựng phịng thực hành đại với đầy đủ trang thiết bị Như 92 vậy, giúp cho sinh viên sau tìm tài liệu đầy đủ hơn, khả tiếp cận với công nghệ đại sớm Em mong quý thầy, cô tạo điều kiện hướng cho bạn sinh viên khoá sau tiếp tục phát triển cho đề tài 93 TÀI LIỆU THAM KHẢO [1] Cao Xuân Nam, Hoàng Trung Hiếu, Nguyễn Hải Triều, Vịng Chí Tài, Vũ Hải Quân, “Tự học lập trình Python bản”, Nhà xuất Đại học quốc gia Thành phố Hồ Chí Minh [2] Võ Tuấn Duy, Python Cơ Bản [3] Tài liệu Python [4] Pivietnam.com.vn [5] Tài liệu Raspberry [6] Bệnh thường gặp dưa leo [7] Train Yolo v4 Google Colab [8] Adrian Rosebrock, “Watershed OpenCV”, pyimagesearch.com [9] Paul A Viola and Michael J Jones, (2001) Rapid Object Detection using a Boosted Cascade of Simple Features IEEE Conference on Computer Vision and Pattern Recognition [10] Paul A Viola and Michael J Jones, (2004) Robust real-time face detection International Journal of Computer Vision [11] Các tài liệu tham khảo khác Internet 94 PHỤ LỤC Chương trình xử lý ảnh bệnh phấn trắng import time import cv2 import argparse import numpy as np import os box_file = "box_file.txt" if os.path.exists(box_file): with open(box_file,'r') as text_file: box_content = text_file.read() chuoi = box_content.split(",") maxx = len(chuoi) counter = int(chuoi[maxx - 2]) else : counter = box_file = "box_file.txt" '''from picamera import PiCamera camera = PiCamera() camera.rotation=180 camera.resolution = (252, 336) 95 import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(16,GPIO.IN, pull_up_dơn=GPIO.PUD_UP) GPIO.setup(20,GPIO.OUT) // phan trang GPIO.output(20,1)''' phien = tam = stt = counter name ="" cll = "yolo.names" ww = 'yolov4-custom_last.weights' cc = 'yolov4-custom.cfg' def get_output_layers(net): layer_names = net.getLayerNames() output_layers = [layer_names[i[0] - 1] for i in net.getUnconnectedOutLayers()] return output_layers def draw_prediction(img, class_id, confidence, x, y, x_plus_w, y_plus_h): label = str(classes[class_id]) color = COLORS[class_id] cv2.rectangle(img, (x, y), (x_plus_w, y_plus_h), color, 2) cv2.putText(img, label, (x - 10, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, color, 2) 96 while(True): if tam == 0: #if GPIO.input(16) == False: #namechup = "chup.jpg" #camera.capture(str(namechup)) ii = "data/267.jpg" #image = cv2.imread(namechup) image = cv2.imread(ii) Width = image.shape[1] Height = image.shape[0] scale = 0.00392 classes = None with open(cll, 'r') as f: classes = [line.strip() for line in f.readlines()] COLORS = np.random.uniform(0, 255, size=(len(classes), 3)) net = cv2.dnn.readNet(ww, cc) blob = cv2.dnn.blobFromImage(image, scale, (416, 416), (0, 0, 0), True, crop=False) net.setInput(blob) outs = net.forward(get_output_layers(net)) class_ids = [] confidences = [] boxes = [] conf_threshold = 0.5 97 nms_threshold = 0.4 # Thực xác định HOG SVM start = time.time() for out in outs: for detection in out: scores = detection[5:] class_id = np.argmax(scores) confidence = scores[class_id] if confidence > 0.5: center_x = int(detection[0] * Width) center_y = int(detection[1] * Height) w = int(detection[2] * Width) h = int(detection[3] * Height) x = center_x - w / y = center_y - h / class_ids.append(class_id) confidences.append(float(confidence)) boxes.append([x, y, w, h]) indices = cv2.dnn.NMSBoxes(boxes, confidences, conf_threshold, nms_threshold) print("indices = ",indices) #print(indices) for i in indices: phien = phien + 98 i = i[0] if i >= 0: box = boxes[i] x = box[0] y = box[1] w = box[2] h = box[3] draw_prediction(image, class_ids[i], confidences[i], round(x), round(y), round(x + w), round(y + h)) if phien >= 0: stt = stt + name = "ANH/BENH PHAN TRANG " + str(stt) +".jpg" cv2.imwrite(name, image) print(stt) fr = open(box_file, 'a') fr.write(str(stt) + ",") fr.close() #GPIO.output(20,0) cv2.imshow("object detection", image) end = time.time() cv2.waitKey(1) time.sleep(1) cv2.destroyAllWindows() phien = 99 Chương trình gửi liệu tin nhắn #include "SIM900.h" #include "sms.h" #include #define GPIO_P 12 #define GPIO_S 11 #define suong_mai #define phan_trang SoftwareSerial mySerial(4, 5); // RX, TX SMSGSM sms; int data = 0; int mang[8]; int cp_gui = 0, benh = 0; boolean started = false; //trạng thái modul sim char sdt[13] = "+84964398423"; int i = 0; unsigned long int time_gui = 0; void setup() { pinMode(GPIO_P,INPUT_PULLUP); pinMode(GPIO_S,INPUT_PULLUP); Serial.begin(9600); mySerial.begin(9600); //Serial.println("khoi dong"); // tin nhan 100 if (gsm.begin(2400)) { started = true; Serial.print("connet"); } else Serial.print("not connet"); if (started) { sms.SendSMS(sdt, "Online"); } } if(digitalRead(GPIO_P) == 0){ benh = phan_trang; } else benh = 0; tinnhan(); if(millis() - time_gui >=500){ Serial.write(benh); mySerial.write(benh); time_gui = millis(); } } // // 101 void tinnhan() { // - - binh thuong, - thap, - cao if (benh == phan_trang) { if(cp_gui != 2){ sms.SendSMS(sdt, "CAY DANG BI BENH PHAN TRANG "); // Serial.println("CAY DANG BI BENH PHAN TRANG "); cp_gui = 2; } } if (benh == 0){ if(cp_gui != 3){ sms.SendSMS(sdt, "CAY KHONG BI BENH GI "); // Serial.println("CAY KHONG BI BENH GI "); cp_gui = 3; } } } Chương trình gửi liệu mail #include #include #include //needed for library #include #include 102 #include #include #include #define led #define button char auth[] = "hT3ZNU4z2NWfhMMxD0gnMLuz0r4CyOBV"; char ssid[] = ""; char pass[] = ""; WiFiClient client; WidgetLED led_1(V1); unsigned long time_gui = 0; int benh = 0, save = 0,tg = 0; int mang[10]; int set_uart = 0; void setup() { // put your setup code here, to run once: pinMode(led , OUTPUT); pinMode(button , INPUT_PULLUP); // TU DONG KET NOI WIFI WiFiManager wifiManager; wifiManager.autoConnect("ESP", "12345678"); Blynk.begin(auth, ssid, pass); nhayled(3); 103 // Blynk.run(); // Blynk.email("trungduanthhd@gmail.com", "THONG BAO", "KHOI DONG"); // delay(5000); } void loop() { Serial.print("b = "); Serial.println(benh); Serial.print("s = "); Serial.println(save); if (set_uart == 1) { Serial.begin(9600); set_uart = 2; } if (set_uart == 0) set_uart = 1; // -CAI DAT WIFI // // NHAN DU LIEU VA XU LY -// if (Serial.available()) { benh = Serial.read(); } // -BLYNK -// Blynk.run(); if (save != benh) { if (benh == 0) { 104 Blynk.email("trungduanthhd@gmail.com ", "THONG BAO", "CAY KHONG BI BENH"); } if (benh == 1) { Blynk.email("trungduanthhd@gmail.com ", "THONG BAO", "CAY DANG BI BENH PHAN TRANG"); } save = benh; } } // -// // -// void nhayled(int lan) { int k; for (k = 0; k < lan; k++) { digitalWrite(led, LOW); delay(500); digitalWrite(led, HIGH); delay(500); } } 105

Ngày đăng: 06/07/2023, 22:30

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

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

Tài liệu liên quan