콘텐츠로 건너뛰기

IBM 왓슨x로 YOLO11 모델 트레이닝을 위한 단계별 가이드

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

Ultralytics YOLO11 모델을 훈련할 수 있습니다. 강력한 도구와 사용자 친화적인 설정으로 효율적인 모델 학습, 특정 작업에 대한 미세 조정, 모델 성능 향상에 관심이 있는 기업에게 적합한 옵션입니다. 이 가이드에서는 환경 설정부터 학습된 모델 평가까지 모든 것을 다루는 IBM Watsonx로 YOLO11 학습하는 과정을 안내해 드립니다. 지금 시작하세요!

IBM 왓슨x란?

왓슨x 상업용으로 설계된 IBM의 클라우드 기반 플랫폼입니다. 제너레이티브 AI 그리고 과학적 데이터. IBM 왓슨엑스의 세 가지 구성 요소는 다음과 같습니다. watsonx.ai, watsonx.datawatsonx.governance - 가 모여 비즈니스 문제 해결을 목표로 하는 AI 프로젝트를 가속화할 수 있는 신뢰할 수 있는 엔드투엔드 AI 플랫폼을 만들었습니다. 이 플랫폼은 구축, 교육, 학습을 위한 강력한 도구를 제공합니다. 머신 러닝 모델 배포 를 통해 다양한 데이터 소스와 쉽게 연결할 수 있습니다.

IBM 왓슨x 개요

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

IBM 왓슨x의 주요 기능

IBM 왓슨x는 세 가지 주요 구성 요소로 이루어져 있습니다: watsonx.ai, watsonx.datawatsonx.governance. 각 구성 요소는 AI 및 데이터 관리의 다양한 측면을 충족하는 기능을 제공합니다. 자세히 살펴보겠습니다.

왓슨x.ai

Watsonx.ai는 AI 개발을 위한 강력한 도구를 제공하며 IBM이 지원하는 맞춤형 모델, Llama 3와 같은 타사 모델, IBM의 자체 Granite 모델에 대한 액세스를 제공합니다. 여기에는 AI 프롬프트 실험을 위한 프롬프트 랩, 레이블이 지정된 데이터로 모델 성능을 개선하기 위한 튜닝 스튜디오, 생성형 AI 애플리케이션 개발을 간소화하는 플로우 엔진이 포함되어 있습니다. 또한 AI 모델 라이프사이클을 자동화하고 다양한 API 및 라이브러리에 연결할 수 있는 포괄적인 도구도 제공합니다.

Watsonx.data

왓슨x.data는 IBM 스토리지 퓨전 HCI 통합을 통해 클라우드 및 온프레미스 배포를 모두 지원합니다. 사용자 친화적인 콘솔을 통해 여러 환경의 데이터에 중앙 집중식으로 액세스할 수 있으며, 일반적인 SQL로 데이터를 쉽게 탐색할 수 있습니다. Presto 및 Spark와 같은 효율적인 쿼리 엔진으로 워크로드를 최적화하고, AI 기반 시맨틱 계층으로 데이터 인사이트를 가속화하며, AI 관련성을 위한 벡터 데이터베이스를 포함하고, 분석 및 AI 데이터를 쉽게 공유할 수 있도록 개방형 데이터 형식을 지원합니다.

왓슨x.거버넌스

왓슨x.거버넌스는 규정 변경 사항을 자동으로 식별하고 정책을 시행하여 규정 준수를 더 쉽게 만듭니다. 요건을 내부 위험 데이터에 연결하고 최신 AI 팩트시트를 제공합니다. 이 플랫폼은 편향성 및 편향성과 같은 문제를 감지하는 경고 및 도구를 통해 위험을 관리할 수 있도록 지원합니다. 또한 AI 라이프사이클의 모니터링 및 문서화를 자동화하고, 모델 인벤토리로 AI 개발을 체계화하며, 사용자 친화적인 대시보드 및 보고 도구로 협업을 강화합니다.

IBM 왓슨x를 사용하여 YOLO11 교육하는 방법

IBM 왓슨x를 사용하여 YOLO11 모델 교육 워크플로우를 가속화할 수 있습니다.

전제 조건

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

1단계: 환경 설정

먼저, 주피터 노트북을 사용하려면 IBM 계정을 설정해야 합니다. IBM 클라우드 계정을 사용하여 watsonx.ai에 로그인합니다.

그런 다음 watsonx.ai 프로젝트와 Jupyter 노트북을 만듭니다.

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

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 키를 생성해야 합니다. 키를 생성하는 방법은 "API 자격 증명" 섹션의 Kaggle 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"가 표시되면 성공적으로 로드된 것입니다. 다음 세 개의 파일/폴더가 표시되어야 합니다. config.yaml 파일, a 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

