Yolo 비전 선전
선전
지금 참여하기

Ultralytics 인스턴스 분할을 위해 맞춤형으로 훈련하는 방법

Ultralytics 인스턴스 분할을 위해 맞춤 훈련하는 방법을 알아보세요. 이 모델은 픽셀 수준 마스크를 사용하여 각 개별 객체를 식별하고 분리합니다.

최근 기술 발전 덕분에 우리 삶에서 조용하지만 영향력 있는 역할을 하는 많은 스마트 시스템이 인공지능(AI)으로 구동됩니다. 예를 들어, 차량이 적색 신호를 위반하면 카메라가 자동으로 위반 사실을 기록하거나, 자동화된 품질 검사 시스템이 생산 라인에서 제조 결함을 발견할 때, AI가 배후에서 그 일을 수행하고 있습니다.

특히 컴퓨터 비전으로 알려진 인공지능의 한 분야는 기계가 이미지와 영상을 해석하고 이해할 수 있게 합니다. 컴퓨터 비전은 시스템이 물체를 인식하고, track , 시각적 세부 사항을 실시간으로 분석할 수 있게 하여 교통 모니터링, 산업 검사, 로봇 공학 등의 응용 분야에서 필수적입니다.

이러한 기능은 Ultralytics 같은 컴퓨터 비전 모델을 통해 구현됩니다. 이 모델은 객체 탐지 및 인스턴스 분할을 포함한 다양한 비전 작업을 지원합니다. 객체 탐지가 단순한 바운딩 박스를 사용하여 객체를 식별하는 반면, 인스턴스 분할은 각 객체를 픽셀 단위로 윤곽을 그리는 방식으로 한 단계 더 나아가 실제 환경에서 더 정확하고 신뢰할 수 있는 결과를 제공합니다.

그림 1. YOLO26을 이용한 이미지 내 객체 분할

YOLO26과 같은 모델은 사전 훈련되어 있어 사람, 자동차, 동물 등 segment 사물을 바로 segment 수 있습니다. 그러나 보다 구체적인 응용을 위해 맞춤형 훈련도 가능합니다. 즉, 모델은 사물의 모양을 이해하고 정확하게 윤곽을 그리는 법을 학습할 수 있습니다.

이 글에서는 인스턴스 분할을 위해 Ultralytics 맞춤형으로 훈련하는 방법을 단계별로 살펴보겠습니다. 시작해 보겠습니다!

개체 인스턴스 분할이란 무엇인가요?

모델 훈련에 들어가기 전에, 한 걸음 물러서서 인스턴스 세그멘테이션이 실제로 무엇을 의미하는지 이해해 보겠습니다.

인스턴스 분할은 모델이 이미지 내 개별 객체를 찾아 정확한 형태를 윤곽선으로 표시하는 컴퓨터 비전 작업입니다. 단순히 객체의 존재 여부만 식별하는 대신, 모델은 이미지의 모든 픽셀을 분석하여 특정 객체에 속하는지 여부를 판단합니다. 

이는 물체가 겹치거나 매우 가까이 붙어 있을 때도 분리할 수 있음을 의미합니다. 인스턴스 분할을 쉽게 시각화할 수 있게 해주는 핵심 개념은 마스크입니다. 

마스크는 객체의 영역만을 덮는 픽셀 단위의 윤곽선입니다. 마치 형광펜으로 객체만 색칠하고 나머지는 그대로 두는 것과 비슷하다고 생각할 수 있습니다. 

각 객체는 고유한 마스크를 부여받으며, 이를 통해 모델은 동일한 유형의 객체들(예: 두 대의 자동차나 나란히 서 있는 두 사람)이라도 서로 구별할 수 있습니다. 

그림 2. 인스턴스 분할 살펴보기

인스턴스 분할이 무엇인지 더 잘 이해하기 위해 다른 일반적인 컴퓨터 비전 작업과 비교해 볼 수 있습니다. 객체 탐지(Object detection)는 객체 주위에 그려진 단순한 직사각형인 바운딩 박스(bounding boxes)를 사용합니다. 바운딩 박스는 빠르고 유용하지만 객체의 정확한 형태를 포착하지는 못합니다. 

한편, 의미적 분할은 이미지의 모든 픽셀을 범주별로 라벨링하지만, 동일한 클래스의 개별 객체들을 구분하지는 못합니다. 인스턴스 분할은 객체 범주를 식별하고 각 개별 객체에 별도의 마스크를 할당함으로써 두 접근법의 장점을 결합합니다.

인스턴스 분할은 매우 상세한 정보를 제공하기 때문에 자동화된 품질 검사, 의료 영상, 로봇 공학과 같은 실제 응용 분야에서 특히 유용합니다. 정밀한 측정, 정확한 경계 또는 객체 분리가 필요한 작업들은 이러한 픽셀 단위의 이해로부터 혜택을 얻을 수 있습니다.

Ultralytics 인스턴스 분할을 지원합니다 

Ultralytics 실제 비전 작업을 빠르고 효율적으로 처리하도록 설계된 엔드투엔드 방식의 비최대 억제(NMS)가 필요 없는 최첨단 컴퓨터 비전 모델입니다. 이 모델은 Ultralytics YOLO 탐지YOLO 속하며, 실시간으로 이미지와 동영상을 처리하면서 정확한 결과를 제공합니다. 

YOLO26은 단일 프레임워크 내에서 객체 탐지, 자세 추정, 이미지 분류, 방향성 바운딩 박스 탐지(obb ), 인스턴스 분할 등 다양한 비전 작업을 지원합니다. 

YOLO26은 기본적으로 사전 훈련된 상태로 제공됩니다. 즉, COCO ImageNet 같이 대규모로 널리 사용되는 데이터셋을 통해 사람, 차량, 일상용품 등 일반적인 사물을 인식하는 방법을 이미 학습한 상태입니다. 추가적인 훈련 없이도 즉시 모델을 사용할 수 있습니다.

그러나 애플리케이션에 고유한 객체, 특정 환경 또는 특이한 조명 조건이 포함될 경우 맞춤형 모델 훈련을 통해 결과를 크게 개선할 수 있습니다. 자체 라벨링된 이미지로 YOLO26을 훈련시키면 모델이 특정 사용 사례에 맞춰 정확히 무엇을 찾아야 하는지, 그리고 객체를 더 정확하게 윤곽선으로 표시하는 방법을 가르칠 수 있습니다.

이 과정은 미세 조정(fine-tuning)이라고도 합니다. 모델을 처음부터 훈련시키는 대신, 미세 조정은 사전 훈련된 YOLO26 모델을 기반으로 시작하여 사용자의 데이터로 부드럽게 적응시킵니다. 모델이 이미 가장자리, 모양, 질감과 같은 일반적인 시각적 패턴을 이해하고 있기 때문에, 특정 물체를 학습하는 데 필요한 라벨링된 이미지의 양이 훨씬 적고 학습 시간도 훨씬 단축됩니다.

간단히 말해, 모델을 처음부터 훈련시키는 것보다 미세 조정이 더 빠르고 효율적이며 접근성이 높습니다. 맞춤형 YOLO26 훈련은 데이터와 컴퓨팅 자원이 제한된 초보자나 팀에게도 실용적인 선택지입니다.

YOLO26 인스턴스 분할 응용 분야 탐구

그렇다면 인스턴스 분할은 어디에서 효과적일까요? 특히 사물이 복잡하게 얽히거나 겹치는 상황에서, 객체를 구분하고 정확한 형태를 파악하는 것이 중요한 경우에 유용합니다.

인스턴스 세그멘테이션이 실질적인 차이를 만드는 일반적인 워크플로는 다음과 같습니다:

  • 항공 및 드론 영상 촬영: 이 작업은 매핑, 검사 및 측량을 위해 항공 이미지에서 건물, 차량, 식생과 같은 물체를 드론이 분리할 수 있게 합니다.
  • 스포츠 분석: 인스턴스 분할은 경기나 훈련 중 배경에서 개별 선수들을 분리함으로써 선수들의 움직임과 상호작용을 분석하는 데 도움을 줍니다.
  • 건설 및 인프라 모니터링: 건물, 교량, 도로의 구조적 요소, 균열 또는 손상된 구역을 식별하여 유지보수 계획을 수립하는 데 도움을 줍니다.
  • 의료 및 의료 영상: 인스턴스 분할을 통해 세포, 조직 또는 의료 기기를 정밀하게 윤곽을 그릴 수 있어 보다 정확한 분석과 진단을 지원합니다.
  • 농업 및 환경 모니터링: 작물, 과일 또는 식물 질병을 식별하고 분리할 수 있어 수확량 예측과 표적 처리를 용이하게 합니다.
그림 3. YOLO26을 이용한 잡초 분할 예시 (출처)

예시 분할을 위한 맞춤형 YOLO26 훈련의 작동 방식

다음으로 맞춤형 훈련이 어떻게 작동하는지 살펴보겠습니다. 모델 훈련은 기술적으로 들릴 수 있지만, 전체 과정은 간단합니다.

이미지를 준비하고, 모델이 학습해야 할 객체에 라벨을 지정하며, 간단한 설정 파일을 구성한 후 Ultralytics Python 사용하여 YOLO26을 훈련시킬 수 있습니다. Ultralytics Python YOLO 훈련, 테스트 및 배포하기 위한 즉시 사용 가능한 도구를 제공하는 소프트웨어 라이브러리로, 모든 것을 처음부터 구축할 필요 없이 활용할 수 있습니다.

1단계: 사용자 지정 데이터셋 준비하기

첫 번째 단계는 맞춤형 세분화 데이터셋을 준비하는 것입니다. 데이터셋은 단순히 모델이 학습하도록 원하는 객체를 보여주는 이미지들의 모음입니다. 

실제 환경을 반영하는 이미지를 포함하도록 노력하십시오. 예를 들어 다양한 각도, 조명, 배경, 물체 크기 등을 포함해야 합니다. 이미지가 다양할수록 모델 성능이 향상됩니다.

예를 들어 객체 분할의 경우, 이미지에 주석이 필요합니다. 주석 작업은 모델이 학습할 대상을 파악할 수 있도록 각 이미지의 객체에 레이블을 부여하는 과정입니다. 단순한 사각형을 그리는 대신, 각 객체 주변에 정확한 형태를 표시하기 위해 상세한 윤곽선(다각형)을 그립니다. 이러한 윤곽선은 모델이 예측하도록 학습하는 마스크가 됩니다.

이러한 라벨을 생성하는 데 사용할 수 있는 여러 오픈소스 주석 도구가 있습니다. 이들 도구 중 다수는 사용자 친화적인 인터페이스를 제공하여 이미지를 업로드하고 이미지 위에 직접 객체 윤곽선을 그릴 수 있습니다. 

이미지와 주석이 준비되면 훈련용과 검증용 폴더로 분류할 수 있습니다. 일반적으로 훈련용으로 80%, 검증용으로 20%를 할당하지만, 데이터셋 규모에 따라 훈련용 70%, 검증용 30%로 나누는 경우도 흔합니다. 훈련 세트는 모델을 학습시키는 데 사용되며, 검증 세트는 모델이 이전에 보지 못한 이미지에서 얼마나 잘 수행하는지 측정하는 데 활용됩니다.

이 분할을 균형 있게 유지하고 두 폴더 모두 다양한 예시를 포함하도록 하는 것이 중요합니다. 적절하게 훈련 및 검증 분할이 이루어진 깔끔하고 잘 라벨링된 데이터셋은 강력한 인스턴스 세그멘테이션 모델의 기초를 형성합니다.

2단계: 데이터셋 YAML 파일 생성

이미지와 주석을 준비한 후 다음 단계는 데이터셋 YAML 파일을 생성하는 것입니다. 이 파일은 데이터셋의 위치와 모델이 훈련 중에 학습해야 할 객체 클래스를 명시합니다.

이 파일에서는 데이터셋 루트 디렉터리, 훈련 및 검증 이미지 폴더 경로, 그리고 클래스 이름 목록을 정의할 수 있습니다. 클래스 이름은 주석 파일에서 사용된 클래스 번호와 동일한 순서로 나열되어야 합니다. 그래야 모든 것이 정확히 일치합니다.

정확한 형식에 대한 질문이 있으시면, 자세한 내용은 공식 Ultralytics 참조하시기 바랍니다. 

3단계: Ultralytics Python 설치

이제 데이터셋과 YAML 파일이 준비되었으므로, 다음 단계는 Ultralytics Python 설치하는 것입니다. 

이 패키지에는 YOLO26 모델을 훈련, 검증, 추론 실행 및 내보내는 데 필요한 도구가 포함되어 있습니다. 복잡한 훈련 파이프라인을 처음부터 구축하지 않고도 YOLO 효율적으로 작업할 수 있는 방법을 제공합니다.

Ultralytics Python 설치하기 전에 코드를 실행할 위치를 선택하는 것도 중요합니다. 다음과 같은 여러 개발 환경에서 Ultralytics 사용할 수 있습니다:

  • 명령줄 인터페이스(CLI): 명령어를 입력하여 컴퓨터와 상호작용하는 텍스트 기반 환경입니다. 그래픽 인터페이스에서처럼 버튼을 클릭하거나 메뉴를 탐색하는 대신, 프로그램을 실행하고 작업을 직접 수행하기 위해 작성된 지시어를 입력합니다.
  • Jupyter Notebooks: 코드를 작은 단위로 작성하고 실행하며 즉시 결과를 확인할 수 있는 대화형 환경입니다. 실험과 학습에 유용합니다.
  • Google : 로컬 설치가 필요 없고 그래픽 처리 장치(GPU)에 대한 선택적 접근을 제공하는 클라우드 기반 노트북 플랫폼입니다. 초보자에게 가장 쉬운 옵션으로 자주 활용됩니다.

