Biến đổi hình học trong xử lý ảnh

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 51)

Biến đổi hình học là một ánh xạ môt-một từ một tập hợp điểm sang một tập hợp điểm khác dựa trên cùng một quy tắc. Nói cách khác, phép biến đổi hình học là phép ánh xạ tọa độ điểm hay vector thành tọa độ hay vector khác [21]

Các phép biến đổi thường gặp

Phép biến đổi tuyến tính- Linear transformation

Phép tỉ lệ - Scale: Thay đổi kích thước ảnh theo tỉ lệ của từng trục:

𝑥′ = 𝑎𝑥 𝑦′ = 𝑏𝑦

Ma trận kết hợp a, b có thể tìm được khi nhân ma trận tỉ lệ M có kích thước 2×2 cho ma trận tọa độ điểm ảnh có kích thước 2×1

[𝑦𝑥′′] = 𝑀 [𝑦𝑥] = [0 𝑏𝑎 0] [𝑦𝑥] (2.15) Phép xoay – rotation: Xét một điểm 𝑥 trên ảnh làm đại diện, xoay 𝑥 một góc

𝜃 – góc tính từ tọa độ 𝑥 ban đầu đến 𝑥′ sau khi đã xoay

𝑥′= 𝑥 cos 𝜃 − 𝑦 sin 𝜃 𝑦′ = 𝑥 sin 𝜃 + 𝑦 cos 𝜃

Tương tự tìm được ma trận M:

[𝑥𝑦′′] = 𝑀 [𝑦𝑥] = [sin 𝜃 cos 𝜃cos 𝜃 −sin 𝜃] [𝑥𝑦] (2.16)

Phép trượt nghiêng – Shear: tương tự phép tỉ lệ thì phép trượt nghiêng có thể hiểu là thay đổi độ dài theo đường chéo:

40

𝑥′ = 𝑥 + 𝑎𝑦 𝑦′ = 𝑏𝑥 + 𝑦

Ta tìm được ma trận M:

[𝑥𝑦′′] = 𝑀 [𝑦𝑥] = [1 𝑎𝑏 1] [𝑥𝑦] (2.17)

Ngoài ra còn có các phép biến đổi lật ảnh theo trục Ox, lật ảnh theo trục Oy, … Tổng quát công thức chung:

𝑋′ là điểm ảnh sau khi biến đổi, có tọa độ (𝑥′, 𝑦′) 𝑋 là điểm ảnh được biến đổi, có tọa độ (x, y)

p là tham số - thường là ma trận 2×2 ký hiệu M

f là phép biến đổi.

𝑋′ = 𝑓(𝑋; 𝑝) → [𝑥𝑦′′] = 𝑀 [𝑥𝑦] (2.18)

Một số tính chất của phép biến đổi tuyến tính: • Giữ nguyên gốc tọa độ

• Đường thẳng ánh xạ thành đường thẳng • Bảo toàn tính song song

• Tỉ lệ được giữ nguyên • Bảo toàn tổ hợp tuyến tính.

Phép tịnh tiến – Translation

Đối với phép biến đổi tịnh tiến, thay vì biể diễn mặt phẳng 2 chiều ta chiếu sang không gian 3 chiều bằng cách thêm 1 vào tọa độ (x, y) để hệ tọa độ đồng nhất (x, y, 1), hệ số này sẽ độc lập với x, y.

Hệ tọa độ đồng nhất được xác định bởi tỉ lệ, ta có thể hình dung rằng khi dịch chuyển một vật lại gần hoặc ra xa tầm mắt sẽ làm cho kích thước của vật thay đổi, tương đương với khoảng cách từ mắt đến vật thay đổi.

[𝑥𝑦] => [𝑥𝑦

1] ≝ [𝑎𝑥𝑎𝑦

𝑎 ] (2.19)

Với hệ tọa độ đồng nhất, tìm được một ma trận 3×3 thoản mãn phép tịnh tiến sau: (adsbygoogle = window.adsbygoogle || []).push({});

[𝑦′𝑥′

1] = 𝑀 [𝑥𝑦

1] = [1 0 𝑡𝑥0 1 𝑡𝑦

0 0 1] [𝑦𝑥

41 • Phép biến đổi Euclidean

Eucidean = Translation + Rotation

[sin 𝜃 cos 𝜃 𝑡𝑦cos 𝜃 −sin 𝜃 𝑡𝑥

0 0 1 ] (2.21)

Phép đồng dạng – Similarity transformation

Phép đồng dạng là sự kết hợp giữa Euclidean và tỉ lệ đều – uniform scale. Ma trận biến đổi dễ dàng tìm được bằng cách lấy ma trận biến đổi của Euclidean, rồi lấy các phần tử trong ma trận vừa được mà có liên quan đến phép tỉ lệ để nhân với tỉ lệ s:

Similarity = Rotation + Translation + Uniform Scale [𝑠 cos 𝜃 𝑠(− sin 𝜃) 𝑡𝑥𝑠 sin 𝜃 𝑠 cos 𝜃 𝑡𝑦

0 0 1 ] (2.22)

• Biến đổi Affine – Affine transformation

Phép biến đổi Affine là sự kết hợp giữa phép đồng dạng và phép trượt nghiêng. Affine = Rotation + Translation + Unform Scale + Shear

[𝑠 cos 𝜃−𝑏𝑠 sin 𝜃 −𝑠 sin 𝜃+𝑎𝑠 cos 𝜃 𝑡𝑥𝑠 sin 𝜃+𝑏𝑠 cos 𝜃 𝑠 cos 𝜃+𝑎𝑠 sin 𝜃 𝑡𝑦

0 0 1 ] (2.23)

Các tính chất của phép biến đổi Affine: • Gốc tọa độ có thể thay đổi

• Đường thẳng ánh xạ thành đường thẳng • Bảo toàn tính song song

• Tỉ lệ được giữ nguyên

• Bảo toàn tổ hợp biến đổi chính nó (tổ hợp các phép biến đổi Affine cũng là Affine)

2.9 Các phương pháp đánh giá 2.9.1 Intersection Over Union

Intersection over Union (IoU) là thước đo dựa trên chỉ số Jaccard để đánh giá sự chồng chéo giữa hai bounding box. Nó đòi hỏi một bounding box thực sự 𝐵𝑔𝑡 và một bounding box dự đoán 𝐵𝑝. Bằng cách áp dụng IoU có thể biết liệu phát hiện có đúng

42 (True Positive) hay không (False Positive). IoU được đưa ra bởi khu vực chồng chéo giữa bounding box dự đoán và bounding box thực sự chia cho khu vực kết hợp giữa chúng:

𝐼𝑜𝑈 = 𝑎𝑟𝑒𝑎(𝐵𝑝∩𝐵𝑔𝑡)

𝑎𝑟𝑒𝑎(𝐵𝑝∪𝐵𝑔𝑡) (2.24)

Hình 2.47 minh họa IoU giữa bounding box thực sự (màu xanh lá cây) và bounding box được phát hiện (màu đỏ).

Hình 2.47 Intersection over Union

2.9.2 Loss và Accuracy

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 (adsbygoogle = window.adsbygoogle || []).push({});

𝐴𝑐𝑐𝑢𝑟𝑎𝑐𝑦 = 𝑛

𝑁 (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 (adsbygoogle = window.adsbygoogle || []).push({});

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: (adsbygoogle = window.adsbygoogle || []).push({});

• 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 (adsbygoogle = window.adsbygoogle || []).push({});

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 (adsbygoogle = window.adsbygoogle || []).push({});

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 (adsbygoogle = window.adsbygoogle || []).push({});

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

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 51)