Nhận diện chó mèo bằng Convolutional Neural Network

10 8 0
Nhận diện chó mèo bằng Convolutional Neural Network

Đang tải... (xem toàn văn)

Thông tin tài liệu

CNN là từ viết tắt của cụm Convolutional Neural Network hay là mạng nơ ron tích chập. Đây là mô hình vô cùng tiên tiến được áp dụng nhiều trong lĩnh vực học sâu Deep learning. Mạng CNN cho phép người dùng xây dựng những hệ thống phân loại và dự đoán với độ chính xác cực cao. Hiện nay, mạng CNN được ứng dụng nhiều hơn trong xử lý ảnh, cụ thể là nhận diện đối tượng trong ảnh.

ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT KHOA ĐIỆN – ĐIỆN TỬ BÁO CÁO LÝ THUYẾT HỌC SÂU VÀ ỨNG DỤNG Đề tài: Nhận diện chó mèo Convolutional Neural Network Giảng viên hướng dẫn: Phạm Thị Thảo Khương Sinh viên thực hiện: - Lê Hoàng Phương MSV: 1911505410145 - Nguyễn Đạt Tú MSV: 1911505410156 Lớp học phần : 123LTHSUD01 Chương 2: CHƯƠNG 1: TÌM HIỂU VỀ THUẬT TỐN CNN Giới thiệu mạng CNN CNN từ viết tắt của cụm Convolutional Neural Network mạng nơ ron tích chập Đây mô hình vô cùng tiên tiến được áp dụng nhiều lĩnh vực học sâu Deep learning Mạng CNN cho phép người dùng xây dựng những hệ thống phân loại dự đoán với độ chính xác cực cao Hiện nay, mạng CNN được ứng dụng nhiều xử lý ảnh, cụ thể nhận diện đối tượng ảnh Mạng CNN gì? * Convolutional CNN Đây một “cửa sổ” sử dụng trượt ma trận nhằm lấy được những thông tin chính xác cần thiết nhất mà chọn đặc trưng (feature) Convolution hay nhân tích chập cách mà những lớp Convolutional nhân những phần tử ma trận Sliding Window hay kernel dạng ma trận có kích thước nhỏ, sử dụng nhân tích chập với ma trận hình ảnh * Feature CNN Feature đặc trưng, mạng CNN sẽ so sánh dựa vào từng mảnh các mảnh vậy được gọi feature Thay vì phải tiến hành khớp các bức ảnh lại với thì mạng CNN sẽ xác định được tương đồng thông qua tìm kiếm thô những đặc trưng khớp với bằng hai hình ảnh tốt Một feature mộ hình ảnh dạng mini (những mảng chiều nhỏ) Những feature đều tương ứng với một khía cạnh đó của hình ảnh chúng có thể khớp lại được với Những lớp bản của mạng CNN: Mạng CNN bảo gồm những lớp sau: * Convolutional layer Lớp phần quan trọng nhất của toàn mạng CNN, nó có nhiệm vụ thực thi các tính toán Các yếu tố quan trọng lớp Convolutional là: padding, stride, feature map filter map  Mạng CNN sử dụng filter để áp dụng vào các vùng của ma trận hình ảnh Các filter map các ma trận chiều, bên đó những tham số chúng được gọi parameters tride tức bạn dịch chuyển filter map theo từng pixel dựa vào các giá trị từ trái qua phải  Padding: Thường, giá trị viền xung quanh của ma trận hình ảnh sẽ được gán các giá trị để có thể tiến hành nhân tích chập mà không làm giảm kích thước ma trận ảnh ban đầu  Feature map: Biểu diễn kết sau mỗi lần feature map quét qua ma trận ảnh đầu vào Sau mỗi lần quét thì lớp Convolutional sẽ tiến hành tính toán Convolutional layer * Relu Layer Lớp ReLU hàm kích hoạt mạng CNN, được gọi activation function Nó có tác dụng mô phỏng những nơ ron có tỷ lệ truyền xung qua axon Các hàm activation khác Leaky, Sigmoid, Leaky, Maxout, nhiên nay, hàm ReLU được sử dụng phổ biến thông dụng nhất Hàm được sử dụng cho những yêu cầu huấn luyện mạng nơ ron với những ưu điểm nổi bật điển hình hỗ trợ tính toán nhanh Trong quá trình dùng hàm ReLU, bạn cần ý đến việc tùy chỉnh những learning rate dead unit Những lớp ReLU được dùng sau filter map được tính áp dụng ReLU lên các giá trị của filter map Pooling layer Khi ma trận ảnh đầu vào có kích thước quá lớn, các lớp Pooling layer sẽ được đặt vào giữa những lớp Convolutional để làm giảm những parameters Hiện, hai loại lớp Pooling được sử dụng phổ biến Max pooling Average Pooling Layer * Fully connected layer Đây lớp có nhiệm vụ đưa kết sau hai lớp Convolutional Pooling đả nhận được ảnh truyền Khi này, ta sẽ thu được một model đọc được thông tin của ảnh Để có thể liên kế chúng cũng cho nhiều đầu ta sẽ sử dụng Fully connected layer Ngoài ra, nếu lớp có dữ liệu hình ảnh thì lớp sẽ chuyển chúng thành các much chưa được phân chia chất lượng để tìm ảnh có chất lượng cao nhất Kiến trúc của mạng CNN: Mạng CNN gì? Đó tập hợp những Convolutional layer xếp chồng lên nhau, đồng thời mạng sử dụng những hàm ReLU Tanh để kích hoạt các trọng số các node Các lớp sau qua các hàm activation sẽ có trọng số những node có thể tạo những thông tin trừu tượng đến với các lớp kế tiếp mạng Mạng CNN có tính kết hợp cà tính bất biến Tức là, nếu cùng một đối tượng mà sử dụng chiếu theo các góc độ khác thì sẽ có ảnh hưởng đến độ chính xác Với dịch chuyển, co giãn hay quay ma trận ảnh thì lớp Pooling sẽ được dùng để hỗ trợ làm bất biến các tính chất Chính vì vậy mà mạng CNN sẽ đưa những kết có độ chính xác tương ứng với từng mô hình Trong đó, lớp Pooling sẽ có khả tạo tính bất biến với phép dịch chuyển, co giãn quay Còn tính kết hợp cục bộ sẽ cho thấy những cấp độ biểu diễn, dữ liệu từ thấp đến cao với mức trừu twuongj thông qua Convolution từ filter Mạng CNN có những lớp liên kết dựa vào chế Convolution Các lớp tiếp theo sẽ kết từ những lớp trước đó, vì vậy mà bạn sẽ có những liên kết cục bộ phù hợp nhất Trong quá trình huấn luyện mạng, CNN sẽ tự học hỏi những giá trị thông qua filter layer dựa theo cách thức mà bạn thực Cấu trúc của một mô hình mạng CNN thường bao gồm phần chính bao gồm:  Trường cục bộ/ Local receptive field: Lớp sử dụng để tách lọc dữ liệu, thông tin hình ảnh để từ đó có thể lựa chọn các vùng có giá trị sử dụng hiệu cao nhất  Trọng số chia sẻ/ Shared weights and bias: Lớp hỗ trợ làm giảm các tham số đến mức tối thiểu mạng CNN Trong từng lớp convolution sẽ chứa các feature map riêng từng feature thì sẽ có khả phát một vài feature hình ảnh  Lớp tổng hợp/ Pooling layer: Đây lớp cuối cùng sử dụng để làm đơn giản các thông tin output Tức là, sau tính toán xong quét qua các layer mạng thì pooling layer sẽ được dùng để lược bỏ các thông tin không hữu ích Từ đó cho kết theo kỳ vọng người dùng Mạng CNN được sử dụng phổ biến Cách lựa chọn tham số cho mạng CNN Để chọn tham số phù hợp nhất cho mạng CNN thì bạn cần ý đến những yếu tố như: filter size, số convolution, pooling size việc train – test  Lớp Convolution: Số lượng lớp nhiều thì sẽ giúp cải thiện được hoạt động của chương trình Sử dụng những lớp với số lượng lớn thì khả hạn chế các tác động các tốt Thông thường, chỉ sau khoảng đến lớp bạn sẽ đạt được kết kỳ vọng  Filter size: Kích thước thường chọn ma trận 3×3 hoặc ma trận 5×5  Pooling size: Với những hình ảnh thông thường, bạn nên chọn ma trận pooling kích thước 2×2 Với những ảnh kích thước lớn thì nên chọn ma trận kích thước 3×3  Train – test: Cần thực train – test nhiều lần để có thể cho những parameter tốt nhất CHƯƠNG 2: ỨNG DỤNG NHẬN DIỆN CHÓ MÈO 1.Giới thiệu ứng dụng Trong dự án này, sẽ khám phá cách xây dựng đào tạo mạng nơ-ron tích chập để phân loại hình ảnh của Mèo Chó Nó cung cấp các hàm số cần thiết với cú pháp đơn giản để phân loại , nhận diện vật thơng qua ảnh 2.Bộ dữ liệu (Chó Mèo) Bộ dữ liệu Asirra (nhận dạng hình ảnh lồi đợng vật để hạn chế qùn truy cập) đã được giới thiệu vào năm 2013 cho một cuộc thi máy học Bộ dữ liệu bao gồm 25.000 hình ảnh với số lượng nhãn cho chó mèo bằng Bộ dữ liệu: https://www.kaggle.com/c/dogs-vs-cats/data 3.Các bước xây dựng ứng dụng Bước 1: import các thư viện cần thiết import numpy as np import pandas as pd import os import matplotlib.pyplot as plt import seaborn as sns import keras from keras.models import Sequential from keras.layers import Conv2D,Flatten,Dense,MaxPooling2D,Dropout from sklearn.metrics import accuracy_score from tensorflow.keras.layers import BatchNormalization Bước 2: Khai báo đường dẫn chứa thư mục dữ liệu train_dir = '/content/gdrive/MyDrive/chomeo/training_set/training_set' test_dir = '/content/gdrive/MyDrive/chomeo/test_set/test_set' Bước 3: Tiền xử lý dữ liệu với ImageDataGenerator from keras.preprocessing.image import ImageDataGenerator train_datagen = ImageDataGenerator(rescale=1./255) test_datagen = ImageDataGenerator(rescale=1./255) train_generator = train_datagen.flow_from_directory(train_dir,target_size=(224,224),batch_size= 20,class_mode='binary') test_generator = test_datagen.flow_from_directory(test_dir,target_size=(224,224),batch_size=20 ,class_mode='binary') Bước 4: Xây dựng mơ hình model = Sequential() #Lớp CNN model.add(Conv2D(32,(3,3),padding = 'same', activation='relu', input_shape=(224,224,3))) model.add(BatchNormalization()) model.add(MaxPooling2D(2,2)) #Lớp CNN model.add(Conv2D(64,(3,3),padding = 'same', activation='relu')) model.add(BatchNormalization()) model.add(MaxPooling2D(2,2)) #Lớp CNN model.add(Conv2D(128,(3,3),padding ='same', activation='relu')) model.add(BatchNormalization()) model.add(MaxPooling2D(2,2)) #Lớp làm phẳng model.add(Flatten()) #Lớp neron model.add(Dense(512,activation='relu')) model.add(BatchNormalization()) #Lớp Output model.add(Dense(1,activation='sigmoid')) model.summary() Bước 5: Thiết lập thông số để huấn luyện from tensorflow.keras import optimizers model.compile(loss='binary_crossentropy',optimizer=optimizers.RMSprop(learnin g_rate=1e-3), metrics=['accuracy']) Bước 6: Huấn luyện mơ hình history = model.fit_generator(train_generator,steps_per_epoch=train_generator.samples// 20,epochs=20,validation_data=test_generator,validation_steps=test_generator.s amples//20) Bước 7: Lưu mô hình model.save('/content/gdrive/MyDrive/chomeo') Bước 8: Kiểm tra kết quả from tensorflow.keras.preprocessing import image path ='/content/gdrive/MyDrive/chomeo/training_set/training_set/cats/cat.3492.jpg' img = image.load_img(path,target_size=(224,224)) img_array = np.array(img) img_array.shape img_array=img_array.reshape(1,224,224,3) a = model.predict(img_array) if a==[[0]]: print('Đây mèo') else: print('Đây chó') plt.imshow(img,interpolation='nearest') plt.show() 10

Ngày đăng: 26/01/2024, 15:37

Tài liệu cùng người dùng

Tài liệu liên quan