1. Trang chủ
  2. » Tất cả

Phân loại trái cây hư hay tươi

27 3 0
Tài liệu đã được kiểm tra trùng lặp

Đ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 đề Phân loại trái cây hư hay tươi
Người hướng dẫn TS. Trần Vũ Hoàng
Trường học Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh
Chuyên ngành Khoa Điện Điện Tử
Thể loại Báo cáo môn học
Thành phố Hồ Chí Minh
Định dạng
Số trang 27
Dung lượng 3,37 MB
File đính kèm Code python 3.8.rar (2 KB)

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

Nội dung

Chương 1. Giới thiệu tổng quan 1.1. Giới thiệu đề tài. Hiện nay, ở nước ta nói riêng và ở các nước đang phát triển có nền nông nghiệp là một trong các ngành sản xuất chủ yếu, quá trình thu hoạch, phân loại và đánh giá chất lượng các loại sản phẩm nông nghiệp, đặc biệt là các loại hoa quả, chủ yếu còn phải thực hiện bằng các phương pháp thủ công. Đây là công việc không quá khó, nhưng tiêu tốn nhiều thời gian, công sức của con người và là rào cản đối với mở rộng phát triển quy mô sản xuất nông nghiệp. Do đó, nhiều phương pháp tự động hóa công việc thu hoạch, nhận dạng và đánh giá chất lượng hoa quả đã được nghiên cứu và đưa vào ứng dụng thực tế, trong đó sử dụng chủ yếu các phương pháp Xử lý ảnh đơn thuần. Tuy nhiên, các phương pháp này vẫn chưa thực sự thỏa mãn yêu cầu về khả năng nhận dạng một số lượng lớn các loại hoa quả với độ chính xác cao do bị hạn chế bởi các đặc trưng của bài toán phân loại hoa quả hư hay tốt: sự biến thiên về hình dạng, màu sắc, chi tiết trong từng loại quả cũng rất khó dự đoán trước… Trong thời gian gần đây, nhờ có sự phát triển mạnh mẽ về khả năng tính toán của các thế hệ máy tính hiện đại cũng như sự bùng nổ về dữ liệu thông qua mạng lưới Internet trải rộng, ta đã chứng kiến nhiều sự đột phá trong lĩnh vực Học máy, đặc biệt là trong lĩnh vực Thị giác máy tính. Sự quay lại và phát triển vượt bậc của các phương pháp Học sâu đã giúp Thị giác máy tính đạt được những thành tựu đáng kể trong lĩnh vực Nhận dạng ảnh, trong đó có bài toán phân loại hoa quả hư hay tươi. Đề tài nghiên cứu “Phân loại trái cây hư hay tươi.” đã được đưa ra với hy vọng có thể ứng dụng thành công các mô hình học sâu hiện đại để xây dựng một hệ thống phân loại hoa quả tự động, đặc biệt là đối với các loại hoa quả phổ biến tại nước ta.

Trang 1

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH

KHOA ĐIỆN ĐIỆN TỬ

BỘ MÔN KỸ THUẬT MÁY TÍNH - VIỄN THÔNG

BÁO CÁO MÔN HỌC MACHINE LEARNING

PHÂN LOẠI TRÁI CÂY HƯ HAY TƯƠI

NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỆN MÁY TÍNH

Trang 2

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

Trang 3

Tuy nhiên trong quá trình nghiên cứu đề tài, do kiến thức chuyên ngành còn hạn chếnên chúng em vẫn còn nhiều thiếu sót khi tìm hiểu, đánh giá và trình bày về đề tài Rất

Trang 4

Mục lục

Chương 1 Giới thiệu tổng quan 1

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

1.2 Mục tiêu 1

1.3 Thách thức 1

Những khó khăn tiêu biểu phải kể đến: 1

1.4 Giới hạn đề tài 4

Chương 2 Mạng nơ-ron tích chập (CNN) 5

2.1 Giới thiệu mạng nơ-ron tích chập 5

2.2 Kiến trúc Mạng nơ-ron tích chập 5

2.3 Sử dụng CNN trong model 8

Chương 3 Datashet và phương pháp đánh giá 11

