1. Trang chủ
  2. » Công Nghệ Thông Tin

Deeplearning_nhận diện khuôn mặt bằng mô hình học trước

12 16 0

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

1 TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI TRƯỜNG ĐIỆN ĐIỆN TỬ BÀI TẬP LỚN MÔN HỌC SÂU Nhận diện khuôn mặt với mô hình được đào tạo trước Ngành Kỹ thuật Điều khiển và Tự động hoá Chuyên ngành Kỹ thuật đo và Ti.

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI TRƯỜNG ĐIỆN - ĐIỆN TỬ BÀI TẬP LỚN MÔN HỌC SÂU Nhận diện khn mặt với mơ hình đào tạo trước Ngành Kỹ thuật Điều khiển Tự động hoá Chuyên ngành Kỹ thuật đo Tin học công nghiệp HÀ NỘI, 11/2022 Mục lục Mục lục Danh mục hình ảnh CHƯƠNG TỔNG QUAN 1.1 Hệ thống nhận dạng khuôn mặt 1.2 Học chuyển tiếp 1.3 CNN VGG16 CHƯƠNG PHÂN TÍCH – THIẾT KẾ 2.1 2.2 Phân tích 2.1.1 Dữ liệu 2.1.2 Kiến trúc Thiết kế CHƯƠNG Kết 12 3.1 Kết thu 12 Danh mục hình ảnh Hình 1-1 Học chuyển tiếp Hình 2-1: Tập hình ảnh đào tạo Hình 2-2 Tập hình ảnh thử nghiệm Hình 2-3: Kiến trúc mạng CNN VGG16 Hình 2-4 Tập thư mục google drive Hình 2-5 Kết thu thực bước Hình 3-1 Kết thử nghiệm với ảnh từ thư mục datatest 12 CHƯƠNG TỔNG QUAN 1.1 Hệ thống nhận dạng khuôn mặt Hệ thống nhận dạng khuôn mặt công nghệ có khả xác định xác minh người từ hình ảnh kỹ thuật số khung hình video từ nguồn video Nó thường sử dụng làm kiểm soát truy cập hệ thống bảo mật so sánh với hệ thống sinh trắc học hệ thống quét võng mạc mắt vân tay 1.2 Học chuyển tiếp Học chuyển tiếp (TL) cách tiếp cận học sâu học máy Nơi kiến thức chuyển giao từ mơ hình sang mơ hình khác Sử dụng học chuyển tiếp, giải nhiệm vụ cụ thể cách sử dụng toàn phần mơ hình huấn luyện trước nhiệm vụ khác Hình 1-1 Học chuyển tiếp Học chuyển đổi có lợi ích giảm thời gian đào tạo cho mơ hình mạng thần kinh dẫn đến lỗi tổng quát hóa thấp Trong tập này, em sử dụng mơ hình VGG 16 để học chuyển giao 1.3 CNN VGG16 CNN VGG16 mơ hình mạng neuron tích chập đề xuất K Simonyan A Zisserman từ Đại học Oxford báo “Very Deep Convolutional Networks for Large-Scale Image Recognition” Mơ hình đạt 92,7% độ xác kiểm tra top ImageNet, liệu gồm 14 triệu hình ảnh thuộc 1000 lớp Đó mơ hình tiếng gửi tới ILSVRC-2014 Nó tạo cải tiến so với AlexNet cách thay lọc có kích thước kernel lớn (tương ứng 11 lớp chập thứ thứ hai) nhiều lọc có kích thước 3×3 VGG16 đào tạo nhiều tuần sử dụng GPU NVIDIA Titan Black CHƯƠNG PHÂN TÍCH – THIẾT KẾ 2.1 Phân tích 2.1.1 Dữ liệu Tập liệu em dùng gồm khn mặt người để dự đốn Tập liệu đào tạo bao gồm thư mục thư mục chứa 15 ảnh (tổng 45 ảnh), tập liệu thử nghiệm gồm thư mục thư mục gồm ảnh (tổng 15 ảnh) Các hình ảnh cắt sát khn mặt ,có nhiều kích thước khác định dạng jpg Hình 2-1: Tập hình ảnh đào tạo Hình 2-2 Tập hình ảnh thử nghiệm 2.1.2 Kiến trúc Nó chứa 13 Lớp tích chập Lớp kết nối đầy đủ - Đầu vào: VGG lấy hình ảnh RGB 224x224 pixel Đối với thi ImageNet, tác giả cắt bỏ phần vá lỗi 224x224 hình ảnh để giữ cho kích thước hình ảnh đầu vào qn - Các lớp tích chập: Có lọc tích chập 1x1 hoạt động phép biến đổi tuyến tính đầu vào, theo sau đơn vị ReLU Bước tích chập cố định thành pixel để độ phân giải không gian giữ nguyên sau tích chập - Các lớp kết nối đầy đủ : VGG có ba lớp kết nối đầy đủ: hai lớp có 4096 kênh lớp lớp thứ ba có 1000 kênh, lớp kênh - Các lớp ẩn : Tất lớp ẩn VGG sử dụng ReLU VGG thường khơng sử dụng Chuẩn hóa phản hồi cục (LRN), LRN tăng mức tiêu thụ nhớ thời gian đào tạo mà khơng tăng độ xác cụ thể Hình 2-3: Kiến trúc mạng CNN VGG16 Thử Thách Của VGG 16: - Quá trình đào tạo chậm (mơ hình VGG ban đầu đào tạo GPU Nvidia Titan 2-3 tuần) - Kích thước imageNet đào tạo VGG-16 528 MB Vì vậy, chiếm nhiều dung lượng ổ đĩa băng thông khiến hoạt động khơng hiệu Vì để vượt qua thách thức này, sử dụng phương pháp học chuyển giao 2.2 Thiết kế Em dùng google colab để thực code - Bước 1: Nhập mơ hình VGG 16 đào tạo trước Đóng băng lớp cách sử dụng " layer.trainable = False " Bằng cách đóng băng lớp , sửa trọng số mơ hình đào tạo trước khơng đào tạo lại from keras.applications import VGG16 from keras.models import Sequential from keras.layers import Dense, Dropout, Activation, Flatten from keras.layers import Conv2D, MaxPooling2D, ZeroPadding2D from keras.layers.normalization import batch_normalization from keras.models import Model from keras.preprocessing.image import ImageDataGenerator from keras.optimizers import RMSprop from keras.callbacks import ModelCheckpoint # VGG16 was designed to work on 224 x 224 pixel input images sizes img_rows = 224 img_cols = 224 # Re-loads the VGG16 model without the top or FC layers model = VGG16(weights = 'imagenet', include_top = False, input_shape = (img_rows, img_cols, 3)) # Here we freeze the last layers # Layers are set to trainable as True by default for layer in model.layers: layer.trainable = False # Let's print our layers for (i,layer) in enumerate(model.layers): print(str(i) + " "+ layer. class . name , layer.trainable) - Bước 2: Thêm lớp mà muốn thêm lên mơ hình def addTopModel(bottom_model, num_classes, D=256): #"""creates the top or head of the model that will be placed on top of the bottom layers""" top_model = bottom_model.output top_model = Flatten(name = "flatten")(top_model) top_model = Dense(D, activation = "relu")(top_model) top_model = Dropout(0.3)(top_model) top_model = Dense(num_classes, activation = "softmax")(top_mode l) return top_model Ở sử dụng hàm kích hoạt"softmax" để phân loại nhiều lớp Hàm kích hoạt phép biến đổi phi tuyến tính mà thực đầu vào trước gửi đến lớp - Bước 3: Cung cấp số lớp (thư mục) có tập liệu Ở em có thư mục tương ứng với lớp model.input model.layers num_classes = FC_Head = addTopModel(model, num_classes) modelnew = Model(inputs=model.input, outputs=FC_Head) print(modelnew.summary()) - Bước 4: Tăng cường hình ảnh, Có thể dễ dàng tạo trình tạo hình ảnh tăng cường API ImageDataGenerator Keras ImageDataGenerator tạo tập liệu hình ảnh với tính tăng cường liệu theo thời gian thực Tập liệu hình ảnh tải lên google drive với tên thư mục “20181797_NguyenQuangTrung” Và thư mục bao gồm hai thư mục tức "datalearn" "datatest" Trong hai thư mục này, có thư mục chứa hình ảnh khn mặt người khác ("face1", "face2", "face3") Hình 2-4 Tập thư mục google drive train_data_dir = '/content/drive/MyDrive/20181797_NguyenQuangTrung/ datalearn' validation_data_dir = '/content/drive/MyDrive/20181797_NguyenQuangT rung/datatest' train_datagen = ImageDataGenerator( rescale=1./255, rotation_range=20, width_shift_range=0.2, height_shift_range=0.2, horizontal_flip=True, fill_mode='nearest') validation_datagen = ImageDataGenerator(rescale=1./255) # Change the batchsize according to your system RAM train_batchsize = val_batchsize = train_generator = train_datagen.flow_from_directory( train_data_dir, target_size=(img_rows, img_cols), batch_size=train_batchsize, class_mode='categorical') validation_generator = validation_datagen.flow_from_directory( validation_data_dir, target_size=(img_rows, img_cols), batch_size=val_batchsize, class_mode='categorical', shuffle=False) Hình 2-5 Kết thu thực bước - Bước 5: Nhập RMSprop ModelCheckpoint Huấn luyện mô hình trọng số mơ hình VGG16 huấn luyện trước lưu dạng "facerecog.h5" Trong tập sử dụng thuật tốn tối ưu hóa RMSprop Thuật tốn tối ưu hóa thuật tốn phương pháp sử dụng để thay đổi thuộc tính mạng nơ-ron, chẳng hạn trọng số tốc độ học tập nhằm giảm tổn thất ModelCheckpoint cho phép xác định vị trí điểm kiểm tra (kết xuất trung gian trọng số tốc độ học tập để tiếp tục đào tạo từ điểm muốn) trọng số mơ hình, cách đặt tên tệp,… Để đào tạo mơ hình, sử dụng 50 kỷ nguyên Một kỷ nguyên toàn tập liệu truyền tới qua mạng neuron lần checkpoint = ModelCheckpoint("face_recog.h5", monitor="val_loss", mode="min", save_best_only = True, verbose=1) # we put our call backs into a callback list callbacks = [ checkpoint] # Note we use a very small learning rate modelnew.compile(loss = 'categorical_crossentropy', optimizer = RMSprop(lr = 0.001), metrics = ['accuracy']) nb_train_samples = 299 nb_validation_samples = 60 epochs = 50 batch_size = 32 history = modelnew.fit_generator( train_generator, epochs = epochs, steps_per_epoch = 50, callbacks = callbacks, validation_data = validation_generator, validation_steps = nb_validation_samples // batch_size) modelnew.save("face_recog.h5") - Bước 6: Tải mơ hình lưu để thử nghiệm classifier = load_model('face_recog.h5') - Bước 7: Kiểm tra mơ hình, Lấy 10 hình ảnh ngẫu nhiên từ thư mục Test để thử nghiệm from keras.models import load_model import os import cv2 import numpy as np from os import listdir from os.path import isfile, join from google.colab.patches import cv2_imshow classifier = load_model('face_recog.h5') face_recog = {"[0]":"face1","[1]":"face2","[2]":"face3"} face_recog_n = {"face1":"face1","face2":"face2","face3":"face3"} def draw_test(name, pred, im): face = face_recog[str(pred)] BLACK = [0,0,0] expanded_image = cv2.copyMakeBorder(im, 80, 0, 0, 100 ,cv2.BORD ER_CONSTANT,value=BLACK) cv2.putText(expanded_image,face, (20, 60) , cv2.FONT_HERSHEY_SI MPLEX,1, (0,0,255), 2) cv2_imshow(expanded_image) def getRandomImage(path): #"function loads a random images from a random folder in our te st path " folders = list(filter(lambda x: os.path.isdir(os.path.join(path , x)), os.listdir(path))) random_directory = np.random.randint(0,len(folders)) path_class = folders[random_directory] print("Class - " + face_recog_n[str(path_class)]) file_path = path + path_class file_names = [f for f in listdir(file_path) if isfile(join(file _path, f))] random_file_index = np.random.randint(0,len(file_names)) image_name = file_names[random_file_index] return cv2.imread(file_path+"/"+image_name) for i in range(0,5): input_im = getRandomImage("/content/drive/MyDrive/20181797_Nguy enQuangTrung/datatest/") input_original = input_im.copy() input_original = cv2.resize(input_original, None, fx=0.5, fy=0 5, interpolation = cv2.INTER_LINEAR) input_im = cv2.resize(input_im, (224, 224), interpolation = cv2 INTER_LINEAR) input_im = input_im / 255 input_im = input_im.reshape(1,224,224,3) # Get Prediction res = np.argmax(classifier.predict(input_im, 1, verbose = 0), a xis=1) 10 # Show image with predicted class draw_test("Prediction", res, input_original) cv2.waitKey(0) cv2.destroyAllWindows() 11 CHƯƠNG Kết 3.1 Kết thu Model có độ xác ảnh đạt 35,56% sau 50 kỉ nguyên Hình 3-1 Kết thử nghiệm với ảnh từ thư mục datatest Em thử nghiệm ảnh kết thu nhận diện ảnh người “putin” “bill gate” cịn ảnh “châu tinh trì” bị nhận diện sai Nguyên nhân sai lệnh tập mẫu chưa đủ lớn số kỷ ngun học cịn 12 ... 12 Danh mục hình ảnh Hình 1-1 Học chuyển tiếp Hình 2-1: Tập hình ảnh đào tạo Hình 2-2 Tập hình ảnh thử nghiệm Hình 2-3: Kiến trúc mạng CNN VGG16 Hình 2-4 Tập... chuyển tiếp Học chuyển tiếp (TL) cách tiếp cận học sâu học máy Nơi kiến thức chuyển giao từ mô hình sang mơ hình khác Sử dụng học chuyển tiếp, giải nhiệm vụ cụ thể cách sử dụng toàn phần mơ hình huấn... drive Hình 2-5 Kết thu thực bước Hình 3-1 Kết thử nghiệm với ảnh từ thư mục datatest 12 CHƯƠNG TỔNG QUAN 1.1 Hệ thống nhận dạng khuôn mặt Hệ thống nhận dạng khuôn mặt cơng nghệ

Ngày đăng: 23/03/2023, 11:57

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w