Thử nghiệm chương trình

Một phần của tài liệu Phương pháp nhận dạng khuôn mặt dựa trên phương pháp học chuyển giao của mạng nowrron tích chập và ứng dụng vào bài toán điểm danh học sinh tại trường thpt chuyên vĩnh phúc (Trang 85)

3.2.1. Tiền xử lý ảnh đầu vào

Các dữ liệu ảnh sau khi được thu thập, sẽ được định dạng đúng chuẩn. Để làm được điều đĩ, chương trình sử dụng hàm detect_crop_images.

def detect_crop_images(source_folder, dataset_folder, input_size=(224, 224),

77 detector = MyFaceRecognition()

list_persons = next(os.walk(source_folder))[1]

data = {}

total_faces = 0

for person in list_persons: # print('Ten nguoi: ', person)

person_folder = dataset_folder + '/' + person # crop anh vao day # print('Crop anh den: ', person_folder)

if not os.path.exists(person_folder):

os.mkdir(person_folder) all_file_person = []

source_folder_person = source_folder + '/' + person # nguon anh o day

all_files = glob.glob(os.path.join(source_folder_person, filetype)) all_file_person = all_file_person + all_files # noi vao list chung num_faces = 0

for filename in all_file_person:

cimg = cv2.imread(filename, cv2.IMREAD_COLOR)

faces, fconf = detector.get_face_locations_from_image(cimg) if len(faces) == 0:

print('The file [', filename, '] has NO faces') else:

icof = np.argmax(fconf) (le, to, ri, bo) = faces[icof] num_faces += 1

f = cimg[to:bo, le:ri]

f = cv2.resize(f, input_size)

newfile = '{}/{}'.format(person_folder, os.path.basename(filename))

cv2.imwrite(newfile, f)

data[person] = '#file[{}]#faces[{}]>'.format(len(all_file_person), num_faces)

78 total_faces += num_faces

print('Total faces :', total_faces)

Kết thúc quá trình thu được các hình ảnh khuơn mặt được cắt trong tập dữ liệu ảnh ban đầu. A.Minh #file[10]#faces[10]> Anh2 #file[10]#faces[10]> Anhz #file[10]#faces[10]> Hieu #file[10]#faces[10]> Ly #file[10]#faces[10]> N.Linh #file[10]#faces[10]> Ngocj #file[10]#faces[10]> Nhung #file[29]#faces[29]> NK.Linh #file[10]#faces[10]> P.Linh #file[10]#faces[10]> T.Dungz #file[10]#faces[10]> The file [ C:/Users/Dell/PycharmProjects/luanvan/DuLieu/T.Duong\T.Duong_10.jpg ] has NO faces T.Duong #file[10]#faces[9]> T.Minh #file[10]#faces[10]> Taif #file[10]#faces[10]> Thow #file[9]#faces[9]> Thuw #file[10]#faces[10]> Tuaan #file[10]#faces[10]>

79

Hình 3.5. Tiền xử lý ảnh đầu vào

3.2.2. Đào tạo mơ hình

3.2.2.1. Đào tạo mơ hình sử dụng VGG19 Model: "vgg19"

_________________________________________________________________

Layer (type) Output Shape Param #

===========================================================

input_1 (InputLayer) (None, 224, 224, 3) 0

_________________________________________________________________

block1_conv1 (Conv2D) (None, 224, 224, 64) 1792

_________________________________________________________________

block1_conv2 (Conv2D) (None, 224, 224, 64) 36928

80

block1_pool (MaxPooling2D) (None, 112, 112, 64) 0

_________________________________________________________________

block2_conv1 (Conv2D) (None, 112, 112, 128) 73856

_________________________________________________________________

block2_conv2 (Conv2D) (None, 112, 112, 128) 147584

_________________________________________________________________

block2_pool (MaxPooling2D) (None, 56, 56, 128) 0

_________________________________________________________________

block3_conv1 (Conv2D) (None, 56, 56, 256) 295168

_________________________________________________________________

block3_conv2 (Conv2D) (None, 56, 56, 256) 590080

_________________________________________________________________

block3_conv3 (Conv2D) (None, 56, 56, 256) 590080

_________________________________________________________________

block3_conv4 (Conv2D) (None, 56, 56, 256) 590080

_________________________________________________________________

block3_pool (MaxPooling2D) (None, 28, 28, 256) 0

_________________________________________________________________

block4_conv1 (Conv2D) (None, 28, 28, 512) 1180160

_________________________________________________________________

block4_conv2 (Conv2D) (None, 28, 28, 512) 2359808

81

block4_conv3 (Conv2D) (None, 28, 28, 512) 2359808

_________________________________________________________________

block4_conv4 (Conv2D) (None, 28, 28, 512) 2359808

_________________________________________________________________

block4_pool (MaxPooling2D) (None, 14, 14, 512) 0

_________________________________________________________________

block5_conv1 (Conv2D) (None, 14, 14, 512) 2359808

_________________________________________________________________

block5_conv2 (Conv2D) (None, 14, 14, 512) 2359808

_________________________________________________________________

block5_conv3 (Conv2D) (None, 14, 14, 512) 2359808

_________________________________________________________________

block5_conv4 (Conv2D) (None, 14, 14, 512) 2359808

_________________________________________________________________

block5_pool (MaxPooling2D) (None, 7, 7, 512) 0

=========================================================== ====== Total params: 20,024,384 Trainable params: 20,024,384 Non-trainable params: 0 _________________________________________________________________

Để đào tạo mơ hình, sử dụng hàm: train_model(data, kfold=0, batch_size=32, epochs=800, file_model=file_model)

82 Train on 326 samples, validate on 326 samples

Epoch 1/800

32/326 [=>............................] - ETA: 1:12 - loss: 3.6542 - accuracy: 0.0000e+0020

64/326 [====>.........................] - ETA: 55s - loss: 3.5146 - accuracy: 0.

96/326 [=======>......................] - ETA: 46s - loss: 3.5196 - accuracy: 0.0625

128/326 [==========>...................] - ETA: 39s - loss: 3.5402 - accuracy: 0.0781

160/326 [=============>................] - ETA: 33s - loss: 3.5934 - accuracy: 0.0688

192/326 [================>.............] - ETA: 27s - loss: 3.6211 - accuracy: 0.0677

224/326 [===================>..........] - ETA: 20s - loss: 3.5477 - accuracy: 0.0848

256/326 [======================>.......] - ETA: 14s - loss: 3.5224 - accuracy: 0.0977 288/326 [=========================>....] - ETA: 7s - loss: 3.4816 - accuracy: 0.1111 320/326 [============================>.] - ETA: 1s - loss: 3.4803 - accuracy: 0.1156 326/326 [==============================] - 126s 387ms/step - loss: 3.4706 - accuracy: 0.1166 - val_loss: 2.8721 - val_accuracy: 0.2055

... …

Train on 326 samples, validate on 326 samples

Epoch 8/500

83

64/326 [====>.........................] - ETA: 3:34 - loss: 2.6621 - accuracy: 0.3594

96/326 [=======>......................] - ETA: 3:06 - loss: 2.5810 - accuracy: 0.3438

128/326 [==========>...................] - ETA: 2:42 - loss: 2.6438 - accuracy: 0.2891

160/326 [=============>................] - ETA: 2:18 - loss: 2.5922 - accuracy: 0.3125

192/326 [================>.............] - ETA: 1:53 - loss: 2.5875 - accuracy: 0.3177

224/326 [===================>..........] - ETA: 1:28 - loss: 2.5429 - accuracy: 0.3348

256/326 [======================>.......] - ETA: 1:01 - loss: 2.5160 - accuracy: 0.3242 288/326 [=========================>....] - ETA: 34s - loss: 2.5037 - accuracy: 0.3264 320/326 [============================>.] - ETA: 5s - loss: 2.4717 - accuracy: 0.3500 326/326 [==============================] - 391s 1s/step - loss: 2.4664 - accuracy: 0.3528 - val_loss: 1.9142 - val_accuracy: 0.7730

… …

3.2.2.2. Đào tạo mơ hình sử dụng VGGFace

Sau khi hàm “train_model_vggface2” được thực thi, tơi sẽ lưu được đặc điểm của vectơ đặc trưng

Ánh

2883.298936008796 [0. 0.58305746 0.03847307 ... 0. 0. 0. ]

84 2707.753454275997 [0.00867799 0.4274315 0. ... 0. 0.10263711 0. ] Ánh 3014.080108361857 [0. 0.69755274 0. ... 0. 0. 0. ] Ánh 2412.010435999153 [0. 0.3058706 0. ... 0. 0.09233981 0. ] Ánh 2422.9461588565246 [0. 0.23302683 0. ... 0. 0.18553653 0. ] Ánh 2586.883506562215 [0. 0.6001291 0. ... 0. 0. 0. ] Ánh 2412.010435999153 [0. 0.3058706 0. ... 0. 0.09233981 0. ] Ánh 2707.0579214012578 [0.02150691 0.4510759 0. ... 0. 0.02627229 0. ] Ánh 2992.6141943948987 [0.02647755 2.1552732 0. ... 0. 0. 0. ] Ánh 2753.485983449107 [0. 1.5469936 0. ... 0. 0.00511852 0. ] Bình 2180.545473160724 [0. 0. 2.1420603 ... 0. 0. 0. ] Bình 2294.8290945459958 [0. 0. 3.2472253 ... 0. 0. 0. ] Bình

85 2196.69224794034 [0. 0. 0.10020959 ... 0. 0. 0. ] Bình 2119.315781671641 [0. 0.00566028 2.7314048 ... 0. 0. 0. ] Bình 2435.415145179344 [0. 0.14158954 0.31862143 ... 0. 0. 0. ] Bình 2104.260617945183 [0. 0.48825687 1.4548975 ... 0. 0. 0. ] Bình 2391.295520850532 [0. 0. 0.20456891 ... 0. 0. 0.1279975 ] Bình 2178.413314857695 [0. 0. 1.3313946 ... 0. 0. 0. ] Bình 2332.1839250274206 [0. 0.03570962 1.4569236 ... 0. 0. 0. ] Bình 2420.7618221260846 [0.06393409 0.27952382 0.06272814 ... 0. 0. 0. ] … …

Sau khi hồn tất các cơng đoạn trong xử lý trước dữ liệu, tiến hành đào tạo mơ hình. Hồn tất quá trình đào tạo mơ hình thu được file “model.h5”. File “model.h5” sẽ lưu trữ mơ hình được đào tạo làm cơ sở cho quá trình nhận dạng được thực thi.

86

3.2.3. Nhận diện khuơn mặt qua Camera

Hình 3.6. Kết quả nhận diện bằng Camera - mơ hình VGG19

87

3.2.4. Nhận diện khuơn mặt qua ảnh cĩ sẵn

Hình 3.8. Ảnh nhận diện qua File - mơ hình VGG face

88

3.2.5. Đánh giá kết quả

Sau khi tiến hành cài đặt và chạy thử chương trình thử nghiệm, cĩ thể nhận thấy rằng, khi số lượng ảnh huấn luyện nhiều thì độ chính xác của các phương pháp cũng tăng lên. Điều này là hiển nhiên vì càng nhiều mẫu huấn luyện thì càng cĩ nhiều đặc trưng cho các lớp dữ liệu trong khơng gian các khuơn mặt. Kết quả thực nghiệm cho thấy mơ hình đạt được độ chính xác tương đối cao và ổn định trong mơi trường thực tế, khơng bị ảnh hưởng bởi các yếu tố tự nhiên và con người.

Mơ hình VGG19 Mơ hình VGG FACE

- Mạng đào tạo: VGG19 - Mạng đào tạo: Resnet50 - Tham số: 143,667,240 - Tham số: 25,636,712

- Đào tạo trên tập dữ liệu ImageNet. ImageNet là một tập dữ liệu rất nổi tiếng trong lĩnh vực computer vision, là một tập dữ liệu khổng lồ với 14,197,122 ảnh và 1000 class.

- Đào tạo trên tập dữ liệu VGGFace2. Hình ảnh được tải xuống từ Tìm kiếm hình ảnh của Google và cĩ nhiều biến thể về tư thế, độ tuổi, ánh sáng, dân tộc và nghề nghiệp (ví dụ: diễn viên, vận động viên, chính trị gia). Bộ dữ liệu chứa 3,31 triệu ảnh của 9131 đối tượng, với trung bình 362,6 ảnh cho mỗi đối tượng - Độ sâu: 19 layer - Độ sâu: 50 layer

Bảng 3.2. Bảng so sánh mơ hình VGG19 - VGG Face

Mơ hình VGG19 sử dụng tập dữ liệu imagenet để đào tạo, tập imagenet gồm rất nhiều

đối tượng như con người, động vật (chĩ, mèo, …), sự vật (ơ tơ, xe lửa). mơ hình VGG face, tập dữ liệu chỉ gồm các khuơn mặt nên với bài tốn nhận dạng khuơn mặt của học sinh bằng phương pháp học chuyển giao thì sử dụng mơ hình VGG face cho độ chính xác cao hơn, thời gian nhanh hơn (VGG face khơng cần traning dữ liệu).

89 Mơ hình đào tạo Số lần traning dữ liệu Thời gian huấn luyện (phút) Độ chính xác (% trên tập test) Thời gian nhận dạng (giây) VGG19 500 428 95.7 1.4 VGG FACE - - 97.3 0.8

Bảng 3.3. Bảng so sánh hiệu quả mơ hình VGG19 - VGGFACE

Kết luận chương

Xuất phát từ tính cấp thiết của việc nhận dạng học sinh và nhằm kiểm chứng tính đúng đắn của thuật tốn nhận dạng khuơn mặt, chương 3 của luận văn đã trình bày cách thức xây dựng chương trình mơ phỏng. Từ việc chuẩn bị, thu thập mẫu dữ liệu nhằm đạt được yêu cầu đặt ra của bài tốn. Kết quả kiểm chứng cho thấy đây là một phương pháp kết hợp cho hiệu quả tốt. Cụ thể là việc nhận dạng vẫn cho kết quả tốt khi thay đổi tư thế, gĩc nghiêng của khuơn mặt, khi ảnh trước webcam được thu thập trong các điều kiện sáng khác nhau.

90

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

❖ Kết luận • Ưu điểm:

- Xây dựng được chương trình thực nghiệm hệ thống nhận dạng khuơn mặt sử dụng phương pháp học chuyển giao của mạng nơron tích chập.

- Thực hiện được q trình thử nghiệm đánh giá tính khả thi của giải pháp

- Đề tài cĩ tính ứng dụng cao trong thực tế phục vụ một số lĩnh vực như nhận dạng học sinh, kiểm sốt các nhân viên vào ra cơ quan.

• Hạn chế:

- Số lượng cơ sở dữ liệu hình ảnh cịn mở mức hạn chế, các hình ảnh chưa phong phú và đa dạng.

- Quá trình nhận dạng khuơn mặt chỉ đạt hiệu quả cao trong điều kiện mơi trường thuận lợi, ánh sáng tốt.

❖ Hướng phát triển

- Trong thời gian tới mục tiêu là khắc phục những điểm hạn chế nêu trên.

91

TÀI LIỆU THAM KHẢO Tài liệu tiếng Việt

[1] Phạm Văn Dũng, Mạng nơron trong bài tốn nhận dạng khuơn mặt và ứng

dụng. Luận văn thạc sĩ, trường Đại học Cơng Nghệ Thơng Tin và Truyền Thơng Thái Nguyên (2016).

[2] Dương Thăng Long, Trần Tiến Dũng, Nguyễn Thị Nhung. Phương pháp hỗ

trợ giám sát, đánh giá quá trình học tập của người học trực tuyến dựa trên mơ hình nhận dạng khuơn mặt của mạng nơron tích chập. Tạp chí khoa học

trường Đại học Mở Hà Nội, Số 77, 2021.

[3] Phạm Thành Huân. Tìm hiểu đặc trưng lồi 3D và bài tốn phát hiện mặt người trong ảnh. Đồ án tốt nghiệp, trường Đại học dân lập Hải Phịng (2013).

[4] Nguyễn Thị Thu Hằng, Nghiên cứu về mạng nơron tích chập và ứng dụng

cho bài tốn nhận dạng biển số xe. Luận văn thạc sĩ, trường Đại học Cơng Nghệ - Đại học Quốc Gia Hà Nội (2016).

[5] Nguyễn Văn Danh, Nhận dạng mặt người bằng máy học chuyên sâu. Luận văn thạc sĩ, trường Đại học Sư Phạm Thành Phố Hồ Chí Minh (2017).

[6] Dương Thăng Long, Bùi Thế Hùng. Một phương pháp nhận dạng khuơn mặt

dựa trên mạng nơron tích chập. Tạp chí khoa học Viện Đại học Mở Hà Nội,

Số 58, 2019.

Website tham khảo

[8] https://phamdinhkhanh.github.io/2020/04/15/TransferLearning.html [9] https://viblo.asia [10] https://Forum.machinelearningcoban.com [11] http://www.nawapi.gov.vn [12] https://dlapplications.github.io/2018-07-06-CNN [13] http://kdientu.duytan.edu.vn/media/50176/ly-thuyet-mang-neural.pdf [14] https://keras.io/api/applications/

Một phần của tài liệu Phương pháp nhận dạng khuôn mặt dựa trên phương pháp học chuyển giao của mạng nowrron tích chập và ứng dụng vào bài toán điểm danh học sinh tại trường thpt chuyên vĩnh phúc (Trang 85)

Tải bản đầy đủ (PDF)

(100 trang)