3.1 Bộ datashet sử dụng 11

3.2 Môi trường huấn luyện 12

3.3 Phương pháp đánh giá 13

3.4 Đánh giá model 14

Chương 4 Kết quả 16

4.1 Đồ thị Loss và Accuracy 16

4.2 Kết quả 16

Chương 5 Kết luận 20

TÀI LIỆU THAM KHẢO 21

Trang 5

Danh mục hình vẽ

Hình 1: Vật thể đa dạng về góc nhìn 2

Hình 2: Vật thể đa dạng về kích thước, hình dạng, số lượng 2

Hình 3: Vật thể đa dạng về chủng loại 3

Hình 4: Vật thể bị nhiễu hạt 3

Hình 5: Vật thể bị lẫn vào nền 3

Hình 6: Kiến trúc cơ bản của một mạng tích chập 5

Hình 7: Ví dụ bộ lọc tích chập được sử dụng trên ma trận điểm ảnh 6

Hình 8: Trường hợp thêm/không thêm viền trắng vào ảnh khi tích chập 6

Hình 9: Phương thức Avarage Pooling và Max Pooling 7

Hình 10: Model dự án 9

Hình 11: Bộ datashet lấy từ trang Kaggle.com 10

Hình 12: Chia bộ train tổng thành 2 bộ nhỏ là train và validation 10

Hình 13: Data trong bộ train 11

Hình 14: Data trong bộ validation 11

Hình 15: Data trong bộ test 11

Hình 16: Notebook trên kaggle 12

Hình 17: Phương pháp Hold out 13

Hình 18: Đưa bộ train và bộ test vào để train model 13

Hình 19: Kết quả sau khi train xong model 13

Hình 20: Đánh giá model bằng bộ test 14

Hình 21: Gọi lại model lần nữa để đánh giá 14

Hình 22: Đồ thị Loss và Accuracy 15

Trang 6

Danh mục từ viết tắt

1 CNN Convolutional Neural Network – Mạng nơ ron tích chập

2 ReLU Rectified Linear Unit – Tinh chỉnh đơn vị tuyến tính

Trang 7

Chương 1 Giới thiệu tổng quan

1.1 Giới thiệu đề tài.

Hiện nay, ở nước ta nói riêng và ở các nước đang phát triển có nền nông nghiệp

là một trong các ngành sản xuất chủ yếu, quá trình thu hoạch, phân loại và đánh giá

chất lượng các loại sản phẩm nông nghiệp, đặc biệt là các loại hoa quả, chủ yếu còn

phải thực hiện bằng các phương pháp thủ công Đây là công việc không quá khó,

nhưng tiêu tốn nhiều thời gian, công sức của con người và là rào cản đối với mở rộng

phát triển quy mô sản xuất nông nghiệp Do đó, nhiều phương pháp tự động hóa công

việc thu hoạch, nhận dạng và đánh giá chất lượng hoa quả đã được nghiên cứu và đưa

vào ứng dụng thực tế, trong đó sử dụng chủ yếu các phương pháp Xử lý ảnh đơn

thuần Tuy nhiên, các phương pháp này vẫn chưa thực sự thỏa mãn yêu cầu về khả

năng nhận dạng một số lượng lớn các loại hoa quả với độ chính xác cao do bị hạn chế

bởi các đặc trưng của bài toán phân loại hoa quả hư hay tốt: sự biến thiên về hình

dạng, màu sắc, chi tiết trong từng loại quả cũng rất khó dự đoán trước…

Trong thời gian gần đây, nhờ có sự phát triển mạnh mẽ về khả năng tính toán

của các thế hệ máy tính hiện đại cũng như sự bùng nổ về dữ liệu thông qua mạng lưới

Internet trải rộng, ta đã chứng kiến nhiều sự đột phá trong lĩnh vực Học máy, đặc biệt

là trong lĩnh vực Thị giác máy tính Sự quay lại và phát triển vượt bậc của các phương

pháp Học sâu đã giúp Thị giác máy tính đạt được những thành tựu đáng kể trong lĩnh

vực Nhận dạng ảnh, trong đó có bài toán phân loại hoa quả hư hay tươi Đề tài nghiên

