Ultralytics YOLO27:

Hướng dẫn từng bước để huấn luyện model YOLO26 với IBM Watsonx#

Ngày nay, các giải pháp thị giác máy tính có khả năng 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 hình ảnh. IBM Watsonx là một ví dụ tiêu biểu, một nền tảng AI và dữ liệu 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 model AI. Nền tảng này cung cấp một bộ công cụ hoàn chỉnh cho toàn bộ vòng đời AI cùng khả năng tích hợp liền mạch với các dịch vụ IBM Cloud.

Bạn có thể huấn luyện model Ultralytics YOLO26 bằng IBM Watsonx. Đây là một lựa chọn phù hợp cho các doanh nghiệp quan tâm đến huấn luyện model hiệu quả, tinh chỉnh cho các tác vụ cụ thể và cải thiện hiệu năng model bằng các công cụ mạnh mẽ cùng quy trình thiết lập thân thiện với người dùng. Trong hướng dẫn này, chúng tôi sẽ hướng dẫn bạn quy trình huấn luyện YOLO26 với IBM Watsonx, từ thiết lập môi trường đến đánh giá các model đã huấn luyện. Hãy bắt đầu!

IBM Watsonx là gì?#

Watsonx là nền tảng dựa trên đám mây của IBM, được thiết kế cho AI tạo sinh thương mại và dữ liệu khoa học. Ba thành phần của IBM Watsonx - watsonx.ai, watsonx.datawatsonx.governance - kết hợp để tạo thành một nền tảng AI đầu-cuối đáng tin cậy, có thể đẩy nhanh các dự án AI nhằm giải quyết vấn đề kinh doanh. Nền tảng này cung cấp các công cụ mạnh mẽ để xây dựng, huấn luyện và triển khai các model machine learning, đồng thời giúp dễ dàng kết nối với nhiều nguồn dữ liệu khác nhau.

IBM Watsonx AI platform architecture overview

Giao diện thân thiện với người dùng và các khả năng cộng tác của nền tảng giúp tinh gọn quy trình phát triển, đồng thời hỗ trợ quản lý và triển khai model hiệu quả. Dù được sử dụng cho thị giác máy tính, phân tích dự đoán, xử lý ngôn ngữ tự nhiên hay các ứng dụng AI khác, IBM Watsonx đều cung cấp những công cụ và hỗ trợ cần thiết để thúc đẩy đổi mới.

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

IBM Watsonx gồm ba thành phần chính: watsonx.ai, watsonx.datawatsonx.governance. Mỗi thành phần cung cấp các tính năng phục vụ những khía cạnh khác nhau của AI và quản lý dữ liệu. Hãy cùng tìm hiểu kỹ hơn về từng thành phần.

Watsonx.ai#

Watsonx.ai cung cấp các công cụ mạnh mẽ cho việc phát triển AI và cho phép truy cập các model tùy chỉnh được IBM hỗ trợ, các model bên thứ ba như Llama 3 và các model Granite của IBM. Nền tảng này bao gồm Prompt Lab để thử nghiệm prompt AI, Tuning Studio để cải thiện hiệu năng model bằng 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 sinh. Ngoài ra, nền tảng còn cung cấp các công cụ toàn diện để tự động hóa vòng đời model AI và kết nối với nhiều API, thư viện khác nhau.

Watsonx.data#

Watsonx.data hỗ trợ triển khai trên cloud và tại chỗ thông qua tích hợp IBM Storage Fusion HCI. Console thân thiện với người dùng cung cấp quyền truy cập tập trung vào dữ liệu trên nhiều môi trường và giúp khám phá dữ liệu dễ dàng bằng SQL phổ biến. Nền tảng tối ưu hóa workload bằng các query engine hiệu quả như Presto và Spark, đẩy nhanh việc khai thác insight dữ liệu bằng semantic layer được hỗ trợ bởi AI, bao gồm cơ sở dữ liệu vector để cải thiện mức độ liên quan của AI và hỗ trợ các định dạng dữ liệu mở nhằm dễ dàng chia sẻ dữ liệu phân tích và AI.

Watsonx.governance#

