Skip to main content

Windows에서의 YOLOv5 객체 검출(단계별 튜토리얼)

이번 튜토리얼에서는 PyTorch GPU를 지원하는 Windows에서 YOLOv5를 설치하고 실행하는 과정을 안내합니다. 팔로우하기 쉬운 비디오와 Google Collab이 포함되어 있습니다.
Created on April 21|Last edited on April 21
이는 여기에서 볼 수 있는 영어 기사를 번역한 것이다.



이 보고서에서는 Windows 머신에 YOLOv5를 도입하여 실행하는 프로세스와 독자적인 경계 상자를 생성하는 프로세스에 대해 단계별로 설명합니다. 원하시면Colab로 바로 넘어가셔도 됩니다!
기본적으로 자신의 Windows 장치에 객체 검출을 위한 YOLO 설치 및 실행 방법을 알고 싶으시면 계속 읽어보십시오. 또한 여러분 손으로 직접 조작하는 기능을 확인하고 싶으시다면 Colab으로 이동합니다.

섹션


YOLO에 대해서 언급된 내용을 보시고 이 글을 일고 고 계시거나 경계 상자 한두 개를 직접 보시고 난 후 흥미로워 보였을 수도 있습니다 (이렇게 해서 제가 시작하게 된 것입니다). 먼저 저희가 가지고 있는 것을 간략히 살펴보겠습니다.
코드 및 지침으로 바로 이동하려면 여기를 클릭하십시오.

YOLO란?

YOLO는 You Only Look Once(여러분이 단지 한번만 보다)의 약자로 단일 나선형 네트워크를 사용하는 매우 빠른 객체 감지 프레임워크입니다. YOLO는 픽셀 단위로 이동하는 것이 아니라 전체 이미지를 한 번에 감지하기 때문에 다른 객체 감지 시스템보다 더 빠른 경우가 많습니다.
YOLO는 이미지를 그리드로 분할한 다음 그리드의 각 섹션이 분류(classified)되고 현지화(localized)됩니다 (즉, 객체와 구조가 설정됨). 그런 다음 경계 상자를 배치할 위치를 예측합니다. 이러한 경계 상자는 분류 기반 알고리즘이 아닌 회귀 기반 알고리즘을 사용하여 예측됩니다.
일반적으로 분류 기반 알고리즘은 두 단계로 완료됩니다. 먼저 관심 영역(ROI, Region Of Interest)을 선택한 다음, 객체를 감지하도록 선택된 영역에 나선형 신경망(CNN, Convolutional Neural Network)을 적용합니다.
YOLO의 회귀 알고리즘은 전체 이미지에 대한 경계 상자를 한 번에 예측하므로 속도가 획기적으로 빨라지고 부팅하기에 적합한 이름을 얻을 수 있습니다.
자, 이제 그 문제를 해결했으니, 시작해 볼까요?

셋업하기

다음의 프로그램들을 설치해야 합니다.
  • Yolov5 Repository
  • Python 3.8 (혹은 보다 최신 버전)
  • PyTorch
  • CUDA
그러나 걱정하지 마십시오. 위의 각 프로그램들의 설명이 곧 있을 것입니다.

YOLOv5 설치

먼저 YOLOv5를 설치합니다. 여기 GitHub 저장소에서 얻을 수 있습니다.
파일을 가져오려면:

파일을 다운로드한 후 보관하려는 위치로 압축을 풀고 계속 진행하십시오. 잠시 후에 YOLO로 다시 돌아오겠습니다.

Python 설치

다음은 Python이 필요합니다. 여기에서 최신 버전을 다운로드하는 것부터 시작하겠습니다.
이전 버전을 설치한 경우 "Add Python x.x to PATH"를 선택 해제한 상태로 둡니다. 잠시 후 수동으로 문제를 해결할 것입니다.

이전 버전을 설치한 경우 "Add Python x.x to PATH"를 선택 해제한 상태로 둡니다. 잠시 후 수동으로 문제를 해결할 것입니다.

3.8도 작동은 하겠지만 3.9에서 실행하도록 하겠습니다. 그러면 3.8 이전 버전에서 전환하기 위해 따라야 하는 별도의 프로세스가 있을 수 있습니다.
3.8도 작동은 하겠지만 3.9에서 실행하도록 하겠습니다. 그러면 3.8 이전 버전에서 전환하기 위해 따라야 하는 별도의 프로세스가 있을 수 있습니다.

콘솔이 액세스하는 Python 버전은 무엇입니까?

가장 쉬운 방법은 Windows 탐색기의 Python 디렉터리로 이동하여 주소 표시줄에 cmd를 입력하는 것입니다.