cứu “Phân loại trái cây hư hay tươi.” đã được đưa ra với hy vọng có thể ứng dụng

thành công các mô hình học sâu hiện đại để xây dựng một hệ thống phân loại hoa quả

tự động, đặc biệt là đối với các loại hoa quả phổ biến tại nước ta

Những khó khăn tiêu biểu phải kể đến:

- Sự đa dạng trong điểm nhìn – Viewpoint: Cùng một vật thể nhưng có thể có

rất nhiều vị trí và góc nhìn khác nhau, dẫn đến các hình ảnh thu được về vật thể đó sẽ

không giống nhau Việc huấn luyện để máy tính có thể hiểu được điều này thực sự là

một thách thức khó khăn

Trang 8

Hình 1: Vật thể đa dạng về góc nhìn.

- Sự đa dạng trong kích thước, số lượng, hình dạng: Các bức ảnh không có

cách nào thể hiện trường thông tin về kích thước, số lượng, hình dạng của vật thể

trong đời thực, và máy tính cũng chỉ có thể tính toán được tỉ lệ tương đối của vật thể

so với bức ảnh bằng cách đếm theo số lượng các điểm ảnh vật thể đó chiếm trong ảnh

Hình 2: Vật thể đa dạng về kích thước, hình dạng, số lượng.

Trang 9

Hình 3: Vật thể đa dạng về chủng loại.

- Vật thể bị nhiễu hạt: Trong các bức ảnh, vật thể có thể bị nhiễu bởi các hạt

chấm đen nhỏ, do ảnh bị hư bi nhiễu điều này làm cho kết quả có phần bị sai sót

Hình 4: Vật thể bị nhiễu hạt.

- Sự lộn xộn phức tạp của nền: Trong nhiều trường hợp, vật thể cần nhận dạng

bị lẫn gần như hoàn toàn vào nền của bức ảnh, sự lẫn lộn về màu sắc, họa tiết giữa vật

thể và nền khiến cho việc nhận dạng trở nên vô cùng khó khăn, kể cả với con người

Trang 10

Hình 5: Vật thể bị lẫn vào nền.

1.4 Giới hạn đề tài.

- Vì đề mục tiêu ở trên nhóm đưa ra phân biệt trái cây hư hay tốt, trong 3 loại

trái cây: Táo, cam, chuối, nên mô hình của nhóm chỉ thực hiện phân loại trái cây hư

hay tốt, không nhận biết được là loại trái cây nào, các hình ảnh đã được tách riêng

từng trái cây trong 1 hình không lẫn lộn nhiều loại trái cây, hình ảnh có các trái cây hư

hết hoặc tốt hết không phân biệt được trái nào hư trái nào tốt

Trang 11

Chương 2 Mạng nơ-ron tích chập (CNN)

2.1 Giới thiệu mạng nơ-ron tích chập.

Mạng nơ-ron tích chập (CNN - Convolutional Neural Network) là một trong

những mô hình mạng Học sâu phổ biến nhất hiện nay, có khả năng nhận dạng và phân

loại hình ảnh với độ chính xác rất cao, thậm chí còn tốt hơn con người trong nhiều

trường hợp Mô hình này đã và đang được phát triển, ứng dụng vào các hệ thống xử lý

ảnh lớn của Facebook, Google hay Amazon… cho các mục đích khác nhau như các

thuật toán tagging tự động, tìm kiếm ảnh hoặc gợi ý sản phẩm cho người tiêu dùng

Sự ra đời của mạng CNN là dựa trên ý tưởng cải tiến cách thức các mạng nơ-ron

nhân tạo truyền thống học thông tin trong ảnh Do sử dụng các liên kết đầy đủ giữa các

điểm ảnh vào node, các mạng nơ-ron nhân tạo truyền thẳng (Feedforward Neural

Network) bị hạn chế rất nhiều bởi kích thước của ảnh, ảnh càng lớn thì số lượng liên

kết càng tăng nhanh và kéo theo sự bùng nổ khối lượng tính toán Ngoài ra sự liên kết

