Bỏ để qua phần nội dung

A Step-by-Step Guide to Training YOLO11 Models with IBM Watsonx

Ngày nay, các giải pháp thị giác máy tính có thể mở rộng đang trở nên phổ biến hơn và thay đổi cách chúng ta xử lý dữ liệu trực quan. Một ví dụ tuyệt vời là IBM Watsonx, một nền tảng dữ liệu và AI tiên tiến giúp đơn giản hóa việc phát triển, triển khai và quản lý các mô hình AI. Nó cung cấp một bộ hoàn chỉnh cho toàn bộ vòng đời AI và tích hợp liền mạch với các dịch vụ Đám mây của IBM.

You can train Ultralytics YOLO11 models using IBM Watsonx. It's a good option for enterprises interested in efficient model training, fine-tuning for specific tasks, and improving model performance with robust tools and a user-friendly setup. In this guide, we'll walk you through the process of training YOLO11 with IBM Watsonx, covering everything from setting up your environment to evaluating your trained models. Let's get started!

IBM Watsonx là gì?

Watsonx is IBM's cloud-based platform designed for commercial generative AI and scientific data. IBM Watsonx's three components - watsonx.ai, watsonx.data, and watsonx.governance - come together to create an end-to-end, trustworthy AI platform that can accelerate AI projects aimed at solving business problems. It provides powerful tools for building, training, and deploying machine learning models and makes it easy to connect with various data sources.

Tổng quan về IBM Watsonx

Its user-friendly interface and collaborative capabilities streamline the development process and help with efficient model management and deployment. Whether for computer vision, predictive analytics, natural language processing, or other AI applications, IBM Watsonx provides the tools and support needed to drive innovation.

Các tính năng chính của IBM Watsonx

IBM Watsonx được tạo thành từ ba thành phần chính: watsonx.ai, watsonx.data và watsonx.governance. Mỗi thành phần cung cấp các tính năng phục vụ cho các khía cạnh khác nhau của AI và quản lý dữ liệu. Chúng ta hãy xem xét kỹ hơn về chúng.

Watsonx.ai

Watsonx.ai cung cấp các công cụ mạnh mẽ để phát triển AI và cung cấp quyền truy cập vào các mô hình tùy chỉnh do IBM hỗ trợ, các mô hình của bên thứ ba như Llama 3 và các mô hình Granite của IBM. Nó bao gồm Prompt Lab để thử nghiệm với lời nhắc AI, Tuning Studio để cải thiện hiệu suất mô hình với dữ liệu được gắn nhãn và Flows Engine để đơn giản hóa việc phát triển ứng dụng AI tạo ra. Ngoài ra, nó cung cấp các công cụ toàn diện để tự động hóa vòng đời mô hình AI và kết nối với các API và thư viện khác nhau.

Watsonx.data

Watsonx.data hỗ trợ cả triển khai đám mây và tại chỗ thông qua tích hợp IBM Storage Fusion HCI. Bảng điều khiển thân thiện với người dùng của nó cung cấp quyền truy cập tập trung vào dữ liệu trên các môi trường và giúp khám phá dữ liệu dễ dàng với SQL thông thường. Nó tối ưu hóa khối lượng công việc với các công cụ truy vấn hiệu quả như Presto và Spark, tăng tốc độ hiểu biết dữ liệu với lớp ngữ nghĩa được hỗ trợ bởi AI, bao gồm cơ sở dữ liệu vectơ cho mức độ liên quan của AI và hỗ trợ các định dạng dữ liệu mở để dễ dàng chia sẻ phân tích và dữ liệu AI.

Watsonx.governance

Watsonx.governance giúp việc tuân thủ trở nên dễ dàng hơn bằng cách tự động xác định các thay đổi về quy định và thực thi các chính sách. Nó liên kết các yêu cầu với dữ liệu rủi ro nội bộ và cung cấp các bảng thông tin AI cập nhật. Nền tảng này giúp quản lý rủi ro với các cảnh báo và công cụ để phát hiện các vấn đề như thiên vị và trôi dạt. Nó cũng tự động hóa việc giám sát và tài liệu về vòng đời AI, tổ chức phát triển AI với kho mô hình và tăng cường cộng tác với các bảng điều khiển và công cụ báo cáo thân thiện với người dùng.

How to Train YOLO11 Using IBM Watsonx

You can use IBM Watsonx to accelerate your YOLO11 model training workflow.

Điều kiện tiên quyết

Bạn cần một tài khoản IBM Cloud để tạo một dự án watsonx.ai và bạn cũng sẽ cần một tài khoản Kaggle để tải tập dữ liệu.

Bước 1: Thiết lập môi trường của bạn

Trước tiên, bạn sẽ cần thiết lập tài khoản IBM để sử dụng Jupyter Notebook. Đăng nhập vào watsonx.ai bằng tài khoản IBM Cloud của bạn.

Sau đó, tạo một dự án watsonx.aiJupyter Notebook.

Sau khi bạn làm như vậy, một môi trường sổ ghi chép sẽ mở ra để bạn tải tập dữ liệu của mình. Bạn có thể sử dụng mã từ hướng dẫn này để giải quyết một nhiệm vụ đào tạo mô hình phát hiện đối tượng đơn giản.

Bước 2: Cài đặt và nhập các thư viện có liên quan

Tiếp theo, bạn có thể cài đặt và nhập những thứ cần thiết Python Thư viện.

Cài đặt

# Install the required packages
pip install torch torchvision torchaudio
pip install opencv-contrib-python-headless
pip install ultralytics==8.0.196

For detailed instructions and best practices related to the installation process, check our Ultralytics Installation guide. While installing the required packages for YOLO11, if you encounter any difficulties, consult our Common Issues guide for solutions and tips.

Sau đó, bạn có thể nhập các gói cần thiết.

Nhập các thư viện có liên quan

# Import ultralytics
import ultralytics

ultralytics.checks()

# Import packages to retrieve and display image files

Bước 3: Tải dữ liệu

For this tutorial, we will use a marine litter dataset available on Kaggle. With this dataset, we will custom-train a YOLO11 model to detect and classify litter and biological objects in underwater images.

Chúng ta có thể tải tập dữ liệu trực tiếp vào sổ ghi chép bằng API Kaggle. Đầu tiên, tạo một tài khoản Kaggle miễn phí. Khi bạn đã tạo tài khoản, bạn sẽ cần tạo khóa API. Bạn có thể tìm thấy hướng dẫn tạo khóa của mình trong tài liệu API Kaggle trong phần "Thông tin xác thực API".

Sao chép và dán tên người dùng Kaggle và khóa API của bạn vào mã sau. Sau đó chạy code để cài đặt API và load tập dữ liệu vào Watsonx.

Cài đặt

# Install kaggle
pip install kaggle

Sau khi cài đặt Kaggle, chúng ta có thể tải tập dữ liệu vào Watsonx.

Tải dữ liệu

# Replace "username" string with your username
os.environ["KAGGLE_USERNAME"] = "username"
# Replace "apiKey" string with your key
os.environ["KAGGLE_KEY"] = "apiKey"

# Load dataset
os.system("kaggle datasets download atiqishrak/trash-dataset-icra19 --unzip")

# Store working directory path as work_dir
work_dir = os.getcwd()

# Print work_dir path
print(os.getcwd())

# Print work_dir contents
print(os.listdir(f"{work_dir}"))

# Print trash_ICRA19 subdirectory contents
print(os.listdir(f"{work_dir}/trash_ICRA19"))

Sau khi tải tập dữ liệu, chúng tôi đã in và lưu thư mục làm việc của chúng tôi. Chúng tôi cũng đã in nội dung của thư mục làm việc của chúng tôi để xác nhận tập dữ liệu "trash_ICRA19" đã được tải đúng cách.

Nếu bạn thấy "trash_ICRA19" trong số nội dung của thư mục, thì nó đã tải thành công. Bạn sẽ thấy ba tệp / thư mục: a config.yaml tập tin, a videos_for_testing thư mục và a dataset thư mục. Chúng tôi sẽ bỏ qua videos_for_testing thư mục, vì vậy hãy xóa nó.

We will use the config.yaml file and the contents of the dataset directory to train our object detection model. Here is a sample image from our marine litter data set.

Rác biển với hộp giới hạn

Bước 4: Xử lý trước dữ liệu

May mắn thay, tất cả các nhãn trong bộ dữ liệu rác thải biển đã được định dạng là YOLO .txt tập tin. Tuy nhiên, chúng ta cần sắp xếp lại cấu trúc của các thư mục hình ảnh và nhãn để giúp mô hình của chúng ta xử lý hình ảnh và nhãn. Ngay bây giờ, thư mục tập dữ liệu đã tải của chúng ta tuân theo cấu trúc sau:

Thư mục tập dữ liệu đã tải

Nhưng YOLO Các mô hình theo mặc định yêu cầu các hình ảnh và nhãn riêng biệt trong các thư mục con trong phân tách train / val / test. Chúng ta cần tổ chức lại thư mục thành cấu trúc sau:

Yolo Cấu trúc thư mục

Để tổ chức lại thư mục tập dữ liệu, chúng ta có thể chạy tập lệnh sau:

Xử lý trước dữ liệu

# Function to reorganize dir
def organize_files(directory):
    for subdir in ["train", "test", "val"]:
        subdir_path = os.path.join(directory, subdir)
        if not os.path.exists(subdir_path):
            continue

        images_dir = os.path.join(subdir_path, "images")
        labels_dir = os.path.join(subdir_path, "labels")

        # Create image and label subdirs if non-existent
        os.makedirs(images_dir, exist_ok=True)
        os.makedirs(labels_dir, exist_ok=True)

        # Move images and labels to respective subdirs
        for filename in os.listdir(subdir_path):
            if filename.endswith(".txt"):
                shutil.move(os.path.join(subdir_path, filename), os.path.join(labels_dir, filename))
            elif filename.endswith(".jpg") or filename.endswith(".png") or filename.endswith(".jpeg"):
                shutil.move(os.path.join(subdir_path, filename), os.path.join(images_dir, filename))
            # Delete .xml files
            elif filename.endswith(".xml"):
                os.remove(os.path.join(subdir_path, filename))


if __name__ == "__main__":
    directory = f"{work_dir}/trash_ICRA19/dataset"
    organize_files(directory)

Tiếp theo, chúng ta cần sửa đổi tệp .yaml cho tập dữ liệu. Đây là thiết lập chúng tôi sẽ sử dụng trong tệp .yaml của chúng tôi. Số ID lớp học bắt đầu từ 0:

path: /path/to/dataset/directory # root directory for dataset
train: train/images # train images subdirectory
val: train/images # validation images subdirectory
test: test/images # test images subdirectory

# Classes
names:
    0: plastic
    1: bio
    2: rov

Chạy tập lệnh sau để xóa nội dung hiện tại của config.yaml và thay thế nó bằng các nội dung trên phản ánh cấu trúc thư mục tập dữ liệu mới của chúng tôi. Hãy chắc chắn thay thế phần work_dir của đường dẫn thư mục gốc trong dòng 4 bằng đường dẫn thư mục làm việc của riêng bạn mà chúng tôi đã truy xuất trước đó. Rời khỏi các định nghĩa thư mục con train, val và test. Ngoài ra, không thay đổi {work_dir} trong dòng 23 của mã.

Chỉnh sửa tệp .yaml

# Contents of new confg.yaml file
def update_yaml_file(file_path):
    data = {
        "path": "work_dir/trash_ICRA19/dataset",
        "train": "train/images",
        "val": "train/images",
        "test": "test/images",
        "names": {0: "plastic", 1: "bio", 2: "rov"},
    }

    # Ensures the "names" list appears after the sub/directories
    names_data = data.pop("names")
    with open(file_path, "w") as yaml_file:
        yaml.dump(data, yaml_file)
        yaml_file.write("\n")
        yaml.dump({"names": names_data}, yaml_file)


if __name__ == "__main__":
    file_path = f"{work_dir}/trash_ICRA19/config.yaml"  # .yaml file path
    update_yaml_file(file_path)
    print(f"{file_path} updated successfully.")

Step 5: Train the YOLO11 model

Run the following command-line code to fine tune a pretrained default YOLO11 model.

Train the YOLO11 model

!yolo task=detect mode=train data={work_dir}/trash_ICRA19/config.yaml model=yolo11n.pt epochs=2 batch=32 lr0=.04 plots=True

Dưới đây là một cái nhìn sâu hơn về các tham số trong lệnh huấn luyện mô hình:

  • task: It specifies the computer vision task for which you are using the specified YOLO model and data set.
  • chế độ: Biểu thị mục đích mà bạn đang tải mô hình và dữ liệu được chỉ định. Vì chúng tôi đang đào tạo một mô hình, nó được thiết lập để "đào tạo". Sau đó, khi chúng tôi kiểm tra hiệu suất của mô hình, chúng tôi sẽ đặt nó thành "dự đoán".
  • epochs: This delimits the number of times YOLO11 will pass through our entire data set.
  • batch: The numerical value stipulates the training batch sizes. Batches are the number of images a model processes before it updates its parameters.
  • lr0: Specifies the model's initial learning rate.
  • cốt truyện: Đạo diễn YOLO để tạo và lưu các lô số liệu đào tạo và đánh giá mô hình của chúng tôi.

For a detailed understanding of the model training process and best practices, refer to the YOLO11 Model Training guide. This guide will help you get the most out of your experiments and ensure you're using YOLO11 effectively.

Bước 6: Kiểm tra mô hình

Bây giờ chúng ta có thể chạy suy luận để kiểm tra hiệu suất của mô hình được tinh chỉnh của chúng ta:

Test the YOLO11 model

!yolo task=detect mode=predict source={work_dir}/trash_ICRA19/dataset/test/images model={work_dir}/runs/detect/train/weights/best.pt conf=0.5 iou=.5 save=True save_txt=True

This brief script generates predicted labels for each image in our test set, as well as new output image files that overlay the predicted bounding box atop the original image.

Các nhãn .txt dự đoán cho mỗi hình ảnh được lưu qua save_txt=True đối số và hình ảnh đầu ra với lớp phủ hộp giới hạn được tạo thông qua save=True lý lẽ.
Tham số conf=0.5 Thông báo cho mô hình bỏ qua tất cả các dự đoán với mức độ tin cậy dưới 50%.

Cuối cùng iou=.5 chỉ đạo mô hình bỏ qua các hộp trong cùng một lớp có độ chồng chéo từ 50% trở lên. Nó giúp giảm các hộp trùng lặp tiềm năng được tạo cho cùng một đối tượng.
Chúng tôi có thể tải hình ảnh với các lớp phủ hộp giới hạn dự đoán để xem mô hình của chúng tôi hoạt động như thế nào trên một số ít hình ảnh.

Hiển thị dự đoán

# Show the first ten images from the preceding prediction task
for pred_dir in glob.glob(f"{work_dir}/runs/detect/predict/*.jpg")[:10]:
    img = Image.open(pred_dir)
    display(img)

Mã ở trên hiển thị mười hình ảnh từ bộ thử nghiệm với các hộp giới hạn dự đoán của chúng, kèm theo nhãn tên lớp và mức độ tin cậy.

Bước 7: Đánh giá mô hình

We can produce visualizations of the model's precision and recall for each class. These visualizations are saved in the home directory, under the train folder. The precision score is displayed in the P_curve.png:

Đường cong tin cậy chính xác

The graph shows an exponential increase in precision as the model's confidence level for predictions increases. However, the model precision has not yet leveled out at a certain confidence level after two epochs.

The recall graph (R_curve.png) displays an inverse trend:

Nhớ lại đường cong tự tin

Không giống như độ chính xác, thu hồi di chuyển theo hướng ngược lại, cho thấy khả năng thu hồi lớn hơn với các trường hợp có độ tin cậy thấp hơn và thu hồi thấp hơn với các trường hợp có độ tin cậy cao hơn. Đây là một ví dụ thích hợp về sự đánh đổi về độ chính xác và thu hồi cho các mô hình phân loại.

Step 8: Calculating Intersection Over Union

You can measure the prediction accuracy by calculating the IoU between a predicted bounding box and a ground truth bounding box for the same object. Check out IBM's tutorial on training YOLO11 for more details.

Tóm tắt

We explored IBM Watsonx key features, and how to train a YOLO11 model using IBM Watsonx. We also saw how IBM Watsonx can enhance your AI workflows with advanced tools for model building, data management, and compliance.

Để biết thêm chi tiết về cách sử dụng, hãy truy cập tài liệu chính thức của IBM Watsonx.

Ngoài ra, hãy chắc chắn kiểm tra Ultralytics Trang hướng dẫn tích hợp, để tìm hiểu thêm về các tích hợp thú vị khác nhau.

FAQ

How do I train a YOLO11 model using IBM Watsonx?

To train a YOLO11 model using IBM Watsonx, follow these steps:

  1. Thiết lập môi trường của bạn: Tạo tài khoản IBM Cloud và thiết lập một dự án Watsonx.ai. Sử dụng Jupyter Notebook cho môi trường mã hóa của bạn.
  2. Cài đặt Thư viện: Cài đặt các thư viện cần thiết như torch, opencvultralytics.
  3. Tải dữ liệu: Sử dụng API Kaggle để tải tập dữ liệu của bạn vào Watsonx.
  4. Tiền xử lý dữ liệu: Tổ chức tập dữ liệu của bạn thành cấu trúc thư mục cần thiết và cập nhật .yaml tệp cấu hình.
  5. Đào tạo mô hình: Sử dụng YOLO Giao diện dòng lệnh để đào tạo mô hình của bạn với các tham số cụ thể như epochs, batch sizelearning rate.
  6. Kiểm tra và đánh giá: Chạy suy luận để kiểm tra mô hình và đánh giá hiệu suất của mô hình bằng cách sử dụng các số liệu như độ chính xác và khả năng thu hồi.

For detailed instructions, refer to our YOLO11 Model Training guide.

Các tính năng chính của IBM Watsonx để đào tạo mô hình AI là gì?

