1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÁO cáo TIỂU LUẬN NHẬN DIỆN BIỂN báo GIAO THÔNG BẰNG YOLOv5

43 413 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Nhận Diện Biển Báo Giao Thông Bằng YOLOv5
Tác giả Võ Trần Chương, Vũ Huy Hoàng
Người hướng dẫn PGS.TS. Trương Ngọc Sơn
Trường học Trường Đại Học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh
Chuyên ngành Công Nghệ Kỹ Thuật Điện Tử - Viễn Thông
Thể loại Báo Cáo Tiểu Luận
Năm xuất bản 2021
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 43
Dung lượng 2,65 MB

Cấu trúc

  • LỜI CẢM ƠN

  • DANH MỤC HÌNH ẢNH

  • CHƯƠNG 1. GIỚI THIỆU

    • 1.1 Giới thiệu

    • 1.2 Mục tiêu của đề tài

    • 1.3 Giới hạn đề tài

    • 1.4 Phương pháp nghiên cứu

    • 1.5 Bố cục đề tài

  • CHƯƠNG 2: CƠ SỞ LÝ THUYẾT

    • 2.1 Kiến trúc mạng Yolo

    • 2.2 Grid system

    • 2.3 Khái niệm về chỉ số IoU và thuật toán Non-max suppression

    • 2.4 Gán nhãn các mẫu

    • 2.5 Hàm mất mát

    • 2.6 Ngõ ra

    • 2.7 Thuật toán Yolov5

    • 2.8 Cấu trúc nhận diện vật thể của YOLOv5

    • 2.9 Đặc điểm của YOLOv5 với các phiên bản trước của YOLO

    • 3.1 Chuẩn bị folder training data

    • 3.2 Thiết lập môi trường để huấn luyện và nhận dạng biển báo giao thông

  • CHƯƠNG 4. KẾT QUẢ

  • CHƯƠNG 5 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

    • 5.1 Kết luận

      • 5.1.1 Ưu điểm

      • 5.1.2 Nhược điểm

    • 5.2 Hướng phát triển

  • PHỤ LỤC

  • TÀI LIỆU THAM KHẢO

Nội dung

GIỚI THIỆU

G IỚI THIỆU

Sự phát triển mạnh mẽ của công nghệ 4.0 đã thúc đẩy trí tuệ nhân tạo, đặc biệt là máy học, không ngừng tiến bộ Các ứng dụng của lĩnh vực này ngày càng trở nên phổ biến trong đời sống hàng ngày, bao gồm robot hỗ trợ công việc, hệ thống dịch thuật, chatbot và phân loại sản phẩm.

Mạng Nơron học sâu (Deep Learning Network) nghiên cứu các thuật toán cho phép máy tính học và dự đoán như con người, với ứng dụng rộng rãi trong khoa học, kỹ thuật và đời sống Một ví dụ tiêu biểu là CNN (Convolutional Neural Network), được sử dụng để nhận dạng tự động và phân tích hình ảnh thông qua việc xếp chồng các lớp, trở thành công cụ mạnh mẽ trong phân loại ảnh và thị giác máy tính Tuy nhiên, công nghệ CNN tiêu tốn nhiều tài nguyên như băng thông, bộ nhớ và khả năng xử lý Để tối ưu hóa việc sử dụng tài nguyên, nhiều mô hình thuật toán mới đã ra đời, trong đó có YOLOv5, được áp dụng hiệu quả trong phân loại biển báo giao thông.

M ỤC TIÊU CỦA ĐỀ TÀI

- Tìm hiểu về Deep Learning và các ứng dụng.

- Hiểu rõ được cơ sở lý thuyết, kiến trúc của mô hình YOLO cho bài toán nhận diện vật thể.

- Sử dụng các thư viện hỗ trợ, môi trường ảo để thực thi mô hình.

G IỚI HẠN ĐỀ TÀI

Trong đề tài này chỉ nhận biết được 20 loại biển báo khác nhau Hệ thống chỉ dừng lại ở việc nghiên cứu, chưa thể áp dụng ra thị trường.

P HƯƠNG PHÁP NGHIÊN CỨU

- Thu thập tài liệu, tham khảo những ứng dụng liên quan đã có trước đó.

- Dựa trên các kiến thức đã học về cách huấn luyê ̣n mô ̣t mạng nơ-ron.

- Đọc thêm tài liê ̣u và tra cứu trên mạng.

- Tham khảo ý kiến và thực hiện theo hướng dẫn của giảng viên.

B Ố CỤC ĐỀ TÀI

- Chương 1: Tổng quan Ở chương này, trình bày mục tiêu, giới hạn đề tài, phương pháp nghiên cứu, bố cục và đặt vấn đề.

- Chương 2: Cơ sở lý thuyết Ở chương này, trình bày về sự hình thành và phát triển Yolo va thuật toán của Yolov5.

- Chương 3: Thiết kế hệ thống Ở chương này, trình bày về sơ đồ hoạt động, thiết kế phần mềm, chức năng hoạt động của phần mềm.

- Chương 4: Kết quả thực hiện Ở chương này, trình bày kết quả đạt được sau khi thiết kế và thi công.

Chương 5 tổng kết những ưu điểm và khuyết điểm trong quá trình nghiên cứu, đồng thời đề xuất hướng phát triển cho đề tài Việc đánh giá này không chỉ giúp khẳng định những thành tựu đã đạt được mà còn chỉ ra những hạn chế cần khắc phục, từ đó mở ra những cơ hội nghiên cứu mới trong tương lai.

CƠ SỞ LÝ THUYẾT

K IẾN TRÚC MẠNG Y OLO

Kiến trúc YOLO bao gồm một mạng cơ sở (base network) với các lớp convolution để trích xuất đặc trưng và các Extra Layers ở phần sau để phát hiện vật thể trên feature map Mạng cơ sở của YOLO chủ yếu sử dụng các lớp convolutional và các lớp fully connected, như thể hiện trong hình 2-1 Các kiến trúc YOLO rất đa dạng và có thể được tùy biến cho nhiều kích thước đầu vào khác nhau.

Hình 2-1 Sơ đồ kiến trúc mạng YOLO.

Thành phần Darknet Architecture, được gọi là base network, có chức năng trích xuất đặc trưng Đầu ra của base network là một feature map có kích thước 7x7x1024, được sử dụng làm đầu vào cho các Extra layers nhằm dự đoán nhãn và tọa độ bounding box của vật thể.

Trong YOLO phiên bản 3, mạng feature extractor sử dụng là darknet-53, bao gồm 53 lớp convolution liên tiếp, mỗi lớp đi kèm với batch normalization và activation Leaky Relu Để giảm kích thước đầu ra sau mỗi lớp convolution, kỹ thuật down sample được áp dụng với bộ lọc kích thước 2, giúp giảm thiểu số lượng tham số cho mô hình.

Hình 2-2 Các layer trong mạng Darknet-53.

Các bức ảnh sẽ được điều chỉnh kích thước để phù hợp với input shape của mô hình, sau đó được gom thành một batch để tiến hành huấn luyện.

YOLO hiện hỗ trợ hai kích thước đầu vào chính là 416x416 và 608x608, mỗi kích thước có thiết kế layer riêng biệt phù hợp Qua các layer convolutional, kích thước giảm dần theo cấp số nhân 2, cuối cùng tạo ra một feature map nhỏ để dự đoán vật thể trong từng ô của feature map.

Kích thước của feature map phụ thuộc vào kích thước đầu vào Cụ thể, với đầu vào 416x416, feature map sẽ có kích thước 13x13, 26x26 và 52x52 Ngược lại, khi đầu vào là 608x608, feature map sẽ tạo ra các kích thước 19x19, 38x38 và 72x72.

G RID SYSTEM

Ý tưởng về hệ thống lưới (Grid System) bắt nguồn từ việc thay thế các lớp Fully Connected ở cuối mô hình bằng các lớp tích chập, tương tự như các lớp phía trước trong bài toán phân loại vật thể Thay vì sử dụng lớp fully connected với kích thước (số classes, 1), mô hình sẽ sử dụng một lớp tích chập có kích thước 3 chiều (1, 1, số classes) ở lớp cuối cùng.

Việc chuyển đổi này không chỉ không ảnh hưởng đến kết quả dự đoán mà còn chứng minh khả năng phân loại vật thể thông qua các phép toán tích chập Kết quả dự đoán được lưu giữ ở lớp tích chập cuối cùng, cho thấy ưu điểm trong việc duy trì vị trí của vật thể Chẳng hạn, như hình 2-3, hình ảnh chứa vật cần phân loại có kích thước 14 x 14 x 3, sau khi thực hiện các bước tích chập, lớp tích chập cuối cùng có kích thước 1 x 1 x 4, nơi chứa kết quả phân loại vật thể.

Để chuyển đổi các lớp Fully Connected cuối thành các lớp tích chập, ta cần chứng minh rằng vị trí vật thể không thay đổi và vẫn có thể xác định qua lớp cuối Giả sử hình 2-4 có kích thước 27 x 27 x 3 được chia thành 3 x 3 grid, trong đó vị trí của vật thể nằm ở ô có đánh màu Sau khi thực hiện các bước tích chập, ta thu được lớp tích chập cuối cùng có kích thước 3 x 3 x 4.

Hình 2-4 Vị trí và thông tin của vật thể được duy trì đến lúc cuối cùng.

(Để đơn giản, trong hình trên không vẽ số chiều của lớp tích chập).

Sau khi thực hiện tích chập, dữ liệu và vị trí của vật thể được duy trì cho đến lớp cuối cùng, với ô màu tương ứng hiển thị kết quả phân loại Điều này cho phép chúng ta vừa phân loại vật thể vừa xác định vị trí của nó một cách chính xác.

Hệ thống lưới (grid system) chia hình ảnh gốc thành các ô lưới tương ứng với kích thước của lớp cuối, ví dụ như lớp cuối có kích thước 3 x 3 sẽ chia hình thành 3 x 3 ô lưới Mỗi ô lưới sẽ chứa ba thông tin chính: trạng thái có vật thể hay không, tọa độ của bounding box (bao gồm tọa độ x, y của góc trên bên trái và kích thước chiều dài, chiều rộng), và xác suất phân loại vật thể Trong trường hợp nhận diện biển báo cấm vượt quá 30km/h, nếu biển báo không nằm hoàn toàn trong một ô lưới, thuật toán sẽ xác định tâm vật thể và ô lưới chứa tâm đó sẽ được đánh dấu là có vật thể Ma trận của một ô lưới được biểu diễn như sau: [pc, bx, by, bh, bw, c1, c2, c3, ].

Hình 2-5 Mô tả grid system trong bài toán nhận diện biển báo.

K HÁI NIỆM VỀ CHỈ SỐ I O U VÀ THUẬT TOÁN N ON - MAX SUPPRESSION

Chỉ số IoU (Intersection over Union) cho ta biết tỉ lệ trùng vào nhau của 2 box

IoU = box A ∩box B box A ∪box B (1)

Trong bài viết này, A ∩ B đại diện cho phần giao nhau (Intersection) giữa box A và box B, trong khi A ∪ B thể hiện phần chung của hai box (Union) thông qua tổng diện tích của chúng trừ đi phần giao nhau Việc xác định chỉ số IoU, như mô tả trong hình 2-6, rất quan trọng để đánh giá độ chính xác trong việc phát hiện vật thể Trong đó, box A thường là các anchor box hoặc groundtruth bounding box được gán nhãn trong giai đoạn huấn luyện, còn box B là bounding box do hệ thống phát hiện trong giai đoạn kiểm tra Tính toán IoU giúp đánh giá xem mô hình đã phát hiện vật thể một cách chính xác hay chưa.

Hình 2-6 Mô tả chỉ số IoU.

Trong quá trình kiểm tra, hệ thống tạo ra nhiều bounding box với xác suất dự đoán và tỉ lệ IoU khác nhau Thuật toán Non-max suppression được sử dụng để loại bỏ các bounding box có tỷ lệ dự đoán thấp, chỉ giữ lại một bounding box cuối cùng với tỷ lệ dự đoán cao nhất.

Bước đầu tiên là loại bỏ tất cả các bounding box có xác suất xuất hiện của vật thể pc thấp hơn ngưỡng quy định Việc này giúp các grid không hiển thị bounding box cho những vật thể có xác suất xuất hiện thấp, từ đó nâng cao độ chính xác trong quá trình phân tích.

Bước 2: Chọn các bounding box có xác suất xuất hiện vật thể cao nhất

Bước 3: Khi có nhiều bounding box với xác suất xuất hiện vật thể cao nhất, chúng ta sẽ áp dụng IoU để loại bỏ những bounding box có chỉ số IoU thấp hơn ngưỡng quy định Sau khi hoàn thành bước này, chúng ta sẽ thu được bounding box có tỉ lệ nhận diện vật thể tối ưu nhất.

G ÁN NHÃN CÁC MẪU

Bài toán nhận diện vật thể trong học sâu, giống như các bài toán máy học khác, bao gồm hai pha chính: pha huấn luyện và pha kiểm tra Trong pha huấn luyện của thuật toán YOLO, chúng ta tiến hành gán nhãn vị trí và phân loại cho các vật thể, với đầu ra y có dạng: y =[pc , bx , by , bh , bw , c1 , c2 , c3, ].

Trong ví dụ hình 2-5, bài toán yêu cầu xác định vị trí và phân loại vật thể với 3 nhãn, trong đó biển báo thuộc nhãn thứ nhất Khi grid phát hiện biển báo giao thông, giá trị y sẽ được gán là y = [1, 230, 120, 20, 30, 1, 0, 0], cho thấy grid này có vật thể với tọa độ (x,y) ở góc trên bên trái của anchor box tại (230,120), chiều dài 20 và chiều rộng 30, đồng thời thuộc nhãn 1 và không thuộc hai nhãn còn lại Ngược lại, nếu grid không chứa vật thể, y sẽ được gán là y = [0, x, x, x, x, x, x, x], nghĩa là không có vật thể trong grid và các giá trị còn lại không cần chú ý.

Nếu hai vật thể cùng xuất hiện trong một grid, việc gán không thể thực hiện như bình thường Để giải quyết vấn đề này, chúng ta có thể áp dụng hai phương pháp khác nhau.

Để cải thiện độ chính xác trong việc phân loại vật thể, cách đầu tiên là chia nhỏ grid cho đến khi hai vật thể nằm ở hai grid khác nhau Tuy nhiên, việc chia grid quá nhỏ có thể dẫn đến việc học không sâu, khiến các lớp sau không thể nhận diện các đặc trưng cao Nếu tâm của hai vật thể gần nhau, phương pháp này cũng không hiệu quả, do đó cần áp dụng cách thứ hai.

Thay vì gán y cho một vật thể duy nhất, y có thể được mở rộng để bao gồm nhiều vật thể, được biểu diễn như sau: y = [pc1, bx1, by1, bh1, bw1, c1, c2, c3, , pc2, bx2, by2, bh2, bw2, c1, c2, c3, ].

Xét ví dụ với hình 2-7 bên dưới, cô gái và chiếc xe đều nằm cùng chung 1 grid Khi đó, y sẽ được gán như sau y = [1, 120, 20, 20 , 120 , 1 , 0 , 1 , 90, 50 , 90 ,

Trong grid này, có sự xuất hiện của ô tô (y[0] = 1) với 4 thông số anchor box (120,20,20,120) xác định vị trí của xe Đồng thời, (y[5]=1,y[6]=0) phân loại anchor box này là xe ô tô, trong khi y[7]=1 cho biết có một cô gái trong grid Các thông số tiếp theo xác định tọa độ anchor box cho cô gái (y[12]=0,y[13]=1) để phân loại đúng Phương pháp thứ hai cho phép ghép y của nhiều vật thể trong cùng một grid, sử dụng y[0:6] để phát hiện xe và y[7:13] cho cô gái Tuy nhiên, việc ghép nhiều đối tượng có thể làm giảm tốc độ xử lý do tăng số phép toán, vì vậy cần phối hợp hài hòa với phương pháp đầu tiên để tối ưu hóa số lượng grid.

Hình 2-7 Tâm của 2 vật thể trùng nhau và cùng nằm trong 1 grid.

H ÀM MẤT MÁT

Sau khi gán nhãn toàn bộ tập dữ liệu, các mẫu dữ liệu sẽ được sử dụng để học các tham số Trong quá trình này, các hàm mất mát sẽ được tính toán, và đối với bài toán nhận diện vật thể, cần phải tính toán ba hàm mất mát khác nhau.

Hàm mất mát phân loại (Classification Loss Function):

Hàm mất mát vị trí (Localization Loss Function) là công cụ quan trọng để tính toán độ sai số giữa các bounding box dự đoán và các anchor box Việc cải thiện Localization Loss sẽ nâng cao độ chính xác trong việc phát hiện vật thể.

Hàm mất mát dự đoán (Confidence Loss Function): thể hiện sai số giữa dự đoán của bounding box với nhãn thực tế:

Hàm mất mát tổng quát sẽ bằng tổng 3 hàm mất mát phía trên:

N GÕ RA

Tại ngõ ra, mỗi grid sẽ dự đoán hai bounding box có xác suất cao nhất, loại bỏ tất cả các bounding box có xác suất thấp trên toàn bức ảnh Cuối cùng, thuật toán Non-max suppression sẽ được áp dụng để giữ lại bounding box chính xác nhất cho từng đối tượng, như minh họa trong hình 2-8.

Hình 2-8 Thuật toán được áp dụng ở ngõ ra (a): Với mỗi grid, lấy 2 bounding box có pc cao nhất.

(b): Loại bỏ tất cả các bounding box có pc thấp trên toàn bộ bức ảnh, bước này giúp loại bỏ các grid không chứa vật thể.

(c): Áp dụng non-max suppression để chỉ chọn ra bounding-box cuối cùng có xác suất dự đoán cao nhất.

T HUẬT TOÁN Y OLOV 5

YOLOv5 là một phiên bản nâng cấp tự nhiên của YOLOv3 PyTorch, được phát triển bởi Glenn Jocher Kho lưu trữ YOLOv3 PyTorch đã trở thành điểm đến ưa chuộng cho các lập trình viên muốn chuyển đổi trọng số YOLOv3 từ Darknet sang PyTorch để đưa vào sản xuất Ban đầu, những cải tiến này được gọi là YOLOv4, nhưng do sự ra mắt gần đây của YOLOv4 trong Darknet, tên gọi đã được đổi thành YOLOv5 để tránh xung đột phiên bản.

YOLOv5 kế thừa các phương pháp cơ bản của các phiên bản YOLO trước đó, nhưng cải tiến bằng cách áp dụng các thuật toán phát hiện vật thể nhanh hơn Nhờ vào việc tối ưu hóa các phép toán thực hiện song song, YOLOv5 giúp tăng tốc độ nhận diện và giảm thời gian huấn luyện một cách hiệu quả.

C ẤU TRÚC NHẬN DIỆN VẬT THỂ CỦA YOLO V 5

Cấu trúc nhận diện vật thể của YOLOv5 thường có 3 phần được thể hiện ở hình 2-9.

Hình 2-9 Cấu trúc nhận diện vật thể của YOLOv5.

Backbone là mô hình pre-train trong học chuyển (transfer learning) giúp nhận diện các đặc trưng và vị trí của vật thể Những mô hình học chuyển phổ biến thường được sử dụng bao gồm VGG16 và ResNet-50.

Phần head trong mô hình được thiết kế để nâng cao khả năng phân biệt đặc trưng, giúp dự đoán lớp và bounding-box Có thể áp dụng một hoặc hai tầng trong phần head để tối ưu hóa hiệu suất dự đoán.

+ Tầng 1: Dense Prediction, dự đoán trên toàn bộ hình với các mô hình RPN, YOLO, SSD,

+ Tầng 2: Sparse Prediction dự đoán với từng mảng được dự đoán có vật thể với các mô hình R-CNN series,

Cổ (Neck) nằm giữa cột sống (Backbone) và đầu (Head), thường được sử dụng để làm giàu thông tin Nó kết hợp thông tin từ quá trình bottom-up và top-down, giúp khắc phục tình trạng mất mát thông tin nhỏ trong quá trình bottom-up mà không thể tái tạo lại từ quá trình top-down.

Đ ẶC ĐIỂM CỦA YOLO V 5 VỚI CÁC PHIÊN BẢN TRƯỚC CỦA YOLO

YOLOv5, được triển khai trong PyTorch, tận dụng lợi thế từ hệ sinh thái PyTorch đã phát triển, mang lại hỗ trợ và triển khai dễ dàng hơn Với việc là một khung nghiên cứu phổ biến, quá trình lặp lại trên YOLOv5 trở nên thuận tiện hơn cho cộng đồng nghiên cứu Điều này cũng giúp việc triển khai trên các thiết bị di động trở nên đơn giản, nhờ khả năng biên dịch mô hình sang ONNX và CoreML một cách dễ dàng.

YOLOv5 nổi bật với khả năng đào tạo và suy luận nhanh chóng, cùng với độ chính xác cao Đặc biệt, YOLOv5 có dung lượng nhỏ gọn, với một tệp trọng số chỉ chiếm một không gian đáng kể.

Tệp trọng số cho YOLOv4 (với kiến trúc Darknet) có kích thước 244 megabyte, trong khi YOLOv5 chỉ chiếm 27 megabyte, nhỏ hơn gần 90% so với YOLOv4 Điều này cho phép YOLOv5 dễ dàng được triển khai trên các thiết bị nhúng.

THIẾT KẾ HỆ THỐNG NHẬN DIỆN TRÊN VIDEO

C HUẨN BỊ FOLDER TRAINING DATA

Các bước thực hiện gồm:

- Đầu tiên tạo 1 thư mục có tên là tên của data là traindata.

- Tiếp theo, trong thư mục vừa tạo (traindata) ta tạo 2 thư mục images và labels.

- Copy 80% số ảnh vào thư mục train và 20% vào trong thư mục val của thư mục images.

- Mở phần mềm makesense.ai và chọn thư mục train trong thư mục images và chọn thư mục lưu là train trong thư mục labels.

- Tương tự đối với thư mục val.

Tập datasets sử dụng là file traindata.zip bao gồm 1425 mẫu biển báo khác nhau được thể hiện ở hình 3-1 và có 20 classes như bảng 3-1 để tiến hành training.

0 Left Cho phép rẽ trái

1 Right Cho phép rẽ phải

2 Stop Cấm đi ngược chiều

4 Straight_Right Được đi thẳng và rẽ phải

5 Straight_Left Được đi thẳng và rẽ trái

6 R305 Dành cho người đi bộ

11 Main road Bắt đầu đường ưu tiên

12 Dangerous Khu vực nguy hiểm

13 Roundabout Nơi giao nhau vòng xoay

14 No Left Turn Không được rẽ trái

15 Cross Road Nơi giao nhau chữ thập

16 Disabled Person Giành cho người khuyết tật

17 No parking Cấm dừng và đỗ xe

18 Two Way Đường hai chiều

19 W.207a Giao nhau đường không ưu tiên

Bảng 3.1 Danh sách 20 biển báo giao thông khác nhau

Hình 3-1 Một số biển báo trong tệp train của images.

Trong thư mục traindata, có hai cấu trúc chính: images và labels Thư mục images lưu trữ hình ảnh của các biển báo giao thông, trong khi thư mục labels chứa các nhãn tên gắn trên hình ảnh, giúp hỗ trợ chẩn đoán và xác định chính xác các dấu hiệu giao thông Cấu trúc của các thư mục file images và labels được trình bày như hình 3-2.

Hình 3-2 Cấu trúc thư mục file images và labels.

Để gắn nhãn cho những hình ảnh chưa được chú thích, trước tiên bạn cần tải lên các hình ảnh mong muốn Sau đó, hãy thực hiện việc chú thích cho từng hình ảnh và xuất ra nhãn theo hình 3-3.

Hình 3-3 Tạo các labels cho các biển báo.

Figure 3-4 demonstrates quick labeling using makesense.ai, which supports various annotation types such as bounding boxes, polygons, and point annotations It allows users to export labels in multiple formats, including YOLO, VOC XML, VGG JSON, and CSV.

Hình 3-4 Gắn nhãn hình ảnh với makesene.ai

Sau khi gắn nhãn cho các biển báo, ta sẽ vào Actions và tải A.zip (gói chứa các files được định dạng ở YOLO) như hình 3-5.

Hình 3-5 Xuất file chứa các nhãn của các biển báo.

Tiến hành giải nén file.zip vào folder labels ta được các file Text Document ở hình 3-6.

Hình 3-6 Các tệp Text Document trong folder labels.

File txt sẽ có format như sau :

- Mỗi hàng sẽ là một đối tượng.

- Mỗi hàng sẽ có format: class x_center y_center width height.

- Toạ độ của các box sẽ được normalized (từ 0-1) theo format xywh.

- Class sẽ bắt đầu từ 0.

T HIẾT LẬP MÔI TRƯỜNG ĐỂ HUẤN LUYỆN VÀ NHẬN DẠNG BIỂN BÁO GIAO THÔNG

Trước khi cài đặt, cần kiểm tra các yêu cầu về phiên bản do thư viện đã được cập nhật thường xuyên gần đây.

Yêu cầu Pytorch ≥ 1.5, Python version 3.7 và CUDA version.

Để bắt đầu với YOLOv5, trước tiên bạn cần nhập các thư viện cần thiết như numpy, pandas, shutil, tqdm và os Tiếp theo, hãy sao chép kho lưu trữ YOLOv5 và cài đặt các phụ thuộc cần thiết để thiết lập môi trường lập trình, sẵn sàng cho các lệnh huấn luyện và suy diễn.

!git clone https://github.com/ultralytics/yolov5 # clone rep o

To set up the environment, install the necessary dependencies using the command `%pip install -qr requirements.txt` After importing the required libraries, including `torch`, clear the output for a clean display Finally, confirm the setup by printing the current version of PyTorch and the name of the CUDA device, if available; otherwise, indicate that the CPU is in use.

Sau đó nhận GPU Tesla P100 từ Google Colab. torch 1.5.0+cu101 _CudaDeviceProperties(name='Tesla P100- PCIE-16GB', major=6, minor=0, total_memory280MB, multi_processor_countV)

# Download Custom Dataset from Roboflow

Quá trình xuất tệp yaml cho YOLOv5, được gọi là data.yaml, xác định vị trí của thư mục hình ảnh và thư mục nhãn, đồng thời cung cấp thông tin về các lớp tùy chỉnh.

# parameters nc: 20 # number of classes depth_multiple: 0.33 # model depth multiple width_multiple: 0.50 # layer channel multiple

[-1, 1, nn.Conv2d, [na * (nc + 5), 1, 1]], # 18 (P3/8-small) [-2, 1, Conv, [256, 3, 2]],

[-1, 1, nn.Conv2d, [na * (nc + 5), 1, 1]], # 22 (P4/16-medium) [-2, 1, Conv, [512, 3, 2]],

[-1, 1, nn.Conv2d, [na * (nc + 5), 1, 1]], # 26 (P5/32-large)

Tải xuống tệp coco128.yaml và chỉnh sửa tên nhãn cùng lớp, sau đó đổi tên tệp thành custom_data.yaml Lưu tệp này vào thư mục data trên Google Colab với đường dẫn train: /traindata/images/train/ và val: /traindata/images/val/.

The article lists various class names related to traffic signs and road instructions, including 'Left', 'Right', 'Stop', 'Straight', 'Straight_Right', 'Straight_Left', 'R305', 'P.112', 'Slow', 'Limit_30', 'Limit_60', 'Main road', 'Dangerous', 'Roundabout', 'Cross Road', 'No Left Turn', 'Disabled Person', 'No parking', 'Two Way', and 'W.207a' These terms are essential for understanding road navigation and safety regulations.

T RAINING

Để xác định cấu hình và kiến trúc cho mô hình YOLOv5, cần tạo một tệp cấu hình cho bộ phát hiện đối tượng tùy chỉnh Chọn mô hình cơ sở nhỏ nhất và nhanh nhất trong các phiên bản của YOLOv5 YOLOv5 cung cấp 4 phiên bản khác nhau như được trình bày trong hình 3-7.

Hình 3-7 Các version của YOLOv5.

AP test biểu thị kết quả máy chủ COCO test-dev2017, còn tất cả các kết quả

AP khác thể hiện độ chính xác của val2017 với kích thước (pixels) là 640 Params (M) là biến thu nhận từ chương trình con, trong khi FLOPs đo hiệu suất máy tính Với các tệp data và custom_data.yaml, chúng ta đã sẵn sàng để bắt đầu huấn luyện Để khởi động quá trình này, hãy chạy lệnh huấn luyện theo tùy chọn đã chỉ định.

- img: xác định kích thước hình ảnh đầu vào

- batch: số ảnh để load vào (16-32) một lần

- data: đặt đường dẫn đến tệp yaml

- cfg: chỉ định cấu hình mô hình

- weights: chỉ định một đường dẫn tùy chỉnh đến weights

- nosave: chỉ lưu điểm kiểm tra cuối cùng

- cache: hình ảnh trong bộ nhớ cache để train nhanh hơn

The training process for recognizing traffic signs using YOLOv5 is illustrated in Figures 3-8 The command used for training is: `python train.py img 640 batch 10 epochs 2000 data custom_data.yaml weights yolov5s.pt nosave cache`.

Hình 3-8 Quá trình huấn luyện trên YOLOv5.

KẾT QUẢ

Đầu tiên quay lại những hình ảnh biển báo giao thông như hình 4-1.

Hình 4-1 Biển báo giao thông được cắt ra từ video.mp4

Upload video.mp4 vào google colab để có thể lưu lại và xuất ra kết quả dự đoán được bằng YOLOv5.

!python detect.py weights runs/train/exp/weights/last.pt img 640 conf 0.25 source /video.mp4

Hình 4-2 thể hiện YOLOv5 đang nhận dạng các labels của biển báo trên video.

Hình 4-2 Nhận dạng các labels của biến báo bằng video.

Sau khi các kết quả đã được lưu lại ta vào đường dẫn yolov5 → runs → dectect như hình 4-3 để xem kết quả nhận diện được

Hình 4-3 Đường dẫn xuất kết quả video.

Kết quả được cắt ra từ video.mp4 được thể hiện ở các hình 4-4,5,6,7,8,9,10.

Hình 4-4 Kết quả nhận diện được biển báo đi thẳng và rẽ phải.

Hình 4-5 Kết quả nhận diện được biển báo đi thẳng rẽ trái.

Hình 4-6 Hình biển báo: rẽ phải, rẽ trái, đi thẳng, cấm đi ngược chiều được cắt ra từ video.mp4.

Hình 4-7 Biển báo R305(cho phép người đi bộ), đi thẳng và rẽ phải, rẽ trái, giới hạn 30km/h.

Hình 4-8 Biển báo đường ưu tiên, cảnh báo, đi chậm, giới hạn 60km/h.

Hình 4-9 Biển báo cấm người đi bộ, đi 2 chiều, nơi giao nhau, cấm dừng và đỗ xe.

Hình 4-10 Biển báo người khuyết tật, cấm rẽ trái, vòng xoay, W207.a (đường giao nhau không ưu tiên).

Ngày đăng: 04/09/2021, 06:44

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w