YOLO (You Only Look Once) là một mô hình phát hiện đối tượng phổ biến, được biết đến với tốc độ xử lý nhanh và độ chính xác ấn tượng. Mô hình này được giới thiệu lần đầu vào năm 2016 bởi Joseph Redmon và đồng nghiệp. Từ đó, YOLO đã trải qua nhiều phiên bản và cải tiến, trong đó YOLOv8 là một phiên bản gần đây đáng chú ý. Trong bài viết này, chúng ta sẽ tìm hiểu về những điểm làm nổi bật YOLO v8 và so sánh nó với các thuật toán phát hiện đối tượng khác.
YOLO là gì?
YOLO, hay “You Only Look Once,” là một thuật toán phát hiện đối tượng trong thị giác máy tính. Điểm đặc biệt của YOLO nằm ở cách nó đưa ra dự đoán về các hộp giới hạn (bounding box) và xác suất của đối tượng trong một lần truyền hình ảnh duy nhất.
Trước đây, các thuật toán phát hiện đối tượng thường sử dụng trình phân loại đã đào tạo sẵn để xác định đối tượng sau khi đã tạo ra các khu vực quan tâm có thể có. Tuy nhiên, YOLO làm khác đi bằng cách đưa ra dự đoán toàn bộ quá trình trong một lần chạy, từ việc xác định vị trí của đối tượng đến việc phân loại chúng.
Với cách tiếp cận đột phá này, YOLO đã đạt được sự cải tiến đáng kể và vượt trội so với các thuật toán phát hiện đối tượng khác, đặc biệt trong việc đảm bảo tính thời gian thực.
Các thuật toán phát hiện đối tượng trước đây, như Faster RCNN, thường hoạt động theo các bước gồm việc xác định khu vực quan tâm và sau đó tiến hành phân loại trên từng khu vực riêng biệt. Trong khi đó, YOLO hoàn tất tất cả các dự đoán chỉ trong một lần chạy, giúp nó đạt được hiệu quả tính toán cao.
Với sự đột phá của YOLO, đã có nhiều phiên bản mới và cải tiến được giới thiệu kể từ lần ra mắt đầu tiên vào năm 2015, mang lại sự phát triển đáng kể cho lĩnh vực phát hiện đối tượng. Hãy cùng điểm qua các mốc thời gian thể hiện sự tiến bộ của YOLO trong những năm qua.
Cơ chế hoạt động của YOLO
Mô hình YOLO được đào tạo trước với ImageNet, một tập dữ liệu chứa nhiều hình ảnh khác nhau. Sau đó, nó được chuyển đổi để thực hiện phát hiện đối tượng. Lớp kết nối đầy đủ cuối cùng của YOLO thực hiện dự đoán về xác suất của lớp và tọa độ của hộp giới hạn.
Kiến trúc YOLO và cơ chế hoạt động
YOLO chia hình ảnh đầu vào thành một lưới ô lưới có kích thước S x S. Mỗi ô lưới có nhiệm vụ phát hiện đối tượng nếu tâm của đối tượng nằm trong ô đó. Mỗi ô lưới dự đoán B hộp giới hạn và các điểm tin cậy cho mỗi hộp đó. Các điểm tin cậy thể hiện độ tin cậy của mô hình rằng một hộp chứa một đối tượng và mức độ chính xác của dự đoán đó.
YOLO dự đoán nhiều hộp giới hạn trên mỗi ô lưới và sau đó chỉ lựa chọn hộp giới hạn dựa trên chỉ số IOU (Intersection over Union) cao nhất với thực tế. Điều này tạo ra sự chuyên môn hóa giữa các dự đoán hộp giới hạn, giúp cải thiện tổng thể độ chính xác.
NMS (non-maximum suppression) là một kỹ thuật quan trọng trong YOLO, được sử dụng để loại bỏ các hộp giới hạn dư thừa hoặc không chính xác sau khi các dự đoán đã được thực hiện. NMS giúp xác định hộp giới hạn duy nhất cho mỗi đối tượng trong hình ảnh, cải thiện độ chính xác và hiệu quả của việc phát hiện đối tượng.
Các phiên bản của YOLO
YOLO, viết tắt của “You Only Look Once,” đã trải qua nhiều phiên bản với sự phát triển liên tục để tăng hiệu suất và độ chính xác. Dưới đây là sự phát triển của các phiên bản YOLO:
YOLO v2 (YOLO9000)
Phiên bản này được giới thiệu vào năm 2016 và được biết đến với tên YOLO9000. YOLO v2 được thiết kế để nhanh hơn và chính xác hơn phiên bản gốc. Nó cung cấp khả năng phát hiện nhiều loại đối tượng hơn. Cải tiến quan trọng trong YOLO v2 bao gồm việc sử dụng anchor boxes, chuẩn hóa hàng loạt, và chiến lược đào tạo đa quy mô.
YOLO v3
YOLO v3, ra mắt vào năm 2018, tập trung vào việc tăng độ chính xác và tốc độ của thuật toán. Nó sử dụng một kiến trúc CNN mới có tên Darknet-53 và anchor boxes được điều chỉnh để phù hợp với kích thước và hình dạng của đối tượng. YOLO v3 cũng giới thiệu feature pyramid networks (FPN) để cải thiện phát hiện ở nhiều tỷ lệ khung hình. Điều này cải thiện hiệu suất phát hiện trên các đối tượng nhỏ.
YOLO v4
YOLO v4, giới thiệu vào năm 2020, sử dụng một kiến trúc CNN mới có tên là CSPNet và sử dụng anchor boxes với k-means clustering. Nó giới thiệu một loss function mới gọi là GHM loss và cải thiện kiến trúc của FPN so với YOLO v3.
YOLO v5
YOLO v5, được giới thiệu vào năm 2020, sử dụng kiến trúc phức tạp hơn gọi là EfficientDet và đào tạo trên tập dữ liệu lớn hơn (D5) bao gồm nhiều danh mục đối tượng. Nó sử dụng dynamic anchor boxes, spatial pyramid pooling (SPP), và CIoU loss để cải thiện hiệu suất đối tượng phát hiện trên nhiều loại đối tượng.
YOLO v6
Phiên bản này được đề xuất vào năm 2022 bởi Li và cộng sự. YOLO v6 sử dụng một biến thể của kiến trúc EfficientNet có tên là EfficientNet-L2 và đưa ra dense anchor boxes.
Mỗi phiên bản YOLO đã mang lại cải tiến đáng kể trong việc phát hiện đối tượng với việc sử dụng các kiến thức mới, kiến trúc mạng nâng cấp và phương pháp đào tạo tốt hơn. Sự phát triển liên tục của YOLO cho thấy cam kết của cộng đồng nghiên cứu trong việc cải thiện thuật toán phát hiện đối tượng và thị giác máy tính.
YOLO V7
YOLO v7 sử dụng một tập hợp gồm chín anchor boxes, một công cụ quan trọng giúp cải thiện việc xác định đối tượng. Các anchor boxes với các tỷ lệ khung hình khác nhau cho phép YOLOv7 phát hiện hiệu quả các đối tượng có hình dạng và kích thước đa dạng.
Một cải tiến quan trọng trong YOLO v7 là việc sử dụng focal loss function. Trong khi các phiên bản trước sử dụng cross-entropy loss, focal loss tập trung vào việc giảm trọng số cho các ví dụ được phân loại đúng, hỗ trợ việc phát hiện đối tượng khó hơn. Điều này đóng góp đáng kể vào độ chính xác tổng thể.
Độ phân giải của YOLO v7 đã được nâng lên. Nó xử lý hình ảnh ở độ phân giải 608 x 608 pixel, cao hơn so với 416 x 416 pixel trong YOLO v3. Điều này giúp YOLOv7 phát hiện các đối tượng nhỏ hơn và tăng độ chính xác tổng thể của thuật toán.
YOLO v7 vẫn duy trì tốc độ ấn tượng của dòng sản phẩm YOLO. Với khả năng xử lý hình ảnh ở tốc độ 155 khung hình mỗi giây, YOLO v7 vượt trội so với nhiều thuật toán phát hiện đối tượng khác. Điều này làm cho nó trở thành một lựa chọn lý tưởng cho các ứng dụng thời gian thực như giám sát và ô tô tự lái, nơi tốc độ xử lý là yếu tố quan trọng.
YOLO v7, dù mạnh mẽ và hiệu quả, vẫn tồn tại một số hạn chế như sau:
- Phát hiện đối tượng nhỏ còn hạn chế: YOLOv7 gặp khó khăn trong việc phát hiện các đối tượng nhỏ hoặc ở khoảng cách xa. Điều này đặc biệt quan trọng trong các tình huống đông đúc hoặc khi đối tượng cần phát hiện không nổi bật trong bối cảnh.
- Khó khăn với tỷ lệ và kích thước khung hình khác nhau: YOLOv7 có thể gặp khó khăn trong việc phát hiện đối tượng ở các tỷ lệ khung hình khác nhau. Điều này đôi khi gây khó khăn khi có sự biến đổi về kích thước giữa các đối tượng trong cùng một hình ảnh.
- Nhạy cảm với biến đổi ánh sáng và môi trường: YOLOv7 có thể không ổn định khi ánh sáng hoặc điều kiện môi trường thay đổi. Nó có thể dẫn đến việc không thể phát hiện đối tượng hoặc tạo ra các dự đoán không chính xác trong điều kiện môi trường biến đổi.
- Yêu cầu tính toán nhiều: YOLOv7 yêu cầu nhiều tính toán để xử lý ảnh, điều này có thể gây khó khăn khi cố gắng chạy thuật toán trong thời gian thực trên các thiết bị có tài nguyên hạn chế như điện thoại thông minh. Việc cải thiện tốc độ suy luận có thể đòi hỏi sự đầu tư vào phần cứng mạnh mẽ.
YOLOv8 là gì?
YOLOv8 là phiên bản mới nhất trong dòng mô hình YOLO. Các mô hình YOLO được huấn luyện trước trên các bộ dữ liệu lớn như COCO và ImageNet. Điều này cho phép chúng vừa có khả năng cung cấp dự đoán cực kỳ chính xác với các lớp đã được huấn luyện, vừa có thể học các lớp mới một cách tương đối dễ dàng.
Các mô hình YOLO cũng có tốc độ huấn luyện nhanh hơn, với độ chính xác cao và kích thước mô hình nhỏ. Chúng có thể được huấn luyện trên các GPU đơn, do đó dễ tiếp cận hơn đối với các nhà phát triển.
Được công bố vào đầu năm 2023, YOLOv8 đã mang lại nhiều điểm tích cực so với phiên bản tiền nhiệm, như phát hiện không dùng anchor, giới thiệu lớp tích chập C3 và tăng cường mosaic.
YOLOv8 có gì cải tiến so với phiên bản trước đó?
So sánh các phiên bản YOLO khác nhau. Hình ảnh từ kho lưu trữ Ultralytics YOLOv8
Như chúng ta có thể thấy từ biểu đồ, YOLOv8 có nhiều tham số hơn so với các phiên bản tiền nhiệm như YOLOv5, nhưng ít tham số hơn so với YOLOv6. Nó cung cấp khoảng 33% mAP nhiều hơn cho các mô hình kích thước n và mAP lớn hơn nói chung.
Từ biểu đồ thứ hai, chúng ta có thể thấy YOLOv8 có thời gian suy luận nhanh hơn so với tất cả các phiên bản YOLO khác.
Trong YOLOv8, ta có các kích thước mô hình khác nhau như yolov8- n – nano, s – small, m – medium, l – large và x – extra large.
Kích thước mô hình tương ứng tuyến tính với mAP và nghịch đảo tương ứng với thời gian suy luận. Các mô hình lớn mất nhiều thời gian suy luận để phát hiện đối tượng một cách chính xác với mAP cao hơn. Các mô hình nhỏ có thời gian suy luận nhanh hơn nhưng có mAP tương đối thấp hơn. Các mô hình lớn hơn tốt hơn nếu chúng ta có ít dữ liệu. Các mô hình nhỏ hơn hiệu quả hơn nếu ta có ít không gian (các tình huống biên).
Tổng Kết
YOLO (You Only Look Once) là một thuật toán phát hiện đối tượng phổ biến đã cách mạng hóa lĩnh vực thị giác máy tính. Nó nhanh và hiệu quả, là một lựa chọn tuyệt vời cho các nhiệm vụ phát hiện đối tượng thời gian thực. Được công bố vào đầu năm 2023, YOLOv8 đã mang lại nhiều điểm tích cực so với phiên bản tiền nhiệm, như phát hiện không dùng anchor, giới thiệu lớp tích chập C3 và tăng cường mosaic.