1. Trang chủ
  2. » Giáo Dục - Đào Tạo

XÂY DỰNG ỨNG DỤNG PHÁT HIỆN VÀ PHÂN LOẠI BỆNH TRÊN CÂY SẮN MÌ

36 13 0

Đ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

Thông tin cơ bản

Tiêu đề Xây dựng Ứng dụng Phát Hiện Và Phân Loại Bệnh Trên Cây Sắn Mì
Tác giả Trương Thị Mai Thanh, Thị Thảo Nguyên
Người hướng dẫn PGS. Nguyễn Hà Huy Cường
Trường học Trường Đại Học Công Nghệ Thông Tin & Truyền Thông Việt Hàn
Chuyên ngành Công nghệ Thông tin
Thể loại Đồ Án Chuyên Ngành
Năm xuất bản 2021
Thành phố Đà Nẵng
Định dạng
Số trang 36
Dung lượng 1,28 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trên thế giới đã có một số công trình nghiên về cứu nhận dạng sâu bệnh trên trái cà chua, dưa chuột,… bằng cách vận dụng kỹ thuật xử lý ảnh và nhận dạng đã đạt được một số kết quả khả qu

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN &

TRUYỀN THÔNG VIỆT HÀN

ĐỒ ÁN CHUYÊN NGÀNH 2

ĐỀ TÀI : XÂY DỰNG ỨNG DỤNG PHÁT HIỆN

VÀ PHÂN LOẠI BỆNH TRÊN CÂY SẮN MÌ

Giảng viên hướng dẫn : NGUYỄN HÀ HUY CƯỜNG

Sinh viên thực hiện : TRƯƠNG THỊ MAI THANH

PHAN THỊ THẢO NGUYÊN

Lớp : 17IT2

Đà Nẵng, tháng 4 năm 2021

Trang 2

NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

Trang 3

Thông qua bản báo cáo này, chúng em xin được gửi lời chân thành cảm ơn đến Ban Giám Hiệu Trường và cùng các thầy cô trong khoa đã tạo những điều kiện tốt nhất cho chúng em trong suốt thời gian học tập và sinh hoạt tại trường; xin chân thành cảm ơn thầy Nguyễn Hà Huy Cường, giáo viên phụ trách hướng dẫn chúng

em tận tình trong suốt quá trình thực hiện đề tài này

Chúng em xin chân thành cảm ơn quý thầy cô đã nhiệt tình giảng dạy, truyền đạt những kiến thức, kinh nghiệm quý báu và hơn hết là tình cảm mà quý thầy cô đã dành cho chúng em trong suốt quá trình giảng dạy

Mặc dù cố gắng hoàn thành đồ án trong phạm vi và khả năng cho phép nhưng chắc chắn sẽ không tránh khỏi những thiếu sót Chúng em rất mong nhận được sự thông cảm, góp ý và tận tình chỉ bảo của thầy, cô và tất cả các bạn để đề tài ngày càng hoàn thiện hơn

Chúng em xin trân trọng cảm ơn!

Sinh viên,

TRƯƠNG THỊ MAI THANH PHAN THỊ THẢO NGUYÊN

Trang 4

MỤC LỤC

Ch ương 1 TỔNG QUAN VỀ ĐỀ TÀI 1

1.1 Deep Learning 1

1.1.1 Deep Learning là gì ? 1

1.1.2 Cách thức hoạt động 2

1.2 Tổng quan về thư viện Tensorflow 3

1.2.1 Tensorflow là gì ? 3

1.2.3 Cách thức hoạt động 4

1.3 Mô hình CNN – Convolutional Neural Network 5

1.3.1 Convolutional là gì? 5

1.3.2 Cấu trúc của mạng CNN 6

1.4 Tổng quan về mạng ResNet 8

1.4.1 Giới thiệu về mạng ResNet 8

1.4.2 Vanishing Gradient 8

1.4.3 Kiến trúc mạng ResNet 10

1.4.4 Xây dựng mạng ResNet-50 12

1.5 Tìm hiểu về Keras 13

1.5.1 Giới thiệu về Keras 13

1.5.2 Keras với linear regression 14

1.5.3 Keras với logistic regression 15