그런 다음 Enter를 클릭하고 다음과 같이 입력합니다:
python
사용 중인 버전 번호가 표시됩니다.

이전 버전의 Python을 실행 중인 경우 설정에서 환경 변수를 편집하십시오.

Path 변수를 편집하여 Python의 최신 버전을 참조합니다.

이제 이전과 같이 콘솔에서 설정을 다시 확인한 후 다음으로 이동합니다.

CUDA 설치

CUDA 설치 시간
CUDA는 NVIDIA의 GPU용 병렬 컴퓨팅 플랫폼입니다. 기본적으로 이 기능을 사용하면 컴퓨터가 병렬로 계산의 일부를 실행할 수 있습니다 (다양한 속도들이 여기서 비롯됩니다). 이 기능이 없었다면 실시간 경계 상자에 대해 전혀 언급하지 않았을 것입니다.
NVIDIAs CUDA 툴킷 페이지로 이동하여 컴퓨터에 적용할 옵션을 선택합니다. 예를 들어, 저는 다음과 같습니다.

다운로드 후 파일을 실행하고 설치합니다.


재부팅해야 할 수 있습니다. 그런 다음 PyTorch를 설치할 것입니다.

PyTorch 설치

PyTorch는 모델 정의, 추론 실행 및 트레이닝 수행에 가장 인기 있는 머신 러닝 프레임워크입니다.
'가장 인기 있다'는 말은 진심입니다.
대부분의 머신 러닝 프레임워크와 마찬가지로 PyTorch는 GPU에서 계산과 추론을 실행하는데, CPU에서 실행하는 것보다 훨씬 빠릅니다. 하지만 이를 올바르게 설정해야 합니다.

Python 모듈로서PyTorch 설치

PyTorch 시작 페이지에서 사용자에게 적용되는 옵션을 선택합니다.
예를 들어, 저는 다음과 같이 합니다:

이제 여러분에게 주어진 코드를 복사합니다.

Windows 탐색기에서 Python Scripts 폴더를 엽니다.

주소 표시줄에 cmd를 입력합니다:

그러면 PyTorch에서 코드를 붙여 넣을 수 있는 폴더에 콘솔이 열립니다.
저의 코드(예:)는 다음과 같습니다:
pip3 install torch==1.9.1+cu111 torchvision==0.10.1+cu111 torchaudio===0.9.1 -f https://download.pytorch.org/whl/torch_stable.html
내 콘솔에는 몇 가지 "이미 설치된" 알림과 몇 가지 오류가 표시되지만, 처음 설치하는 경우에는 알림이 표시되지 않으므로 무시해도 됩니다.

이제 YOLOv5 요구 사항에 있는 일부 모듈을 추가로 설치해야 합니다.
이러한 파일을 설치하려면 압축 해제된 파일이 들어 있는 YOLOv5 폴더를 열고 주소 표시줄에 cmd를 다시 입력한 후 Enter를 클릭합니다.

이제 콘솔에서 다음을 실행하여 필요한 모듈을 설치합니다.
pip install -r requirements.txt

참고: 이 단계에서 Visual Studio를 설치하라는 빨간색 큰 오류 메시지가 나타날 수 있습니다. 이 메시지가 뜨면 여기에서 다운로드 하실 수 있습니다. (이 오류는 PyCOTOools와 관련이 있습니다.)
Visual Studio를 설치한 후 콘솔을 통해 YOLO 폴더에 다음과 함께PyCOCOTools를 설치합니다.
이제 위에서 언급한 요구 사항을 다음과 같이 실행합니다.
pip install -r requirements.txt
그냥 적당하게

여러분의 웹캠에서 YOLOv5로 경계 상자 생성하기

이제 웹캠을 사용하여 작업을 시작하고 경계 상자를 생성할 차례입니다.
YOLOv5 폴더의 콘솔에 다음 코드를 입력합니다.
python detect.py --source 0

여러 웹캠 또는 이를 스푸핑하는 응용 프로그램을 사용하는 경우 이 번호를 변경해야 할 수 있습니다. 하나만 있는 경우 소스는 예제 코드와 같이 0이 됩니다.
그리고 잠시 후:

중지하려면 열려있는 창 내부를 클릭하시면 됩니다.

이미지에 YOLOv5를 사용하여 경계 상자를 생성하기

기존 이미지에서 객체를 탐지하려면 YOLO 디렉토리 내의 폴더에 이미지를 배치하기만 하면 됩니다.
YOLO 폴더 안에 디렉터리 이름 "이미지"를 생성하였으며, SEO로서 Google 미디어 키트에서 사진을 찍어 다음과 같은 예를 들어 다음과 같습니다.
The Google Cafe
YOLO 콘솔을 다시 열면 다음과 같이 입력합니다.
python detect.py --source images/google.jpg
google.jpg를 사용자 고유의 이미지 이름으로 대체합니다.
실행 후 다음과 같은 결과를 얻을 수 있습니다.

