Mô Hình Phát Hiện đối Tượng YOLO - 123doc
Có thể bạn quan tâm
2.8.1. Tổng quan
YOLO là một mô hình mạng CNN dành cho việc phát hiện, nhận dạng, phân loại đối tượng. Đây là một mô hình được tạo ra từ việc kết hợp các Convolutional layers và Connected Layers và là thuật toán OD nhanh nhất hiện tại trong các lớp mô hình OD. Nó có thể đạt được tốc độ gần như real-time mà độ chính xác không quá giảm so với các model thuộc top đầu.
YOLO hiện nay đã có 4 phiên bản chính thức, phát triển và cải tiến qua từng phiên bản.
2.8.2. YOLOv1
YOLO phiên bản đầu tiên được ra đời năm 2015 bởi Joseph Redmon và các cộng sự [1]. Ý tưởng chính của YOLOv1 là chia ảnh đầu vào thành các ô (grid of cells) với kích thước 𝑆 × 𝑆 (default là 7 × 7). Trong đó, mỗi ô sẽ chịu trách nhiệm dự đoán các bounding boxes, nếu tâm của nó nằm trong ô. Với mỗi grid cell, mô hình sẽ đưa ra dự đoán cho B bounding box. Tương ứng với mỗi box trong 𝐵 bounding box này sẽ là 5 tham số gồm (𝑥, 𝑦, 𝑤, ℎ, 𝑐𝑜𝑛𝑓𝑖𝑑𝑒𝑛𝑐𝑒) lần lượt là tọa độ tâm bounding box (𝑥, 𝑦), chiều rộng, chiều cao và độ tự tin.
Toàn bộ dự đoán được thực hiện trên một bức ảnh = 𝑆 × 𝑆 × ( 𝐵 × 5 + 𝐶 )
26
• 𝑆 × 𝑆 = Tổng số lượng ảnh mà YOLO sẽ phân chia trên tập đầu vào. • 𝐵 : là số lượng bounding boxes được dự đoán trên toàn bộ bức ảnh . • 5 : là 5 tham số sẽ được dự đoán gồm: 𝑥, 𝑦, 𝑤, ℎ, confidence score. • 𝐶: Xác suất có điều kiện cho số lớp .
Ví dụ ảnh được chia thành 7 × 7 grid, 10 bounding boxes được dự đoán cho 3 lớp đối tượng: con chó, xe đạp, xe hơi), ta sẽ có 7 × 7 (10 × 5 + 3) = 2597 dự đoán.
Độ tự tin của dự đoán ứng với mỗi bounding box được định nghĩa là
𝑃𝑟(𝑂𝑏𝑗𝑒𝑐𝑡) × 𝐼𝑂𝑈(𝑝𝑟𝑒𝑑, 𝑡𝑟𝑢𝑡ℎ), trong đó 𝑃𝑟(𝑂𝑏𝑗𝑒𝑐𝑡) là xác suất có đối tượng trong cell và 𝐼𝑂𝑈(𝑝𝑟𝑒𝑑, 𝑡𝑟𝑢𝑡ℎ) là độ đo sự trùng lắp của bounding box thực tế và bounding box được mô hình dự đoán. Nếu không có đối tượng trong ô thì
𝑐𝑜𝑛𝑓𝑖𝑑𝑒𝑛𝑐𝑒 = 0.
Hình 2-12: Hình minh họa hoạt động của các mô hình one-stage (YOLO). [1] Tuy nhiên, các ràng buộc về mỗi grid cell chỉ chứa một đối tượng khiến YOLOv1 sẽ không thể phát hiện các đối tượng nằm cùng một ô vuông và các đối tượng có kích thước nhỏ xuất hiện theo nhóm, chẳng hạn như đàn chim… Bên cạnh đó, phiên bản đầu tiên còn gặp một số lỗi về định vị đối tượng khá cao và chỉ có thể dự đoán khoảng 49 đối tượng.
27
2.8.3. YOLOv2
Mô hình YOLOv2 được Joseph Redmon và Ali Farhadi cập nhật nhằm cải thiện hơn nữa hiệu suất trong bài báo năm 2016 có tựa đề là YOLO9000: Better, Faster, Stronger [2]. Đây là phiên bản cải tiến từ YOLOv1 với khả năng phát hiện lên đến 9000 lớp đối tượng và cải thiện khả năng định vị đối tượng cho kết quả tốt hơn. Để làm được điều đó, YOLOv2 đã bổ sung thêm những kỹ thuật sau:
• Batch Normalization giúp cải thiện độ đo Map 2%, loại bỏ dropout để tránh mô hình bị quá khớp (overfitting).
• High resolution classifier để huấn luyện mạng phân loại với ảnh đầu vào kích thước nhỏ 224 × 224 và tăng độ phân giải lên 448 × 448 để dự đoán. Điều đó giúp mạng điều chỉnh bộ lọc sao cho ảnh đầu vào huấn luyện có độ phân giải cao hơn, giúp cải thiện độ đo mAP gần 4%.
• Convolutional with Anchor Box (Multi-object prediction per grid cell): Sử dụng kiến trúc anchor box để dự đoán các bounding box và loại bỏ các lớp fully connected. Với mỗi anchor box hoặc “prior box” đại diện vị trí, hình dạng và kích thước lý tưởng cho đối tượng mà nó dự đoán, mô hình sẽ tính các bounding box của các đối tượng có điểm số IoU cao nhất để quyết định xem bounding box đó có chứa đối tượng hay không.
• Dimension Clusters: Sử dụng k-mean clustering để chọn ra anchor box tốt nhất cho mạng.
• Direct location prediction: YOLOv2 sử dụng hàm sigmoid để hạn chế giá trị trong khoảng từ 0 tới 1 để mô hình được ổn định và hạn chế các dự đoán bounding box ở xung quanh grid cell.
• Fine-Grained Features: Thay vì sử dụng feature map 7 × 7 như phiên bản đầu tiên, YOLOv2 sử dụng feature map 13 × 13 để dự đoán. Điều này giúp tăng hiệu suất mô hình khoảng 1%.
28
• Darknet-19: Để tăng tốc độ cho YOLOv2, nhóm tác giả sử dụng mạng Darknet-19 – gồm 19 lớp convolution và 5 lớp maxpooling.
• Bên cạnh đó, tác giả sử dụng hệ thống phân cấp WordTree để kết hợp các tập dữ liệu lớn gồm COCO và ImageNet để làm phong phú hơn cho bộ dữ liệu của mình.
2.8.4. YOLOv3
YOLOv3 có kiến trúc khá giống với YOLOv2 nhưng được bổ sung những cải tiến gồm:
Hình 2-13: Kiến trúc mô hình YOLOv3.[17]
• Bounding box predictions: YOLOv3 sẽ cho chấm điểm cho các đối tượng được phát hiện trong 1 bounding box bằng cách sử dụng phương pháp Logistic Regression.
• Class Prediction: Thay vì sử dụng Softmax như các phiên bản trước, YOLOv3 sử dụng phân loại Logistic cho mỗi lớp để có thể phân loại nhiều nhãn hơn. • Multi-scale prediction: YOLOv3 đưa ra dự đoán tương tự như mạng Feature
Pyramid Network (FPN) đã được đề cập ở mục 3.3 với 3 tỷ lệ khác nhau. Với mỗi tỷ lệ, YOLOv3 sử dụng 3 anchor boxes và dự đoán cho 3 boxes ở mỗi grid cell. Điều này giúp cải thiện khả năng dự đoán các đối tượng có kích thước nhỏ hơn.
29
• Darknet-53: Để tăng tốc độ cho YOLOv3, nhóm tác giả thiết kế Darknet-53 gồm 53 lớp convolution với việc thêm các residual blocks (kiến trúc sử dụng trong ResNet).
2.8.5. YOLOv4
Kể từ phiên bản YOLOv3, tác giả đầu tiên của YOLO là Joseph Redmon đã không còn nghiên cứu và cải thiện kiến trúc này nữa. Tuy nhiên, sau khi YOLO ra đời, sự nổi tiếng của nó khiến cho giới nghiên cứu vẫn luôn nghiên cứu và đưa ra những bản nâng cấp mới. YOLOv4 được phát hành vào tháng 4 năm 2020 bởi Alexey Bochkovski với phiên bản YOLO Windows, Chien-Yao Wang, Hong-Yuan Mark Liao và các cộng sự khác [4].
Hình 2-14: Kết quả so sánh đánh giá mô hình Phát hiện đối tượng YOLOv4 với các mô hình state-of-the-art khác.[4]
Mục tiêu chính của phiên bản 4 theo như tên bài báo “YOLOv4: Optimal Speed and Accuracy of Object Detection” là trở hệ thống Phát hiện đối tượng có tốc độ xử lý nhanh và tối ưu hóa cho việc tính toán song song. So với các phiên bản tiền nhiệm trước đó, YOLOv4 được cài đặt trên Darknet, thu được giá trị AP là 43.5%
trên tập dữ liệu COCO với tốc độ thực thi là 65 FPS trên Tesla V100. Và điểm đặc biệt hơn là với YOLOv4, bất kì ai cũng có thể chạy huấn luyện và Phát hiện đối tượng chỉ với GPU 1080 Ti hoặc 2080 Ti nhanh hơn, chính xác hơn.
30
Hình 2-15: Kiến trúc mô hình object detection [4]
So với YOLOv3 trước đó, YOLOv4 cải thiện đáng kể về độ chính xác và tốc độ tính toán nhờ những thay đổi sau:
• Backbone: Là mạng nơ ron sâu (deep neural network) bao gồm chủ yếu là các lớp tích chập, dùng để trích xuất các đặc trưng quan trọng. Kiến trúc backbone của YOLOv4 gồm 3 phần chính: BoF, BoS, CSPDarknet53. Trong đó, BoF cải thiện độ chính xác dự đoán mà không làm tăng thời gian suy luận, tuy thời gian huấn luyện sẽ tốn kém hơn. Mặt khác, BoS làm tăng chi phí suy luận hơn nhưng giúp cải thiện đáng kể độ chính xác. Còn CSPDarknet53 là sự kết hợp giữa CSPNet vàDarknet53, trong đó, CSPNet là kiến trúc mạng có nguồn gốc từ kiến trúc DenseNet – mạng lưới dày đặc với các Dense Block, sử dụng đầu vào của các lớp ẩn trước đó và nối nó với đầu vào hiện tại trước khi chuyển vào lớp Dense. Điều này giúp các lớp Dense khác nhau liên tục học lại các thông tin gradient của nhau. Khác với DenseNet, CSPNet sẽ chia các feature map của các DenseBlock thành 2 phần giúp giảm độ phức tạp của tính toán (chỉ một phần đi qua các DenseBlock thay vì cả hai).
Hình 2-16: Kiến trúc mạng Dense (DenseNet) [19]
• Neck (detector): Mục đích chính của Neck là thu thập các feature map từ các stage. YOLOv4 đã thêm vào hai mô đun SPP và PANet đồng thời loại bỏ hoàn
31
toàn các Fully connected network để đơn giản hóa quá trình tính toán mà vẫn giữ được độ chính xác cao.
• Head (detector): Vai trò của Head trong mô hình one-stage là thực hiện các dự đoán dày đặc (dense prediction). Đây là dự đoán cuối cùng bao gồm một vector chứa tọa độ của boundingbox (x,y,h,w) và điểm số tự tin (confidence) của mô hình. Với phần Head, YOLOv4 vẫn sử dụng lại giống với phiên bản 3 trước đó.
2.8.6. YOLOv4x-mish
Ngoài phiên bản gốc YOLOv4, tác giả còn cung cấp thêm YOLOv4x-mish
640 × 640 với những thay đổi nhỏ trong cấu trúc mạng nhưng lại giúp cải thiện đáng kể về hiệu quả cũng như tốc độ. So với YOLOv4 gốc, phiên bản cải tiến này thu được giá trị AP là 49.4% trên cùng tập dữ liệu COCO với tốc độ thực thi 50 FPS trên Tesla V100.
Hình 2-17: Kết quả so sánh đánh giá mô hình Phát hiện đối tượng YOLOv4 với các mô hình state-of-the-art khác.[4]
Để có được sự cân bằng giữa tốc độ / độ chính xác, YOLOv4x-mish đã đổi CSPDarknet ở lớp conv đầu tiên thành Darknet nguyên bản giống như YOLOv3.
32
Hình 2-18 a. Backbone YOLOv4; b. Backbone YOLOv4x-mish
Phần neck, thay vì giữ nguyên kiến trúc PAN như YOLOv4, họ đã CSP hóa khối PAN để giảm khoảng 40% khối lượng tính toán. Trong khối CSPPAN này, mô đun SPP vẫn giữ nguyên như YOLOv4 để tăng receptive field, mô tả ở hình 2-22. Phần Head, để đưa ra dự đoán, YOLOv4x-mish thay đổi hàm kích hoạt Leaky ReLU thành hàm Mish giúp tăng đáng kể độ chính xác cho mô hình.
33
Chương 3. THỰC NGHIỆM VÀ ĐÁNH GIÁ
Trong chương này, tôi xin phép trình bày phương pháp tiếp cận đối với bài toán Phát hiện đối tượng trong tài liệu dạng ảnh. Đồng thời trình bày quá trình cài đặt thực nghiệm với bộ dữ liệu được xây dựng và các đặc trưng tương ứng. Theo sự hiểu biết của chúng tôi, chúng tôi nhận thấy bài toán “Phát hiện đối tượng trong tài liệu dạng ảnh” thuộc lớp các bài toán về Document Image Understanding (DIU) và có thể sử dụng các kỹ thuật Object Detection để thực hiện.
Từ khóa » Darknet Yolo Là Gì
-
Bài Toán Phát Hiện Biển Số Xe Máy Việt Nam - Deep Learning Cơ Bản
-
Bài 25: YOLO - Khoa Học Dữ Liệu
-
[CNN] Tạo Models ùy Chỉnh Cho YOLO V3 | Detect Custom Object With ...
-
Tìm Hiểu Về YOLO Trong Bài Toán Real-time Object Detection - Viblo
-
Tìm Hiểu Mô Hình YOLO Cho Phát Hiện Vật - Từ YOLOv1 đến YOLOv3
-
Hiểu Về Phát Hiện đối Tượng Bằng YOLO - HelpEx - Trao đổi & Giúp đỡ
-
Forum Machine Learning Cơ Bản | Object Detection YOLO V1 , V2, V3
-
Object Detection Với Mô Hình YOLO - Panda ML
-
Giải Thích Lý Thuyết Của YOLO V3 - Nghịch Code Cho Vui
-
BÁO Cáo Lý THUYẾT Nội DUNG Cấu TRÚC Và ỨNG ...
-
Nhận Dạng đối Tượng Trong ảnh Bằng Thư Viện YOLO3 - Techmaster
-
BÁO Cáo Lý THUYẾT Nội DUNG Cấu TRÚC Và ỨNG DỤNG ... - 123doc
-
Series YOLO: #4 Tìm Hiểu Cấu Trúc YOLOv1,v2,v3 Và V4 - Phần 2
-
[Yolo Series] #2 – Cách Train Yolo để Detect Các Object đặc Thù - Mì AI