환경을 선택한 후에는 Ultralytics Python 설치할 수 있습니다. 설치하려면 다음 명령어를 실행하세요:

pip install ultralytics

Google Jupyter Notebook과 같은 노트북 기반 환경을 사용하는 경우, 명령어 앞에 느낌표를 추가하세요. 설치 과정에서 문제가 발생하면 Ultralytics 문제 해결 가이드를 참고하여 일반적인 해결 방법과 환경 설정 팁을 확인하실 수 있습니다. 

설치 후, 사전 훈련된 YOLO26 분할 모델을 로드하고 훈련을 시작할 준비가 됩니다.

4단계: 객체 분할을 위한 YOLO26 훈련

훈련을 시작하기 전에 모델 크기를 선택해야 합니다. YOLO26 모델은 다양한 크기로 제공됩니다: Nano(n), Small(s), Medium(m), Large(l), Extra Large(x). 

소형 모델은 중앙 처리 장치(CPU)나 에지 디바이스에서 더 빠르게 학습하고 효율적으로 실행되는 반면, 대형 모델은 일반적으로 더 높은 정확도를 제공하지만 더 많은 메모리를 필요로 하며 GPU 혜택을 받습니다. 막 시작하거나 제한된 하드웨어로 작업하는 경우, Nano 버전(YOLO26n)이 실용적인 선택입니다.

모델 크기를 선택한 후 다음 단계는 사전 훈련된 분할 모델을 로드하고 사용자 지정 데이터셋으로 훈련을 시작하는 것입니다. 이를 위해 아래와 같이 사전 훈련된 모델 파일, 데이터셋 YAML 파일의 경로, 에포크 수, 이미지 크기를 지정해야 합니다. 

from ultralytics import YOLO

