37
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG VIỆT HÀN Khoa Khoa Học Máy Tính ĐỒ Á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 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

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

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ĐỀ TÀI : XÂY DỰNG ỨNG DỤNG PHÁT HIỆN VÀ PHÂN LOẠI …

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

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

Khoa Khoa Học Máy Tính

ĐỒ Á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

Page 2: ĐỀ TÀI : XÂY DỰNG ỨNG DỤNG PHÁT HIỆN VÀ PHÂN LOẠI …

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

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

Khoa Khoa Học Máy Tính

ĐỒ Á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

Page 3: ĐỀ TÀI : XÂY DỰNG ỨNG DỤNG PHÁT HIỆN VÀ PHÂN LOẠI …

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

………………………………………………………………………………………………

………………………………………………………………………………………………

………………………………………………………………………………………………

………………………………………………………………………………………………

………………………………………………………………………………………………

………………………………………………………………………………………………

………………………………………………………………………………………………

………………………………………………………………………………………………

………………………………………………………………………………………………

………………………………………………………………………………………………

………………………………………………………………………………………………

………………………………………………………………………………………………

………………………………………………………………………………………………

………………………………………………………………………………………………

………………………………………………………………………………………………

………………………………………………………………………………………………

………………………………………………………………………………………………

………………………………………………………………………………………………

………………………………………………………………………………………………

………………………………………………………………………………………………

………………………………………………………………………………………………

………………………………………………………………………………………………

………………………………………………………………………………………………

………………………………………………………………………………………………

………………………………………………………………………………………………

………………………………………………………………………………………………

………………………………………………………………………………………………

Page 4: ĐỀ TÀI : XÂY DỰNG ỨNG DỤNG PHÁT HIỆN VÀ PHÂN LOẠI …

LỜI CẢM ƠN

Sau một thời gian học tập và nghiên cứu đề 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ì” chúng em đã không ngừng được củng cố,

mở mang thêm nhiều kiến thức và tầm hiểu biết về lĩnh vực Công nghệ Thông tin

qua sự dạy dỗ, đào tạo tận tình của các thầy cô bộ môn trong khoa công nghệ thông

tin và sự học hỏi lẫn nhau giữa bạn bè cùng khóa.

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

Page 5: ĐỀ TÀI : XÂY DỰNG ỨNG DỤNG PHÁT HIỆN VÀ PHÂN LOẠI …

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

Page 6: ĐỀ TÀI : XÂY DỰNG ỨNG DỤNG PHÁT HIỆN VÀ PHÂN LOẠI …

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

Page 7: ĐỀ TÀI : XÂY DỰNG ỨNG DỤNG PHÁT HIỆN VÀ PHÂN LOẠI …

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

VIẾT TẮT NỘI DUNG

CNN Convolutional Neural Network

DL Deep Learning

AI Artificial intelligence

TNTK The Microsoft Cognitive Toolkit

GPU Graphics processing unit

Page 8: ĐỀ TÀI : XÂY DỰNG ỨNG DỤNG PHÁT HIỆN VÀ PHÂN LOẠI …

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

Page 9: ĐỀ TÀI : XÂY DỰNG ỨNG DỤNG PHÁT HIỆN VÀ PHÂN LOẠI …

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.

Page 10: ĐỀ TÀI : XÂY DỰNG ỨNG DỤNG PHÁT HIỆN VÀ PHÂN LOẠI …

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.

Page 11: ĐỀ TÀI : XÂY DỰNG ỨNG DỤNG PHÁT HIỆN VÀ PHÂN LOẠI …

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

Page 12: ĐỀ TÀI : XÂY DỰNG ỨNG DỤNG PHÁT HIỆN VÀ PHÂN LOẠI …

2

toán cụ thể nào. Không ai thực sự biết những gì xảy ra trong một mạng lưới thần

kinh nhân tạo. Vì vậy, hiện tại bạn có thể gọi Deep Learning là một cái hộp đen.

Deep Learning đã giúp máy tính thực thi những việc tưởng chừng như không

thể vào 15 năm trước: phân loại cả ngàn vật thể khác nhau trong các bức ảnh, tự tạo

chú thích cho ảnh, bắt chước giọng nói và chữ viết của con người, giao tiếp với con

người, hay thậm chí cả sáng tác văn, phim, ảnh, âm nhạc.

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:

•  Linear Regression

• Logistic Regresstion

• Decision Tree and Random Forest

• Naive Bayes

• Support Vector Machines

• K-Nearest Neighbors

• Principal component analysis (PCA)

• Neural network

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

Cách thức hoạt động của thuật toán Deep Learning diễn ra như sau: Các

dòng thông tin sẽ được trải qua nhiều lớp cho đến lớp sau cùng. Lấy quy trình học

của con người làm ví dụ cụ thể. Qua các lớp đầu tiên sẽ tập trung vào việc học các

khái niệm cụ thể hơn trong khi các lớp sâu hơn sẽ sử dụng thông tin đã học để

nghiên cứu và phân tích sâu hơn trong các khái niệm trừu tượng . Quy trình xây

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.

Page 13: ĐỀ TÀI : XÂY DỰNG ỨNG DỤNG PHÁT HIỆN VÀ PHÂN LOẠI …

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

Page 14: ĐỀ TÀI : XÂY DỰNG ỨNG DỤNG PHÁT HIỆN VÀ PHÂN LOẠI …

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

Page 15: ĐỀ TÀI : XÂY DỰNG ỨNG DỤNG PHÁT HIỆN VÀ PHÂN LOẠI …

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.

Page 16: ĐỀ TÀI : XÂY DỰNG ỨNG DỤNG PHÁT HIỆN VÀ PHÂN LOẠI …

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

Page 17: ĐỀ TÀI : XÂY DỰNG ỨNG DỤNG PHÁT HIỆN VÀ PHÂN LOẠI …

7

neural network) thì mỗi neural đầu vào (input node) cho mỗi neural đầu ra trong các

lớp tiếp theo.

Mô hình này gọi là mạng kết nối đầy đủ (fully connected layer) hay mạng

toàn vẹn (affine layer). Còn trong mô hình CNNs thì ngược lại. Các layer liên kết

được với nhau thông qua cơ chế convolution.

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

Page 18: ĐỀ TÀI : XÂY DỰNG ỨNG DỤNG PHÁT HIỆN VÀ PHÂN LOẠI …

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)

• Trọ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.

Page 19: ĐỀ TÀI : XÂY DỰNG ỨNG DỤNG PHÁT HIỆN VÀ PHÂN LOẠI …

9

Hình 4. Vanishing Gradient 1

Toàn bộ quá trình trên sẽ được lặp đi lặp lại cho tới khi mà các parameter của

network được hội tụ. Thông thường chúng ta sẽ có một hyperparametr (số Epoch -

số lần mà traninig set được duyệt qua một lần và weights được cập nhật) định nghĩa

cho số lượng vòng lặp để thực hiện quá trình này. Nếu số lượng vòng lặp quá nhỏ thì

ta gặp phải trường hợp mạng có thể sẽ không cho ra kết quả tốt và ngược lại thời

gian tranining sẽ lâu nếu số lượng vòng lặp quá lớn.

Tuy nhiên, trong thực tế Gradients thường sẽ có giá trị nhỏ dần khi đi xuống

các layer thấp hơn. Dẫn đến kết quả là các cập nhật thực hiện bởi Gradients Descent

không làm thay đổi nhiều weights của các layer đó và làm chúng không thể hội tụ và

Hình 5. Vanishing Gradient 2

Page 20: ĐỀ TÀI : XÂY DỰNG ỨNG DỤNG PHÁT HIỆN VÀ PHÂN LOẠI …

10

mạng sẽ không thu được kết quả tốt. Hiện tượng như vậy gọi là Vanishing

Gradients. Mạng ResNet ra đời cũng giải quyết vấn đề đó.

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

Cho nên giải pháp mà ResNet đưa ra là sử dụng kết nối "tắt" đồng nhất để

xuyên qua một hay nhiều lớp. Một khối như vậy được gọi là một Residual Block,

như trong hình sau :

ResNet gần như tương tự với các mạng gồm có convolution, pooling,

activation và fully-connected layer. Ảnh bên trên hiển thị khối dư được sử dụng

trong mạng. Xuất hiện một mũi tên cong xuất phát từ đầu và kết thúc tại cuối khối

dư. Với H(x) là giá trị dự đoán, F(x) là giá trị thật (nhãn), chúng ta muốn H(x) bằng

