Loss và accuracy

Một phần của tài liệu Nhận diện khuôn mặt ứng dụng trong robot tiếp tân (Trang 54)

Loss: thường là một số thực không âm (trừ một số trường hợp loss là cosin proximity) thể hiện sự chênh lệch giữa hai đại lượng: nhãn thật của dữ liệu và nhãn của dữ liệu do model dự đoán ra. Model dự đoán càng lệch với giá trị thực thì Loss càng to và ngược lại, nếu dự đoán càng sát với giá trị thực thì Loss sẽ nhỏ dần về 0.

Accuracy: Sự chính xác

𝐴𝑐𝑐𝑢𝑟𝑎𝑐𝑦 = 𝑛

𝑁 (2.25)

Trong đó:

• n: Số sample dự đoán đúng

• N: Tổng số sample đưa ra dự đoán

2.9.3 Precision, Recall và Accuracy

Một số khái niệm cơ bản:

• True positive: Một phát hiện chính xác nhãn đúng • False positive: Một phát hiện sai nhãn đúng • True negative: Một phát hiện đúng nhãn sai

43 • False negative: Một phát hiện sai nhãn sai

Precision 𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛 = 𝑇𝑃 𝑇𝑃+𝐹𝑃 = 𝑇𝑃 𝑎𝑙𝑙 𝑑𝑒𝑡𝑒𝑐𝑡𝑖𝑜𝑛𝑠 (2.26) Recall 𝑅𝑒𝑐𝑎𝑙𝑙 = 𝑇𝑃 𝑇𝑃+𝐹𝑁 = 𝑇𝑃 𝑛ℎã𝑛 𝑡ℎự𝑐 (2.27)

44

CHƯƠNG 3. THIẾT KẾ VÀ XÂY DỰNG PHẦN CỨNG

3.1 Sơ đồ khối

Hình 3.1 Sơ đồ khối của hệ thống

3.2 Giới thiệu phần cứng sử dụng

3.2.1 Máy tính xách tay Lenovo Ideapad L340

45 Máy tính xách tay IdeaPad L340 được trang bị chip Intel Core i5-9300H thế hệ mới với xung nhịp 2.40GHz upto 4.10GHz và RAM 8GB (1 × 8𝐺𝐵) DDR4 2666MHz giúp xử lý các tác vụ trơn tru và máy hoạt động ổn định. Ổ cứng kèm theo là 512GB SSD giúp khởi động máy, khởi động hệ thống môt cách nhanh hơn, cũng như xử lý đa nhiệm một cách nhanh chóng.

Bảng 3.1 Thông số kỹ thuật máy tính IdeaPad L340

CPU Intel Core I5 9300H

RAM DDR4 8GB (1x8GB) 2666MHz; 1 slot, up to 16 GB GPU Geforce GTX 1050 3GB

Màn hình 15.6” FHD (1920x1080), IPS Ổ cứng SSD 1 slot SSD NVMe M.2 PCIe Ổ cứng HDD 1TB HDD 5400 rpm

Ổ đĩa quang No ODD

Lan Dual 10/100/1000Mbps Ethernet Wireless 802.11 ac Wifi + Blutoolth v4.1

Các cổng kết nối

1 x USB 3.0 (Type-C); 2 x USB 3.0; 1 x USB 2.0; 1 x HDMIAudio Jack Microphone RJ45 LAN 4-in-1 Card Reader (SD, SDHC, SDXC, NMC)

Pin 3 Cell

Kích thước 380265 x 25.8 (mm)

3.2.2 Camera logitech C270

Camera logitech C270 là dòng camera HD với độ phân giải 720p, hình ảnh chụp lên tới 3-megapixel. Kết nối với laptop dễ dàng thông qua cổng USB. Camera được bảo vệ bởi lớp vỏ nhựa chắc chắn.

46

Hình 3.3. Camera logitech C270

Yêu cầu hệ thống:

Bảng 3.2 Yêu cầu khi sử dụng camera

Yêu cầu cơ bản Yêu cầu HD

Yêu cầu hệ thống CPU: 1 GHz RAM: 1GB CPU: 2.4 GHz Intel Core 2 Duo RAM: 2GB

Thông số kỹ thuật của camera

Bảng 3.3. Thông số kỹ thuật của camera Logitech C270

Kiểu kết nối USB có dây

Loại USB USB 2.0 tốc độ cao USB VID_PID VID_046D&PID_081A Microphone Tích hợp giảm tiếng ồn Loại ống kính và cảm biến Nhựa

Loại tiêu điểm Cố định

Trường nhìn 60°

Tiêu cự 4.0 mm

Độ phân giải quang học 1280 x 960 1.2MP

Chụp ảnh (4:3 SD) 320x240, 640x480 1.2 MP, 3.0 MP Chụp ảnh (16:9 W) 360p, 480p, 720p

Quay video (4:3 SD) 320x240, 640x480, 800x600 Quay video (16:9 W) 360p, 480p, 720p,

47 Hiệu ứng video (VFX) N/A

Buttons Right Light 2 Đèn báo (LED) NA

Quyền riêng tư Activity/Power Kích thước clip (tối đa) Không

3.2.3 Mô hình robot

Hình 3.4 Mô hình Joy Robot (Robô Da Alegria)

Mô hình robot được dùng là Joy Robot (Robô Da Alegria). Thi công, lắp ráp robot

Bước 1: In 3D

48

Bước 2: Lắp ráp các bộ phận

Hình 3.6 Lắp ráp phần đầu robot

49

Bước 3: Hoàn thiện mô hình robot

Hình 3.8 Mô hình robot

3.2.4 Các thiết bị sử dụng trong robot 3.2.4.1 Arduino Uno 3.2.4.1 Arduino Uno

50 Arduino Uno là một bo mạch thiết kế với bộ xử lý trung tâm là vi điều khiển AVR Atmega328. Cấu tạo chính của Arduino Uno bao gồm các phần:

• Cổng USB: là cổng giao tiếp để upload code từ máy tính lên vi điều khiển. Đồng thời nó cũng là giao tiếp serial để truyền dữ liệu giữa vi điều khiển và máy tính.

• Jack nguồn: để chạy Arduino có thể lấy nguồn từ USB hoặc nguồn ngoài từ 9V đến 12 V.

• Có 14 chân vào/ra số đanh từ 0 đến 13, ngoài ra có một chân nối đất (GND) và một chân điện áp tham chiếu (AREF).

• Vi điều khiển AVR: là bộ xử lý trung tâm của toàn bo mạch.

Hình 3.10 Sơ đồ chân Arduino Uno

Thông số kỹ thuật:

Bảng 3.4 Thông số kỹ thuật Arduino Uno

Vi xử lý Atmega328 Điện áp hoạt động 5V

Điện áp đầu vào 7-12V Điện áp đầu vào (giới hạn) 6-20V

Chân vào/ra (I/O) 14 chân (6 chân có thể cho đầu ra PWM) Chân vào tương tự 6

Dòng điện cho mỗi chân I/O 40mA Dòng điện chân nguồn 3.3V 50mA

51 Bộ nhớ trong 32 KB (Atmega328)

SRAM 2 KB (Atmega328)

EEFROM 1 KB (Atmega328)

Xung nhịp 16MHZ

3.2.4.2 Mạch điều khiển 16 Channel PWM PCA9685

Mạch điều khiển 16 channel PWM PCA9685 được sử dụng để có thể xuất ra 16 xung PWM từ 16 cổng khác nhau thông qua giao tiếp I2C sử dụng IC PCA9685, giúp điều khiển đồng thời 16 RC Servo hoặc Dimmer 16 thiết bị đồng thời,… Mạch điều khiển 16 Channel PWM PCA9685 có cấu trúc phần cứng đơn giản (hình 3.6) cũng như bộ thư viện có sẵn trên Arduino rất dễ dàng sử dụng và kết nối.

Hình 3.11 Mạch điều khiển 16 Channel PWM PCA9685

Thông số kỹ thuật:

Bảng 3.5 Thông số kỹ thuật mạc điều khiển 16 Channel PWM PCA9685

IC chính PCA9685

Điện áp sử dụng 2.3 - 5.5VDC

Số kênh PWM 16 kênh, tần số: 40 – 1000Hz Độ phân gải PWM 12 bit

Giao tiếp I2C

52

3.2.4.3 Động cơ Servo SG90

Động cơ servo SG90 có kích thước nhỏ, được sử dụng nhiều trong các mô hình nhỏ hoặc các cơ cấu kéo không cần đến lực năng. Động cơ servo SG90 có tốc độ phản ứng nhanh, các bánh răng được làm bằng nhựa nên cần lưu ý khi nâng tải nặng có thể làm hư bánh răng, động cơ RC Servo SG90 có tích hợp sẵn Driver điều khiển động cơ bên trong nên có thể dễ dàng điều khiển góc quay bằng phuwong pháp điều chế độ rộng xung.

Hình 3.12 Động cơ Servo SG90

Thông số kỹ thuật:

Bảng 3.6 Thông số kỹ thuật động cơ Servo SG90

Khối lượng 9g

Kích thước 22.2×11.8× 32 mm

Moment xoắn 1.8kg/cm

Tốc độ hoạt động 60 độ trong 0.1 giây Điện áp hoạt động 4.8 (~5V)

Nhiệt độ hoạt động 0℃ - 55℃

3.2.4.4Mạch điều khiển động cơ L298N

Mạch điều khiển động cơ DC L298N có khả năng điều khiển 2 động cơ DC, dòng tối đa 2A mỗi động cơ, mạch tích hợp diode bảo vệ và IC nguồn 7805 giúp cấp nguồn 5VDC cho các module khác (chỉ sử dụng 5V này nếu nguồn cấp < 12VDC).

53

Hình 3.13 Mạch điều khiển động cơ L298N

Thông số kỹ thuật:

Bảng 3.7. Thông số kỹ thuật mạch điều khiển động cơ L298N

Driver L298N tích hợp hai mạch cầu H Điện áp điều khiển 5V – 12V

Dòng tối đa cho mỗi cầu H 2A Điện áp của tín hiệu điều khiển 5V – 7V Dòng của tín hiệu điều khiển 0 – 36mA

