Mục tiêu nghiên cứu đề tài là nghiên cứu các phương pháp nhận dạng khuôn mặt. Có nhiều phương pháp để nhận dạng khuôn mặt, từ việc tìm hiểu và nghiên cứu các phương pháp thì đề xuất phương pháp cải tiến hiệu quả cho bài toán nhận dạng khuôn mặt. Đánh giá được sự hiệu quả của phương pháp nhận dạng khuôn mặt. Ứng dụng các phương pháp trong việc nhận dạng khuôn mặt người.
ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC SƯ PHẠM PHAN THẢO HIỀN NGHIÊN CỨU ỨNG DỤNG DEEP LEARNING TRONG PHÂN TÍCH THƠNG TIN KHÁCH DU LỊCH TẠI CÁC ĐIỂM ĐẾN LUẬN VĂN THẠC SĨ HỆ THỐNG THÔNG TIN Đà Nẵng – Năm 2020 ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC SƯ PHẠM PHAN THẢO HIỀN NGHIÊN CỨU ỨNG DỤNG DEEP LEARNING TRONG PHÂN TÍCH THƠNG TIN KHÁCH DU LỊCH TẠI CÁC ĐIỂM ĐẾN Chuyên ngành: Hệ thống thông tin Mã số: 8480104 LUẬN VĂN THẠC SĨ HỆ THỐNG THÔNG TIN NGƯỜI HƯỚNG DẪN KHOA HỌC TS NGUYỄN ĐÌNH LẦU TS TRỊNH CÔNG DUY Đà Nẵng – Năm 2020 i LỜI CAM ĐOAN Tôi xin cam đoan: - Những nội dung luận văn thực hướng dẫn trực tiếp TS Nguyễn Đình Lầu TS Trịnh Công Duy - Mọi tham khảo dùng luận văn trích dẫn rõ ràng trung thực tên tác giả, tên cơng trình, thời gian địa điểm công bố - Mọi chép không hợp lệ, vi phạm quy chế đào tạo xin chịu hoàn toàn trách nhiệm Tác giả luận văn Phan Thảo Hiền ii MỤC LỤC LỜI CAM ĐOAN i MỤC LỤC ii DANH MỤC CÁC KÍ HIỆU, CÁC TỪ VIẾT TẮT iv DANH MỤC CÁC BẢNG BIỂU v DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ vi MỞ ĐẦU CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1.1 Khái niệm du lịch thực trạng du lịch Việt Nam 1.1.1 Khái niệm du lịch 1.1.2 Thực trạng du lịch Việt Nam 1.2 Khái niệm Trí tuệ nhân tạo, Machine Learning, Deep Learning 1.2.1 Khái niệm Trí tuệ nhân tạo (AI – Artificail Intelligence) 1.2.2 Machine Learning 1.2.3 Deep Learning 1.2.4 Tổng quan phương pháp Deep Learning phát đối tượng nhận dạng khuôn mặt 11 CHƯƠNG 2: PHÂN TÍCH THIẾT KẾ BÀI TỐN PHÂN TÍCH THƠNG TIN KHÁCH DU LỊCH 17 2.1 Phát biểu toán 17 2.2 Mô hình nhận dạng khn mặt dựa CNN 26 2.3 Quá trình huấn luyện mạng nơ ron 32 2.4 Thuật toán SVM (Máy vec tơ hỗ trợ) 33 2.4.1 Định nghĩa: 33 2.4.2 Bài toán phân lớp 33 2.4.3 Cơ sở lý thuyết SVM 34 2.4.4 Bài toán phân lớp với SVM 34 2.4.5 Bài toán phân nhiều lớp với SVM 35 2.4.6 Mơ hình phân lớp ảnh chụp khn mặt người 36 2.5 Hàm nhân Kernel 36 CHƯƠNG 3: XÂY DỰNG CHƯƠNG TRÌNH, CÀI ĐẶT, THỬ NGHIỆM VÀ ĐÁNH GIÁ 38 3.1 Môi trường công cụ sử dụng 38 3.1.1 Thư viện mã nguồn mở Skicit – Learn 38 iii 3.1.2 Thư viện mã nguồn mở OpenCV 39 3.1.2.1 Tổng quan OpenCV 39 3.1.2.2 Các đặc trưng OpenCV 39 3.1.2.3 Cấu trúc tổng quan OpenCV: 40 3.1.2.4 Giới thiệu OpenCV 41 3.2.1.5 Nhận dạng khuôn mặt OpenCV 45 3.1.2.6 Cấu trúc dự án OpenCV 46 3.2 Ngơn ngữ cơng cụ lập trình: 47 3.3 Phát triển chương trình 47 3.3.1 Thu thập liệu xử lý liệu 47 3.3.2 Đào tạo mơ hình 48 3.3.3 Nhận dạng 49 3.3.4 Đếm người 49 3.4 Kết thực nghiệm 51 3.5 Đánh giá kết 54 3.5.1 Nhận dạng khuôn mặt người 54 3.5.2 Đếm người 54 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 55 TÀI LIỆU THAM KHẢO 56 iv DANH MỤC CÁC KÍ HIỆU, CÁC TỪ VIẾT TẮT STT Ký hiệu/ Viết tắt Diễn giải AI Artificail Intelligence SVM Support Vector Machine SSD Single Shot Detector v DANH MỤC CÁC BẢNG BIỂU Bảng 2.1 So sánh kích thước Filter 27 Bảng 3.1 Kết thực nghiệm nhận dạng khuôn mặt 54 Bảng 3.2 Kết thực nghiệm đếm người 54 vi DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ Hình 1-1 Mối liên hệ AI, Machine Leaning, Deep Learning 11 Hình 1-2 Minh họa ý tưởng Triplet Loss 12 Hình 1-3 Kiến trúc mạng CNN 12 Hình 1-4 Bộ lọc tích chập sử dụng ma trận điểm ảnh 13 Hình 1-5 Phương thức Max Pooling Avarage Pooling 14 Hình 1-6 Kiến trúc mạng VGG16 14 Hình 1-7 Đường ống R – CNN sử dụng Caffe cho phát đối tượng 15 Hình 1-8 Mơ hình OpenFace 16 Hình 2-1Mơ hình giải pháp nhận dạng khn mặt 18 Hình 2-2 Kiến trúc mạng SSD 20 Hình 2-3 Bản đồ tính có độ phân giải thấp (bên phải) phát đối tượng có quy mơ lớn 20 Hình 2-4 Phép chập theo chiều sâu 3x3 21 Hình 2-5 Phép chập theo chiều kim 1x1 21 Hình 2-6 Mơ hình kiến trúc mạng MobileNets 22 Hình -7 Convolution truyền thống (trái), Depthwise Separable Convolution 23 Hình 2- Mơ hình MobileNet Single Shot Detector 23 Hình 2-9 Tọa độ hộp giới hạn 24 Hình 2-10 Khoảng cách Eculid cặp centroid 24 Hình –11Các ID đối tượng liên kết với khoảng cách tối thiểu 25 Hình 2-12 ID #3A khơng khớp với đối tượng có 25 Hình 2-13 Điểm góc trái liệu đầu vào tương ứng với điểm góc trái feature map 27 Hình 2-14 Mơ tả sử dụng kích thước filter lẻ filter chẵn 28 Hình 2-15 Ma trận sử dụng zero padding 29 Hình 2-16 Pooling layer 2x2 30 vii Hình 2-17 Chuyển ma trận đặc trưng thành vec tơ 30 Hình 2-18 Kiến trúc mạng khối mơ hình CNN 31 Hình 2-19 Quá trình huấn luyện mạng nơ ron 33 Hình 2-20 Ví dụ siêu phẳng với lề cực đại khơng gian R2 34 Hình 3-1 Cấu trúc phần OpenCV 40 Hình 3-2 – Tổng quan đường ống nhận dạng khuôn mặt OpenCV 45 Hình 3-3 Cấu trúc dự án OpenCV 46 Hình 3-4 Kết nhận dạng mặt người 52 Hình 3-5 Kết đếm người 53 MỞ ĐẦU Lý chọn đề tài Trong năm gần đây, tiến vượt bậc công nghệ thông tin, cách mạng công nghiệp 4.0 tác động mạnh mẽ đến lĩnh vực Thị trường du lịch toàn cầu chứng kiến thay đổi với lên xu hướng kinh doanh du lịch trực tuyến Và thị trường du lịch Việt Nam thay đổi phát triển du lịch trực tuyến với phát triển công nghệ Thực tế buộc tất thành phần ngành du lịch, từ quan quản lý nhà nước công ty cấp sản phẩm - dịch vụ du lịch, đứng trước yêu cầu phải thực nhanh trình chuyển đối số, hướng tới hình thành hệ thống tích hợp trao đổi liệu du lịch thông minh Việt Nam Du lịch thông minh (Smart Tourism) thành phần đô thị thông minh, sử dụng công nghệ thơng tin truyền thơng để hình thành hệ sinh thái du lịch Hệ thống du lịch thông minh bao gồm hệ thống hạ tầng kỹ thuật, công nghệ phục vụ du lịch phát triển cách đồng Từ hệ thống du lịch thơng minh đó, khách du lịch tìm kiếm thơng tin, giá trị, chương trình, dịch vụ bật điểm đến để họ nhanh chóng định lựa chọn nơi đến phù hợp cho chuyến du lịch theo sở thích, tài chính, nhu cầu Hoạt động du lịch thông minh xây dựng tảng công nghệ truyền thông; giúp cho tương tác, kết nối chặt chẽ nhà quản lý, doanh nghiệp khách du lịch Nhằm nâng cao chất lượng phục vụ khách, đồng thời, giúp cho việc quản lý thuận tiện hơn, bên cạnh cịn phân loại hệ thống khách du lịch việc nhận dạng khn mặt khách đến địa điểm du lịch vấn đề quan trọng Tôi định chọn đề tài “Nghiên cứu ứng dụng Deep Learning phân tích thơng tin khách du lịch điểm đến.” Mục tiêu nhiệm vụ nghiên cứu Mục tiêu: - Mục tiêu nghiên cứu đề tài nghiên cứu phương pháp nhận dạng khn mặt Có nhiều phương pháp để nhận dạng khn mặt, từ việc tìm hiểu nghiên cứu phương pháp đề xuất phương pháp cải tiến hiệu cho tốn nhận dạng khn mặt - Đánh giá hiệu phương pháp nhận dạng khuôn mặt - Ứng dụng phương pháp việc nhận dạng khuôn mặt người Nhiệm vụ: 43 tất thông tin tệp AVI đọc, bao gồm thông tin tiểu bang Khi tạo theo cách này, cấu trúc CvCapture khởi tạo đầu AVI - Hàm cvQueryFrame (), coi đối số trỏ đến cấu trúc CvCapture Sau đó, lấy video khung vào nhớ (bộ nhớ thực phần cấu trúc CvCapture) Một trỏ trả khung Khơng giống cvLoadImage, thực phân bổ nhớ cho hình ảnh, cvQueryFrame sử dụng nhớ cấp phát cấu trúc CvCapture Do khơng cần thiết để gọi cvReleaseImage () cho trỏ “khung” Thay thế, nhớ hình ảnh khung giải phóng cấu trúc CvCapture giải phóng - Hàm cvWaitKey () để tăng tốc độ tải khung Trong ứng dụng phức tạp hơn, khơn ngoan đọc tốc độ khung hình thực tế từ cấu trúc CvCapture (từ AVI) - Hàm cvReleaseCapture (), khỏi vịng lặp đọc — khơng cịn liệu video giải phóng nhớ liên kết với cấu trúc CvCapture Thao tác đóng trình điều khiển tệp mở tệp AVI c Di chuyển xung quanh Bộ công cụ HighGUI cung cấp số công cụ đơn giản để làm việc với hình ảnh video, ngồi chức hiển thị đơn giản, chế đặc biệt hữu ích trượt, cho phép chuyển từ phần video khác Để tạo trượt, gọi hàm cvCreatTrackbar () cho biết cửa sổ muốn theo dõi xuất Để có chức mong muốn, cần cung cấp lệnh gọi lại thực việc di dời #include “cv.h” #include “highgui.h” int g_slider_position = 0; CvCapture* g_capture = NULL; void onTrackbarSlide(int pos) { cvSetCaptureProperty( g_capture, CV_CAP_PROP_POS_FRAMES, pos ); } int main( int argc, char** argv ) { cvNamedWindow( “Example3”, CV_WINDOW_AUTOSIZE ); g_capture = cvCreateFileCapture( argv[1] ); 44 int frames = (int) cvGetCaptureProperty( g_capture, CV_CAP_PROP_FRAME_COUNT ); if( frames!= ) { cvCreateTrackbar( “Position”, “Example3”, &g_slider_position, frames, onTrackbarSlide ); } IplImage* frame; // While loop (as in Example 2) capture & show video … // Release memory and destroy window … return(0); } Về chất thêm biến tồn cục để thể vị trí trượt sau thêm lệnh gọi lại biến di chuyển vị trí đọc video Một lần gọi lệnh tạo trượt đính kèm lệnh gọi lại chạy int g_slider_position = 0; CvCapture* g_capture = NULL; Quy ước thêm g_ đầu vào biến toàn cục void onTrackbarSlide(int pos) { cvSetCaptureProperty( g_capture, CV_CAP_PROP_POS_FRAMES, pos ); - Hàm cvSetCaptureProperty () với đối tác cvGetCaptureProperty () xác định thuộc tính khác đối tượng cvCapture Trong trường hợp này, chuyển đối số CV_CAP_PROP_POS_FRAMES, muốn đọc vị trí theo đơn vị khung, cuối chuyển giá trị vị trí int frames = (int) cvGetCaptureProperty( g_capture, CV_CAP_PROP_FRAME_COUNT 45 ); Sử dụng cvGetCaptureProperty () để truy vấn số liệu từ cấu trúc cvCapture, dùng câu lệnh để tìm khung hình video để hiệu chỉnh trượt if( frames!= ) { cvCreateTrackbar( “Position”, “Example3”, &g_slider_position, frames, onTrackbarSlide ); Cuối tạo Trackbar cho Chức cvCreatTrackbar () cho phép cho theo dõi nhãn * để định cửa sổ để đặt theo dõi Sau cung cấp biến liên kết với theo dõi, giá trị lớn theo dõi lệnh gọi lại (hoặc NULL) trượt di chuyển Lưu ý rằng, không tạo theo dõi cvGetCaptureProperty () trả số khung hình Tùy vào cách video mã hóa, tổng số khung hình khơng có sẵn 3.2.1.5 Nhận dạng khn mặt OpenCV Hình 3-2 – Tổng quan đường ống nhận dạng khuôn mặt OpenCV Để xây dựng quy trình nhận dạng khn mặt OpenCV, áp dụng học sâu theo bước [: 46 Bước 1: Nhập hình ảnh khung video vào đường dẫn nhận dạng khn mặt Với hình ảnh đầu vào, áp dụng tính nhận dạng khn mặt để phát vị trí khn mặt ảnh Tính tốn mốc khn mặt, xử lý trước chỉnh khuôn mặt Căn chỉnh khuôn mặt trình xác định cấu trúc hình học khn mặt cố gắng có chỉnh chuẩn khuôn mặt dựa phép tịnh tiến, xoay tỉ lệ Bước 2: Sau áp dụng chỉnh cắt khuôn mặt, chuyển khuôn mặt đầu vào thông qua mạng nơ-ron sâu Để đào tạo mơ hình nhận dạng khuôn mặt với mạng nơ-ron sâu, liệu đầu vào bao gồm ba hình ảnh: - Anchor: khn mặt đưa vào có danh tính A - Hình ảnh dương: hình ảnh chứa khn mặt danh tính A - Hình ảnh âm: khơng có danh tính thuộc người B, C chí Y Mạng nơ- ron tính tốn trích xuất vector đặc trưng với 128 giá trị đặc trưng khuôn mặt sau điều chỉnh trọng số mạng cho 128 giá trị đặc trưng anchor hình ảnh dương nằm gần hơn, đồng thời đẩy hình ảnh âm 3.1.2.6 Cấu trúc dự án nhận dạng khn mặt OpenCV Hình 3-3 Cấu trúc dự án OpenCV 47 Gồm thư mục: Dataset: thư mục bao gồm ảnh khuôn mặt người tổ chức thư mục theo tên người Images: chứa hình ảnh thử nghiệm sử dụng để xác minh hoạt động mơ hình Face _detection_model: chứa mơ hình học sâu Caffe cung cấp OpenCV dùng để phát khn mặt Mơ hình phát khoanh vùng khuôn mặt hình ảnh Output: chứa tệp đầu ra, tệp đầu bao gồm: - Embeddings.pickle: file nhúng chứa liệu khn mặt có dataset - Le.pickle: chứa nhãn tên cho người mà mơ hình nhận - Recogzer.pickle: mơ hình máy vec tơ hỗ trợ (SVM), dùng để nhận dạng khuôn mặt 3.2 Ngơn ngữ cơng cụ lập trình: Ngơn ngữ lập trình Python: - Python ngơn ngữ lập trình hướng đối tượng bậc cao, dùng để phát triển website nhiều ứng dụng khác Hiện Python sử dụng rộng rãi ứng dụng trí tuệ nhân tạo, học máy, học sâu Python tạo Guido Rossum phát triển dự án mã nguồn mở - Python có 100 thư viện xây dựng sẵn để thực thuật tốn Machine Learning Deep Learning khác Ví dụ thư viện xây dựng trước Tensorflow, Pytorch, Keras, OpenCV,… - Python chạy nhiều tảng bao gồm Linux, MacOS, Windows Công cụ lập trình: Python 3.6 với OpenCV 3.4.2 3.3 Phát triển chương trình 3.3.1 Nhận dạng khn mặt 3.3.1.1 Thu thập liệu xử lý liệu Dữ liệu lấy từ video có sẵn, dùng thư viện OpenCV để cắt hình ảnh từ video Print (“[INFO] starting video”) vs=video(src=0).start() time.sleep(2.0) fps=FPS().start() 48 while True: frame = vs.read() Khi file thực thi, hình ảnh tập liệu trích xuất để tạo 128D – vec tơ cho khn mặt Đường dẫn đến hình ảnh dataset lưu imagePaths Bắt đầu vòng lặp, lặp qua ảnh, lấy tên người từ tên thư mục Các đặc trưng tên tương ứng lưu hai danh sách: knowEmbeddings knowNames Print (“[INFO] định lượng khuôn mặt”) imagePaths = list (path.list_image (args [“dataset”])) knownEmbedding = [] knownNames = [] total = for (i, imagePath) in emunerate (imagePaths): print (“[INFO] xử lý hình ảnh” {} / {}”.format i + 1, len(imagePaths))) name = imagePath.split (os.path.sep) [-2] image = cv2.imread (imagePath) image = imutils.resize (image, width = 600) (h, w) = image.shape [:2] Sử dụng chức blobFromImage OpenCV để xử lý ảnh trước xác định vị trí khuôn mặt imageBlob=cv2.dnn.blobFromImage (cv2.rezize (Image, (300, 300)), 1.0, (300,300), (104.0, 177.0, 123.0), swapRB= False, crop=False) 3.3.1.2 Đào tạo mơ hình Sử dụng thuật toán SVM (Support Vector Machine) để phân chia liệu thành nhóm riêng biệt Sử dụng SVM thư viện scikit – learning cách gọi hàm đơn giản Print (“[INFO] training model”) recognizer = SVC (C=1.0, kernel = “linear”, probability = True) recognizer.fit(data [“embeddings”], lables) f = open (args [“recognizer”], “wb”) f.write (pickle.dumps (recognizer)) f.close () 49 f = open (args [“le”], “wb”) f.write (pickle.dumps (le)) f.close () Sau huấn luyện mơ hình, cách chạy file “train_model.py tạo hai file recognizer.pickle chứa đặc điểm khuôn mặt le.pickle chứa tên người mã hóa 3.3.1.3 Nhận dạng Xác định vùng ROI (vùng quan tâm) khuôn mặt, loại bỏ phần dư thừa, xử lý blob vùng ROI thông qua SVM huấn luyện để nhận dạng người faceBlob = cv2.dnn.blobFromImage (face, 1.0/255, (96, 96), (0 , 0, 0), swapRB = True, crop = False) embedder.setInput (faceBlob) vec = embedder.foward () preds = recognizer.predict_proba (vec) [0] j = np.argmax (preds) proba = preds [j] name = le.classes_[j] Quá trình nhận dạng thực cách chạy file recognition.py Sau hiển thị kết tên người cùng với tỉ lệ dự đốn xác 3.3.2 Đếm số người - Bước 1: Tải video tải MobileNet SSD đào tạo trước để phát đối tượng CLASSES=[“background”, “bird”, “bicycle”, “car”, “bus”, “cat”, “chair”, “person”, “dog”] Print(“[INFO] loading model…”) Net=cv2.dnn.readNetFromCaffe(args[“prototxt”], args[“model”]) - Bước 2: Định nghĩa sẵn đường kẻ ngang, người băng qua đường kẻ ngang này, tăng số đếm tương ứng Cv2.line(frame, (0, H // 2), (W, H //2), (0, 255, 255), 2) Objects=ct.update (rects) - Bước 3:Tiến hành lặp qua đối tượng tracking để cập nhật vị 50 trí (nếu có) Trong q trình lặp, đối tượng vượt qua đường ngang tính thêm người mới, đối tượng khơng vượt qua tiếp tục theo vết For tracker in trackers: Status=”Tracking” Tracker.update (rbg) Pos = tracker.get_position() startX = int(pos.left()) startY = int(pos.top()) endX = int(pos.right()) endY = int(pos.bottom()) rects.append ((startX, startY, endX, endY)) - Bước 4: Tính xem người di chuyển lên hay xuống qua khung For (objectID, centroid) in objects.items(): To = trackableObjects.get (objectID, None) If to is None: To = TrackableObject (objectID, centroid) Else: Y = [c[1] for c in to.centroids] Direction = centroid[1] – np.mean(y) To.centroids.append(centroid) If not to.counted: If direction < and centroid[1] < H //2: totalUp +=1 to.counted = True trackablObjects[objectID] = to Nếu đối tượng theo dõi chưa đếm, cần tìm hiểu xem đối tượng di chuyển lên hay xuống, lấy giá trị y cho tất vị trí trọng tâm trước cho đối tượng cho Sau đó, tính tốn phương hướng cách lấy khác biệt vị trí trung tâm giá trị trung bình tất vị trí trung tâm trước + Kiểm tra xem hướng âm (cho biết đối tượng di chuyển lên) Và tâm nằm phía đường tâm Trong trường hợp tăng totalUp 51 + Kiểm tra xem hướng dương (cho biết đối tượng di chuyển xuống) Và tâm nằm phía đường tâm Nếu điều đúng, tăng totalDown - Bước 5: định danh số đối tượng, tâm đối tượng biểu thị “chấm” tạo cách điền vào vịng trịn với thơng tin bao gồm totalUp, totalDown trạng thái sau cập nhật đếm Text = “ID {}”.format(objectID) Cv2.putText(frame, text, (centroid[0] – 10, centroid [1] -10), Cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2) Cv2.cirle(frame, (centroid[0], centrois[1], 4, (0, 255, 0), -1) Info = [ (“Up”, totalUp), (“Down”, toatalDown), (“status”, status), ] For (i, (k,v)) in enumerrate (info): Text = “{} : {}”.format (k,v) Cv2.putText (frame, text, (10, H – ((i*20) +20)), Cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 0, 255), 2) Cv2.imshow (“Frame”, frame) Key = cv2.waitKey(1) & 0Xff If key == ord (“q”): Break TotalFrames +=1 Fps.update () 3.4 Kết quả thực nghiệm Thực nghiệm hình ảnh video mẫu trích xuất từ camera viện bảo tàng Chăm thành phố Đà Nẵng ngày 27/11/2018 Nhận dạng khn mặt có ảnh: Từ liệu video có sẵn, cắt hình ảnh từ video, khoanh vùng phát vị trí khn mặt có ảnh, sau q trình huấn luyện ta thu mơ hình nhận dạng khn mặt, xác định người hình ảnh, sau vẽ khung xung quanh khuôn mặt thích khung hình tên, khn mặt 52 huấn luyện nhận dạng xác với tên tương ứng, khuôn mặt chưa huấn luyện bị che khuất bị nhiễu mờ không hiển thị xác hiển thị “unknown” Hình 3-4 Kết nhận dạng mặt người Đếm số người xuất video Từ liệu video sau huấn luyện, chạy thử 30s video đưa vào có người xuất nhiều vị trí, ứng với người xuất nhận dạng gắn với mã ID riêng Từ ID gắn cho người, người băng qua đường kẻ ngang hướng lên hay xuống, tăng số đếm tương ứng 53 Hình 3-5 Kết đếm người Test thực nghiệm lần nhận dạng, lần thực nghiệm đầu sử dụng 30 hình ảnh khn mặt, lần sau thực nghiệm sử dụng 60 hình ảnh khn mặt Khuôn mặt nhận dạng hiển thị với tên người 54 Bảng 3.1 Kết thực nghiệm nhận dạng khuôn mặt Số lần thực nghiệm Số lượng khuôn mặt ảnh Đúng Sai Tỷ lệ 30 26 86.6% 30 28 93,3% 30 27 90% 60 54 90% 60 58 96,6% Test thực nghiệm đếm người video Mỗi người xuất video gắn với mã ID riêng Số lượng người đếm từ video huấn luyện tương đối xác, số người khơng đếm khơng có tập huấn luyện bị che khuất Bảng 3.2 Kết thực nghiệm đếm người Tỷ lệ độ lệch Thời gian Số người thực tế Số người đếm (Thực tế - Đếm được) Từ – 10s 10 80% Từ 10 – 20s 25 20 80% Từ 20 – 30s 15 14 93,3% 3.5 Đánh giá kết quả 3.5.1 Nhận dạng khuôn mặt người Kết nhận dạng khuôn mặt người cao, mô hình nhận dạng mặt người cho kết tốt ảnh khơng bị mờ nhiễu, đủ sáng, góc nhìn thẳng, có kích thước tương đối khơng q nhỏ không to Từ việc nhận dạng khuôn mặt người ta xác định người đến địa điểm du lịch nam hay nữ, già hay trẻ 3.5.2 Đếm người Kết đếm người video với độ xác cao Kết toán phụ thuộc vào tốc độ di chuyển người, mật độ người di chuyển đơng hay Từ việc nhận dạng khn mặt đếm số người, ta xác định tronng ngày có người địa điểm du lịch, đếm khoảng thời gian đó, người vào lần người có quay lai địa điểm du lịch hay khơng? 55 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN - Kết luận Trong đề tài thực nghiên cứu nhận dạng khuôn mặt Từ áp dụng Deep Learning với OpenCv để thực việc nhận dạng đếm người có hình ảnh video Sau thực đề tài, kết thực chạy nhận dạng mặt người nhận dạng khuôn mặt huấn luyện, cịn khn mặt khác xuất “unknow” Tập liệu huấn luyện cịn - Hướng phát triển Khắc phục điểm hạn chế nêu để nhận dạng đếm số lượng có độ xác cao Tiến hành thu thập thêm nhiều liệu ứng dụng vào toán lớn để phục vụ cho ngành du lịch 56 TÀI LIỆU THAM KHẢO [1] Adrian Rosebrock (2018), OpenCV Face Recognition [2] Computer Vision Foundation, Facenet: A Unified Embedding for Face Recognition and Clustering, This CVPR2015 paper is the Open Access version [3] Adrian Rosebrock (2017), How OpenCV’s blobFromImage [4] Michael A Nielsen (2013), “Neraul Networks And Deep Learning”, Determination Press [5] Steve R.Gunn, “Support Vector Machines for Classification and Regression”, Technical Report, Faculty of Engineering, Science and Mathematics School of Electronics and Computer Science, 1998 [6] Gary Bradsky and Adrian Kaehler, “Learning OpenCV”, 2008 [7] Adrian Rosebrock (2018), OpenCv People Counter [8] Adrian Rosebrock (2017), Object detection with DeepLearning and OpenCV [9] Menglong Zhu (2017), “MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications” [10] Phan Thị Thu Hồng, Đoàn Thị Thu Hà, Nguyễn Thị Thủy (2013), Ứng dụng phân lớp ảnh chụp phương pháp máy vector hỗ trợClassroom Flip, Tạp chí khoa học Phát triển 11(7): 1045 – 1052 [11] Nguyễn Thanh Tuấn (2020), “Deep Learning bản” [12] Đoàn Hồng Quang, Lê Hồng Minh, Thái Dỗn Ngun (2019), “Nhận dạng khn mặt video mạng nơ ron tích chập”, Tạp chí khoa học cơng nghệ Việt Nam 62 (1) 1.2020 [13] http://caffe.berkeleyvision.org/ [14]https://longvan.net/machine-learning-la-gi-ung-dung-cua-machinelearning.html [15] https://irender.vn/y-nghia-va-vai-tro-cua-deep-learning/ [16] https://vietchem.com.vn/tin-tuc/tri-tue-nhan-tao.html [17] https://vi.wikipedia.org/wiki/Du_l%E1%BB%8Bch [18] https://codelearn.io/sharing/scikit-learn-trong-python-la-gi [19] https://pbcquoc.github.io/cnn/ [20]https://jonathan-hui.medium.com/ssd-object-detection-single-shot-multiboxdetector-for-real-time-processing-9bd8deac0e06 57 ... THẢO HIỀN NGHIÊN CỨU ỨNG DỤNG DEEP LEARNING TRONG PHÂN TÍCH THƠNG TIN KHÁCH DU LỊCH TẠI CÁC ĐIỂM ĐẾN Chuyên ngành: Hệ thống thông tin Mã số: 8480104 LUẬN VĂN THẠC SĨ HỆ THỐNG THÔNG TIN NGƯỜI... 2: PHÂN TÍCH THIẾT KẾ BÀI TỐN PHÂN TÍCH THƠNG TIN KHÁCH DU LỊCH 2.1 Phát biểu tốn Bài tốn phân tích thơng tin khách du lịch tốn có ý nghĩa lớn ngành du lịch nhằm cung cấp thông tin du khách điểm. .. điểm du lịch vấn đề quan trọng Tôi định chọn đề tài ? ?Nghiên cứu ứng dụng Deep Learning phân tích thơng tin khách du lịch điểm đến.” Mục tiêu nhiệm vụ nghiên cứu Mục tiêu: - Mục tiêu nghiên cứu