Tải bản đầy đủ (.pdf) (45 trang)

đồ án 1 traffic object detection

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.34 MB, 45 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>NĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CƠNG NGHỆ THƠNG TIN </b>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH </b>

<b>TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN </b>

<b>KHOA CÔNG NGHỆ PHẦN MỀM </b>

<b>21522441 – Nguyễn Minh Pháp </b>

<b>21520252 – Nguyễn Phước Hưng </b>

<b>ĐỒ ÁN 1 </b>

<b>TRAFFIC OBJECT DETECTION </b>

<b>GIẢNG VIÊN HƯỚNG DẪN </b>

<b>TS. NGUYỄN TẤN TRẦN MINH KHANG </b>

<b>TP. HỒ CHÍ MINH, 2023</b>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

1.4. Mục tiêu và phạm vi nghiên cứu ... 3

1.5. Đóng góp của nghiên cứu ... 4

1.6. Bố cục của báo cáo ... 4

Chương 2. PHƯƠNG PHÁP ... 5

2.1. YOLOv8 ... 5

2.1.1. YOLO ... 6

2.1.2. Điểm nổi bật của YOLOv8 ... 6

2.2. Mô hình phân loại biển báo giao thơng đơn giản ... 8

Chương 3. KẾT QUẢ THỰC NGHIỆM ... 11

3.1. Bộ dữ liệu ... 11

3.1.1. Obstacle detection Computer Vision Project [4] ... 11

3.1.2. Vietnamese traffic sign dataset [5] ... 11

3.2. Kết quả thực nghiệm ... 12

3.2.1. YOLOv8 ... 12

3.2.2. Mơ hình phân loại biển báo ... 15

Chương 4. TRIỂN KHAI ỨNG DỤNG ... 19

4.1. Công nghệ sử dụng ... 19

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

4.2.3. Thiết kế giao diện ... 24

4.2.4. Thiết kế Back-end API ... 29

Ảnh submit Google Play ... 36

sSource code Github ... 36

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

<b>DANH MỤC HÌNH </b>

Hình 1. Đầu ra và đầu vào của bài toán TOD [1]. ... 3

Hình 2. Cấu trúc của YOLOv8 [1] ... 5

Hình 3. Minh họa phương pháp anchor box [2]. ... 6

Hình 4. Từ anchor box đến bounding box [3]. ... 7

Hình 5. Hình ảnh bàn cờ đã được Mosaic Augmentation [1] ... 8

Hình 6: Cấu trúc mơ hình phân lớp đơn giản. ... 10

Hình 7. Một số hình ảnh từ bộ dữ liệu [4]. ... 11

Hình 8. Hình ảnh từ bộ dữ liệu Vietnamese traffic sign dataset [5]. ... 12

Hình 9: Phân bố đối tượng có trong tập train. ... 13

Hình 10: Đánh giá mơ hình theo từng lớp trên bốn độ đo: Precision, Recall, Precision-recall, F1 (Trái sang phải, trên xuống dưới) ... 14

Hình 11: Confusion matrix mơ hình YOLOv8nano trên tập test. ... 15

Hình 21: Giao diện danh sách video của người dung. ... 26

Hình 22: Giao diện loading khi mới khởi động ứng dụng. ... 27

Hình 23: Giao diện phát hiện đối tượng thời gian thực ... 28

Hình 24: Cấu trúc phần mềm Traffic Object Detection ... 29

Hình 25: Các module có trong phần mềm lõi ... 30

Hình 26: Cấu trúc vận hành phần mềm lõi ... 31

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

Hình 27: Hình submit Google Play ... 36Hình 28: Github Front-end ... 36Hình 29: Github Back-end. ... 37

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

<b>DANH MỤC BẢNG</b>

Bảng 1: Kết quả thực nghiệm trên từng lớp ... 13Bảng 2: Kết quả đánh giá mơ hình phân lớp đơn giản ... 16

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

<b>DANH MỤC TỪ VIẾT TẮT </b>

Project

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

<b>TÓM TẮT </b>

