Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 19 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
19
Dung lượng
770,32 KB
Nội dung
BÁO CÁO TIỂU LUẬN MÔN XỬ LÝ ẢNH CONVOLUTIONAL NEURAL NETWORK TP HỒ CHÍ MINH, THÁNG 06 NĂM 2020 Convolution Neural Network : MỤC LỤC Convolution Neural Network : Lý thuyết 1.1 Tổng quát Convolutional Neural Network (CNN) hay cịn gọi mạng Nơ-ron tích chập dùng để dạy thuật toán nhận diện đối tượng hình ảnh CNNs chia thành chiều : rộng, cao, sâu Các Nơ- ron mạng không liên kết hoàn toàn với toàn Nơ-ron mà liên kết tới vùng nhỏ Cuối cùng, tầng đầu tối • giản thành vec-tơ giá trị xác suất CNNs gồm thành phần: Phần tầng ẩn hay phần rút trích đặc trưng: Trong phần này, mạng tiếng hành tính tốn hàng loạt • phép tích chập (Convolutional layer) phép hợp (pooling) để phát đặc trưng [1] Phần phân lớp: Tại phần này, số lớp liên kết đầy đủ (Fully Connected) đóng vai trị phân lớp đặc trưng rút trích trước đó.Tầng đưa xác suất đối tượng hình.[1] H1.1 Cấu trúc CNN[1] 1.2 Convolutional Layers Khối tích chập( convolution): Sử dụng phép hợp hai hàm tạo thành hàm thứ ba Trong CNN, tích chập thực giá trị đầu vào liệu kernel/filter để tạo đồ đặc trưng (feature map) Ta thực phép tích chập cách trượt kernel/filter theo kiểu liệu đầu vào Tại vị trí, ta tiến hành phép nhân ma trận tính tổng để đưa vào feature map Ở lớp đầu tiên, khối tích chập dùng để phát cạnh thẳng đứng cạnh nằm ngang, cạnh chéo, …Việc cần dùng kernel hay dùng kernel CNN tự tìm Dưới ví dụ việc nhận diện cạnh thẳng đứng: Convolution Neural Network : H1.2 Vertical Edge Detection example • Tại khối tích chập, thông số sử dụng bao gồm: Stride (S) : Khoảng cách kernel quét.Ví dụ với stride=1, kernel quét ô cạnh Với stride=2, kernel quét ô số ô số 3, bỏ qua ô Điều nhằm tránh việc lặp lại giá trị ô bị quét Padding (P): Tăng thêm số hàng cột ( thường có giá trị 0) để tránh việc giảm kích thước • output để lấy thơng tin pixel ngồi Có loại padding “valid” tức • • padding =0 “same” tức padding để kích thước ngõ kích thước ngõ vào #filters (nc) : Số filter sử dụng layers f : kích thước filter f *f H1.3 Các thông số conv layers 1.3 Pooling Layers Khối Pooling: Mục đích làm giảm số parameters mà ta cần phải tính tốn, từ giảm thời gian tính tốn Ngồi cịn tránh overfitting Có loại pooling: max pooling lấy giá trị lớn pooling window mean pooling lấy giá trị trung bình pooling window Convolution Neural Network : Pooling hoạt động gần giống convolution, max pooling cửa sổ trượt qua giá trị ma trận liệu đầu vào, chọn giá trị lớn nằm cửa sổ trượt H1.4 Max pooling [1] 1.4 Fully Connected Layers Neural Network Mạng neural network hay mạng neural nhân tạo thuật toán "Máy Học" nhánh "Học Sâu" lấy cảm hứng từ mạng neuron người Ở đó, lớp đưa đặc tính vào mạng gọi Input Layer lớp cuối để đưa giá trị dự đoán gọi Output Layer Giữa lớp Input Output gồm hay nhiều lớp ẩn khác giúp tăng khả học dự đoán mạng gọi Hidden Layer Mỗi Layer tập hợp gồm nhiều node khác nhau, node lớp trước kết nối với toàn node lớp sau Tại node, mơ hình thực q trình linear regression (hồi quy tuyến tính): Trong đó: (i): mẫu thứ i tập liệu [l]: lớp thứ l mạng k: node thứ k lớp thứ l ak(i)[l-1]: ngõ node thứ k layer phía trước thuộc mẫu thứ i tức ngõ vào lớp xét wk(i)[l].T: chuyển vị ma trận tham số w node thứ k lớp thứ l mẫu thứ i bk(i)[l]: ma trận tham số b node thứ k lớp thứ l mẫu thứ i g(i)[l]: hàm kích hoạt lớp thứ l mẫu thứ i ak(i)[l]: ngõ node thứ k layer xét thuộc mẫu thứ i Convolution Neural Network : Những phương trình xếp tham số theo lớp lại thành ma trận để q trình xử lí nhanh Q trình gọi vector hố (Vectorization) Xét mẫu: Ma trận W có kích thước k x n, ma trận a[l-1]có kích thước n x 1, ba có kích thước ma trận k x Z a[l]có kích thước k x Xét m mẫu: Sau vector hóa m mẫu, Z a[l] từ kích thước k x thành k x m Sau tìm y hàm mát(Loss Function) tính tốn để xác định sai số dự đốn mơ hình với đầu thực tế Convolution Neural Network : Tồn q trình xử lí qua tất node từ input layer đến output layer gọi truyền xuôi (Forward Propagation) Sau q trình truyền ngược (Back Propagation) tính tốn để tìm đạo hàm hàm Loss Fuction theo tham số lớp Quá trình Back Propagation vector hố Từ q trình Gradient Descent diễn để cập nhập lại tham số W,b lớp để khả dự đoán mơ hình tăng lên Vector hố áp dụng cho q trình α Trong gọi tốc độ học (learning rate) H1.4.quá trình Forwardpropagation Backpropagation [3] H1.5.Phép Flatten chuyên tensor thành vector [2] Trong mạng CNN, trình thường áp dụng lớp cuối sau trình Flatten - trình làm phẳng lớp chiều phía trước thành lớp chiều - diễn Khi đó, mạng gọi Fully Connected, tức node lớp trước kết nối hoàn toàn với node lớp sau Convolution Neural Network : H1.6.Mô tả đoạn thuật toán Neural Network áp dụng mạng CNN mơ hình CNN LeNet-5.[3] Convolution Neural Network : 1.5 Lớp Softmax Sau mạng CNNs học qua lớp phía trước, ta thu vector đặc trưng Khi đó, cần dựa vào vector đặc trưng để phân loại vào lớp theo yêu cầu toán Hàm softmax mơ hình xác suất để với input x, tính output a i thể xác suất để input rơi vào lớp thứ i Hàm softmax có đầu vào vector, đầu vector có số chiều có cơng thức là: = exp( zi ) C ∑ exp( z ) j =1 , ∀i = 1, 2,3, C j với C số lớp ngõ Nhận xét: - Giá trị zi lớn xác suất liệu rơi vào lớp thứ i cao Các lớn có tổng H1.7.Ví dụ đầu vào đầu hàm softmax.[2] a( z ) : R n → R n Convolution Neural Network : 1.6 Một số hàm tối ưu (Optimizer) 1.6.1 Mini-batch Với tệp liệu lớn việc huấn luyện tệp tính Gradient Descent thời gian Vì thay huấn luyện tồn tệp, người ta thường phân nhỏ tệp thành mini-batch Giả sử với tệp 5.000.000 mẫu ta phân nhỏ thành mini-batch có kích thước 1000 mẫu Trong đó, x(1) mẫu thứ X , X{1} mini-batch thứ X Lựa chọn mini-batch thích hợp giúp q trình vector hóa liệu nhanh mẫu khơng cần phải đợi tồn q trình xảy mà dừng lại tỉ lệ dự đoán đạt yêu cầu Các kích thước mini-batch thường chọn : 64(26),128(27),256(28),1024(29) Các bước học với mini-batch gradient descent diễn sau: Q trình trải qua tồn mini-batch gọi "epoch" 1.6.2 ADAM Optimizer 10 Convolution Neural Network : Thuật toán tối giản ADAM(Adaptive Moment Estimation) xem thuật toán tối giản tốt kết hợp hai phương pháp Gradient Descent với động lực RMS: Quá trình ADAM diễn sau: Thêm trình "correct" để tránh sai sót q trình q độ khởi tạo giá trị ban đầu 0, với lần lặp t sau, trình "correct" khơng ảnh hưởng lên q nhiều βt với t lớn xấp xỉ nên VdWcorrect ≈ VdW 1.6.3 Categorical Crossentropy Khi huấn luyện mơ hình, để biểu thị chênh lệch ngõ dự đoán ngõ thực tế, ta sử dụng ^ hàm mát (Loss function) L( y, y ) K ^ ^ Lcross ( y ,y)= − ∑ yk log y k k =0 Hàm mát nhỏ độ xác cao Hàm mát định nghĩa Keras Categorical Crossentropy Ví dụ minh họa 2.1 Import thư viện 11 Convolution Neural Network : H2.1 import thư viện import numpy as np: import thư viện numpy với kiểu truy cập thư viện "np" Thư viện numpy giúp ta thao tác với mảng đại số, thức phép toán liên quan đến đại số tuyến tính import os: import module os để tương tác với hệ điều hành, cho phép làm việc với thư mục tệp tin import matplotlib.pyplot as plt: import thư viện matplotlib với module pyplot với kiểu truy cập "plt" Thư viện module giúp ta thao tác đồ thị from keras.models import Sequential: từ thư viện Keras import module models models import Sequential dùng để khởi tạo model from keras.layers import Dense,Dropout, Activation, Flatten from keras.layers import Conv2D, MaxPooling2D lệnh từ thư viện Keras import model layers để xây dựng layer cho mạng CNN Từ model layer import số function để thao tác layer CNN H2.2 Kiến trúc Keras[4] import keras.utils: Từ thư viện keras import module util chứa function giúp ta thực xử lý liệu nhanh from keras.datasets import mnist: Function mnist dùng để tải liệu 12 Convolution Neural Network : 2.2 Tải tập liệu phân chia tập training tập validation H2.3.Phân chia liệu 13 Convolution Neural Network : mnist.load_data(): Tải liệu từ nguồn có sẵn, sau liệu phân tập: tập Huấn luyện - Training (X_train,y_train) tập Kiểm tra - Test (X_test,y_test) Ở đây, tập training gồm 60000 mẫu tập test gồm 10000 mẫu Sau đó, từ tập training ta xác định tập Thẩm định – validation (X_val,y_val) X_val,y_val = X_train[50000:60000,:],y_train[50000:60000] X_train,y_train = X_train[:50000,:], y_train[:50000] Sử dụng 50000 mẫu cho training 10000 mẫu lại sử dụng cho validation 2.3 Reshape liệu H2.4.Reshape mẫu để phù hợp với đầu vào mạng CNN X_train = X_train.reshape(X_train.shape[0],28,28,1): Làm phẳng 50000 mẫu ảnh kích thước 28x28 thành ma trận cột chiều Tương tự cho tập validation tập test 2.4 Biến đổi nhãn ngõ sang dạng ma trận One Hot Encoding H2.5 Biến đổi ngõ keras.utils.to_categorical(): Lệnh sử dụng để biến đổi từ ma trận chứa liệu nhãn sang dạng one-hot encoding 14 Convolution Neural Network : 2.5 Xây dựng mơ hình CNN H2.6 Xây dựng mơ hình CNN Sequential(): khởi tạo mơ hình CNN model.add(): thêm lớp vào mạng CNN Conv2D(number of filters ,kernel size ,activation=""): Xây dựng lớp tích chập chiều với: number of filters: số lượng ma trận filter(kernel) lấy tích chập với mẫu kernel size: kích thước ma trận filter(kernel) activation: hàm kích hoạt sau lấy tích chập Ở lớp layer đầu sử dụng Conv2D(32,(3,3),activation='sigmoid') để xây mạng tích chập chiều với số lượng ma trận filter 32, kích thước ma trận 3x3, hàm kích hoạt sau lấy tích chập hàm sigmoid Kết thúc q trình từ mẫu có kích thước ma trận 28x28x1 -> 26x26x32 -> 24x24x32 Maxpooling2D(pool_size=""): xây dựng lớp tích chập maxpool với pool_size kích thước lấy max pooling Ở lớp sử dụng MaxPooling2D(pool_size="(2,2)) tức ta lấy max pooling với kích thước 2x2 mẫu đầu vào Kết thúc q trình từ mẫu có kích thước ma trận 24x24x32 -> 12x12x32 Flatten(): Lệnh sử dụng để làm phẳng layer chiều phía trước hình phía Kết thúc q trình mẫu có kích thước ma trận 12x12x32 -> 4608x1 Dense(number of units,activation=""): Xây dựng lớp fully connected với: number of units: số units lớp full connected activation: hàm kích hoạt sau Ở lớp cuối Dense(128,activation="sigmoid"): Tạo lớp fully connected với 128 units activation hàm sigmoid Mẫu có kích thước ma trận 4608x1 thành 128x1 Dense(10,activation="softmax"): Tạo lớp full connected với 10 units activation hàm softmax xác định nhãn cho mẫu Mẫu có kích thước 128x10 xuống cịn 10x1 để xác định y cho nhãn 15 Convolution Neural Network : Compile(loss="",optimizer="",metrics=):Kết hợp tất lớp tạo thành mạng CNN với loss để tính hàm tiêu hao, optimizer để tối ưu hóa, metrics để tìm độ xác mơ hình Compile(loss="category_crossentropy", optimizer="adam",metrics=["accuracy"]) kết hợp lớp trên, hàm tiêu hao tính cho multi classification, tối ưu hóa theo thuật tốn ADAM tính thêm độ dự đốn xác với mơ hình CNN 2.6 Huấn luyện tệp liệu H2.7 Huấn luyện mơ hình CNN model.fit(x, y, batch_size, validation_data, epochs, verbose): Huấn luyện mô hình với số epoch cho trước: x: mẫu huấn luyện y: nhãn mẫu huấn luyện batch_size: số mẫu mini_batch validation_data: liệu kiểm chứng epoch: số lần "epoch" - số lần quét qua toàn mẫu verbose=1: hiển thị trạng thái trình huấn luyện ngõ trả trình diễn huấn luyện, thời gian huấn luyện, hàm hao phí, độ xác tệp huấn luyện, hàm hao phí, độ xác tệp kiểm định qua lần epoch 2.7 Đánh giá khả dự đốn mơ hình qua đồ thị 16 Convolution Neural Network : H2.8 Đánh giá mơ hình qua đồ thị plt.figure(): tạo đồ thị plt.plot(np.arrange(x1,x2),H.history,label): biểu diễn liệu với: np.arrange(x1,x2): liệu biểu diễn khoảng x1 đến x2 H.history: liệu vẽ label: gắn nhãn cho liệu vẽ plt.plot(np.arrange(0,numOfEpoch),H.history['loss'],label="training loss"): Vẽ liệu hàm mát tệp huấn luyện 10 lần epoch gán nhãn "training loss" plt.tiltle(): Đặt tên cho biểu đồ plt.xlabel(): Đặt tên cho trục x plt.ylabel(): Đặt tên cho trục y plt.legend(): Hiển thị thích đường màu 2.8 Đánh giá mơ hình H2.9 Đánh giá mơ hình dùng tập kiểm tra model.evaluate(x,y,verbose): đánh giá mơ hình với tệp kiểm tra 17 Convolution Neural Network : x: mẫu kiểm tra y: nhãn mẫu kiểm tra verbose=0: không hiển thị trình ngõ trả (hàm mát tập kiểm tra, độ xác kiểm tra) 2.9 Dự đoán ảnh H2.10 Dự đoán ảnh plt.imshow(image,cmap): hiển thị hình ảnh với image: ảnh cần hiển thị cmap ="gray": ảnh hiển thị với thang đo mức xám model.predict(sample): trả ma trận y dự đốn khả mà ảnh phù hợp với nhãn Ví dụ với mẫu thứ 100 mơ hình dự đốn xác suất ảnh thuộc nhãn 1(tức dự đoán số 1) có 1.606795 x 10-7, thuộc nhãn 2.6708245 x 10-8và tương tự cho nhãn np.argmax(y_predict): trả thứ tự phần tử có giá trị cao tức có khả cao Ở mẫu thứ 100 nhãn số có xác suất dự đốn 9.9999988 x 10-11, mẫu dự đoán mang nhãn số tức số Tài liệu tham khảo [1] Nguyễn Phúc Lương,(2017), “Ứng dụng Convolutional Neural Network toán phân loại ảnh”, Viblo [2] [1]: Thor Pham Blog, (2018), "Tìm hiểu thư viện Keras Deep Learning", thorphamblog.github.io 18 Convolution Neural Network : [3] Andrew Ng., "Course - Convolution Network", Coursera [4]Nguyễn Thanh Tuấn,(2019), “Deep Learning bản” 19 ... thuyết 1.1 Tổng quát Convolutional Neural Network (CNN) hay cịn gọi mạng Nơ-ron tích chập dùng để dạy thuật toán nhận diện đối tượng hình ảnh CNNs chia thành chiều : rộng, cao, sâu Các Nơ- ron... kernel hay dùng kernel CNN tự tìm Dưới ví dụ việc nhận diện cạnh thẳng đứng: Convolution Neural Network : H1.2 Vertical Edge Detection example • Tại khối tích chập, thơng số sử dụng bao gồm: Stride... Convolution Neural Network : 2.5 Xây dựng mơ hình CNN H2.6 Xây dựng mơ hình CNN Sequential(): khởi tạo mơ hình CNN model.add(): thêm lớp vào mạng CNN Conv2D(number of filters ,kernel size ,activation=""):