Tầng thứ ba là tầng kết nối đầy đủ. Tầng này giống như mạng nơ ron truyền thống: các nơ ron ở tầng trước sẽ kết nối với một nơ ron ở tầng tiếp theo và tầng cuối cùng là đầu ra. Để có thể đưa hình ảnh từ những tầng trước vào, dữ liệu phải dàn phẳng ra thành một véc tơ nhiều chiều. Cuối cùng là sử dụng hàm Softmax để thực hiện phân loại đối tượng.
38
Hình 2.21. Tầng kết nối đầy đủ 2.5.6. Vấn đề đầu vào của mạng
Với cấu trúc mạng nơ ron tích chập chặt chẽ thì yêu cầu đầu vào mạng cũng phải phù hợp với cấu hình mạng. Mạng nơ ron tích chập có rất nhiều cấu hình mạng nhưng số lượng cấu hình mạng mô hình YOLO lại bị giới hạn. Hiện tại, YOLO đang hỗ trợ hai đầu vào chính là 416x416 và 608x608. Mỗi một đầu vào sẽ có một thiết kế các tầng riêng biệt phù hợp với cấu hình đầu vào. Vì thế các bức ảnh trước khi đi vào mô hình sẽ được qua bước tiền xử lý để chỉnh sửa độ tương phản, đưa tỷ lệ của bức ảnh hiện tại về tỷ lệ phù hợp với cấu hình mạng.
2.6. Nhiệm vụ các lớp Extra Layers
2.6.1. Đầu ra của mạng nơ ron tích chập
Với cấu trúc phức tạp của mạng nơ ron tích chập, thực hiện tính toán qua nhiều tầng lớp, đầu ra của mô hình là một yếu tố rất quan trọng cần được nguyên cứu. Theo trình bày các bước thực hiện xây dựng cấu trúc mạng ở trên, các bức ảnh được vào mô hình mạng, trải qua các tầng tích chập, tầng gộp, tầng kết nối đầy đủ và cuối cùng cho ra đầu ra là một vectơ bao gồm các thành phần như hình dưới đây:
39
Hình 2.22. Cấu trúc đầu ra của mạng CNN
Trong đó:
– 𝑝0 là xác xuất dự đoán vật thể xuất hiện trong Bounding Box.
– 𝑡𝑥, 𝑡𝑦, 𝑡𝑤, 𝑡ℎ giúp xác định Bounding Box. Trong đó 𝑡𝑥, 𝑡𝑦 lần lượt là tọa độ tâm Bounding Box và 𝑡𝑤, 𝑡ℎ lần lượt là chiều rộng và chiều cao của Bounding Box.
– 𝑝1, 𝑝2, … , 𝑝𝑐 lần lượt là vectơ phân phối xác xuất dự đoán của các Classes.
2.6.2. Dự đoán trên nhiều Feature maps
Sau khi đi qua các tầng tích chập thì kích thước ma trận giảm dần theo cấp số nhân là 2, cuối cùng ma trận đầu ra của thuật toán là được một Feature Map có kích thước tương đối nhỏ để dự báo vật thể trên từng ô của Feature Map.
Như đã đề cập ở trên, mô hình YOLO hiện tại chỉ hoạt động chính trên hai cấu hình đầu vào là 416x416 và 608x608. Với mỗi cấu hình đầu vào, Feature Map sẽ có kích thước khác nhau. Đối với đầu vào là 416x416 thì Feature Map có các kích thước là 13x13, 26x26, 52x52. Và đối đầu vào là 608x608 thì Feature Map có các kích thước là 19x19, 38x38, 72x72. Việc chia ra nhiều Feature Map với mỗi cấu hình có ý nghĩa đối với đầu ra của thuật toán. Với những Feature Map ban đầu có kích thước nhỏ giúp dự báo được các vật thể có kích thước lớn. Những Feature Map sau có kích thước lớn hơn trong khi sẽ giúp dự báo các vật thể kích thước nhỏ.[1]
40
2.6.3. Dự đoán Bounding Box
Việc dự đoán Bounding Box cho một vật thể, YOLO dựa vào hai dữ liệu chính là Anchor Box và Cell. Vì thế, để hiểu được nguyên tắc vận hành của dự doán chúng tôi sẽ đi sâu vào hai dữ liệu trên.
2.6.3.1. Khái niệm Cell và Archon Box
Cell chính là từng ô trên Feature Map. Trên mỗi một Cell của các Feature Map YOLO sẽ áp dụng ba Anchor Box với kích thước khác nhau lần lượt là Box 1, Box 2, Box 3 để dự đoán vật thể. Số lượng Anchor Box sử dụng trên mỗi Cell đều được chúng tôi cài đặt trong thuật toán.
Hình 2.24. Cấu trúc đầu ra mô hình YOLO
Trên đây là một cấu trúc đầu ra thuật toán YOLO trên một Cell. Hình ảnh gốc được là một Feature Map có kích thước 13x13, trên Cell này YOLO lựa chọn ba Anchor Box là Box 1, 2, 3 sao cho tâm các Anchor Box trùng cới Cell. Sau khi thực hiện dự đoán Bounding Box, YOLO sẽ được một đầu ra thuật toán là một vectơ “ghép” thông số của ba Bounding Box được lựa chọn như trên.[1]
Để tìm được Bounding Box cho vật thể, thuật toán YOLO sẽ cần các Anchor Box làm cơ sở ước lượng. Những Anchor Box này sẽ được xác định trước và bao quanh vật thể một cách tương đối chính xác. Sau này thuật toán hồi quy – Regresstion Bounding Box sẽ tinh chỉnh lại Anchor Box để tạo ra Bounding Box dự đoán cho vật thể. Trong một mô hình
41 YOLO, mỗi một vật thể trong hình ảnh huấn luyện được phân bố về một Anchor Box. Trong trường hợp có từ hai Anchor Box trở lên cùng bao quanh vật thể thì YOLO sẽ xác định Anchor Box mà có chỉ số IoU ( giữa Anchor Box và Truth Bounding Box) cao nhất.
Chẳng hạn hình 2.16 miêu tả cách xác định Anchor Box cho một vật thể. Từ Cell i xác định được ba Anchor Box viền xanh như trong hình. Cả ba Anchor Box này đều giao nhau với Bounding Box của vật thể. Tuy nhiên chỉ duy nhất một Anchor Box có đường viền dày nhất màu xanh được lựa chọn làm Anchor Box cho vật thể bởi nó có IoU cao nhất.[1]
Hình 2.25. Dự đoán Bounding Box bằng Anchor Box và Cell
Chỉ số IoU là một chỉ số để đo độ chính xác của công cụ phát hiện vật thể trên tập dữ liệu cụ thể. Để áp dụng được IoU đánh giá một công cụ phát hiện vật thể bất kì cần:
– Những Ground-truth Bounding Box (Bounding Box đúng của đối tượng, ví dụ như Bounding Box của đối tượng được khoanh vùng và đánh nhãn bằng tay sử dụng trong tập kiểm tra).
– Những Predict Bounding Box được mô hình sinh ra.
42
Hình 2.26. Chỉ số IoU
Ở tử số là Area of Overlap (diện tính phần chồng lên nhau giữa Predicted Bounding Box và Ground-truth Bounding Box). Phần mẫu số là Area of Union (Diện tích phần hợp hay đơn giản hơn là diện tích mà hai Bounding box này đang chiếm). Chia diện tích phần chồng (giao) cho diện tích phần hợp sẽ thu được giá trị mong muốn -Intersection over Union (IoU).
Thêm vào đó, mỗi một vật thể trong hình ảnh huấn luyện được phân bố về một Cell trên Feature Map nơi mà chứa tâm (Mid Point) của vật thể. Chẳng hạn như hình chú chó trong hình 2.15 sẽ được phân về cho Cell màu đỏ vì tâm của ảnh chú chó rơi vào đúng Cell này. Từ Cell sẽ xác định các Anchor Box bao quanh hình ảnh chú chó.
Như vậy khi xác định một vật thể YOLO sẽ cần xác định hai thành phần gắn liền với nó là (Cell, Anchor Box). Không chỉ riêng mình Cell hoặc chỉ mình Anchor Box.
2.6.3.2. Cách thức dự đoán Bounding Box
Để dự báo Bounding Box cho một vật thể YOLO dựa trên một phép biến đổi từ Anchor box và Cell.
Cho một Anchor Box có kích thước (𝑝𝑤, 𝑝ℎ) tại Cell nằm trên Feature Map với góc trên cùng bên trái của nó là (𝑐𝑥, 𝑐𝑦), mô hình dự đoán 4 tham số (𝑡𝑥, 𝑡𝑦, 𝑡𝑤, 𝑡ℎ) trong đó hai tham số đầu là độ lệch so với góc trên cùng bên trái của Cell và hai tham số sau là tỷ lệ so với Anchor Box. Các tham số này sẽ giúp xác định Bounding Box có tâm (bx, by) và kích thước (𝑏𝑤, 𝑏ℎ) thông qua hàm Sigmoid và hàm Exponential như các công thức bên dưới:
43
Hình 2.27. Tọa độ Bounding Box
Ngoài ra do các tọa độ đã được hiệu chỉnh theo độ dài và chiều rộng của bức ảnh nên luôn có giá trị nằm trong ngưỡng [0, 1]. Do đó khi áp dụng hàm Sigmoid giúp YOLO giới hạn được tọa độ không vượt quá xa các ngưỡng này.[1]
Hình 2.22 miêu tả cách thức dự đoán Bounding Box. Hình chữ nhật nét đứt bên ngoài là Anchor Box có kích thước là (𝑝𝑤, 𝑝ℎ). Tọa độ của một Bounding Box sẽ được xác định dựa trên đồng thời cả Anchor Box và Cell mà nó thuộc về. Điều này giúp kiểm soát vị trí của Bounding Box dự đoán đâu đó quanh vị trí của Cell và Bounding Box mà không vượt quá xa ra bên ngoài giới hạn này.
Hình 2.28. Công thức ước lượng Bounding Box từ Anchor Box. 2.6.4. Non-max Suppression
Mô hình YOLO dự đoán ra rất nhiều Bounding Box trên một bức ảnh nên đối với những Cell có vị trí gần nhau, khả năng các khung hình bị chồng chéo lên nhau là rất cao. Trong trường hợp đó, YOLO sẽ cần đến bước Non-max suppression để giảm bớt số lượng các khung hình được sinh ra một cách đáng kể.
44
Hình 2.29. Kết quả thực hiện Non-max suppression
Đầu tiên thuật toán tìm cách giảm bớt số lượng các Bounding Box bằng cách lọc bỏ toàn bộ những Bounding Box có xác suất chứa vật thể nhỏ hơn một ngưỡng nào đó, thường là 0.5.[1]
Đối với các Bounding Box giao nhau, Non-max suppression sẽ lựa chọn ra một Bounding Box có xác xuất chứa vật thể là lớn nhất. Sau đó tính toán chỉ số giao thoa IoU với các Bounding Box còn lại.
Nếu chỉ số này lớn hơn ngưỡng thì điều đó chứng tỏ mật độ hai Bounding Box đang chồng lên nhau rất lớn. Thuật toán sẽ xóa các Bounding Box có có xác xuất thấp hơn và giữ lại Bounding Box có xác xuất cao nhất. Cuối cùng, đầu ra cuối cùng YOLO thu được một Bounding Box duy nhất cho một vật thể.
45
Chương 3
TỔNG QUAN PHẦN CỨNG VÀ PHẦN MỀM 3.1. Phần cứng
3.1.1. Giới thiệu xe mô hình RC
Xe RC được hiểu một cách chính xác là Remoted Control Car, tức là xe điều khiển từ xa.
Có hai dòng xe RC được chơi nhiều nhất hiện nay là xe on-road và off-road. Xe on- road thường chạy trên đường bằng phẳng, gầm thấp và chạy bằng pin. Còn xe off-road là các dạng xe chạy địa hình có gầm cao, trong đó xe Buggy là một trong những loại xe off- road được nhiều người chơi nhất.
46 Ưu điểm:
– Đa dạng kiểu dáng mức giá, giúp mọi người dễ dàng sở hữu được 1 sản phẩm. – Cấu tạo sản phẩm đơn giản, dễ dàng sửa chữa và thay phụ tùng.
– Pin bền, thời gian chơi khá lâu từ 15 – 60p ( chạy liên tục) mỗi lần sạc. – Khoảng cách điều khiển xa khoảng 100m do sử dụng sóng 2.4ghz. – Nhiều kỹ thuật được thể hiện như trên xe thật.
– Mẫu xe đẹp do dc thiết kế theo tỉ lệ 1:10 1:12 hoặc 1:18 từ các nguyên mẫu thật. Nhược điểm:
– Có giá thành sản phẩm cao.
– Người chơi phải tự biết sửa chữa xe. – Khó điều khiển do tốc độ khá cao.
3.1.2. Khung xe tự hành
Khung xe tự hành có kiểu hình Buggy offroad 1/10 (đa địa hình) 4WD. Kết cấu Khung sườn nhôm dày 3,5mm với 2 mép gấp dập khung tăng độ cứng, ngoài ra còn có 2 thanh chống sườn (trước & sau). Với kích thước dài 40cm, rộng 25cm, cao 15cm.
Truyền động 2 cầu 4 bánh chủ động toàn phần (4WD) – toàn bộ truyền động bạc đạn tốc độ cao. Các chi tiết truyền động trong visai và bánh răng làm bằng thép. Toàn bộ láp truyền động (dog-bone shaft driver) bằng thép.
Hệ thống treo với hệ càng trước kiểu BALL SUSPENSION, đây là loại càng lái tiên tiến cho góc lái rộng và nhạy. Càng treo sau cũng kiểu Ball, giúp tinh chỉnh góc bánh xe rất dễ dàng.
Visai xe được trang bị 2 bộ visai chất lượng cao và siêu bền giúp xe vận hành 4WD tuyệt hảo lúc vào cua và vượt dốc. Bộ số được trang bị bộ 2 số tới (tự động) rất nhạy giúp xe tăng tốc lên 75km/h trong nháy mắt. Phuộc giảm sốc với loại phuộc dầu 11mm - kiểu piston kèm lò xo nhún và dầu silicon đặc chủng, vận hành vô cùng nhịp nhàng trên mọi địa hình. Bánh xe kiểu Off Road với độ bám đường rất tốt.
47
Hình 3.2. Khung xe mô hình tự hành – Buggy 1:10 3.1.3. Motor DC giảm tốc
Động cơ điện một chiều hay còn gọi là motor DC ( DC là từ viết tắt của "Direct Current Motors") là động cơ điều khiển trực tiếp có cấu tạo gồm hai dây (dây nguồn và dây mass). DC motor là một động cơ một chiều với cơ năng quay liên tục.
Động cơ giảm tốc hay còn được gọi là motor giảm tốc, motor hộp số, động cơ hộp số… Đây là loại động cơ điện có tốc độ thấp. Tốc độ của motor giảm tốc đã giản đi rất nhiều so với những động cơ thông thường có cùng số cực và công suất. Khi động cơ này quay với tốc độ chậm thì lực mà nó sản sinh ra sẽ mạnh hơn.
Như vậy thì Motor DC giảm tốc là một động cơ điện một chiều và có hộp giảm tốc.
48
3.1.4. Servo
Servo là một dạng động cơ điện đặc biệt. Không giống như động cơ thông thường cứ cắm điện vào là quay liên tục, servo chỉ quay khi được điều khiển (bằng xung PWM) với góc quay nằm trong khoảng bất kì từ 0 – 180 độ. Mỗi loại servo có kích thước, khối lượng và cấu tạo khác nhau. Có loại thì nặng chỉ 9g (chủ yếu dùng trên máy bay mô mình), có loại thì sở hữu một momen lực bá đạo (vài chục N/m), hoặc có loại thì khỏe và nhông sắc chắc chắn,...Động cơ servo được thiết kế như hệ thống hồi tiếp vòng kín. Tín hiệu ra của động cơ được nối với một mạch điều khiển. Khi động cơ quay, vận tốc và vị trí sẽ được hồi tiếp về mạch điều khiển này. Nếu có bầt kỳ lý do nào ngăn cản chuyển động quay của động cơ, cơ cấu hồi tiếp sẽ nhận thấy tín hiệu ra chưa đạt được vị trí mong muốn. Mạch điều khiển tiếp tục chỉnh sai lệch cho động cơ đạt được điểm chính xác.
Hình 3.4. Động cơ Servo MG946R 3.1.5. Mạch cầu H
Mạch cầu H dùng để tăng công suất nhằm điều khiển DC Motor thông qua tín hiệu từ Jetson Nano.
SHB được thiết kế để điều khiển một động cơ DC có chổi than công suất lớn cho những ứng dụng trong điều khiển robot, xe điện, và những ứng dụng DIY khác. Dòng điện điều khiển liên tục đạt đến 20A và dòng đỉnh 50A, dãy điện áp hoạt động rộng từ 12V đến 30V. Sản phẩm còn được thiết kế cho những ứng dụng có tần số PWM cao, tần số cao nhất đạt được ở 40kHz.
49 SHB còn hỗ trợ giám sát các thông số trong quá trình điều khiển bằng việc đưa ra một số tín hiệu phản hồi như: dòng điện, điện áp, nhiệt độ.
SHB hỗ trợ phần cứng tương thích với các mạch Arduino thông dụng : Uno, Mega cũng như cung cấp các ví dụ mẫu (điều khiển PWM, tốc độ và vị trí sử dụng PID Controller).
Hình 3.5. Mạch cầu H SHB Tính năng:
– Điều khiển thuận nghịch cho một động cơ DC chổi than.
50 – Cấu hình mạch cầu H với MOSFET kênh N cho hiệu suất tốt hơn, đáp ứng cho những ứng dụng có công suất lớn.
– Tương thích với các mạch Arduino.
– Tương thích với CircleTech Motor Control Shield 32bit Microcontroller (CT – MCS).
– Cung cấp các tín hiệu phản hồi như: Dòng điện, điện áp, nhiệt độ. – Có thể gắn thêm tản nhiệt, vỏ hộp.
– Hỗ trợ 3 ngõ vào cho encoder (A, B, Z). – Hỗ trợ mã nguồn mở.
– Phù hợp cho các ứng dụng DIY, Prototype.
3.1.6. Board Jetson Nano
NVIDIA Jetson Nano Developer Kit là một máy tính nhỏ nhưng rất mạnh mẽ cho phép bạn chạy song song nhiều mạng neural sử dụng cho các ứng dụng như phân loại hình ảnh, phát hiện đối tượng, phân đoạn và xử lý giọng nói.
51 Sản phẩm NVIDA Jetson Nano Developer Kit trang bị số lượng cổng kết nối khá đầy đủ: 4 cổng USB 3.0, cổng HDMI, DisplayPort và một cổng Ethernet, cùng với đó là những chuẩn kết nối phổ biến như SDIO, I2C, SPIO và UART. Không chỉ vậy, Jetson Nano còn có cả cổng kết nối M.2, giao thức MIPI-CSI để kết nối với máy ảnh. Người dùng cũng có thể kết nối mạng cho Jetson Nano bằng Wifi nếu không muốn sử dụng dây cáp Ethernet