Ch ương 2 PHÂN TÍCH VÀ THIẾT KẾ 16

2.1 Mô tả bài toán 16

2.2 Yêu cầu 16

2.3 Phân tích dữ liệu khám phá 17

2.4 Chuẩn bị dữ liệu 18

2.5 Phân tích yêu cầu hệ thống 18

Trang 5

2.5.1 Usecase Upload hình ảnh 18

Mô tả usecase: 18

Biểu đồ Use case 19

Ch ương 3 XÂY DỰNG ĐỀ TÀI 20

3.1 Các bước huấn luyện mô hình 20

3.2 Cài đặt công cụ và môi trường 20

3.3 Cài đặt thư viện 21

3.4 Tiến hành lập trình 21

3.5 Một số hình ảnh của đề tài 24

KẾT LUẬN 25

1 Kết quả đạt được 25

2 Hạn chế của đề tài 25

3 Hướng phát triển của đề tài 26

TÀI LIỆU THAM KHẢO 27

Trang 6

DANH MỤC CÁC TỪ VIẾT TẮC

VIẾT TẮT NỘI DUNG

Trang 7

DANH MỤC HÌNH VẼ

Hình 1: Mạng lưới kết nối dữ liệu 1

Hình 2:Của sổ trượt trên ma trận 6

Hình 3: Các lớp trong Convolutional Layer 7

Hình 4 Vanishing Gradient 1 9

Hình 5 Vanishing Gradient 2 9

Hình 6 Kiến trúc mạng ResNet 10

Hình 7 So sánh VGG-19, ResNet- 152 và Feedforward Neural Network 11

Hình 8 Mô tả chi tiết kiến trúc mạng nơ ron ResNet 12

Hình 9 Các thư viện được sử dụng nhiều nhất 13

Hình 10 Biểu đồ Usercase 19

Hình 11 Activity Diagram 19

Hình 12 Cài đặt Visual Studio Code 20

Hình 13 Cài đặt Anaconda 21

Hình 14 Import thư viện 21

Hình 15 Đặt tên class 22

Hình 16.Upload mô hình 22

Hình 17 Trang index 23

Hình 18 Xử lí tệp 23

Hình 19 Trang chủ 24

Hình 20 Kết quả sau khi upload hình 24

Trang 8

MỞ ĐẦU

1 Giới thiệu đề tài

Việt Nam là một nước phát triển nông nghiệp, nông nghiệp đóng một vai trò quan trọng trong nền kinh tế nước nhà Vì thế, bệnh trên lá cây được xem là bệnh phổ biến đối với người nhà nông mỗi loại bệnh trên lá cây làm cho cây sinh trưởng phát triển kém năng suất

Trên thế giới đã có một số công trình nghiên về cứu nhận dạng sâu bệnh trên trái cà chua, dưa chuột,… bằng cách vận dụng kỹ thuật xử lý ảnh và nhận dạng đã đạt được một số kết quả khả quan Các hệ thống nhận dạng sâu bệnh thường được thử nghiệm trong điều kiện lý tưởng là môi trường nhà kính, chưa được áp dụng rộng rãi vào môi trường thực tế ngoài trời

Nhận dạng các loại bệnh trên lá cây thông qua xử lý ảnh là phương pháp nhận dạng màu sắc, hình dạng, kích thước của lá cây bị vàng so với lá cây bình thường ban đầu từ đó rút ra nguyên nhân gây bệnh của cây mà khắc phục Nghiên cứu này có thể nhận biết chính xác lá cây có hoặc không có sâu bệnh nằm trên đó

Hệ nhận dạng có thể nhận dạng sâu bệnh tổng quát khi đã có dữ liệu sâu bệnh sử dụng kết hợp kỹ thuật nhận dạng với bộ lọc tương hợp để nhận dạng sâu bệnh Đến nay, vẫn có rất ít hệ thống nhận dạng sâu bệnh cho một loại nông sản Ở Việt Nam, hiện nay chưa có các công bố về hệ thống phát hiện và nhận dạng sâu bệnh trên cây trồng mặc dù phát triển mạnh về nông nghiệp Vì vậy, nhóm em đã chọn nghiên cứu

