1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đề 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ì

37 0 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, Phan Thị Thảo Nguyên
Người hướng dẫn 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 Khoa Khoa Học Máy Tính
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 37
Dung lượng 1,91 MB

Cấu trúc

  • Chương 1. TỔNG QUAN VỀ ĐỀ TÀI (11)
    • 1.1 Deep Learning (11)
      • 1.1.1 Deep Learning là gì ? (11)
      • 1.1.2 Cách thức hoạt động (12)
    • 1.2 Tổng quan về thư viện Tensorflow (13)
      • 1.2.1 Tensorflow là gì ? (13)
      • 1.2.3 Cách thức hoạt động (14)
    • 1.3 Mô hình CNN Convolutional Neural Network (15)
      • 1.3.1 Convolutional là gì? (15)
      • 1.3.2 Cấu trúc của mạng CNN (16)
    • 1.4. Tổng quan về mạng ResNet (18)
      • 1.4.1. Giới thiệu về mạng ResNet (18)
      • 1.4.2. Vanishing Gradient (18)
      • 1.4.3. Kiến trúc mạng ResNet (20)
      • 1.4.4. Xây dựng mạng ResNet -50 (22)
    • 1.5. Tìm hiểu về Keras (23)
      • 1.5.1. Giới thiệu về Keras (23)
      • 1.5.2 Keras với linear regression (24)
      • 1.5.3. Keras với logistic regression (25)
  • Chương 2. PHÂN TÍCH VÀ THIẾT KẾ (26)
    • 2.1 Mô tả bài toán (26)
    • 2.2. Yêu cầu (26)
    • 2.3. Phân tích dữ liệu khám phá (27)
    • 2.4. Chuẩn bị dữ liệu (28)
    • 2.5. Phân tích yêu cầu hệ thống (28)
      • 2.5.1 Usecase Upload hình ảnh (28)
  • Chương 3. XÂY DỰNG ĐỀ TÀI (30)
    • 3.1. Các bước huấn luyện mô hình (30)
    • 3.2. Cài đặt công cụ và môi trường (30)
    • 3.3. Cài đặt thư viện (31)
    • 3.4. Tiến hành lập trình (31)
    • 3.5. Một số hình ảnh của đề tài (34)
  • KẾT LUẬN (35)
    • 1. Kết quả đạt được (35)
    • 2. Hạn chế của đề tài (35)
    • 3. Hướng phát triển của đề tài (36)
  • TÀI LIỆU THAM KHẢO (37)

Nội dung

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

TỔNG QUAN VỀ ĐỀ TÀI

Deep Learning

Deep learning được bắt nguồn từ thuật toánNeural networkvố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 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:

• Decision Tree and Random Forest

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

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.

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

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

- Train và ước tính model

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

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 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.

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

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

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 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 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 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

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

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 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 đề đó

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:

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

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

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

• 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

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 :

• 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

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

Tìm hiể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

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ụngtf.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

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([]) là thể hiện việc các layer được xây dựng theo đúng thứ tự trong [] 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 thể hiện việc chỉ có 1 unit ở layer này (đầu ra của linear 1 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, 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

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.

PHÂN TÍCH VÀ THIẾT KẾ

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.

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

• 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 đó.

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ướ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.

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

• [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.

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

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

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

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

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

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 ca se

Hình 10 Biểu đồ Usercase Activity Diagram

XÂY DỰNG ĐỀ TÀI

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:

• 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

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

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

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.

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

Hình 14 Import thư viện Đặt tên Class

Hình 15 Đặt tên class Tải mô hình lên

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

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

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

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

Ngày đăng: 15/04/2024, 19:01

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN