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