Ngày nay, việc ứng dụng công nghệ thông tin vào việc phân loại đã phát triển mạnh ở các nước tiên tiến trên thế giới đặt biệt ở các nước chuyển đổi số mạnh mẽ như Mỹ, Trung Quốc. Trong thời gian gần đây đã bùng nổ về các công nghệ học máy, học sâu ứng dụng cho các bài toán thực tiễn. Góp phần nâng cao năng suất một cách hiệu quả và liên tục trên diện rộng Do đó việc phân loại đối tượng đang là một trong những xu thế mới hiện nay, đặc biệt là nhu cầu về phân loại bệnh trên các loại cây trồng một cách nhanh chóng và hiệu quả,… Chính vì vậy, em đã chọn đề tài luận văn “Nghiên cứu tìm hiểu các thuật toán học sâu, ứng dụng vào hệ thống phân loại bệnh trên cây khoai tây dựa vào hình ảnh” góp phần thực hiện việc phân loại, chuẩn đoán bệnh nhanh chóng và chính xác.
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN ======* * * ====== ĐỒ ÁN CHUYÊN NGÀNH NGÀNH: KHOA HỌC MÁY TÍNH ĐỀ TÀI: NGHIÊN CỨU TÌM HIỂU CÁC THUẬT TOÁN HỌC SÂU, ỨNG DỤNG VÀO HỆ THỐNG PHÂN LOẠI BỆNH TRÊN CÂY KHOAI TÂY DỰA VÀO HÌNH ẢNH GVHD: TS Nguyễn Mạnh Cường Lớp: ĐỒ ÁN CHUN NGÀNH – K15 Nhóm: 18 Thành viên: Hồng Chí Bằng Trương Mạnh Hùng Bùi Hải Linh - 2020606348 Năm- 2023 MỤC LỤC - LỜI NÓI ĐẦU - DANH MỤC CÁC CHỮ VIẾT TẮT - DANH MỤC BẢNG BIỂU - DANH MỤC HÌNH ẢNH CHƯƠNG TỔNG QUAN VỀ ĐỀ TÀI 1.1 Tên đề tài 12 1.2 Lý chọn đề tài 12 1.3 Mục tiêu đề tài 13 1.3.1 Mục tiêu tổng quát 13 1.3.2 Mục tiêu cụ thể 13 1.4 Đối tượng phạm vi nghiên cứu 13 1.5 Kết dự kiến đạt 14 1.6 Tổng kết chương 14 CHƯƠNG BÀI TOÁN PHÂN LOẠI BỆNH TRÊN CÂY KHOAI TÂY VÀ MƠ HÌNH MẠNG NO-RON CƠ BẢN 15 2.1 Bài toán phân loại bệnh khoai tây 15 2.2 Tìm hiểu học có giám sát 16 2.2.1 Hồi quy 16 2.2.2 Phân loại học có giám sát 21 2.3 Mơ hình mạng neuron 25 2.3.1 Perceptron 25 2.3.2 Các hàm kích hoạt 27 CHƯƠNG CƠ SỞ LÝ THUYẾT VÀ PHƯƠNG PHÁP TRIỂN KHAI 34 Năm- 2023 3.1 Mạng nơron tích chập (Convolutional Neural Network) 34 3.1.1 Feature (Đặc trưng) 34 3.1.2 Convolutional Layer (lớp tích chập) 35 3.1.3 Pooling Layer (lớp gộp) 38 3.1.4 Fully Connected Layer (lớp kết nối đầy đủ) 39 3.1.5 Mơ hình mạng CNN hồn chỉnh 41 3.2 Áp dụng vào toán 43 3.3 Tăng cường liệu 45 3.4 Kết thí nghiệm 50 3.5 Các thuật toán tối ưu sử dụng 55 3.5.1 Tối ưu hàm loss (Multi – Class Cross – Entropy Loss) 55 3.5.2 Thuật toán tối ưu Adam (Multi – Class Cross – Entropy Loss) 56 3.6 Một số thư viện sử dụng 60 3.6.1 TensorFlow 60 3.6.2 Keras 61 CHƯƠNG CÀI ĐẶT HỆ THỐNG VÀ MỘT SỐ KẾT QUẢ 62 4.1 Bộ liệu sử dụng 62 4.2 Mơ hình tốn 63 4.2.1 Cài đặt thư viện cần thiết 63 4.2.2 Xử lý liệu 63 4.2.3 Thiết lập mơ hình 65 4.2.4 Tiến hành training 67 4.2.5 Chạy thử tập test 69 4.2.6 Giao diện hệ thống hoàn thiện 71 - KẾT LUẬN 73 - TÀI LIỆU THAM KHẢO 74 DANH MỤC CÁC CHỮ VIẾT TẮT STT Từ viết tắt Giải thích AI Artificial Intelligence CNN Convolution Neural Network CNTT Công Nghệ Thông Tin DL Deep Learning ML Machine Learning TF TensorFlow H Height W Width D Deep 10 CNTK CognitiveToolkit DANH MỤC BẢNG BIỂU Bảng 1.1 Mục tiêu cụ thể (nguyên tắc SMART) 13 Bảng 2.1 Dữ liệu thông số giá nhà 17 Bảng 2.2 Dữ liệu số đường huyết bệnh nhân 22 Bảng 2.3 Bảng đối chiếu y y ̂ mơ hình luận lý 24 DANH MỤC HÌNH ẢNH Hình 2.1 Học có giám sát 16 Hình 2.2 Biểu đồ phân tán hồi quy tuyến tính 18 Hình 2.3 Hyperplane đồ thị hai chiều (hình I) ba chiều (hình II) 19 Hình 2.4 Đồ thị hàm số phi tuyến tính (NonLinear Function) 19 Hình 2.5 Biểu đồ hồi quy đa thức (tương quan cá qua độ tuổi) 20 Hình 2.6 Biểu đồ thể số đường huyết bệnh tiểu đường 22 Hình 2.7 Biểu đồ phân loại ca bệnh tiểu đường 23 Hình 2.8 Ma trận lỗi 24 Hình 2.9 Ma trận lỗi tốn phân loại nhị phân 25 Hình 2.10 Ảnh minh họa Neuron sinh học 27 Hình 2.11 Ảnh minh họa Perceptron 27 Hình 2.12 Hàm bước nhị phân (Binary step function Hard limit function) 28 Hình 2.13 Hàm sigmoid (Sigmoid fuction) 29 Hình 2.14 Hàm sigmoid lưỡng cực (Bipolar sigmoid function) 30 Hình 2.15 Hàm Tanh 31 Hình 2.16 Hàm ReLU 32 Hình 3.1 Minh hoạ mạng nơ-ron tích chập 34 Hình 3.2 Phép tính tích chập 36 Hình 3.3 Ma trận X thêm viền bên ngồi 37 Hình 3.4 stride=1, padding=1 37 Hình 3.5 stride=2, padding=1 38 Hình 3.6 Phân loại lớp Pooling 39 Hình 3.7 Làm phẳng ma trận features 40 Hình 3.8 Lớp kết nối đầy đủ 40 Hình 3.9 Một mơ hình phân loại động vật điển hình CNN 41 Hình 3.10 Mơ hình mạng CNN tổng quan 42 Hình 3.11 Mơ hình phương pháp học sâu đề xuất 43 Hình 3.12 Lớp mơ tả chi tiết mơ hình 44 Hình 3.13 Hàm mật độ xác suất cho nhiễu Gaussian 47 Hình 3.14 Hình ảnh gốc 48 Hình 3.15 Hình ảnh phản chiếu quanh trục X 48 Hình 3.16 Hình ảnh phản chiếu quanh trục Y 48 Hình 3.17 Hình ảnh phản chiếu quanh trục XY 48 Hình 3.18 Áp dụng nhiễu Gaussian với ảnh gốc 49 Hình 3.19 Ảnh phóng to từ [0,0] thành [150,150] 49 Hình 3.20 Ảnh phóng to từ [50,50] thành [200,200] 49 Hình 3.21 Ảnh phóng to từ [0,0] thành [150,150] phản chiếu qua trục X 49 Hình 3.22 Ảnh phóng to từ [0,0] thành [150,150] phản chiếu qua trục Y 50 Hình 3.23 Ảnh phóng to từ [0,0] thành [150,150] phản chiếu qua trục XY 50 Hình 3.24 Ảnh phóng to từ [0,0] thành [150,150] nhiễu Gaussian áp dụng 50 Hình 3.25 Ma trận nhầm lẫn cho thử nghiệm liệu gốc (khơng tăng cường) 51 Hình 3.26 Ma trận nhầm lẫn cho thử nghiệm liệu tăng cường 52 Hình 3.27 Độ xác User’s Accuracy liệu gốc 53 Hình 3.28 Độ xác User’s Accuracy liệu tăng cường 53 Hình 3.29 Các số hiệu suất liệu gốc liệu tăng cường 54 Hình 3.30 Mơ tả Thuật tốn tối ưu hàm Loss 56 Hình 3.31 Biểu đồ áp dụng Gradient Descent 57 Hình 3.32 Mơ tả trình SGD 57 Hình 3.33 So sánh sử dụng GD GD with momentum 58 Hình 3.34 Biểu đồ áp dụng GD with Momentum 58 Hình 3.35 Ứng dụng thuật tốn Adam với Heavy Ball 60 Hình 4.1 Kaggle 85 Hình 5.2 Tập liệu huấn luyện 87 Hình 4.3 Tập liệu xác thực 87 Hình 4.4 Tập liệu kiểm tra 87 Hình 4.5 Thiết lập model liệu 88 Hình 4.6 Sử dụng Dropout chống Overfitting 89 Hình 4.7 Sử dụng hàm Adam 90 Hình 4.8 Tiến hành train liệu 90 Hình 4.9 Tiến hành đánh giá mơ hình 90 Hình 4.10 Các đường cong mát xác 91 Hình 4.11 Hàm dự đốn 92 Hình 4.12 Chạy tập test 92 Hình 4.13 Kết chạy thử tập test 93 Hình 4.16 Màn hình choose file 95 Hình 4.17 Màn hình sau tải ảnh lên 96 Hình 4.18 Màn hình kết phân loại 96 LỜI CẢM ƠN Để hoàn thành đồ án tốt nghiệp này, em xin gửi lời cảm ơn chân thành đến thầy cô khoa Công nghệ thông tin Trường Đại học Công Nghiệp Hà Nội tận tình giảng dạy trang bị kiến thức cho em suốt thời gian em học tập trường Thầy giáo hướng dẫn đề tài – TS.Nguyễn Mạnh Cường, giảng viên Khoa Công nghệ Thông tin Trường Đại học Công Nghiệp Hà Nội – tận tụy hết lòng giúp đỡ, hướng dẫn, dẫn tận tình để giúp em hồn thành đồ án Trong q trình làm chắn khó tránh khỏi thiếu sót Do nhóm kính mong nhận lời góp ý thầy/cơ để báo cáo ngày hồn thiện Em xin chân thành cảm ơn ! Hình 3.35 Ứng dụng thuật toán Adam với Heavy Ball Cách tính: 3.6 Một số thư viện sử dụng 3.6.1 TensorFlow TF tảng Học máy mã nguồn mở, thiết kế đội ngũ Google Brain tổ chức nghiên cứu trí tuệ máy Google nhằm triển khai ứng dụng Học máy Học sâu theo cách đơn giản Nó kết hợp Đại số tính tốn kỹ thuật tối ưu hố để dễ dàng tính tốn biểu thức tốn học TF có hệ sinh thái tồn diện, linh hoạt bao gồm công cụ, thư viện tài nguyên cộng đồng cho phép nhà nghiên cứu xây dựng triển khai ứng dụng Học máy Đây thư viện máy học lâu đời Trang chủ TF địa sau: https://www.tensorflow.org/ Trang mã nguồn Github TF nằm tại: https://github.com/tensorflow/tensorflow 60 TF có tài liệu đầy đủ bao gồm nhiều thư viện Học máy nên phổ biến Vì sản phẩm Google, nên tại, TF ứng dụng nhiều sản phẩm Google phân loại chữ viết tay, nhận diện hình ảnh, xử lý ngơn ngữ tự nhiên, 3.6.2 Keras Keras thư viện Học sâu mã nguồn mở dành cho Python Nó phát triển nhà nghiên cứu trí tuệ nhân tạo Google Francois Chollet Keras chạy thư viện mã nguồn mở TensorFlow, Theano, R hay CognitiveToolkit (CNTK) Mục tiêu thiết kế Keras cho phép thử nghiệm mạng Học sâu nhanh chóng Các tổ chức hàng đầu Google, Square, Netflix, Huawei Uber sử dụng Keras Trang chủ Keras địa sau: https://keras.io/ Trang Github chứa mã nguồn Keras nằm tại: https://github.com/keras-team/keras 61 CHƯƠNG XÂY DỰNG HỆ THỐNG VÀ MỘT SỐ KẾT QUẢ 4.1 Bộ liệu sử dụng Dữ liệu lấy trang Kaggle: nguồn liệu lâu đời web Hình 4.1 Kaggle Bệnh khoai tây vấn đề xảy nhiều, chẩn đoán chủ yếu mắt thường Phân loại tự động ảnh hưởng tên bệnh cách sử dụng hình ảnh nhiệm vụ đầy thách thức biến đổi chi tiết xuất hư hỏng bề mặt bệnh Bộ liệu lấy từ Kaggle Plant Village mục Potato Nó bao gồm 1000 hình ảnh Early Blight , 1000 hình ảnh Lat Blight 152 hình ảnh Healthy Tất hình ảnh thay đổi kích thước thành độ phân giải thấp (224x224x3) RGB Nhiệm vụ hạt nhân tạo mơ hình, phân loại cách trực quan tên bệnh Bộ liệu gồm loại bệnh: - Potato Early Blight: Bệnh cháy sớm khoai tây 62 - Potato Late blight: Bệnh mốc sương khoai tây - Potato healthy: Khoai tây khỏe mạnh 4.2 Mơ hình tốn 4.2.1 Cài đặt thư viện cần thiết Tiến hành cài đặt thư viện hỗ trợ trình xử lý liệu sau Cài đặt numpy, os, tensorflow, matplotlib,… import tensorflow as tf from tensorflow.keras import models, layers import matplotlib.pyplot as plt from Ipython.display import HTML from tensorflow.keras.preprocessing.image import ImageDataGenerator import numpy as np 4.2.2 Xử lý liệu - Thiết lập tham số: IMAGE_SIZE = 256 CHANNELS = EPOCHS = 20 input_shape = (IMAGE_SIZE, IMAGE_SIZE, CHANNELS) n_classes = - Tập liệu chia thành tập con, cụ thể là: o Đào tạo: tập liệu sử dụng đào tạo o Xác thực: tập liệu kiểm tra đào tạo o Kiểm tra: Tập liệu kiểm tra đào tạo mơ hình 63 Hình 4.2 Tập liệu huấn luyện Hình 4.3 Tập liệu xác thực Hình 4.4 Tập liệu kiểm tra 64 4.2.3 Thiết lập mơ hình Chia tập liệu train test Ta chia liệu train 80% liệu, lại test Thiết lập model Hình 4.5 Thiết lập model liệu Trong đó: - Model nhận đầu vào ảnh (224 x 224 x 3), đầu lớp Fully Connected softmax với nodes = 32 Ở kiến trúc CNN đơn giản với thứ tự lớp sau: CONV (relu) => BatchNormalization () => CONV (relu) => BatchNormalization () => MAXPOOL => Dropout () … => FC (relu) => FC (softmax) - Dropout: o Với lần thực cập nhật hệ số ta ngẫu nhiên loại bỏ p% số lượng node layer o Hệ số p nên khoảng [0.2, 0.5] Nếu p q nhỏ khơng có tác dụng chống overfitting, nhiên p lớn gần loại bỏ layer dẫn đến underfitting 65 o Nên dùng model lớn, phức tạp ta có dropout chống overfitting Hình 4.6 Sử dụng Dropout chống Overfitting - Flatten Input cho tầng fully connected tensor dạng 1D Do đó, bước flattening cần thực để chuyển đổi tensor dạng nhiều chiều sang tensor 1D - Softmax function o Softmax function dùng để chuyển đổi giá trị thực node output layer sang giá trị phần trăm o Thay muốn kết chữ gì, ta muốn dự đốn phần trăm ảnh chữ Ví dụ: 90% chữ A, 1% ảnh số N, … - Pooling layer Thường dùng convolutional layer, để giảm kích thước ma trận input giữ thuộc tính quan trọng Kích thước liệu giảm giúp giảm việc tính tốn model - Batch Normalization Mục tiêu phương pháp việc muốn chuẩn hóa feature (đầu layer sau qua activation) trạng thái zero-mean với độ lệch chuẩn Sử dụng batch normalization, không cần phải sử dụng nhiều dropout không cần phải lo lắng bị q nhiều thơng tin dropout weigths mạng Tuy nhiên nên sử dụng kết hợp hai kĩ thuật 66 4.2.4 Tiến hành training Sử dụng hàm Adam để tối ưu mát liệu Hình 4.7 Sử dụng hàm Adam Tiến hành train Hình 4.8 Tiến hành train liệu Đánh giá mơ hình Hình 4.9 Tiến hành đánh giá mơ hình 67 Vẽ đường roc mát xác: Hình 4.10 Các đường cong mát xác 68 4.2.5 Chạy thử tập test Hình 4.11 Hàm dự đốn Chạy tập test Hình 4.12 Chạy tập test 69 Kết Hình 4.13 Kết chạy thử tập test 70 4.2.6 Giao diện hệ thống hoàn thiện 4.2.6.1 Giao diện Phân loại Khi chọn “Choose File” cửa sổ để người dùng chọn ảnh để test Hình 4.16 Màn hình choose file Hình 4.17 Màn hình sau tải ảnh lên 71 Hình 4.18 Màn hình kết phân loại 72 KẾT LUẬN Như hoàn thành xây dựng xong hệ thống phân loại bệnh khoai tây chạy tảng web Mặc dù cấu trúc hệ thống phân loại bệnh nhìn đơn giản, nhiên để xây dựng hệ thống hoàn chỉnh cần phải bỏ nhiều cơng sức nghiên cứu Nhìn lại trình thực đồ án này, thân em thấy điểm mạnh điểm yếu vướng mắc kiến thức kỹ trình bày tìm hiểu tài liệu liên quan Tuy có đóng góp tích cực nhằm hồn thiện đồ án, nhiên khơng thể tránh khỏi thiếu sót, hạn chế Cụ thể vấn đề nằm liệu huấn luyện sử dụng cho máy học hạn chế, điều khiến cho model trở nên overfitting dẫn đến khả áp dụng thực tiễn có mức độ khả thi khơng cao Bên cạnh đó, việc thiếu model CNN tạo model phân loại xác điều hệ thống hạn chế Bởi kiến thức nhiều hạn chế không đủ nguồn lực để xây dựng liệu hoàn chỉnh, đảm bảo chất lượng, khơng có hệ thống máy tính đủ mạnh để huấn luyện model tập liệu lớn Việc phân loại dựa hình ảnh có sẵn đưa lên Vẫn hạn chế việc đưa liệu vào để phân loại nhiều cách khác Nhằm khắc phục hạn chế kể trên, thân em cần tìm hiểu thêm nhiều liệu đảm bảo độ xác liệu cao để nâng cao tính khả thi áp dụng vào thực tiễn Đồng thời tìm kiếm hỗ trợ từ nhà trường mối quan hệ khác để định hình xây dựng kiến trúc model CNN đủ để huấn luyện liệu tương lai Cuối với đóng góp, cố gắng để hồn thiện báo cáo, em mong góp ý chân thành, quý báu từ quý thầy cô bạn đọc Em xin chân thành cảm ơn! 73 - TÀI LIỆU THAM KHẢO [1] Nguyễn Thị Thanh Huyền, Ngô Thị Bích Thúy, Phạm Thị Kim Phượng, Giáo trình phân tích thiết kế hệ thống, NXB Giáo dục VN, 2011 [2] Vũ Thị Dương, Phùng Đức Hòa, Nguyễn Thị Hương Lan, Giáo trình Phân tích thiết kế hướng đối tượng, NXB Khoa học Kỹ thuật, 2015 [3] Đỗ Ngọc Sơn, Phan Văn Viên, Nguyễn Phương Nga, Giáo trình Hệ quản trị sở liệu, NXB Khoa học Kỹ thuật, 2015 [4] “Giáo trình trí tuệ nhân tạo”, TS.Trần Hùng Cương, Nguyễn Phương Nga, Trường Đại học Công nghiệp Hà Nội, NXB Giáo dục VN [5] Trần Hùng Cường, Trần Thanh Hùng, Giáo trình khai phá liệu, Hà Nội, NXB Thống kê, 2017 [6] Nguyễn Mạnh Cường, Trần Hùng Cường, Giáo trình nhập mơn lý thuyết nhận dạng, Hà Nội, Nhà NXB Giáo dục VN, 2014 [7] Nguyễn Văn Hậu, Giáo trình Python bản, Hà Nội, NXB Đại học Quốc Gia Hà Nội, 2014 74