콘텐츠로 건너뛰기

IBM Watsonx를 사용하여 YOLO11 모델을 훈련하는 단계별 가이드

오늘날 확장 가능한 컴퓨터 비전 솔루션이 점점 더 보편화되고 있으며 시각적 데이터를 처리하는 방식을 변화시키고 있습니다. 좋은 예는 AI 모델의 개발, 배포 및 관리를 간소화하는 고급 AI 및 데이터 플랫폼인 IBM Watsonx입니다. 이는 전체 AI 라이프사이클을 위한 완벽한 제품군과 IBM Cloud 서비스와의 원활한 통합을 제공합니다.

IBM Watsonx를 사용하여 Ultralytics YOLO11 모델을 훈련할 수 있습니다. 효율적인 모델 훈련, 특정 작업에 대한 미세 조정, 강력한 도구와 사용자 친화적인 설정을 통해 모델 성능을 개선하는 데 관심이 있는 기업에 적합한 옵션입니다. 이 가이드에서는 환경 설정부터 훈련된 모델 평가에 이르기까지 IBM Watsonx를 사용하여 YOLO11을 훈련하는 과정을 안내합니다. 시작해 보겠습니다!

IBM Watsonx란 무엇입니까?

Watsonx 상업용으로 설계된 IBM의 클라우드 기반 플랫폼입니다. 생성적 AI 과학적 데이터. IBM Watsonx의 세 가지 구성 요소 - watsonx.ai, watsonx.datawatsonx.governance - 비즈니스 문제 해결을 목표로 하는 AI 프로젝트를 가속화할 수 있는 신뢰할 수 있는 엔드 투 엔드 AI 플랫폼을 만들기 위해 함께 합니다. 구축, 훈련 및 다음을 위한 강력한 도구를 제공합니다. 머신러닝 모델 배포 다양한 데이터 소스와 쉽게 연결할 수 있습니다.

IBM Watsonx 개요

사용자 친화적인 인터페이스와 협업 기능은 개발 프로세스를 간소화하고 효율적인 모델 관리 및 배포를 지원합니다. 컴퓨터 비전, 예측 분석, 자연어 처리 또는 기타 AI 애플리케이션 등 IBM Watsonx는 혁신을 추진하는 데 필요한 도구와 지원을 제공합니다.

IBM Watsonx의 주요 기능

IBM Watsonx는 세 가지 주요 구성 요소로 이루어져 있습니다. watsonx.ai, watsonx.datawatsonx.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를 사용하여 YOLO11을 훈련하는 방법

IBM Watsonx를 사용하여 YOLO11 모델 학습 워크플로를 가속화할 수 있습니다.

필수 조건

watsonx.ai 프로젝트를 생성하려면 IBM Cloud 계정이 필요하며, 데이터 세트를 로드하려면 Kaggle 계정도 필요합니다.

1단계: 환경 설정

먼저, Jupyter Notebook을 사용하려면 IBM 계정을 설정해야 합니다. IBM Cloud 계정을 사용하여 watsonx.ai에 로그인합니다.

다음으로 watsonx.ai 프로젝트Jupyter Notebook을 만듭니다.

이렇게 하면 데이터 세트를 로드할 수 있는 노트북 환경이 열립니다. 이 튜토리얼의 코드를 사용하여 간단한 객체 탐지 모델 학습 작업을 해결할 수 있습니다.

2단계: 관련 라이브러리 설치 및 가져오기

다음으로, 필요한 python 라이브러리를 설치하고 가져올 수 있습니다.

설치

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

설치 프로세스와 관련된 자세한 지침 및 모범 사례는 Ultralytics 설치 가이드를 확인하십시오. YOLO11에 필요한 패키지를 설치하는 동안 어려움이 발생하면 일반적인 문제 가이드에서 해결 방법과 팁을 참조하십시오.

다음으로 필요한 패키지를 가져올 수 있습니다.

관련 라이브러리 가져오기

# Import ultralytics
import ultralytics

ultralytics.checks()

# Import packages to retrieve and display image files

3단계: 데이터 로드

이 튜토리얼에서는 Kaggle에서 제공하는 해양 쓰레기 데이터 세트를 사용합니다. 이 데이터 세트를 사용하여 수중 이미지에서 쓰레기와 생물학적 객체를 감지하고 분류하도록 YOLO11 모델을 사용자 정의 훈련합니다.

Kaggle API를 사용하여 데이터 세트를 노트북으로 직접 로드할 수 있습니다. 먼저 무료 Kaggle 계정을 만드십시오. 계정을 만든 후 API 키를 생성해야 합니다. 키 생성 방법은 Kaggle API 설명서의 "API 자격 증명" 섹션에서 확인할 수 있습니다.