저장된 위치로 이동하고 …


YouTube 비디오에서 YOLOv5로 경계 상자 생성하기

경계 상자를 생성하거나 YouTube 비디오에서 객체를 감지하려고 한다고 가정해보겠습니다.
이를 위해서는 YOLO 디렉토리에 모듈을 몇 개 더 설치해야 합니다.
먼저 실행합니다:
pip install pafy
그리고 나서:
pip install youtube_dl
이러한 모듈을 설치하면 콘솔을 다시 YOLO 폴더로 열고 다음을 입력할 수 있습니다.
python detect.py --source https://youtu.be/jNQXAC9IVRw
YouTube URL을 여러분 자신의 URL로 대체하고자 하실 것입니다. 저는 저의 예로 유튜브에 올라온 첫 번째 비디오를 골랐습니다. 그 결과 다음과 같습니다.


YOLOv5 모델, 크기, 성능

기본적으로 YOLO는 가장 작은 모델을 사용했는데, 이는 처리를 위한 요구 사항이 좀 더 수월하기 때문입니다. 위에서 같이 제가 사용했던 것입니다.
더 많은 처리 능력을 필요로 하고 더 정확한 보다 큰 모형을 사용하려면, 이 모형을 정의하기만 하면 됩니다.
웹캠을 사용한 객체 탐지에 대해 위의 예를 사용하면 기본 코드는 다음과 같습니다.
python detect.py --source 0
코드 끝에 크기를 추가하여 다음과 같은 세 가지 다른 모델 크기를 모두 사용할 수 있습니다.
소형 (디폴트 값)
python detect.py --source 0
중형
python detect.py --source 0 --weights yolov5m.pt
대형
python detect.py --source 0 --weights yolov5l.pt
최대
python detect.py --source 0 --weights yolov5x.pt
항상 파워와 성능의 균형입니다.

YOLOv5 자세한 연습 비디오를 통해 객체를 감지합니다.

동영상에 대한 팔로잉을 원하신다면, W&B의 매우 흥미로운Ivan Goncharov가 위에서 간략히 설명한 내용을 소개합니다.




YOLOv5 실험을 올바르게 최적화하십시오.

ML, CV 또는 객체 탐지를 위해 YOLOv5를 처음 사용하는 경우라도 좋은 습관을 들이고 작업에 적합한 도구를 사용하는 것이 필수적입니다.
여기를 클릭하여 5분 이내에 실험 추적을 위해Weights & Biases를 사용해 보십시오.
다음은 수행할 수 있는 작업의 몇 가지 예입니다.

트레이닝 중에 검증 데이터의 모델 예측을 시각화하려면 경계 상자 디버거를 사용하십시오.




트레이닝 및 검증 메트릭을 기록하고 실험 추적과 쉽게 비교합니다.





W&B 표를 사용하여 모델의 예측 및 데이터 세트를 시각적으로 살펴보십시오.



Weights & Biases를 사용하여 트레이닝 프로세스를 슈퍼차징하는 방법에 대해 자세히 알아보려면 이 보고서를 읽어보시거나 트레이닝 YOLOv5에 대한 다음 비디오를 시청하십시오.



YOLOv5 Colab

여러분은 소프트웨어 설치를 원하지 않을 수도 있고 혹은 바로 설치를 원하실 수도 있습니다.
어느 쪽이든, 여러분을 위해서 Colab이 준비되어 있습니다.
주의할 점은 Colab은 실시간 객체 검출이 용이하지 않기 때문에 웹 카메라 등으로 설정할 수 없다는 것입니다..
그래도, 시작하기에 좋은 곳이죠. :)


결언

여러분께서 이제 막 머신 러닝을 시작하려고 하신다면, YOLO를 가지고 놀아보는 것은 멋진 시작입니다.
또한 이 분야에 경험이 있지만 기술에 컴퓨터 비전을 포함하도록 확장할 수 있다면 이것이 빠른 출발점이었기를 바랍니다.

이미지를 수집하고 레이블을 지정하여 PyTorch에서 YOLOv5 객체 감지 모델을 트레이닝합니다.

다음 단계로 넘어갈 준비가 되셨습니까?
2부에서는 PyTorch에서 YOLOv5 객체 감지 모델을 트레이닝하기 위해 이미지를 수집하고 레이블을 지정하는 방법을 다룹니다.

YOLO에 관심이 있는 분들을 위해 권장되는 읽을거리입니다.



Iterate on AI agents and models faster. Try Weights & Biases today.