TOM TAT KHÓA LUẬN
3.3.2. Áp dụng PCA vào thuật toán LMTrP
Sau khi thực hiện trích xuất khối và xây dựng các biểu đồ, bước tiếp theo là áp dụng phương pháp phân tích thành phần chính hạt nhân (Kernel PCA) nhằm giảm số chiều của dữ liệu. Mục đích của việc giảm chiều là để nâng cao hiệu suất tính toán và tiết kiệm bộ nhớ cho hệ thống. Kết quả cuối cùng là vector đặc trưng của lòng bàn
tay ở hình 32
K-PCA decomposition - first 15 comp
0 0
20 20
60 60
80
80
Hình 32. Vector đặc trưng sau khi sử dụng K-PCA
3.4. Mô hình máy học dé phân loại
Có rất nhiều mô hình máy học có thé được áp dung trong đề tài lần này, tuy nhiên đề đạt được hiệu suất tốt nhất trên Kit Raspberry Pi, những model thuộc trường deep learning sẽ không được sử dụng. Những model này có một lượng thông số không
lồ, yêu cầu cấu hình tương đối cao dé triển khai, với việc Raspberry Pi có một cấu hình khiêm tốn thì việc chạy các model này là điều rất khó khăn, có một giải pháp
khác là Jetson Nano với lõi GPU CUDA của Nvidia tuy nhiên bộ Kit này có giá thành rât cao, đi ngoài mục tiêu của khóa luận. Tuy vậy nhóm em muôn nêu lên điêu này
38
dé có thé phát triển ở trong tương lai với các bộ Kit khác mạnh hơn. Quay lại dé tài thì mô hình máy học được sử dụng là SVM. Đây là một mô hình không yêu cầu tài nguyên lớn nhưng nó có hiệu quả hơn đối với dữ liệu nhiều chiều. Mục đích của SVM
là tạo ra một hyper-plane như hình 33, nó là đường để phân chia các lớp được gán
nhãn trước đó với nhau.
Ở hình trên, có một thuật ngữ mới là "margin". Margin đề cập đến khoảng cách giữa các lớp dit liệu khi được biểu diễn trong không gian nhiều chiều. Margin càng rộng thì khả năng phân lớp tốt hơn do ranh giới giữa các lớp được phân định rõ ràng. Mục tiêu của SVM - Support Vector Machine là tìm ra siêu phẳng phân chia tối ưu sao cho margin đạt giá trị lớn nhất. Margin được tính băng khoảng cách ngắn nhất từ một điểm dữ liệu đến siêu phăng phân lớp.
Trong không gian hai chiều, khoảng cách từ một điểm có toa độ (xạ, Vo) đến đường thắng có phương trình w,x + w,y + b = 0 được tinh bằng công thức sau:
[|W1xo+ W;yo +b|
Jon w2? ®
39
Trong không gian ba chiều, với một điểm có toa độ (xạ, Vo, Zo) và mặt phắng có phương trình w¡x + wy + w3z + b = 0. Khoảng cách từ điểm đó tới mặt phang
được xác định bởi công thức sau:
|W1xo+ Wayo+ WaZọ +b|
Ww2+ W22+ w32
Trong không gian nhiều: khoảng cách từ một điểm (vector) có toạ độ Xo tới siêu
(24)
phẳng (hyperplane) co phương trình w7x + b = 0 xác định bởi công thức sau:
d= |wTxo+b|
Ilwll2
Với ||w||; = | # ạwệ được gọi là chuẩn hóa 2.
Với bài toán phân loại 2 lớp -1 và 1, khoảng cách từ vectơ hỗ trợ đến siêu phẳng
(25)
phân chia được xác định như sau:
d= 1
Ilwlle (26)
Tu đó margin cua bai toán được xác định băng: là: 2
Hình 34. Margin trong bài toán có hai lớp dữ liệu
40
Tuy nhiên trong thực tế dữ liệu hiếm khi tách biệt hoàn toàn thành các lớp. Nếu ép buộc SVM phải tạo ra siêu phẳng phân lớp quá chặt chẽ, không cho phép sai lệch, sẽ dẫn đến siêu phang quá hẹp, làm mat tính tổng quát của mô hình và gây ra hiện tượng overfit trên tập huấn luyện. Vì vậy, có thê nới lỏng bằng cách mở rộng margin, chấp nhận một số điểm bị phân loại sai. Đây được là phương pháp sort margin. Sự cân bằng giữa margin và sự phân loại sai được quyết định bởi một thông
số gọi là C (hay còn được gọi là tham số chính quy).
Vì mô hình SVM sử dụng siêu phang dé phân lớp, nên nó sẽ gặp khó khăn trong các bài toán phi tuyến. Dé khắc phục van dé này, một phương pháp được áp dụng là sử dụng hàm kernel dé ánh xa dữ liệu lên không gian chiều cao hơn, từ đó có thể phân lớp tuyến tính một cách dễ dàng. Khi làm việc người ta thường chọn một
hàm Kernel thông dụng sau:
Bang 1. Kernel funtion và các bộ phân loại mà chúng được định nghĩa
Kenel Function Bộ phân loại
K (x,x;) = exp (—||x — x; ||?) Gaussian RBF
K (x, x) = (xTx¡ + 1)# Polynomial
K (x, x;) = tanh(xTx¡T— 6)° Multi — Layer Perceptron
3.5. Huấn luyện mô hình máy hoc
Trong quá trình huấn luyện mô hình SVM có 3 thông số quan trọng cần làm rõ
đó là:
— _C: tham số đánh giá sự quan trọng giữa việc đạt được một phân loại chính
xác và việc giảm thiểu sai số dự báo. Càng cao thì mô hình càng nhạy cảm
với nhiễu, trong khi giá trị thấp hơn có thể dẫn đến việc mô hình bị
underfitting
41
— Gamma: Tham số xác định tam ảnh hưởng của một điểm dữ liệu đến phân
loại của các điểm khác. Khi gamma tăng, mô hình sẽ tập trung vào các điểm gần nó hơn, còn khi gamma thấp hơn, mô hình sẽ chú ý đến các điểm xa hơn
— Kernel function: Tham số quyét định loại kernel sẽ được sử dụng cho SVM Chúng ta có thé tìm ra các thông số tối ưu này bang cách sử dung thư viện Scikit
— learn dé tạo ra một luồng xử lý va sử dung Grid Search dé tìm ra các tham số tối ưu
cho một mô hình SVM. Quá trình này được gọi là "Hyperparameter Tuning". Các
thông số mà nhóm em lựa chọn trong quá trình "Hyperparameter Tuning" là:
— C: [0.1,1, 10, 100, 1000]
— Gamma: [0.1,0.01,0.001, 0.0001,1]
Tiếp theo nhóm em chọn ra 2 trong số điểm đữ liệu của các đối tượng sau đó
mô phỏng sự phân bồ dữ liệu trên biéu đồ 2D như hình 35
T T
T T
—0.1 0.0 8.1 0.2 0.3
Principal Component 1
Hình 35. Dữ liệu long bàn tay xét trong không gian hai chiều
Dé dang dé nhận ra là dữ liệu của các lòng bàn tay không tuyến tính vì sự phân
bố của chúng quá phức tạp. Chúng vì vậy nhóm em dùng thêm kernel function để tối
42
ưu độ tin cậy của mô hình. Ở đây nhóm em sẽ chọn 3 kernel function phổ biến là:
TbỂ, 'sigmoid', va ‘linear’.
Quá trình về các bước hoạt động của quá trình Hyperparameter Tunning được biểu diễn thông qua hình 36
Bắt đầu
INPUT: Các thông số C, gamma, kernel
cho việc training
Khởi tạo không gian Grid search Model SVM đã được tối ưu
Trường hợp dau tiên
Đánh giá hiệu suốt của một trường hợp cụ thể
Re-train lại SVM với bộ thông số tốt
nhất tìm được ở trên
Trường hợp kế tiếp
Sai Đã thử hết các trường hợp? Đúng
Hình 36. Các bước của quá trình Hyperparameter Tunning cho mô hình SVM
3.6. Multi-Threading
Có thé hình dung các bước thực hiện của bài toán nhận diện lòng bàn tay như sau:
Phát hiện có vật thé va bật camera —> Nhận ảnh đầu vào — Phát hiện lòng ban tay > Trích xuất đặc trưng > Dự doán kết quả —> Sử dụng kết qua dé điều khiển cửa >
Quay lại màn hình chờ.
43
Có thé thấy, dé dự đoán được đữ liệu lòng bàn tay là của ai sẽ trải qua khá
nhiều bước và các bước này sẽ phải thực hiện một cách tuần tự và phức tạp, dé thực hiện bước tiếp theo thì cần bước trước đó hoàn thành dẫn đến độ trễ tăng lên và khó
có thê đạt được yêu cầu real-time của bài toán. Đề giải quyết vấn đề trên, nhóm em
đã tận dụng khả năng Multi-Threading dé tối ưu hóa khả năng xử lý. Multi-Threading
là một kỹ thuật trong lập trình cho phép các tác vụ được thực thi đồng thời trên nhiều
luồng (threads) riêng biét . Mỗi luồng là một đơn vị xử lý độc lập trong một chương
trình, có thé thực hiện mà không ảnh hưởng đến các luồng khác.
Một vài ưu điểm của Multi-Threading:
— Multi-threading không chặn các yêu cầu tương tác của người dùng do các
luồng hoạt động độc lập, cho phép thực hiện nhiều tác vụ cùng lúc.
— Các luéng có thé chia sẻ tài nguyên với nhau nhưng vẫn độc lập về mặt hoạt
động và chức năng.
— Khi một luồng gặp ngoại lệ, các luồng khác không bị ảnh hưởng nhờ tính độc
lập.
— Tiết kiệm thời gian xử lý do cho phép xử lý đồng thời nhiều tác vụ, ví dụ một
luồng hiển thị giao diện, các luồng khác xử lý tính toán.
Tuy nhiên Multi-thread vẫn còn ton tại một số hạn chế nhất định như:
— Sử dụng quá nhiều luồng dẫn tới khó khăn trong việc đồng bộ hóa và xử lý
các van đề liên quan giữa chúng. Do đó, cần xác định số lượng luồng hợp lý,
phù hợp với từng ứng dụng.
— Viéc lưu trữ và quản lý nhiều luồng làm gia tăng sử dụng bộ nhớ và tài nguyên
hệ thống.
— Có nguy cơ mat kiểm soát các luồng, dẫn tới tình trạng có luồng chết không
hoạt động nhưng vẫn chiếm dụng tài nguyên.
Từ những ưu điểm và nhược điểm kể trên, xét trong trường hợp dé tài này, nhóm em
sẽ tận dụng các Thread khác nhau dé trao đôi dữ liệu. Thay vì phải dồn hết mọi thứ
vào trong 1 Thread chính thi sẽ chia ra làm 1 Main-Thread và 5 Thread nhỏ như sau:
44
Quá trình nhận diện lòng bàn tay:
— Thread lấy hình anh từ Camera (Thread 1: Get Image From camera).
— Thread còn lại dành cho việc dự đoán của mô hình máy hoc (Thread 2:
Predicting Image).
— Thread sử dụng kết quả dự đoán dé đóng/mở cửa. (Thread 3: Control door).
— Và một main thread cho việc xử ly tác vụ trên GUI.
Quá trình lấy mẫu trực tiếp từ người dùng
— Thread lay hình ảnh từ camera (Thread 1: Get Image From camera).
— Thread thém mau mdi (Thread 4: Add new).
— Thread training dữ liệu (Thread 5: Training).
— Và một main thread cho việc xử lý tác vụ trên GUI.
Vì dùng chung không gian bộ nhớ nên việc giao tiếp giữa các Thread trở nên dễ dàng hon bao giờ hết, chúng có thé đùng chung biến, giao tiếp với nhau. Thread 1 sẽ chỉ đảm nhiệm nhiệm vụ lấy hình ảnh từ camera, nó không làm bắt cứ xử lý gì cho nên
sẽ luôn đảm bảo được hình ảnh đầu vào là mới nhất (khi hình ảnh mới được đưa vảo,
nó sẽ thay thế hình ảnh trước đó). Tiếp theo sẽ sử dung Thread 2 dé tiến hành nhận hình ảnh của Thread 1 dé dự đoán. Sau khi đã có kết quả dự đoán từ Thread 2, Thread
3 sẽ sử dụng kết qua dự đoán này đề điều khiên việc đóng mở cửa. Kết qua là, việc
dự đoán sẽ diễn ra một cách liên tục, không cần phải đợi lây hình ảnh rồi mới có thể
dự đoán, GUI cũng sẽ được hiển thị mượt mà hơn. Hình 37 thể hiện sự liên kết giữa
các Theard
45
THREAD GET
IMAGE
THREAD PROCESSING AND VERIFY IMAGE
MAIN THREAD THREAD ADD MẪU MỚI
THREAD GET
IMAGE
THREAD TRAINING
HIEN THI KET QUA
Hình 37. Sơ đồ liên kết giữa các thread
Main Thread sẽ chi đảm nhận việc hiền thị giao diện người dùng bởi vì nếu như
dé mọi việc làm một cách tuần tự thì giao diện người dùng sẽ bị tạm dừng (treo giao diện) cho đến khi mọi việc hoàn thành xong thì nó mới trở về trạng thái bình thường. Nguyên nhân bởi vì thực chất giao diện là một vòng lặp và hệ thống sẽ vẽ lặp việc vẽ giao diện liên tục để tạo nên chuyền động. Cho nên trong đa số các ứng dụng, Main Thread chỉ dùng cho giao diện, các công việc liên quan sẽ được chuyên qua các Thread độc lập khác đề giao diện không bị ảnh hưởng.
3.7. Phần cứng hệ thống
Khi chúng ta đã có mô hình máy học, việc tiép theo là chúng ta sẽ nhúng nó xuông máy tính nhúng và xây dựng một hệ thông hoàn thiện bao gôm các ngoại vi khác như camera và cảm biên siêu âm. Camera sẽ bật đê quá trình nhận diện được bắt đâu khi phát hiện có người ở gân băng cảm biên siêu âm.
46
Memory ROM RAM
CPU BUS
Input
Camera Ultrasonic
Sensor UI Screen
Hình 38. Sơ đồ kết nối phan cứng của hệ thống
3.7.1. Raspberry Pi 4
Pre-soldered
e LPDDR4 SDRAM
40-pin GPIO
ô 3 variants
eœ1GB, 2GB and 4GB
PoE (Power over Ethernet) Header pins
True Gigabit
e Broadcom BCM2711,
Ethernet Port
Quad-Core Cortex-A72, 64-bit, 15 GHz, 28nm
e VideoCore VỊ GPU
e Shielded
@ 802.11 b/g/n/ac dual band,
2.4GHz & SGHz WiFi
e Bluetooth 5.0 & BLE
PCB Antenna 2x USB 2.0 Ports
Audio + Video
(Pisploy 000icei Composite 3.5mm Jack
MIPI CS! Port, camera interface
HDMI1 micro HDMI Port
HDMI0 micro HDMI Port .——
S rt Dual
USB Type C, for Power, “San
upto 3A or 15W
microSD card socket (bottom) RUN & Global EN pins
Activity Indicator Green LED
Power (5V) Indicator 2.5mm diameter Mounting Hole
Red LED
Hinh 39. Raspberry Pi 4 model B
47
Raspberry Pi 4 là một máy tính nhúng có kích thước nhỏ gọn do Raspberry Pi
Foundation phát triển tại Anh. Mục đích ban đầu là nhằm thúc đây giáo dục khoa học máy tính cơ bản. Với kiến trúc ARM, Raspberry Pi tương thích nhiều hệ điều hành
và được ứng dụng rộng rãi trong các hệ thống nhúng, tự động hóa, nghiên cứu. Ưu điểm nổi bật của nó là giá thành rẻ, kích thước nhỏ gọn, có thé mang di đâu đó như một máy tính xách tay. Cấu hình chung của Raspberry Pi 4:
Phần cứng:
— Quadcore 64-bit ARM-Cortex A72 chạy ở tốc độ 1.5GHz
— Tùy chọn RAM khác nhau LPDDR4
— Giải mã phần cứng H.265 (HEVC) lên đến 4Kp60
— Giải mã phần cứng H.264 (lên đến 1080p60)
— Đồ họa 3D VideoCore VI — Hỗ trợ đầu ra hién thị HDMI kép lên đến 4Kp60 Giao tiếp:
— Mạng LAN wireless 802.11 b/g/n/ac — Blutetooth 5.0 với BLE — IxSDCard
— Công 2xmicro-HDMI hỗ trợ màn hình kép lên đến độ phân giải 4Kp60
— 2x USB2ports
— 2x USB3ports
— Công Ethernet 1xGigabit (hỗ trợ PoE với PoE HAT bồ sung)
— Cổng camera IxRaspberry Pi (MIPI CSI 2 làn)
— Công hiện thi 1xRaspberry Pi (MIPI DSI 2 làn)
Hỗ trợ GPIO:
48
3V3 power o o 5V power
GPIO 2 (SDA) o o 5V power GPIO 3 (SCL) o © Ground GPIO 4 (GPCLKO) o o GPIO 14(TXD)
Ground o o GPIO 15 (RXD) GPIO 17 o o_ GPIO 18 (PCM_CLK) GPIO 27 © © Ground
GPIO 22 o o GPIO 23 3V3 power e so GPIO 24 GPIO 10 (MOS!) o ° Ground GPIO 9 (MISO) o so GPIO 25 GPIO 11 (SCLK) o o GPIO 8 (CEO)
Ground o o GPIO7 (CEI) GPIO 0 (ID_SD) o © GPIO1 (ID_SC)
GPIO 5 o o Ground GPIO6 © © GPIO 12(PWM0) GPIO 13 (PWM]) o o Ground
GPIO 19 (PCM_FS) o o_GPIO 16
GPIO 26 o g © GPIO 20 (PCM_DIN) Ground o © GPIO 21 (PCM_DOUT)
Hinh 40. So d6 chan GPIO cua Raspberry Pi 4
— Hỗ tro 6x UART
— Hỗ tro 6x I2C
— Hỗ trợ 5x SPI
— 1x SDIO interface
— IxPCM
— Hỗ trợ 2x PWM channels
— Hỗ trợ 3x GPCLK outputs
3.7.2. Raspberry Pi Camera
Trong đồ án lần này, nhóm em sử dung Module Camera Raspberry Pi V2 8MP trong việc lay mẫu. Day là webcam 1080 với ống kính Carl Zeiss va micro stereo tích hợp giảm tiếng 6n tự động giúp quay video sắc nét, cân bằng hình ảnh tốt, âm thanh
thu trong và rõ.
49
Hình 3.1. Module Raspberry Camera
Thông số kỹ thuật:
— Sử dụng ống kính cố định, lay nét bang tay thông qua chiết áp.
— Cảm biến 8 megapixel cho phép chụp ảnh 3280 x 2464 pixel.
— Hỗ trợ quay video độ phân giải 1080p30, 720p60 và 640x480p90.
— Kích thước nhỏ gọn 25mm x 23mm x 9mm, trọng lượng chỉ hon 3g.
— Kết nối với Raspberry Pi thông qua cáp dài 50cm đi kèm.
— Tương thích với Raspbian phiên bản mới nhất.
3.7.3. Màn hình cảm ứng 3.5-Inch 480x320 TFT
Đề hệ thống có thê chạy độc lập mà không cần sử dụng một thiết bị thứ ba như laptop, cũng như giúp hệ thống có khả năng hiển thị hoạt động của nó ra bên ngoài nhóm em quyết định sử dụng một màn hình rời cảm ứng. Tuy răng có kích thước tương đối nhỏ cũng như độ phần giải không quá cao nhưng với mục tiêu của đề tài là
xây dựng một hệ thống có chi phí thấp, nó có thê được coi là một lựa chọn tốt, đáp
ứng được các yêu câu trên.
50
Hình 41. Màn hình am ứng 3.5-Inch 480x320 TFT
Thông số kỹ thuật:
— Loại màn hình: TFT
— Bộ điều khiển: ICILI9486
— Công nghệ cảm ứng: Điện dung
— Bộ điều khiến cảm ứng: XPT2046
— Độ phân giải màn hình: 480 x 320 pixel
— Tần số làm mới: 50Hz
— Giao tiếp: SPL tốc độ đầu vào 125MHz
— Đèn nền: LED
— Dòng điện đèn nền: 120mA
— Nguồn cấp: 5V
3.7.4. Servo Motor SG90
Như đã đề cập ở trên mục tiêu của nhóm em là áp dụng đề tài cho các hệ thống nhà cửa, do đó nhóm em sé sử dụng việc nhận diện dé mở khóa cửa một cách tự động. Sau khi nghiên cứu và tìm hiểu, nhóm chúng em quyết định sử dụng động cơ servo
dé đóng và mở cửa. Ưu điểm lớn nhất của nó là có thé quay một góc bat kì góp phan
giúp dễ dàng định hình góc quay của cửa.
Thông số kỹ thuật:
51
— Khối lượng nhẹ, chỉ 9g
— Kích thước nhỏ gọn: 22,2 x 11,8 x 32 mm
— Mô men xoắn mạnh: 1,8kg/em
— Tốc độ: 60 độ trong 0,1 giây
— Điện áp hoạt động: 4,8V (khoảng 5V)
— Nhiệt độ hoạt động: 0 - 55 độ C
3.7.5. Cam biến hồng ngoại (IR Sensor)
IR Transmitter
IR Receiver
Hình 42. Nguyên lý hoạt động của cam biến hồng ngoại
Cảm biến hồng ngoại bao gồm một đèn LED hồng ngoại (IR LED) và photodiode. IR LED phát ra bức xạ hồng ngoại chiếu vào đối tượng, một phần bức
xạ này sẽ phản xạ trở lại và được photodiode thu nhận. Photodiode là thiết bị chuyên đổi tín hiệu quang hồng ngoại thành tín hiệu điện. Dựa trên cường độ tín hiệu đầu ra của photodiode, ta có thể xác định khoảng cách từ cảm biến tới vật thê.
3.7.6. Cảm biến khoảng cách HC-SR05
Như đã trình bày ở ban đầu Raspberry Pi có phần cứng tương đối hạn chế, nên cần tối ưu hóa các tác vụ không cần thiết dé đảm bảo hệ thống chạy ổn định, nhất là chế độ bật camera trong thời gian thực. Vì vậy, nhóm em quyết định cải tiến để hệ
52