Trong các đề tài cô giới thiệu, chúng em lựa chọn đề tài “Nghiên cứu phương pháp nhận diện và tính toán khoảng cách từ UAV tới vật thể” Để tìm hiểu sâu sắc hơn quá trình phát triển một c
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN TỬ VIỄN THÔNG
ĐỒ ÁN
THIẾT KẾ III
Đề tài:
NGHIÊN CỨU PHƯƠNG PHÁP NHẬN DIỆN
VÀ TÍNH TOÁN KHOẢNG CÁCH TỪ UAV TỚI
VẬT THỂ
Sinh viên thực hiện: Đin Vũ Minh Tuấn Lớp ĐTVT03 – K62
Trang 2Giảng viên hướng dẫn: TS NGUYỄN QUANG ANH
Hà Nội, 7-2021
Trang 3LỜI NÓI ĐẦU
Sau một kì học tập, chúng em đã được Thầy Nguyễn Anh Quang giảng dạy bộ
môn Đồ Án 3 Chúng em được hiểu biết thêm về thuật toán SSD, hiểu biết thêm vềcách thức hoạt động và thao tác của các phương pháp nhận diện ảnh cơ bản và nângcao,… Chúng em cảm ơn thầy rất nhiều vì đã giảng dạy và giúp đỡ tận tình chúng emtrong thời gian qua
Trong các đề tài cô giới thiệu, chúng em lựa chọn đề tài “Nghiên cứu phương pháp nhận diện và tính toán khoảng cách từ UAV tới vật thể” Để tìm hiểu sâu sắc
hơn quá trình phát triển một chương trình thực tế từ ý tưởng và nắm rõ cấu trúc củacác thuật toán nhận diện và xử lý ảnh
Cùng với việc thực hiện đề tài này, em xin gửi lời cảm ơn sâu sắc đến giảng viên
hướng dẫn Thầy Nguyễn Anh Quang đã nhiệt tình chỉ dẫn các bước, hướng nghiên
cứu, thực hiện cũng như yêu cầu cần có của đề tài trong suốt thời gian thực hiện đề tài.Trong quá trình thực hiện, dù đã rất cố gắng nhưng không tránh khỏi những sai sót vàhạn chế nhất định Vì vậy chúng em rất mong nhận được sự góp ý, bổ sung thêm của
cô để đề tài được hoàn thiện hơn
Trang 4LỜI CAM ĐOAN
Tôi là Đinh Vũ Minh Tuấn, mã số sinh viên 20172899, sinh viên lớp ĐTVT
03, khóa K62 Người hướng dẫn là TS Nguyễn Quang Anh Tôi xin cam đoan
toàn bộ nội dung được trình bày trong đồ án Nghiên cứu phương pháp nhận diện và tính toán khoảng cách từ UAV tới vật thể là kết quả quá trình tìm hiểu
và nghiên cứu của tôi Các dữ liệu được nêu trong đồ án là hoàn toàn trungthực, phản ánh đúng kết quả đo đạc thực tế Mọi thông tin trích dẫn đều tuân thủcác quy định về sở hữu trí tuệ; các tài liệu tham khảo được liệt kê rõ ràng Tôixin chịu hoàn toàn trách nhiệm với những nội dung được viết trong đồ án này
Hà Nội, tháng 07 năm 2021Người cam đoan
Đinh Vũ Minh Tuấn
Trang 6Mục Lục
DANH MỤC KÝ HIỆU VÀ CHỮ VIẾT TẮT i
DANH MỤC HÌNH VẼ ii
TÓM TẮT ĐỒ ÁN iv
CHƯƠNG 1 TÌM HIỂU VỀ THUẬT TOÁN 1
1.1 Giới thiệu về thuật toán SSD 1
1.2 Lợi thế so với Region-Convolutional Neural Network (R-CNN) 1
1.3 SSD là gì 3
1.3.1 Từ khóa 3
1.3.2 Kiến trúc mạng 3
1.3.3 Multibox 3
1.3.4 MultiBox Prior And Iou 4
1.3.5 Improvements 6
CHƯƠNG 2 GIỚI THIỆU VỀ PHẦN CỨNG SỬ DỤNG 7
2.1 Giới thiệu về Raspberry Pi 7
2.1.1 Raspberry pi là gì? 7
2.1.2 Phần cứng của raspberry pi 8
2.1.3 Hệ điều hành và phần mềm 9
2.1.4 Một số ưu nhược điểm của Raspberry pi 10
2.2 Giới thiệu về module camera cho Raspberry pi 11
2.3 Lắp ráp phần cứng thực tế 11
2.3.1 Kết nối thực tế Raspberry Pi 11
CHƯƠNG 3 PHẦN MỀM VÀ CÁCH CÀI ĐẶT 14
3.1 cài đặt hệ điều hành cho Raspberry Pi 14
3.1.1 Lựa chọn hệ điều hành 14
3.1.2 Cài đặt hệ điều hành 15
CHƯƠNG 4 MÔI TRƯỜNG VÀ CÔNG CỤ SỬ DỤNG 17
Trang 74.2 Thuật toán SSD (Single Shot Object Detectors) 17
4.2.1 Giới thiệu 17
4.2.2 MultiBox 18
4.2.3 Thuật toán phát hiện vật thể SSD 18
4.2.4 Thuật toán Faster R-CNN 19
4.3 Lựa chọn mô hình 20
4.4 Thiết kế môi trường phần mềm với Thonny Python IDE 20
CHƯƠNG 5 PHÁT TRIỂN CHƯƠNG TRÌNH 26
5.1 Cơ sở lý thuyết 26
5.2 Tính khoảng cách từ Camera đến một đối tượng với OpenCV 27
CHƯƠNG 6 ĐÁNH GIÁ KẾT QUẢ VÀ HẠN CHẾ 29
6.1 Kết quả đạt được 29
6.2 Đánh giá kết quả 31
6.3 Hạn chế 31
KẾT LUẬN 33
Kết luận chung 33
Hướng phát triển 33
TÀI LIỆU THAM KHẢO 34
Trang 8DANH MỤC KÝ HIỆU VÀ CHỮ VIẾT TẮT
Trang 9DANH MỤC HÌNH VẼ
Hình 1.1 Minh họa đầu ra của mạng R-CNN 2
Hình 1.2 Kiến trúc của SSD 3
Hình 1.3 Kiến trúc multi-scale convolution prediction 4
Hình 1.4 Minh họa priors 5
Hình 1.5 Minh họa ý tưởng của Fixed Priors 6
Hình 2.1 Tổng quát Raspberry Pi 7
Hình 2.2 Sơ đồ cấu tạo Raspberry Pi 8
Hình 2.3 Giao diện hệ điều hành Raspberry Pi 10
Hình 2.4 Kết nối camera vào socket CSI 11
Hình 2.5 Camera pi 8mpx 12
Hình 2.6 Mạch nguồn LM2596 12
Hình 3.1 Phần mềm Win32 Disk Imager 16
Hình 4.1 Tìm kiếm phần mềm Thonny Python IDE 21
Hình 4.2 Tạo và lưu file làm việc trong Thonny Python IDE 21
Hình 4.3 Tạo môi trường ảo để quản lý thư viện 22
Hình 4.4 Tạo môi trường ảo mới 22
Hình 4.5 Active môi trường ảo mới sau khi tạo 23
Hình 4.6 Cài đặt thư viện opencv và dlib 23
Hình 4.7 Cài đặt thư viện scipy 23
Hình 4.8 Cài đặt thư viện GPIO 24
Hình 4.9 Khởi chạy chương trình cùng hệ thống khi khởi động 25
Hình 4.10 Thao tác gọi file scrip để khởi chạy 25
Hình 6.1 Kết quả chạy thử chương trình khoảng cách 25cm 29
Hình 6.2 Kết quả chạy thử chương trình khoảng cách 4m 30
Hình 6.3 Kết quả chạy thử chương trình khoảng cách 2m 31
Trang 10Hình 6.3 Kết quả chạy thử chương trình khoảng cách 2m………25
TÓM TẮT ĐỒ ÁN
Trang 11CHƯƠNG 1 TÌM HIỂU VỀ THUẬT TOÁN
Nội dung chương 1 trình bày thuật toán SSD, so sánh ưu nhược điểm so với CNN Giới thiệu về kiến trúc mạng cuart SSD, Multibox, Multibox Prior And Iou,Improvement
R-1.1 Giới thiệu về thuật toán SSD
Ngày nay, những mô hình mạng neural đang trở nên ngày càng phổ biến, và trongbài toán phân loại ảnh (image classification) chúng thậm chí còn vượt trội hơn conngười về độ chính xác Tuy nhiên, con người xử lí rất nhiều bài toán hàng ngày hơn làchỉ ngồi phân loại ảnh ví dụ như quan sát và tương tác với môi trường xung quanh.Chúng ta có thể định vị và phân loại từng đối tượng trong tầm mắt một cách dễ dàng
do sức mạnh của não bộ vượt xa những gì mà mạng neural "hàng fake" có thể làm.Trong thực tế, có rất nhiều bài toán có thể giải quyết bằng mạng neural nhưng hầu hếtchúng vẫn chưa thể đạt được hiệu năng như con người, và Object Detection là mộttrong số những bài toán đó Trong bài viết này mình sẽ giới thiệu tổng quan về một môhình mạng với tên gọi SSD (Single Shot MultiBox Detector) được sử dụng phổ biến
và đem lại hiệu quả khá cao khi chạy với thời gian thực
1.2 Lợi thế so với Region-Convolutional Neural Network (R-CNN)
Với những bước nhảy lớn trong những bài toán về thị giác máy tính với mạngCNNs, một mô hình mạng mang tên R-CNNs đã được công bố để giải quyết bài toánObject Detection, Localization và Classification Nhìn chung, R-CNN là một loạiCNN đặc biệt có khả năng định vị và nhận biết được các đối tượng trong ảnh: đầu racủa mạng thường là một tập những bounding box bao quanh những đối tượng đượcnhận biết, cũng như nhãn của đối tượng được phân vào Hình ảnh dưới dây minh họađầu ra của mạng R-CNN:
Trang 12Hình 1.1 Minh họa đầu ra của mạng R-CNN
Sau R-CNN, một vài mô hình mạng khác cũng được phát triển (Fast-R-CNN,Faster-R-CNN) dựa trên nó với mục đích chính là cải thiện thời gian huấn luyện và độchính xác của mô hình với mong muốn áp dụng được với những bài toán chạy với thờigian thực Tuy nhiên chúng vẫn tồn tại một số hạn chế:
Việc huấn luyện mô hình vẫn quá cồng kềnh và tiêu tốn nhiều thời gian
Quá trình huấn luyện xảy ra trên nhiều phase
Mô hình mạng làm việc chậm so với thời gian thực
May mắn thay, trong những năm trở lại đây, những kiến trúc mạng mới được pháttriển để giải quyết những vấn đề tồn tại trong R-CNN, khiến việc giải quyết bài toánObject Detection có thể thực hiện được trong thời gian thực Những mô hình mạng nổitiếng nhất là YOLO (You Only Look Once) và SSD MultiBox Phần tiếp theo của bàiviết sẽ tập trung sâu vào ý tưởng và kiến trúc mạng SSD
Trang 131.3 SSD là gì
1.3.1 Từ khóa
Để hiểu được ý tưởng mà mô hình sử dụng, đầu tiên ta hãy tìm hiểu xem tên của
mô hình có ý nghĩa gì:
Single Shot: Có nghĩa là việc định vị và phân loại đối tượng được thực hiện
trên 1 phase duy nhất từ đầu đến cuối
MultiBox: Tên của kĩ thuật về bounding box được sử dụng bởi Szegedy et
1.3.3 Multibox
Kĩ thuật bounding box được sử dụng trong SSD được lấy ý tưởng từ Szegedy(https://arxiv.org/abs/1412.1441), một phương pháp sử dụng nhiều bounding box phù
Trang 14hợp với mọi đối tượng lớn nhỏ Dưới đây là kiến trúc của multi-scale convolutionprediction được sử dụng trong SSD:
Hình 1.3 Kiến trúc multi-scale convolution prediction
Hàm lỗi của MultiBox là sự kết hợp của 2 thành phần tương ứng với 2 chức năngcủa SSD:
Confidence Loss: thành phần này tính toán tỉ lệ rơi vào class mà boundingbox được tính toán Độ đo cross-entropy được sử dụng để đo thành phầnnày
Location Loss: Thành phần này ước lượng sự sai lêch thực tế của boundingbox so với tập dữ liệu mẫu L2-Norm được sử dụng ở đây
Mình sẽ không đi quá sâu vào phần toán học trong mô hình (bạn có thể đọc thêmtrong paper (https://arxiv.org/abs/1512.02325) nếu thực sự muốn tìm hiểu Hàm lossđược xây dựng với 2 thành phần trên có công thức như sau:
multibox_loss = confidence_loss + alpha * location_loss
Giá trị alpha giúp chúng ta cân bằng được sự ảnh hưởng của location loss Cũng
như nhiều mô hình mạng trong deep learning, mục tiêu của chúng ta là tìm những giátrị tham số có thể tối thiểu được hàm Loss tốt nhất, theo đó đưa ra được những dựđoán càng gần với dữ liệu mẫu
Trang 151.3.4 MultiBox Prior And Iou
Logic xoay quanh việc taoj ra bounding box thực sự khá phức tạp Trong
MultiBox, một khái niệm được sử dụng là priors (hay thuật ngữ anchors trong
Faster-R-CNN), là những bounding box được tính toán trước với kích thước cố định tuântheo phân phối gần với phân phối của bounding box mẫu Trong thực tế,
những priors này được lựa chọn khi tỉ lệ Intersection/Union (IoU) lớn hơn ngưỡng 0.5.
Như mô tả trong hình dưới dây, giá trị IoU tại 0.5 vẫn chưa đủ tốt nhưng nó sẽ là mộtđiểm bắt đầu tương đối ổn cho thuật cho giải thuật bounding box regression (chính làviệc học tham số của mạng) điểu này thực sự sẽ tiết kiệm thời gian và đem lại kết quảtốt hơn rất nhiều so với việc bắt đầu tại một vị trí ngẫu nhiên
Do đó MultiBox bắt đầu với priors như một prediction khởi tạo với mục đích hồiquy gần hơn với bounding box thực sự
Trang 16Hình 1.4 Minh họa priors
Kiến trúc của Multibox bao gồm 11 priors với mỗi feature map cell (8x8, 6x6, 4x4,3x3, 2x2) và chỉ 1 prior với 1x1 feature map dẫn đến tổng cộng có 1420 priors với mỗihình ảnh, do đó cho phép bao phủ hoàn toàn một bức ảnh đầu vào trên những tỉ lệ khácnhau, khiến việc nhận diện những đối tượng ở các kích thước khác nhau trở nên dễdàng
Trang 17sử ta có 2 điểm là (x1, y1) và (x2, y2) với mỗi tập b bounding box mặc định cho mỗi feature map cell và c classes cho việc phan loại Với một feature map có kích thước f
= m x n, SSD sẽ tính ra f x b x (4+c) giá trị cho feature map này Hình dưới đây minh
họa cho ý tưởng của Fixed Priors:
Hình 1.5 Minh họa ý tưởng của Fixed Priors
Classification
MultiBox không thể phân loại object,vì vậy, với mỗi bounding box được đưa ra,SSD tính toán luôn sự dự đoán cho việc phân loại của object vào các class có thể trongdataset
Trang 18CHƯƠNG 2 GIỚI THIỆU VỀ PHẦN CỨNG SỬ DỤNG
Nội dung chương 2 trình bày về phần cứng của raspberry pi, tìm hiểu về các loại hệđiều hành phổ biến giành cho raspberry pi và ưu nhược điểm của raspberry pi Tìmhiểu về các module mở rộng của raspberry pi (camera pi, module cấp nguồn …) vàcách kết nối các module mở rộng với raspberry pi
2.1 Giới thiệu về Raspberry Pi
2.1.1 Raspberry pi là gì?
Raspberry Pi là cái máy tính giá 35USD kích cỡ như iPhone và chạy HĐH Linux.Với mục tiêu chính của chương trình là giảng dạy máy tính cho trẻ em Được pháttriển bởi Raspberry Pi Foundation – là tổ chức phi lợi nhuận với tiêu chí xây dựng hệthống mà nhiều người có thể sử dụng được trong những công việc tùy biến khác nhau
Hình 2.6 Tổng quát Raspberry Pi
Raspberry Pi sản xuất bởi 3 OEM: Sony, Qsida, Egoman Và được phân phối chínhbởi Element14, RS Components và Egoman
Trang 19Nhiệm vụ ban đầu của dự án Raspberry Pi là tạo ra máy tính rẻ tiền có khả năng lậptrình cho những sinh viên, nhưng Pi đã được sự quan tầm từ nhiều đối tượng khácnhau Đặc tính của Raspberry Pi xây dựng xoay quanh bộ xử lí SoC BroadcomBCM2835 (là chip xử lí mobile mạnh mẽ có kích thước nhỏ hay được dùng trong điệnthoại di động) bao gồm CPU, GPU, bộ xử lí âm thanh /video, và các tính năng khác …tất cả được tích hợp bên trong chip có điện năng thấp này.
Raspberry Pi không thay thế hoàn toàn hệ thống để bàn hoặc máy xách tay Bạnkhông thể chạy Windows trên đó vì BCM2835 dựa trên cấu trúc ARM nên không hỗtrợ mã x86/x64, nhưng vẫn có thể chạy bằng Linux với các tiện ích như lướt web, môitrường Desktop và các nhiệm vụ khác Tuy nhiên Raspberry Pi là một thiết bị đa năngđáng ngạc nhiên với nhiều phần cứng có giá thành rẻ nhưng rất hoàn hảo cho những hệthống điện tử, những dự án DIY, thiết lập hệ thống tính toán rẻ tiền cho những bài họctrải nghiệm lập trình…
Trang 20 SoC 700MHz với 512MB RAM.
1 cổng HDMI cho đầu ra âm thanh / video số
1 cổng video RCA cho đầu ra video Analog
Jack Headphone Stereo 3.5mm cho đầu ra âm thanh Analog
02 cổng USB
01 đầu đọc thẻ nhớ SD để tải hệ điều hành
01 cổng Ethernet LAN
01 giao diện GPIO (General Purpose Input/Output)
Model A cũng gần tương tự như Model B nhưng có sự thay đổi như sau:
Ở đồ án lần này, em sử dụng hệ điều hành Raspbian OS
Trang 21Hình 2.8 Giao diện hệ điều hành Raspberry Pi
Đây là bản build Linux dựa trên nên Debian (Gần giống ubuntu) với giao diệnLXDE (thay vì GNOME) Có đầy đủ web browser, media player, tools, etc … Nóichung HĐH này dành cho những người muốn dùng Raspberry Pi như một cái PC
2.1.4 Một số ưu nhược điểm của Raspberry pi
Trang 22 Yêu cầu phải có kiến thức cơ bản về Linux, điện tử.
2.2 Giới thiệu về module camera cho Raspberry pi
Raspberry Pi camera là module camera được chính Raspberry Pi Foundation thiết
kế và đưa vào sản xuất đại trà từ tháng 5/2013
Raspberry Pi camera được tích hợp camera 5 Megapixel có độ nhạy sáng cao, cóthể chụp tốt ở nhiều điều kiện ánh sáng khác nhau, cả trong nhà và ngoài trời Điểmđặc biệt mà camera mang lại đó là chụp hình độ nét cao trong lúc quay phim
không tốn thêm cổng USB nào cho camera vì camera được gắn chắc chắn vàosocket CSI Điều này giúp hạn chế tình trạng nghẽn băng thông cho chip xử lý USBtrên mạch Raspberry Chiều dài cáp nối camera đã được tính toán cẩn thận khi vừa đạtđược độ dài cần thiết trong khi vẫn đảm bảo tốc độ truyền hình ảnh từ module về RPi
Hình 2.9 Kết nối camera vào socket CSI2.3 Lắp ráp phần cứng thực tế
2.3.1 Kết nối thực tế Raspberry Pi
camera được gắn vào socket CSI trên board Raspberry Pi
Trang 23Hình 2.10 Camera pi 8mpx
Để cấp nguồn cho Raspberry Pi, sử dụng module hạ áp LM2596
Để hạ từ 12V xuống 5V có dòng 2A.
Trang 24Hình 2.11 Mạch nguồn LM2596
Mạch giảm áp DC-DC Buck LM2596 3A có kích thước nhỏ gọn có khả năng giảm áp từ 30VDC xuống 1.5VDC mà vẫn đạt hiệu suất cao (92%), thích hợp cho các ứng dụng chia nguồn, hạ áp, cấp cho các thiết bị như camera, robot,
Thông số kỹ thuật:
Điện áp đầu vào: Từ 3V đến 30V.
Điện áp đầu ra: Điều chỉnh được trong khoảng 1.5V đến 30V.
Dòng đáp ứng tối đa là 3A.
Hiệu suất : 92%
Công suất : 15W
Kích thước: 45 (dài) * 20 (rộng) * 14 (cao) mm
Trang 25CHƯƠNG 3 PHẦN MỀM VÀ CÁCH CÀI ĐẶT
Nội dung chương 3 tìm hiểu về các hệ điều hành phổ biến giành cho raspberry pi,
so sánh ưu nhược điểm của các hệ điều hành và lựa chọn hệ điều hành tối ưu nhất cho
đồ án thiết kế 3 Đồng thời, tìm hiểu về cách cài đặt hệ điều hành cho raspberry pi
3.1 cài đặt hệ điều hành cho Raspberry Pi
3.1.1 Lựa chọn hệ điều hành
Trước hết, xin giới thiệu một số hệ điều hành phổ biến dành cho Raspberry Pi Tất
cả các hệ điều hành này có thể down trực tiếp trên website chính thức tại địachỉ: https://www.raspberrypi.org/downloads/
Các hệ điều hành này đều miễn phí
Một số hệ điều hành thông dụng cho Raspberry Pi:
Raspbian: https://www.raspberrypi.org/downloads/raspbian/ Bạn cũng có thể download cài đặt NOOBS (New Out Of the Box Software)
Ubuntu Mate: https://ubuntu-mate.org/raspberry-pi/
Ở đồ án lần này, em quyết định sử dụng Raspbian OS vì: