Tải bản đầy đủ (.pdf) (26 trang)

Bài toán phát hiện và nhận diện trái cây fruit classification

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.03 MB, 26 trang )

Mục lục
Lời cảm ơn ....................................................... Error! Bookmark not defined.
Chương 1: Giới thiệu ................................................................................... 2
1.1. Đặt vấn đề .................................................................................................... 2
1.2. Thách thức đặt ra .......................................................................................... 2
1.3. Hướng giải quyết .......................................................................................... 3

Chương 2: Khái quát các bước thực hiện................................................... 4
Chương 3: Chuẩn bị dữ liệu ........................................................................ 6
3.1. Bộ dataset Fruit 360 ..................................................................................... 6
3.2. Xây dựng bộ data hoàn chỉnh kết hợp bộ Fruit 360 ...................................... 7

Chương 4: Mạng CNN ............................................................................... 14
4.1. Mạng VGG .................................................................................................15
4.1.1. Mạng VGG16: .......................................................................................16
4.1.2. Mạng VGG19: .......................................................................................17
4.2. Mạng Resnet ...............................................................................................18


Mạng Resnet50: ........................................................................................19

Chương 5: Kết quả và hướng phát triển .................................................. 22
5.1. Kết quả thu được: ........................................................................................22
5.2. Kết luận và hướng phát triển: ......................................................................25

Tài liệu tham khảo ..................................................................................... 26


Chương 1: Giới thiệu
1.1. Đặt vấn đề


Hình 1.1. Ảnh gian hàng với các loại táo khác nhau
Thông thường, khi bước vào một cửa hàng bán hoa quả, ta có thể thấy rõ được
các loại quả đã được phân loại sẵn và xếp thành từng vùng riêng biệt. Kể cả khi nhãn
của các gian hàng bị mất, nhoè, hay là khi trộn lẫn các loại hoa quả lại với nhau thì
chúng ta cũng có thể biết được đâu là loại quả gì thơng qua những kiến thức cơ bản
mà ta đã được học từ bé. Nhưng với máy thì sao, làm thế nào mà máy có thể biết
được đâu là loại quả gì ?

1.2. Thách thức đặt ra
Đơi mắt và bộ não quyết định logic nhận biết là do trải qua hàng triệu năm tiến
hố mới có được. Vậy làm sao để có thể thực hiện cơng việc vốn đơn giản đó với
những sinh vật vốn trải qua hàng triệu năm đã tiến hố thơng qua máy tính ?
Máy tính cũng như con người, muốn máy thực hiện việc phân loại, chúng ta
phải huấn luyện chúng, cho chúng học dần dần thông qua những bức ảnh hoa quả.
Thách thức đặt ra ở đây, số lượng ảnh đủ để cho máy tính có thể học và phân
loại được các loại hoa quả là bao nhiêu ảnh ? Vì nếu xét trên một bộ dữ liệu quá nhỏ,
2


tầm chục ảnh mỗi loại sẽ không thể mô tả chính xác hết được về các loại quả ấy.
Nếu chỉ phân loại giữa hai loại quả có sự khác biệt rõ ràng, có thể chỉ cần khoảng
vài nghìn bức ảnh; nhưng nếu có nhiều loại quả khác nhau, trong đó lại có những
loại chung nhau những đặc tính cơ bản như màu sắc, thì bộ dữ liệu đủ để cho máy
học có lẽ sẽ phải lên tới hàng trăm nghìn ảnh mỗi loại.
Một thách thức nữa phải kể đến là mơ hình học máy phù hợp đối với bài tốn
và bộ dữ liệu đang xét, từ đó đưa ra được kết quả tốt nhất cho bài toán.

1.3. Hướng giải quyết
Đối với bài toán này, ta sẽ xét đến năm loại hoa quả (táo, cam, chuối, nho, dứa)
và sử dụng CNN để giải quyết bài toán trên tập dữ liệu khá đa dạng (cụ thể chi tiết

sẽ đề cập ở các chương sau).

3


Chương 2: Khái quát các bước thực hiện

