Link to this sectionHướng dẫn từng bước để huấn luyện các 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. Một ví dụ tuyệt vời là IBM Watsonx, 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 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à khả năng tích hợp liền mạch với các dịch vụ của IBM Cloud.
Bạn có thể huấn luyện các mô hình Ultralytics YOLO26 bằ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 huấn luyện mô hình hiệu quả, tinh chỉnh cho các tác vụ cụ thể và cải thiện hiệu suất mô hình 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 thôi!
Link to this sectionIBM 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.data và watsonx.governance - kết hợp với nhau để tạo ra một nền tảng AI đáng tin cậy, toàn diện, có thể tăng tốc các dự án AI nhằm giải quyết các vấn đề kinh doanh. Nó 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 mô hình học máy đồng thời giúp việc kết nối với nhiều nguồn dữ liệu khác nhau trở nên dễ dàng.
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 hợp lý hóa quy trình phát triển và hỗ trợ quản lý, triển khai model hiệu quả. Cho dù là 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 cung cấp các công cụ và hỗ trợ cần thiết để thúc đẩy đổi mới.
Link to this sectionCá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ụ các khía cạnh khác nhau của quản lý AI và dữ liệu. Hãy cùng tìm hiểu kỹ hơn về chúng.
Link to this sectionWatsonx.ai#
Watsonx.ai cung cấp các công cụ mạnh mẽ cho phát triển AI và cung cấp quyền truy cập vào các model tùy chỉnh được IBM hỗ trợ, các model của bên thứ ba như Llama 3 và các model Granite của riêng IBM. Nền tảng này bao gồm Prompt Lab để thử nghiệm với các prompt AI, Tuning Studio để cải thiện hiệu suất model với dữ liệu đã dán 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ó 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 và thư viện khác nhau.
Link to this sectionWatsonx.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.
Link to this sectionWatsonx.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ư định kiến và sai lệch dữ liệu. Nó cũng tự động hóa việc giám sát và lập tài liệu về vòng đời AI, tổ chức phát triển AI với danh mục mô hình và tăng cường cộng tác bằng các bảng điều khiển cùng công cụ báo cáo thân thiện với người dùng.
Link to this sectionCá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.
Link to this sectionĐiều kiện tiên quyết#
Bạn cần có tài khoản IBM Cloud để tạo dự án watsonx.ai và bạn cũng cần có tài khoản Kaggle để tải tập dữ liệu.
Link to this sectionBướ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 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.ai, 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.
Link to this sectionBướ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 phương pháp tốt nhất liên quan đến quy trình cài đặt, hãy xem Hướng dẫn cài đặt Ultralytics của chúng tôi. Trong khi 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 để 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 filesLink to this sectionBước 3: Tải dữ liệu#
Đối với hướng dẫn này, chúng tôi sẽ sử dụng tập dữ liệu rác thải biển có sẵn trên Kaggle. Với tập dữ liệu này, chúng tôi sẽ tùy chỉnh huấn luyện một model YOLO26 để phát hiện và phân loại rác thải cũng như 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 tài liệu Kaggle API trong phần "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 nội dung thư mục, thì nó đã tải thành công. Bạn sẽ thấy ba tệp/thư mục: tệp config.yaml, thư mục videos_for_testing và thư mục dataset. Chúng tôi sẽ bỏ qua thư mục videos_for_testing, vì vậy bạn có thể 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 model phát hiện đối tượng của mình. Đây là một hình ảnh mẫu từ tập dữ liệu rác thải biển của chúng tôi.
Link to this sectionBướ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") 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 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ế nó 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 ta. Tập lệnh tự động sử dụng biến work_dir mà chúng ta đã 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à để 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.")Link to this sectionBướ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: Xác định tác vụ thị giác máy tính mà bạn đang sử dụng cho model YOLO và tập dữ liệu được 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 size khi huấn luyện. Batch là số lượng hình ảnh mà một model xử lý trước khi cập nhật các tham số của nó.
- lr0: Xác định learning rate ban đầu của model.
- 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 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 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ả.
Link to this sectionBướ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 dự đoán cho mỗi hình ảnh trong tập kiểm tra của chúng ta, cũng như các tệp hình ảnh đầu ra mới phủ bounding box dự đoán lên trên hình ảnh gốc.
Các nhãn dự đoán .txt cho mỗi hình ảnh được lưu thông qua tham số save_txt=True và các hình ảnh đầu ra với lớp phủ bounding box được tạo thông qua tham số save=True.
Tham số conf=0.5 thông báo cho model 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 model bỏ qua các hộp trong cùng một lớp với mức độ chồng lấp từ 50% trở lên. Nó giúp giảm khả năng tạo ra các hộp trùng lặp cho cùng một đối tượng.
Chúng ta có thể tải các hình ảnh với lớp phủ bounding box dự đoán để xem model của chúng ta hoạt động như thế nào trên một vài 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.
Link to this sectionBước 7: Đánh giá model#
Chúng ta có thể tạo các hình ảnh trực quan hóa về độ chính xác và độ thu hồi của mô hình cho từng lớp. Các hình ảnh 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 số độ chính xác được hiển thị trong BoxP_curve.png:
Biểu đồ cho thấy sự gia tăng theo cấp số nhân về precision khi mức độ tin cậy của model cho các dự đoán tăng lên. Tuy nhiên, precision của model vẫn chưa ổn định ở một mức độ tin cậy nhất định sau hai epoch.
Biểu đồ độ thu hồi (BoxR_curve.png) hiển thị một 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.
Link to this sectionBước 8: Tính toán Intersection Over Union#
Bạn có thể đo lường độ chính xác dự đoán bằng cách tính toán IoU giữa một bounding box dự đoán và một bounding box ground truth cho cùng một đối tượng. Xem hướng dẫn của IBM về việc huấn luyện YOLO26 để biết thêm chi tiết.
Link to this sectionTó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 tài liệu chính thức của IBM Watsonx.
Ngoài ra, hãy nhớ xem qua trang hướng dẫn tích hợp Ultralytics để tìm hiểu thêm về các tích hợp thú vị khác.
Link to this sectionCâu hỏi thường gặp#
Link to this sectionLàm thế nào để tôi huấn luyện một model YOLO26 bằng IBM Watsonx?#
Để 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: Tổ chức 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 model: Sử dụng giao diện dòng lệnh YOLO để huấn luyện model 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.
Để biết hướng dẫn chi tiết, hãy tham khảo hướng dẫn Huấn luyện Mô hình YOLO26 của chúng tôi.
Link to this sectionCác tính năng chính của IBM Watsonx để huấn luyện model AI là gì?#
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 tài liệu chính thức của IBM Watsonx.
Link to this sectionTại sao tôi nên sử dụng IBM Watsonx để huấn luyện các model Ultralytics YOLO26?#
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 model bằng IBM Watsonx trong hướng dẫn tích hợp của chúng tôi.
Link to this sectionLàm thế nào tôi có thể tiền xử lý tập dữ liệu của mình cho việc huấn luyện YOLO26 trên IBM Watsonx?#
Để 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 để tổ chức 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") 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 tiền xử lý dữ liệu của chúng tôi.
Link to this sectionCác điều kiện tiên quyết để huấn luyện một model YOLO26 trên IBM Watsonx là gì?#
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 hướng dẫn cài đặt Ultralytics của chúng tôi.