về đề tài “Xây dựng ứng dụng phát hiện và phân loại bệnh hại lá sắn” một ứng dụng nhân dạng bệnh dựa vào các biểu hiện của lá cây từ ảnh chụp có ý nghĩa khoa học

và thực tiễn cao

2 Mục tiêu đề tài

Tìm hiểu được các loại bệnh trên lá cây sắn mì và xây dựng giải thuật nhận diện các loại bệnh trên lá cây thông qua kĩ thuật xử lí ảnh Thực hiện tính toán, phân tích và so sánh dữ liệu bệnh trên lá, từ đó xây dựng ứng dụng hỗ trợ cho người dùng biết và khắc phục bệnh cho cây

Trang 9

3 Đối tượng người dùng

• Người nông dân trồng sắn

• Người có nhu cầu tìm hiểu về các loại bệnh của cây sắn

4 Phạm vi

Phạm vi thực hiện đồ án dựa trên những kiến thức thu được từ những môn học trong quá trình học tập tại trường và tham khảo thêm một số tài liệu bên ngoài đề bổ sung thêm kiến thức nhằm hoàn thiện đồ án tốt hơn đáp ứng được mục tiêu của đồ án

Tập trung vào tìm hiểu các loại bệnh trên cây, tập hợp mô hình cơ sở dữ liệu

từ đó xây dựng giao diện tương tác người dùng

Trang 10

1

Chương 1 TỔNG QUAN VỀ ĐỀ TÀI

1.1 Deep Learning

1.1.1 Deep Learning là gì ?

Deep learning được bắt nguồn từ thuật toán Neural network vốn xuất phát

chỉ là một ngành nhỏ của Machine Learning Deep Learning là một chi của ngành máy học dựa trên một tập hợp các thuật toán để cố gắng mô hình dữ liệu trừu tượng hóa ở mức cao bằng cách sử dụng nhiều lớp xử lý với cấu trúc phức tạp, hoặc bằng cách khác bao gồm nhiều biến đổi phi tuyến

Tương tự như cách chúng ta học hỏi từ kinh nghiệm thuật toán, deep learning

sẽ thực hiện một nhiệm vụ nhiều lần mỗi lần tinh chỉnh nhiệm vụ một chút để cải thiện kết quả Deep Learning chỉ đơn giản là kết nối dữ liệu giữa tất cả các tế bào thần kinh nhân tạo và điều chỉnh chúng theo dữ liệu mẫu

Hình 1 : Mạng lưới kết nối dữ liệu

Càng có nhiều tế bào thần kinh được thêm vào thì kích thước của dữ liệu sẽ càng lớn Nó tự động có tính năng học tập ở nhiều cấp độ trừu tượng Qua đó cho phép một hệ thống học hàm ánh xạ phức tạp mà không phụ thuộc vào bất kỳ thuật

Trang 11

Deep learning là một phần của Machine Learning, một ngành rất rộng và nặng về toán, gồm rất nhiều thuật toán và mỗi thuật toán có ứng dụng riêng tùy vào bài toán:

dựng biểu diễn dữ liệu này được gọi là trích xuất tính năng

Để có thể dễ hình dung về Deep Learning chúng ta sẽ tìm hiểu cách nó hoạt động thông qua một số ví dụ sau Hãy bắt đầu với một ví dụ đơn giản về Deep Learning ở cấp độ khái niệm Hãy cùng suy nghĩ làm thế nào để chúng ta có thể nhận biết được một hình nào đó là hình vuông

Downloaded by tran quang (quangsuphamhoak35@gmail.com)

Trang 12

3

Có thể đầu tiên bạn sẽ kiểm tra xem hình đó có 4 cạnh hay không, nếu nó đúng chúng ta sẽ kiểm tra tiếp 4 cạnh này có được kết nối với nhau thành 1 hình tứ giác hay không, nếu đúng chúng ta sẽ kiểm tra tiếp 4 cạnh này có vuông góc với nhau không và chúng có kích thước bằng nhau không Nếu tất cả đều đúng thì kết quả nó là hình vuông

