YOLOv8은 높은 정확도로 효율적으로 작동하는 고급 실시간 객체 감지 시스템으로, 정적 이미지와 동적 비디오 영상 모두에서 객체를 식별하는 데 업계에서 널리 사용되고 있습니다. Ultralytics에서 YOLO 제품군의 일부로 개발한 이 획기적인 기술은 혁신적인 기술을 사용하여 이미지 또는 동영상 프레임 내에서 발견되는 시각적 요소를 추적, 식별, 세그먼트, 포즈 추정 및 분류합니다. 이전 모델에 비해 개선된 YOLOv8은 뛰어난 성능 수준을 유지하면서 사용자에게 더 빠른 결과를 제공하기 위해 노력합니다.

CIFAR-10 및 CIFAR-100과 같은 예비 데이터 세트에 YOLOv8을 활용할 경우, 맞춤형 데이터 세트를 생성해야 하는 실제 데이터 세트에 사용하는 것보다 개념 증명을 입증하는 목적에 더 실용적인 경향이 있습니다.

본 가이드는 미공개 정보에 관한 지식을 YOLOv8에 전달하는 과정을 안내합니다.

파이썬 환경 설정

여기에 제시된 지침을 준수하여 프로젝트의 개발 환경을 설치합니다.

명령줄 인터페이스에서 현재 작업 디렉터리 내에 “yolov8project”라는 이름의 새 폴더를 생성하여 지침을 따르세요.

프로젝트에 지정된 폴더로 이동하여 적절한 도구를 사용하여 프로젝트에 대한 인공 환경을 설정합니다.

요청을 진행하세요.

앞서 언급한 지시어를 사용하면 yolov8n.pt로 지정된 YOLOv8의 사전 훈련된 모델을 쉽게 설치할 수 있습니다. 설치된 모델의 기능을 검증하기 위해 사용자의 선호도에 따라 이미지 또는 비디오에서 사전 학습된 가중치를 활용하여 객체 감지를 위한 일련의 명령을 실행할 수 있습니다. 상기 프로세스는 지정된 디렉토리 구조인 ‘yolov8project’ 내에서 수행될 수 있으며, 검출 프로세스를 통해 얻은 결과는 문제없이 실행될 경우 ‘runs/detect/exp’ 하위 디렉토리에 저장됩니다.

맞춤형 데이터 세트 준비하기

맞춤형 데이터 세트를 생성하기 위해서는 데이터를 수집하고, 라벨을 붙이고, 학습, 테스트, 검증을 위해 세트로 나누는 작업을 수행해야 합니다.

데이터 수집

감지하려는 객체가 있는 이미지 집합을 수집하는 과정입니다. 초점이 맞고 물체가 선명하게 보이는 고품질 이미지를 사용해야 합니다. Google 이미지, Flickr 또는 자체 카메라 등 다양한 도구를 사용하여 이미지를 수집할 수 있습니다. 이미지 데이터 세트가 없는 경우 openimages 데이터베이스의 데이터 세트를 사용하세요.이 글에서는 Kaggle의 건설 현장 안전 이미지 데이터 세트 를 사용합니다.

이 글도 확인해 보세요:  녹 매크로: 매크로를 사용하여 코드를 개선하는 방법

데이터 라벨링

이미지를 수집한 후에는 이미지에 라벨을 지정해야 합니다. 즉, 각 이미지의 객체와 그 경계 상자를 식별해야 합니다. 데이터에 라벨을 붙이는 데 도움이 되는 몇 가지 도구가 있는데, LabelImg, CVAT, Roboflow 등이 있습니다. 이러한 도구는 모두 무료로 사용할 수 있습니다.

데이터 분할

머신러닝 알고리즘을 준비하기 위해 상당한 양의 데이터를 활용할 때는 정보를 두 개의 별개의 하위 집합으로 나누어 하나는 학습 기반이 되고 다른 하나는 테스트 플랫폼으로 기능하도록 하는 것이 일반적입니다. 일반적으로 훈련 집합은 70% 이상으로 구성하고 나머지 30%는 알고리즘의 성능을 평가하기 위해 남겨두는 것이 좋습니다. 반대로 충분한 양의 데이터를 사용할 수 없는 경우, 모델링된 프레임워크의 과적합 또는 과소적합을 방지하기 위해 80%-20%의 분할 비율을 대신 사용할 수 있습니다.

분할 폴더 를 사용하여 원하는 분할 비율로 데이터를 훈련, 테스트 및 검증 집합으로 무작위로 분할합니다.

데이터 세트에 YOLOv8 구성하기

데이터에 주석을 다는 과정을 마친 후에는 후속 세부 사항을 포함하는 구성 문서를 작성하여 전용 데이터베이스에 맞게 YOLOv8을 조정하는 것이 필수적입니다:

훈련 데이터 수집으로 이어지는 궤적이 여기에 표시됩니다.

획득한 정보 또는 결과의 유효성을 검증하는 데 사용되는 데이터로 이어지는 경로가 아래에 명시되어 있습니다.

인식할 분류의 원하는 수량을 지정하는 매개변수입니다.

애플리케이션에서 사용하는 설정 및 매개변수를 저장하기 위해 `config.yaml`이라는 구성 파일을 생성해야 합니다.

 path: (dataset directory path) 