Hình 2.1. Sơ đồ các bước thực hiện
Bước 1: Chuẩn bị dữ liệu
Đầu tiên cần phải chuẩn bị một bộ các bức ảnh đủ lớn cho năm loại hoa quả
táo, cam, chuối, dứa, nho. Những bức ảnh này có được thơng qua việc chụp các bức
ảnh với hoa quả trong nhà, ngoài chợ và kết hợp việc tìm các bức ảnh trên mạng.
Yêu cầu đối với dữ liệu là phải đa dạng và theo nhiều góc nhìn khác nhau. Ví
dụ đối với quả cam, ta sẽ phải tìm những bức ảnh chụp một quả cam theo nhiều góc
độ, những quả cam có cuống và không cuống, chụp nhiều quả cam đứng cạnh hoặc
xếp chồng lên nhau, chụp những quả cam lơ lửng trên cây hay đang bọc trong lưới
ở các gian hàng ngoài chợ. Ta cũng sẽ lấy những ảnh cắt lát bên trong quả cam ra để
biết được đâu là quả cam trong những trường hợp đặc biệt (bị cắt, bị che 1 phần, …).
Cuối cùng ta sẽ phải phân chia bộ dữ liệu thành các tập train (dùng cho máy
học) và tập test (để đánh giá mơ hình sau khi cho máy học) với tỉ lệ thích hợp để
đảm bảo số lượng ảnh train đủ lớn để máy có thể học và biết được đâu là loại quả gì,
đồng thời số ảnh test không quá nhỏ, đủ để đánh giá khách quan mơ hình sử dụng
có tốt hay khơng.
Có thể nói đây chính là bước quan trọng nhất trong cả bài toán.

4


Bước 2: Sử dụng các thuật toán để huấn luyện
Trong bước này, chúng ta sẽ sử dụng dữ liệu train để từng bước cải thiện khả

năng của mơ hình trong việc dự đoán một bức ảnh được đưa ra là táo, cam, chuối,
dứa hay nho. Nó giống như việc xử lý một tác vụ, với càng nhiều kinh nghiệm thì
kết quả cho ra càng tốt.
Ở đây, các thuật tốn có thể sử dụng để huấn luyện mơ hình bao gồm CNN,
SVM, Linear Regression, Random Forest ... Mỗi thuật toán lại có những bước xử lý
khác nhau và những ưu nhược điểm phụ thuộc vào bài toán đặt ra.
Để kiểm tra độ hiệu quả trên nhóm dữ liệu test và dữ liệu thực tế cuối cùng, thì
trong quá trình huấn luyện, việc kiểm tra chéo (cross validation) sẽ giúp chúng ta
bằng cách tiếp tục phân chia nhỏ nhóm dữ liệu đào tạo (train) thành các tập train và
test nhỏ hơn.
Hiện nay, CNN đang là mơ hình tốt nhất, là xu hướng nghiên cứu hàng đầu
trong lĩnh vực thị giác máy tính.
Bước 3: Đánh giá mơ hình và đưa ra dự đốn
Sau khi lựa chọn mơ hình thuật tốn và huấn luyện chúng bằng bộ dữ liệu train,
ta sẽ sử dụng bộ dữ liệu test (đã được phân chia ở bước 1) để đánh giá hiệu quả và
độ khái quát của mô hình đối với dữ liệu mới. Nếu như kết quả đạt được là ổn với
độ chính xác cao, ta có thể đưa mơ hình vào hoạt động. Nếu khơng ta sẽ tiến hành
tinh chỉnh bằng cách thay đổi các thông số thuật tốn, thay đổi loại thuật tốn hay
thậm chí là thay đổi cả bộ dữ liệu.

5


Chương 3: Chuẩn bị dữ liệu
Như đã trình bày ở chương trước, đối với bất kỳ một hệ thống học máy nào,
việc chuẩn bị dữ liệu là khâu quan trọng nhất quyết định trực tiếp đến mức độ thành
công của hệ thống. Tuy nhiên, các nghiên cứu về bài toán phân loại hoa quả hiện
nay hầu như đều gặp vấn đề lớn khi kiểm tra trên một ảnh bất kỳ, lý do là vì bộ dữ
liệu mà họ đưa ra chưa đủ tốt (số lượng ảnh cịn ít và khơng đủ độ đa dạng). Do đó,
việc xây dựng bộ dữ liệu chuẩn là rất cần thiết, để đảm bảo tính hiệu quả của mơ