đầy đủ này cũng là sự dư thừa khi với mỗi bức ảnh, các thông tin chủ yếu thể hiện qua

sự phụ thuộc giữa các điểm ảnh với những điểm xung quanh nó mà không quan tâm

nhiều đến các điểm ảnh ở cách xa nhau Mạng CNN ra đời với kiến trúc thay đổi, có

khả năng xây dựng liên kết chỉ sử dụng một phần cục bộ trong ảnh kết nối đến node

trong lớp tiếp theo thay vì toàn bộ ảnh như trong mạng nơ-ron truyền thẳng

2.2 Kiến trúc Mạng nơ-ron tích chập

Các lớp cơ bản trong một mạng CNN bao gồm: Lớp tích chập (Convolutional),

Lớp kích hoạt phi tuyến ReLU (Rectified Linear Unit), Lớp lấy mẫu (Pooling) và Lớp

kết nối đầy đủ (Fully-connected), được thay đổi về số lượng và cách sắp xếp để tạo ra

các mô hình huấn luyện phù hợp cho từng bài toán khác nhau

Hình 6: Kiến trúc cơ bản của một mạng tích chập.

- Lớp tích chập:

Đây là thành phần quan trọng nhất trong mạng CNN, cũng là nơi thể hiện tư

tưởng xây dựng sự liên kết cục bộ thay vì kết nối toàn bộ các điểm ảnh Các liên kết

Trang 12

Hình 7: Ví dụ bộ lọc tích chập được sử dụng trên ma trận điểm ảnh.

Trong ví dụ ở hình 7, ta thấy bộ lọc được sử dụng là một ma trận có kích thước

3x3 Bộ lọc này được dịch chuyển lần lượt qua từng vùng ảnh đến khi hoàn thành quét

toàn bộ bức ảnh, tạo ra một bức ảnh mới có kích thước nhỏ hơn hoặc bằng với kích

thước ảnh đầu vào Kích thước này được quyết định tùy theo kích thước các khoảng

trắng được thêm ở viền bức ảnh gốc và được tính theo công thức (1)

O= i+2∗p−k s +1(1)

Trong đó:

- o: kích thước ảnh đầu ra

- i: kích thước ảnh đầu vào

- p: kích thước khoảng trắng phía ngoài viền của ảnh gốc

- k: kích thước bộ lọc

- s: bước trượt của bộ lọc

Trang 13

Hình 8: Trường hợp thêm/không thêm viền trắng vào ảnh khi tích chập.

Như vậy, sau khi đưa một bức ảnh đầu vào cho lớp Tích chập ta nhận được kết

quả đầu ra là một loạt ảnh tương ứng với các bộ lọc đã được sử dụng để thực hiện phép

tích chập Các trọng số của các bộ lọc này được khởi tạo ngẫu nhiên trong lần đầu tiên

và sẽ được cải thiện dần xuyên suốt quá trình huấn luyện

- Lớp kích hoạt phi tuyến ReLU:

Lớp này được xây dựng với ý nghĩa đảm bảo tính phi tuyến của mô hình huấn

luyện sau khi đã thực hiện một loạt các phép tính toán tuyến tính qua các lớp Tích

chập Lớp Kích hoạt phi tuyến nói chung sử dụng các hàm kích hoạt phi tuyến như

ReLU hoặc sigmoid, tanh… để giới hạn phạm vi biên độ cho phép của giá trị đầu ra

Trong số các hàm kích hoạt này, hàm ReLU được chọn do cài đặt đơn giản, tốc độ xử

lý nhanh mà vẫn đảm bảo được tính toán hiệu quả Cụ thể, phép tính toán của hàm

ReLU chỉ đơn giản là chuyển tất cả các giá trị âm thành giá trị 0

f(x)=max(0 ,x)(2)

Thông thường, lớp ReLU được áp dụng ngay phía sau lớp Tích chập, với đầu ra

là một ảnh mới có kích thước giống với ảnh đầu vào, các giá trị điểm ảnh cũng hoàn

toàn tương tự trừ các giá trị âm đã bị loại bỏ

- Lớp lấy mẫu:

Một thành phần tính toán chính khác trong mạng CNN là lấy mẫu (Pooling),

thường được đặt sau lớp Tích chập và lớp ReLU để làm giảm kích thước kích thước

ảnh đầu ra trong khi vẫn giữ được các thông tin quan trọng của ảnh đầu vào Việc giảm

kích thước dữ liệu có tác dụng làm giảm được số lượng tham số cũng như tăng hiệu

quả tính toán Lớp lấy mẫu cũng sử dụng một cửa sổ trượt để quét toàn bộ các vùng

trong ảnh tương tự như lớp Tích chập, và thực hiện phép lấy mẫu thay vì phép tích

chập – tức là ta sẽ chọn lưu lại một giá trị duy nhất đại diện cho toàn bộ thông tin của

vùng ảnh đó

Hình 9 thể hiện các phương thức lấy mẫu thường được sử dụng nhất hiện nay, đó là

Max Pooling (lấy giá trị điểm ảnh lớn nhất) và Avarage Pooling (lấy giá trị trung bình

của các điểm ảnh trong vùng ảnh cục bộ)

Trang 14

Hình 9: Phương thức Avarage Pooling và Max Pooling.

Như vậy, với mỗi ảnh đầu vào được đưa qua lấy mẫu ta thu được một ảnh đầu ra

tương ứng, có kích thước giảm xuống đáng kể nhưng vẫn giữ được các đặc trưng cần

thiết cho quá trình tính toán sau này

- Lớp kết nối đầy đủ:

Lớp kết nối đầy đủ này được thiết kế hoàn toàn tương tự như trong mạng nơ-ron

truyền thống, tức là tất cả các điểm ảnh được kết nối đầy đủ với node trong lớp tiếp

theo So với mạng nơ-ron truyền thống, các ảnh đầu vào của lớp này đã có kích thước

được giảm bớt rất nhiều, đồng thời vẫn đảm bảo các thông tin quan trọng cho việc nhận

dạng Do vậy, việc tính toán nhận dạng sử dụng mô hình truyền thẳng đã không còn

phức tạp và tốn nhiều thời gian như trong mạng nơ ron truyền thống

2.3 Sử dụng CNN trong model.

Hình 10 thể hiện model có sử dụng 3 lớp layer để trích xuất đặc trưng, 1 lớp

Fully Connected Layer để kết nối các đặc trưng lại cho ra được kết quả

Đối với Pooling layer, chúng ta chỉ có hyper-parameters do người dùng thiết lập

lúc đầu là Filter size, Stride và Filter type (Max hoặc Avg Pooling) mà không có các

parameters được học trong quá trình huấn luyện Do đó, trong nhiều trường hợp chúng

ta thường coi Convolutional Layer + Pooling layer là 1 Layer

Ở lớp layer 1 ta cho dữ liệu đầu vào qua lớp Convolution để lọc sau đó kích hoạt

phi tuyến ReLu Sau đó tiến hành gọi hàm BatchNormalization() để chuẩn hóa dữ liệu

đầu vào Tiếp tục gọi hàm SeparableConv2D() với đầu vào là dữ liệu đã qua hàm

Conv2D trước đó, tiếp tục kích hoạt hàm tuyến ReLu Mục đích của việc sử dụng

Convolution là để phát hiện các patterns trong dữ liệu đầu vào như edge, objects, shape

….Sau khi đã Convolution tiến hành gọi MaxPooling2D để làm giảm kích thước kích

thước ảnh đầu ra trong khi vẫn giữ được các thông tin quan trọng của ảnh đầu vào

Việc giảm kích thước dữ liệu có tác dụng làm giảm được số lượng tham số cũng như

tăng hiệu quả tính toán Tiếp đó tiến hành BacthNomalization() để chuẩn hóa Sau khi

đã hoàn thành các bước trên ta tiến hành gọi hàm Dropout(0.3) Hàm này thực hiện

chức năng bỏ đi 30% kết quả thu được chỉ lấy 70% kết quả

Ở lớp layer 2 ta thực hiện tương tự như ở layer 1, với dữ liệu đầu vào là 70% kết

quả của lớp layer 1 Tiến hành SeparableConv2D(), tiếp tục kích hoạt hàm tuyến