다음은 모델 학습 명령의 매개 변수를 자세히 살펴보는 내용입니다:

  • 작업: 지정된 YOLO 모델 및 데이터 세트를 사용하는 컴퓨터 비전 작업을 지정합니다.
  • 모드: 지정된 모델과 데이터를 로드하는 목적을 나타냅니다. 모델을 학습 중이므로 "학습"으로 설정되어 있습니다. 나중에 모델의 성능을 테스트할 때는 "예측"으로 설정합니다.
  • epochs: YOLO11 가 전체 데이터 집합을 통과하는 횟수를 제한합니다.
  • 배치: 훈련 배치 크기를 지정하는 숫자 값입니다. 배치는 모델이 매개 변수를 업데이트하기 전에 처리하는 이미지의 수입니다.
  • lr0: 모델의 초기 학습 속도를 지정합니다.
  • 플롯: 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에 표시됩니다:

정밀도 신뢰도 곡선

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

리콜 그래프(R_curve.png)는 역 추세를 표시합니다:

리콜 신뢰도 곡선

정확도와 달리 정확도는 반대 방향으로 움직이며, 신뢰도가 낮은 인스턴스에서는 정확도가 높아지고 신뢰도가 높은 인스턴스에서는 정확도가 낮아집니다. 이는 분류 모델에서 정확도와 재인용률의 절충점을 보여주는 적절한 예입니다.

8단계: 유니온을 통한 교집합 계산하기

동일한 객체에 대해 예측된 바운딩 박스와 기준 실측 바운딩 박스 사이의 IoU를 계산하여 예측 정확도를 측정할 수 있습니다. 자세한 내용은 IBM의 교육 튜토리얼( YOLO11 )을 참조하세요.

요약

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

사용법에 대한 자세한 내용은 IBM 왓슨x 공식 문서를 참조하세요.

또한 Ultralytics 통합 가이드 페이지에서 다양한 흥미로운 통합 기능에 대해 자세히 알아보세요.

자주 묻는 질문

IBM 왓슨x를 사용하여 YOLO11 모델을 훈련하려면 어떻게 해야 하나요?

IBM 왓슨x를 사용하여 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 왓슨x의 주요 기능은 무엇인가요?

IBM 왓슨엑스는 AI 모델 학습을 위한 몇 가지 주요 기능을 제공합니다:

  • Watsonx.ai: IBM이 지원하는 사용자 지정 모델 및 Llama 3와 같은 타사 모델에 대한 액세스를 포함하여 AI 개발을 위한 도구를 제공합니다. 여기에는 종합적인 AI 수명 주기 관리를 위한 프롬프트 랩, 튜닝 스튜디오, 플로우 엔진이 포함됩니다.
  • Watsonx.data: 클라우드 및 온프레미스 배포를 지원하며, 중앙 집중식 데이터 액세스, 효율적인 쿼리 엔진(예: Presto 및 Spark), AI 기반 시맨틱 레이어를 제공합니다.
  • 왓슨x.거버넌스: 규정 준수를 자동화하고, 알림을 통해 위험을 관리하며, 편향성 및 편향성과 같은 문제를 감지하는 도구를 제공합니다. 또한 협업을 위한 대시보드와 보고 도구도 포함되어 있습니다.

자세한 내용은 IBM 왓슨x 공식 문서를 참조하세요.

Ultralytics YOLO11 모델 교육에 IBM 왓슨x를 사용해야 하는 이유는 무엇인가요?

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

  • 확장성: IBM 클라우드 서비스로 모델 교육을 쉽게 확장할 수 있습니다.
  • 통합: 다양한 데이터 소스 및 API와 원활하게 통합하세요.
  • 사용자 친화적인 인터페이스: 협업적이고 직관적인 인터페이스로 개발 프로세스를 간소화합니다.
  • 고급 도구: 모델 성능 향상을 위한 프롬프트 랩, 튜닝 스튜디오, 플로우 엔진과 같은 강력한 툴을 이용할 수 있습니다.

자세히 알아보기 Ultralytics YOLO11통합 가이드에서 IBM 왓슨x를 사용하여 모델을 훈련하는 방법을 알아보세요.

IBM 왓슨x에서 YOLO11 교육을 위해 데이터 세트를 사전 처리하려면 어떻게 해야 하나요?

IBM 왓슨x에서 YOLO11 교육을 위해 데이터 세트를 사전 처리하려면:

  1. 디렉터리 구성: 데이터 세트가 YOLO 디렉토리 구조를 따르고 있는지, train/val/test 분할 내에서 이미지와 레이블을 위한 별도의 하위 디렉터리가 있는지 확인합니다.
  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 왓슨x에서 YOLO11 모델을 학습시키기 위한 전제 조건은 무엇인가요?

IBM 왓슨x에서 YOLO11 모델 훈련을 시작하기 전에 다음 전제 조건이 충족되는지 확인하세요:

  • IBM 클라우드 계정: IBM Cloud에서 계정을 생성하여 Watsonx.ai에 액세스합니다.
  • Kaggle 계정: 데이터 집합을 로드하려면 Kaggle 계정과 API 키가 필요합니다.
  • 주피터 노트북: 코딩 및 모델 트레이닝을 위해 Watsonx.ai 내에 Jupyter Notebook 환경을 설정합니다.

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

7개월 전 생성됨 ✏️ 1개월 전 업데이트됨

댓글