# Mô Hình Nhận Dạng Vật Thể YOLOv8
Sinh viên thực hiện:
1. Đỗ Gia Huy
2. Phạm Diệu Nguyên
---
## I. Giới thiệu
### A. Mở đầu
Trên hành trình phát triển của công nghệ nhận dạng vật thể, mô hình YOLOv8 đã nhanh chóng trở thành một trong những công cụ quan trọng và tiên tiến nhất. Với khả năng phát hiện vật thể trong thời gian thực và xử lý hình ảnh với tốc độ đáng kinh ngạc, YOLOv8 đã đem lại những tiến bộ đáng kể trong lĩnh vực nhận dạng đối tượng.
Bài báo cáo này sẽ cung cấp các kiến thức cơ bản về mô hình nhận dạng vật thể YOLOv8 và tầm quan trọng của nó trong lĩnh vực phát hiện đối tượng.
### B. Mục đích và phạm vi của bài báo cáo
Mục đích của bài báo cáo là tìm hiểu về mô hình nhận dạng vật thể YOLOv8 và trình bày chi tiết về cấu trúc, tính năng, và ưu điểm của mô hình này. Báo cáo cũng giới thiệu các thuật toán phát hiện đối tượng phổ biến khác và so sánh YOLOv8 với chúng. Ngoài ra, báo cáo cung cấp thông tin về các bước huấn luyện và ứng dụng của YOLOv8, bao gồm chuẩn bị dữ liệu huấn luyện và đánh giá hiệu suất của mô hình. Mục đích cuối cùng của báo cáo là đánh giá ưu điểm và hạn chế của YOLOv8 và cung cấp một cái nhìn tổng quan về mô hình nhận dạng vật thể này.
### C. Cấu trúc của bài báo cáo
##### [toc]
---
## II. Tổng quan về YOLOv8
YOLOv8 là một thuật toán thị giác máy tính được sử dụng để phát hiện đối tượng. Mô hình này được phát triển dựa trên các phiên bản trước của YOLO (You Only Look Once – Nhận diện vật thể bằng một lần nhìn).
Ngoài ra, YOLOv8 còn được thiết kế để phát hiện đối tượng trong thời gian thực và có thể xử lý hình ảnh trong vài mili giây.
### A. Khái quát về hệ thống phát hiện đối tượng
#### 1. Phát hiện đối tượng (Object Detection)
Phát hiện đối tượng (Object Detection) là một công nghệ máy tính liên quan đến thị giác máy tính [(Computer Vision)](https://azure.microsoft.com/en-us/resources/cloud-computing-dictionary/what-is-computer-vision/#:~:text=Computer%20vision%20is%20a%20field,tasks%20that%20replicate%20human%20capabilities.) và xử lý hình ảnh [(Image Processing)](https://en.wikipedia.org/wiki/Digital_image_processing) nhằm phát hiện các trường hợp của đối tượng ngữ nghĩa của một lớp nhất định trong hình ảnh và video kỹ thuật số.
Các mô hình phát hiện đối tượng thường được đào tạo để phát hiện sự hiện diện của các đối tượng cụ thể trong hình ảnh, video hoặc hoạt động thời gian thực (real-time).
Phát hiện đối tượng được coi là một trong những lĩnh vực quan trọng nhất trong phát triển của học sâu [(Deep Learning)](https://azure.microsoft.com/en-us/resources/cloud-computing-dictionary/what-is-deep-learning/) và xử lý hình ảnh.
#### 2. Ví dụ

Ở hình ảnh trên, có tổng cộng 3 vật thể được mô hình phát hiện và dự đoán hộp giới hạn, sau đó sẽ được phân loại (nhận diện) đối tượng bằng các dữ liệu thử nghiệm được cung cấp trước đó.
Độ chính xác của hộp giới hạn được dự đoán và hiệu suất tối ưu sẽ phụ thuộc vào dữ liệu thử nghiệm dùng để huấn luyện.
#### 3. Các thuật toán phát hiện đối tượng phổ biến
##### a. Phương pháp mô tả đặc trưng (Histogram of Oriented Gradients – HOG)
HOG dựa trên việc chia ảnh đầu vào thành các ảnh con, tính toán histogram của ảnh để tổng hợp và trích rút ra các vector gọi là vector đặc trưng ứng với từng đối tượng.

Kiến trúc hệ thống HOG để phát hiện đối tượng. Nguồn: Neptune.AI
##### b. Mạng nơ-ron tích chập theo vùng (R-CNN)
Là một cải tiến mới trong kỹ thuật phát hiện đối tượng từ HOG và SIFT (Scale-invariant feature transform). Trong các mô hình R-CNN thường trích xuất các đặc trưng cần thiết nhất của đối tượng (~2000 đặc trưng) bằng cách sử dụng giải thuật chọn lọc (selective search). Quá trình lựa chọn các đặc trưng quan trọng nhất có thể được tính toán với sự trợ giúp của thuật toán tìm kiếm chọn lọc.

Chu trình phát hiện đối tượng với Mạng nơ-ron tích chập dựa trên khu vực (R-CNN)

Giải thuật Selective Search

Nhận dạng đối tượng bằng Selective Search
##### c. Faster R-CNN
Mô hình Fast R-CNN và Faster R-CNN đã được phát triển để giải quyết vấn đề tốc độ mô hình và xử lý các nhược điểm của R-CNN.
Trong khi mô hình R-CNN và Fast R-CNN sử dụng thuật toán tìm kiếm chọn lọc để tính toán các đề xuất vùng, thì phương pháp Faster R-CNN sẽ thay thế phương pháp hiện có này bằng một mạng đề xuất các vùng đặc trưng (Region Proposal Network – RPN).

Minh họa mô hình Faster R-CNN
### B. Giới thiệu về YOLO
Yolo là một mô hình mạng CNN cho việc phát hiện, nhận dạng, phân loại đối tượng. Yolo được tạo ra từ việc kết hợp giữa các convolutional layers (Conv) và connected layers. Trong đó các convolutional layers sẽ trích xuất ra các feature của ảnh, còn full-connected layers (FC) sẽ dự đoán ra xác suất đó và tọa độ của đối tượng.
Đầu vào của mô hình là một ảnh, mô hình sẽ nhận dạng ảnh đó có đối tượng nào hay không, sau đó sẽ xác định tọa độ của đối tượng trong bức ảnh.
### C. YOLOv8 và sự phát triển từ phiên bản trước
YOLOv8 là một mô hình nhận dạng đối tượng dựa trên mạng convolutional neural network (CNN) được phát triển bởi Joseph Redmon và nhóm nghiên cứu của ông tại Đại học Washington.
YOLOv8 là phiên bản nâng cấp của YOLOv7, với khả năng nhận diện đối tượng nhanh hơn và chính xác hơn. Điều này được đạt được thông qua một số cải tiến, bao gồm mạng kim tự tháp đặc trưng, các mô-đun chú ý không gian và các kỹ thuật tăng cường dữ liệu tiên tiến.
Mô hình YOLOv8 sử dụng một mạng neural kiến trúc darknet-53 để trích xuất đặc trưng của hình ảnh và áp dụng thuật toán nhận dạng đối tượng YOLOv8 trên các đặc trưng đó.
### Key features:
- Tăng cường mô hình bằng cách thêm các kênh phân tán để tăng tốc độ tính toán.
- Sử dụng kỹ thuật Attention để cải thiện khả năng nhận dạng đối tượng của mô hình.
- Áp dụng phương pháp đào tạo mới để tăng tốc độ hội tụ.
- Sử dụng kiến trúc mạng nơ-ron mới: Sử dụng kiến trúc YOLOv4 làm cơ sở để tăng hiệu suất và độ chính xác của mô hình.
- Tích hợp cơ chế tự động điều chỉnh tỷ lệ tăng kích thước của hình ảnh đầu vào (AutoScale).
- Hỗ trợ giám sát bằng video (Video Supervision): Mô hình có khả năng phát hiện và giám sát vật thể trong các video và đưa ra dự đoán liên tục trên toàn bộ video.
- Tích hợp công nghệ Ensemble.
- Tính năng điều chỉnh tỷ lệ tự động (AutoAnchor): Cải thiện việc phát hiện đối tượng với nhiều tỷ lệ khác nhau.
### Progression Timeline

Dòng thời gian phát triển của YOLO
### D. Ưu điểm và hạn chế của YOLOv8
#### 1. Ưu điểm
**Tốc độ:** YOLOv8 được đánh giá là nhanh chóng và thời gian phản hồi thấp, giúp xử lý các tác vụ nhận diện đối tượng và phân-segment ảnh trong thời gian thực.
**Độ chính xác:** YOLOv8 được xây dựng trên các tiến bộ về học sâu và thị giác máy tính, đảm bảo độ chính xác cao trong việc nhận diện đối tượng.
**Sự linh hoạt:** YOLOv8 hỗ trợ việc nhận diện đối tượng và phân-segment trên cả GPU và CPU, tận dụng các công nghệ như TensorRT của Nvidia và OpenVino của Intel.

So sánh độ chính xác và hiệu suất của các mô hình YOLO
#### 2. Hạn chế
- Để sử dụng YOLOv8 hiệu quả cần phải:
1. Có kiến thức chuyên sâu về Machine Learning, Deep Learning và các thuật toán liên quan.
2. Cần phải được huấn luyện trên một tập dữ liệu đủ lớn và đa dạng để đạt được hiệu quả cao nhất.
3. Yêu cầu các tài nguyên tính toán cao để đạt được tốc độ xử lý nhanh và chính xác.
- Thuật toán YOLOv8 không phải là mã nguồn mở và chỉ có sẵn thông qua các thỏa thuận cấp phép với người tạo ra nó, Joseph Redmon.
- YOLOv8 có thể không hoạt động tốt trong tất cả các môi trường và có thể cần thêm điều chỉnh hoặc tối ưu hóa để đạt được hiệu suất tối ưu.
---
## III. Các bước huấn luyện và ứng dụng của YOLOv8
### A. Chuẩn Bị Dữ Liệu Huấn Luyện
Để huấn luyện mô hình YOLOv8, ta cần có tập dữ liệu hình ảnh được gắn nhãn và chú thích đối tượng tương ứng của chúng. Các chú thích bao gồm nhãn lớp đối tượng (class) và tọa độ của hộp giới hạn (bounding box) của nó trong ảnh. Dữ liệu này được sử dụng để đào tạo mô hình phát hiện chính xác các đối tượng trong hình ảnh mới.
Việc tạo ra tập dữ liệu tùy chỉnh có thể là một quá trình khó khăn. Có thể mất hàng chục hoặc thậm chí hàng trăm giờ để thu thập hình ảnh, gắn nhãn và chuyển đổi chúng ở định dạng thích hợp. Nhưng ngày nay đã có nhiều tools hỗ trợ việc xử lý dữ liệu như LabelImg, RectLabel hay Roboflow.

Ngoài ra, thay vì phải xử lý dữ liệu một cách thủ công ta có thể sử dụng những tập dữ liệu đã được xử lý sẵn trên mạng. Việc này tốn ít thời gian hơn và ta có thể tìm nó từ các nguồn như Kaggle, UCI Machine Learning Repository và ImageNet.
### B. Các Bước Tạo Dataset
• Thu thập dữ liệu: Bước đầu tiên trong việc tạo tập dữ liệu tùy chỉnh là xác định vấn đề và loại dữ liệu ta cần. Khi ta đã xác định vấn đề của mình, ta cần thu thập dữ liệu. Điều này có thể liên quan đến việc chụp ảnh, tải xuống hình ảnh từ internet hoặc thu thập dữ liệu từ các nguồn khác.
• Gắn nhãn cho dữ liệu: Sau khi ta đã thu thập dữ liệu, ta cần dán nhãn cho nó. Điều này liên quan đến việc thêm chú thích vào dữ liệu cho biết vị trí và loại của các đối tượng trong ảnh. Ta có thể sử dụng nhiều công cụ khác nhau để gắn nhãn cho dữ liệu của mình.

Hình ảnh nhiều chiếc xe hơi được gắn nhãn (Nguồn: Open Image Dataset v7)
• Chuyển đổi dữ liệu: Tùy thuộc vào khung bạn đang sử dụng, bạn có thể cần chuyển đổi dữ liệu sang một định dạng cụ thể. Ngoài ra, bạn có thể thay đổi kích thước hình ảnh, chuẩn hóa giá trị pixel hoặc áp dụng các kỹ thuật tăng cường dữ liệu để tăng kích thước tập dữ liệu của mình.
### C. Quá trình huấn luyện
Đầu tiên, việc cài đặt tham số rất quan trọng vì nó quyết định hiệu suất và độ chính xác của mô hình. Tham số là các biến ảnh hưởng đến cách mô hình học và khái quát hóa các mẫu trong dữ liệu. Các tham số này có thể có tác động đáng kể đến hiệu suất, độ chính xác và thời gian đào tạo của mô hình:
* Batch size: là một trong những tham số xác định số lượng dữ liệu huấn luyện được sử dụng trong một lần lặp lại thuật toán. Nó chỉ định số lượng mẫu sẽ được truyền qua mạng thần kinh (Neural Network) cùng một lúc. Việc lựa chọn batch size phụ thuộc vào kích thước của tập dữ liệu, độ phức tạp của mô hình và tài nguyên máy tính.
* Learning rate: là một tham số xác định kích thước weight (giá trị) mà tại đó các tham số của mô hình được cập nhật trong quá trình đào tạo. Learning rate lớn có nghĩa là các tham số của mô hình được cập nhật mạnh mẽ hơn, điều này có thể dẫn đến việc học nhanh hơn nhưng cũng có thể dẫn đến vượt quá các giá trị tối ưu. Learning rate nhỏ có nghĩa là các tham số của mô hình được cập nhật thận trọng hơn, điều này có thể làm chậm quá trình học nhưng có thể dẫn đến độ ổn định và độ chính xác được cải thiện.
* Epochs: là một lần lặp hoàn chỉnh thông qua toàn bộ tập dữ liệu trong quá trình đào tạo. Trong mỗi Epochs, mô hình được trình bày với toàn bộ tập dữ liệu và nó cập nhật các trọng số của nó dựa trên các lỗi mà nó mắc phải trong khi dự đoán đầu ra chính xác. Mục tiêu của nhiều Epochs là cải thiện độ chính xác của mô hình bằng cách điều chỉnh weight của nó trên toàn bộ tập dữ liệu nhiều lần.

Mô hình mạng lưới neural đơn giản
### D. Đánh Giá Mô Hình
Sau khi thiết lập tham số thì việc đào tạo hoàn toàn được máy tính xử lý, tuy nhiên ta cần đánh giá mô hình sau khi hoàn thành là một bước quan trọng để kiểm tra hiệu suất của mô hình với những tệp dữ liệu mới. Một số chỉ số được sử dụng để đánh giá hiệu suất của mô hình như:
• Accuracy (độ chính xác): là số liệu đơn giản và phổ biến nhất đo lường số dự đoán chính xác do mô hình đưa ra chia cho tổng số dự đoán. Tuy nhiên, độ chính xác thôi có thể không đủ để đánh giá các mô hình cho dữ liệu mất ổn định.
• Precision (độ chuẩn xác): là phần nhỏ của các dự đoán tích cực thực sự trong số tất cả các dự đoán tích cực do mô hình đưa ra. Số liệu này rất quan trọng trong các tình huống mà kết quả dương tính giả trở thành vấn đề.
• Recall (khả năng thu hồi): là phần dự đoán tích cực thực sự trong số tất cả các điểm dữ liệu tích cực. Số liệu này rất quan trọng trong các tình huống mà âm tính giả trở thành vấn đề.
• F1 Score: là một chỉ số giữa độ chính xác và khả năng thu hồi. Nó cung cấp sự cân bằng giữa hai số liệu và hữu ích khi cả độ chính xác và khả năng thu hồi đều quan trọng.
Nhìn chung, đánh giá mô hình là một bước quan trọng trong học máy giúp chúng ta hiểu hiệu suất của một mô hình và xác định các điểm cần cải thiện. Bằng cách hiểu được điểm mạnh và điểm yếu của một mô hình, chúng ta có thể cải thiện nó lặp đi lặp lại để đạt được kết quả tốt hơn.
---
## IV. Tổng kết
YOLOv8 là một thuật toán thị giác máy tính được sử dụng để phát hiện đối tượng dựa trên mạng convolutional neural network (CNN).
Đầu vào của mô hình là một ảnh, mô hình sẽ nhận dạng ảnh đó có đối tượng nào hay không, sau đó sẽ xác định tọa độ của đối tượng trong bức ảnh.
YOLOv8 là phiên bản nâng cấp của YOLOv7 và được tích hợp nhiều công nghệ, tính năng (AutoAnchor, Ensemble, Video Supervision, AutoScale). Ngoài ra YOLOv8 còn sử dụng kiến trúc mạng nơ-ron mới từ YOLOv4.
YOLOv8 có những ưu điểm vượt trội như tốc độ và độ chính xác cao, sự linh hoạt khi có thể nhận diện đối tượng và phân-segment trên cả GPU và CPU.
Nhưng YOLOv8 có thể không hoạt động tốt trong tất cả các môi trường và có thể cần thêm điều chỉnh hoặc tối ưu hóa để đạt được hiệu suất tối ưu.
---
## V. Tài liệu tham khảo
[Akshit Mehra (2023). Understanding YOLOv8 Architecture, Applications & Features](https://www.labellerr.com/blog/understanding-yolov8-architecture-applications-features/)
[Glenn Jocher(6) (2023). Train Custom Data | Ultralytics YOLOv8 Docs](https://docs.ultralytics.com/yolov5/tutorials/train_custom_data/)
[Jacob Solawetz and Francesco (2023). What is YOLOv8?](https://blog.roboflow.com/whats-new-in-yolov8/)
[pawangfg (2021). Selective Search for Object Detection | R-CNN](https://www.geeksforgeeks.org/selective-search-for-object-detection-r-cnn/)
[Piotr Skalski (2023). How to Train YOLOv8 Object Detection on a Custom Dataset](https://blog.roboflow.com/how-to-train-yolov8-on-a-custom-dataset/)
[VBD (2022). Giới thiệu một số thuật toán phát hiện đối tượng phổ biến](https://vinbigdata.com/camera-ai/gioi-thieu-mot-so-thuat-toan-phat-hien-doi-tuong-pho-bien.html#:~:text=C%C3%A1c%20thu%E1%BA%ADt%20to%C3%A1n%20ph%C3%A1t%20hi%E1%BB%87n%20%C4%91%E1%BB%91i%20t%C6%B0%E1%BB%A3ng%20ph%E1%BB%95,theo%20v%C3%B9ng%20%28R-CNN%29%20...%203%203.%20Faster%20R-CNN)