Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 79 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
79
Dung lượng
2,45 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƢỜNG ĐẠI HỌC QUY NHƠN LÊ THỊ PHƢƠNG NGÂN NGHIÊN CỨU KỸ THUẬT DEEP LEARNING VÀ ỨNG DỤNG TRONG PHÂN LOẠI ẢNH Chuyên ngành: Khoa học máy tính Mã số: 8.48.01.01 Ngƣời hƣớng dẫn: TS Lê Xuân Việt LỜI CAM ĐOAN Tôi xin cam đoan: luận văn “Nghiên cứu kỹ thuật Deep Learning ứng dụng phân loại ảnh” cơng trình nghiên cứu dƣới hƣớng dẫn giảng viên hƣớng dẫn, không chép lại ngƣời khác Các tài liệu đƣợc luận văn tham khảo, kế thừa trích dẫn đƣợc liệt kê danh mục tài liệu tham khảo Tơi xin chịu hồn tồn trách nhiệm lời cam đoan Quy Nhơn, ngày tháng 09 năm 2020 Học viên Lê Thị Phƣơng Ngân LỜI CẢM ƠN Trên thực tế khơng có thành cơng mà không gắn liền với hỗ trợ, giúp đỡ dù hay nhiều, dù trực tiếp hay gián tiếp ngƣời khác Với lòng biết ơn sâu sắc nhất, xin chân thành cảm ơn quý Thầy Cô Trƣờng Đại h c Quy Nhơn, đ c biệt quý thầy cô Khoa Công nghê thông tin tận tình dạy dỗ, giúp đỡ tạo m i điều kiện tốt cho suốt quãng thời gian tơi theo h c trƣờng để hồn thành đƣợc đề tài Tơi tỏ lịng biết ơn sâu sắc đến TS Lê Xuân Việt, ngƣời thầy tận tình hƣớng dẫn khoa h c giúp đỡ, bảo tơi suốt q trình nghiên cứu tạo m i điều kiện tốt cho hồn thành luận văn Cuối cùng, tơi xin chân thành cảm ơn đến gia đình, anh chị bạn đồng nghiệp động viên cổ vũ, đóng góp ý kiến cho tơi suốt q trình h c nhƣ làm luận văn tốt nghiệp, giúp hoàn thành đề tài luận văn thời hạn Quy Nhơn, ngày tháng 09 năm 2020 Học viên Lê Thị Phƣơng Ngân MỤC LỤC LỜI CAM ĐOAN LỜI CẢM ƠN DANH MỤC CHỮ VIẾT TẮT DANH MỤC CÁC HÌNH VẼ Lý ch n đề tài Mục đích nhiệm vụ nghiên cứu 3 Đối tƣợng phạm vi nghiên cứu 4 Phƣơng pháp nghiên cứu Cấu trúc luận văn: CHƢƠNG 1: MỘT SỐ KIẾN THỨC LIÊN QUAN 1.1 Tổng quan h c máy 1.1.1 H c máy gì? 1.1.2 Một số ví dụ 1.2 Phân nhóm thuật toán h c máy 1.2.1 Phân nhóm theo phƣơng thức h c 1.2.1.1 H c có giám sát (Supervised Learning) 1.2.1.2 H c không giám sát (Unsupervised learning) 1.2.1.3 H c bán giám sát (hay h c kết hợp - Semi-supervised Learning) 1.2.1.4 H c củng cố (Reinforcement Learning) 1.2.2 Phân nhóm dựa chức 10 1.2.2.1.Các thuật toán hồi quy (Regression Algorithms) 10 1.2.2.2 Các thuật toán phân cụm 10 1.2.2.3 Các thuật toán phát luật 11 1.3 Mạng neural nhân tạo (Artificial Neural Network - ANN) 11 1.3.1 Giới thiệu mạng Neural [1] 11 1.3.2 Cấu tạo trình xử lý neural sinh h c 12 1.3.3 Cấu tạo trình xử lý neural nhân tạo 13 1.3.4 Các mơ hình hàm kích hoạt mạng neural nhân tạo 14 1.3.5 Mơ hình mạng neural 17 1.3.6 Một số kiểu mạng Neural 18 1.3.7 Thuật toán lan truyền ngƣợc MLP 21 1.4 Tổng quan toán nhận dạng ảnh 27 1.5 Tổng quan Deep Learning 31 1.6 Kết luận chƣơng 31 CHƢƠNG 2: MẠNG NEURAL TÍCH CHẬP 33 2.1 Khái niệm mạng neural tích chập 33 2.2 Phép tính Convolution (tích chập) 34 2.3 Cấu trúc mạng neural tích chập 35 2.4 Đào tạo mạng neural tích chập 44 2.5 Nguyên tắc xây dựng mạng neural tích chập 47 2.6 Một số kiến trúc mạng CNN tiếng [6] 48 2.6 Kết luận chƣơng 49 CHƢƠNG 3: ỨNG DỤNG MẠNG CNN TRONG PHÂN LOẠI HÌNH ẢNH 50 3.1 Yêu cầu toán 50 3.2 Giải vấn đề 50 3.3 Mơ hình mạng CNN toán 51 3.4 Huấn luyện 54 3.5 Đánh giá mơ hình 56 3.6 Thử nghiệm nhận dạng ảnh 56 4.1 Kết đạt đƣợc: 59 4.2 Ƣu nhƣợc điểm phƣơng pháp 59 4.3 Hƣớng phát triển 59 PHỤ LỤC QUYẾT ĐỊNH GIAO ĐỀ TÀI LUẬN VĂN (bản sao) DANH MỤC CHỮ VIẾT TẮT STT Mô tả Ý nghĩa AI ANN Artificial Neural Network – Mạng thần kinh nhân tạo CNN Convolutional Neural Network – Mạng thần kinh tích chập ReLU Rectified Linear Unit – Điều chỉnh đơn vị tuyến tính CSDL Cơ sở liệu GPU Graphics Processing Unit – Vi xử lý đồ h a CPU Central Processing Unit – Bộ xử lý trung tâm DL Deep learning – h c sâu SVM Artificial Intelligence - Trí tuệ nhân tạo Support Vector Machine - thuật tốn phân lớp DANH MỤC CÁC HÌNH VẼ Hình 1 Neuron sinh h c 13 Hình Mơ hình neural 14 Hình Hàm Sigmoid 15 Hình Đồ thị hàm Tanh 16 Hình Đồ thị hàm Relu 16 Hình So sánh tốc độ hội tụ hàm Relu với hàm Tanh 17 Hình Mơ hình mạng neural lớp 17 Hình Mơ hình mạng neural nhiều lớp3 18 Hình Mạng tự kết hợp 19 Hình 10 Mạng kết hợp khác kiểu 19 Hình 11 Mạng truyền thẳng 20 Hình 12 Mạng phản hồi 20 Hình 13 Mơ hình mạng neural lớp ẩn 24 Hình Sơ đồ tổng tổng quát cấu trúc mạng CNN 35 Hình 2 Phép tính tích chập ảnh màu với k=3 35 Hình Ma trận đầu vào 36 Hình ma trận l c 36 Hình 2.5 Các bƣớc thực phép tính tích chập cho ma trận X với l c K 37 Hình kết phép tính tích chập 37 Hình Ma trận X (lớp vào) thêm viền bên 38 Hình Lớp lấy mẫu tối đa với kính thƣớc=(3,3), bƣớc nhảy=1, đƣờng viền phụ =0 40 Hình 10 Mơ hình lớp lấy mẫu 41 Hình 11 Ví dụ lớp lấy mẫu7 41 Hình 12 Một số ví dụ đầu vào đầu hàm softmax 43 Hình Dữ liệu CIFAR10 dataset 50 Hình Một số hình CIFAR10 51 Hình 3 code để link tới file Google drive 56 Hình Đồ thị accuracy training set validation set 56 Hình Một số hình minh h a kết việc phân loại ảnh batch Cifar-10 57 Hình Một số hình minh h a kết việc phân loại ảnh load lên từ điện thoại 58 MỞ ĐẦU Lý chọn đề tài Phân loại ảnh trƣờng hợp tốn phân lớp với mục đích cuối xác định ảnh đƣợc đƣa vào thuộc lớp số lớp đƣợc phân loại Đây vấn đề cốt lõi lĩnh vực computer vision (nhìn máy hay thị giác máy) nói riêng trí tuệ nhân tạo nói chung Phân loại ảnh có nhiều ứng dụng sống Phân loại ảnh viễn thám hay ảnh vệ tinh góp phần giải tốn khí tƣợng thủy văn, lũ lụt, hạn hán; nghiên cứu thực vật quy mô lớn, nghiên cứu nhiệt độ m t nƣớc dƣới đại dƣơng, giám sát cháy rừng,…[4] Phân loại ảnh biển báo giao thông nhận diện biển báo ứng dụng phần mềm cảnh báo xe hơi, thành phần thiếu thiết kế xe tự lái Phân loại ảnh y tế vấn đề quan tr ng lĩnh vực nhận dạng hình ảnh mục đích phân loại hình ảnh y tế thành loại khác để giúp bác sĩ chẩn đoán bệnh ho c đƣa kết luận y khoa Phân loại ảnh hỗ trợ cho việc phân loại rác y tế, công việc cần hỗ trợ tự động hóa, giải phóng sức lao động môi trƣờng ô nhiễm cho ngƣời Ứng dụng kết nghiên cứu phân loại ảnh xuất nhiều phần mềm smart phone Google Lens Google nhận dạng nhiều loại hình ảnh nhƣ loại động vật, thực vật, hoa, đồ dùng có thƣơng hiệu nhiều đồ vật khác Ngồi ra, đối tƣợng tìm đƣợc, Google Lens đề xuất liên kết để mua sắm muốn 56 Hình code để link tới file Google drive 3.5 Đánh giá mơ hình Để đánh mơ hình có hoạt động với độ xác cao hay khơng tơi sử dụng hình ảnh kiểm tra nằm test batch Cifar-10 mà lúc huấn luyện máy chƣa nhìn thấy để đánh giá Với mơ hình CNN đầy đủ trên, ta thu đƣợc kết thử nghiệm 0.8078 Với thời gian huấn luyện 30 phút Qua kết thu đƣợc, thấy độ accuracy mô hình, đánh giá tập kiểm thử, thấp so với số liệu trình huấn luyện Hình Đồ thị độ xác mơ hình huấn luyện thử nghiệm 3.6 Thử nghiệm nhận dạng ảnh 57 Với mơ hình đƣợc đào tạo, dùng để đƣa dự đoán với số ảnh thực tế đƣợc chụp từ điện thoại ho c máy ảnh Đầu tiên, ta load lại mơ hình thu đƣợc q trình đào tạo Sau đó, đƣa vào ảnh để kiểm tra thuộc lớp 10 lớp sau: “máy bay, ô tô, chim, mèo, hƣơu, chó, ếch, ngựa, tàu thủy, xe tải” Ta thu đƣợc kết nhƣ sau: Bộ hình ảnh kiểm tra nằm test batch Cifar-10 mà lúc huấn luyện máy chƣa nhìn thấy để thử nghiệm Sau kết xuất 30 ảnh test batch, kết thu đƣợc nhƣ hình 3.5 (dự đốn 24 hình sai hình) Hình Một số hình minh họa kết việc phân loại ảnh batch Cifar-10 58 Tiếp theo, thử nghiệm số hình ảnh chụp từ điện thoại máy chụp ảnh load vào mơ hình Kết thu đƣợc nhƣ hình 3.6 M c dù tỉ lệ chƣa cao Tuy nhiên, thử nghiệm cho số ảnh có phức tạp ho c nhiều đối tƣợng chƣơng trình cho kết nhƣ hình có ho c mèo cho đƣợc kết Hình Một số hình minh họa kết việc phân loại ảnh load lên từ điện thoại 3.7 Kết luận chƣơng Khi áp dụng mạng neural tích chập vào tốn phân loại ảnh thực tế, hệ thống hoạt động ổn định tỉ lệ sai số ngƣỡng thấp chấp nhận đƣợc Về bản, nội dung thể đƣợc bƣớc để giải toán phân loại ảnh thực tế Từ việc phân tích u cầu tốn đến quy trình xử lý chƣơng trình thử nghiệm với kết 59 KẾT LUẬN 4.1 Kết đạt đƣợc: Tổng hợp đƣợc kiến thức, nắm vững kỹ thuật Deep Learning, xây dựng đƣợc mơ hình h c máy kỹ thuật cho liệu khác - Cài đ t chƣơng trình Python, ứng dụng mơ hình Deep Learning phân loại nhận dạng ảnh màu - Ý nghĩa khoa h c ứng dụng thực tiễn đề tài: Nghiên cứu thuật toán Deep Learning xây dựng mơ hình h c máy để phân loại nhận dạng ảnh 4.2 Ƣu nhƣợc điểm phƣơng pháp Với kiến trúc mạng CNN đề xuất toán phân loại ảnh phù hợp cho dataset CIFAR-10 nhƣng chƣa có thích hợp cho dataset khác Bởi ln có ƣu điểm nhƣợc điểm phƣơng pháp Ƣu điểm: Tìm kiếm ảnh dựa phân lớp ảnh giảm thiểu số ảnh phải so sánh tƣơng đồng Nhƣợc điểm: Mơ hình CNNs phức tạp h c lâu 4.3 Hƣớng phát triển Trong trình thực đề tài, hạn chế m t trình độ thời gian thực luận văn có hạn nên luận văn cịn nhiều điều chƣa làm hết Vì thế, cần phải cải thiện để phát triển tiếp sau Theo tơi vấn đề cịn sót lại cần phải cải thiện bao gồm: Tìm cách tăng độ xác tƣơng đồng cho mơ hình Phát triển cho dataset có kích thƣớc lớn có nhiều nhãn dán Tìm kiếm nhiều đối tƣợng ảnh 60 DANH MỤC TÀI LIỆU THAM KHẢO [1] TS Lê Xuân Vinh – Đại h c Quy Nhơn - Giáo trình Machine Learning, 2019 [2] Vũ Hữu Tiệp (2017) Machine Learning http://machinelearningcoban.com/general/2017/02/06/featureengineering/ [3] Nguyễn Thanh Tuấn, “Sách Deep Learning bản“, https://drive.google.com/file/d/1lNjzISABdoc7SRq8tgxkCRRZRABPCKi/view, 2019 [4] Z Lai, H F Deng, Medical Image Classification Based on Deep Features Extracted by Deep Model and Statistic Feature Fusion with Multilayer Perceptron, Comput Intell Neurosci, 2018; [5] Hai Wang, Yingfeng Cai, Long Chen, A Vehicle Detection Algorithm Based on Deep Belief Network , The Scientific World Journa, 2014; [6] https://www.coursera.org/specializations/deep-learning; [7] Liangji Zhou, Classification Convolutional Qingwu Li, Guanying Huo, Yan Zhou, Image Using Neural Biomimetic Networks Pattern Recognition Features, with Computational Intelligence and Neuroscience, 2017 [8] Yu Sun, Yuan Liu, Guan Wang, Haiyan Zhang, Deep Learning for Plant Identification in Natural Environment, Computational Intelligence and Neuroscience, 2017; [9] Hai Wang, Yingfeng Cai, Long Chen, A Vehicle Detection Algorithm Based on Deep Belief Network, Hindawi Publishing Corporatione The Scientific World Journal, 2014 [10] Shan Pang, Xinyi Yang, Deep Convolutional Extreme Learning Machine 61 and Its Application in Handwritten Digit Classification, Hindawi Publishing Corporation Computational Intelligence and Neuroscience , 2016 [11] Srdjan Sladojevic, Marko Arsenovic, Culibrk, Darko Stefanovic, Deep Andras Anderla, Dubravko Neural Networks Based Recognition of Plant Diseases by Leaf Image Classification, Hindawi Publishing Corporation Computational Intelligence and Neuroscience , 2016 [12] Wei Hu, Yangyu Huang, Li Wei, Fan Zhang, Hengchao Li, Deep Convolutional Neural Networks for Hyperspectral Image Classification, Hindawi Publishing Corporation Journal of Sensors, 2015 [13] Kumar, "Achieving 90% accuracy in Object Recognition Task on CIFAR10 Dataset with Keras: Convolutional Neural Networks," [Online] Available: https://appliedmachinelearning.blog/2018/03/24/achieving-90accuracy-in-object-recognition-task-on-cifar-10-dataset-with-kerasconvolutional-neural-networks/, 2018 [14] Ling Zhang ; Bo Zhang, A geometrical representation of McCullochPitts neural model and its applications, IEEE Transactions on Neural Networks, 1999 [15] lJiuYangabLidanWangabYanWangabTengtengGuoab , A novel memristive Hopfield neural network with application in associative memory, Neurocomputing, 2017 62 [16] Andrej Karpathy (n.d.) CS231n Convolutional Neural Networks for Visual Recognition - Visualizing what ConvNets learn http://cs231n.github.io/understanding-cnn/ [17] http://bis.net.vn/forums/p/482/898.aspx [18] https://www.oreilly.com/library/view/deeplearning/9781491924570 /assets/dpln_0408.png Pl- PHỤ LỤC Mã nguồn thuật tốn trừ chƣơng trình: from google.colab import drive drive.mount('gdrive') %cd /content/gdrive/My Drive/Colab Notebooks from future import print_function import keras from keras.datasets import cifar10 from keras.preprocessing.image import ImageDataGenerator from keras.models import Sequential from keras.layers import Dense, Dropout, Activation, Flatten from keras.layers import Conv2D, MaxPooling2D import os import matplotlib.pyplot as plt from tensorflow.keras import datasets, layers, models batch_size = 32 num_classes = 10 epochs = 10 data_augmentation = True num_predictions = 20 # The data, split between train and test sets: (x_train, y_train), (x_test, y_test) = cifar10.load_data() Pl- print('x_train shape:', x_train.shape) print(x_train.shape[0], 'train samples') print(x_test.shape[0], 'test samples') class_names = ['airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', ' ship', 'truck'] plt.figure(figsize=(10, 10)) for i in range(25): plt.subplot(5, 5, i + 1) plt.xticks([]) plt.yticks([]) plt.grid(False) plt.imshow(x_train[i], cmap=plt.cm.binary) plt.xlabel(class_names[y_train[i][0]]) plt.show() # Convert class vectors to binary class matrices y_train = keras.utils.to_categorical(y_train, num_classes) y_test = keras.utils.to_categorical(y_test, num_classes) def cnn_model(): model = Sequential() model.add(Conv2D(32, (3,3),activation = 'relu',padding='same', input_shap e=(32, 32, 3))) model.add(Conv2D(32, (3,3),activation = 'relu')) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Dropout(0.1)) Pl- model.add(Conv2D(64, (3, 3), activation='relu', padding='same')) model.add(Conv2D(64, (3, 3), activation='relu')) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Dropout(0.1)) model.add(Conv2D(128, (3, 3), activation='relu', padding='same')) model.add(Conv2D(128, (3, 3), activation='relu')) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Dropout(0.1)) model.add(Flatten()) model.add(Dense(512, activation='relu')) model.add(Dropout(0.1)) model.add(Dense(10, activation='softmax')) model.summary() return model model=cnn_model() opt = keras.optimizers.RMSprop(learning_rate=0.0001, decay=1e-6) model.compile(loss='categorical_crossentropy', optimizer=opt, metrics=['accu racy']) x_train = x_train.astype('float32') x_test = x_test.astype('float32') x_train /= 255 x_test /= 255 model_detail= model.fit(x_train, y_train, Pl- batch_size=128, epochs=100, validation_data=(x_test, y_test), verbose=1) model_json = model.to_json() print(model_json) with open('model.json', 'w') as json_file: json_file.write(model_json) model.save_weights('model.h5') # Score trained model scores = model.evaluate(x_test, y_test, verbose=0) print (scores) print('Test loss:', scores[0]) print('Test accuracy:', scores[1]*100) model.save("ngan_model") plt.plot(model_detail.history['accuracy'], label='accuracy') plt.plot(model_detail.history['val_accuracy'], label = 'val_accuracy') plt.xlabel('Epoch') plt.ylabel('Accuracy') plt.ylim([0.5, 1]) plt.legend(loc='lower right') test_loss, test_acc = model.evaluate(x_test, y_test, verbose=2) print(test_acc) Pl- ## 10 Thử lại ảnh model_json = model.to_json() print(model_json) plt.imshow(x_test[9999]) plt.show() img = x_test[9999].reshape(1, 32, 32, 3) # prepare pixel data img = img.astype('float32') result = model.predict_classes(img) print(result) # print('Giá trị dự báo: ', np.argmax(y_predict)) # test ảnh from keras.preprocessing.image import save_img for i in range(10): save_img("test1/{0}.png".format(str(i)), x_test[i]) from keras.preprocessing.image import load_img from keras.preprocessing.image import img_to_array from keras.models import load_model import matplotlib.pyplot as plt # load and prepare the image def load_image(filename): # load the image img = load_img(filename, target_size=(32, 32)) Pl- plt.imshow(img) plt.show() # convert to array img = img_to_array(img) # reshape into a single sample with channels img = img.reshape(1, 32, 32, 3) # prepare pixel data img = img.astype('float32') # img = img / 255.0 return img # load an image and predict the class def run_example(filename): # load the image img = load_image(filename) # predict the class result = model.predict_classes(img) print(class_names[result[0]]) # entry point, run the example run_example('test1/0.png') from os import listdir from os.path import isfile, join onlyfiles = [f for f in listdir("test1/") if isfile(join("test1/", f))] print(onlyfiles) Pl- for ii in onlyfiles: run_example('test1/'+ii) from os import listdir from os.path import isfile, join onlyfiles = [f for f in listdir("test/") if isfile(join("test/", f))] print(onlyfiles) for ii in onlyfiles: run_example('test/'+ii) ... ảnh Vì lý trên, lựa ch n ? ?Nghiên cứu kỹ thuật Deep Learning ứng dụng phân loại ảnh? ?? làm đề tài luận văn thạc sĩ Mục đích nhiệm vụ nghiên cứu - Nghiên cứu kỹ thuật Deep Learning, nguyên lý, thủ... hiểu kỹ thuật để giải toán phân loại ảnh vấn đề cấp thiết cần quan tâm nghiên cứu Các ứng dụng nói chung lớp toán, đầu vào ảnh, đầu cần xác định ảnh thuộc loại danh mục loại ảnh biết Bài toán phân. ..LỜI CAM ĐOAN Tôi xin cam đoan: luận văn ? ?Nghiên cứu kỹ thuật Deep Learning ứng dụng phân loại ảnh? ?? cơng trình nghiên cứu tơi dƣới hƣớng dẫn giảng viên hƣớng dẫn, không chép lại