Nhìn chung thì cũng không có gì phức tạp cả nó chỉ là 1 hệ thống phân cấp các khái niệm Chẳng hạn như ví dụ ở trên chúng ta đã chia nhiệm vụ xác định hình vuông thành những nhiệm vụ nhỏ và đơn giản hơn Deep Learning cũng hoạt động tương tự như vậy nhưng ở quy mô lớn hơn

1.2 Tổng quan về thư viện Tensorflow

1.2.1 Tensorflow là gì ?

Với sự bùng nổ của lĩnh vực Trí Tuệ Nhân Tạo – A.I trong thập kỷ vừa qua, machine learning và deep learning rõ ràng cũng phát triển theo cùng Và ở thời điểm hiện tại, TensorFlow chính là thư viện mã nguồn mở cho machine learning nổi tiếng nhất thế giới, được phát triển bởi các nhà nghiên cứu từ Google Việc hỗ trợ mạnh mẽ các phép toán học để tính toán trong machine learning và deep learning đã giúp việc tiếp cận các bài toán trở nên đơn giản, nhanh chóng và tiện lợi hơn nhiều

Các hàm được dựng sẵn trong thư viện cho từng bài toán cho phép TensorFlow xây dựng được nhiều neural network Nó còn cho phép bạn tính toán song song trên nhiều máy tính khác nhau, thậm chí trên nhiều CPU, GPU trong cùng 1 máy hay tạo ra các dataflow graph – đồ thị luồng dữ liệu để dựng nên các model

Kiến trúc TensorFlow hoạt động được chia thành 3 phần:

- Tiền xử lý dữ liệu

- Dựng model

- Train và ước tính model

Downloaded by tran quang (quangsuphamhoak35@gmail.com)

Trang 13

4

Tensor đại diện cho các loại dữ liệu được đưa vào trong Tensorflow Mỗi thuộc tính trong tensor sẽ có những đặc điểm và tính năng khác nhau Để giúp bạn hiểu hơn về Tensorflow, Bizfly sẽ giới thiệu ngay đến bạn những thuộc tính cơ bản sau đây:

• Rank: Trong các cấu trúc dữ liệu, thuộc tính bậc được hiểu một cách đơn giản chính là sự phân cấp bậc và là căn cứ cho việc phân loại các tensor Mỗi tensor khi được phân bậc sẽ có tên gọi khác nhau, cụ thể bậc 0 là Scalar, bậc

1 là Vector bậc 2 là Matrix, các bậc cao hơn nữa sẽ được gọi là n-tensor

• Shape: Đây là thuộc tính chiều của tensor các cấu trúc dữ liệu

• Type: Kiểu dữ liệu của các element và là thuộc tính type duy nhất có trong tensor Một tensor chỉ có một loại type duy nhất cho toàn bộ các element có trong tensor Vì vậy mà cấu trúc dữ liệu có tính thống nhất

1 2.3 Cách thức hoạt động

TensorFlow cho phép các lập trình viên tạo ra dataflow graph, cấu trúc mô tả làm thế nào dữ liệu có thể di chuyển qua 1 biểu đồ, hay 1 sê-ri các node đang xử lý Mỗi node trong đồ thị đại diện 1 operation toán học, và mỗi kết nối hay edge giữa các node là 1 mảng dữ liệu đa chiều, hay còn được gọi là ‘tensor’

TensorFlow cung cấp tất cả những điều này cho lập trình viên theo phương thức của ngôn ngữ Python Vì Python khá dễ học và làm việc, ngoài ra còn cung cấp nhiều cách tiện lợi để ta hiểu được làm thế nào các high-level abstractions có thể kết hợp cùng nhau Node và tensor trong TensorFlow là các đối tượng Python,

và các ứng dụng TensorFlow bản thân chúng cũng là các ứng dụng Python

Các operation toán học thực sự thì không được thi hành bằng Python Các thư viện biến đổi có sẵn thông qua TensorFlow được viết bằng các binary C++ hiệu suất cao Python chỉ điều hướng lưu lượng giữa các phần và cung cấp các high-level abstraction lập trình để nối chúng lại với nhau.Các ứng dụng TensorFlow có thể chạy trên hầu hết mọi mục tiêu thuận tiện: máy cục bộ, cụm trong đám mây, thiết bị iOS và Android, CPU hoặc GPU Nếu bạn sử dụng đám mây của riêng Google, bạn