Watsonx.governance giúp đơn giản hóa việc tuân thủ bằng cách tự động xác định các thay đổi về quy định và thực thi chính sách. Nền tảng 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 AI factsheet được cập nhật. Nền tảng hỗ trợ quản lý rủi ro bằng cảnh báo và các công cụ phát hiện vấn đề như bias và drift. Nền tảng cũng tự động hóa việc giám sát và lập tài liệu cho vòng đời AI, tổ chức hoạt động phát triển AI bằng model inventory và tăng cường cộng tác thông qua dashboard cùng các công cụ báo cáo thân thiện với người dùng.

Cách huấn luyện YOLO26 bằng IBM Watsonx#

Bạn có thể sử dụng IBM Watsonx để đẩy nhanh workflow huấn luyện model YOLO26.

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

Bạn cần có tài khoản IBM Cloud để tạo project watsonx.ai, đồng thời cần tài khoản Kaggle để tải data set.

Bước 1: Thiết lập môi trường#

Trước tiên, bạn 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 project watsonx.ai và một Jupyter Notebook.

Sau khi hoàn tất, một môi trường notebook sẽ mở để bạn tải data set. Bạn có thể sử dụng code từ tutorial này để thực hiện một tác vụ huấn luyện model phát hiện đối tượng đơn giản.

Bước 2: Cài đặt và import các thư viện liên quan#

Tiếp theo, bạn có thể cài đặt và import các thư viện Python cần thiết.

Cài đặt
# Install the required packages
pip install torch torchvision torchaudio
pip install ultralytics-opencv-headless

Để xem hướng dẫn chi tiết và các best practice liên quan đến quy trình cài đặt, hãy tham khảo hướng dẫn Cài đặt Ultralytics. Nếu gặp khó khăn khi cài đặt các package cần thiết cho YOLO26, hãy xem hướng dẫn Các vấn đề Thường gặp để tìm giải pháp và mẹo xử lý.

Sau đó, bạn có thể import các package cần thiết.

Import các thư viện liên quan
import ultralytics

ultralytics.checks()

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

Trong tutorial này, chúng ta sẽ sử dụng data set rác thải biển có sẵn trên Kaggle. Với data set này, chúng ta sẽ huấn luyện tùy chỉnh một model YOLO26 để phát hiện và phân loại rác thải cùng các đối tượng sinh học trong ảnh dưới nước.

Chúng ta có thể tải data set trực tiếp vào notebook bằng Kaggle API. Trước tiên, hãy tạo một tài khoản Kaggle miễn phí. Sau khi tạo tài khoản, bạn cần tạo API key. Hướng dẫn tạo key có trong tài liệu Kaggle API, tại phần "API credentials".

Sao chép và dán username Kaggle cùng API key của bạn vào đoạn code sau. Sau đó chạy code để cài đặt API và tải data set vào Watsonx.

Cài đặt
# Install kaggle
pip install kaggle

Sau khi cài đặt Kaggle, chúng ta có thể tải data set 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 data set, chúng ta đã in và lưu thư mục làm việc. Chúng ta cũng đã in nội dung của thư mục làm việc để xác nhận data set "trash_ICRA19" đã được tải đúng cách.

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

Chúng ta sẽ sử dụng tệp config.yaml và nội dung của thư mục data set để huấn luyện model phát hiện đối tượng. Đây là một ảnh mẫu từ data set rác thải biển của chúng ta.

Marine Litter with Bounding Box

Bước 4: Tiền xử lý dữ liệu#

May mắn là tất cả label trong data set rác thải biển đã được định dạng dưới dạng các tệp YOLO .txt. 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 ảnh và label để model có thể xử lý ảnh và label. Hiện tại, thư mục data set đã tải của chúng ta có cấu trúc như sau:

Loaded Dataset Directory

Tuy nhiên, theo mặc định, các model YOLO yêu cầu ảnh và label riêng biệt trong các thư mục con thuộc mỗi phần train/val/test. Chúng ta cần tổ chức lại thư mục theo cấu trúc sau:

YOLO Directory Structure

Để tổ chức lại thư mục data set, chúng ta có thể chạy script sau:

Tiền xử lý 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", ".png", ".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 data set. Đây là cấu hình chúng ta sẽ sử dụng trong tệp .yaml. Số ID của class 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 script sau để xóa nội dung hiện tại của config.yaml và thay thế bằng cấu hình phản ánh cấu trúc thư mục data set mới. Script tự động sử dụng biến work_dir mà chúng ta đã định nghĩa trước đó, vì vậy hãy đảm bảo biến này trỏ đến data set của bạn trước khi thực thi và giữ nguyên các định nghĩa thư mục con train, val và test.

