Phân lớp ảnh trái cây bằng mạng nơron tích chập sâu

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  
1Học viên cao học ngành CNTT, trường Đại học Ngoại ngữ - Tin học TP. HCM  
2Khoa 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 toá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 toán phân lớp trên từng loại cơ sở dữ liệu (CSDL) ảnh, bài toán phân lớp ảnh  
nói chung vẫn còn là bài toán thách thức. Có hai lý do giải thích tại sao bài toá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 toá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ã  
0
Tên trái cây  
Apple Braeburn  
Apple Golden 1  
Apple Golden 2  
Apple Golden 3  
Apple Granny Smith  
Apple Red 1  
Mã  
Tên trái cây  
Mã  
Tên trái cây  
Mã  
Tên trái cây  
15 Cactus fruit  
16 Carambula  
17 Cherry  
30 Kiwi  
45 Pear  
1
31 Kumquats  
32 Lemon  
46 Pear Abate  
47 Pear Monster  
48 Pear Williams  
49 Pepino  
2
3
18 Clementine  
19 Cocos  
33 Lemon Meyer  
34 Limes  
4
5
20 Dates  
35 Litchi  
50 Pineapple  
51 Pitahaya Red  
52 Plum  
6
Apple Red 2  
21 Granadilla  
22 Grape Pink  
23 Grape White  
24 Grape White 2  
25 Grapefruit Pink  
26 Grapefruit White  
27 Guava  
36 Mandarine  
37 Mango  
7
Apple Red 3  
8
Apple Red Delicious  
Apple Red Yellow  
38 Maracuja  
39 Nectarine  
40 Orange  
53 Pomegranate  
54 Quince  
9
10 Apricot  
55 Raspberry  
56 Salak  
11 Avocado  
12 Avocado ripe  
13 Banana  
41 Papaya  
42 Passion Fruit  
43 Peach  
57 Strawberry  
58 Tamarillo  
59 Tangelo  
          
28 Huckleberry  
14 Banana Red  
29 Kaki  
44 Peach Flat  
 
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 toá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 toá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           pixel với 3 kênh màu RGB. Đầu vào của tầng  
          
input nhận ảnh       
– 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  
0
Tầng  
Chiều rộng Chiều cao Chiều sâu Kernel  
Stride  
Padding  
Input  
100  
9
9
9
7
7
7
5
5
5
5
5
5
3
3
3
1
1
1
1
1
1
1
1
100  
9
9
9
7
7
7
5
5
5
5
5
5
3
3
3
1
1
1
1
1
1
1
1
3
32  
-
-
-
1
-
-
0
-
1
Convolution  
ReLU  
2
32  
-
3
Pooling  
32  
2
-
2
1
-
0
0
-
4
Convolution  
ReLU  
64  
5
64  
-
6
Pooling  
64  
2
-
2
1
-
0
0
-
7
Convolution  
ReLU  
128  
128  
128  
256  
256  
256  
512  
512  
512  
1000  
1000  
1000  
10000  
10000  
10000  
60  
8
-
9
Pooling  
2
-
2
1
-
0
0
-
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
Convolution  
ReLU  
-
Pooling  
2
-
2
1
-
0
0
-
Convolution  
ReLU  
-
Pooling  
2
-
2
-
0
-
Fully connected  
ReLU  
-
-
-
Dropout  
-
-
-
Fully connected  
ReLU  
-
-
-
-
-
-
Dropout  
-
-
-
Fully connected  
Softmax  
-
-
-
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 quá trình dùng thuật toá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 quá 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 quá trình huấn luyện  
Hình 6. Độ chính xác của mô hình trong quá 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, https://www.kaggle.com/moltean/fruits (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 https://www.cs.toronto.edu/~kriz/cifar.html. (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  
pdf 7 trang Thùy Anh 17880 Free
Bạn đang xem tài liệu "Phân lớp ảnh trái cây bằng mạng nơron tích chập sâu", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfphan_lop_anh_trai_cay_bang_mang_noron_tich_chap_sau.pdf