Downloaded by tran quang (quangsuphamhoak35@gmail.com)

Trang 14

5

có thể chạy TensorFlow trên silicon Đơn vị xử lý TensorFlow (TPU) tùy chỉnh của Google để tăng tốc hơn nữa Tuy nhiên, các mô hình kết quả được tạo bởi TensorFlow, có thể được triển khai trên hầu hết mọi thiết bị nơi chúng sẽ được sử dụng để phục vụ dự đoán TensorFlow 2.0, được ra mắt vào tháng 10 năm 2019, cải tiến framework theo nhiều cách dựa trên phản hồi của người dùng, để dễ dàng và hiệu quả hơn khi làm việc cùng nó (ví dụ: bằng cách sử dụng các Keras API liên quan đơn giản cho việc train model) Train phân tán dễ chạy hơn nhờ vào API mới

và sự hỗ trợ cho TensorFlow Lite cho phép triển khai các mô hình trên khá nhiều nền tảng khác nhau Tuy nhiên, nếu đã viết code trên các phiên bản trước đó của TensorFlow thì bạn phải viết lại, đôi lúc 1 ít, đôi lúc cũng khá đáng kể, để tận dụng tối đa các tính năng mới của TensorFlow 2.0

1.3 Mô hình CNN – Convolutional Neural Network

Convolutional Neural Network (CNNs – Mạng nơ-ron tích chập) là một trong những mô hình Deep Learning tiên tiến Nó giúp cho chúng ta xây dựng được những hệ thống thông minh với độ chính xác cao như hiện nay CNN được sử dụng nhiều trong các bài toán nhận dạng các object trong ảnh

CNN cũng có lịch sử khá lâu đời Kiến trúc gốc của mô hình CNN được giới thiệu bởi một nhà khoa học máy tính người Nhật vào năm 1980 Sau đó, năm 1998, Yan LeCun lần đầu huấn luyện mô hình CNN với thuật toán backpropagation cho bài toán nhận dạng chữ viết tay Tuy nhiên, mãi đến năm 2012, khi một nhà khoa học máy tính người Ukraine Alex Krizhevsky (đệ của Geoffrey Hinton) xây dựng

mô hình CNN (AlexNet) và sử dụng GPU để tăng tốc quá trình huấn luyện deep nets để đạt được top 1 trong cuộc thi Computer Vision thường niên ImageNet với

độ lỗi phân lớp top 5 giảm hơn 10% so với những mô hình truyền thống trước đó,

đã tạo nên làn sóng mãnh mẽ sử dụng deep CNN với sự hỗ trợ của GPU để giải quyết càng nhiều các vấn đề trong Computer Vision

1.3.1 Convolutional là gì?

Là một cửa sổ trượt (Sliding Windows) trên một ma trận

Downloaded by tran quang (quangsuphamhoak35@gmail.com)

Trang 15

6

Hình 2 :Của sổ trượt trên ma trận

Các convolutional layer có các parameter(kernel) đã được học để tự điều chỉnh lấy ra những thông tin chính xác nhất mà không cần chọn các feature

Trong hình ảnh ví dụ trên, ma trận bên trái là một hình ảnh trắng đen được số hóa

Ma trận có kích thước 5×5 và mỗi điểm ảnh có giá trị 1 hoặc 0 là giao điểm của dòng và cột

Convolution hay tích chập là nhân từng phần tử trong ma trận 3 Sliding Window hay còn gọi là kernel, filter hoặc feature detect là một ma trận có kích thước nhỏ như trong ví dụ trên là 3×3

Convolution hay tích chập là nhân từng phần tử bên trong ma trận 3×3 với ma trận bên trái Kết quả được một ma trận gọi là Convoled feature được sinh ra từ việc nhận ma trận Filter với ma trận ảnh 5×5 bên trái

1.3.2 Cấu trúc của mạng CNN

Mạng CNN là một tập hợp các lớp Convolution chồng lên nhau và sử dụng các hàm nonlinear activation như ReLU và tanh để kích hoạt các trọng số trong các node Mỗi một lớp sau khi thông qua các hàm kích hoạt sẽ tạo ra các thông tin trừu tượng hơn cho các lớp tiếp theo

