Dữ liệu huấn luyện mạng YOLOv3 cho mục đích sử dụng trên máy bay không người lái UAV cần phải tuân thủ theo các yêu cầu như sau:
- Số lượng ảnh khoảng 2000 ảnh cho mỗi lớp đối tượng
- Số lượng đối tượng “person” phải xuất hiện hơn 80% tổng số ảnh huấn luyện
- Góc chụp đối tượng “person” phải là góc quan sát từ trên cao nhìn xuống tương tự như góc nhìn của thiết bị bay UAV khi quan sát
- Điều kiện ánh sáng của hình ảnh không bị cháy sáng hoặc quá tối
- Không dán nhãn nửa thân dưới, không dán nhãn đối tượng “person” bị che khuất quá 60% diện tích của đối tượng.
Dữ liệu ảnh huyến luyện mạng được em thu thập bằng thiết bị bay có người lái thương mai chuyên để quay phim chụp ảnh, hay còn được biết đến với tên gọi là flycam. Dữ liệu em thu thập là hình ảnh quay người ở các địa điểm khác nhau trong khuôn viên của trường Đại học. Hình ảnh huấn luyện được trích xuất với tần suất là 5 khung hình một từ các video thu thập được từ flycam.
SVTH: Nguyễn Nhật Anh Lớp: KTDT & THCN K56
HÌNH 2.11. Một số dữ liệu hình ảnh trích xuất từ Flycam Mavic Mini.
Sử dụng công cụ hỗ trợ dán nhãn theo định dạng Pascal VOC, YOLO mã nguồn mở LabelImg [18] của tác giả tzutalin để dán nhãn. Toàn bô dữ liệu ảnh huấn luyện được dán nhãn theo định dạng file XML, trong các file này sẽ chưa dữ liệu tên lớp đối tượng và tọa độ của hộp giới hạn bbox cho từng đối tượng.
HÌNH 2.12. Phần mềm dán nhãn LabelImg.
2.4. CẢI THIỆN ĐỘ CHÍNH XÁC CỦA YOLOv3
Thông thường như con người, khi chúng ta muốn nhìn rõ vật có kích cỡ nhỏ nào đó, ta sẽ đưa mắt lại gần vật đó để quan sát cho rõ hơn. Thì đối với mạng học sâu tương tự cũng như vậy, để tăng độ chính xác khi phát hiện vật thể nhỏ người ta thường sẽ cho dữ liệu ảnh đầu vào có kích thước lớn, bởi khi đó vật thể nhỏ
SVTH: Nguyễn Nhật Anh Lớp: KTDT & THCN K56
trong tấm hình sẽ xuất hiện với pixel lớn hơn. Nhưng khi đó thì sẽ phải xử lý nhiều dữ liệu pixel hơn, mạng học sâu sẽ sử dụng nhiều bộ nhớ của máy tính hơn. Như vậy ta cần có giải pháp, như trên thực tế ta sẽ sử dụng kính lúp để soi vật nhỏ mà không cần phải phóng to hay tiến đến gần vật đó.
Giải pháp “chiếc kính lúp” ở đây mà mạng học sâu sử dụng đó chính là Spatial Pyramid Pooling (SPP) [19] – tạm dịch: Tổng hợp dữ liệu không gian kiểu kim tự tháp. Ý tưởng của mạng SPP ra đời với mục đích là làm sao để nhận diện vật thể trong hình ảnh bị biến dạng khi kích cỡ ảnh bị thay đổi như bị cắt xén, bị co vào hay giãn ra. Thực chất kích cỡ ảnh thay đổi đối với mạng YOLOv3 không phải là vấn đề vì mạng sử dụng cấu trúc mạng tích chập, vấn đề nằm ở lớp cuối – lớp kết nối đầy đủ (fully connected layer). Bởi vì lớp kết nối đầy đủ thực hiện toán tử tham chiếu tuyền tính, tích vô hướng nên lớp này cần hình ảnh có kích thước cố định.
HÌNH 2.13. Cấu trúc mạng YOLOv3-SPP.
Để khắc phục vấn để ở lớp cuối và cải thiện độ chính xác SPP được thêm ở trước lớp cuối cùng của Darknet-53. Lớp SPP sẽ lấy các kết quả bản đồ đặc tính trừu tượng ở từng tỉ lệ kích thước khác nhau và cả đặc tính trừu tượng của lớp tích chập cuối nằm ở trước phần SPP. Vậy nên theo [16] ta sẽ thêm SPP sau lớp tích chập thứ 70. ### ---SPP--- ### [maxpool] # out: 7x7x512 stride=1 size=7 [route]
layers=-2 #take feature from layer 70: 13x13x512
[maxpool] # out: 5x5x512
stride=1
SVTH: Nguyễn Nhật Anh Lớp: KTDT & THCN K56
[route]
layers=-4 #take feature from layer 70
[maxpool] # out: 1x1x512
stride=1
size=13
#tổng hợp feature từ layer 75,73,71,70 -> out: 13x13x2048 [route]
layers=-1,-3,-5,-6
### ---End SPP--- ###
HÌNH 2.14. Cấu trúc lớp SPP.
SPP sẽ tổng hợp các giá trị cực đại từ các đặc tính trừu tượng theo ô cửa sổ trượt (sliding windows) theo từng vùng. Vậy nên SPP có thể tạo ra bản đồ đặc tính trừu tượng nhất từ các tỉ lệ kích thước ảnh khác nhau thông qua tổng hợp max pooling.
2.5. HỌC CHUYỂN GIAO VÀ KẾT QUẢ
Sau khi đã có tập huấn luyện mạng đã dán nhãn, cần thay đổi các tham số trong tệp tin custom.data nằm trong thư mục config. Tệp tin này chứa đường dẫn đến tệp tin khai các đường dẫn hình ảnh dữ liệu huấn luyện mạng.
classes = 1
train=data/custom/train.txt valid=data/custom/val.txt names=config/classes.names backup=backup/
SVTH: Nguyễn Nhật Anh Lớp: KTDT & THCN K56
Tại tệp tin classes.names chứa danh sách lớp các đối tượng, mỗi đối tượng nằm lần lượt trên từng dòng, tính bắt đầu từ 0. Trong trường hợp này mạng học sâu YOLOv3 chỉ nhận dạng một đối tượng là người nên trong tệp tin classes.names chứa thông tin như sau:
person
Quan trọng là chỉnh sửa tệp tin cấu hình mạng của mạng học sâu YOLOv3 để phù hợp với nhiệm vụ nhận dạng mới. Chỉnh sửa lại tham số classes và filter của bản đồ đặc tính trừu tượng ngay trước các khối nhận dạng. Thay đổi tham số lớp đối tượng tương ứng với số lượng đối tượng cần nhận dạng classes = 1. Theo tài liệu [16] tham số filters được tính theo công thức sau:
𝑓𝑖𝑙𝑡𝑒𝑟𝑠 = (𝑐𝑙𝑎𝑠𝑠𝑒𝑠 + 5) × 3 (15) Thay vì phải mất rất nhiều thời gian để huấn luyện mạng học sâu từ ban đầu và tránh hiện tượng overfit xảy ra do khối lượng dữ liệu ảnh dùng để huấn luyện mạng thu thập được khá ít, chỉ có 1815 ảnh. Vậy nên ta cần đổi sang chiến lược tối ưu hơn, ta sử dụng phương pháp “học chuyển giao”, đây là phương pháp huấn luyện tốt nhất vừa tiết kiệm được chi phí huấn luyện luyện mạng học sâu, vừa có được kết quả nhanh chóng, vì bởi thay vì ta cho mạng học sâu học mới từ đầu thì ta sẽ cho mạng học sâu đã được học tập huấn luyện mạng COCO chỉ học thêm dữ liệu huấn luyện của ta.
Phương thức học chuyển giao là phương thức đóng băng phần đầu của mạng học sâu để không ảnh hưởng đến phần mà nó đã học được từ tập huấn luyện COCO, sau đó ta chỉ lấy phần mạng yolo ở cuối cùng để học, thì khi đó chi phí học của ta được giảm đi đáng kể. Hơn nữa các trọng số của 79 lớp các đối tượng còn lại không phải là lớp “person” sẽ được tối giản đi. Do cấu hình GPU của máy tính cá nhân của em không đủ dung lượng để huấn luyện mạng học sâu này nên em đã thuê máy chủ trên vast.ai với cấu hình như trong hình 2.14 để thực hiện học chuyển giao mạng học sâu YOLOv3-spp này. Với giá tiền thuê là 0,109 đô- la cho mỗi giờ sử dụng.
SVTH: Nguyễn Nhật Anh Lớp: KTDT & THCN K56
HÌNH 2.15. Máy chủ linux của VastAI.
(a)
(b)
HÌNH 2.16. Hình ảnh quá trình huấn luyện mạng yolo.
Kết quả học chuyển giao mạng học sâu YOLOv3-spp thu được sau 300 batch dữ liệu trong thời gian là 4 tiếng 26 phút 58 giây, với tổng chi phí em chi trả là khoảng 5 đô-la. Hình ảnh 2.16 dưới đây là kết quả tổng quan, do ta chi có một lớp nên classification và val_classification không xuất hiện kết quả trong hình.
SVTH: Nguyễn Nhật Anh Lớp: KTDT & THCN K56
HÌNH 2.17. Kết quả học chuyển giao.
HÌNH 2.18. Kết quả chạy nhận diện người trên tập huấn luyện.
Theo như trên hình 2.17, các hình 2.19, 2.20, 2.21 là biểu đồ hiển thị chi tiết, ta có thể thấy được kết quả nhận dạng của mạng học sâu đã được cải thiện trong việc nhận dạng các đối tượng người từ góc nhìn trên cao ở chỉ số độ chính xác
SVTH: Nguyễn Nhật Anh Lớp: KTDT & THCN K56
precision, recall và độ chính xác trung bình mAP cũng được cải thiện hơn 0,6. Trên hình 2.17 cho thấy kết quả dự đoán trên tập dữ liệu ảnh xác nhận (validate).
HÌNH 2.19. Thông số Recall học chuyển giao.
HÌNH 2.20. Thông số độ chính xác trung bình học chuyển giao.
HÌNH 2.21. Thông số độ chính xác tuyệt đối.
Hai hình đồ thị hình 2.18 và hình 2.19 đều cho thấy kết quả của học chuyển giao được cải thiện đáng kể bắt đầu từ epoch 250, độ chính xác bắt đầu tăng rất nhanh, nhưng đây không phải bị overfitting. Vì nếu bị overfitting thì giá trị recall sẽ không tăng như vậy, và khi chạy kiểm tra xác nhận (trong hình 2.15b) độ chính xác mAP vẫn cho ra độ chính xác tương đương vậy.
SVTH: Nguyễn Nhật Anh Lớp: KTDT & THCN K56
CHƯƠNG 3: HỆ THỐNG TÌM KIẾM NGƯỜI SỬ DỤNG
THIẾT BỊ BAY KHÔNG NGƯỜI LÁI VÀ KẾT QUẢ BAY THỬ NGHIỆM
3.1. THIẾT KẾ THIẾT BỊ BAY UAV
Thiết bị bay UAV tìm kiếm người cần có các đặc điểm sau:
- Truyền hình ảnh trực tiếp từ UAV về trạm điều khiển mặt đất GCS: Bộ phận truyền hình ảnh gắn trên thiết bị bay sẽ đảm nhiệm nhiệm vụ truyền hình ảnh từ webcam về trạm điều khiển mặt đất thông qua máy tính nhúng kết nối mạng không dây.
- Trạm GCS tiếp nhận dữ liệu hình ảnh và thực hiện nhận dạng đối tượng: Sau khi tiếp nhận hình ảnh từ bộ phận truyền hình ảnh tại GCS sẽ ra quyết định điều khiển bay và sử dụng mạng nơ-ron học sâu để kiểm tra có đối tượng người hay là không.
- Thiết bị bay UAV nhận lệnh thực thi bay từ trạm GCS: Thông qua thiết bị kết nối dữ liệu datalink thiết bị bay sẽ nhận lệnh thực thi điều khiển bay đến các điểm tọa độ.
3.1.1. Cấu hình phần cứng của UAV
Thiết bị bay không người lái UAV trong dự án này của em sử dụng thiết kể được sử dụng phổ biến nhất hiện nay. Thiết kế này được gọi là Quad X, là kiểu trực thăng có bốn động cơ gắn cánh quạt hướng lên phía trên, các động cơ được đặt theo hình chữ thập và có khoảng cách từ tâm của UAV tới trục động cơ đều bằng nhau. Theo công thức tính toán thiết kế đã được nêu trong tài liệu [20], ta có công thức tính lực đẩy của mỗi động cơ cần có để có thể nâng tải trọng của khối truyền hình ảnh:
𝐿ự𝑐 𝑛â𝑛𝑔 = 𝑇ổ𝑛𝑔 𝑡𝑟ọ𝑛𝑔 𝑙ượ𝑛𝑔×2
𝑆ố 𝑙ượ𝑛𝑔 độ𝑛𝑔 𝑐ơ (15) 3.1.1.1.Động cơ chính
Theo công thức (15) trên để nâng được tổng tải trọng 1200 gam, ta lựa chọn động cơ không chổi than Racestar phiên bản Racing 2212. Động cơ không chổi than có ưu điểm sử dụng các cặp nam châm vĩnh cửu cho rotor quay trục ngoài nên có hiệu suất về mô-men lực và tốc độ quay của động cơ cũng lớn lớn so với loại động cơ DC thông thường.
SVTH: Nguyễn Nhật Anh Lớp: KTDT & THCN K56
HÌNH 3.1. Hình ảnh thực tế và bản vẽ của động cơ. BẢNG 3.1. Số liệu hoạt động của động cơ Racestar.
Tên động cơ KV (rpm/V) Điện áp (V) Loại cánh Dòng tải (A) Lực đẩy (g) Công suất (W) Hiệu suất (g/W) Loại pin Lipo Khối lượng (g) BR2212 980 11.1 8045 8.1 535 80 5.9 2-4S 50 1045 10.6 710 118 6.0 3.1.1.2.Cánh quạt động cơ
Theo dữ liệu trong bảng 3.1 bên trên do nhà sản xuất cung cấp và theo công thức (15) tính ở bên trên, em lựa chọn loại cánh nhựa có kích thước 10 inch, độ nghiêng của cánh quạt là 4.5o độ. Cánh quạt được làm từ vật liệu nhựa APC nên có độ chính xác của thiết kế động học cao, độ bền cao, bề mặt của cánh quạt cũng được làm bóng để giảm ma sát với không khí
HÌNH 3.2. Cánh quạt nhựa 1045.
3.1.1.3. Pin LiPO
Loại pin mà thiết bị bay UAV sử dụng thường là loại pin Lithium Polymer, hay còn được gọi là LiPo, đây là loại pin tuy kích thước nhỏ nhưng lại có dung
SVTH: Nguyễn Nhật Anh Lớp: KTDT & THCN K56
lượng lớn, pin LiPO là công nghệ pin có ưu điểm có tuổi thọ lớn, sạc nhiều lần mà không làm giảm đáng kể tuổi thọ của pin, pin có thể cung cấp dòng xả lớn trong thời gian ngắn với công suất năng lượng cung cấp cho thiết bị rất lớn nên đây là loại pin được sử dụng rất nhiều cho các ứng dụng cần nguồn năng lượng lớn như động cơ điện của máy bay không người lái. Pin Lipo mà em lựa chọn là pin 3S 2400mah của hãng Tattu
HÌNH 3.3. Pin LiPO Tattu 3S 1300mAh. BẢNG 3.2. Thông số của Pin LiPO Tattu 3S.
Loại pin LiPo Khối lượng (g) Dung lượng (mAh) Dòng xả (C) Tốc độ xả (C) Dòng xả tối đa (A) Điện áp (V) Chiều dài (mm) Chiều rộng (mm) Độ dày (mm) TA- 45C- 2300- 3S1P 182.2 2300 45 90 103.5 11.1 105.3 33.14 22.26 3.1.1.4. Bộ điều tốc ESC
Động cơ không chổi than sẽ được điều khiển bởi mạch điều tốc ESC, mô-đun điều tốc ESC nhận tín hiệu từ vi điều khiển và điều xung PPM điều khiển tốc độ động cơ không chổi than. ESC hoạt động bằng cách sử dụng vi điều khiển để điều khiển MOSFET điều đóng mở lần lượt các cổng theo từng pha, tương tự như cách điều khiển động động cơ ba pha dây quấn. Để đổi chiều động cơ ta chỉ việc đổi 2 trong 3 dây điều khiển để đổi chiều quay của động cơ không chổi than.
Loại ESC mà em lựa chọn ở đây là loại ESC Racestar 30A BLHeli-S sử dụng OPTO thay cho MOSFET, Hỗ trợ điều xung rộng 1-2ms, cũng như các chuẩn điều xung khác như Oneshot125 (125-250us), Oneshot42 (41.7-83.3us) và
SVTH: Nguyễn Nhật Anh Lớp: KTDT & THCN K56
Multishot (5-25us). Đặc biệt loại ESC này cho phép điều chỉnh tham số trong mã lập trình của chip điều khiển bằng phần mềm.
HÌNH 3.4. Điều tốc ESC BLHeli-S RacerStar.
Loại ESC này sử dụng chip EFM8BB21F16, tốc độ 48MHz. Sử dụng thuật toán điều khiển BLHeli-S cho phép tạo xung điều khiển đáp ứng ga mượt mà và ít tiếng ồn hơn nhờ việc đồng bộ tín hiệu tốt hơn.
3.1.1.5.Mạch điều khiển bay Pixhawk
Bộ điều khiển bay mà em lựa chọn sẽ là bộ điều khiển Pixhawk sử dụng firmware đã được chỉnh sửa dựa trên mã nguồn mở Ardupilot mà em đã thực hiện được ở đề tài nghiên cứu khoa học sinh viên 2019.
HÌNH 3.5. Mạch điều khiển bay mã nguồn mở Pixhawk.
• Chip vi xử lý
o 32-bit ARM Cortex M4 core có FPU
o 168 Mhz/256 KB RAM/2 MB Flash
o 32-bit RM Cortex M3 • Cảm biến
o Cảm biến 9 trục MPU6050: đo dữ liệu của con quay theo 3 trục và gia tốc theo 3 trục
o Cảm biến con quay ST Micro 16-bit gyroscope
o Cảm biến ST Micro 14-bit gia tốc và la bàn điện tử
o Cảm biến áp suất MEAS barometer • Nguồn
SVTH: Nguyễn Nhật Anh Lớp: KTDT & THCN K56
o Diode điều khiển lý tưởng có thể chuyển đồi nguồn dự phòng tự động
o Hỗ trợ đường dây cấp nguồn cho Servo với điện áp 7V, chịu được dòng tải lớn
o Các đầu ra được bảo vệ quả tải điện áp, và các đầu vào được bảo vệ khỏi xả tĩnh điện (Electros Static Discharge - ESD).
• Giao tiếp
o 5 cổng UART serial ports, 1cổng hỗ trợ điện áp cao, 2 cổng sử dụng điều khiẻn HW flow
o Giao tiếp vệ tinh Spektrum DSM/DSM2/DSM-X Satellite
o Giao tiếp tín hiệu SBUS theo chuẩn Futaba
o Hỗ trợ tín hiệu điều khiển PPM
o Giao tiếp RSSI
o Các chuẩn giao tiếp I2C, SPI, 2x CAN, USB
o Hỗ trợ đầu vào 3.3V và 6.6V cho bộ ADC • Kích thước
o Khối lượng 38 g (1.3 oz)
o Chiều rộng 50 mm (2.0”)
o Chiều cao 15.5 mm (.6”)
o Chiều dài 81.5 mm (3.2”) 3.1.1.6. Mô-đun định vị toàn cầu