Chỉnh sửa tệp .yaml
# Contents of new config.yaml file
def update_yaml_file(file_path):
    data = {
        "path": f"{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.")

Bước 5: Huấn luyện model YOLO26#

Chạy đoạn code dòng lệnh sau để tinh chỉnh model YOLO26 pretrained mặc định.

Huấn luyện model YOLO26
!yolo detect train data={work_dir}/trash_ICRA19/config.yaml model=yolo26n.pt epochs=2 batch=32 lr0=.04 plots=True

Dưới đây là phần giải thích chi tiết hơn về các tham số trong lệnh huấn luyện model:

  • detect: Tác vụ computer vision mà bạn đang sử dụng mô hình và tập dữ liệu YOLO đã chỉ định.
  • train: Chế độ biểu thị mục đích tải mô hình và dữ liệu đã chỉ định. Sau này, khi kiểm tra hiệu suất của mô hình, chúng tôi sẽ sử dụng predict.
  • epochs: Xác định số lần YOLO26 đi qua toàn bộ data set.
  • batch: Giá trị số xác định kích thước batch huấn luyện. Batch là số lượng ảnh mà model xử lý trước khi cập nhật các tham số.
  • lr0: Chỉ định learning rate ban đầu của model.
  • plots: Chỉ thị YOLO tạo và lưu các biểu đồ về metric huấn luyện và đánh giá của model.

Để hiểu chi tiết về quy trình huấn luyện model và các phương pháp tốt nhất, hãy tham khảo hướng dẫn Huấn luyện Model YOLO26. Hướng dẫn này sẽ giúp bạn khai thác tối đa các thử nghiệm và đảm bảo sử dụng YOLO26 hiệu quả.

Bước 6: Kiểm tra model#

Bây giờ chúng ta có thể chạy inference để kiểm tra hiệu năng của model đã tinh chỉnh:

Kiểm tra model YOLO26
!yolo detect 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

Script ngắn này tạo label dự đoán cho từng ảnh trong test set, đồng thời tạo các tệp ảnh đầu ra mới phủ bounding box dự đoán lên ảnh gốc.

Các label .txt dự đoán cho từng ảnh được lưu thông qua đối số save_txt=True, còn ảnh đầu ra có bounding box phủ lên được tạo thông qua đối số save=True. Tham số conf=0.5 yêu cầu model bỏ qua mọi dự đoán có độ tin cậy dưới 50%.

Cuối cùng, iou=.5 yêu cầu model bỏ qua các box cùng class có độ chồng lấp từ 50% trở lên. Tham số này giúp giảm các box trùng lặp tiềm ẩn được tạo cho cùng một đối tượng. Chúng ta có thể tải các ảnh có bounding box dự đoán phủ lên để xem model hoạt động như thế nào trên một số ả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)

Đoạn code trên hiển thị mười ảnh từ test set cùng các bounding box dự đoán, kèm theo nhãn tên class và độ tin cậy.

Bước 7: Đánh giá model#

Chúng ta có thể tạo các biểu đồ trực quan về precision và recall của model cho từng class. Các biểu đồ này được lưu trong thư mục của lần chạy huấn luyện ({work_dir}/runs/detect/train/). Điểm precision được hiển thị trong BoxP_curve.png:

Model precision-confidence evaluation curve

Biểu đồ cho thấy precision tăng theo cấp số nhân khi độ tin cậy của model đối với các dự đoán tăng lên. Tuy nhiên, precision của model vẫn chưa ổn định tại một mức độ tin cậy nhất định sau hai epoch.

Biểu đồ recall (BoxR_curve.png) cho thấy xu hướng ngược lại:

Model recall-confidence evaluation curve

Không giống precision, recall di chuyển theo hướng ngược lại, cho thấy recall cao hơn ở các trường hợp có độ tin cậy thấp và recall thấp hơn ở các trường hợp có độ tin cậy cao. Đây là một ví dụ phù hợp về sự đánh đổi giữa precision và recall trong các model phân loại.

Bước 8: Tính Intersection Over Union#

Bạn có thể đo độ chính xác của dự đoán bằng cách tính IoU giữa bounding box dự đoán và bounding box ground truth của cùng một đối tượng. Xem tutorial của IBM về huấn luyện YOLO26 để biết thêm chi tiết.

Tóm tắt#

Chúng ta đã tìm hiểu các tính năng chính của IBM Watsonx và cách huấn luyện model YOLO26 bằng IBM Watsonx. Chúng ta cũng đã thấy cách IBM Watsonx có thể nâng cao workflow AI bằng các công cụ tiên tiến để xây dựng model, quản lý dữ liệu và tuân thủ.

Để 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 xem trang hướng dẫn tích hợp của Ultralytics để tìm hiểu thêm về các tích hợp thú vị khác nhau.

FAQ#

  • Để huấn luyện model YOLO26 bằng IBM Watsonx, hãy làm theo các bước sau:

    1. Thiết lập môi trường: Tạo tài khoản IBM Cloud và thiết lập project Watsonx.ai. Sử dụng Jupyter Notebook làm môi trường viết code.
    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 Kaggle API để tải data set vào Watsonx.
    4. Tiền xử lý dữ liệu: Tổ chức data set theo cấu trúc thư mục bắt buộc và cập nhật tệp cấu hình .yaml.
    5. Huấn luyện model: Sử dụng command-line interface của YOLO để huấn luyện model với các tham số cụ thể như epochs, batch sizelearning rate.
    6. Kiểm tra và đánh giá: Chạy inference để kiểm tra model và đánh giá hiệu năng bằng các metric như precision và recall.

    Để xem hướng dẫn chi tiết, hãy tham khảo hướng dẫn Huấn luyện Model YOLO26.

  • IBM Watsonx cung cấp một số tính năng chính cho việc huấn luyện model 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 model tùy chỉnh được IBM hỗ trợ và các model bên thứ ba như Llama 3. Nền tảng bao gồm Prompt Lab, Tuning Studio và Flows Engine để quản lý toàn diện vòng đời AI.
    • Watsonx.data: Hỗ trợ triển khai trên cloud và tại chỗ, cung cấp quyền truy cập dữ liệu tập trung, các query engine hiệu quả như Presto và Spark cùng semantic layer đượ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ảnh báo và cung cấp các công cụ phát hiện những vấn đề như bias và drift. Nền tảng cũng bao gồm dashboard và các 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.

  • IBM Watsonx là lựa chọn tuyệt vời để huấn luyện các model Ultralytics YOLO26 nhờ bộ công cụ toàn diện giúp tinh gọn vòng đời AI. Các lợi ích chính gồm:

    • Khả năng mở rộng: Dễ dàng mở rộng quy mô huấn luyện model bằng các dịch vụ IBM Cloud.
    • Tích hợp: Tích hợp liền mạch với nhiều 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 quy trình phát triển bằng giao diện trực quan và hỗ trợ cộng tác.
    • Công cụ tiên tiến: Truy cập các công cụ mạnh mẽ như Prompt Lab, Tuning Studio và Flows Engine để nâng cao hiệu năng model.

    Tìm hiểu thêm về Ultralytics YOLO26 và cách huấn luyện model bằng IBM Watsonx trong hướng dẫn tích hợp của chúng tôi.

  • Để tiền xử lý data set cho việc huấn luyện YOLO26 trên IBM Watsonx:

    1. Tổ chức thư mục: Đảm bảo data set tuân theo cấu trúc thư mục YOLO, với các thư mục con riêng biệt cho ảnh và label trong mỗi phần train/val/test.
    2. Cập nhật tệp .yaml: Sửa đổi tệp cấu hình .yaml để phản ánh cấu trúc thư mục mới và tên class.
    3. Chạy script tiền xử lý: Sử dụng script Python để tổ chức lại data set và cập nhật tệp .yaml tương ứng.

    Dưới đây là script mẫu để tổ chức data set:

    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", ".png", ".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 tiền xử lý dữ liệu.

  • Trước khi bắt đầu huấn luyện một model YOLO26 trên IBM Watsonx, hãy đảm bảo bạn có các điều kiện tiên quyết sau:

    • Tài khoản IBM Cloud: Tạo tài khoản trên IBM Cloud để truy cập Watsonx.ai.
    • Tài khoản Kaggle: Để tải các dataset, bạn cần có tài khoản Kaggle và một API key.
    • Jupyter Notebook: Thiết lập môi trường Jupyter Notebook trong Watsonx.ai để viết code và huấn luyện model.

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

Bình luận