hình cũng như phục vụ cho những bài toán ở mức độ cao hơn.
Để xây dựng bộ dữ liệu về hoa quả, nhóm chúng em sử dụng bộ dataset Fruit
360 cho năm loại quả kết hợp với việc lấy ảnh trên các trang web chuyên về ảnh như
Shutterstock, Pinterest hay thậm chí là sử dụng cả Google image.

3.1. Bộ dataset Fruit 360
Bộ dataset Fruit 360 là một bộ dữ liệu lớn gồm rất nhiều loại quả khác nhau với
số lượng ảnh vô cùng lớn, được thực hiện dựa trên việc cắt từng frame một qua một
video khoảng chừng 20 giấy quay xung quanh mỗi loại quả trên nền trắng.
Các thông số về bộ dữ liệu:
- Tổng số ảnh: 82213 ảnh.
- Kích thước tập train: 61488 ảnh (một loại quả mỗi ảnh)
- Kích thước tập test: 20622 ảnh (một loại quả mỗi ảnh)
- Số class: 120 class
- Kích thước ảnh: 100 x 100 pixels.
Các lớp quả khác nhau của cùng một loại quả (chẳng hạn táo có táo vàng, táo
xanh, …) được chia làm các class khác nhau.
Link tải bộ data (có mơ tả chi tiết): />
6


3.2. Xây dựng bộ data hoàn chỉnh kết hợp bộ Fruit 360
Ưu điểm của bộ dataset Fruit 360 là có rất nhiều các loại quả khác nhau với số
lượng lớn các ảnh có kích thước phù hợp.
Tuy nhiên, nhược điểm lớn nhất của bộ dữ liệu này chính là thiếu đi sự đa dạng;
hay nói cách khác, bộ dữ liệu bao gồm các bức ảnh trái cây quá đẹp đã được segment
sẵn, chỉ quanh đi quẩn lại việc nhìn một loại quả theo các hướng khác nhau, do đó
dẫn đến việc over-fitting và khơng đánh giá được tính hiệu quả của mơ hình và nếu
đem một ảnh hoa quả khác để đánh giá (ví dụ ảnh nhiều quả táo xen lẫn nhau trong
thùng), chắc chắn độ chính xác sẽ cực kỳ thấp.

Over-fitting xảy ra khi mơ hình q hợp lý, rất khớp với bộ huấn luyện nhưng
khi đem ra dự đốn với dữ liệu mới. Do đó, để tránh tình trạng này, chúng em sẽ
thực hiện lấy thêm ảnh kết hợp sử dụng bộ Fruit 360 để đưa ra bộ dữ liệu train và
test hoàn chỉnh hơn.
Để bộ dữ liệu được hồn thiện, nhóm chúng em chuẩn bị ba bộ dữ liệu:
Bộ thứ nhất sinh ra từ tập dataset Fruit 360.
Hai bộ còn lại được lấy từ trên mạng, bằng cách crawl ảnh từ Shutterstock và
Google Image.
Toàn bộ tập sinh ra từ Fruit 360 và một bộ lấy trên mạng dùng để làm tập ảnh
train, còn bộ còn lại sẽ được dùng làm ảnh test.
Sử dụng các hiệu ứng (flip, rotate, …) kết hợp với việc thêm nhiễu (cách thức
thêm nhiễu là lồng các ảnh quả với các ảnh phong cảnh, ảnh bàn ghế) vào các ảnh
bên trong tập train. Mục đích của việc làm này là làm đa dạng và làm dày tập train.
Một số thí dụ ảnh trong bộ test:

7


Táo:

Hình 3.2.1. Ảnh cây táo vàng

Hình 3.2.2. Ảnh gian hàng táo các loại

Hình 3.2.3. Ảnh hai miếng táo xanh

Hình 3.2.4. Ảnh giỏ táo bên hồ

8



Cam:

Hình 3.2.5. Ảnh cam với nước cam

Hình 3.2.6. Ảnh các khay cam canh

Hình 3.2.7. Ảnh cam màu khác nhau

Hình 3.2.8. Ảnh cam trên cành cây

9


Chuối:

Hình 3.2.9. Ảnh nải chuối

