TÓM TẮT KHÓA LUẬN Ngày nay, cùng với sự phát triển của các thuật toán học máy cũng như sức mạnh của các thiết bị phần cứng máy tính, thị giác máy tính đã trở thành một trong những bài to
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
PHAN VĨNH LONG
KHÓA LUẬN TỐT NGHIỆP PHÁT HIỆN ĐỐI TƯỢNG THEO THỜI GIAN THỰC TỪ
VIDEO TRÊN KHÔNG
Real-time object detection on aerial video
KỸ SƯ NGÀNH CÔNG NGHỆ PHẦN MỀM
Trang 2ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
PHAN VĨNH LONG – 16520695
KHÓA LUẬN TỐT NGHIỆP PHÁT HIỆN ĐỐI TƯỢNG THEO THỜI GIAN THỰC TỪ
VIDEO TRÊN KHÔNG
Real-time object detection on aerial video
KỸ SƯ NGÀNH CÔNG NGHỆ PHẦN MỀM
GIẢNG VIÊN HƯỚNG DẪN
TS Ngô Đức Thành, ThS Võ Duy Nguyên
Trang 3THÔNG TIN HỘI ĐỒNG CHẤM KHÓA LUẬN TỐT NGHIỆP
Hội đồng chấm khóa luận tốt nghiệp, thành lập theo Quyết định số ……… ngày ……… của Hiệu trưởng Trường Đại học Công nghệ Thông tin
Trang 4LỜI CẢM ƠN
Lời đầu tiên, chúng tôi xin gửi lời cảm ơn đến quý thầy cô khoa Công nghệ Phần mềm đã tận tình giảng dạy, truyền đạt những kiến thức quý báu cho chúng tôi trong thời gian học đại học và tạo điều kiện, giúp đỡ cho chúng tôi thực hiện luận văn này Chúng tôi xin gửi lời biết ơn chân thành đến TS.Ngô Đức Thành Thầy đã cung cấp kiến thức, tạo điều kiện, đồng thời luôn tin tưởng, động viên chúng tôi trong quá trình hoàn thành luận văn
Chúng tôi cũng xin gửi lời cảm ơn đến TS Nguyễn Tấn Trần Minh Khang, ThS
Võ Duy Nguyên và tập thể nghiên cứu viên phòng thí nghiệm Multimedia Communications Laboratory (MMLab) đã giúp đỡ, hướng dẫn và góp ý cho luận văn Phần lớn các thí nghiệm, thực nghiệm trong luận văn được thực hiện sử dụng các thiết bị từ Multimedia Communications Laboratory hỗ trợ
Chúng tôi cũng xin chân thành cảm ơn đội ngũ giảng viên và sinh viên trường Đại học Công nghệ thông tin, Đại học Quốc gia TP.HCM đã nhiệt tình hỗ trợ trong quá trình hoàn thành luận văn
Mặc dù đã cố gắng hết sức, nhưng trong quá trình hoàn thành luận văn không thể tránh khỏi sai xót Do đó góp ý của thầy cô và các bạn là những ý kiến quý báu để luận văn được hoàn thiện hơn
Xin chân thành cám ơn
Sinh viên thực hiện
Phan Vĩnh Long
Trang 5MỤC LỤC
Chương 1 TỔNG QUAN 2
1.1 Động lực nghiên cứu 2
1.2 Mục tiêu đề tài 3
1.3 Phát biểu bài toán 3
1.4 Đối tượng và phạm vi nghiên cứu 4
1.5 Vấn đề giải quyết 5
1.6 Đóng góp luận văn 5
1.7 Bố cục luận văn 6
Chương 2 CÁC NGHIÊN CỨU LIÊN QUAN 7
2.1 Cơ sở lý thuyết 7
2.1.1 Perceptron 7
2.1.1 Hàm kích hoạt (Activation functions) 8
2.1.2 Artificial neural network (ANN) 8
2.1.3 Convolutional Neural Network (CNN) 10
2.1.4 Kernel 11
2.1.5 Max pooling 11
2.1.6 Lan truyền ngược (Backpropagation) 12
2.2 YOLO 13
2.2.1 YOLOv1 13
2.2.2 YOLOv2 14
2.2.3 YOLOv3 15
2.2.4 YOLOv4 17
Chương 3 CẢI TIẾN YOLOV4 20
Trang 63.1 Tính toán lại kích thước các anchor box 20
3.2 Tăng cường bản đồ đặc trưng 21
3.3 Thay đổi tỉ lệ ảnh đầu vào 22
3.4 Tăng cường kích thước đầu vào 22
Chương 4 THỰC NGHIỆM VÀ ĐÁNH GIÁ 23
4.1 Mô tả bộ dữ liệu 23
4.1.1 Tổng quan 23
4.1.2 Cấu trúc tổ chức bộ dữ liệu 25
4.2 Độ đo mAP 27
4.2.1 Intersection over Union (IoU) 27
4.2.2 Precision và Recall 27
4.2.3 Average Precision (AP) 28
4.3 Cài đặt thực nghiệm 30
4.3.1 Môi trường thực nghiệm 30
4.3.2 Cài đặt môi trường 31
4.3.3 Thực hiện huấn luyện 32
4.4 Kết quả thực nghiệm 33
Chương 5 PHÁT TRIỂN HỆ THỐNG PHÁT HIỆN ĐỐI TƯỢNG 36
5.1 Tổng quan hệ thống 36
5.2 Use-case diagrams 37
5.2.1 Sơ đồ use-case 37
5.2.2 Danh sách actor 37
5.2.1 Danh sách use-case 38
5.3 Activity diagrams 39
Trang 75.3.1 Đăng ký 39
5.3.2 Đăng nhập 40
5.3.3 Tải lên ảnh/ video để xử lý 41
5.3.4 Tạo luồng live stream đế xử lý 42
5.3.5 Quản lý lịch sử 43
5.3.6 Quản lý thông tin hệ thống 44
5.3.7 Quản lý người dùng 45
5.3.8 Đăng xuất 46
5.4 Thiết kế cơ sở dữ liệu 47
5.4.1 Bảng User 47
5.4.2 Bảng Model 47
5.4.3 Bảng Detection 48
Chương 6 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 50
6.1 Kết luận 50
6.2 Kết quả nghiên cứu 50
6.3 Phương hướng phát triển 51
Trang 8DANH MỤC HÌNH
Hình 1.1: Drone (trái) và hình ảnh được chụp bằng drone (phải) 4
Hình 2.1: Perceptron 7
Hình 2.2: Artificial neural network 9
Hình 2.3: Ví dụ về một Convolutional Neural Network 10
Hình 2.4: Cách hoạt động của kernel 11
Hình 2.5: Ví dụ về max pooling 12
Hình 2.6: Các bước lan truyển ngược 12
Hình 2.7: Các hoạt động của YOLO [1] 13
Hình 2.8: Cấu trúc mạng của YOLO [1] 14
Hình 2.9: Thời gian và độ chính xác của YOLOv3 [4] 16
Hình 2.10: Kiến trúc Darknet-53 17
Hình 2.11: Kiến trúc YOLOv4 [6] 18
Hình 2.12: Độ chính xác và tốc độ xử lý của YOLOv4 [6] 19
Hình 3.1: Trực quan hoá các anchor box mặc định của YOLOv4, tính toán lại sử dụng k-mean và trung bình của 2 phương pháp (trái qua phải) 20
Hình 3.2: Kiến trúc mạng mặc định của YOLOv4 21
Hình 3.3: Kiến trúc mạng YOLOv4 được tăng cường bản đồ đặc trưng 21
Hình 3.4: Hình ảnh tỉ lệ 16:9 (trái) và hình ảnh tỉ lệ 1:1 (phải) 22
Hình 4.1: Một số hình ảnh trong bộ dữ liệu VisDrone-DET 23
Hình 4.2: Sự phân bố số lượng đối tượng trong các tập dữ liệu huấn luyện, đánh giá và kiểm thử (trái sang phải, trên xuống dưới) 24
Hình 4.3: Ví dụ về đường cong Precision-Recall 28
Hình 4.4: Đường cong Precision-Recall được làm mượt 29
Hình 4.5: Đường cong Precision-Recall với 11 điểm Recall 29
Hình 5.1: Activity diagram cho use-case Đăng ký 39
Hình 5.2: Activity diagram cho use-case đăng ký 40
Hình 5.3: Activity diagram cho use-case Tải lên ảnh/ video 41
Hình 5.4: Activity diagram cho use-case Tạo luồng live stream 42
Trang 9Hình 5.5: Activity diagram cho use-case Quản lý lịch sử 43
Hình 5.6: Activity diagram cho use-case Quản lý thông tin hệ thống 44
Hình 5.7: Activity diagram cho use-case Quản lý thông tin người dùng 45
Hình 5.8: Activity diagram cho use-case Đăng xuất 46
Trang 10DANH MỤC BẢNG
Bảng 4.1: Kết quả của các mô hình YOLOv4 được cải tiến trên bộ dữ liệu
VisDrone-DET với 6 lớp đối tượng đầu tiên 33
Bảng 4.2: Kết quả của các mô hình YOLOv4 được cải tiến trên bộ dữ liệu VisDrone-DET với 4 lớp đối tượng cuối cùng mAP và FPS 34
Bảng 4.3: So sánh các phương pháp tiên tiến [19] và mô hình được đề xuất 34
Bảng 5.1: Danh sách các actor 37
Bảng 5.2: Danh sách các use-case 38
Bảng 5.3: Thiết kế dữ liệu bảng User 47
Bảng 5.4: Thiết kế dữ liệu bảng Model 48
Bảng 5.5: Thiết kế dữ liệu bảng Detection 49
Trang 11DANH MỤC TỪ VIẾT TẮT
YOLO You Only Look Once
SSD Single Shot MultiBox Detector WRC Weighted-Residual-Connections
GANs Generative Adversarial Networks
CNN Convolutional Neural Network
MLP Multilayer Perceptron
FPN Feature Pyramid Networks
Trang 12TÓM TẮT KHÓA LUẬN
Ngày nay, cùng với sự phát triển của các thuật toán học máy cũng như sức mạnh của các thiết bị phần cứng máy tính, thị giác máy tính đã trở thành một trong những bài toán được quan tâm và ứng dụng nhiều nhất trong lĩnh vực khoa học máy tính Bên cạnh đó, các thiết bị bay không người lái càng được phát triển với giá thành ngày càng giảm, đã hỗ trợ con người trong rất nhiều lĩnh vực như nông nghiệp, dịch vụ giao hàng, giám sát, trinh thám,… Dữ liệu thu thập được từ các thiết bị này là rất lớn Việc giúp máy tính tự động hiểu được thông tin từ những hình ảnh và video mà các thiết bị này thu thập được trở nên cần thiết
Một trong những bài toán được quan tâm nghiên cứu cho các thiết bị bay không người lái là bài toán phát hiện đối tượng Đã có nhiều nghiên cứu về bài toán này, tuy nhiên các kết quả còn chưa cao do bài toán có nhiều thách thức như: sự thay đổi về góc nhìn trong ảnh, yếu tố môi trường và thời tiết ảnh hưởng đến chất lượng hình ảnh, sự đa dạng về hướng của các đối tượng,…
Trong luận văn này, chúng tôi tập trung vào việc cải tiến các thuật toán đã có và đưa ra phương pháp mới cho bài toán phát hiện đối tượng trên hình ảnh và video thu thập được từ các thiết bị bay không người lái Dữ liệu được lấy trong ngữ cảnh thiết
bị quay từ trên cao với đa dạng góc độ quay, độ cao, vị trí quay,… Sự đa dạng của dữ liệu giúp thuật toán có tính ứng dụng cao hơn trong việc giải quyết các bài toán thực
tế Từ việc xây dựng thuật toán¸ chúng tôi phát triển hệ thống sử dụng để phân tích các hình ảnh, video được lưu trữ trước cũng như các video được truyền trực tiếp từ các thiết bị theo thời gian thực Hệ thống có thể được sử dụng vào các mục đích như phân tích hình ảnh, video, giám sát từ xa theo thời gian thực,… giúp tiết kiệm thời gian, công sức cũng như tăng độ hiệu quả công việc cho những tác vụ phức tạp Các kết quả nghiên cứu về thuật toán đã đạt được sự công nhận với một bài báo tại hội nghị Quốc gia REV-ECIT 2020 và một bài đang được xét duyệt tại hội nghị RIVF 2021
Trang 13Chương 1 TỔNG QUAN
Nội dung chương 1 trình bày tổng quan về động lực nghiên cứu, phát biểu bài toán, các thách thức trong bài toán, các vấn đề được giải quyết, đóng góp và bố cục luận văn
1.1 Động lực nghiên cứu
Việc ứng dụng các thiết bị công nghệ để giải quyết các vấn đề trong xã hội ngày càng được quan tâm và đầu tư phát triển, đặc biệt là trong quá trình phát triển các thành phố thông minh Một trong những bài toán của đô thị thông minh đó là giám sát từ xa thông qua các camera cố định và các thiết bị bay không người lái Các thiết
bị bay không người lái ngày càng trở nên phổ biến nhờ vào sự phát triển nhanh về phần cứng giúp giảm chi phí sản xuất Các thiết bị này được ứng dụng rộng rãi bởi
sự cơ động và tiện dụng, có thể hoạt động ở nhiều địa hình, thời tiết khác nhau và dễ dàng vận chuyển Đa số các thiết bị bay không người lái hiện nay đã có tích hợp chức năng gửi hình ảnh trực tuyến (livestream) đến các máy chủ từ xa, tuy nhiên rất ít các thiết bị được áp dụng các công nghệ xử lý hình ảnh phát hiện đối tượng vì hạn chế về phần cứng và khả năng vận tải
Trong khi đó, các thuật toán trong lĩnh vực thị giác máy tính ngày càng mạnh
mẽ nhờ vào sự phát triển của dữ liệu, phần cứng và máy học Trong đó, các thuật toán học sâu cho phép phát hiện đối tượng với độ chính xác cao Một số thuật toán có thể
xử lý với tốc độ nhanh thời gian thực, thích hợp cho các bài toán yêu cầu tốc độ xử
lý nhanh
Từ động lực đó, chúng tôi đã nghiên cứu việc sử dụng dữ liệu từ các thiết bị bay không người lái, cải tiến một số phương pháp phát hiện đối tượng tiên tiến và ứng dụng các thuật toán này cho hệ thống nhằm giải quyết bài toán phát hiện đối tượng trong ảnh và video trên không Hệ thống phát hiện đối tượng trong ảnh và video một cách tự động giúp người dùng có cái nhìn trực quan hơn, đồng thời hệ thống cũng có thể sử dụng làm đầu vào để giải quyết các bài toán phức tạp hơn
Trang 141.2 Mục tiêu đề tài
Trong đề tài này, chúng tôi tập trung vào việc nghiên cứu các thuật toán phát hiện đối tượng tiên tiến, từ đó đưa ra các cải tiến cho thuật toán hiện tại để đạt kết quả tốt hơn cho bài toán phát hiện đối tượng cho video trên không
Từ các nghiên cứu trên, chúng tôi xây dựng hệ thống phát hiện đối tượng trong
dữ liệu từ nhiều nguồn khác nhau như hình ảnh, video Hệ thống sẽ tự động phân tích
dữ liệu nhận được bằng cách phát hiện các đối tượng có trong khung hình, giúp người
sử dụng tiết kiệm công sức và thời gian trong việc phân tích dữ liệu Đồng thời kết quả của hệ thống cũng có thể sử dụng làm đầu vào cho các hệ thống khác phức tạp hơn Ngoài việc phát hiện đối tượng trong ảnh, hệ thống còn có khả năng tiếp nhận phân tích các luồng phát trực tiếp (live stream) và phát lại hoặc lưu xuống bộ nhớ cho người dùng
Việc phát triển một hệ thống hoàn chỉnh để đưa vào vận hành trong điều kiện thực tế là một bài toán khó, yêu cầu nhiều về tài nguyên Do đó, giới hạn trong đề tài khoá luận này, chúng tôi mong muốn có thể giải quyết được những vấn đề chính của một hệ thống hoàn chỉnh, từ đó làm nền tảng để phát triển những hệ thống phức tạp
có thể ứng dụng vào những điều kiện thực tế với số lượng người dùng lớn và nguồn
dữ liệu đa dạng, liên tục
1.3 Phát biểu bài toán
Bài toán phát hiện đối tượng là một trong những bài toán được quan tâm nghiên cứu của lĩnh vực thị giác máy tính nói riêng và khoa học máy tính nói chung Dữ liệu đầu vào của bài toán phát hiện đối tượng là ảnh, đầu ra của bài toán là vị trí của các đối tượng trong ảnh đó Bài toán phát hiện đối tượng trong video tương tự như bài toán phát hiện đối tượng trong ảnh, tuy nhiên đầu vào là một tập các ảnh theo thứ tự Bài toán phát hiện đối tượng trong video từ trên không là một bài toán phát hiện đối tượng, với các hình ảnh đầu vào được lấy trong ngữ cảnh có góc nhìn trên cao,
Trang 15thông thường được ghi lại bởi các thiết bị bay không người lái Hình 1.1 là hình ảnh
về drone và hình ảnh được chụp bởi drone
Hình 1.1: Drone (trái) và hình ảnh được chụp bằng drone (phải)
1.4 Đối tượng và phạm vi nghiên cứu
Đối tượng mà để tài này hướng đến là các người dùng có nhu cầu sử dụng hệ thống phát hiện đối tượng thông qua dịch vụ trực tuyến như các doanh nghiệp, tổ chức cung cấp hoặc sử dụng các thiết bị bay không người lái kèm chức năng giám sát, người dùng cá nhân đã sở hữu các thiết bị bay không người lái cần sử dụng thêm tính năng phát hiện đối tượng, những khách có nhu cầu sử dụng hệ thống phát hiện đối tượng với dữ liệu hình ảnh, video có sẵn,…
Với sự phát triển của đa dạng các thiết bị công nghệ có màn hình hiển thị và kết nối mạng máy tính, để hệ thống có thể được sử dụng trên nhiều thiết bị, chúng tôi đã phát triển hệ thống trên nền tảng ứng dụng web
Để đảm bảo tính ứng dụng thực tiễn của hệ thống, chúng tôi đã xây dựng hệ thống với đa dạng kiểu dữ liệu đầu vào, bao gồm hình ảnh, video được tải lên và luồng phát trực tiếp, giúp người sử dụng có đa dạng về sự lựa chọn kiểu dữ liệu đầu vào được sử dụng
Có rất nhiều thuật toán có thể sử dụng để giải quyết bài toán phát hiện đối tượng Tuy nhiên cùng với sự phát triển của phần cứng máy tính và sự ra đời của học sâu, các thuật toán được phát triển dựa trên mạng nơ ron tích chập ngày càng được quan
Trang 16tâm và trở nên phổ biến trong môi trường nghiên cứu cũng như ứng dụng, vì các thuật toán này cho kết quả với độ chính xác cao, đồng thời một số thuật toán có khả năng tính toán với tốc độ nhanh, có thể cho ra kết quả theo thời gian thực Một trong những thuật toán điển hình đó là YOLO Với phiên bản mới nhất là YOLOv4, thuật toán này vừa cho phép phát hiện đối tượng với độ chính xác cao, đồng thời cho kết quả trong thời gian thực Trong phần nghiên cứu cải tiến các thuật toán, chúng tôi tập trung vào nghiên cứu và đưa ra các mô hình cải tiến của thuật toán YOLOv4 nhằm tăng cường khả năng phát hiện đối tượng cho thuật toán
1.5 Vấn đề giải quyết
Trong đề tài này, chúng tôi đã giải quyết các vấn đề:
• Tìm hiểu về bài toán và các bộ dữ liệu cho bài toán, cấu trúc của các bộ dữ liệu
• Tìm hiểu và nghiên cứu thuật toán phát hiện đối tượng YOLOv4 và các nghiên cứu liên quan
• Thử nghiệm và đánh giá các thuật toán trên cùng bộ dữ liệu gồm 10 lớp đối tượng là people, bicycle, car, van, truck, tricycle, awning-tricycle, bus, motor
• Xây dựng hệ thống cung cấp dịch vụ phát hiện đối tượng cho các kiểu dữ liệu đầu vào bao gồm ảnh, video và luồng phát trực tiếp
• Xây dựng các tính năng liên quan cho hệ thống như đăng nhập, đăng ký, quản
lý dữ liệu, tải lên dữ liệu và tải về kết quả và một số tính năng khác
1.6 Đóng góp luận văn
Các đóng góp trong luận văn bao gồm:
• Nghiên cứu và thực nghiệm thuật toán YOLOv4 và một số thuật toán tiên tiến trên cùng bộ dữ liệu VisDrone-DET, bao gồm nhiều hình được lấy từ nhiều góc quay, độ cao
• Đưa ra một số cải tiến cho thuật toán YOLOv4 nhằm tăng cường độ chính xác cho thuật toán YOLOv4
Trang 17• Có bài báo khoa học được công bố cho các nghiên cứu
• Xây dựng hệ thống cung cấp dịch vụ phát hiện đối tượng dưới dạng ứng dụng web và các tính năng bổ sung cho hệ thống
1.7 Bố cục luận văn
Báo cáo được chia thành các phần chính:
Chương 1 Giới thiệu tổng quan về khoá luận, bài toán phát hiện đối tượng trong video từ trên không, các vấn đề được giải quyết và đóng góp của khoá luận
Chương 2 Giới thiệu về một số khái niệm liên quan đến nghiên cứu và các nghiên cứu liên quan
Chương 3 Trình bày về các cải tiến được áp dụng để cải thiện độ chính xác của mô hình
Chương 4 Trình bày về các bước thực hiện và kết quả của các thực nghiệm
Chương 5 Trình bày tổng quan về hệ thống phát hiện đối tượng được xây dựng và kiến trúc, thiết kế của hệ thống
Chương 6 Kết luận về các kết quả đạt được và các hướng phát triển sau này
Trang 18Chương 2 CÁC NGHIÊN CỨU LIÊN QUAN
Nội dung chương 2 là giới thiệu về các nghiên cứu liên quan đã được nghiên cứu
và công bố cho bài toán phát hiện đối tượng trong video từ trên không Đồng thời giới thiệu về các hướng tiếp cận cho bài toán
2.1 Cơ sở lý thuyết
2.1.1 Perceptron
Một perceptron (một tế báo thần kinh) được hiểu đơn giản là một hàm toán học nhận đầu vào từ một hoặc nhiều số, thực hiện các phép toán và trả về kết quả đầu ra Các trọng số ẩn (weights) của perceptron - là các giá trị cần tìm và được xác định trong quá trình huấn luyên (training) dựa trên dữ liệu huấn luyện (training data) Có thể hình dung hoạt động của perceptron theo hình Hình 2.1
Hình 2.1: Perceptron Trong Hình 2.1 có thê thấy dữ liệu đầu vào được biểu diễn bởi vector 𝑋 =[𝑥0, 𝑥1, … , 𝑥𝑛] và các trong số cần học được biểu diễn bởi vector 𝑊 =[𝑤0, 𝑤1, … , 𝑤𝑛], đi qua perceptron và kết quả đầu ra được trả thông qua một hàm gọi
là unit step function trong trường hợp trên là binary Mục đích của hàm này sử dụng
để cho perceptron có thể ra được quyết định
Trang 192.1.1 Hàm kích hoạt (Activation functions)
Hàm kích hoạt hay activation functions được sinh ra với mục đích bẻ gãy sự tuyến tính của mạng nơ ron Các hàm này có thể hiểu đơn giản như một bộ lọc để quyết định xem thông tin có được đi qua nơ ron hay không Trong quá trình huấn luyện mạng nơ ron, các hàm kích hoạt đóng vai trò quan trọng trong việc điều chỉnh
độ dốc của đạo hàm Chúng ta cần hiểu rằng tính chất của các hàm phi tuyến này giúp cho mạng nơ ron có thể học được biểu diễn của các hàm phức tạp hơn là chỉ sử dụng các hàm tuyến tính Hầu hết các activation functions là các hàm liên tục (continuous function) và khả vi (differentiable functions) Các hàm này là các hàm liên tục, tức là
có sự thay đổi nhỏ ở kết quả đầu ra nếu như đầu vào có sự thay đổi nhỏ và khả vi tức
là có đạo hàm tại mọi điểm trong miền xác định của nó Việc tính toán được đạo hàm
là rất quan trọng và nó là một yếu tố quyết định đến nơ ron của chúng ta có thể huấn luyện được hay không
2.1.2 Artificial neural network (ANN)
Artificial neural network (ANN) có thể coi là một tập hơn của các perceptron và các hàm kích hoạt Các perceptron đơn lẻ sẽ được kết hợp với nhau thành các lớp ẩn hidden layers hay units Các lớp ẩn sử dụng các hàm kích hoạt phi tuyến ánh xạ các lớp đầu vào thành các lớp đầu ra trong một không gian có số chiều thấp hơn và được gọi chung là mạng nơ ron nhân tạo ANN có thể hiểu là một hàm biến đổi (ánh xạ) từ đầu vào đến đầu ra Ánh xạ này được tính bằng cách thêm và các ma trận trọng số của các đầu vào với các độ lệch biases Các giá trị của ma trận trong số weights và giá trị của độ sai lệch biases tương ứng với kiến trúc được gọi là mô hình hay model Quá trình training model là quá trình xác định các giá trị của các weights và biases Các giá trị của chúng được khởi tạo với các giá trị ngẫu nhiên khi bắt đầu training Muốn training chúng ta cần phải định nghĩa bằng hàm lỗi của mạng Lúc này chúng ta sẽ nhắc đến hai giá trị đó là ground truth - tức là giá trị thực tế có trong tập dữ liệu huấn luyện và predict output là giá trị mà mô hình dự đoán Lỗi được tính bằng cách sử dụng hàm loss định nghĩa dựa trên sự khác nhau giữa hai giá trị này
Trang 20Dựa trên gíá trị của hàm loss được tính toán, các trọng số weights được điều chỉnh tại mỗ bước trong quá trình training Việc huân luyện mô hình được dừng lại khi lỗi không thể giảm thêm được nữa Quá trình training thực chất là tìm ra các đặc trưng features trong dữ liệu đầu vào Các features này là một đại diện tốt hơn so với dữ liệu thô Hình 2.2 là sơ đồ của mạng nơ ron nhân tạo ANN hay perceptionron nhiều lớp
Hình 2.2: Artificial neural network Một số đầu vào của dữ liệu x được chuyển qua một tập hợp các perceptron và xuất hiện ở đầu ra Theo lý thuyết xấp xỉ vũ trụ - universal approximation theorem thì một mạng nơ ron có thể xấp xỉ mọi hàm phi tuyến Tất nhiên là tuỳ thuộc vào số lượng các layers và số nodes của mạng Lớp ẩn - the hidden layer hay thường gọi là dense layer - thường đi kèm với mỗi activation function để giúp giải quyết một số vấn đề về đạo hàm được bàn luận phía trên Số lượng các tham số của mạng như số
nơ ron trên mỗi layers, số layers trong mỗi mạng được lựa chọn tuỳ thuộc vào bài toán
Trang 212.1.3 Convolutional Neural Network (CNN)
Convolutional neural networks (CNN) cũng tương tự như các kiến trúc mạng MLP bao gồm các weights, biases, và các activation function được sử dụng để biến đổi dữ liệu tuyến tính về dạng phi tuyến Trong các kiến trúc mạng chính thống thì mỗi neural trong một layer được kết nối theo kiểu fully connected - kết nối đầy đủ đến các neural của layers tiếp theo Tất cả các nơ ron thuộc cùng một layers không chia sẻ bất kì một kết nối nào Một nhược điểm của mạng này là số lượng kết nối sẽ trở nên khổng lồ nếu như kích thước của từng layers là lớn và nó không phù hợp cho các dữ liệu giống như ảnh Điều đó dẫn đến khái niệm overfitting trên toàn bộ dữ liệu học Nếu như ảnh chúng ta có kích thước lớn thì việc sử dụng mô hình mạng chính thống lại càng làm cho số lượng các tham số trở nên lớn hơn Với đặc thù của dữ liệu ảnh, một image có thể chứa giá trị thuộc 3 thuộc tính là height, width, và depth Trong
đó Depth được gọi là channel của hình có thể là red, blue, và green Mạng CNN được thiết kế với tư tưởng tích chập các input layers để làm đầu vào cho layers tiếp theo Việc chuyển đổi đó thực hiện trên mỗi layer
Hình 2.3: Ví dụ về một Convolutional Neural Network Các lớp CNN được sử dụng để trích chọn ra các đặc trưng và partern trong hình ảnh Các số lượng tham số được sử dụng trong mạng CNN được chứng minh là nhỏ hơn rât nhiều so với mạng fully connected và hiểu quả mạng lại thường là cao hơn nhiều so với các phương pháp trước đó
Trang 22đó là stride và size Size là kích thước của một kernel (có thể là kích thước của một hình chữ nhật bất kì) và stride là số bước nhảy của kernel Nếu stride bằng 1 thì gần như toàn bộ pixel trên ảnh sẽ được trượt qua và tính tích chập Nếu stride bằng 2 chúng ta cứ cách 2 pixel lại tính tích chập một lần và như vậy số lượng pixel của ảnh đầu ra bị giảm đi một nửa so với stride = 1 Padding có thể giúp số chiêu của ảnh đầu
ra giống với ảnh input
2.1.5 Max pooling
Max pooling là một layer được thêm vào giữa các lớp convolution với mục đích
là giảm kích thước của layers thông qua việc lấy mẫu - sampling Việc lấy mẫu này thực hiện bằng cách lấy giá trị lớn nhất trong cửa sổ pooling được chọn Ngoài ra chúng ta cũng có thể bắt gặp khai niệm Average pooling tức là lấy mẫu bằng cách lấy
Trang 23giá trị trung bình của tất cả các giá trị trong cửa sổ pooling Pooling được xem là một trong những kĩ thuật giúp giảm hiện tượng overfitting trong CNN Chúng ta có thể hình dung hoạt động của nó trong Hình 2.5
Hình 2.5: Ví dụ về max pooling
2.1.6 Lan truyền ngược (Backpropagation)
Thuật toán lan truyền ngược - Backpropagation là một trong những thuật toán cốt lõi của mạng nơ ron hiện đại Thông thường thì việc huấn luyện và tối ưu một mạng MLP được thực hiện bằng giải thuật Gradient Descent, tức là tối ưu dựa trên đạo hàm Muốn như vậy chúng ta sẽ cần phải tính toán được đạo hàm của từng ma trận trọng số trong quá trình training Tuy nhiên việc tính toán trực tiếp giá trị đạo hàm ngay từ các layer đầu là một việc cực kì khó khăn bởi vì hàm mất mát sẽ không phụ thuộc đơn lẻ vào trọng số của layer đó Backpropagation là một thuật toán lấy tư tưởng bằng việc tính đạo hàm từ cuối sau đó lan truyền giá trị này dần vào trong các layers phía trên của mạng nơ ron thông qua quy tắc của chain rule - đạo hàm hàm hợp Chúng ta có thể hình dung bước cập nhật trong số trong Hình 2.6
Hình 2.6: Các bước lan truyển ngược
Trang 242.2 YOLO
2.2.1 YOLOv1
Thuật toán YOLO được Joseph Redmon và các cộng sự giới thiệu lần đầu tiên trong bài báo You Only Look Once: Unified, Real-Time Object Detection [1] tại hội nghị Conference on Computer Vision and Pattern Recognition (CVPR) vào tháng 6 năm 2016
Hình 2.7: Các hoạt động của YOLO [1]
Về ý tưởng YOLO chia ảnh đầu vào thành một lưới có kích thước 7×7, mỗi ô trong lưới sẽ làm nhiệm vụ dự đoán một đối tượng Mỗi ô sẽ dự đoán 30 thông tin: 2 bounding box, mỗi bounding box có 5 thông tin bao gồm x, y, width, height, box objectness score, trong đó 4 thông tin đầu sẽ cung cấp vị trí cũng như kích thước của hộp, thông tin thứ 5 cung cấp mức độ khả năng tồn tại một đối tượng ở ô này Khả năng càng cao thì có nghĩa là đối tượng càng được bao trọn trong hộp Cuối cùng là
20 thông tin class score tương ứng với từng lớp đối tượng cần phải dự đoán Mỗi class score sẽ thể hiện khả năng đối tượng được dự đoán đang thuộc loại đối tượng nào
Trang 25Hình 2.8: Cấu trúc mạng của YOLO [1]
YOLO tiến hành dự đoán thông qua mạng học sâu, YOLO sử dụng mạng CNN gồm có 24 lớp convolutional theo sau đó là 2 lớp fully connected Một số điểm đáng chú ý đó là có sự xuất hiện của các lớp convolution, mà ở đó kích thước kernel là 1×1, vốn có tác dụng trong việc giảm số lượng channel của lớp trước đó
2.2.2 YOLOv2
YOLOv2 hay YOLO9000 được công bố trong bài báo YOLO9000: Better, Faster, Stronger [2] tại hội nghị Conference on Computer Vision and Pattern Recognition (CVPR) vào tháng 7 năm 2017 YOLOv2 được đánh giá trên bộ dữ liệu Pascal VOC và COCO Với bộ bộ dữ liệu VOC2007, YOLOv2 đạt được 78,6 mAP
và 40 FPS
Một trong những nhược điểm của YOLO đó là hoạt động kém hiệu quả trên các đối tượng nhỏ dẫn đến độ phủ của dự đoán đúng cũng giảm theo YOLOv2 là phiên bản thứ hai của YOLO với những cải tiến cả về độ chính xác lẫn tốc độ
Để đạt được điều này, đầu tiên tác giả thêm các batch normalization vào lớp convolution Mục tiêu là để làm giảm độ nhiễu của các mẫu dữ liệu học trong quá trình huấn luyện Sau đó tác giả áp dụng kỹ thuật huấn luyện theo nhiều độ phân giải bằng cách áp dụng huấn luyện 2 giai đoạn Ban đầu tác giả huấn luyện mạng phân
Trang 26loại VGG-16 bằng ảnh kích thước 224×224 Sau đó thay thế lớp fully connected của VGG-16 bằng lớp convolution và huấn luyện lại từ đầu bằng ảnh kích thước 448×448 YOLOv2 cũng thay đổi cách chọn các prior box Tác giả sử dụng 5 box thay vì
2 như trước và các prior box này có tỉ lệ khác nhau để khớp với bộ dữ liệu thực tế Tác giả còn thay đổi cấu trúc của mạng để chuyển đổi chức năng dự đoán phân lớp của mỗi ô sang cho mỗi box, tức là ở YOLOv2 mỗi box sẽ có bộ class score riêng Lấy ý tưởng từ SSD [3], tác giả đã nghĩ cách điều chỉnh cấu trúc mạng, tạo ra lớp Passthrough, với mục tiêu dự đoán trên feature map kích thước 13×13 Tác giả đã lấy thêm đặc trưng từ lớp trước đó là lớp 26×26, rồi tiến hành điều chỉnh kích thước và nối vào với đặc trưng 13×13 sẵn có để tạo ra đặc trưng tốt hơn Ngoài ra, trong quá trình huấn luyện mạng học sâu, tác giả còn sử dụng K-cluster để chọn ra các kích thước prior box tối ưu cho bộ dữ liệu mà ông đang đánh giá Cuối cùng, tác giả thực nghiệm với nhiều kích thước ảnh đầu vào khác nhau, bởi vì các lớp fully connected
đã loại bỏ hoàn toàn cho nên với kích thước ảnh lớn hơn, sẽ cho ra dự đoán trên grid cells lớn hơn Việc cần làm đó là đảm bảo ảnh đầu vào phải có kích thước chia hết cho 32 bởi vì lớp đầu tiên sẽ chuyển đặc trưng xuống còn kích thước 32×32 Cấu trúc mạng CNN mà tác giả sử dụng để rút trích đặc trưng là Darknet-19, sử dụng các bộ lọc có kích thước 3×3 để rút trích đặc trưng và bộ lọc 1×1 để giảm số lượng channel của đầu ra, ngoài ra Darknet còn sử dụng Average Pooling để thực hiện dự đoán
2.2.3 YOLOv3
Bài báo về YOLOv3 có tên YOLOv3: An Incremental Improvement [4] được đăng lần đầu tiên vào ngày 8 tháng tư năm 2018 Bài báo nói về những cải tiến mới nhất mà tác giả dành cho YOLO Cụ thể là cải thiện độ chính xác trên những đối tượng nhỏ và đồng thời chuyển YOLO từ phương pháp phát hiện và phân loại đối tượng sang phát hiện và phân loại đối tượng đa nhãn, tức là mỗi đối tượng phát hiện được sẽ có xác suất cho từng loại đối tượng thay vì chỉ chọn duy nhất loại đối tượng
có xác suất cao nhất
Trang 27Hình 2.9: Thời gian và độ chính xác của YOLOv3 [4]
Phương pháp YOLOv1 và YOLOv2 sử dụng hàm softmax để chuyển đổi class score sang xác suất, để tổng của chúng trở thành 1, điều này tốt đối với bài toán phân loại đơn Như nếu có trường hợp, phát hiện xe ô tô, ta có 2 phân lớp như, xe ô tô và
xe bốn bánh, khi đó xác suất phân loại phải lớn hơn 1 mới đúng YOLOv3 chính vì thế sử dụng phương pháp phân lớp đối tượng đa nhãn Bằng việc thay thế softmax bằng các logistic regression độc lập nhau Sủ dụng hàm độ lỗi binary cross-entropy cho mỗi nhãn, thay vì dùng trung bình của bình phương độ lỗi (Mean Square Error), điều này giúp giảm độ phức tạp thuật toán đã từng khi phải dùng hàm softmax YOLOv3 còn sử dụng thêm mạng kim tự tháp đặc trưng (Feature Pyramid Networks – FPN), và cho ra ba dự đoán ở mỗi vị trí Mỗi dự đoán thực hiện ở từng feature map thì có quy mô khác nhau:
• Feature map ở lớp cuối cùng
• Quay ngược trở lại hai lớp và tăng kích thước của feature map lên 2 lần, sau
đó cộng với feature map to ở trên, tiến hành dùng lớp convolutional để rút trích đặc trưng lần hai phục vụ quá trình dự đoán
• Lặp lại bước 2 trên một feature map có kích thước lớn hơn
Trang 28Hình 2.10: Kiến trúc Darknet-53 Darknet-53 [4] được sử dụng để rút trích đặc trưng cho phương pháp YOLOv3
để thay thế cho Darknet-19, điều đáng lưu ý ở Darknet-53 đó là việc sử dụng nhiều skip connection, residual network như của ResNet [5] Hình 2.10 là kiến trúc của Darknet-53
2.2.4 YOLOv4
YOLOv4 được giới thiệu trong bài báo YOLOv4: Optimal Speed and Accuracy
of Object Detection [6] bởi Alexey Bochkovskiy và các cộng sự YOLOv4 đã cho kết quả cao với 43.5% AP, 65 FPS trên bộ dữ liệu COCO với phần cứng sử dụng GPU Tesla V100 Để đạt được kết quả này, YOLOv4 đã áp dụng nhiều kỹ thuật mới như Weighted-Residual-Connections (WRC), Cross-Stage-Partial-connections (CSP),
Trang 29Cross mini-Batch Normalization (CmBN), Self-adversarial-training (SAT), activation, Mosaic data augmentation, DropBlock regularization, CIoU loss
Mish-Hình 2.11: Kiến trúc YOLOv4 [6]
Kiến trúc của YOLOv4 (Hình 2.11: Kiến trúc YOLOv4 ) gồm 4 phần chính:
• Input: là phần nhận ảnh đầu vào của mạng
• Backbone: là phần sử dụng để trích xuất đặc trưng YOLOv4 sử dụng mạng CSPDarknet53 [6], tuy nhiên có thể thay bằng các mạng khác như VGG-16 [7], ResNet-50 [5], SpineNet [8], EfficientNet-B0/B7 [9], CSPResNeXt50 [10], CSPDarknet53 [10]
• Neck: giúp tăng cường đặc trưng của ảnh bằng cách sử dụng các aggregation block ví dụ như Feature Pyramid Network [11], PAN [12], RFB [13]) và một số block khác như ASPP [14], RFP [13], CBAM [15]
path-• Head: là phần thực hiện chức năng phát hiện (detection) Head có thể sử dụng các bộ phát hiện đối tượng one-stage như YOLOv3 [4] và SSD [3] hoặc two-stage như Faster R-CNN [16], Mask R-CNN [17], R-FCN [18]
Trang 30Hình 2.12: Độ chính xác và tốc độ xử lý của YOLOv4 [6]
Hình 2.12 là bảng so sánh tốc độ xử lý và độ chính xác của YOLOv4 so với các phiên bản trước cũng như một số thuật toán phát hiện đối tượng tiên tiến khác Có thể thấy được YOLOv4 có độ chính xác cao, đồng thời có tốc độ xử lý vượt trội so với các phương pháp được so sánh
Trang 31Chương 3 CẢI TIẾN YOLOV4
Để tăng cường độ chính xác của thuật toán YOLOv4 Chúng tôi đã đưa ra một
số cải tiến trên thuật toán YOLOv4 cho bài toán phát hiện đối tượng từ video trên không Chương 3 sẽ nói chi tiết về các cải tiến đã được thực hiện
3.1 Tính toán lại kích thước các anchor box
Bộ dữ VisDrone-DET có rất nhiều đối tượng với đa dạng kích thước khác nhau Để giải quyết vấn đề về này, chúng tối tính toán lại kích thước của các anchor box sử dụng thuật toán k-mean Số lượng anchor box vẫn được giữ nguyên so với bài báo gốc là 9 Độ đo khoảng cách sử dụng cho thuật toán k-mean là độ đo Euclidean được tính bởi công thức 3.1
𝑑(𝑥, 𝑦) = √(𝑥1− 𝑦1)2+ (𝑥2− 𝑦2)2+ ⋯ + (𝑥𝑛− 𝑦𝑛)2 (3.1)
Hình 3.1: Trực quan hoá các anchor box mặc định của YOLOv4, tính toán lại sử
dụng k-mean và trung bình của 2 phương pháp (trái qua phải)
Tuy nhiên việc tính toán lại các anchor box sử dụng thuật toán k-mean với độ đo Euclidean cho ra các anchor box với kích thước rất nhỏ, làm ảnh hưởng đến kết quả phát hiện đối tượng Do đó chúng tôi tính lại kích thước các anchor box một lần nữa bằng cách lấy lần lượt giá trị trung bình các cạnh của anchor box mặc định và anchor box được tính lại sử dụng k-mean Với mỗi cặp cạnh tương ứng, cạnh mới của anchor box được tính lại theo công thức 3.2
Trang 32𝐸𝑞 =𝐸𝑑+ 𝐸𝑟
2
(3.2)
3.2 Tăng cường bản đồ đặc trưng
Các đối tượng được chụp trên không thông thường có kích thước nhỏ so với ảnh Do
đó để phát hiện được các đối tượng nhỏ tốt hơn, chúng tôi thực hiện một số thay đổi nhỏ trong kiến trúc mạng mặc định của YOLOv4 để tăng cường độ chính xác
Hình 3.2: Kiến trúc mạng mặc định của YOLOv4
Hình 3.3: Kiến trúc mạng YOLOv4 được tăng cường bản đồ đặc trưng
Theo hình Hình 3.2 và hình Hình 3.3, chúng tôi thực hiện thay đổi đầu vào của route ngay sau kết quả của CSP8 thành phía sau CSP2 Đồng thời để route hoạt động chính xác, chúng tôi thay đổi giá trị stride của upsampling tương ứng từ 2 lên 4