Trong hình 2.26 phía bên trái là đầu vào của lớp chập ví dụ hình ảnh đầu vào. Bên phải là bộ lọc tích chập (convolution filter) c n được gọi là kernel hay mặt nạ tích chập chúng ta sẽ s dụng các thuật ngữ này thay thế cho nhau. Đây được gọi là tích chập 3x3 do hình dạng của bộ lọc. Khối xây dựng chính của CNN là lớp chập. Tích chập là một phép toán để hợp nhất hai bộ thông tin lại với nhau. Trong trường hợp này tích chập được áp dụng trên dữ liệu ngõ vào bằng bộ lọc tích chập để tạo ra một bản đồ đặc trưng như trong Hình 2.27. và Hình 2.28.
Hình 2.26. Ngõ vào và mặt nạ của CNN. (a) Ngõ vào 7x7 (b) Bộ lọc tích chập 3x3
Hình 2.27. Phép nhân tích chập của CNN
Hình 2.28. Kết quả của phép tích chập. (a) Bức ảnh ngõ vào (b) Feature map của ảnh sau khi tích chập
Công thức toán học của phép tích chập được biểu diễn trong công thức (2.3)
2 5
h כ
Trong đ : I là ngõ vào input
Chúng ta thực hiện thao tác tích chập bằng cách trượt bộ lọc này qua bức ảnh ngõ vào. Tại m i vị trí chúng tôi thực hiện phép nhân ma trận phần t và tính tổng kết quả Tổng này đi vào bản đồ đặc điểm (feature map). V ng màu đỏ nơi hoạt động tích chập diễn ra được gọi là trường tiếp nhận (Hình 2.27.). Do kích thước của bộ lọc là 3x3 nên trường tiếp nhận c ng là 3x3. Một vấn đề quan trọng trước khi chúng ta hình dung phép tích chập là gì. Chúng ta thực hiện nhiều phép nhân tích chập trên một ngõ vào m i ngõ vào s dụng một bộ lọc khác nhau và d n đến một bản đồ đặc điểm riêng biệt. Sau đ chúng ta xếp tất cả các bản đồ tính n ng này lại với nhau và điều đ tr thành ngõ ra cuối
c ng của lớp tích chập. Hay n i cách khác chiều sâu (depth) của ngõ ra bằng với số bộ lọc (fillter) và bằng với số bản đồ đặc điểm (feature map).
Trong Hình 2.29 nếu chúng ta s dụng 10 bộ lọc khác nhau chúng ta sẽ c 10 bản đồ đặc trưng c kích thước 32x32x1 và xếp chúng dọc theo chiều sâu sẽ cho chúng ta đầu ra cuối c ng của lớp chập. Thể tích của ngõ ra lớp chập 32x32x10 được hiện thị dưới dạng hộp lớn màu xanh phía bên phải. Lưu rằng chiều cao và rộng của bản đồ đặc điểm không thay đổi và v n là 32. Đ là do phần đệm (padding) mà chúng tôi sẽ giải thích phần sau. Trong hình 2.30. chúng ta c thể thấy được 2 bản đồ đặc điểm được xếp chồng lên nhau theo chiều sâu. Phép tích chập được thực hiện độc lập và kết quả là các bản đồ đặc điểm là rời rạc.
Hình 2.29. Thực hiện phép nhân tích chập ở ngõ vào
Hình 2.30. Phép tích chập cho ra 2 feature map ở 2 lớp độc lập 2.6.4. Phần đệm và mức trượt (Padding and Stride)
Sải bước (Stride) ch định mức độ chúng ta di chuyển bộ lọc tích chập m i bước Theo mặc định giá trị stride bằng 1. Chúng ta c thể t ng stride lên lớn hơn nếu chúng ta
muốn ít sự chồng chéo giữa các trường tiếp nhận. Điều này làm cho bản đồ đặc điểm nhỏ hơn do chúng ta đã bỏ qua các vị trí tiềm n ng (potential locations) trên ảnh. Theo hình 2.31. ta thấy bản đồ đặc trưng đã nhỏ hơn nếu ta chọn mức trượt (stride) bằng 2.
Hình 2.31. Kết quả của fearture map khi trượt mặt nạ 3x3 với mức trượt bằng 2 (a) Ảnh ngõ vào 7x7. (b) Bản đồ đặc điểm 3x3
Chúng ta thấy rằng kích thước của bản đồ đặc điểm nhỏ hơn đầu vào b i vì bộ lọc tích chập cần được chứa bên trong ngõ vào. Hình 2.32. cho thấy rằng nếu chúng ta muốn duy trì c ng một kích thước chúng ta c thể s dụng phần đệm (Padding) để bao quanh đầu ngõ vào bằng các số 0. Lúc trượt vào thì kích thước của feature map sẽ không đổi.
Hình 2.32. Thêm phần đệm 0 vào ngõ vào input
2.6.5. Lớp kích hoạt phi tuyến tính (Non-linearity Layers)
Mạng thần kinh của chúng ta sẽ hoạt động giống như một nhận thức duy nhất b i vì tổng của tất cả các lớp v n sẽ là một hàm tuyến tính c ngh a là đầu ra c thể được tính là sự kết hợp tuyến tính của các đầu ra. Sau m i lớp chập chúng ta thường c một lớp
phi tuyến tính. Lớp này c n được gọi là lớp kích hoạt vì chúng tôi s dụng một trong các chức n ng kích hoạt. Do nếu không c lớp kích hoạt (ReLU Sigmoid…) thì mạng đơn giản ch là kết hợp của các hàm tuyến tính như đã n i trên. Khi đ hàm hợp của nhiều hàm tuyến tính v n là hàm tuyến tính. Điều này khiến cho mạng chẳng khác gì một phép biến đổi tuyến tính cả. Trong khi đ ánh xạ giữa đầu vào tới đầu ra luôn là phi tuyến. T m lại cần d ng activation layer để c được một ánh xạ phi tuyến.
Trước đây các hàm phi tuyến như sigmoid và tan đã được s dụng nhưng h a ra hàm cho kết quả tốt nhất khi n i đến tốc độ huấn luyện của mạng thần kinh là hàm ch nh lưu (Rectifier function). Vì vậy lớp này thường được gọi là lớp ReLU n được d ng để loại bỏ tính tuyến tính bằng cách đặt các giá trị nhỏ hơn 0 thì sẽ bằng 0. Hàm ReLU được diễn tả là f(x) = max(0 x). Hình 2.33. cho thấy ứng dụng của n trong một Feature map. Trên hình ảnh thứ 2 của bản đồ đặc điểm các giá trị màu đen là giá trị âm và sau khi áp dụng chức của hàm ReLU các giá trị màu bị x a khỏi tấm ảnh.
Hình 2.33. Feature map sau khi qua lớp kích hoạt 2.6.6. Lớp tổng hợp (Pooling Layers)
Sau khi tích chập chúng ta cần thường thực hiện gộp để giảm kích thước. Điều này cho phép chúng tôi giảm số lượng tham số vừa rút ng n thời gian huấn luyện vừa chống vượt lố (overfiting). Lớp Pooling làm việc độc lập với từng Feature map giảm độ dài và độ rộng nhưng v n giữ nguyên độ sâu. Lớp Pooling phổ biến nhất là Max pooling tức là ch lấy giá trị lớn nhất trong c a sổ gộp. Trái với lớp tích chập lớp Pooling không hề c tham số. N trượt 1 c a số gộp qua đầu vào của n và ch lấy giá trị lớn nhất. Tương tư như lớp tích chập chúng ta c thể chọn kích thước c a sổ (kernel size) và sải bước (stride).
Hình 2.34. Hàm max pooling. (a) Hàm max pooling đang thực hiện
(b) Feature map của ảnh sau khi qua max pooling
Trong hình 2.34. chúng ta đã s dụng bộ lọc maxpooling c kích thước 2x2 để trượt trên ảnh kích thước 4x4 với sải bước bằng 2. Bộ lọc chọn số lớn nhất của phần hình ảnh mà n bao phủ. Bằng cách này chúng ta đã c 1 feature map nhỏ hơn chứa đầy đủ thông tin đủ cho mạng thần kinh c thể đưa ra quyết định chính xác.
Trong cấu trúc mạng CNN thông thường max pooling được chọn c kích thước 2x2 sải bước 2 và không c phần đệm.Trong khi lớp tích chập thì c kích thước 3x3 sải bước 1 với phần đệm để giữa nguyên kích thước feature map.
2.6.7.Lớp làm phẳng (Flattening Layers)
Đây là một lớp đơn giản được s dụng để chuẩn bị dữ liệu đầu vào cuối c ng. Thông thường các mạng thần kinh cổ điển nhận dữ liệu theo một chiều dưới dạng một mảng các giá trị lớp này s dụng dữ liệu được truyền từ lớp tích chập hoặc lớp max pooling và chuyển đổi làm phẳng các ma trận thành các mảng. Sau đ các giá trị này được s dụng làm đầu vào cho mạng nơ ron lớp cuối c ng. Hình 2.35. biểu diễn trực quan của quá trình làm phẳng.
Hình 2.35. Quá trình làm phẳng
2.6.8.Lớp kết nối đầy đủ (Fully-Connected Layer)
Lớp cuối c ng và là lớp thực hiện phân loại thực tế được gọi là lớp kết nối đầy đủ (Fully-Conntected Layer) được mô tả trong hình 2.36. Lớp này lấy đầu vào từ quá trình làm phẳng cấp dữ liệu và chuyển tiếp n qua mạng thần kinh cổ điển (Neural Network). Lúc này bài toán quay về huấn luyện mạng nơ ron cổ điển. Những gì chúng ta làm đ là cung cấp các tính n ng đặc điểm của vật thể cho mạng.
Hình 2.36. Lớp Fully- Connected 2.7. Model nhận dạng khuôn mặt
Nhờ vào mối quan hệ chặt chẽ của nhận dạng đối tượng với phân tích video và hình ảnh n đã thu hút rất nhiều sự chú của các nhà nghiên cứu trong những n m gần đây. Phương pháp nhận dạng đối tượng thông thường được xây dựng dựa trên các tính n ng thủ công và cấu trúc huấn luyện đơn giản. Với sự phát triển nhanh ch ng của deep learning chúng ta ngày càng c thêm những công cụ mạnh mẽ c thể học các tính n ng ngữ ngh a cao cấp và đặc điểm sâu hơn nhằm giải quyết các vấn đề c n tồn đọng trong cấu trúc huấn luyện truyền thống. Trong m i model nhận dạng đối tượng sẽ c 2 phần là feature extractor và detection framework. Thứ nhất là feature extractor d ng để trích xuất các đặc điểm của object n được hiểu là cấu trúc của mạng CNN. Thứ hai là detection framewok là phần nhận dạng đối tượng (detector).
2.7.1. MobileNet V1 (2017) (Extractor)
Howard (2017) đã phát triển một nh m các mô hình nhỏ được gọi là MobileNets [3] dành cho các ứng dụng tầm nhìn được nhúng trên điện thoại. Họ đã xây dựng mô hình đ với mục đích đánh đổi độ chính xác thành tốc độ huấn luyện để ph hợp với mục đích khác nhau. Kiến trúc của MobileNets dựa trên cách tính tích chập c tên là “the depth separable convolution” để giảm kích thước mô hình đồng thời c ng giảm độ phức tạp. Do đ mô hình sẽ hữu ích khi chạy các ứng dụng trên di động và các thiết bị nhúng.
Đầu tiên tích chập cổ điển với bộ lọc c kích thước cố định (ví dụ 3x3) được áp dụng với tất cả ngõ vào và tạo ra một số Feature Map đ là tích chập theo chiều sâu (the depthwise convolution). Sau đ kết hợp với các bộ lọc 1x1 được s dụng trên m i Feature Map đ là tích chập điểm. Sau khi qua lớp chập điểm giảm được một lượng đáng kể các thông số. “ Depthwise separable convolution ” [4] hay tích chập phân tách theo chiều sâu là một tích chập theo chiều sâu (depthwise convolution) theo sau b i một pointwise convolution (tích chập điểm) được mô tả trong hình 2.37.
Hình 2.37. Cấu trúc của Depthwise separable convolution
(https: dlapplications.github.io 2018-07-06-CNN Depthwise convolution: là một channel-wise
n channels ngõ vào thì chúng ta c ng c
chúng ta c
Ở hì nh 2.37. trê n ta c 5 cha nne ls ( để
thứ 2 là phân tách 5 khối hộp ra thành ma trận [m x n]
convolution c kích thước [n x n] bước thứ 4 là kết quả sau khi tích chập thứ 5 là ráp 5 kết quả của tích chập lại ) do đ chúng ta sẽ c
convolution tương ứng với 5 channels trên.
Pointwise convolution: đơn giản là một tích chập c
Với M là số lượng input channel N là số lượng output channel Dk là kernel size Df là feature map size (với dataset ImageNet thì input c kích thước là 224 do đ feature map ban đầu c Df = 224) chúng ta c thể tính được:
Chi phí tính toán của Depthwise convolution là :
Chi phí tính toán của
(2.5)
Tổng chi phí tính toán của Depthwise Separable Convolution là:
Nếu chúng ta không s dụng Depthwise Separable Convolution mà s dụng phép tích chập như bình thường chi phí tính toán là:
Do đ chi phí tính
Giả s chúng ta
nhân d n đến giảm tính toán đi rất Chúng ta thấy rằng mô hình c
Lớp 1: Convolution layer với stride bằng 2 Lớp 2: Depthwise layer [3x3]
Lớp 3: Pointwise layer [1x1]
Lớp 4: Depthwise layer với stride bằng 2 (khác với lớp 2 c stride bằng 1) Lớp 5: Pointwise layer [1x1]
So sánh kết quả giữa Depthwise Separable Convolution và phép tích chập tiêu chuẩn trên một tập dữ liệu ImageNet Dataset (bảng 2.6.). MobileNet giảm 1% độ chính xác nhưng số lượng tham số của mô hình và số lượng phép tính toán giảm đi rất rất nhiều gần xấp x 90%.
Bảng 2.6. So sánh kết quả giữa Depthwise Separable Convolution và phép tích chập
Model Conv MobileNet
MobileNet Cấu trúc của MobileNet-v1 được thể hiện hình 2.33.
Hình 2.38. Cấu trúc của MobileNet- v1 2.7.2. Single Shot Detector (SSD) (Detector)
Tương tự với mô hình YOLO W. Liu (2016) đã phát triển ra model SSD [5] để dự đoán tất cả bounding box trong 1 lần duy nhất và xác suất của đối tượng với cấu trúc mạng CNN end-to-end. Mô hình lấy ảnh ngõ vào đi qua nhiều lớp tích chập với kích thước bộ lọc khác nhau (10x10 5x5 và 3x3).
Các feature map từ các lớp tích chập những vị trí khác nhau trong mạng được lấy ra s dụng để dự đoán các bounding box. Chúng được x l b i các lớp chập cụ thể với bộ lọc 3x3 được gọi là lớp bổ sung đặc tính (extra feature layer) để tạo ra một bộ các bounding box giống với lại các anchor box của Fast R-CNN. Hình 2.39 thể hiện cấu trúc của SSD.
Hình 2.39. Cấu trúc của model SSD
Tương tự như anchor box các box đều c 4 tham số: tọa độ trung điểm chiều dài và chiều rộng. Đồng thời n c n tạo ra một véc tơ xác suất tương ứng với độ tin cậy qua từng lớp của đối tượng. Thuật toán Non-Maximum Suppression c ng được s dụng tại điểm kết thúc của model SSD để ch giữa lại các model c liên quan tức là các box của c ng 1 đối tượng sẽ gộp lại thành 1 box duy nhất.
Ngoài ra thuật toán Hard Negative Mining (HNM) c ng được s dụng do c rất nhiều box bị âm v n được dựa đoán. N bao gồm việc ch chọn các phần phụ của box trong suốt quá trình huấn luyện. Các box này được s p xếp theo độ tin cậy và phần trên đ nh sẽ được chọn t y thuộc vào t lệ giữa box dương và âm nhiều nhất là 1 3.
W. Liu (2016) phân biệt SSD300 và SSD512 là SSD300 c thêm lớp chập để cải thiện hiệu suất dự đoán. Các model SSD tốt nhất được huấn luyện với các tập dữ liệu PASCAL VOC và COCO 2015 nhằm t ng cường dữ liệu. N đã đạt được 83.2% mAP trên PASCAL VOC 2007 và 82.2% trên PASCAL VOC 2012. Trong cuộc thi của COCO 2015 n đã đạt được 48.5% mAP cho IoU = 0.5 30.3% mAP cho IoU = 0.75 và 31.5% mAP cho số liệu chính thức. Hình 2.40. thể hiện framework của SSD.
Hình 2.40. Framework của SSD
CHƯƠNG 3: THIẾT KẾ MÔ HÌNH ROBOT
3.1. Thiết kế phần cứng
3.3.1. Thiết kế mô phỏng phần cứng
Nh m thiết kế cánh tay máy bằng phần mềm SolidWorks 2015. Vật liệu được s dụng là mica đảm bảo độ cứng cáp và tính thẩm mỹ. Các chi tiết được kết nối bằng ốc vít bulông và bạc đạn thuận tiện cho việc l p ráp s a chữa.
Hình 3.1: Mô hình Robot 4 chân trên SolidWorks 2015 3.3.2. Tiến hành thi công
Sau khoảng thời gian nghiên cứu và thiết kế. Nh m đã hoàn tất công việc thi công robot. Dưới đây là một số hình ảnh robot khi hoàn thành :
Hình 3.2: Mô hình Robot 4 chân
Bảng 3.1 Thông số kỹ thuật của Module Bluetooth HC-05
Mô tả
Chiều dài chân Chiều dài cẳng chân Khớp xoay
Thân
3.2.Lựa chọn thiết bị
3.2.1. Bộ điều khiển board arduino mega 2560
Arduino Mega 2560 ( hình 3.4 ) là một vi điều khiển dựa trên nền ATmega 2560. C 54 đầu vào đầu ra số ( trong đ c 15 đầu được s dụng như đầu ra PWM ) 16
analog 4 UARTs ( cổng nối tiếp phần cứng ) một 16 MHz dao động tinh thể
USB một jack c m điện một đầu ICSP và một nút reset. Chứa tất cả mọi thứ cần thiết để h trợ các vi điều khiển ch cần kết nối với máy tính bằng cáp USB hoặc s dụng với
một bộ chuyển đổi AC -to-DC hay pin. Arduino Mega tương thích với hầu hết các shield được thiết kế cho Arduino Duemilanove hoặc Diecimila.
Hình 3.2: Board Arduino Mega 2560
Bảng 3.2 Tóm tắt thông số Arduino Mega 2560
Microcontroller Operating Voltage
Input Voltage (recommended) Input Voltage (limits)
Digital I O Pins Analog Input Pins DC Current per I O Pin DC Current for 3.3V Pin Flash Memory
SRAM EEPROM Clock Speed
3 6
3.2.2. Shield Mega Sensor V2
Arduino Mega Sensor Shiled c với cổng COM và giao tiếp I2C c
một cách đơn giản tại mọi thời điểm. Shield Mega Sensor c nguồn cấp riêng biệt từ đ dễ dàng điều khiển các thiết bị như RC Servo cảm biến các thiết bị giao tiếp ngoại vi như Bluetooth Wifi…