Traffic Object Detection (TOD) là bài toán phát hiện các đối tượng phổ biến xuất hiện trong các tình huống giao thơng thường. Bài tốn là tiền đề cho các ứng dụng hỗ trợ người lái, phương tiện giao thông tự vận hành. Các đối tượng giao thông phổ biến xuất hiện trong các tình huống giao thơng thường bao gồm xe ô tô, xe máy, người đi bộ, xe đạp, phương tiện giao thơng cơng cộng. Ngồi ra, bài tốn TOD cũng có thể được mở rộng để phát hiện các đối tượng giao thông khác, chẳng hạn như biển báo giao thông, đèn tín hiệu, v.v. Ở bài nghiên cứu này, nhóm nghiên cứu đã tiến hành thực nghiệm phương pháp YOLOv8 trên bộ dữ liệu

Obstacle Detection Computer Vision Project (ODCVP) nhằm đánh giá khả năng của phương pháp trên bài tốn TOD. Đồng thời, nhóm nghiên cứu sẽ trình bày các cơng nghệ sử dụng và phương pháp xây dựng ứng dụng tích hợp mơ hình đã được huấn luyện ở trên với mong muốn đánh giá tính khả thi và tiềm năng áp dụng bài toán TOD trên các thiết bị di động.

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

<b>Chương 1. MỞ ĐẦU </b>

<b>1.1. Động lực nghiên cứu </b>

Trong những năm gần đây, các phương tiện tự hành (self-driving) hoặc các ứng dụng hỗ trợ người lái (driver assist) bằng phương pháp máy học đã và đang được xem xét ứng dụng vào đời sống thực tiễn dưới dạng tích hợp vào cái thiết bị hỗ trợ . Trong đó, bài tốn Traffic object detection (TOD) là một trong những bài toán chính được sử dụng làm cơng nghệ nền trong nhiều hệ thống hỗ trợ người lái hiện nay. Ở Việt Nam, các ứng dụng hỗ trợ người lái vẫn chưa phát triển một cách rõ rệt so với toàn cầu do một số điểm đặc biệt trong giao thông Việt Nam. Theo thống kê từ bộ công an, trong năm 2022 trên cả nước xảy ra 11.448 vụ tai nạn, làm chết 6.384 người, bị thương 7.804 người. Tuy giảm 35,15% so với cùng kỳ nằm 2019, giao thông Việt Nam vẫn được đánh giá là nguy hiểm và mất trật tự trong khu vực cũng như trên toàn thế giới với các ngách, ngõ hẻm ngoằn nghèo, các đoạn đường thiếu chỉ dẫn hoặc ùn tắc liên tục do mật đơ giao thơng dày đặc. Do đó, việc áp dụng các hệ thống phương tiện tự hành (self-driving) trong giao thông Việt Nam gặp nhiều thách thức do từ nhiều yếu tố cố hữu của giao thông Việt Nam, đã kể như trên. Nhằm giải quyết vấn đề đó, nhóm nghiên cứu đã tiến hành thực nghiệm nhằm đánh giá phương pháp YOLOv8 hiện tại trên bộ dữ liệu về giao thông Việt Nam.

<b>1.2. Phát biểu bài toán </b>

Với bài toán TOD, đầu vào của bài toán là một bức ảnh, đầu ra của bài tốn là tọa độ và kích thước của các vật thể.

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

<b><small>Đầu vào Đầu ra </small></b>

Hình 1. Đầu ra và đầu vào của bài toán TOD [1].

<b>1.3. Thách thức </b>

Là một bài toán detection, TOD kế thừa những thách thức cổ điển của bài tốn object detection. Bên cạnh đó, bài tốn cũng mang đến những thách thức mới bao gồm:

• Yêu cầu về tốc độ xử lý: Để có thể đáp ứng được yêu cầu ứng dụng trong việc hỗ trợ người lái hoặc tự lái, mơ hình cần phải có khả năng xử lý thời gian thực (real-time) nhằm phát hiện và cảnh báo kịp thời với sự thay đổi liên tục, đặc biệt là trong giao thông Việt Nạm thì vấn đề này càng phải được đặt nặng.

• Vấn đề dữ liệu đặc thù: do bài toán liên quan đến giao thông nên mỗi quốc gia, mỗi khu vực sẽ có các quy định, phương tiện, văn hóa giao thơng khác nhau. Do đó chỉ có thể sử dụng dữ liệu cục bộ trong khu vực nhất dịnh để huấn luyện và kiển tra mơ hình. Bên cạnh đó, mỗi khu vực, quốc gia đều có một số loại phương tiện cũng như biển báo giao thông phù hợp với địa hình hoặc cơ sở hạ tâng chiếm phần lớn trong tổng số lượng tham gia giao thơng, từ đó dữ liệu thu thập được thường sẽ mất cân bằng về một hoặc một số lớp nhất định, từ đó làm ảnh hưởng đến độ chính xác tổng thể của mơ hình.

<b>1.4. Mục tiêu và phạm vi nghiên cứu </b>

- Mục tiêu: Đánh giá mơ hình YOLOv8 phát hiện đối tượng đối với bài toán TOD và ứng dụng bài toán vào thực tiễn.

- Phạm vi: Nghiên cứu tập trung vào hiệu quả mơ hình YOLOv8 dựa trên hiện trạng giao thông Việt Nam.

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

<b>1.5. Đóng góp của nghiên cứu </b>

Nội dung cuốn báo cáo trình bày phương pháp nhóm nghiên cứu đã sử dụng để đánh giá cũng như các bước triển khai ứng dụng.

<b>1.6. Bố cục của báo cáo </b>

Phần cịn lại của báo cáo được trình bày theo bố cục như sau:

<b>CHƯƠNG 2 – PHƯƠNG PHÁP: Phân tích phương pháp được nhóm chạy thực </b>

nghiệm và ứng dụng vào báo cáo

<b>CHƯƠNG 3 – THỰC NGHIỆM: </b>Các bước tiến hành thực nghiệm trên bộ dữ

<b>liệu nhóm tìm được và kết quả thực nghiệm. </b>

<b>CHƯƠNG 4 – TRIỂN KHAI ỨNG DỤNG: </b>Mô tả phần mềm, các công nghệ sử dụng, và ứng dụng của phần mềm sử dụng các phương pháp đã được nhóm tiến hành nghiên cứu lên các vấn đề hiện tại.

<b>CHƯƠNG 5 – KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN: Nhóm nghiên cứu sẽ </b>

trình bày thành quả đạt được cũng như các hướng phát triển tiếp theo nhằm gia tăng hiệu quả trên bài toán TOD.

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

<b>Chương 2. PHƯƠNG PHÁP </b>

Nhóm nghiên cứu đã sử dụng một model YOLOv8 để xác định các đối tượng thuộc 10 lớp. Đối với các đối tượng có nhãn là “biển báo giao thông”, đối tượng sẽ được cắt ra từ ảnh gốc và đưa qua một bộ phân loại biển báo giao thông đơn giản để phân loại thành các lớp đặc trưng chi tiêt.

Hình 2. Cấu trúc của YOLOv8 [1]

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

YOLOv8 là một mơ hình được xây dựng trên nền phương pháp YOLO ứng dụng trong bài toán phát hiện đối tượng, phân lớp đối tượng và phân vùng ảnh. YOLOv8 được phát triển bởi ultralytic, là tác giả của YOLOv5, và tích hợp rất nhiều kiến trúc mới cũng như những phương pháp thử nghiệm tiên tiến hiện tại. Do sử dụng các phương pháp thử nghiệm, YOLOv8 hiện tại vẫn đang trong giai đoạn phát triển và liên tục thay đổi các hướng nghiên cứu khác nhau.

<b>2.1.1. YOLO </b>

YOLO (you only look once) là một tập các model được xây dựng trên một ý tưởng cố định: mơ hình chỉ thực hiện một lần lan truyền xuôi (forward propagation) cho toàn bộ quá trình tạo bounding box và phân loại lớp đối tượng (Hình 2). Do đó, các mơ hình YOLO có tốc độ xử lý vượt trội hơn so với các mơ hình SOTA khác, từ đó được ứng dụng nhiều trong các thiết bị yêu cầu xử lý thời gian thực.

<b>2.1.2. Điểm nổi bật của YOLOv8 </b>

<b>2.1.2.1. Anchor free detection </b>

Khác biệt lớn nhất của YOLOv8 so với các phương pháp YOLO trước đây là việc loại bỏ phương pháp anchor box truyền thống, thay vào đó sử dụng anchor free detection.

Hình 3. Minh họa phương pháp anchor box [2].

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

Anchor box là một phương pháp trong đó các anchor box sẽ được định nghĩ trước với các kích thước cố định theo từng lớp đối tượng khác nhau. Khi mô hình lan truyền xi, các anchor box sẽ được khởi tạo trên tồn bộ bề mặt của bức ảnh (Hình 3).

Các anchor box sau đó được đánh giá confident score, từ đó chọn ra lớp có xác suất lớn nhất và cao hơn threshold định sẵn để thực hiện việc tinh chỉnh anchor box thành bounding box (Hình 4). Việc tinh chỉnh bao gồm việc sử dụng Non-maximun suppression và IoU để giảm bớt các bounding box trùng và tính tốn offset biến đổi bounding box tốt hơn.

Hình 4. Từ anchor box đến bounding box [3].

Phương pháp anchor box tuy đã cải tiến độ chính xác của các mơ hình object detection rất nhiều nhưng vẫn có những mặt hạn chế nhất định:

• Việc tổng qt hóa hình dạng của các anchor box theo các class khiến mơ hình khó nhận diện các đối tượng có hình dạng bị biến đổi / đặc biệt. • Số lượng anchor box được khởi tạo dư thừa quá nhiều so với số lượng

đối tượng phát hiện được.

Ở YOLOv8, anchor box đã được loại bỏ thay vào đó là phương pháp anchor free detection. Trong phương pháp anchor free detection, các bounding box được

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

khởi tạo không theo anchor và được phân loại từ tâm bounding box (khác với anchor box khi bounding box được xác định từ một offset từ một anchor box gần đó)

Hình 5. Hình ảnh bàn cờ đã được Mosaic Augmentation [1]

<b>2.2. Mơ hình phân loại biển báo giao thông đơn giản </b>

Sau khi sử dụng model YOLOv8 để phát hiện các đối tượng có trong ảnh, các đối tượng thuộc lớp biển báo sau đó được cắt và phân loại bằng một mơ hình phân loại hình ảnh đơn giản.

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

Mơ hình này sử dụng kiến trúc mạng nơ-ron hai nhánh để phân loại hình ảnh. Mỗi nhánh xử lý các đặc điểm hình ảnh ở các mức độ khơng gian khác nhau. Các đặc điểm được trích xuất từ mỗi nhánh được kết hợp và đưa qua các lớp phi tuyến tính và lớp dropout để tăng cường khả năng phân biệt của mơ hình. Lớp cuối cùng là một lớp tuyến tính tạo ra dự đốn phân loại cho 58 lớp.

Kiến trúc mơ hình bao gồm: • Nhánh 1:

o Khối conv1: Tích chập 2D với 32 bộ lọc, kích thước hạt nhân 3, padding 1.

o Khối relu1: Kích hoạt ReLU

o Khối maxpool1: Tính tốn max pooling 2D với kích thước hạt nhân 2 o Khối conv2: Tích chập 2D với 64 bộ lọc, kích thước hạt nhân 3,

padding 1.

o Khối relu2: Kích hoạt ReLU

o Khối maxpool2: Tính tốn max pooling 2D với kích thước hạt nhân 2 • Nhánh 2:

o Khối conv1b: Tích chập 2D với 64 bộ lọc, kích thước hạt nhân 5, padding 2.

o Khối relu1b: Kích hoạt ReLU

o Khối maxpool1b: Tính tốn max pooling 2D với kích thước hạt nhân 2

o Khối conv2b: Tích chập 2D với 128 bộ lọc, kích thước hạt nhân 5, padding 2.

o Khối relu2b: Kích hoạt ReLU

o Khối maxpool2b: Tính tốn max pooling 2D với kích thước hạt nhân 2

• Kết hợp đặc điểm:

o Ghép nối đặc điểm từ cả hai nhánh o Phẳng hóa đặc điểm thành một vector • Các lớp phi tuyến tính và dropout:

o Lớp dropout: Loại bỏ một số kết nối ngẫu nhiên để chống lại sự quá khớp

o Lớp GELU: Kích hoạt GELU o Lớp ReLU3: Kích hoạt ReLU • Phân loại:

o Lớp tuyến tính: Tạo ra dự đốn phân loại cho 58 lớp.

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

za

Hình 6: Cấu trúc mơ hình phân lớp đơn giản.

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

<b>Chương 3. KẾT QUẢ THỰC NGHIỆM </b>

<b>3.1. Bộ dữ liệu </b>

<b>3.1.1. Obstacle detection Computer Vision Project [4] </b>

Bộ dữ liệu có 9183 ảnh gồm: 7855 ảnh train (85%), 865 ảnh validation (9%), và 463 ảnh test (5%). Trong đó có 10 lớp: xe đạp, xe buýt, xe con, chó, cột điện, xe máy , con người , biển báo giao thông, cây và hố. Bộ dữ liệu được dung cho nhiều bài tốn như tự động hóa phương tiện giao thông, bảo an, hỗ trợ người khuyết tật, vận chuyển bằng drone và các phưogn tiện robot…. [4]

Hình 7. Một số hình ảnh từ bộ dữ liệu [4].

<b>3.1.2. Vietnamese traffic sign dataset [5] </b>

Bộ dữ liệu là tập hợp các hình ảnh giao thơng Việt Nam tập trung vào bài toán phát hiện và phân loại biển báo giao thông. Bộ dữ liệu bao gồm 58 lớp là mã của các biển báo phổ biến trên đường phố Việt Nam. Bộ dữ liệu có tổng cổng 10940 ảnh được chia theo tỉ lệ: 87% train, 7% validate và 6% test.

Bộ dữ liệu được nhóm nghiên cứu, xứ lý đưa về bài toán phân lớp nhằm huấn luyện cho mơ hình phát hiện biển báo giao thông nhỏ của nhóm.

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

Hình 8. Hình ảnh từ bộ dữ liệu Vietnamese traffic sign dataset [5].

<b>3.2. Kết quả thực nghiệm 3.2.1. YOLOv8 </b>

<b>3.2.1.1. Các điểm số đánh giá </b>

Nhóm nghiên cứu sử dụng mơ hình YOLOv8nano đã được pretrain trên bộ dữ liệu COCO2017, fine-tune model về bài tốn của nhóm nghiên cứu.

Thơng số tinh chỉnh: epochs=30

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

batch=16 dropout=0.5 imgsz=320

optimizer= AdamW(lr=0.000714, momentum=0.9)

Hình 9: Phân bố đối tượng có trong tập train. Bảng 1: Kết quả thực nghiệm trên từng lớp

<small>Bicycle 74.4 85.1 83.3 79 Bus 75.6 84.2 85.5 79 Car 71.5 42.5 54.8 53 </small>

<small>Electric pole 51 0.93 13.3 1 Motorcycle 79.1 83.6 87.2 81 Person 65.9 50.6 52.4 57 Traffic signs 52.4 56.7 48.5 54 Tree 86.2 47.3 59.5 61 Uncover manhole 68.3 76.3 79.7 72 All 71.4 62.1 65.6 66 </small>

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

Hình 10: Đánh giá mơ hình theo từng lớp trên bốn độ đo: Precision, Recall, Precision-recall, F1 (Trái sang phải, trên xuống dưới)

<b>3.2.1.2. Phân tích kết quả </b>

Thơng qua kết quả thực nghiệm, nhóm nghiên cứu nhận thấy mơ hình đã đạt được kết quả tương đối khả quan khi xét trên độ lớn mô hình (YOLOv8n). Tuy nhiên, mơ hình vẫn cịn nhiều hạn chế. Điển hình như mAP50 của lớp electric pole chỉ chưa tới 1% mặc dù số lượng đối tượng có trong tập train là tương đồng so với các lớp như “Dog” hoặc “traffic sign” (Hình 9). Nguyên nhân dẫn đến việc sụt giảm mAP của lớp “electric pole” có thể được nhìn thấy thơng qua hình bên dưới: Mơ hình khơng thể phân biệt các đối tượng thuộc lớp “electric pole” ra khỏi background, từ đó khơng thể nhận diện được đối tượng trong ảnh (Hình 11).

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

Hình 11: Confusion matrix mơ hình YOLOv8nano trên tập test.

Tình trạng khơng phân biệt được đối tượng ra khỏi background cũng xuất hiện trong các lớp “person”, “tree”, “traffic sign”. Sau khi phân tích từ bộ dữ liệu, nhóm nghiên cứu cho rằng nguyên nhân chính là do cịn nhiều đối tượng thuộc các lớp nói trên trong bộ dữ liệu chưa được gắn nhãn, từ đó khiến cho một hình nhầm lẫn/khó phân biệt được giữa đối tượng và background.

<b>3.2.2. Mơ hình phân loại biển báo 3.2.2.1. Đánh giá mơ hình </b>

Thơng số của mơ hình trơng q trình huấn luyện mơ hình:

<i>Batch size: 16. Epoch: 10 </i>

<i>Optimizer: Adam Image size: 128x128 </i>

<i>Loss function: CrossEntropyLoss </i>

Hình ảnh đầu vào được tiền xử lý:

</div>

×