Hình 3.2.10. Ảnh buồng chuối

Hình 3.2.11. Ảnh lột vỏ chuối

Hình 3.2.12. Ảnh trái chuối mặc đồ

10


Nho:

Hình 3.2.13. Ảnh nho màu khác nhau


Hình 3.2.14. Ảnh nho mọc trên cây

Hình 3.2.15. Ảnh rượu nho

Hình 3.2.16. Ảnh nhó với khay, đĩa

11


Dứa:

Hình 3.2.17. Ảnh nhiều quả dứa

Hình 3.2.18. Ảnh dứa cắt lát

Hình 3.2.19. Ảnh dứa mặc đồ màu đơng

Hình 3.2.20. Ảnh vườn dứa

12


Số lượng ảnh trong bộ test:
Loại quả
(class)

Số lượng ảnh
test


Táo

2100

Cam

1394

Chuối

1348

Nho

1617

Dứa

1632

Bảng 3.2.1. Số lượng ảnh trong bộ dữ liệu test

13


Chương 4: Mạng CNN

Hình 4.1. Mơ hình mạng CNN

Mơ hình mạng CNN gồm ba thành phần chính:

- Đầu vào là tập dữ liệu gồm các ảnh.
- Hidden Layers: trong phần này, mạng sẽ tiến hành tính tốn hàng loạt phép
tích chập (Convolution) và phép hợp nhất (Pooling) để phát hiện ra các đặc trưng.
Ví dụ, nếu ta có hình ảnh con ngựa vằn thì trong phần này mạng sẽ nhận diện các
sọc vằn, hai tai và bốn chân của nó.
- Classification: tại phần này, một lớp với các liên kết đầy đủ (Fully-Connected)
sẽ đóng vai trị như một bộ phân lớp các đặc trưng đã trích rút được trước đó. Sau
cùng, tầng này sẽ đưa ra xác suất của một đối tượng trong ảnh.
Do đã trình bày trong bài báo cáo giữa kỳ nên nhóm chúng em xin phép khơng
đi sâu vào các lớp trong mạng CNN mà sẽ nói thẳng về các mơ hình CNN có sẵn mà
chúng em sử dụng, đó là Resnet50, VGG16 và VGG19.

14


4.1. Mạng VGG

Hình 4.1.1. Tổng quan các loại mạng VGG
Mạng VGG ra đời năm 2014 và được giới thiệu tại hội thảo ICLR 2014. Đặc
điểm của mạng VGG là sử dụng chuỗi các lớp tích chập Conv liên tiếp (hai hay ba
lớp Conv) và tiếp nối theo sau là một lớp Max Pooling 2D. Nó khác với một số loại
mạng ra đời trước đó như LeNet, AlexNet, vốn chỉ sử dụng các cặp lớp ConvMaxpooling liên tiếp.
Ngay sau Conv cuối cùng là một lớp Flatten để chuyển ma trận bốn chiều của
Conv layer về ma trận hai chiều. Tiếp nối sau đó là các lớp Fully-Connected và lớp
kích hoạt Softmax.
Một số điểm nổi bật của VGG:

15



- Việc sử dụng kết hợp hai hay ba Kernel 3x3 có hiệu quả hơn một Kernel 5x5
về trường tiếp nhận, giúp mạng sâu hơn mà lại giảm tham số tính tốn cho mơ hình.
Ba Conv 3x3 sẽ có trường tiếp nhận như một Conv 7x7 (đặc trưng của mạng ZFNet).
- Kích thước đầu vào giảm dần qua từng Conv nhưng tăng số chiều sâu.
- Áp dụng tốt cho các bài toán Classification và Localizer (hay được dùng trong
Object Detection).
- Sử dụng hàm kích hoạt Relu sau mỗi Conv và train bằng Batch Gradient
Descent.
- Có sử dụng kỹ thuật tăng cường để làm dày dữ liệu trong quá trình train.
Kiến trúc mơ hình này gồm nhiều loại biến thể khác nhau nhưng trong Keras
hiện tại mới chỉ hỗ trợ hai pre-trained model của VGG là VGG16 và VGG19.
4.1.1. Mạng VGG16:

Hình 4.1.1.1. Mơ hình mạng VGG16