IBM Watsonx cung cấp một số tính năng chính để đào tạo mô hình AI:

  • Watsonx.ai: Cung cấp các công cụ để phát triển AI, bao gồm quyền truy cập vào các mô hình tùy chỉnh do IBM hỗ trợ và các mô hình của bên thứ ba như Llama 3. Nó bao gồm Prompt Lab, Tuning Studio và Flows Engine để quản lý vòng đời AI toàn diện.
  • Watsonx.data: Hỗ trợ triển khai đám mây và tại chỗ, cung cấp quyền truy cập dữ liệu tập trung, các công cụ truy vấn hiệu quả như Presto và Spark và lớp ngữ nghĩa được hỗ trợ bởi AI.
  • Watsonx.governance: Tự động hóa việc tuân thủ, quản lý rủi ro bằng các cảnh báo và cung cấp các công cụ để phát hiện các vấn đề như thiên vị và trôi dạt. Nó cũng bao gồm bảng điều khiển và công cụ báo cáo để cộng tác.

Để biết thêm thông tin, hãy truy cập tài liệu chính thức của IBM Watsonx.

Why should I use IBM Watsonx for training Ultralytics YOLO11 models?

IBM Watsonx is an excellent choice for training Ultralytics YOLO11 models due to its comprehensive suite of tools that streamline the AI lifecycle. Key benefits include:

  • Khả năng mở rộng: Dễ dàng mở rộng quy mô đào tạo mô hình của bạn với các dịch vụ Đám mây của IBM.
  • Tích hợp: Tích hợp liền mạch với các nguồn dữ liệu và API khác nhau.
  • Giao diện thân thiện với người dùng: Đơn giản hóa quá trình phát triển với giao diện cộng tác và trực quan.
  • Công cụ nâng cao: Truy cập vào các công cụ mạnh mẽ như Prompt Lab, Tuning Studio và Flows Engine để nâng cao hiệu suất mô hình.

Learn more about Ultralytics YOLO11 and how to train models using IBM Watsonx in our integration guide.

How can I preprocess my dataset for YOLO11 training on IBM Watsonx?

To preprocess your dataset for YOLO11 training on IBM Watsonx:

  1. Tổ chức các thư mục: Đảm bảo tập dữ liệu của bạn tuân theo YOLO Cấu trúc thư mục với các thư mục con riêng biệt cho hình ảnh và nhãn trong phân tách train / val / test.
  2. Cập nhật tệp .yaml: Sửa đổi .yaml cấu hình để phản ánh cấu trúc thư mục mới và tên lớp.
  3. Chạy Preprocessing Script: Sử dụng một Python tập lệnh để tổ chức lại tập dữ liệu của bạn và cập nhật .yaml tập tin cho phù hợp.

Dưới đây là tập lệnh mẫu để sắp xếp tập dữ liệu của bạn:

import os
import shutil


def organize_files(directory):
    for subdir in ["train", "test", "val"]:
        subdir_path = os.path.join(directory, subdir)
        if not os.path.exists(subdir_path):
            continue

        images_dir = os.path.join(subdir_path, "images")
        labels_dir = os.path.join(subdir_path, "labels")

        os.makedirs(images_dir, exist_ok=True)
        os.makedirs(labels_dir, exist_ok=True)

        for filename in os.listdir(subdir_path):
            if filename.endswith(".txt"):
                shutil.move(os.path.join(subdir_path, filename), os.path.join(labels_dir, filename))
            elif filename.endswith(".jpg") or filename.endswith(".png") or filename.endswith(".jpeg"):
                shutil.move(os.path.join(subdir_path, filename), os.path.join(images_dir, filename))


if __name__ == "__main__":
    directory = f"{work_dir}/trash_ICRA19/dataset"
    organize_files(directory)

Để biết thêm chi tiết, hãy tham khảo hướng dẫn xử lý sơ bộ dữ liệu của chúng tôi.

What are the prerequisites for training a YOLO11 model on IBM Watsonx?

Before you start training a YOLO11 model on IBM Watsonx, ensure you have the following prerequisites:

  • Tài khoản đám mây IBM: Tạo tài khoản trên Đám mây IBM để truy cập Watsonx.ai.
  • Tài khoản Kaggle: Để tải tập dữ liệu, bạn sẽ cần tài khoản Kaggle và khóa API.
  • Jupyter Notebook: Thiết lập môi trường Jupyter Notebook trong Watsonx.ai để viết mã và đào tạo mô hình.

Để biết thêm thông tin về cách thiết lập môi trường của bạn, hãy truy cập Ultralytics Hướng dẫn cài đặt.


📅 Created 2 months ago ✏️ Updated 12 days ago

Ý kiến