Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 22 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
22
Dung lượng
1,71 MB
Nội dung
z HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG KHOA KĨ THUẬT ĐIỆN TỬ I ************** BÁO CÁO MÔN HỌC: Đồ án thiết kế hệ thống nhúng Đề Tài : Nhận diện khuôn mặt dùng Raspberry Pi Giảng viên hướng dẫn : Nguyễn Ngọc Minh LỜI MỞ ĐẦU Khuôn mặt đóng vai trị quan trọng q trình giao tiếp người với người, mang lượng thông tin giàu có, chẳng hạn xác định giới tính, tuổi tác, trạng thái cảm xúc người đó,… khảo sát chuyển động đường nét khn mặt biết người muốn nói Trong hệ thống nhận dạng người q trình nhận dạng khn mặt đánh giá bước khó khăn quan trọng so với bước cịn lại hệ thống Do đó, nhận dạng khuôn mặt điều quan trọng cần thiết Nhận dạng khuôn mặt người công nghệ sử dụng rông rãi đời sống ngày người hệ thống giám sát, quản lý vào ra, tìm kiếm thơng tin người tiếng,… có nhiều phương pháp nhận dạng khuôn mặt để nâng cao hiệu suất nhiên dù hay nhiều phương pháp vấp phải thử thách độ sáng, hướng nghiên, kích thước ảnh, hay ảnh hưởng tham số môi trường Cùng với phát triển xã hội, vấn đề an ninh, bảo mật yêu cầu khắt khe quốc gia giới Các hệ thống nhận dạng người, đồ vật… đời phát triển với độ tin cậy ngày cao Với cách tiếp cận đối tượng nhận dạng theo phương pháp này, thu nhập nhiều thông tin từ đối tượng hơn, mà không cần tác động nhiều đến đối tượng vấn đảm bảo tính xác, an tồn, thuận tiện Trong phạm vi báo cáo chúng em xin trình bày thực nhận dạng khuôn mặt qua Raspberry Pi – máy tính bo mạch (hay cịn gọi máy tính nhúng) Mục lục LỜI MỞ ĐẦU .1 CHƯƠNG 1: RASPBERRRY PI VÀ HỆ ĐIỀU HÀNH RASPIAN Raspberry Pi Raspberry Pi Zero W .3 Hệ điều hành Raspbian CHƯƠNG 2: NHẬN DIỆN KHUÔN MẶT Tổng quan nhận diện khuôn mặt .6 1.1 Phân tích tốn 1.2 Các công cụ .6 1.3 PyThon 1.4 Pycharm 1.5 OpenCV Giải vấn đề 2.1 Phát khuôn mặt 2.2 Thuật toán .9 a, Thu nhận tín hiệu b, Phát khn mặt khung hình 10 c, Nhận dạng khuôn mặt 11 d, Code .13 e, Demo .16 CHƯƠNG 3: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 17 3.1 Thương mại điện tử ngân hàng số 17 3.2 Cá nhân hóa trải nghiệm .17 3.3 An ninh sân bay quản lý an ninh biên giới 17 3.4 Chăm sóc sức khỏe .18 3.5 Thanh tốn khơng dùng thẻ 18 3.6 Ngành du lịch .18 3.7 Công nghệ thông minh 18 3.8 Quảng cáo digital 19 LỜI CẢM ƠN .20 TÀI LIỆU THAM KHẢO 21 CHƯƠNG 1: RASPBERRRY PI VÀ HỆ ĐIỀU HÀNH RASPIAN Raspberry Pi Raspberry Pi máy vi tính nhỏ gọn, kích thước hai cạnh cỡ thẻ ATM, tích hợp thứ cần thiết để bạn sử dụng máy vi tính Bộ xử lý SoC Broadcom BCM2835 bao gồm CPU, GPU, RAM, khe cắm thẻ microSD, WiFi, Bluetooth cổng USB 2.0 Nhiệm vụ ban đầu dự án Raspberry Pi tạo máy tính rẻ tiền có khả lập trình cho sinh viên , Pi quan tầm từ nhiều đối tượng khác Đặc tính Raspberry Pi xây dựng xoay quanh xử lý SoC Broadcom BCM2835 ( chip xử lý mobile mạnh mẽ có kích thước nhỏ hay dùng điện thoại di động ) b ao gồm CPU , GPU , xử lý âm /video , tính khác … tất tích hợp bên chip có điện thấp Raspberry Pi khơng hồn tồn thay máy tính để bàn laptop thiết bị đa sử dụng cho hệ thống điện tử, thiết lập hệ thống tính tốn, dự án DIY… với chi phí rẻ Chỉ từ USD bạn mua thiết bị hãng (phiên rút gọn Raspberry Pi Zero) Raspberry Pi Zero W Cấu hình - 1GHz, single-core CPU - 512MB RAM - Mini-HDMI port - Micro-USB On-The-Go port - Micro-USB power - HAT-compatible 40-pin header - Composite video and reset headers - CSI camera connector - 802.11n wireless LAN - Bluetooth 4.0 Ứng dụng Raspberry Pi Zero lựa chọn thích hợp cho ứng dụng IoT quy mơ nh ỏ với server chi phí thấp có tính ổn định cao dự án nhà thông minh, nơng nghiệp,… Sử dụng Do module có cổng HDMI mà khơng có cổng Ethernet phiên trướ c người dùng cần lưu ý việc boot hệ điều hành lần đầu với module thực hiệ n qua hình rời với HDMI SSH thông qua kết nối wifi Hệ điều hành Raspbian Raspberry Pi thiết kế cho hệ điều hành Linux, nhiều phân phối Linux có phiên tối ưu hóa Raspberry Pi Raspbian hệ điều hành máy tính dựa Debian cho Raspberry Pi Có số phiên Raspbian bao gồm Raspbian Stretch Raspbian Jessie Từ năm 2015, Raspberry Pi Foundation thức cung cấp hệ điều hành cho gia đình máy tính bảng đơn Raspberry Pi Raspbian tạo Mike Thompson Peter Green dự án độc lập Bản dựng ban đầu hoàn thành vào tháng năm 2012 Hệ điều hành phát triển tích cực Raspbian tối ưu hóa cao cho CPU ARM hiệu suất thấp dòng Raspberry Pi Raspbian sử dụng PIXEL, Pi I xác nhận Lightweight mơi trường máy tính để bàn kể từ cập nhật Nó bao gồm mơi trường máy tính để bàn LXDE sửa đổi trình quản lý cửa sổ xếp chồng Openbox với chủ đề vài thay đổi khác Sự phân bố xuất xưởng với chương trình máy tính đại số Mathematica phiên Minecraft gọi Minecraft Pi phiên nhẹ Chromium phiên CHƯƠNG 2: NHẬN DIỆN KHUÔN MẶT Tổng quan nhận diện khuôn mặt Hơn thập kỉ qua có nhiều cơng trình nghiên cíu tốn xác định khn mặt người từ ảnh đen trắng, xám đến ảnh màu ngày hôm Các nhà nghiên cứu từ toán đơn giản, ảnh có mặt người nhìn thẳng vào thiết bị thu hình đầu tư thẳng đứng ảnh đen trắng Cho đến ngày hôm tốn mở rộng cho ảnh màu, có nhiều khn mặt ảnh, có nhiều tư thay đổi ảnh Khơng mà cịn mở rộng phạm vi từ môi trường xung quanh đơn giản môi trường xung quanh phức tạp nhằm đáp ứng nhu cầu người Trong năm gần ứng dụng trí tuệ nhân tạo ngày phát triển đánh giá cao Một lĩnh vực quan tâm trí tuệ nhân tạo nhằm tạo ứng dụng thông minh, có tính người nhận dạng Trong đề tài em chọn đối tượng khuôn mặt 1.1 Phân tích tốn Bài tốn Nhận Diện Khn mặt (Face Recognition) bao gơm tốn khác Phát khn mặt (Face detection), đánh dấu (facial landmarking), trích chọn(rút) đặc trưng (feature extration), gán nhãn, phân lớp (classification) 1.2 Các cơng cụ Để giải tốn nhận dạng khuôn mặt đồ án chúng em sử dụng thư viện opencv ngôn ngữ python phần mềm PYCHARM 1.3 PyThon Python ngôn ngữ lập trình thơng dịch (interpreted), hướng đối tượng (objectoriented), ngôn ngữ bậc cao (high-level) ngữ nghĩa động (dynamic semantics) Python hỗ trợ module gói (packages), khuyến khích chương trình module hóa tái sử dụng mã Python thư viện chuẩn mở rộng có sẵn dạng mã nguồn dạng nhị phân miễn phí cho tất tảng phân phối tự 1.4 Pycharm PyCharm mơi trường phát triển tích hợp (IDE) sử dụng lập trình máy tính , đặc biệt cho ngơn ngữ lập trình Python Nó phát triển công ty JetBrains Séc (trước gọi IntelliJ) Nó cung cấp phân tích mã, trình gỡ lỗi đồ họa, trình kiểm tra đơn vị tích hợp, tích hợp với hệ thống kiểm soát phiên (VCSes) hỗ trợ phát triển web với Django khoa học liệu với Anaconda PyCharm tảng đa tảng , với phiên windows , macOs Linux Phiên Cộng đồng phát hành theo Giấy phép Apache cịn có Phiên Chun nghiệp với tính bổ sung - phát hành theo giấy phép độc quyền đăng ký tài trợ phiên giáo dục Tính phần mềm : - Hỗ trợ phân tích mã hóa , với việc hồn thành mã , đánh dấu cú pháp lỗi, tích hợp linter sửa lỗi nhanh chóng - Điều hướng dự án mã: chế độ xem dự án chuyên biệt, chế độ xem cấu trúc tệp chuyển nhanh tệp, lớp, phương thức cách sử dụng - Tái cấu trúc Python : bao gồm đổi tên, giải nén phương thức, giới thiệu biến, giới thiệu số, kéo lên, đẩy xuống thứ khác - Hỗ trợ cho khuôn khổ web: Django , web2py Flask (chỉ dành cho phiên chuyên nghiệp) - Trình gỡ rối Python tích hợp - Kiểm tra đơn vị tích hợp , với phạm vi bao phủ mã dòng - Phát triển Python Google App Engine (chỉ dành cho phiên chun nghiệp) - Tích hợp kiểm sốt phiên bản: giao diện người dùng hợp cho Mercurial , Git , Subversion , Perforce CVS với danh sách thay đổi hợp - Hỗ trợ công cụ khoa học matplotlib, numpy scipy (chỉ dành cho phiên chuyên nghiệp) => Nó cạnh tranh chủ yếu với số IDE hướng Python khác, bao gồm PyDev Eclipse IDE Komono tập trung rộng rãi 1.5 OpenCV Opencv (Open Computer Vision library) Intel phát triển, giới thiệu năm 1999 hoàn thiện thành phiên 1.0 năm 2006 Thư viện opencv – gồm khoảng 500 hàm – viết ngơn ngữ lập trình C tương thích với hệ điều hành Windows, Linux, Mac OS… đóng vai trị xác lập chuẩn giao tiếp, liệu, thuật toán cho lĩnh vực CV tọa điều kiện cho người tham gia nghiên cứu phát triển ứng dụng Trước Opencv khơng có cơng cụ chuẩn cho lĩnh vực xử lý ảnh Các đoạn code đơn lẻ nhà nghiên cứu tự viết thường không thống không ổn định Các công cụ thương mại Matlab, Simulink, v.v lại có giá cao thích hợp cho công ty phát triển ứng dụng lớn Ngồi cịn có giải pháp kèm theo thiết bị phần cứng mà phần lớn mã đóng thiết kế riêng cho thiết bị, khó khan cho việc mở rộng ứng dụng OpenCV cơng cụ hữu ích cho người bước đầu làm quen với xử lý ảnh số ưu điểm sau: OpenCV công cụ chuyên dụng: Intel phát triển theo hướng tối ưu hóa cho ứng dụng xử lý phân tích ảnh, với cấu trúc liệu hợp lý, thư viện tạo giao diện, truy xuất thiết bị phần cứng tích hợp sẵn OpenCV thích hợp để phát triển nhanh ứng dụng OpenCV công cụ mã nguồn mở: Không công cụ miễn phí, việc xây dựng mã nguốn mở giúp OpenCV trở thành cơng cụ thích hợp cho nghiên cứu phát triển, với khả thay đổi mở rộng mơ hình, thuật tốn OpenCV sử dụng rộng rãi: Từ năm 1999 đến nay, OpenCV thu hút lượng lớn người dung, có cơng ty lớn Microsoft, IBM, Sony, Siemens, Google nhóm Giải vấn đề 2.1 Phát khuôn mặt Phát khuôn mặt (Face Detection) kĩ thuật máy tính để xác định vị trí kích thước khuôn mặt người ảnh Kỹ thuật nhận biết đặc trưng khuôn mặt bỏ qua thứ khác như: tòa nhà, cấy cối, thể 2.2 Thuật tốn a, Thu nhận tín hiệu Từ tín hiệu video đầu vào, bước xử lý tiến hành phân đoạn video thành c ác khung hình (frame) riêng biệt Việc phân đoạn video tiên hành theo thời gi an Mỗi khung hình có thê khơng chứa, chứa phần chứa tồn khn mặt Vì vậy, bước xử lý đầu tiên, thuật toán tiên hành phát (face detection) xác đị nh vị trí khn mặt (nếu có) ảnh Các khn mặt phát sau tiế p tục tiền xừ lý nhằm tăng cường chất lượng hình ảnh (loại nhiễu, khử bóng/mờ), ch uẩn hóa kích thước độ phân giải ảnh, chỉnh khuôn mặt hướng trực diện (nhìn t hẳng) Các khn mặt sau tiền xử lý sử dụng làm đầu vào cho mơ hìn h mạng neral học sâu (DNN-Deep Neural Network) Mơ hình tự động học trích chọn đặc trưng đê nhận dạng (phần lớp) khn mặt Bước xử lý cuối cùa thuật tốn tiến hành phần lớp (nhận diện) khuôn mặt Bản chất việc phân lớp khuôn mặt l tìm kiêm đơi tượng người có mẫu khn mặt giống với khuôn mặt cần nhận dạng Để thực điều này, mơ hình phân lớp cần phải huấn luyện với tập mẫu cho trước Trong đó, mẫu khn mặt thể tập đặc trưng thu từ mơ hình phát đặc trưng DNN bước b, Phát khuôn mặt khung hình Phương pháp phát khn mặt đê xuất sử dụng đặc trưng HOG (Histograms of Oriented Gradients) phân lóp tuyên tính SVM (Support Vector Mac hines) Ý tưởng đặc trưng HOG hình dạng trạng thái vật đặ c trưng phân bố gradient hướng cạnh Đặc trưng phát triền dựa đặc trưng SIFT (Scale-Invariant Feature Transform), đặc trưng HOG tính tr ên vùng Do biến thiên màu sắc vùng khác nên vùng cho ta vector đặc trưng Vì để có đặc trưng cửa toàn cửa sổ (window) ta phải kết hợp nhiều vùng liên tiếp lại với Các bước quy trình phát hi ện khn mặt người khung hình mơ tả cụ thể Đầu vào thuật toán frame ảnh thu từ bước phân đoạn video Bước xử lý tiến hành chuyển đổi ảnh không gian RGB (ảnh màu) sang ả nh đa cấp xám (gray scale), sau tiên hành cân histogram ảnh gray scale đề gi ảm nhạy cảm với nguồn sáng Bước xử lý tính biến thiên màu sắc tất 10 −1 pixel ảnh gray scale theo chiều X[-l, 0, ] theo chiều Y [ ¿, thu ả nh gradient-x (đạo hàm theo trục x) gradient-y (đạo hàm theo trục y) có kích thước bă ng kích thước ảnh gray scale Hai ảnh thu cho thấy biến thiên màu sắc nói T iếp theo tiên hành tính góc hướng biến thiên màu sắc từ ảnh gradient-x gradienty Việc lưu trữ xác giá tri góc (orientation) điểm ảnh (x,y) n hiều chi phí khơng mang lại nhiều kết quả, ta chia khơng gian góc thành c ác bin Việc phân chia bin nhỏ làm tăng độ xác, kết thực nghi ệm cho thấy kích thước bin khoảng 200 cho kêt tốt nhât đôi với việc phát khuôn mặt người Do đó, với khơng gian hướng biến thiên miền từ 0° - 180° se chia t hành bin sau: [0° - 20°], [21° - 40°] [41° -60°], [61° - 80°], [81° - 100°], [101°- 120 °], [121° - 140°], [141° - 160°], [161° - 180°] Ứng với bin trên, tiến hành thống kê b iên độ (magnitude) vị trí Với bin, vị trí (x,y) góc (orientation) thuộc bin giá trị bin vị trí (x,y) băng giá trị biên độ, ngược lại giá trị bin vị trí (x,y) băng Bước tiên hành tính tốn vector đặc trưng cho cell (mỗi cell thường chọn với kích thước 8x8 pixel) Vector đặc trưng cell gồm thành phần tương ứng với bin giá trị thành phần i tổng giá trị điểm t rong bin i mà có tọa độ năm cell Tiếp theo, tính tốn vector đặc trưng cho khối (block), khối thường chọn với kích thước 2*2 cells (16x16 pixel) Vector đặc trưng khối tính cách ghép vector dặc trưng cell block lạ i với nhau, số thành phần vector đặc trưng khối tính theo công thức: c, Nhận dạng khuôn mặt Công đoạn nhận dạng thường gồm bước xử lý trích chọn đặc trưng ph ân lớp khuôn mặt Phương pháp trích chọn đặc trưng đề xuất sử dụng lớp 11 mạng neural học sâu FaceNet, Florian Schroff cộng đề xuất năm 2015 Đâ y mơ hình có khả học từ tập mẫu cho trước nhằm tự động phát đặc tr ưng quan trọng để nhận dạng đối tượng Ý tưởng hướng tiếp cận dựa t rên việc học không gian Euclidean nhúng ứong ảnh sử dụng cấu hình mạng neural tích chập học sâu (deep convolutional network) Mạng huấn luyện cho k hoảng cách L2 bình phương không gian nhúng tương ứng trực tiếp với độ tương t ự cùa khuôn mặt Cụ thể khn mặt người có khoảng cách nhỏ khuôn mặt cùa người khác có khống cách lớn Mạng huấn cách trực tiếp để đầu trở thành vector đặc trưng 128 chiều sử dụng hàm chi phí ba (tripletbased loss function) Một ba (triplet) định nghĩa bao gôm hai khuôn mặt người - positive khuôn mặt người khác negative Mục tiêu cùa hàm chi phí phân tách cặp khuôn mặt positive k hỏi khuôn mặt negative sử dụng lệ khoảng cách - distance margin Từ độ đo thu được, thuật toán ước lượng giá trị cùa hàm chi phi dựa việc so sánh khoáng cách g iữa tập dặc trung, sinh từ ảnh khuôn mặt khác cua người (đượ c gọi người thứ nhât) tập đặc trưng thứ sinh từ ảnh khuôn mặt ng ười khác (được gọi người thứ hai) Các giá trị ước lượng hàm chi phí sau tính s 12 ẽ đuợc lan truyền ngược từ lớp cuối đến lớp đau tiên cùa mạng để tinh chỉnh trọng số (cập nhật lại trọng số) lớp mạng Quá trình tính tốn, ước lượng cập nhật tr ọng số mạng lặp lặp lại liên tục giá trị hàm chi phí thỏa mãn điều kiện cho Lặp lại bước đôi với toàn tập liệu huấn luyện thuật tốn hn luyện mạng hội tụ Mơ hình nhận dạng khuôn mặt mô tả cụ thể d, Code import cv2 import face_recognition import os import numpy as np # step load ảnh từ kho ảnh nhận dạng path="pic2" images = [] 13 classNames = [] myList =os.listdir(path) print(myList) for cl in myList: print(cl) curImg = cv2.imread(f"{path}/{cl}") # pic2/Donal Trump.jpg images.append(curImg) classNames.append(os.path.splitext(cl)[0]) # splitext tách path thành phần, phần trước đuôi mở rộng phần mở rộng print(len(images)) print(classNames) #step encoding def Mahoa(images): encodeList = [] for img in images: img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) #BGR chuyển đổi sang RGB encode = face_recognition.face_encodings(img)[0] encodeList.append(encode) return encodeList encodeListKnow = Mahoa(images) print("ma hoa cong") print(len(encodeListKnow)) #khởi dộng webcam cap = cv2.VideoCapture("Media/Trump.mp4") while True: ret, frame= cap.read() framS = cv2.resize(frame,(0,0),None,fx=0.5,fy=0.5) 14 framS = cv2.cvtColor(framS, cv2.COLOR_BGR2RGB) # xác định vị trí khn mặt cam encode hình ảnh cam facecurFrame = face_recognition.face_locations(framS) # lấy khn mặt vị trí khn mặt encodecurFrame = face_recognition.face_encodings(framS) for encodeFace, faceLoc in zip(encodecurFrame,facecurFrame): # lấy khn mặt vị trí khn mặt theo cặp matches = face_recognition.compare_faces(encodeListKnow,encodeFace) faceDis = face_recognition.face_distance(encodeListKnow,encodeFace) # print(faceDis) matchIndex = np.argmin(faceDis) #đẩy index faceDis nhỏ if faceDis[matchIndex]