16


Cấu trúc của VGG16 bao gồm:
- 13 lớp tích chập (Conv2 hoặc Conv3) đều có Kernel 3x3.
- Sau các layer Conv là Maxpooling giảm kích thước xuống cịn một nửa, và
ba lớp Fully-Connected.
4.1.2. Mạng VGG19:

Hình 4.1.2.1. Mơ hình mạng VGG19
Mạng VGG19 cũng tương tự như VGG16, nó chỉ khác ở chỗ có thêm ba lớp
tích chập Conv3 ở ba tầng tích chập cuối (tạo thành bốn lớp conv chồng lên nhau).

17



4.2. Mạng Resnet

Hình 4.2.1. Các mơ hình mạng Resnet
Mạng Resnet (Residual Network) là một loại mạng được phát triển bởi
Microsoft năm 2015 với bài viết “Deep residual learning for image recognition”.
Link bài viết:
/>g_CVPR_2016_paper.pdf
Resnet có cấu trúc gần giống với VGG với nhiều lớp chồng lên nhau làm cho
mơ hình sâu hơn. Nhưng độ sâu của Resnet sâu hơn nhiều so với VGG (24, 55, 101
và 151).
Khi train các mơ hình Deep CNN (có số lượng layers lớn chồng lên nhau), ta
hay gặp phải vấn đề về vanishing/explodes Gradients. Vấn đề này được giải quyết
bằng cách thêm Batch Normalization giúp các hệ số trở nên cân bằng hơn không quá
nhỏ hay q lớn.
Có một vấn đề nữa, độ chính xác của mơ hình học sâu bắt đầu bão hồ, thậm
chí giảm so với ít layer khi stack nhiều layer hơn. Vấn đề này không phải do Overfitting, mà do trong quá trình stack thêm các layer sẽ khơng học thêm được gì cả nên
độ chính xác sẽ khơng tăng. Resnet được ra đời cũng nhằm giải quyết vấn đề này.
18


Resnet có cấu trúc gồm nhiều residual block, ý tưởng chính là bỏ qua các layer
bằng cách thêm kết nối với layer trước. Mấu chốt của reseidual block là cứ sau hai
layer, ta lại cộng input và output lại với nhau: H(x) = F(x) + x. Model sẽ dễ học hơn
khi ta thêm các đặc trưng từ layer trước vào.

Hình 4.2.2. Resnet block
Một số đặc điểm của mạng Resnet:
- Sử dụng Batch Normalization sau mỗi Conv layer.
- Learning rate là 0.1, giảm 10 lần nếu error không giảm.

- Mini batch size 256.
- Weight decay 10^-5.
- Không sử dụng dropout.
Do Resnet giải quyết được nhiều vấn đề của deep learning truyền thống, nó có
thể dễ dàng train model với hàng trăm layer. Hiện nay có nhiều loại mạng Resnet:
Resnet 34, Resnet 50, Resnet 101, …; trong đó nhóm chúng em có sử dụng pre-train
model Resnet50 cho bài tốn này.
• Mạng Resnet50:
Mạng Resnet50 có cấu trúc gồm bốn tầng (như hình 4.2.1 và 4.2.3).
Mạng nhận các ảnh đầu vào ba chiều có kích thước là bội số của 32, giả sử kích
cỡ ảnh đầu vào là 128x128x3. Mỗi lần, kiến trúc Resnet thực hiện tích chập ban đầu
và maxpooling sử dụng 7x7 và 3x3 kernel.
Sau đó, tầng thứ nhất bắt đầu, nó có ba residual blocks chứa ba layers ở mỗi
block. Kích thước các kernels sử dụng để thực hiện tích chập ở ba layers trong block
19


của tầng thứ nhất tương ứng là 64, 64 và 128. Hoạt động tích chập trong residual
block được thực hiện với stride 2, do đó kích thước đầu vào sẽ giảm một nửa nhưng
độ rộng của kênh sẽ được nhân đôi. Cứ như thế khi đi từ tầng này sang tầng khác,
độ rộng kênh sẽ nhân đơi và kích thước đầu vào giảm một nửa.
Sau cùng, mạng Resnet 50 sẽ có một lớp Average Pooling, theo sau là lớp FullyConnected với số class output.

