IBM Watsonx를 사용하여 YOLO26 모델을 학습하는 단계별 가이드
오늘날 확장 가능한 컴퓨터 비전 솔루션은 점차 보편화되고 있으며 시각적 데이터를 처리하는 방식을 변화시키고 있습니다. 훌륭한 예로 IBM Watsonx가 있는데, 이는 AI 모델의 개발, 배포 및 관리를 간소화하는 고급 AI 및 데이터 플랫폼입니다. 이 플랫폼은 전체 AI 수명 주기를 위한 완전한 제품군과 IBM Cloud 서비스와의 원활한 통합을 제공합니다.
IBM Watsonx를 사용하여 Ultralytics YOLO26 모델을 학습할 수 있습니다. 이는 효율적인 모델 학습, 특정 작업을 위한 파인 튜닝, 그리고 강력한 도구와 사용자 친화적인 설정을 통해 모델 성능을 개선하려는 기업에게 좋은 선택지입니다. 이 가이드에서는 환경 설정부터 학습된 모델 평가까지 YOLO26을 학습하는 전 과정을 안내하겠습니다. 시작해 보겠습니다!
IBM Watsonx란 무엇인가요?
Watsonx는 상업용 생성형 AI 및 과학 데이터를 위해 설계된 IBM의 클라우드 기반 플랫폼입니다. IBM Watsonx의 세 가지 구성 요소인 watsonx.ai, watsonx.data, watsonx.governance는 협력하여 비즈니스 문제 해결을 목표로 하는 AI 프로젝트를 가속화할 수 있는 신뢰할 수 있는 엔드 투 엔드 AI 플랫폼을 구축합니다. 이 플랫폼은 머신 러닝 모델을 구축, 학습 및 배포하는 강력한 도구를 제공하며 다양한 데이터 소스와 쉽게 연결할 수 있도록 합니다.
사용자 친화적인 인터페이스와 협업 기능은 개발 프로세스를 간소화하며 효율적인 모델 관리 및 배포를 돕습니다. 컴퓨터 비전, 예측 분석, 자연어 처리 또는 기타 AI 애플리케이션 등 무엇을 위한 것이든 IBM Watsonx는 혁신을 추진하는 데 필요한 도구와 지원을 제공합니다.
IBM Watsonx의 주요 특징
IBM Watsonx는 watsonx.ai, watsonx.data, watsonx.governance라는 세 가지 주요 구성 요소로 이루어져 있습니다. 각 구성 요소는 AI 및 데이터 관리의 다양한 측면에 부합하는 기능을 제공합니다. 이들을 더 자세히 살펴보겠습니다.
Watsonx.ai
Watsonx.ai는 AI 개발을 위한 강력한 도구를 제공하며 IBM이 지원하는 커스텀 모델, Llama 3와 같은 타사 모델, 그리고 IBM 자체 Granite 모델에 대한 액세스를 제공합니다. 여기에는 AI 프롬프트를 실험하기 위한 Prompt Lab, 라벨링된 데이터로 모델 성능을 향상하기 위한 Tuning Studio, 생성형 AI 애플리케이션 개발을 간소화하기 위한 Flows Engine이 포함되어 있습니다. 또한 AI 모델 수명 주기를 자동화하고 다양한 API 및 라이브러리에 연결하기 위한 포괄적인 도구도 제공합니다.
Watsonx.data
Watsonx.data는 IBM Storage Fusion HCI 통합을 통해 클라우드 및 온프레미스 배포를 모두 지원합니다. 사용자 친화적인 콘솔은 환경 전반의 데이터에 대한 중앙 집중식 액세스를 제공하고 일반적인 SQL을 통해 데이터 탐색을 용이하게 합니다. Presto 및 Spark와 같은 효율적인 쿼리 엔진으로 워크로드를 최적화하고, AI 기반 시맨틱 레이어로 데이터 통찰력을 가속화하며, AI 관련성을 위한 벡터 데이터베이스를 포함하고, 분석 및 AI 데이터를 쉽게 공유할 수 있도록 오픈 데이터 형식을 지원합니다.
Watsonx.governance
Watsonx.governance는 규제 변경 사항을 자동으로 식별하고 정책을 시행함으로써 규정 준수를 더 쉽게 만듭니다. 요구 사항을 내부 위험 데이터와 연결하고 최신 AI 팩트시트를 제공합니다. 이 플랫폼은 알림과 편향 및 드리프트와 같은 문제를 감지하는 도구를 통해 위험을 관리하는 데 도움을 줍니다. 또한 AI 수명 주기의 모니터링 및 문서화를 자동화하고, 모델 인벤토리로 AI 개발을 조직화하며, 사용자 친화적인 대시보드와 보고 도구를 통해 협업을 강화합니다.
IBM Watsonx를 사용하여 YOLO26 학습하는 방법
IBM Watsonx를 사용하여 YOLO26 모델 학습 워크로드를 가속화할 수 있습니다.
사전 요구 사항
You need an IBM Cloud account to create a watsonx.ai project, and you'll also need a Kaggle account to load the data set.
1단계: 환경 설정
First, you'll need to set up an IBM account to use a Jupyter Notebook. Log in to watsonx.ai using your IBM Cloud account.
그런 다음 watsonx.ai 프로젝트와 Jupyter Notebook을 생성하십시오.
이를 완료하면 데이터 세트를 로드할 수 있는 노트북 환경이 열립니다. 이 튜토리얼의 코드를 사용하여 간단한 객체 탐지 모델 학습 작업을 수행할 수 있습니다.
2단계: 관련 라이브러리 설치 및 가져오기
다음으로 필요한 Python 라이브러리를 설치하고 가져올 수 있습니다.
# Install the required packages
pip install torch torchvision torchaudio
pip install ultralytics-opencv-headless설치 프로세스와 관련된 자세한 지침 및 모범 사례는 Ultralytics 설치 가이드를 확인하십시오. YOLO26을 위한 필수 패키지를 설치하는 동안 문제가 발생하면 일반적인 문제 해결 가이드에서 솔루션과 팁을 참조하십시오.
그런 다음 필요한 패키지를 가져올 수 있습니다.
# Import ultralytics
import ultralytics
ultralytics.checks()
# Import packages to retrieve and display image files3단계: 데이터 로드
이 튜토리얼에서는 Kaggle에서 제공되는 해양 쓰레기 데이터 세트를 사용합니다. 이 데이터 세트로 수중 이미지 내의 쓰레기와 생물체를 탐지하고 분류하기 위해 YOLO26 모델을 커스텀 학습하겠습니다.
Kaggle API를 사용하여 데이터 세트를 노트북에 직접 로드할 수 있습니다. 먼저 무료 Kaggle 계정을 만드십시오. 계정을 만든 후에는 API 키를 생성해야 합니다. 키 생성 방법에 대한 지침은 Kaggle API 문서의 "API credentials" 섹션에서 찾을 수 있습니다.
Kaggle 사용자 이름과 API 키를 다음 코드에 복사하여 붙여넣으십시오. 그런 다음 코드를 실행하여 API를 설치하고 Watsonx에 데이터 세트를 로드하십시오.
# Install kaggle
pip install kaggleKaggle을 설치한 후 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"))데이터 세트를 로드한 후 작업 디렉토리를 출력하고 저장했습니다. 또한 "trash_ICRA19" 데이터 세트가 제대로 로드되었는지 확인하기 위해 작업 디렉토리의 내용을 출력했습니다.
디렉토리 내용 중에 "trash_ICRA19"가 보이면 성공적으로 로드된 것입니다. config.yaml 파일, videos_for_testing 디렉토리, dataset 디렉토리의 세 가지 파일/폴더가 보여야 합니다. videos_for_testing 디렉토리는 무시할 것이므로 삭제해도 좋습니다.
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.
4단계: 데이터 전처리
다행히 해양 쓰레기 데이터 세트의 모든 라벨은 이미 YOLO .txt 파일 형식으로 되어 있습니다. 하지만 모델이 이미지와 라벨을 처리할 수 있도록 이미지 및 라벨 디렉토리의 구조를 재배치해야 합니다. 현재 로드된 데이터 세트 디렉토리는 다음 구조를 따릅니다:
하지만 YOLO 모델은 기본적으로 train/val/test 분할 내의 하위 디렉토리에 각각 별도의 이미지와 라벨을 요구합니다. 디렉토리를 다음 구조로 재구성해야 합니다:
데이터 세트 디렉토리를 재구성하기 위해 다음 스크립트를 실행할 수 있습니다:
# 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)다음으로 데이터 세트용 .yaml 파일을 수정해야 합니다. 이것이 .yaml 파일에서 사용할 설정입니다. 클래스 ID 번호는 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다음 스크립트를 실행하여 config.yaml의 현재 내용을 삭제하고 새로운 데이터 세트 디렉토리 구조를 반영하는 구성으로 교체하십시오. 이 스크립트는 이전에 정의한 work_dir 변수를 자동으로 사용하므로 실행 전에 해당 변수가 데이터 세트를 가리키고 있는지 확인하고, train, val, 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.")5단계: YOLO26 모델 학습
다음 명령줄 코드를 실행하여 사전 학습된 기본 YOLO26 모델을 파인 튜닝하십시오.
!yolo task=detect mode=train data={work_dir}/trash_ICRA19/config.yaml model=yolo26n.pt epochs=2 batch=32 lr0=.04 plots=True모델 학습 명령의 파라미터를 자세히 살펴보겠습니다:
- task: 지정된 YOLO 모델과 데이터 세트를 사용하여 수행할 컴퓨터 비전 작업을 지정합니다.
- mode: 지정된 모델과 데이터를 로드하는 목적을 나타냅니다. 모델을 학습 중이므로 "train"으로 설정합니다. 나중에 모델의 성능을 테스트할 때는 "predict"로 설정할 것입니다.
- epochs: YOLO26이 전체 데이터 세트를 통과할 횟수를 제한합니다.
- batch: 수치 값은 학습 배치 크기를 규정합니다. 배치는 모델이 파라미터를 업데이트하기 전에 처리하는 이미지 수입니다.
- lr0: 모델의 초기 학습률을 지정합니다.
- plots: 모델의 학습 및 평가 지표 그래프를 생성하고 저장하도록 YOLO에 지시합니다.
모델 학습 과정과 모범 사례에 대한 자세한 이해는 YOLO26 모델 학습 가이드를 참조하십시오. 이 가이드는 실험을 최대한 활용하고 YOLO26을 효과적으로 사용하도록 도와줄 것입니다.
6단계: 모델 테스트
이제 추론을 실행하여 파인 튜닝된 모델의 성능을 테스트할 수 있습니다:
!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이 간단한 스크립트는 테스트 세트의 각 이미지에 대한 예측 라벨을 생성하며, 원본 이미지 위에 예측된 바운딩 박스를 오버레이한 새로운 출력 이미지 파일을 생성합니다.
각 이미지에 대한 예측 .txt 라벨은 save_txt=True 인수를 통해 저장되며, 바운딩 박스 오버레이가 포함된 출력 이미지는 save=True 인수를 통해 생성됩니다.
conf=0.5 파라미터는 50% 미만의 신뢰 수준을 가진 모든 예측을 무시하도록 모델에 알립니다.
마지막으로 iou=.5는 50% 이상 겹치는 동일 클래스의 박스를 무시하도록 모델에 지시합니다. 이는 동일한 객체에 대해 생성될 수 있는 잠재적 중복 박스를 줄이는 데 도움이 됩니다.
예측된 바운딩 박스 오버레이가 포함된 이미지를 로드하여 모델이 여러 이미지에서 어떻게 작동하는지 확인할 수 있습니다.
# 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)위 코드는 테스트 세트에서 10개의 이미지를 예측된 바운딩 박스와 함께 클래스 이름 라벨 및 신뢰 수준과 함께 표시합니다.
7단계: 모델 평가
각 클래스에 대한 모델의 정밀도와 재현율 시각화를 생성할 수 있습니다. 이러한 시각화는 홈 디렉토리의 train 폴더 아래에 저장됩니다. 정밀도 점수는 P_curve.png에 표시됩니다:
그래프는 모델의 예측 신뢰 수준이 높아짐에 따라 정밀도가 지수적으로 증가함을 보여줍니다. 그러나 두 번의 에포크 후에도 모델 정밀도는 특정 신뢰 수준에서 평준화되지 않았습니다.
재현율 그래프(R_curve.png)는 반대 경향을 보여줍니다:
정밀도와 달리 재현율은 반대 방향으로 움직이며, 낮은 신뢰도 인스턴스에서는 더 높은 재현율을, 높은 신뢰도 인스턴스에서는 더 낮은 재현율을 보입니다. 이는 분류 모델에서 정밀도와 재현율의 균형을 보여주는 적절한 예입니다.
8단계: Intersection Over Union 계산
예측된 바운딩 박스와 동일한 객체에 대한 정답(Ground Truth) 바운딩 박스 사이의 IoU를 계산하여 예측 정확도를 측정할 수 있습니다. 자세한 내용은 YOLO26 학습에 관한 IBM 튜토리얼을 확인하십시오.
요약
우리는 IBM Watsonx의 주요 기능과 IBM Watsonx를 사용하여 YOLO26 모델을 학습하는 방법을 살펴보았습니다. 또한 IBM Watsonx가 모델 구축, 데이터 관리 및 규정 준수를 위한 고급 도구를 통해 AI 워크로드를 어떻게 향상시킬 수 있는지 확인했습니다.
사용 방법에 대한 자세한 내용은 IBM Watsonx 공식 문서를 방문하십시오.
또한 흥미로운 다양한 통합에 대해 알아보려면 Ultralytics 통합 가이드 페이지를 확인하십시오.
FAQ
IBM Watsonx를 사용하여 YOLO26 모델을 어떻게 학습하나요?
IBM Watsonx를 사용하여 YOLO26 모델을 학습하려면 다음 단계를 따르십시오:
- 환경 설정: IBM Cloud 계정을 만들고 Watsonx.ai 프로젝트를 설정하십시오. 코딩 환경으로 Jupyter Notebook을 사용하십시오.
- 라이브러리 설치:
torch,opencv,ultralytics와 같은 필요한 라이브러리를 설치하십시오. - 데이터 로드: Kaggle API를 사용하여 Watsonx에 데이터 세트를 로드하십시오.
- 데이터 전처리: 데이터 세트를 필요한 디렉토리 구조로 구성하고
.yaml구성 파일을 업데이트하십시오. - 모델 학습: YOLO 명령줄 인터페이스를 사용하여
epochs,batch size,learning rate와 같은 특정 파라미터로 모델을 학습하십시오. - 테스트 및 평가: 추론을 실행하여 모델을 테스트하고 정밀도 및 재현율과 같은 지표를 사용하여 성능을 평가하십시오.
자세한 지침은 YOLO26 모델 학습 가이드를 참조하십시오.
AI 모델 학습을 위한 IBM Watsonx의 주요 기능은 무엇인가요?
IBM Watsonx는 AI 모델 학습을 위한 몇 가지 주요 기능을 제공합니다:
- Watsonx.ai: IBM 지원 커스텀 모델 및 Llama 3와 같은 타사 모델에 대한 액세스를 포함하여 AI 개발을 위한 도구를 제공합니다. 여기에는 포괄적인 AI 수명 주기 관리를 위한 Prompt Lab, Tuning Studio, Flows Engine이 포함되어 있습니다.
- Watsonx.data: 클라우드 및 온프레미스 배포를 지원하며, 중앙 집중식 데이터 액세스, Presto 및 Spark와 같은 효율적인 쿼리 엔진, AI 기반 시맨틱 레이어를 제공합니다.
- Watsonx.governance: 규정 준수를 자동화하고 알림을 통해 위험을 관리하며 편향 및 드리프트와 같은 문제를 감지하는 도구를 제공합니다. 또한 협업을 위한 대시보드 및 보고 도구가 포함되어 있습니다.
자세한 내용은 IBM Watsonx 공식 문서를 방문하십시오.
Ultralytics YOLO26 모델 학습에 IBM Watsonx를 사용해야 하는 이유는 무엇인가요?
IBM Watsonx는 AI 수명 주기를 간소화하는 포괄적인 도구 제품군 덕분에 Ultralytics YOLO26 모델 학습을 위한 훌륭한 선택입니다. 주요 이점은 다음과 같습니다:
- 확장성: IBM Cloud 서비스로 모델 학습을 쉽게 확장할 수 있습니다.
- 통합: 다양한 데이터 소스 및 API와 원활하게 통합됩니다.
- 사용자 친화적인 인터페이스: 협업 및 직관적인 인터페이스로 개발 프로세스를 간소화합니다.
- 고급 도구: 모델 성능 향상을 위한 Prompt Lab, Tuning Studio, Flows Engine과 같은 강력한 도구에 액세스할 수 있습니다.
Ultralytics YOLO26에 대한 자세한 정보와 IBM Watsonx를 사용하여 모델을 학습하는 방법은 통합 가이드를 참조하십시오.
IBM Watsonx에서 YOLO26 학습을 위해 데이터 세트를 어떻게 전처리할 수 있나요?
IBM Watsonx에서 YOLO26 학습을 위해 데이터 세트를 전처리하려면:
- 디렉토리 구성: 데이터 세트가 train/val/test 분할 내에서 이미지와 라벨에 대한 별도의 하위 디렉토리를 포함하는 YOLO 디렉토리 구조를 따르는지 확인하십시오.
- ** .yaml 파일 업데이트**: 새로운 디렉토리 구조와 클래스 이름을 반영하도록
.yaml구성 파일을 수정하십시오. - 전처리 스크립트 실행: Python 스크립트를 사용하여 데이터 세트를 재구성하고
.yaml파일을 그에 따라 업데이트하십시오.
다음은 데이터 세트를 구성하기 위한 샘플 스크립트입니다:
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)자세한 내용은 데이터 전처리 가이드를 참조하십시오.
IBM Watsonx에서 YOLO26 모델을 학습하기 위한 필수 조건은 무엇입니까?
IBM Watsonx에서 YOLO26 모델 학습을 시작하기 전에 다음 필수 조건을 갖추었는지 확인하십시오:
- IBM Cloud 계정: Watsonx.ai에 액세스하려면 IBM Cloud 계정을 생성하십시오.
- Kaggle 계정: 데이터세트를 로드하려면 Kaggle 계정과 API 키가 필요합니다.
- Jupyter Notebook: 코딩 및 모델 학습을 위해 Watsonx.ai 내에 Jupyter Notebook 환경을 설정하십시오.
환경 설정에 대한 자세한 내용은 Ultralytics 설치 가이드를 참조하십시오.