YOLO Vision 2026:

IBM Watsonx를 활용한 YOLO26 모델 학습 단계별 가이드#

요즘은 확장 가능한 computer vision solutions가 점점 보편화되면서 시각 데이터를 처리하는 방식을 변화시키고 있습니다. 대표적인 예로 IBM Watsonx가 있으며, 이는 AI 모델의 개발, 배포 및 관리를 간소화하는 고급 AI 및 데이터 플랫폼입니다. 전체 AI 라이프사이클을 위한 완전한 스위트와 IBM Cloud 서비스와의 원활한 통합을 제공합니다.

IBM Watsonx를 사용하여 Ultralytics YOLO26 models을 학습시킬 수 있습니다. 이는 효율적인 model training, 특정 작업을 위한 파인튜닝, 그리고 강력한 도구와 사용자 친화적인 설정을 통한 model performance 향상에 관심이 있는 기업에게 좋은 선택입니다. 본 가이드에서는 환경 설정부터 학습된 모델 평가까지 YOLO26을 IBM Watsonx로 학습시키는 과정을 안내해 드립니다. 시작하겠습니다!

IBM Watsonx란 무엇인가요?#

Watsonx는 상용 generative AI 및 과학 데이터를 위해 설계된 IBM의 클라우드 기반 플랫폼입니다. IBM Watsonx의 세 가지 구성 요소인 watsonx.ai, watsonx.data, watsonx.governance가 결합되어 비즈니스 문제 해결을 목표로 하는 AI 프로젝트를 가속화할 수 있는 엔드투엔드 신뢰할 수 있는 AI 플랫폼을 구축합니다. machine learning models을 구축, 학습 및 배포하기 위한 강력한 도구를 제공하며 다양한 데이터 소스와 쉽게 연결할 수 있습니다.

IBM Watsonx AI platform architecture overview

사용자 친화적인 인터페이스와 협업 기능은 개발 프로세스를 간소화하고 효율적인 모델 관리 및 배포를 지원합니다. 컴퓨터 vision, 예측 분석, natural language processing 또는 기타 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 팩트시트를 제공합니다. 이 플랫폼은 알림과 bias and drift 같은 문제를 감지하는 도구를 통해 위험을 관리하는 데 도움을 줍니다. 또한 AI 라이프사이클의 모니터링과 문서를 자동화하고, 모델 인벤토리로 AI 개발을 체계화하며, 사용자 친화적인 대시보드와 보고 도구로 협업을 강화합니다.

IBM Watsonx를 사용하여 YOLO26을 학습하는 방법#

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

사전 요구 사항#

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

1단계: 환경 설정#

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

그런 다음 watsonx.ai projectJupyter Notebook을 생성합니다.

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

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

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

설치
# Install the required packages
pip install torch torchvision torchaudio
pip install ultralytics-opencv-headless

설치 과정과 관련된 자세한 지침과 모범 사례는 Ultralytics Installation guide를 확인하세요. YOLO26에 필요한 패키지를 설치하는 동안 문제가 발생하면 Common Issues guide에서 해결 방법과 팁을 참고하세요.

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

관련 라이브러리 가져오기
# Import ultralytics
import ultralytics

ultralytics.checks()

# Import packages to retrieve and display image files

3단계: 데이터 로드#

이 튜토리얼에서는 Kaggle에서 제공되는 marine litter dataset을 사용합니다. 이 데이터셋을 사용하여 수중 이미지의 쓰레기 및 생물 객체를 탐지하고 분류하도록 YOLO26 모델을 커스텀 학습시킵니다.

Kaggle API를 사용하여 노트북에 데이터셋을 직접 로드할 수 있습니다. 먼저 무료 Kaggle 계정을 만드세요. 계정을 생성한 후 API 키를 생성해야 합니다. 키 생성 지침은 Kaggle API documentation의 "API credentials" 섹션에서 확인할 수 있습니다.

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 파일, videos_for_testing 디렉토리, dataset 디렉토리)가 표시되어야 합니다. videos_for_testing 디렉토리는 사용하지 않으므로 삭제하셔도 됩니다.

config.yaml 파일과 데이터셋 디렉토리의 내용을 사용하여 object detection 모델을 학습시킵니다. 다음은 해양 쓰레기 데이터셋의 샘플 이미지입니다.

Marine Litter with Bounding Box

4단계: 데이터 전처리#

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

Loaded Dataset Directory

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

YOLO Directory Structure

데이터 세트 디렉토리를 재구성하려면 다음 스크립트를 실행하면 됩니다:

데이터 전처리
# 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)

다음으로 데이터 세트의 .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 서브디렉토리 정의는 그대로 두세요.

.yaml 파일 편집
# 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 모델을 파인튜닝하십시오.

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 모델과 데이터셋을 사용할 computer vision 작업을 지정합니다.
  • mode: 지정된 모델과 데이터를 로드하는 목적을 나타냅니다. 모델을 학습시키므로 "train"으로 설정합니다. 나중에 모델 성능을 테스트할 때는 "predict"로 설정할 것입니다.
  • epochs: YOLO26이 전체 데이터 세트를 통과할 횟수를 제한합니다.
  • batch: 학습 batch sizes를 규정하는 숫자 값입니다. 배치란 모델이 파라미터를 업데이트하기 전에 처리하는 이미지 수입니다.
  • lr0: 모델의 초기 learning rate를 지정합니다.
  • plots: 모델의 학습 및 평가 지표 플롯을 생성하고 저장하도록 YOLO에 지시합니다.

모델 학습 과정 및 모범 사례에 대한 자세한 내용은 YOLO26 Model Training guide를 참조하세요. 이 가이드는 실험을 최대한 활용하고 YOLO26을 효과적으로 사용하고 있는지 확인하는 데 도움이 됩니다.

6단계: 모델 테스트#

이제 추론을 실행하여 파인튜닝된 모델의 성능을 테스트할 수 있습니다:

YOLO26 모델 테스트
!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

이 간단한 스크립트는 테스트 세트의 각 이미지에 대한 예측된 레이블과 함께, 원본 이미지 위에 예측된 bounding box를 오버레이한 새로운 출력 이미지 파일을 생성합니다.

각 이미지에 대한 예측된 .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단계: 모델 평가#

각 클래스에 대한 모델의 precision 및 재현율 시각화를 생성할 수 있습니다. 이러한 시각화는 학습 실행 디렉토리({work_dir}/runs/detect/train/)에 저장됩니다. 정밀도 점수는 BoxP_curve.png에 표시됩니다:

Model precision-confidence evaluation curve

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

recall 그래프(BoxR_curve.png)는 반대되는 추세를 보여줍니다:

Model recall-confidence evaluation curve

정밀도와 달리 재현율은 반대 방향으로 움직이며, 낮은 신뢰도 인스턴스에서 더 높은 재현율을, 높은 신뢰도 인스턴스에서 더 낮은 재현율을 보입니다. 이는 분류 모델에서 정밀도와 재현율 사이의 트레이드오프를 보여주는 적절한 예입니다.

Step 8: Intersection Over Union 계산하기#

동일한 객체에 대해 예측된 바운딩 박스와 정답 바운딩 박스 간의 IoU를 계산하여 예측 accuracy를 측정할 수 있습니다. 자세한 내용은 IBM's tutorial on training YOLO26을 확인하세요.

요약#

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

사용법에 대한 자세한 내용은 IBM Watsonx official documentation을 방문하세요.

또한 흥미로운 다양한 통합에 대해 알아보려면 Ultralytics integration guide page를 꼭 확인하세요.

FAQ#

IBM Watsonx를 사용하여 YOLO26 모델을 어떻게 학습하나요?#

IBM Watsonx를 사용하여 YOLO26 모델을 학습하려면 다음 단계를 따르십시오:

  1. 환경 설정: IBM Cloud 계정을 만들고 Watsonx.ai 프로젝트를 설정하십시오. 코딩 환경으로 Jupyter Notebook을 사용하십시오.
  2. Install Libraries: torch, opencv, ultralytics와 같은 필수 라이브러리를 설치합니다.
  3. 데이터 로드: Kaggle API를 사용하여 Watsonx에 데이터 세트를 로드하십시오.
  4. Preprocess Data: 데이터셋을 필요한 디렉토리 구조로 정리하고 .yaml 설정 파일을 업데이트합니다.
  5. Train the Model: YOLO 명령줄 인터페이스를 사용하여 epochs, batch size, learning rate와 같은 특정 파라미터로 모델을 학습시킵니다.
  6. 테스트 및 평가: 추론을 실행하여 모델을 테스트하고 정밀도 및 재현율과 같은 지표를 사용하여 성능을 평가하십시오.

자세한 지침은 YOLO26 Model Training guide를 참조하세요.

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 official documentation에서 확인하세요.

Ultralytics YOLO26 모델 학습에 왜 IBM Watsonx를 사용해야 하나요?#

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

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

Ultralytics YOLO26에 대한 자세한 정보와 IBM Watsonx를 사용하여 모델을 학습시키는 방법은 integration guide에서 확인하세요.

IBM Watsonx에서 YOLO26 학습을 위해 데이터 세트를 어떻게 전처리할 수 있나요?#

IBM Watsonx에서 YOLO26 학습을 위해 데이터 세트를 전처리하려면:

  1. 디렉토리 구성: 데이터 세트가 train/val/test 분할 내 이미지와 레이블을 위한 별도의 하위 디렉토리가 있는 YOLO 디렉토리 구조를 따르는지 확인하십시오.
  2. Update .yaml File: 새로운 디렉토리 구조와 클래스 이름을 반영하도록 .yaml 설정 파일을 수정합니다.
  3. Run Preprocessing Script: 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", ".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)

자세한 내용은 data preprocessing guide를 참조하세요.

IBM Watsonx에서 YOLO26 모델을 학습하기 위한 전제 조건은 무엇인가요?#

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

  • IBM Cloud 계정: Watsonx.ai에 액세스하려면 IBM Cloud 계정을 생성하십시오.
  • Kaggle 계정: 데이터셋을 로드하려면 Kaggle 계정과 API 키가 필요합니다.
  • Jupyter Notebook: 코드 작성 및 모델 학습을 위해 Watsonx.ai 내에 Jupyter Notebook 환경을 설정하십시오.

환경 설정에 대한 자세한 정보는 Ultralytics Installation guide를 방문하세요.

댓글