ReLu Mục đích của việc sử dụng Convolution là để phát hiện các patterns trong dữ

liệu đầu vào như edge, objects, shape ….Sau khi đã Convolution tiến hành gọi Tiếp đó

tiến hành BacthNomalization() để chuẩn hóa Sau đó gọi hàm MaxPooling2D để làm

giảm kích thước kích thước ảnh đầu ra trong khi vẫn giữ được các thông tin quan trọng

của ảnh đầu vào Việc giảm kích thước dữ liệu có tác dụng làm giảm được số lượng

Trang 15

tham số cũng như tăng hiệu quả tính toán Sau khi đã hoàn thành các bước trên ta tiến

hành gọi hàm Dropout(0.4) Hàm này thực hiện chức năng bỏ đi 40% kết quả thu được

chỉ lấy 60% kết quả trong 70% của layer 1

Ở lớp layer 3 ta thực hiện tương tự như ở layer 2, với dữ liệu đầu vào là 60% kết

quả của lớp layer 2 Tiến hành SeparableConv2D(), tiếp tục kích hoạt hàm tuyến

ReLu Mục đích của việc sử dụng Convolution là để phát hiện các patterns trong dữ

liệu đầu vào như edge, objects, shape ….Sau khi đã Convolution tiến hành gọi Tiếp đó

tiến hành BacthNomalization() để chuẩn hóa Sau đó gọi hàm MaxPooling2D để làm

giảm kích thước kích thước ảnh đầu ra trong khi vẫn giữ được các thông tin quan trọng

của ảnh đầu vào Việc giảm kích thước dữ liệu có tác dụng làm giảm được số lượng

tham số cũng như tăng hiệu quả tính toán Sau khi đã hoàn thành các bước trên ta tiến

hành gọi hàm Dropout(0.5) Hàm này thực hiện chức năng bỏ đi 50% kết quả thu được

chỉ lấy 50% kết quả trong 60% của layer 2

Ở lớp Fully Connected Layer ta tiến hành gọi hàm Flatten()Trước khi kết nối

với Fully connected layer, chúng ta cần phải thực hiện Flatten để chuyển dữ liệu từ

dạng 3-dimension thành 2-dimension Tiến hành gọi hàm Dense(128, activation='relu',

kernel_initializer='he_uniform') để kết nối các đặc trưng được trích xuất ra ở lớp layer

3 thành 128 đặc trưng Sau đó lại gọi hàm Dropout(0.3) để bỏ đi 30% trong 128 đặc

trưng đã kết nối, chỉ lấy 70% trong 128 đặc trưng Sau đó gọi hàm Dense(1,

activation='sigmoid') để kết nối các đặc trưng trước đó thành 1 đặc trưng duy nhất cũng

là kết quả của model là hư hay tốt Với activation='sigmoid' trả về giá trị là 0 hoặc 1

Trang 16

Hình 10: Model dự án.

Trang 17

Chương 3 Datashet và phương pháp đánh

giá.

3.1 Bộ datashet sử dụng.

Nhóm sử dụng bộ datashet được lấy từ trang kaggle.com

Bộ datashet nhóm sử dụng ở hình 11 gồm một bộ train, và một bộ test

Bộ Train có chưa 6 mục nhỏ gồm 3 loại trái cây cam, táo, chuối với đặc điểm

hư hay tốt

Bộ Test có chưa 6 mục nhỏ gồm 3 loại trái cây cam, táo, chuối với đặc điểm hư

hay tốt

Hình 11: Bộ datashet lấy từ trang Kaggle.com.

Trong đề tài này nhóm chia bộ datashet train thành 2 bộ nhỏ là bộ train chiếm

80% và bộ validation chiếm 20% Từ đó datashet có 3 bộ: bộ train, bộ test, bộ

validation

Hình 12: Chia bộ train tổng thành 2 bộ nhỏ là train và validation

Bộ train gồm 4921 ảnh trái táo, cam, chuối tươi và 3799 ảnh trái táo, cam, chuối

Ngày đăng: 31/01/2023, 10:01

TỪ KHÓA LIÊN QUAN

w