3.1 Phát biểu bài toán
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 ảnh cụ thể, 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.
Trong luận văn này sẽ tìm hiểu bài toán phân lớp ảnh trái cây màu. Đầu vào của bài toán là ảnh màu của trái cây có kích thước 100 × 100. Đầu ra của bài toán là mã số màu của ảnh trái cây. Có tất cả 60 loại trái cây.
Ví dụ 1: Một số ảnh quả táo cần nhận dạng
Hình 3.1 Hình dạng khác nhau của cùng một loại táo
Ví dụ 2: Một số ảnh quả Nho cần nhận dạng
Chúng ta có thể mô hình lại bài toán như sau
Input: đầu vào của bài toán là một ảnh: 𝑥 ∈ ℝ100×100×3
Output: đầu ra của bài toán là nhãn của ảnh 𝑥, cho biết ảnh thuộc loại trái cấy nào, hay là một hàm 𝑓(𝑥) ∈ [0, 59] với 𝑥 ∈ ℝ100×100×3
3.2 Cơ sở dữ liệu trái cây
Tên cơ sở dữ liêu trái cây Fruits-360 do Horea Muresan [1] phát triển năm 2017. Cơ sở dữ liệu Fruits-360 có tất cả 38409 ảnh trái cây và chia làm 2 tập ảnh: Training và Testing
• Kích thước tập Training: 28736 ảnh • Kích thước tập Testing: 9673 ảnh • Kích thước ảnh: 100x100 pixels
• Số lớp: 60 lớp tương ứng với 60 loại trái cây
Toàn bộ 60 loại trái cây có tên và mã số tương ứng được cho như trong bảng sau
Mã số Tên trái cây
0 Apple Braeburn 1 Apple Golden 1 2 Apple Golden 2 3 Apple Golden 3 4 Apple Granny Smith 5 Apple Red 1
6 Apple Red 2 7 Apple Red 3
8 Apple Red Delicious 9 Apple Red Yellow 10 Apricot 11 Avocado 12 Avocado ripe 13 Banana 14 Banana Red 15 Cactus fruit 16 Carambula 17 Cherry 18 Clementine 19 Cocos 20 Dates 21 Granadilla 22 Grape Pink 23 Grape White 24 Grape White 2 25 Grapefruit Pink 26 Grapefruit White 27 Guava 28 Huckleberry 29 Kaki 30 Kiwi 31 Kumquats 32 Lemon
34 Limes 35 Litchi 36 Mandarine 37 Mango 38 Maracuja 39 Nectarine 40 Orange 41 Papaya 42 Passion Fruit 43 Peach 44 Peach Flat 45 Pear 46 Pear Abate 47 Pear Monster 48 Pear Williams 49 Pepino 50 Pineapple 51 Pitahaya Red 52 Plum 53 Pomegranate 54 Quince 55 Raspberry 56 Salak 57 Strawberry 58 Tamarillo
59 Tangelo
Bảng 3.1 Các loại trái cây
Chúng ta mô tả cơ sở dữ liệu Fruits dưới dạng 𝐷 = {𝑥(𝑖), 𝑦(𝑖)}
1 𝑚
. Trong đó: 𝑥 là ảnh trái cây với 3 kênh màu RGB, 𝑥 ∈ ℝ100×100×3, 𝑦 là nhãn của ảnh 𝑥, 𝑦 ∈ [0 … 59], 𝑚 là số lượng dữ liệu huấn luyện.
3.3 Cấu trúc thư mục cơ sở dữ liệu ảnh trái cây
Dữ liệu trong cơ sở dữ liệu Fruits-360 được tổ chức thành 2 thư mục • Thư mục Training: chứa các file ảnh dùng để training mô hình • Thư mục Validation: chưa các file ảnh dùng để kiểm tra mô hình
Trong mỗi thư mục Training, Validation, chứa 60 thư mục con tương ứng với 60 loại trái cây (các ảnh cùng loại trái cây sẽ nằm trong cùng một thư mục).
Tên file ảnh: Tên file ảnh được đặt tên ImageIndex_100.jpg hay r_ImageIndex_100.jpg
• ImageIndex là mã số cho biết ảnh thứ mấy • 100 là kích thước file ảnh là 100x100 • r cho biết ảnh đã bị xoay
3.4 Dữ liệu mẫu
Hình 3.3 Trái cây Apple Braeburn
Các ảnh của một loại có thể được chụp ở các gốc nhìn khác nhau. Ví dụ trong hình sau loại táo Apple Braeburn được chụp ở các gốc nhìn khác nhau.
Hình 3.6 Trái cây Apple Golden 1 đã bị xoay
3.5 Phương pháp đề xuất
Convolutional Neural Network (CNN) có nhiều đột phá trong các 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, chúng ta 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.
A. Kiến trúc
Kiến trúc tổng quan của mô hình giải quyết bài toán được thiết kế gồm 2 phần: phần thứ nhất, gồm có các tầng Convolution để biểu diễn đặc trưng. Phần thứ hai
theo sau đó là một mạng Fully Connected để phân lớp dữ liệu. Thông tin các tầng được mô tả như sau:
• Tầng Input: Tầng input chấp nhận ảnh có kích thước 100 × 100 pixels với 3 kênh màu RGB. Đầu vào của tầng input nhận ảnh 𝑥 ∈ ℝ100×100×3
• 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) 𝑓(𝑥) = max(0, 𝑥) để 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 chúng tôi 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 Fully Connected dùng để phân lớp dữ liệu. Tất cả các tầng Fully Connected chúng tôi dung kỹ thuật Dropout giúp tránh vấn đề overfitting.
• Tầng output: Tầng output có 60 neuron, mỗi neuron tương ứng với một lớp. Xác xuất của mỗi lớp được xác định thông qua hàm softmax.
Trong đó, 𝑝𝑖 là xác suất của từng lớp, 𝑜𝒊 là giá trị output ở lớp 𝑖, 𝑛𝑦 là số lớp của bài toán.
Các thông số của từng tầng được cho trong bảng sau:
STT Tầng Kích thước
Chiều rộng Chiều cao Chiều sâu
𝑝𝒊 = 𝑒
𝑜𝒊
∑𝑛𝑦 𝑒𝑜𝒌
𝒌=1
0 Input 32 32 3 1 Convolution 9 9 32 2 ReLU 9 9 32 3 Pooling 9 9 32 4 Convolution 7 7 64 5 ReLU 7 7 64 6 Pooling 7 7 64 7 Convolution 5 5 128 8 ReLU 5 5 128 9 Pooling 5 5 128 10 Convolution 5 5 256 11 ReLU 5 5 256 12 Pooling 5 5 256 13 Convolution 3 3 512 14 ReLU 3 3 512 15 Pooling 3 3 512 16 Fully Connected 1 1 2048 17 ReLU 1 1 2048 18 Fully Connected 1 1 1024 19 ReLU 1 1 1024 20 Fully Connected 1 1 60 21 Softmax 1 1 60
B. 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úng tôi chọn hàm loss là hàm category cross entropy
𝐿(𝑦, 𝑦̂) = − ∑(𝑦(𝑖)log(𝑦̂(𝑖)) + (1 − 𝑦(𝑖)) log(1 − 𝑦̂(𝑖)))
𝑚
𝑖=1
Trong đó, 𝑦(𝑖) là ground truth label của điểm dữ liệu 𝑥(𝑖), 𝑦̂(𝑖) là giá trị dự đoán
C. Phương pháp huấn luyện
Để training các tham số, chúng tôi dùng thuật toán Adaptive Moment Estimation (Adam) để tối ưu hóa hàm Loss.
CHƯƠNG 4. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
4.1 Thực nghiệm và kết quả A. Môi trường:
• Hệ thống phát triển trên môi trường Python 3.5
• Framework: Dùng Framework Tensorflow để phát triển Convolutional Neural Network
• Cấu hình máy dùng để huấn luyện mô hình: o RAM: 16 GB
o Card đồ họa: Một card đồ họa NVIDIA GTX 1070, 8GB
o Ổ cứng: SSD 250 GB
B. Thực nghiệm
• Tỷ lệ dữ liệu dùng training và testing: 75% training (28736 ảnh), 25% testing (9673 ảnh)
• Các hyper parameters:
o Kích thước một batch: 100 ảnh
o 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
Quá trình giảm lỗi trong quá trình huấn luyện
Hình 4.1 Độ lỗi của mô hình trong quá trình huấn luyện dựa trên tensorboard
Mô hình có độ lỗi giảm khá nhanh, chỉ trong vòng 300 lần lặp, mức độ lỗi đã giảm từ 4 xuống gần bằng 0. Điều này phản ánh mức độ hội tụ của mô hình khá nhanh.
Hình 4.2 Độ chính xác của mô hình trong quá trình huấn luyện dựa trên tensorboard
Mô hình có độ chính xác tăng khá tốt, chỉ trong vòng 300 lần lặp, mức độ chính xác của mô hình đã tăng từ gần 0% lên hơn 90%. Điều này phản ánh khả năng học của mô hình khá nhanh.
C. Kết quả thực nghiệm:
Số tầng convolutional Số tầng fully connected Độ chính xác
4 2 92.12% 3 95.23% 4 94.52% 5 2 95.17% 3 97.47% 4 94.30% 6 2 94.27% 3 95.19% 4 94.72%
Qua thực nghiệm các mô hình với các thông số khác nhau, mô hình có kết quả tốt là có 5 tầng convolutional và 3 tầng fully connected với độ chính xác 97.47%
D. Giao diện chính của chương trình
Hình 4.3 Giao diện chính của ứng dụng
Các thành phần của giao diện được cho trong bảng sau
STT Chức năng
1 Thư mục chứa dữ liệu huấn luyện 2 Thư mục chứa dữ liệu kiểm tra
3 Chọn thư mục chứa dữ liệu huấn luyện 4 Chọn thư mục chứa dữ liệu kiểm tra
1 2 3 4 5 6 10 7 9 8
5 Huấn luyện mô hình
6 Kiểm tra mô hình trên tập dữ liệu kiểm tra 7 Chọn một ảnh để kiểm tra
8 Cửa sổ hiện kết quả
9 Xóa thông tin của sở hiện kết quả 10 Đóng chương trình
Quá trình huấn luyện
Hình 4.5 Kiểm tra trên tập dữ liệu test
4.2 Kết luận và phướng phát triển
Luận văn đã phân tích, thiết kế một mô hình CNN để phân loại 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à 95.01%. So với kết quả của Horea Muresan [2] có độ chính xác là 94.59%, mô hình phát triển trong luận văn tốt hơn 0.42%
4.3 Hướng phát triển tiếp theo
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] Fruits dataset, https://www.kaggle.com/moltean/fruits (truy cập ngày 18/5/2018). [2] Horea Muresan, Mihai Oltean, “Fruit recognition from images using deep learning”, Technical Report, Babes-Bolyai University, 2017.
[3] 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.
[4] 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.
[5] .Y. LeCun and Y. Bengio.“Convolutional networks for images, speech, and time- series.” In M. A. Arbib, editor, The Handbook of Brain Theory and Neural Networks. MIT Press, 1995.
[6] .Fabien Lauer, ChingY. Suen, Gérard Bloch,”A trainable feature extractor for handwritten digit recognition“,Elsevier, october 2006.
[7] Proceedings of the Seventh International Conference on Document Analysis and Recognition (ICDAR 2003) 0-7695-1960-1/03 $17.00 © 2003 IEEE
[8] Chirag N. Paunwala & Suprava Patnaik. “A Novel Multiple License Plate Extraction Techniquefor Complex Background in Indian Traffic Conditions”, Sarvajanik College of Engineering and Technology, 2010
[9] Choo Kar Soon, Kueh Chiung Lin, Chung Ying Jeng and Shahrel A. Suandi , “Malaysian Car Number Plate Detection and Recognition System”, 2012
[10] Tran Duc Duan, Duong Anh Duc, Tran Le Hong Du, “Combining Hough Transform and Contour Algorithm for detecting Vehicles License-Plates”, University of Natural Sciences, 2004
[11] Nobuyuki Otsu, "A threshold selection method from gray-level histograms”, 1979
[12] R.C. Gonzalez, R.E. Woods, Digital Image Processing, Addison-Wesley, 1993. [13] Các tài liệu về EmguCV tại www.emgucv.com OPenCV tại www.opencv.com
[14] http://genk.vn/giai-ngo-ve-deep-learning-cong-nghe-dang-giup-cho-tri-tue-
nhan-tao-sanh-duoc-voi-con-nguoi-20160816002755886.chn (Ngày truy cập 20/07/2018)
[15] https://ongxuanhong.wordpress.com/category/data-science/deep-learning/
(Ngày truy cập 20/07/2018)
[16] Alex Krizhevsky, “Imagenet classification with deep convolutional neural networks”, Advances in neural information processing systems, 2012
[17] Karen Simonyan, Andrew Zisserman, “Very Deep Convolutional Networks for Large-Scale Image Recognition”, arXiv:1409.1556, 2014
[18] Christian Szegedy, Wei Liu, Yangqing Jia, Pierre Sermanet, Scott Reed, Dragomir Anguelov, Dumitru Erhan, Vincent Vanhoucke, Andrew Rabinovich, “Going Deeper with Convolutions”, 2014