hoặc xấp xỉ F(x). Việc F(x) có được từ x như sau:

X->weight1-> ReLU -> weight2

Giá trị H(x) có được bằng cách:

F(x) + x -> ReLU

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

Page 21: ĐỀ TÀI : XÂY DỰNG ỨNG DỤNG PHÁT HIỆN VÀ PHÂN LOẠI …

11

Như chúng ta đã biết việc tăng số lượng các lớp trong mạng làm giảm độ chính

xác, nhưng muốn có một kiến trúc mạng sâu hơn có thể hoạt động tốt.

• Hình 1. VGG-19 là một mô hình CNN sử dụng kernel 3x3 trên toàn bộ

mạng, VGG-19 cũng đã giành được ILSVRC năm 2014.

• Hình 2. ResNet sử dụng các kết nối tắt ( kết nối trực tiếp đầu vào của lớp (n)

với (n+x) được hiển thị dạng mũi tên cong. Qua mô hình nó chứng minh

được có thể cải thiện hiệu suất trong quá trình training model khi mô hình có

hơn 20 lớp.

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

Page 22: ĐỀ TÀI : XÂY DỰNG ỨNG DỤNG PHÁT HIỆN VÀ PHÂN LOẠI …

12

• Hình 3. Tổng cộng có 12 đầu ra từ ResNet-152 và VGG-19 đã được sử dụng

làm đầu vào cho mạng có 2 lớp hidden. Đầu ra cuối cùng được tính toán

thông qua hai lớp ẩn ( hidden). Việc xếp chồng các lớp sẽ không làm giảm

hiệu suất mạng.Với kiến trúc này các lớp phía trên có được thông tin trực

tiếp hơn từ các lớp dưới nên sẽ điều chỉnh trọng số hiệu quả hơn.

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

Hình dưới đây mô tả chi tiết kiến trúc mạng nơ ron ResNet

"ID BLOCK" trong hình trên là viết tắt của từ Identity block và ID BLOCK x3

nghĩa là có 3 khối Identity block chồng lên nhau. Nội dung hình trên như sau :

• Zero-padding : Input với (3,3)

• Stage 1 : Tích chập (Conv1) với 64 filters với shape(7,7), sử dụng stride

(2,2). BatchNorm, MaxPooling (3,3).

• Stage 2 : Convolutiontal block sử dụng 3 filter với size 64x64x256, f=3, s=1.

Có 2 Identity blocks với filter size 64x64x256, f=3.

• Stage 3 : Convolutional sử dụng 3 filter size 128x128x512, f=3,s=2. Có 3

Identity blocks với filter size 128x128x512, f=3.

• Stage 4 : Convolutional sử dụng 3 filter size 256x256x1024, f=3,s=2. Có 5

Identity blocks với filter size 256x256x1024, f=3.

• Stage 5 :Convolutional sử dụng 3 filter size 512x512x2048, f=3,s=2. Có 2

Identity blocks với filter size 512x512x2048, f=3.

• The 2D Average Pooling : sử dụng với kích thước (2,2).

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

Page 23: ĐỀ TÀI : XÂY DỰNG ỨNG DỤNG PHÁT HIỆN VÀ PHÂN LOẠI …

13

• The Flatten.

• Fully Connected (Dense) : sử dụng softmax activation.

Thực tế, ResNet không phải là kiến trúc đầu tiên sử dụng các kết nối tắt,

Highway Network là một ví dụ. Trong thử nghiệm cho thấy Highway Network hoạt

động không tốt hơn ResNet.Giải pháp ResNet đưa ra đơn giản hơn và tập trung vào

cải thiện thông tin thông qua độ dốc của mạng. Sau ResNet hàng loạt biến thể của

kiến trúc này được giới thiệu. Thực nghiệm cho thấy những kiến trúc này có thể

được huấn luyện mạng nơ ron với độ sâu hàng nghìn lớp và nó nhanh chóng trở

thành kiến trúc phổ biến nhất trong Computer Vision.

1.5. Tìm hiểu về Keras

1.5.1. Giới thiệu về Keras

Các thư viện deep learning thường được ‘chống lưng’ bởi những hãng công

nghệ lớn: Google (Keras, TensorFlow), Facebook (Caffe2, Pytorch), Microsoft

(CNTK), Amazon (Mxnet), Microsoft và Amazon cũng đang bắt tay xây dựng

Gluon (phiên bản tương tự như Keras). (Các hãng này đều có các dịch vụ cloud

computing và muốn thu hút người dùng).

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

Page 24: ĐỀ TÀI : XÂY DỰNG ỨNG DỤNG PHÁT HIỆN VÀ PHÂN LOẠI …

14

Sau đây là một vài thống kê để mọi người có cái nhìn tổng quan về các thư

viện được sử dụng nhiều nhất.

Keras được coi là một thư viện ‘high-level’ với phần ‘low-level’ (còn được

gọi là backend) có thể là TensorFlow, CNTK, hoặc Theano. Keras có cú pháp đơn

giản hơn TensorFlow rất nhiều. Với mục đích giới thiệu về các mô hình nhiều hơn là

các sử dụng các thư viện deep learning, sẽ chọn Keras với TensorFlow là ‘backend’.

Những lý do nên sử dụng Keras để bắt đầu:

• Keras ưu tiên trải nghiệm của người lập trình

• Keras đã được sử dụng rộng rãi trong doanh nghiệp và cộng đồng nghiên cứu

• Keras giúp dễ dàng biến các thiết kế thành sản phẩm

• Keras hỗ trợ huấn luyện trên nhiều GPU phân tán

• Keras hỗ trợ đa backend engines và không giới hạn bạn vào một hệ sinh thái

Với Keras, ta thường sử dụng tf.keras.Sequential để xây dựng Model bằng

cách thêm từng layer một cách nối tiếp nhau

1.5.2 Keras với linear regression

Ta cùng làm một ví dụ đơn giản. Dữ liệu đầu X vào có số chiều là 2, đầu ra y

= 2*X[0] + 3*X[1] + 4 + e với e là nhiễu tuân theo một phân phối chuẩn có kỳ vọng

bằng 0, phương sai bằng 0.2.

Sequantial([<a list>]) là thể hiện việc các layer được xây dựng theo đúng thứ

tự trong [<a list>]. Phần tử đầu tiên của list thể hiện kết nối giưa input layer và layer

tiếp theo, các phần tử tiếp theo của list thể hiện kết nối của các layer tiếp theo.

Dense thể hiện một fully connected layer, tức toàn bộ các unit của layer trước

đó được nối với toàn bộ các unit của layer hiện tại. Giá trị đầu tiên

trong Dense bằng 1 thể hiện việc chỉ có 1 unit ở layer này (đầu ra của linear

regression trong trường hợp này bằng 1. input_shape = 2, chính là kích thước của

dữ liệu đầu vào. Kích thước này là một tuple nên ta cần viết dưới dạng 2. Về sau,

Page 25: ĐỀ TÀI : XÂY DỰNG ỨNG DỤNG PHÁT HIỆN VÀ PHÂN LOẠI …

15

khi làm việc với dữ liệu nhiều chiều, ta sẽ có các tuple nhiều chiều. Ví dụ, nếu input

là ảnh RGB với kích thước 224x224x3 pixel thì input_shape = 224, 224, 3.

Thể hiện việc chọn phương pháp cập nhật nghiệm, ở đâu ta sử

dụng Stochastic Gradient Descent (SGD) với learning rate lr=0.1. Các phương pháp

cập nhật nghiệm khác có thể được tìm thấy tại Keras-Usage of

optimizers. loss='mse' chính là mean squared error, là hàm mất mát của linear

regression.

Keras khá giống với scikit-learn ở chỗ cùng huấn luyện các mô hình bằng

phương thức .fit(). Ở đây, epochs chính là số lượng epoch và batch_size chính là

kích thước của một mini-batch.

1.5.3. Keras với logistic regression

Có hai sự khác biệt ở Activation và loss vì logistic regression sử dụng hàm

activation là sigmoid, hàm mất mát là trường hợp đặc biệt của cross entropy với hai

class.

Page 26: ĐỀ TÀI : XÂY DỰNG ỨNG DỤNG PHÁT HIỆN VÀ PHÂN LOẠI …

16

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

2.1 Mô tả bài toán

Nông nghiệp ứng dụng công nghệ thông tin đang trở thành xu thế mới, cải

thiện đáng kể nền nông nghiệp ở nhiều nơi, nhất là trong điều kiện biến đổi khí hậu

như hiện nay. Công nghệ thông tin ngày càng được ứng dụng rộng rãi trong nông

nghiệp, lĩnh vực phát triển nhất của nước ta. Các ứng dụng, hệ thống phát hiện và

nhận dạng sâu bệnh sử dụng kỹ thuật xử lý ảnh và thị giác máy tính đang thu hút

nhiều nhà nghiên cứu trong và ngoài nước.

Sắn là một loại cây được trồng rộng rãi ở vùng nhiệt đới và là lương thực

chính ở những vùng này. Tuy nhiên, mặc dù có khả năng chống chịu với các điều

kiện khắc nghiệt, sắn thường bị ảnh hưởng bởi các bệnh do vi rút gây ra, có thể gây

thiệt hại nghiêm trọng đến năng suất cây trồng. Do đó, một quy trình quan trọng

trong canh tác sắn là xác định các cây bị bệnh để có thể loại bỏ chúng kịp thời trước

khi bệnh lây lan thêm. Quy trình kiểm tra này theo truyền thống thường được thực

hiện thủ công bởi các chuyên gia nông nghiệp, nhưng việc này vừa tốn kém vừa

không hiệu quả. Với sự trưởng thành gần đây của thị giác máy tính, hy vọng rằng

quá trình kiểm tra có thể được giao cho máy móc trong tương lai rất gần. Việc triển

khai các mô hình học máy, học sâu có thể phân loại chính xác các cây sắn bị bệnh

có thể cung cấp một công cụ hiệu quả và tiết kiệm chi phí để hỗ trợ nông dân trồng

sắn bảo vệ cây trồng của họ.

Nghiên cứu này trình bày phương pháp để phát hiện và nhận dạng sâu bệnh

trên lá sắn. Bài toán được giải quyết thông qua hai giai đoạn chính là: phát hiện

vùng ứng viên có khả năng là sâu bệnh; nhận dạng sâu bệnh từ các vùng ứng viên

đã phát hiện.

2.2. Yêu cầu

• Tính tiện dụng: Trang web phải dễ đọc, dễ hiểu, dễ dùng. Thiết kế phải mới,

tuy nhiên không quá phức tạp gây khó chịu cho người dùng.

• Tính đúng đắn: Ứng dụng chạy không lỗi.

Page 27: ĐỀ TÀI : XÂY DỰNG ỨNG DỤNG PHÁT HIỆN VÀ PHÂN LOẠI …

17

• Tính thích nghi: Ứng dụng có thể chạy tốt trên nhiều thiết bị với cấu hình

phần cứng khác nhau và thiết kế kiến trúc thiết bị khác nhau.

• Tính tiến hoá: Ứng dụng phải dễ dàng được phát triển thêm tính năng mà

không gây ảnh hưởng đến những tính năng đã phát triển trước đó.

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

Các hình ảnh được phân thành năm loại, bốn trong số đó là các bệnh khác nhau

mà cây có thể mắc phải. Loại thứ năm là cây khỏe mạnh không bị bệnh nào trong số

bốn loại bệnh trên. Số lượng hình ảnh trong tập dữ liệu đào tạo cho mỗi lớp được

xác định như sau:

• Bệnh bạc lá do vi khuẩn sắn (CBB)

• Bệnh đốm nâu trên sắn (CBSD)

• Sâu xanh trên cây sắn (CGM)

• Bệnh khảm sắn (CMD)

• Cây khỏe mạnh

Bước tiếp theo là là kiểm tra một số hình ảnh đại diện từ mỗi lớp được lấy ngẫu

nhiên để cố gắng xác định bằng mắt một một số đặc điểm có thể được mô hình khai

thác. Các bức ảnh được chụp ở nhiều góc độ và điều kiện ánh sáng và góc độ chụp

khác nhau.

Tập dữ liệu được thay đổi kích thước thành 96x96 và sau đó CNN được đào tạo

với 2 lớp chập và hai lớp dày đặc. Lớp chập thứ nhất và thứ hai có 32 bộ lọc với

nhân 3x3 và 64 bộ lọc với nhân 3x3 tương ứng. Tổng hợp tối đa được thực hiện sau

mỗi lớp tích chập. Hai lớp dày đặc có 200 tế bào thần kinh và 5 tế bào thần kinh

(một cho mỗi lớp). Độ chính xác xấp xỉ 65%. Tập dữ liệu lớn hơn sẽ cung cấp cho

mô hình một loạt hình ảnh đa dạng hơn để đào tạo, do đó, nó có thể thu nhận các

đặc điểm tinh tế hơn giúp phân biệt các lớp khác nhau.

Page 28: ĐỀ TÀI : XÂY DỰNG ỨNG DỤNG PHÁT HIỆN VÀ PHÂN LOẠI …

18

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

Tập dữ liệu gồm 21.367 hình ảnh được dán nhãn được thu thập trong một cuộc

khảo sát thường xuyên ở Uganda. Hầu hết các hình ảnh có nguồn gốc từ những

người nông dân chụp ảnh khu vườn của họ và được chú thích bởi các chuyên gia tại

Viện Nghiên cứu Tài nguyên Cây trồng Quốc gia (NaCRRI) phối hợp với phòng thí

nghiệm AI tại Đại học Makerere, Kampala. Đây là định dạng thể hiện thực tế nhất

những gì nông dân cần chẩn đoán trong cuộc sống thực.

Dữ liệu được phân ra thành 5 loại: 4 loại bệnh và lá khoẻ mạnh.

- Các tập tin:

• [train / test] _images các tệp hình ảnh.

• image_id: tên tệp hình ảnh.

• Label: mã ID của bệnh.

• sample_submission.csv: Bản gửi mẫu được định dạng đúng, với nội dung

bộ thử nghiệm được tiết lộ.

• image_id: tên tệp hình ảnh.

• label mã ID: dự đoán cho bệnh.

• [train / test] _tfrecords tệp hình ảnh ở định dạng tfrecord.

• label_num_to_disease_map.json Ánh xạ giữa mỗi mã bệnh và tên bệnh

thực.

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

2.5.1 Usecase Upload hình ảnh

Mô tả usecase:

Tóm tắt: Use case này thể hiện chức năng chính của hệ thống.

Dòng sự kiện chính:

1. Người dùng mở ứng dụng.

2. Đưa người dùng đến màn hình chính.

Page 29: ĐỀ TÀI : XÂY DỰNG ỨNG DỤNG PHÁT HIỆN VÀ PHÂN LOẠI …

19

3. Người dùng load ảnh có sẵn vào phần upload image hiển thị trên màn hình

chính và chờ kết quả từ hệ thống.

4. Hệ thống hiển thị kết quả.

5. Người dùng chọn thao tác phù hợp để thực hiện.

6. Hệ thống lưu lại kết quả của hoạt động.

7. Kết thúc.

Tiền điều kiện: Người dùng mở ứng dụng. CSDL được load thành công.

Hậu điều kiện: Lưu lại việc thực thi các thao tác trên hệ thống (nếu có).

Biểu đồ Use case

Hình 10. Biểu đồ Usercase

Activity Diagram

Hình 11. Activity Diagram

Page 30: ĐỀ TÀI : XÂY DỰNG ỨNG DỤNG PHÁT HIỆN VÀ PHÂN LOẠI …

20

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

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

Việc huấn luyện mô hình Deep Learning bao gồm các bước:

• Chuẩn bị dữ liệu

• Xây dựng network

• Chọn thuật toán cập nhật nghiệm, xây dựng loss và phương pháp đánh

giá mô hình

• Huấn luyện mô hình.

• Đánh giá mô hình

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

Chúng em sử dụng trình biên tập mã Visual Studio Code để soạn thảo mã

nguồn.

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

Page 31: ĐỀ TÀI : XÂY DỰNG ỨNG DỤNG PHÁT HIỆN VÀ PHÂN LOẠI …

21

Chúng em sử dụng Python 3.7 trên nền tảng platform Anaconda.

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

Các thư viện được chúng em sử dụng trong đề tài là : TensorFlow, Numpy, Flask,

Keras.

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

Import các thư viện

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

Hình 14. Import thư viện

Page 32: ĐỀ TÀI : XÂY DỰNG ỨNG DỤNG PHÁT HIỆN VÀ PHÂN LOẠI …

22

Đặt tên Class

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

Tải mô hình lên

Hình 16.Upload mô hình

Page 33: ĐỀ TÀI : XÂY DỰNG ỨNG DỤNG PHÁT HIỆN VÀ PHÂN LOẠI …

23

Trang chủ em sử dụng html với trang index.html

Xử lý tệp và dự đoán label của nó

Hình 17. Trang index

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

Page 34: ĐỀ TÀI : XÂY DỰNG ỨNG DỤNG PHÁT HIỆN VÀ PHÂN LOẠI …

24

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

Hình 19. Trang chủ

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

Page 35: ĐỀ TÀI : XÂY DỰNG ỨNG DỤNG PHÁT HIỆN VÀ PHÂN LOẠI …

25

KẾT LUẬN

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

Trong quá trình xây dựng đề tài, nhóm đã cùng tìm hiểu và hoàn thành một

trang web tương đối hoàn chỉnh. Với sự hướng dẫn tận tình từ thầy Nguyễn Hà Huy

Cường, cùng kiến thức mà thầy cung cấp, chúng em đã áp dụng được Deep

Learning và mô hình CNN vào bài toán. Trong một khoảng thời gian hạn chế, nhóm

đã phát triển một trang web tương đối hoàn thiện. Trang web hiện tại đã có thể đáp

ứng tốt được các chức năng cơ bản của người sử dụng thông thường trong việc nhận

dạng được bệnh trên lá từ những hình ảnh được truyền vào.

Giao diện trang web thân thiện và dễ sử dụng. Nhóm đã đưa ra thiết kế sau

khi tham khảo trên nhiều ứng dụng khác nhau, vì vậy ứng dụng sẽ phù hợp với thói

quen của người sử dụng. Nhờ bộ dữ liệu và thuật toán áp dụng vào mà sau khi

người dùng nhập vào hình ảnh lá cây sắn đưa ra kết quả với độ chính xác cao, phân

loại được 4 loại bệnh phổ biến trên lá cây sắn mì và phát hiện được cây khoẻ mạnh.

Từ đó giúp người nông dân có thể mau chóng phát hiện bệnh trên cây sắn mì và có

cách khắc phục nhanh chóng, tránh được nhiều rủi ro cho người nông dân.

Bên cạnh đó, nhờ thực hiện đề tài mà chúng em còn có thêm nhiều hiểu biết

về Deep Learning, mô hình học sâu CNN và các thư viện như keras,

TensorFlow,…Từ đó áp dụng vào đề tài Phát hiện và phân loại bệnh trên cây sắn

mì.

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

Mặc dù đã cố gắng hoàn thành tốt đề tài nhưng vì thời gian còn có hạn nên

chúng em còn nhiều thiếu xót không tránh khỏi mong thầy cô cảm thông. Một số

hạn chế của đề tài như sau:

• Trang web còn chưa được hoàn thiện hoàn toàn

• Giao diện khá đơn giản

• Còn nhiều bệnh chưa phổ biến chưa phát hiện được

Page 36: ĐỀ TÀI : XÂY DỰNG ỨNG DỤNG PHÁT HIỆN VÀ PHÂN LOẠI …

26

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

Với những hạn chế tồn tại nêu trên, trong tương lai nhóm sẽ tiếp tục hoàn

thiện đề tài với những dự kiến như sau:

• Tìm hiểu và thêm nhiều bộ dữ liệu khác về bệnh trên cây sắn mì vào

trang web

• Cải thiện về mặt giao hiện trang web đẹp mắt và dễ sử dụng hơn

• Phát triển trên nhiều nền tảng khác nhau

• thử nghiệm thêm một số phương pháp phát hiện và nhận dạng khác để so

sánh ưu, khuyết điểm so với phương pháp đề xuất

Page 37: ĐỀ TÀI : XÂY DỰNG ỨNG DỤNG PHÁT HIỆN VÀ PHÂN LOẠI …

27

TÀI LIỆU THAM KHẢO

[1] https://codelearn.io/

[2] https://ichi.pro/vi/phan-tich-du-lieu-kham-pha-va-mo-hinh-co-so-

127992819476141

[3] https://www.thegioimaychu.vn/blog/

[4] https://vi.wikipedia.org/wiki/TensorFlow

[5] http://nghelaptrinh.net/convolutional-neural-network-la-gi/

[6] https://trituenhantao.io/kien-thuc/resnet-mang-hoc-sau-dung-nghia/

[7] https://keras.io/