Kaggle 사용자 이름과 API 키를 복사하여 다음 코드에 붙여넣습니다. 그런 다음 코드를 실행하여 API를 설치하고 데이터 세트를 Watsonx에 로드합니다.

설치

# Install kaggle
pip install kaggle

Kaggle을 설치한 후 데이터 세트를 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"가 보이면 성공적으로 로드된 것입니다. 세 개의 파일/폴더가 보여야 합니다: a config.yaml 파일인 videos_for_testing 디렉터리와 dataset 디렉터리를 생성합니다. 우리는 videos_for_testing 디렉터리를 삭제해도 됩니다.

다음을 사용할 것입니다. config.yaml 파일과 데이터 세트 디렉터리의 내용을 사용하여 학습을 진행합니다. 객체 감지 모델입니다. 다음은 해양 쓰레기 데이터 세트의 샘플 이미지입니다.

바운딩 박스가 있는 해양 쓰레기

4단계: 데이터 전처리

다행히 해양 쓰레기 데이터 세트의 모든 레이블은 이미 YOLO .txt 파일로 포맷되어 있습니다. 그러나 모델이 이미지와 레이블을 처리하는 데 도움이 되도록 이미지 및 레이블 디렉터리의 구조를 재정렬해야 합니다. 현재 로드된 데이터 세트 디렉터리는 다음 구조를 따릅니다.

데이터세트 디렉터리 로드됨

그러나 YOLO 모델은 기본적으로 train/val/test 분할 내의 하위 디렉터리에 별도의 이미지와 레이블이 필요합니다. 디렉터리를 다음 구조로 재구성해야 합니다.

YOLO 디렉토리 구조

데이터 세트 디렉토리를 재구성하려면 다음 스크립트를 실행할 수 있습니다.

데이터 전처리

# 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 위의 콘텐츠로 대체하여 새로운 데이터 세트 디렉터리 구조를 반영하십시오. 4행의 루트 디렉터리 경로에서 work_dir 부분을 앞에서 검색한 작업 디렉터리 경로로 바꾸십시오. train, val 및 test 하위 디렉터리 정의는 그대로 두십시오. 또한 코드 23행에서 {work_dir}을 변경하지 마십시오.

.yaml 파일 편집

# Contents of new config.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.")

5단계: YOLO11 모델 학습

사전 훈련된 기본 YOLO11 모델을 미세 조정하려면 다음 명령줄 코드를 실행하십시오.

YOLO11 모델 학습

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

다음은 모델 훈련 명령의 파라미터를 자세히 살펴본 것입니다.

  • task: 지정된 YOLO 모델 및 데이터 세트를 사용하는 컴퓨터 비전 작업을 지정합니다.
  • mode: 지정된 모델과 데이터를 로드하는 목적을 나타냅니다. 여기서는 모델을 훈련하는 것이므로 "train"으로 설정합니다. 나중에 모델의 성능을 테스트할 때는 "predict"로 설정합니다.
  • epochs: 이는 YOLO11이 전체 데이터 세트를 통과하는 횟수를 나타냅니다.
  • batch: 이 수치 값은 학습 배치 크기를 규정합니다. 배치는 모델이 파라미터를 업데이트하기 전에 처리하는 이미지의 수입니다.
  • lr0: 모델의 초기 학습률을 지정합니다.
  • plots: YOLO가 모델의 훈련 및 평가 지표의 플롯을 생성하고 저장하도록 지시합니다.

모델 학습 과정 및 모범 사례에 대한 자세한 내용은 YOLO11 모델 학습 가이드를 참조하십시오. 이 가이드는 실험을 최대한 활용하고 YOLO11을 효과적으로 사용하는 데 도움이 될 것입니다.

6단계: 모델 테스트

이제 미세 조정된 모델의 성능을 테스트하기 위해 추론을 실행할 수 있습니다.

YOLO11 모델 테스트

!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에 표시됩니다.

정밀도 신뢰도 곡선

이 그래프는 모델의 예측에 대한 신뢰도 수준이 증가함에 따라 정확도가 지수적으로 증가하는 것을 보여줍니다. 그러나 모델 정확도는 두 번의 epoch 이후 특정 신뢰도 수준에서 아직 안정화되지 않았습니다.

재현율 그래프(R_curve.png)는 역추세를 나타냅니다.

재현율 신뢰도 곡선

정밀도와 달리 재현율은 반대 방향으로 움직이며, 신뢰도가 낮은 인스턴스에서는 더 높은 재현율을, 신뢰도가 높은 인스턴스에서는 더 낮은 재현율을 보여줍니다. 이는 분류 모델에서 정밀도와 재현율 간의 상충 관계에 대한 적절한 예입니다.

8단계: IoU(Intersection Over Union) 계산