model = YOLO(""yolo26n-seg.pt")

results = model.train(data="path/to/file.yaml", epochs=100, imgsz=640)

에포크 수는 모델이 전체 훈련 데이터셋을 몇 번이나 통과하는지를 결정합니다. 각 에포크마다 모델은 예측을 수행하고, 이를 정답 주석과 비교하며, 오차를 계산하고, 성능 향상을 위해 내부 매개변수를 업데이트합니다.

훈련이 정상적으로 시작되면 터미널이나 노트북에 모델 구성, 데이터셋 스캔, 훈련 진행 상황이 표시됩니다. 훈련이 진행됨에 따라 각 에포크마다 손실값과 평가 지표가 업데이트되어 모델이 시간에 따라 어떻게 개선되는지 확인할 수 있습니다.

단계 5: 맞춤형 훈련 모델의 성능 평가

훈련 과정이 완료된 후 모델의 성능 지표를 검토하고 검증할 수 있습니다. Google "runs" 폴더로 이동한 다음 "segment" 폴더로, 마지막으로 "train" 폴더로 이동하면 주요 성과 지표를 표시하는 로그를 확인할 수 있습니다.

Python 작업하는 사용자의 경우, 훈련 결과는 기본적으로 현재 작업 디렉토리 내의 "runs/train/" 디렉토리에 저장됩니다. 각 훈련 실행은 runs/train/exp 또는 runs/train/exp2와 같은 새로운 하위 디렉토리를 생성하며, 해당 실험과 관련된 로그, 저장된 가중치 및 기타 출력을 여기서 확인할 수 있습니다.

CLI 사용하는 경우 "yolo " 명령어를 통해 이러한 결과를 확인하고 관리할 수 있습니다. 이 명령어를 사용하면 훈련 로그 및 실험 세부 정보와 관련된 경로 및 구성을 확인하거나 수정할 수 있습니다.

저장된 출력물 중에는 훈련 과정에서 생성된 그래프도 포함됩니다. 이 그래프들은 모델이 시간에 따라 어떻게 개선되었는지 보여줍니다. 예를 들어, 모델이 학습함에 따라 손실(loss)이 어떻게 감소했는지, 그리고 정밀도(precision), 재현율(recall), 평균 정밀도(mean average precision)와 같은 평가 지표가 에포크(epoch)별로 어떻게 증가했는지 표시합니다.

그림 4. 모델 평가를 위해 분석할 수 있는 그래프 유형 (출처)

이러한 시각적 추세를 통해 모델이 성공적으로 훈련되었는지, 그리고 훈련 시작부터 끝까지 얼마나 개선되었는지 파악할 수 있습니다. 수치적 지표와 그래프를 모두 검토하면 새로운 이미지로 테스트를 진행하기 전에 인스턴스 분할 모델의 성능이 얼마나 우수한지 더 명확하게 파악할 수 있습니다.

6단계: 모델 테스트 및 추론 실행

모델을 검증한 후 마지막 단계는 새로운 이미지로 테스트하는 것입니다. 이 과정을 추론이라고 하며, 간단히 말해 훈련된 모델을 사용하여 본 적이 없는 데이터에 대한 예측을 수행하는 것을 의미합니다.

Python 다음과 Python 추론을 실행할 수 있습니다:

results = model.predict("path/to/image.jpg", save=True, conf=0.3)

이 예시에서 "path/to/image.jpg"는 테스트하려는 이미지의 경로로 대체할 수 있습니다. 

"save=True" 설정은 모델이 예측된 분할 마스크를 원본 이미지에 그려 넣은 새로운 이미지를 생성하고 저장하도록 지시합니다. 

"conf=0.3" 설정은 신뢰도 임계값을 제어합니다. 즉, 모델은 최소 30% 이상 정확하다고 확신하는 예측만 표시합니다. 이 값을 낮추면 더 많은 탐지 결과가 표시될 수 있으며, 높이면 모델이 더 선택적으로 작동합니다.

명령어를 실행하면 모델이 runs 디렉터리 내에 새 폴더를 생성하여 출력 이미지를 저장합니다. 저장된 이미지를 열어 시각적으로 세그멘테이션 마스크가 객체 경계를 얼마나 잘 따르는지, 그리고 겹치는 객체들이 올바르게 분리되었는지 확인할 수 있습니다.

다양한 이미지, 배경, 조명 조건에서 모델을 테스트하면 훈련 데이터셋 외부에서의 성능을 더 명확히 파악할 수 있습니다. 결과가 일관되고 정확해 보이면 모델을 내보내서 배포할 준비가 된 것입니다.

7단계: 모델 내보내기 및 배포

모델을 테스트하고 성능이 양호함을 확인한 후, 마지막 단계는 모델을 내보내고 배포하는 것입니다. 내보내기는 훈련된 YOLO26 모델을 프로덕션 서버, 에지 디바이스 또는 모바일 애플리케이션과 같은 다양한 환경에서 실행할 수 있는 형식으로 변환합니다.

Ultralytics 다양한 내보내기 형식을Ultralytics 배포 환경에 가장 적합한 형식을 선택할 수 있습니다. 예를 들어, 플랫폼 간 광범위한 호환성을 ONNX 내보내거나, NVIDIA 최적화된 GPU TensorRT 내보내거나, Intel 효율적인 CPU 배포를 OpenVINO 내보낼 수 있습니다. 이러한 통합을 통해 훈련 환경 외부에서 모델을 더 쉽게 실행하고 강력한 실시간 성능을 얻을 수 있습니다.

Python 모델을 내보내려면 다음 명령어를 Python :

model.export(format="onnx")

이 명령어는 훈련된 모델을 ONNX 변환합니다. 배포 요구 사항에 따라 "onnx"를 다른 지원되는 형식으로 대체할 수 있습니다.

수출된 모델은 웹 서비스, 임베디드 비전 시스템, 로봇 플랫폼 또는 산업용 검사 시스템과 같은 애플리케이션에 통합될 수 있습니다. 이 단계에서 사용자 정의로 훈련된 YOLO26 인스턴스 세그멘테이션 모델은 실험 단계에서 실제 환경으로의 배포로 전환될 수 있습니다.

주요 내용

예시 분할을 위한 Ultralytics 맞춤형 훈련은 특정 사용 사례에 완벽히 부합하는 모델 구축의 유연성을 제공합니다. 명확한 데이터셋 준비, YAML 파일 설정, 사전 훈련된 분할 가중치로 훈련 수행, 결과 검토를 통해 모델이 각 객체를 픽셀 단위로 정확히 윤곽을 그릴 수 있도록 학습시킬 수 있습니다. 테스트 및 내보내기를 거친 YOLO26 모델은 개발 단계에서 다중 스케일의 실제 적용 환경으로 전환될 수 있습니다.

우리 커뮤니티에 가입하고 GitHub 저장소를 살펴보며 AI에 대해 더 알아보세요. 자신만의 비전 AI 프로젝트를 구축하려는 경우, 저희 라이선스 옵션을 확인해 보세요. 솔루션 페이지를 방문하여 의료 분야의 AI소매업의 비전 AI와 같은 응용 분야에 대해 더 알아보세요.

함께 미래의 AI를 만들어 갑시다!

미래의 머신러닝 여정을 시작하세요

무료로 시작하기