Công suất hao phí 20W (khi nhiệt độ t=75℃

Nhiệt độ bảo quản -25℃ - 130℃

3.2.4.5 Led Matrix 8x8 MAX7219

Led Matrix 8x8 MAX7219 dùng ic 7219 để điều led matrix 1 cách dễ dàng và đơn giản.

54

Hình 3.14 Led matrix 8×8 MAX7219

Thông số kỹ thuật

Bảng 3.8 Thông số kỹ thuật Leb matrix 8x8 MAX7219

Dòng điện hoạt động 4.7 – 5.3 VDC Dòng điện tiêu thụ 320mA

Nhiệt độ hoạt động 0℃ - 50℃

Kích thước 32mm×32mm×8mm

3.2.4.6Động cơ DC giảm tốc V1

Động cơ DC giảm tốc V1 cải tiến khác với bình thường ở phần thiết kế trục bổ sung thêm những vòng đồng ở các chỗ tiếp xúc giúp tăng độ bền và giảm ma sát, trong phần đuôi của động cơ sẽ thấy sự khác nhau về cơ cấu chổi than, chổi than của động cơ bình thường chỉ là tiếp xúc bằng đồng mỏng trong khi với động cơ V1 cải tiến là 2 khối chổi than lớn, điều này giúp động cơ V1 cải tiến có độ bền > 10 lần so với động cơ thường cùng với khả năng chịu được mức điện áp lên đến 12VDC.

55

Thông số kỹ thuật:

Bảng 3.9 Thông số kỹ thuật động cơ DC giảm tốc V1

Điện áp hoạt động 3-12VDC Dòng điện tiêu thụ 110-200mA Tỉ số truyền 1:48 Số vòng/phút - 125 vòng/phút tại 3VDC - 208 vòng/phút tại 5VDC Moment 0.8KG.CM 3.2.4.7 Pin 18650 Hình 3.16 Pin 18650 Thông số kỹ thuật

Bảng 3.10 Thông số kỹ thuật Pin 18650

Kiểu Pin 18650

Điện áp trung bình 3.7V

Sạc đầy 4.2V

Dung lượng 3250 – 3400mAh

Dòng xả 5A

Số lần sạc xả 1000 lần Kích thước 18×65mm Trọng lượng 43g

56

3.2.4.8 Nối dây cho mô hình robot

Các thiết bị được nối dây theo sơ đồ:

Arduino:

• Arduino pin D2 => L298N pin IN4 • Arduino pin D3 => L298N pin IN3

Hình 3.17 Sơ đồ nối dây cho robot

• Arduino pin D6 => L298N pin IN2 • Arduino pin D7 => L298N pin IN1 • Arduino pin D9 => MAX7219 pin DIN • Arduino pin D10 => MAX7219 pin CS • Arduino pin D11 => MAX7219 pin CLK • Arduino pin A4 => SDA

• Arduino pin A5 => SCL • Arduino pin Vin => Battery

Mạch điều khiển 16 Channel PWM PCA9685

• Pin SCL => Arduino pin A5 • Pin SDA => Arduino pin A4

57 • Pin Vcc => Arduino pin 5V

• Pin GND => Arduino pin GND • Pin V+ => Battery V+

• Pin GND => Arduino pin GND

Cầu H L298N

• Pin IN1 => Arduino pin D7 • Pin IN2 => Arduino pin D6 • Pin IN3 => Arduino pin D3 • Pin IN4 => Arduino pin D2 • Pin +12V => V+ của Pin 18650 • Pin GND => Arduino GND • OUT1 => Motor 1

• OUT2 => Motor 2

MAX7219 đầu tiên

• Pin Din => Arduino pin D9 • Pin CS => Arduino pin D10 • Pin CLK => Arduino pin D11 • Pin Vcc => Arduino pin 5V • Pin GND => Arduino pin GND

Các MAX7219 khác

• Pin Din => MAX7219 pin DOUT (MAX7219 trước đó) • Pin CS => MAX7219 pin CS (MAX7219 trước đó) • Pin CLK => MAX7219 pin CLK (MAX7219 trước đó) • Pin Vcc => MAX7219 pin Vcc (MAX7219 trước đó) • Pin GND => MAX7219 pin GND (MAX7219 trước đó)

58

CHƯƠNG 4 PHẦN MỀM VÀ THUẬT TOÁN

4.1 Nhiệm vụ nhận dạng khuôn mặt

Face detection: Sử dụng thuật toán MTCNN để nhận diện khuôn mặt.

Hình 4.1 Cách thức MTCNN hoạt động Thông số chính cho MTCNN:

• Ngưỡng NMS: Giá trị ngưỡng NMS sẽ chặn ngưỡng IOU khi NMS lọc khung mặt. Giá trị ba mạng được đặt các ngưỡng riêng, giá trị các ngưỡng lần lượt là NMS_threshold [3] = {0.7, 0.8, 0.82}.

• Minisize: Hình ảnh nhỏ nhất có thể phát hiện. Giá trị này là một trong những tham số dùng để kiểm soát số lượng lớp của kim tự tháp hình ảnh. Kích thước càng nhỏ, phân cấp càng nhiều, tính toán càng nhiều. Ở đây minisize được đặt là 20.

• Factor: Hệ số tỷ lệ khi tạo kim tự tháp hình ảnh, phạm vi (0,1), một trong những tham số có thể kiểm soát số lượng lớp của kim tự tháp hình ảnh. Lớp càng lớn, số lượng tính toán càng nhiều. Hệ số factor được chọn ở đây là 0.7

Face Alignment: Sử dụng pháp biến đổi Affine (Affine transformation) để

59

Hình 4.2 Phép biến đổi affine căn chỉnh khuôn mặt

Các điểm landmark được căn chỉnh theo tọa độ:

𝑠𝑟𝑐 = [[30.2946, 51.6963],

[65.5318, 51.5014],

[48.0252, 71.7366],

[33.5493, 92.3655],

[62.7299, 92.2041]]

4.2 Nhiệm vụ nhận diện khuôn mặt (Face recognition)

Trong deep convolutional neural network (DCNN), lớp convolutional có tác dụng lấy ra các đặc trưng của ảnh, và sau hàng loạt các lớp convolutional + lớp pooling (ConvNet) thì model sẽ học được đặc điểm của các ảnh, trước khi cho vào lớp fully connected.

Biểu diễn khuôn mặt thông qua việc nhúng mạng tích chập sâu (DCNN) là phương pháp tiên tiến để xác minh khuôn mặt, phân cụm khuôn mặt và nhận dạng khuôn mặt. Mạng DCNN chịu trách nhiệm ánh xạ hình ảnh khuôn mặt sau bước căn chỉnh khuôn mặt (face alignment) thành một vector đặc trưng để các đặc trưng của một người có khoảng cách nhỏ trong khi khoảng cách giữa hai người khác nhau có

60 khoảng cách đáng kể. Sau khi lấy ra các đặc trưng của ảnh bằng việc sử dụng pre- trained model, thì sinh viên sẽ dùng hồi quy softmax để phân loại ảnh.

Trích xuất đặc trưng

Sử dụng pre-train model là LResNet100E-IR để trích xuất các đặc trưng từ bộ dữ liệu dùng để đào tạo (training set)

Hình 4.3 Mô phỏng pre-traned model LResNet100E-IR trích xuất đặc trưng

Pre-trained model LResNet100E-IR đã được đạo tạo với bộ dữ liệu ms1-refine- v2 [13] với thuật toán sử dụng là ArcFace. Đầu vào của mạng là hình ảnh có kích thước 112 × 112 × 3, đầu ra là một vector nhúng 512-d tương ứng với mỗi ảnh trong bộ dữ liệu (như trong hình 4.3).

Phân loại bằng softmax

Bước phân loại có thể được thực hiện bằng cách tính khoảng cách nhúng giữa một mặt mới và các khuôn mặt đã biết, nhưng cách tiếp cận này cần nhiều tính toán và tốn kém bộ nhớ (phương pháp này được gọi là k-NN). Thay vào đó, sinh viên sử dụng trình phân loại softmax để ghi nhớ ranh giới giữa các vector nhúng một cách hiệu quả hơn nhiều.

Phân loại softmax được sử dụng như bước cuối cùng để phân loại một người dựa trên việc nhúng mặt.

Như trong hình 4.4 đầu vào của mạng là một điểm dữ liệu 512-d tương ứng với hình ảnh của một khuôn mặt. Mạng có 2 lớp FC, mỗi lớp có 1024 nơ-ron, hàm tác động ReLU, dropout 0.5. Mạng được tối ưu bằng phương pháp Adam với learning rate 0.001

61

Hình 4.4 Bộ phân loại Softmax

4.3 Môi trường làm việc với Deep Learning 4.3.1 Tensorflow 4.3.1 Tensorflow

Tensorflow là một interface để thể hiện các thuật toán machine learning và thực hiện các thuật toán đó. Hệ thống này linh hoạt và có thể sử dụng để thể hiện nhiều loại thuật toán, bao gồm thuật toán đào tạo và suy luận cho các mô hình mạng DNN, và nó đã được sử dụng để tiến hành nghiên cứu và triển khai các hệ thống machine learning vào sản xuất trên hơn một chục lĩnh vực khoa học máy tính và các lĩnh vực khác, bao gồm nhận dạng giọng nói, computer vision, robot, thu hồi thông tin, xử lý ngôn ngữ tự nhiên (NLP), khai thác thông tin địa lý.

Tensorflow là một thư viện phần mềm mã nguồn mở để tính toán số liệu. Ban đầu, nó được nhóm Google Brain phát triển trong tổ chức nghiên cứu về machine learning và nghiên cứu mạng DNN sâu rộng, nhưng sau đó hệ thống này có thể áp dụng rộng rãi nhiều lĩnh vực khác tốt.

Tensorflow là đa nền tảng. Nó có thể chạy trên hầu hết mọi thứ: GPU và CPU bao gồm cả nền tảng di động và nhúng, thậm chí là các đơn vị xử lý tensor (TPU). Trong hình 4.4, công cụ thực thi phân tán Tensorflow trừu tượng hóa nhiều thiết bị được hỗ trợ và cung cấp lõi hiệu năng cao được triển khai trong C++ cho nền tảng Tensorflow.

62

Hình 4.5 Công cụ thực thi phân tán Tensorflow

Mô hình thực thi Tensorflow

Machine learning có thể trở nên phức tạp một cách nhanh chóng và các mô hình deep learning có thể trở nên lớn hơn. Đối với nhiều biểu đồ mô hình, cần được phân phối đào tạo để có thể lặp lại trong khung thời gian hợp lý. Với phiên bản hiện tại của Tensorflow, code có thể được viết để xây dựng biểu đồ đầy đủ tính toán muốn thực hiện. Điều này có nhiều lợi thế:

• Nó là di động, vì đồ thị có thể được thực thi ngay lập tức hoặc được lưu để sử dụng sau này, và nó có thể chạy trên nhiều nền tảng: CPU, GPU, TPU, di động, embedded. Ngoài ra, nó có thể được triển khai để sản xuất mà không phải phụ thuộc vào bất kỳ mã nào đã xây dựng biểu đồ, chỉ có thời gian chạy cần thiết để thực thi nó.

• Nó có thể điều chỉnh và tối ưu hóa, vì biểu đồ có thể được chuyển đổi để tạo ra một phiên bản tối ưu hơn cho một nền tảng nhất định. Ngoài ra, tối ưu hóa bộ nhớ hoặc tính toán có thể được thực hiện và đánh đổi giữa chúng. Điều này rất hữu ích, ví dụ trong việc hỗ trợ suy luận di động nhanh hơn sau khi đào tạo

Một phần của tài liệu Nhận diện khuôn mặt ứng dụng trong robot tiếp tân (Trang 54)