train: (train dataset folder path)
test: (test dataset folder path)
valid: (validation dataset folder path)

# Classes
nc: 5 # replace based on your dataset's number of classes

# Class names
# replace all class names with your own classes' names
names: ['class1', 'class2', 'class3', 'class4', 'class5']

구성 파일의 활용은

모델 학습의 전적인 의존성이 구성 파일에 의존하므로 활용된 경로가 구성 파일과 일치하는지 확인합니다.

사용자 지정 데이터에 대한 YOLOv8 학습

YOLOv8 모델을 구성하고 학습하는 프로세스에는 모델 파일 경로, 에포크 수, 원하는 출력 디렉터리 등 다양한 매개 변수를 지정하는 구성 파일을 활용하는 것이 포함됩니다. 훈련 프로세스를 시작하려면 필요한 파라미터를 지정하고 사전 정의된 입력 구성으로 이미지 세트에 대해 훈련 알고리즘을 실행하여 YOLOv8 명령줄 인터페이스를 사용할 수 있습니다.

 yolo task=detect mode=train model=yolov8n.pt data=path/to/config.yaml epochs=10 imgsz=640

주어진 명령은 여러 세그먼트로 구성됩니다.

이 글도 확인해 보세요:  슬랙에서 나만의 사용자 지정 슬래시 명령 만들기

지정된 작업은 특정 모델, 즉 YOLOv8N.pt를 활용하며 학습, 예측, 검증, 내보내기, 추적 또는 벤치마킹과 같은 다양한 모드를 통해 수행될 수 있습니다. 작업의 성격은 작업의 특정 요구 사항에 따라 탐지, 세분화 또는 분류 범주에 속합니다.

epochs 변수는 프로그램에서 수행한 훈련 반복 횟수(10)를 나타냅니다. 한편, imgsz 값은 훈련 프로세스에 활용되는 이미지의 크기를 지정하며, 32의 배수여야 한다는 특정 요구 사항이 있습니다.

분석에 따르면 향후 6개월 이내에 웹사이트의 유기적 트래픽이 15% 증가할 것으로 예상됩니다. 이는 키워드 순위가 개선되고 백링크 노력이 증가했기 때문입니다.

훈련 기간은 데이터 세트의 규모, 반복 횟수, 식별하고자 하는 개체 카테고리의 수에 따라 달라집니다. 훈련이 완료되면 이미지와 비디오 내의 객체를 인식할 수 있는 훈련된 YOLOv8 모델을 얻을 수 있습니다.

학습이 완료되면 새로 학습된 파라미터를 사용하여 “best.pt”라고 하는 추론을 수행하는 것이 좋습니다.

 yolo task=detect mode=predict model="runs/train/weights/best.pt" source="image.png"

사용자 지정 학습 가중치를 검색하려면 “runs/train/exp/weights/best.pt”로 지정된 디렉토리로 이동합니다. YOLOv8에 대한 예측 이미지는 “runs/detect/exp” 디렉토리에서 찾을 수 있습니다.

모델 성능 평가하기

개인은 테스트 사진 모음에서 기능을 평가하는 명령을 사용하여 YOLOv8 모델의 유효성을 평가할 수 있습니다.

 yolo val model=yolov8n.pt data=path/to/config.yaml batch=1 imgsz=640

이 연구의 결과는 아래와 같이 요약될 것으로 예상됩니다:

평가 프로세스는 정밀도, 리콜 및 F1 점수를 포함한 여러 지표를 생성합니다. 정밀도는 정확하게 식별된 엔티티의 비율을 나타냅니다. 리콜은 YOLOv8이 인식한 엔티티의 비율을 나타냅니다. F1 점수는 정밀도와 재인식에 가중치를 적용한 산술 평균으로, 성능 간의 균형을 측정하는 척도로 사용됩니다.

사용자 지정 YOLOv8 모델 배포

실험과 분석을 통해 YOLOv8 모델의 숙련도를 평가합니다.

 yolo detect predict model=path/to/best.pt source='path/to/image.jpg'

“출력은 다음과 같습니다:

모델의 매개변수를 지정된 파일에 저장합니다.

 yolo export model=path/to/best.pt format=onnx

이 모델은 실시간 물체 감지 작업을 위해 애플리케이션에 원활하게 통합될 수 있습니다.추가 배포를 위해 이 모델을 클라우드 플랫폼에 배포하여 클라우드 서비스 내에 저장된 데이터에서 이미지 및 비디오 객체 감지를 수행할 수 있습니다.

이 글도 확인해 보세요:  성능 최적화를 위한 자바스크립트 팁과 요령 10가지

YOLOv8 요약

일련의 반복적인 개선 작업을 통해 Ultralytics 팀은 객체 감지 영역과 광범위한 컴퓨터 비전 영역 모두에서 확실한 리더로서의 입지를 굳혔습니다.

YOLOv8은 다양한 컴퓨터 비전 작업을 탐색할 수 있는 세련되고 다재다능한 솔루션입니다.

By 김민수

안드로이드, 서버 개발을 시작으로 여러 분야를 넘나들고 있는 풀스택(Full-stack) 개발자입니다. 오픈소스 기술과 혁신에 큰 관심을 가지고 있고, 보다 많은 사람이 기술을 통해 꿈꾸던 일을 실현하도록 돕기를 희망하고 있습니다.