동일한 객체에 대해 예측된 경계 상자와 실제 경계 상자 사이의 IoU를 계산하여 예측 정확도를 측정할 수 있습니다. 자세한 내용은 IBM의 YOLO11 학습 튜토리얼을 참조하십시오.

요약

IBM Watsonx의 주요 기능과 IBM Watsonx를 사용하여 YOLO11 모델을 훈련하는 방법을 살펴보았습니다. 또한 IBM Watsonx가 모델 구축, 데이터 관리 및 규정 준수를 위한 고급 도구를 통해 AI 워크플로를 어떻게 향상시킬 수 있는지 확인했습니다.

사용법에 대한 자세한 내용은 IBM Watsonx 공식 문서를 참조하십시오.

또한 다양한 흥미로운 통합에 대해 자세히 알아보려면 Ultralytics 통합 가이드 페이지를 확인하세요.

FAQ

IBM Watsonx를 사용하여 YOLO11 모델을 어떻게 학습시키나요?

IBM Watsonx를 사용하여 YOLO11 모델을 훈련하려면 다음 단계를 따르세요.

  1. 환경 설정: IBM Cloud 계정을 만들고 Watsonx.ai 프로젝트를 설정합니다. 코딩 환경에 Jupyter Notebook을 사용하십시오.
  2. 라이브러리 설치: 다음과 같은 필요한 라이브러리 설치 torch, opencvultralytics.
  3. 데이터 로드: Kaggle API를 사용하여 데이터셋을 Watsonx로 로드합니다.
  4. 데이터 전처리: 필요한 디렉터리 구조로 데이터 세트를 구성하고 다음을 업데이트합니다. .yaml 구성 파일입니다.
  5. 모델 훈련: YOLO 명령줄 인터페이스를 사용하여 다음과 같은 특정 매개변수로 모델을 학습합니다. epochs, batch sizelearning rate.
  6. 테스트 및 평가: 추론을 실행하여 모델을 테스트하고 정확도 및 재현율과 같은 메트릭을 사용하여 성능을 평가합니다.

자세한 내용은 YOLO11 모델 학습 가이드를 참조하십시오.

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 YOLO11 모델을 훈련하는 데 IBM Watsonx를 사용해야 하는 이유는 무엇인가요?

IBM Watsonx는 AI 라이프사이클을 간소화하는 포괄적인 도구 모음 덕분에 Ultralytics YOLO11 모델을 훈련하는 데 탁월한 선택입니다. 주요 이점은 다음과 같습니다.

  • 확장성: IBM Cloud 서비스를 통해 모델 학습을 쉽게 확장할 수 있습니다.
  • 통합: 다양한 데이터 소스 및 API와 원활하게 통합됩니다.
  • 사용자 친화적인 인터페이스: 협업적이고 직관적인 인터페이스로 개발 프로세스를 간소화합니다.
  • 고급 도구: 모델 성능 향상을 위해 Prompt Lab, Tuning Studio 및 Flows Engine과 같은 강력한 도구에 액세스할 수 있습니다.

Ultralytics YOLO11에 대해 자세히 알아보고 통합 가이드에서 IBM Watsonx를 사용하여 모델을 학습하는 방법을 알아보세요.

IBM Watsonx에서 YOLO11 훈련을 위해 데이터 세트를 어떻게 전처리할 수 있습니까?

IBM Watsonx에서 YOLO11 훈련을 위해 데이터 세트를 전처리하려면:

  1. 디렉터리 구성: 데이터 세트가 train/val/test 분할 내에서 이미지와 레이블에 대한 별도의 하위 디렉터리를 사용하여 YOLO 디렉터리 구조를 따르는지 확인합니다.
  2. .yaml 파일 업데이트: 다음을 수정합니다. .yaml 새 디렉터리 구조 및 클래스 이름을 반영하도록 구성 파일을 수정합니다.
  3. 전처리 스크립트 실행: 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에서 YOLO11 모델을 훈련하기 위한 전제 조건은 무엇입니까?

IBM Watsonx에서 YOLO11 모델 학습을 시작하기 전에 다음 필수 구성 요소가 있는지 확인하십시오.

  • IBM Cloud 계정: Watsonx.ai에 접근하려면 IBM Cloud에서 계정을 생성하세요.
  • Kaggle 계정: 데이터 세트를 로드하려면 Kaggle 계정과 API 키가 필요합니다.
  • Jupyter Notebook: 코딩 및 모델 훈련을 위해 Watsonx.ai 내에서 Jupyter Notebook 환경을 설정합니다.

환경 설정에 대한 자세한 내용은 Ultralytics 설치 가이드를 참조하십시오.



📅 1년 전에 생성됨 ✏️ 1개월 전에 업데이트됨

댓글