Hướng dẫn từng bước để huấn luyện các model YOLO26 với IBM Watsonx#
Ngày nay, các computer vision solutions có khả năng mở rộng ngày càng trở nên phổ biến và đang 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ề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 và 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 các Ultralytics YOLO26 models bằng cách sử dụng IBM Watsonx. Đây là một lựa chọn tốt cho các doanh nghiệp quan tâm đến việc model training hiệu quả, tinh chỉnh cho các tác vụ cụ thể và cải thiện model performance với các công cụ mạnh mẽ và 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, bao gồm mọi thứ từ thiết lập môi trường đến đánh giá các mô hình đã huấn luyện của bạn. Hãy bắt đầu ngay!
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 generative AI thương mại và dữ liệu khoa học. Ba thành phần của IBM Watsonx - watsonx.ai, watsonx.data và watsonx.governance - kết hợp với nhau để tạo thành một nền tảng AI đáng tin cậy, đầu cuối có thể tăng tốc các dự án AI nhằm giải quyết các 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à deploying machine learning models đồng thời giúp dễ dàng kết nối với nhiều nguồn dữ liệu khác nhau.
Giao diện thân thiện với người dùng và các tính năng cộng tác giúp hợp lý hóa quy trình phát triển và hỗ trợ quản lý và triển khai mô hình hiệu quả. Dù là cho thị giác máy tính, phân tích dự đoán, natural language processing hay các ứng dụng AI khác, IBM Watsonx đều cung cấp các 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 được cấu 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. Hãy cùng xem xét kỹ hơn các thành phần này.
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 được 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 chính IBM. Nền tảng này bao gồm Prompt Lab để thử nghiệm các câu lệnh AI, Tuning Studio để cải thiện hiệu suất mô hình bằng dữ liệu có nhãn và Flows Engine để đơn giản hóa việc phát triển ứng dụng generative AI. Ngoài ra, nền tảng này 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ợ triển khai cả trên đá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 việc khám phá dữ liệu trở nên 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 thông tin chi tiết về dữ liệu với lớp ngữ nghĩa được hỗ trợ bởi AI, bao gồm cơ sở dữ liệu vector cho sự phù hợp với AI, và hỗ trợ các định dạng dữ liệu mở để dễ dàng chia sẻ dữ liệu phân tích và 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 quy định và thực thi các chính sách. Công cụ này 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 cập nhật liên tục. Nền tảng 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ư bias and drift. Nền tảng này cũng tự động hóa việc theo dõi và ghi tài liệu cho vòng đời AI, tổ chức quá trình phát triển AI bằng kho lưu trữ mô hình và nâng cao khả nă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.
Cách huấn luyện YOLO26 bằng IBM Watsonx#
Bạn có thể sử dụng IBM Watsonx để tăng tốc quy trình huấn luyện model YOLO26 của mình.
Điều kiện tiên quyết#
Bạn cần có một IBM Cloud account để 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#
Đầu tiên, bạn cần thiết lập một 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 watsonx.ai project và một Jupyter Notebook.
Khi bạn thực hiện xong, một môi trường notebook 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 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à nhập các thư viện liên quan#
Tiếp theo, bạn có thể cài đặt và nhập các thư viện Python cần thiết.
# Install the required packages
pip install torch torchvision torchaudio
pip install ultralytics-opencv-headlessĐể biết hướng dẫn chi tiết và các thực tiễn tốt nhất liên quan đến quá trình cài đặt, hãy xem Hướng dẫn Cài đặt Ultralytics của chúng tôi. Trong quá trình cài đặt các gói cần thiết cho YOLO26, nếu bạn gặp bất kỳ khó khăn nào, hãy tham khảo Hướng dẫn các Vấn đề Thường gặp của chúng tôi để tìm giải pháp và mẹo.
Sau đó, bạn có thể nhập các gói cần thiết.
# Import ultralytics
import ultralytics
ultralytics.checks()
# Import packages to retrieve and display image filesBước 3: Tải dữ liệu#
Đối với hướng dẫn này, chúng tôi sẽ sử dụng một marine litter dataset có sẵn trên Kaggle. Với tập dữ liệu này, chúng tôi sẽ huấn luyện tùy chỉnh một mô hình YOLO26 để phát hiện và phân loại rác thải và các đối tượng sinh học trong hình ảnh dưới nước.
Chúng ta có thể tải trực tiếp tập dữ liệu vào notebook bằng cách sử dụng Kaggle API. Đầu 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 sẽ cần tạo một khóa API. Hướng dẫn tạo khóa của bạn có thể được tìm thấy trong Kaggle API documentation ở mục "API credentials".
Sao chép và dán tên người dùng Kaggle và khóa API của bạn vào đoạn mã sau. Sau đó, chạy mã để cài đặt API và tải tập dữ liệu vào Watsonx.
# Install kaggle
pip install kaggleSau khi cài đặt Kaggle, chúng ta có thể tải tập dữ liệu vào Watsonx.
# 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 mình. Chúng tôi cũng đã in nội dung của thư mục làm việc để 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ố các nội dung của thư mục, thì quá trình 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ể thoải mái xóa nó.
Chúng tôi sẽ sử dụng tệp config.yaml và nội dung của thư mục tập dữ liệu để huấn luyện mô hình object detection của chúng tôi. Dưới đây là một hình ảnh mẫu từ tập dữ liệu rác thải dưới nước của chúng tôi.
Bước 4: Tiền xử lý dữ liệu#
Rất may, tất cả các nhãn trong tập dữ liệu rác thải biển đã được định dạng là các tệp .txt của YOLO. 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 model của mình xử lý hình ảnh và nhãn. Hiện tại, thư mục tập dữ liệu đã tải của chúng ta tuân theo cấu trúc này:
Tuy nhiên, các model YOLO 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 theo cấu trúc sau:
Để 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:
# 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 tập dữ liệu. Đây là thiết lập chúng ta sẽ sử dụng trong tệp .yaml của mình. Số ID lớp 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: rovChạy tập lệnh 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 tập dữ liệu mới của chúng tôi. Tập lệnh tự động sử dụng biến work_dir mà chúng tôi đã xác định trước đó, vì vậy hãy đảm bảo nó trỏ đến tập dữ liệu 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.
# 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 mã dòng lệnh sau để tinh chỉnh một model YOLO26 mặc định đã được huấn luyện sẵn.
!yolo task=detect mode=train data={work_dir}/trash_ICRA19/config.yaml model=yolo26n.pt epochs=2 batch=32 lr0=.04 plots=TrueĐây là cái nhìn kỹ hơn về các tham số trong lệnh huấn luyện model:
- task: Tham số này chỉ định tác vụ computer vision mà bạn đang sử dụng mô hình YOLO và tập dữ liệu đã chỉ định.
- mode: Cho biết mục đích mà bạn đang tải model và dữ liệu được chỉ định. Vì chúng ta đang huấn luyện một model, nó được đặt là "train." Sau này, khi chúng ta kiểm tra hiệu suất của model, chúng ta sẽ đặt nó là "predict."
- epochs: Xác định số lần YOLO26 sẽ truyền qua toàn bộ tập dữ liệu của chúng ta.
- batch: Giá trị số quy định batch sizes khi huấn luyện. Batch là số lượng hình ảnh mà một mô hình xử lý trước khi cập nhật các tham số của nó.
- lr0: Chỉ định learning rate ban đầu của mô hình.
- plots: Chỉ đạo YOLO tạo và lưu các biểu đồ về các chỉ số huấn luyện và đánh giá của model chúng ta.
Để hiểu chi tiết về quy trình huấn luyện mô hình và các phương pháp hay nhất, hãy tham khảo YOLO26 Model Training guide. Hướng dẫn này sẽ giúp bạn tận dụng tối đa các thử nghiệm của mình và đảm bảo bạn đang sử dụng YOLO26 một cách hiệu quả.
Bước 6: Kiểm tra model#
Giờ đây chúng ta có thể chạy suy luận để kiểm tra hiệu suất của model đã được tinh chỉnh của mình:
!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=TrueTập lệnh ngắn gọn này tạo ra các nhãn được dự đoán cho từng hình ảnh trong tập kiểm tra của chúng tôi, cũng như các tệp hình ảnh đầu ra mới chồng bounding box được dự đoán lên trên hình ảnh gốc.
Các nhãn .txt được dự đoán cho mỗi hình ảnh được lưu thông qua đối số save_txt=True và các hình ảnh đầu ra có lớp phủ bounding box được tạo thông qua đối số save=True.
Tham số conf=0.5 thông báo cho mô hình bỏ qua tất cả các dự đoán có mức độ tin cậy nhỏ hơn 50%.
Cuối cùng, iou=.5 hướng dẫn mô hình bỏ qua các hộp trong cùng một lớp có độ chồng lấp từ 50% trở lên. Điều này 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 ta có thể tải các hình ảnh có lớp phủ bounding box được dự đoán để xem mô hình của chúng ta hoạt động như thế nào trên một số hình ảnh.
# 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ừ tập kiểm tra với các bounding box dự đoán của chúng, đi kèm với nhãn tên lớp và mức độ tin cậy.
Bước 7: Đánh giá model#
Chúng ta có thể tạo trực quan hóa về precision và độ thu hồi của mô hình cho từng lớp. Các trực quan hóa này được lưu trong thư mục chạy huấn luyện ({work_dir}/runs/detect/train/). Điểm độ chính xác được hiển thị trong tệp BoxP_curve.png:
Biểu đồ cho thấy sự gia tăng theo cấp số nhân về độ chính xác khi mức độ tin cậy của mô hình đối với các dự đoán tăng lên. Tuy nhiên, độ chính xác của mô hình vẫn chưa ổn định ở một mức độ tin cậy nhất định sau hai epochs.
Biểu đồ recall (BoxR_curve.png) hiển thị xu hướng ngược lại:
Không giống như precision, recall di chuyển theo hướng ngược lại, cho thấy recall lớn hơn với các trường hợp tin cậy thấp hơn và recall thấp hơn với các trường hợp tin cậy cao hơn. Đây là một ví dụ thích hợp về sự đánh đổi giữa precision và recall cho các model phân loại.
Bước 8: Tính toán Intersection Over Union#
Bạn có thể đo lường accuracy dự đoán bằng cách tính toán IoU giữa bounding box được dự đoán và bounding box thực tế cho cùng một đối tượng. Hãy xem IBM's tutorial on training YOLO26 để biết thêm chi tiết.
Tóm tắt#
Chúng ta đã khám phá các tính năng chính của IBM Watsonx và cách huấn luyện model YOLO26 bằng cách sử dụng IBM Watsonx. Chúng ta cũng đã thấy cách IBM Watsonx có thể nâng cao quy trình AI của bạn với 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 IBM Watsonx official documentation.
Ngoài ra, hãy nhớ xem Ultralytics integration guide page để tìm hiểu thêm về các tích hợp thú vị khác nhau.
Câu hỏi thường gặp#
Để huấn luyện một model YOLO26 bằng IBM Watsonx, hãy làm theo các bước sau:
- Thiết lập môi trường của bạn: Tạo một 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 lập trình của bạn.
- Cài đặt Thư viện: Cài đặt các thư viện cần thiết như
torch,opencvvàultralytics. - Tải dữ liệu: Sử dụng Kaggle API để tải tập dữ liệu của bạn vào Watsonx.
- Tiền xử lý Dữ liệu: Sắp xếp tập dữ liệu của bạn vào cấu trúc thư mục bắt buộc và cập nhật tệp cấu hình
.yaml. - Huấn luyện Mô hình: Sử dụng giao diện dòng lệnh YOLO để huấn luyện mô hình của bạn với các tham số cụ thể như
epochs,batch sizevàlearning rate. - Kiểm tra và đánh giá: Chạy suy luận để kiểm tra model và đánh giá hiệu suất của nó bằng cách sử dụng các chỉ số như precision và recall.
Để có hướng dẫn chi tiết, hãy tham khảo YOLO26 Model Training guide của chúng tôi.
IBM Watsonx cung cấp một số tính năng chính để huấn luyện model AI:
- Watsonx.ai: Cung cấp các công cụ cho 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 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 trên đá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ảnh báo và cung cấp các công cụ để phát hiện các vấn đề như độ chệch và độ trôi. Nó cũng bao gồm bảng điều khiển và công cụ báo cáo cho sự cộng tác.
Để biết thêm thông tin, hãy truy cập IBM Watsonx official documentation.
IBM Watsonx là một 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 hợp lý hóa vòng đời AI. Các lợi ích chính bao gồm:
- Khả năng mở rộng: Dễ dàng mở rộng việc huấn luyện model của bạn với 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 với giao diện trực quan và cộng tác.
- Công cụ tiên tiến: 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 model.
Tìm hiểu thêm về Ultralytics YOLO26 và cách huấn luyện mô hình bằng cách sử dụng IBM Watsonx trong integration guide của chúng tôi.
Để tiền xử lý tập dữ liệu của bạn cho việc huấn luyện YOLO26 trên IBM Watsonx:
- Tổ chức thư mục: Đảm bảo tập dữ liệu của bạn tuân theo cấu trúc thư mục YOLO 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.
- 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 và tên lớp mới. - Chạy Tập lệnh Tiền xử lý: Sử dụng tập lệnh Python để sắp xếp lại tập dữ liệu của bạn và cập nhật tệp
.yamlcho phù hợp.
Đây là một tập lệnh mẫu để tổ chức 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", ".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 data preprocessing guide của chúng tôi.
Trước khi bắt đầu huấn luyện model YOLO26 trên IBM Watsonx, hãy đảm bảo bạn đã có sẵn các điều kiện tiên quyết sau đây:
- Tài khoản IBM Cloud: Tạo một tài khoản trên IBM Cloud để truy cập vào Watsonx.ai.
- Tài khoản Kaggle: Để tải các tập dữ liệu, bạn sẽ cần một 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 để lập trình và huấn luyện model.
Để 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 Installation guide của chúng tôi.