PHÂN LỚP ẢNH TRÁI CÂY BẰNG MẠNG NƠRON
TÍCH CHẬP SÂU
Nguyễn Văn Phúc1, Vũ Thanh Hiền2
1
Học viên cao học ngành CNTT, trường Đại học Ngoại ngữ - Tin học TP. HCM
2
Khoa CNTT, trường Đại học Cơng nghệ TP. HCM (HUTECH)
TĨM TẮT
Bài báo nghiên cứu và thiết kế hệ thống mạng nơron tích chập sâu (Deep Convolutional Neural Network DCNN) trong việc phân loại trái cây. Cụ thể hệ thống gồm 5 tầng tích chập, mỗi tầng đều có ReLU kèm
theo, một số tầng sử dụng thêm max pooling. Ngoài ra hệ thống còn sử dụng 3 tầng fully connected với
tầng cuối cùng có 60 nơron kết hợp với hàm softmax để phân lớp dữ liệu. Để giảm vấn đề overfitting, bài
báo sử dụng kỹ thuật sinh thêm dữ liệu và phương pháp “dropout”. Chính vì vậy hệ thống cho kết quả với
độ chính xác cao hơn so với bài báo gốc trên cùng tập dữ liệu mẫu.
Từ khóa: Convolutional Neural Network , Deep Learning, Deep Convolutional Neural Network, Fruit
Classification, Image Classification.
1. GIỚI THIỆU
Phân lớp các đối tượng trong ảnh là bài tốn quan trọng trong thị giác máy tính, đây là giai đoạn quan
trọng trong việc hiểu các đối tượng trong ảnh. Tuy nhiên, cho tới thời điểm này, mặc dù đã có nhiều giải
pháp hiệu quả giải quyết bài tốn phân lớp trên từng loại cơ sở dữ liệu (CSDL) ảnh, bài tốn phân lớp ảnh
nói chung vẫn cịn là bài tốn thách thức. Có hai lý do giải thích tại sao bài tốn này vẫn cịn thách thức:
– Khả năng biểu diễn đặc trưng của đối tượng: mặc dù các đặc trưng của đối tượng có thể được học tự
động từ CSDL và có thể học phân cấp từ đơn giản đến phức tạp [1, 2] nhưng chưa thể thiết kế hệ
thống học tự động về độ lớn của đặc trưng và xác định mức độ phân cấp cần học là bao nhiêu. Cho
nên trong từng CSDL, ta phải phân tích và quyết định các tham số này.
– Khả năng phân lớp: trong nhiều bài toán phân lớp ảnh cụ thể, sự khác biệt giữa các đối tượng trong
cùng một lớp có giá trị khá lớn, trong khi sự khác biệt giữa các đối tượng trong các lớp khác nhau
lại có giá trị nhỏ. Hay nói cách khác, sự biến động của các đặc trưng trong cùng một lớp lớn hơn sự
biến động của các đặc trưng giữa hai lớp khác nhau làm cho việc phân lớp rất khó khăn.
Bài toán phân lớp các loại trái cây trong thực tế có những đặc điểm vừa kể trên. Trong cùng loại trái cây,
đơi khi có hình dạng rất khác nhau, hay màu sắc rất khác nhau hay góc nhìn khác nhau sẽ có hình dáng,
màu sắc rất khác nhau. Chẳng hạn như trong hình 1, cả ba ảnh đều là hình của cùng một loại táo được lấy
từ CSDL Fruits [3] và thấy rằng, cùng loại táo nhưng ba hình khá khác nhau về màu sắc, hình dáng do các
góc nhìn khác nhau tạo ra. Giữa hai lớp trái cây khác nhau đơi khi có hình dáng, màu sắt khá giống nhau.
Như trong hai hình sau: hình 2 là nho trắng loại 1, và hình 3 là nho trắng loại 2, tuy là hình của hai loại
nho khác nhau, nhưng sự khác biệt giữa hai loại này không khác nhau nhiều.
Để giải quyết bài toán phân lớp ảnh trái cây, Horea Muresan, Mihai Oltean [4] đã xây dựng hệ thống học
sâu gồm có tất cả 6 tầng, trong đó có 4 tầng convolutions, 2 tầng fully connected. Các tầng convolution
đều có kích thước 5x5. Tầng fully connected kích thước 2704×60. Độ chính xác đạt được là 94.59%.
210
Bài báo sẽ tiến hành phân tích các đặc điểm của CSDL Fruits, từ đó đề xuất kiến trúc CNN phù hợp
để giải quyết bài tốn hiệu quả.
Hình 1. Hình dạng khác nhau của cùng một loại táo
Hình 2. Nho trắng loại 1
Hình 3. Nho trắng loại 2
2. PHÂN TÍCH CƠ SỞ DỮ LIỆU
CSDL ảnh Fruits [3] gồm 60 loại trái cây, có tổng cộng 38,409 ảnh, mỗi ảnh đều có kích thước 100×100
pixel. Mỗi ảnh được gán một trong 60 nhãn, tên các nhãn và mã số của mỗi nhãn được mơ tả như bảng 1.
Bảng 1. Mã hóa các loại trái cây
Mã
Tên trái cây
Mã
Tên trái cây
Mã
Tên trái cây
Mã
Tên trái cây
0
Apple Braeburn
15
Cactus fruit
30
Kiwi
45
Pear
1
Apple Golden 1
16
Carambula
31
Kumquats
46
Pear Abate
2
Apple Golden 2
17
Cherry
32
Lemon
47
Pear Monster
3
Apple Golden 3
18
Clementine
33
Lemon Meyer
48
Pear Williams
4
Apple Granny Smith
19
Cocos
34
Limes
49
Pepino
5
Apple Red 1
20
Dates
35
Litchi
50
Pineapple
6
Apple Red 2
21
Granadilla
36
Mandarine
51
Pitahaya Red
7
Apple Red 3
22
Grape Pink
37
Mango
52
Plum
8
Apple Red Delicious
23
Grape White
38
Maracuja
53
Pomegranate
9
Apple Red Yellow
24
Grape White 2
39
Nectarine
54
Quince
10
Apricot
25
Grapefruit Pink
40
Orange
55
Raspberry
11
Avocado
26
Grapefruit White
41
Papaya
56
Salak
12
Avocado ripe
27
Guava
42
Passion Fruit
57
Strawberry
13
Banana
28
Huckleberry
43
Peach
58
Tamarillo
14
Banana Red
29
Kaki
44
Peach Flat
59
Tangelo
Mô tả CSDL Fruits là
{
()
()
} . Với
là ảnh trái cây với 3 kênh màu RGB,
,
là
nhãn ảnh ,
,
-, là số lượng dữ liệu huấn luyện. Tất cả các ảnh trong CSDL đều có chất lượng
cao và khơng có nền. Điều này tạo nhiều thuận lợi cho việc xây dựng mơ hình:
– Các đặt trưng của ảnh rất rõ ràng: giúp cho mơ hình có thể biểu diễn đặc trưng chính xác.
– Tạo điều kiện rất thuận lợi cho việc sinh thêm dữ liệu mới khi cần như có thể thêm nhiễu vào ảnh,
có thể thêm các nền khác nhau cho các ảnh. Không giống như phần lớn các CSDL khác như CIFAR
[5] đều chứa các đối tượng và nhiễu nên cần phải tiến hành tiền xử lý trước khi đưa vào mơ hình.
– Mức độ chi tiết các đặc trưng trong ảnh khá nhỏ nên cần ưu tiên kích thước bộ học đặc trưng nhỏ.
211
Mỗi loại trái cây được chụp các góc nhìn khác nhau (3600), điều này phản ảnh đầy đủ các đặc trưng của
mỗi loại trái cây. Tuy nhiên, CSDL còn một số hạn chế:
– Mỗi loại trái cây chỉ chụp có một vài hình: CSDL chưa phản ánh được đầy đủ các đặc trưng của loại
trái cây. Các ảnh trái cây cũng không chụp theo độ phát triển của trái cây theo thời gian.
– Số lượng mẫu chưa được nhiều. Trong khi các mơ hình học sâu thường cần một lượng dữ liệu lớn
để đảm bảo có thể tạo ra mơ hình mạnh. Chính vì vậy khi xây dựng mơ hình để giải quyết bài toán
này phải cân nhắc việc thiết kế số tầng, số nơron cho các tầng, số lượng bộ lọc, kích thước bộ lọc
cho phù hợp với CSDL.
3. MƠ HÌNH ĐỀ XUẤT
CNN [6, 7] có nhiều đột phá trong bài toán phân lớp dữ liệu ảnh. CNN là mơ hình học theo chiến lược
end-to-end, nghĩa là tích hợp phần học đặc trưng và phần học phân lớp trong cùng một mơ hình. Tuy
nhiên do đặc điểm của mỗi bài tốn khác nhau nên khi áp dụng mơ hình CNN cần phải thiết kế kiến trúc
mơ hình phù hợp với bài toán đang giải quyết. Kiến trúc tổng quan của mơ hình giải quyết bài tốn được
thiết kế như trong hình 4.
3.1. Kiến trúc
Mơ hình có 5 tầng convolutions để học đặc trưng, theo sau đó là một mạng fully connected để phân lớp dữ
liệu. Cấu trúc và ý nghĩa của các tầng như sau:
– Tầng input: Chấp nhận ảnh có kích thước
input nhận ảnh
pixel với 3 kênh màu RGB. Đầu vào của tầng
– Tầng convolution: Có 5 tầng convolutions dùng để khám phá đặc trưng trong ảnh dữ liệu.
– Hàm activation: Tất cả các tầng (tầng convolution và tầng fully connected) đều dùng hàm activation
ReLU (Rectified Linear Units) ( )
( ) [[8]] để giúp mạng không bị dày đặc và giúp việc
huấn luyện mạng nhanh hơn.
– Tầng pooling: Các thông tin ở tầng trước (thông tin cấp thấp) được dùng để tổng hợp thành thông
tin ở tầng sau (thông tin cấp cao hơn) và để tổng hợp hiệu quả, thông tin lớp trước cũng cần phải
được giản lược bớt độ phức tạp. Cho nên bài báo dùng max pooling giải quyết vấn đề này. Max
pooling dùng ở đây có giá trị stride bằng với giá trị padding.
– Tầng fully connected: Có 3 tầng dùng để phân lớp dữ liệu. Tất cả các tầng fully connected dùng kỹ
thuật dropout [9] giúp tránh vấn đề overfitting.
– Tầng output: Tầng output có 60 nơron, mỗi nơron tương ứng với một lớp. Xác suất của mỗi lớp
được xác định thông qua hàm softmax
∑
Chi tiết các tham số trong các tầng được mô tả trong bảng 2.
212
Hình 4. Kiến trúc mơ hình CNN
Bảng 2. Kiến trúc mạng
STT
Tầng
Chiều rộng
Chiều cao
Chiều sâu
Kernel
Stride
Padding
100
100
3
-
-
-
0
Input
1
Convolution
9
9
32
-
1
0
2
ReLU
9
9
32
-
-
-
3
Pooling
9
9
32
2
2
0
4
Convolution
7
7
64
-
1
0
5
ReLU
7
7
64
-
-
-
6
Pooling
7
7
64
2
2
0
7
Convolution
5
5
128
-
1
0
8
ReLU
5
5
128
-
-
-
9
Pooling
5
5
128
2
2
0
10
Convolution
5
5
256
-
1
0
11
ReLU
5
5
256
-
-
-
12
Pooling
5
5
256
2
2
0
13
Convolution
3
3
512
-
1
0
14
ReLU
3
3
512
-
-
-
15
Pooling
3
3
512
2
2
0
16
Fully connected
1
1
1000
-
-
-
17
ReLU
1
1
1000
-
-
-
18
Dropout
1
1
1000
-
-
-
19
Fully connected
1
1
10000
-
-
-
20
ReLU
1
1
10000
-
-
-
21
Dropout
1
1
10000
-
-
-
22
Fully connected
1
1
60
-
-
-
23
Softmax
1
1
60
-
-
-
213
3.2. Hàm loss
Để đánh giá lỗi giữa output của mạng và giá trị ground truth của tập dữ liệu chọn hàm loss là hàm
category cross entropy
( ̂)
Trong đó,
()
∑(
()
( ̂ ( ))
là ground truth label của điểm dữ liệu
(
()
()
)
(
̂ ( ) ))
, ̂ ( ) là giá trị dự đoán
3.3 Phƣơng pháp huấn luyện
Để huấn luyện các tham số, bài báo dùng thuật toán Adaptive Moment Estimation (Adam) [12] để tối ưu
hóa hàm loss.
4. THỰC NGHIỆM VÀ ĐÁNH GIÁ
4.1. Mơi trƣờng thực nghiệm
Hệ thống được phát triển trên môi trường Python 3.5, sử dụng Framework Tensorflow [[10]] để phát triển
mơ hình CNN.
Cấu hình máy dùng để huấn luyện và đánh giá mơ hình: Dell Precision m3800, 16 GB RAM, NVIDIA
Quadro K1100M.
4.2. Thực nghiệm
4.2.1. Huấn luyện
– Dữ liệu dùng để huấn luyện: 28736 ảnh (75% kích thức CSDL).
– Input: ảnh chuẩn hóa về đoạn [-0.5, 0.5]
– Kích thước một batch: 200 ảnh
– Khởi tạo các trọng số: các trọng được khởi tạo ngẫu nhiên theo phương pháp Xavier [[11]] nhằm đảm
bảo rằng các trọng số
đó
có giá trị dao động xung quanh 0 và phương sai có giá trị
( )
trong
là số nơron tầng phía trước.
– Hệ số học có giá trị khởi tạo ban đầu: 0.001
– Phương pháp tối ưu hàm loss: trong q trình dùng thuật tốn Adaptive Moment Estimation (Adam)
[12] để tối ưu hàm loss, phần thực nghiệm còn sử dụng cách tính hệ số học thích nghi cho mỗi tham số
của hàm loss.
Trong quá trình huấn luyện, giá trị hàm lỗi giảm khá nhanh. Chỉ 300 epoch giá trị hàm lỗi đã tiệm cận về 0
(hình 5).
Trong 300 epoch của q trình huấn luyện, độ chính xác của mơ hình tăng đều và đạt gần ngưỡng 100%
(hình 6).
4.2.2. Đánh giá
– Dữ liệu dùng để kiểm tra: 9673 ảnh (25% kích thước CSDL)
– Kết quả độ chính xác: 94.84%
214
Hệ thống của Horea Muresan, Mihai Oltean [4] có độ chính xác là 94.59%. Như vậy, hệ thống đề xuất đạt
được độ chính xác tốt hơn hệ thống Horea Muresan, Mihai Oltean là 0.25%.
Hình 5. Giá trị của hàm loss trong q trình huấn luyện
Hình 6. Độ chính xác của mơ hình trong q trình huấn luyện
5. KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN
Bài báo đã phân tích, thiết kế một mơ hình CNN để nhận dạng ảnh màu trái cây, mơ hình sử dụng cả ba
kênh RGB để phân lớp ảnh. Kết quả thực nghiệm cho thấy độ chính xác của mơ hình là 94.84%. Hướng
phát triển tiếp theo là xem xét việc sinh thêm dữ liệu bằng cách gây nhiễu trên các ảnh gốc, tạo nền cho
các ảnh để có thể sử dụng được mơ hình trên dữ liệu ảnh có nền. Biến đổi ảnh sang ảnh có một kênh màu
và kết hợp một số mơ hình lại với nhau để cho độ chính xác cao hơn.
TÀI LIỆU THAM KHẢO
[1]
Yoshua Bengio, Aaron Courville, and Pascal Vincent, “Representation Learning: A Review and
New Perspectives”, IEEE Trans. Pattern Anal. Mach. Intell., vol. 35, pp. 1798-1828, 2013.
[2]
Yann LeCun, Yoshua Bengio, Geoffrey Hinton, “Review Deep learning”, Nature, vol 512, 2015.
[3]
Fruits dataset, (truy cập ngày 18/5/2018).
[4]
Horea Muresan, Mihai Oltean, “Fruit recognition from images using deep learning”, Technical
Report, Babes-Bolyai University, 2017.
[5]
CIFAR-10 and CIFAR-100 Datasets (truy cập ngày
18/5/2018).
[6]
Alex Krizhevsky, Ilya Sutskever, Geoffrey E. Hinton, “ImageNet Classification with Deep
Convolutional Neural Networks”, Advances in Neural Information Processing Systems 25, 2012.
215
[7]
Catherine F. Higham, Desmond J. Highamy, "Deep Learning: An Introduction for Applied
Mathematicians", arXiv:1801.05894, 2018.
[8]
Vinod Nair, Geoffrey E. Hinton, “Rectified Linear Units Improve Restricted Boltzmann Machines”,
Proceedings of the 27th International Conference on Machine Learning, p. 807–814, 2010.
[9]
Srivastava, N., Hinton, G., Krizhevsky, A., Sutskever, I., & Salakhutdinov, R. “Dropout: A simple
way to prevent neural networks from overfitting”, The Journal of Machine Learning Research,
15(1), p.1929-1958, 2014.
[10] Martín Abadi , Paul Barham , Jianmin Chen , Zhifeng Chen , Andy Davis, Jeffrey Dean , Matthieu
Devin , Sanjay Ghemawat , Geoffrey Irving , Michael Isard , Manjunath Kudlur , Josh Levenberg ,
Rajat Monga , Sherry Moore , Derek G. Murray , Benoit Steiner , Paul Tucker , Vijay Vasudevan ,
Pete Warden , Martin Wicke , Yuan Yu , Xiaoqiang Zheng, “TensorFlow: a system for large-scale
machine learning”, Proceedings of the 12th USENIX conference on Operating Systems Design and
Implementation, 2016.
[11] Saiprasad Koturwar, Shabbir N Merchant, “Weight Initialization of Deep Neural Networks(DNNs)
using Data Statistics”, arXiv:1710.10570, 2017.
[12] Diederik P. Kingma, Jimmy Ba, "Adam: A Method for Stochastic Optimization", arXiv:1412.6980,
2017.
216