Mỗi một lớp sau khi thông qua các hàm kích hoạt sẽ tạo ra các thông tin trừu tượng hơn cho các lớp tiếp theo Trong mô hình mạng truyền ngược (feedforward

Downloaded by tran quang (quangsuphamhoak35@gmail.com)

Trang 16

Layer tiếp theo là kết quả convolution từ layer trước đó, nhờ vậy mà ta có được các kết nối cục bộ Như vậy mỗi neuron ở lớp kế tiếp sinh ra từ kết quả của filter áp đặt lên một vùng ảnh cục bộ của neuron trước đó

Mỗi một lớp được sử dụng các filter khác nhau thông thường có hàng trăm hàng nghìn filter như vậy và kết hợp kết quả của chúng lại Ngoài ra có một số layer khác như pooling/subsampling layer dùng để chắt lọc lại các thông tin hữu ích hơn (loại bỏ các thông tin nhiễu)

Trong quá trình huấn luyện mạng (traning) CNN tự động học các giá trị qua các lớp filter dựa vào cách thức mà bạn thực hiện Ví dụ trong tác vụ phân lớp ảnh, CNNs sẽ cố gắng tìm ra thông số tối ưu cho các filter tương ứng theo thứ tự raw pixel > edges > shapes > facial > high-level features Layer cuối cùng được dùng để phân lớp ảnh

Hình 3: Các lớp trong Convolutional Layer

Trong mô hình CNN có 2 khía cạnh cần quan tâm là tính bất biến (Location

Invariance) và tính kết hợp (Compositionality) Với cùng một đối tượng, nếu đối

Downloaded by tran quang (quangsuphamhoak35@gmail.com)

Trang 17

8

tượng này được chiếu theo các gốc độ khác nhau (translation, rotation, scaling) thì

độ chính xác của thuật toán sẽ bị ảnh hưởng đáng kể Pooling layer sẽ cho bạn tính bất biến đối với phép dịch chuyển (translation), phép quay (rotation) và phép co giãn (scaling) Tính kết hợp cục bộ cho ta các cấp độ biểu diễn thông tin từ mức độ thấp đến mức độ cao và trừu tượng hơn thông qua convolution từ các filter Đó là lý

do tại sao CNNs cho ra mô hình với độ chính xác rất cao Cũng giống như cách con người nhận biết các vật thể trong tự nhiên

Mạng CNN sử dụng 3 ý tưởng cơ bản:

C ác trường tiếp nhận cục bộ (local receptive field)

T rọng số chia sẻ (shared weights)

T ổng hợp (pooling)

1.4 Tổng quan về mạng ResNet

1.4.1 Giới thiệu về mạng ResNet

ResNet (Residual Network) được giới thiệu đến công chúng vào năm 2015 và thậm chí đã giành được vị trí thứ 1 trong cuộc thi ILSVRC 2015 với tỉ lệ lỗi top 5 chỉ 3.57% Không những thế nó còn đứng vị trí đầu tiên trong cuộc thi ILSVRC and COCO 2015 với ImageNet Detection, ImageNet localization, Coco detection và Coco segmentation.Hiện tại thì có rất nhiều biến thể của kiến trúc ResNet với số lớp khác nhau như ResNet-18, ResNet-34, ResNet-50, ResNet-101, ResNet-152, Với tên là ResNet theo sau là một số chỉ kiến trúc ResNet với số lớp nhất định

1.4.2 Vanishing Gradient

Trước hết thì Backpropagation Algorithm là một kỹ thuật thường được sử dụng trong quá trình tranining Ý tưởng chung của thuật toán lá sẽ đi từ output layer đến input layer và tính toán gradient của cost function tương ứng cho từng parameter (weight) của mạng Gradient Descent sau đó được sử dụng để cập nhật các parameter

Downloaded by tran quang (quangsuphamhoak35@gmail.com)

Trang 18

Hình 5 Vanishing Gradient 2

Downloaded by tran quang (quangsuphamhoak35@gmail.com)

Ngày đăng: 08/12/2022, 23:08

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm