Cách huấn luyện YOLOv8 trên dữ liệu tùy chỉnh
YOLOv8 là thuật toán phát hiện đối tượng thời gian thực được sử dụng rộng rãi trong lĩnh vực phát hiện đối tượng. Nó là một phần của sê-ri You Only Look Once (YOLO) được phát triển bởi Ultralytics. Thuật toán theo dõi, phát hiện, phân đoạn các trường hợp, ước tính tư thế và phân loại các đối tượng trong hình ảnh và video. Nó nhằm mục đích nhanh hơn và chính xác hơn các thuật toán tiền nhiệm của nó.
Sử dụng YOLOv8 trên các bộ dữ liệu thử nghiệm như CIFAR-10 và CIFAR-100 thường dễ dàng hơn đối với các dự án Bằng chứng khái niệm (POC) so với trên các bộ dữ liệu trong thế giới thực yêu cầu bộ dữ liệu tùy chỉnh.
Hướng dẫn này sẽ hướng dẫn bạn các bước liên quan đến đào tạo YOLOv8 trên dữ liệu tùy chỉnh.
Mục Lục
Thiết lập môi trường Python
Bắt đầu bằng cách cài đặt môi trường phát triển cho dự án, theo hướng dẫn bên dưới.
- Đi đến thiết bị đầu cuối và tạo một thư mục mới có tên yolov8project:
mkdir yolov8project
- Điều hướng đến thư mục dự án và tạo một môi trường ảo:
cd yolov8project
python -m venv env - Sau đó, kích hoạt môi trường ảo.
# On Windows
env/Scripts/activate# On Linux / macOS
source env/bin/activateĐể chạy mã của bạn, bạn cần cài đặt Ultralytics, một thư viện để phát hiện đối tượng và phân đoạn hình ảnh. Nó cũng là một phần phụ thuộc của YOLOv8. Cài đặt nó bằng pip bằng cách chạy lệnh bên dưới.
pip install ultralytics
- Lệnh này cài đặt mô hình được đào tạo trước của YOLOv8, yolov8n.pt. Kiểm tra mô hình bằng cách chạy các lệnh bên dưới để thực hiện phát hiện với các trọng số được đào tạo trước trên hình ảnh hoặc video bạn đã chọn tương ứng bằng cách sử dụng YOLOv8.
#image detection
yolo task=detect mode=predict model=yolov8n.pt source="path/to/image.png"#video detection
yolo task=detect mode=predict model=yolov8n.pt source="path/to/video.mp4"Nếu mọi thứ hoạt động hoàn hảo, kết quả sẽ có sẵn trong yolov8project thư mục trong chạy/phát hiện/exp thư mục con.
Chuẩn bị tập dữ liệu tùy chỉnh của bạn
Các bước để chuẩn bị tập dữ liệu tùy chỉnh của bạn bao gồm thu thập dữ liệu, gắn nhãn dữ liệu và phân tách dữ liệu (đào tạo, thử nghiệm, xác thực).
Thu thập dữ liệu
Đây là quá trình thu thập một tập hợp các hình ảnh có các đối tượng mà bạn muốn phát hiện. Đảm bảo sử dụng hình ảnh chất lượng cao, rõ nét và các đối tượng được hiển thị rõ ràng. Bạn có thể sử dụng nhiều công cụ để thu thập hình ảnh, chẳng hạn như Google Hình ảnh, Flickr hoặc máy ảnh của riêng bạn. Nếu bạn không có tập dữ liệu hình ảnh, hãy sử dụng tập dữ liệu từ cơ sở dữ liệu hình ảnh mở. Bài viết này sẽ sử dụng bộ dữ liệu hình ảnh an toàn công trường xây dựng từ Kaggle.
Ghi nhãn dữ liệu
Sau khi thu thập hình ảnh của bạn, bạn cần dán nhãn cho chúng. Điều này có nghĩa là xác định các đối tượng trong mỗi hình ảnh và các hộp giới hạn của chúng. Có sẵn một số công cụ giúp bạn gắn nhãn dữ liệu của mình, chẳng hạn như LabelImg, CVAT và Roboflow. Những công cụ này đều miễn phí sử dụng.
Tách dữ liệu
Để huấn luyện các mô hình máy học, bạn phải chia dữ liệu của mình thành các tập huấn luyện và tập kiểm tra. Hãy thử sử dụng tỷ lệ phân chia 70%-30% khi sử dụng lượng lớn dữ liệu. Nếu không, hãy giữ ở mức 80%-20% để tránh trang bị thừa hoặc thiếu cho mô hình của bạn.
Sử dụng các thư mục phân tách để phân chia ngẫu nhiên dữ liệu của bạn thành các bộ đào tạo, kiểm tra và xác thực với tỷ lệ phân chia mong muốn của bạn.
Định cấu hình YOLOv8 cho Tập dữ liệu của bạn
Sau khi gắn nhãn dữ liệu của bạn, hãy tiếp tục định cấu hình YOLOv8 cho tập dữ liệu tùy chỉnh của bạn. Điều này liên quan đến việc tạo một tệp cấu hình chỉ định như sau:
- Đường dẫn đến dữ liệu đào tạo của bạn.
- Đường dẫn đến dữ liệu xác thực của bạn.
- Số lớp bạn muốn phát hiện.
Tạo tệp config.yaml để lưu trữ cấu hình:
path: (dataset directory path)
train: (train dataset folder path)
test: (test dataset folder path)
valid: (validation dataset folder path)
nc: 5
names: ['class1', 'class2', 'class3', 'class4', 'class5']
Tạo tệp cấu hình là một cách hữu ích để cấu trúc và lưu trữ các tham số quan trọng cho mô hình thị giác máy tính của bạn. Đảm bảo cập nhật tệp config.yaml theo tính chất và cấu trúc của tập dữ liệu của bạn.
Đảm bảo sử dụng đúng đường dẫn cho bộ dữ liệu của bạn vì việc huấn luyện mô hình hoàn toàn dựa vào tệp cấu hình.
Đào tạo YOLOv8 về Dữ liệu tùy chỉnh
Khi bạn tạo tệp cấu hình, hãy bắt đầu đào tạo YOLOv8. Sử dụng công cụ dòng lệnh YOLOv8 để đào tạo mô hình của bạn. Công cụ dòng lệnh có một số tham số, chẳng hạn như đường dẫn đến tệp cấu hình, số lượng kỷ nguyên và kích thước hình ảnh như sau:
yolo task=detect mode=train model=yolov8n.pt data=path/to/config.yaml epochs=10 imgsz=640
Có một số phần cho lệnh này.
nhiệm vụ đặt loại tác vụ: phát hiện, phân đoạn hoặc phân loại. cách thức đại diện cho một hành động: đào tạo, dự đoán, val, xuất, theo dõi hoặc điểm chuẩn. người mẫu là mô hình để sử dụng, trong trường hợp này là yolov8n.pt. Bạn cũng có thể sử dụng yolov8s/yolov8l/yolov8x.
kỷ nguyên đại diện cho số vòng đào tạo (10). hình ảnh đại diện cho kích thước hình ảnh (640). Kích thước hình ảnh phải luôn được đặt thành bội số của 32.
Đây là một ví dụ về đầu ra mà bạn có thể mong đợi:
Thời gian được sử dụng để đào tạo tùy thuộc vào kích thước tập dữ liệu của bạn, số lượng kỷ nguyên và số lượng lớp bạn muốn phát hiện. Sau khi quá trình đào tạo hoàn tất, bạn sẽ có một mô hình YOLOv8 được đào tạo mà bạn sẽ sử dụng để phát hiện các đối tượng trong hình ảnh và video.
Sau khi đào tạo xong, hãy suy luận với các trọng số mới, best.pt
yolo task=detect mode=predict model="runs/train/weights/best.pt" source="image.png"
Điều hướng đến chạy/đào tạo/exp/trọng lượng/best.pt thư mục để truy cập các trọng số được đào tạo tùy chỉnh. YOLOv8 sẽ lưu trữ hình ảnh dự đoán trong chạy/phát hiện/exp thư mục con.
Đánh giá hiệu suất của mô hình
Bạn có thể đánh giá hiệu suất của mô hình YOLOv8 bằng cách sử dụng lệnh sau để đánh giá mô hình trên một tập hợp các hình ảnh thử nghiệm:
yolo val model=yolov8n.pt data=path/to/config.yaml batch=1 imgsz=640
Kết quả dự kiến như sau:
Quá trình đánh giá sẽ tạo ra nhiều số liệu khác nhau, chẳng hạn như độ chính xác, khả năng thu hồi và điểm F1. Số liệu chính xác đo tỷ lệ phần trăm đối tượng được phát hiện chính xác. Số liệu thu hồi đo tỷ lệ phần trăm đối tượng mà YOLOv8 phát hiện. Điểm F1 là điểm trung bình có trọng số của các chỉ số về độ chính xác và khả năng thu hồi.
Triển khai mô hình YOLOv8 tùy chỉnh của bạn
Kiểm tra hiệu suất của mô hình YOLOv8 của bạn.
yolo detect predict model=path/to/best.pt source="path/to/image.jpg"
Đầu ra như sau:
Sau đó, lưu các trọng số của mô hình vào một tệp.
yolo export model=path/to/best.pt format=onnx
Sử dụng tệp để tải mô hình vào ứng dụng của bạn và sử dụng nó để phát hiện các đối tượng trong thời gian thực. Nếu bạn triển khai mô hình cho dịch vụ đám mây, hãy sử dụng dịch vụ đám mây để phát hiện các đối tượng trong hình ảnh và video trên dịch vụ.
YOLOv8 mang đi
Nhóm Ultralytics đã liên tục cải tiến các mô hình sê-ri YOLO. Điều này đã khiến họ trở thành những người dẫn đầu ngành công nghệ phát hiện đối tượng và lĩnh vực thị giác máy tính.
YOLOv8 là một mô hình cải tiến mà bạn có thể sử dụng để xử lý nhiều loại dự án thị giác máy tính.