Hình 4.2.3. Mơ hình mạng Resnet50 với 4 tầng được biểu thị với các màu khác nhau

Nhóm chúng em chỉ sử dụng các lớp tích chập (lấy đặc trưng) từ các mạng đã
nêu, còn lớp Neural Network là một lớp riêng gồm tập các lớp Dense và Dropout
dùng chung cho cả bốn model pre-trained.
Các lớp Dense là các lớp ẩn neural nhân tạo “hứng” phần output từ các lớp
tích chập rồi sinh ra logic quyết định để thực hiện q trình phân loại.

Cịn các lớp Dropout nhằm mục đích chống Over-fitting trong q trình học.

20


Hình 4.2. Mơ hình thêm các lớp dropout

21


Chương 5: Kết quả và hướng phát triển
5.1. Kết quả thu được:
Input: tập dữ liệu đầu vào
Hàm mục tiêu (hàm loss): Cross-entropy
Với sự hỗ trợ của các thư viện keras, scikit-learn và imutils, nhóm chúng em
thu được kết quả khi thực hiện bài tốn với các mơ hình pre-trained Resnet50,
VGG16 và VGG19 cho bộ dữ liệu hiện có (thực hiện ở chương 2):

Mạng

Biểu đồ training loss

Thông số kết quả
Epoch 50:
- loss: 0.0200
- acc: 0.9941
- val_loss: 0.1812

VGG16


- val_acc: 0.9580
- Thời gian chạy:
1100.5 giây

Epoch 50:
- loss: 0.0168
- acc: 0.9947
- val_loss: 0.2538

VGG19

- val_acc: 0.9491
- Thời gian chạy:
1214.1 giây

22


Epoch 50:
- loss: 0.0083
- acc: 0.9980
- val_loss: 0.1591

Resnet50

- val_acc: 0.9714
- Thời gian chạy:
1061.45 giây

Epoch 50:

- loss: 0.0121
- acc: 0.9967
- val_loss: 0.1599

Resnet50v2

- val_acc: 0.9708
- Thời gian chạy:
1093.4 giây

Bảng 5.1.1. Bảng kết quả khi thực hiện train với các pre-trained model khác nhau
Qua bảng 5.1.1, ta có thể thấy việc sử dụng Resnet50 cho ra kết quả tốt hơn hẳn
so với việc sử dụng các loại mạng VGG16 và VGG19 (thời gian chạy ít hơn, độ
chính xác cao hơn và khơng bị loss nhiều).

23


Ngồi ra, nhóm chúng em cũng có làm một trang Web thực hiện kiểm tra một
ảnh bất kỳ có phải là táo, cam, chuối, dứa hay nho khơng.

Hình 5.1.1. Ảnh test thử một ảnh quả dứa trên Web

24


5.2. Kết luận và hướng phát triển:
Nhìn chung, việc sử dụng các pre-trained model đã giúp nhóm chúng em có
được kết quả tốt với bộ dữ liệu mà chúng em đang có (chạy nhanh, độ chính xác cao,
loss ít).

Từ bài tốn Fruit Classification có thể phát triển lên thành bài tốn Fruit
Detection, bài tốn sử dụng mơ hình Faster R-CNN để giải quyết bài toán phát hiện
và nhận diện bằng cách thêm một mạng neural nữa là region proposal network.
Nếu muốn nâng cấp bài tốn cần giải quyết thì cần phải giữ ngun mơ hình đã
thực hiện trong bài tốn phân loại, và chuẩn bị thêm bộ dữ liệu được gán nhãn vị trí
của các hoa quả trong ảnh theo format của những bộ dữ liệu lớn như COCO Dataset,
Pascal VOC dành riêng cho hoa quả để xây dựng mô hình region proposal network.
Tuy nhiên do hạn chế do hạn chế về mặt thời gian cùng với việc nhóm chưa có
nhiều kinh nghiệm trong việc xấy dựng mơ hình thị giác máy tính nên chưa thể hồn
thành trong khn khổ của môn học.
Link bài viết tham khảo về hướng phát triển:
/>PKCafLeVHtepVpQWQGLqLhc20sIiTTOpRdNLzZ3o-yOQ

25


×