본문 바로가기

카테고리 없음

Yolov5 사용법 정리 (데스크탑, Colab) (2)

개요

- 목적 : 처음으로 학습을 통해 뭔가 해본 결과를 정리하기 위해서 / 다음에 다시 할 때 참고할 수 있도록 정리하기 위해서
- 내용 1. 데스크탑에서 yolov5 데이터 학습하는 방법 정리
- 내용 2. 구글 Colab 활용하여 yolov5 데이터 학습하는 방법 정리

설명 순서

1) 데이터셋 만들기

https://undetectable.tistory.com/4

 

Yolov5 사용법 정리 (데스크탑, Colab) (1)

개요 - 목적 : 처음으로 학습을 통해 뭔가 해본 결과를 정리하기 위해서 / 다음에 다시 할 때 참고할 수 있도록 정리하기 위해서 - 내용 1. 데스크탑에서 yolov5 데이터 학습하는 방법 정리 - 내용 2.

undetectable.tistory.com

2) 학습 시키기
3) 학습된 모델을 활용하여 Object Detection 해보기

 

학습시키기 - 데스크탑(Windows 10, Pycharm)

- 새로운 프로젝트를 만들어준다

- 터미널로 가서 아래의 코드를 입력한다

git clone https://github.com/ultralytics/yolov5

- yolov5 라는 폴더가 생겨 있다. 그 안에 data_learning 이라는 폴더를 만들어주자

그 안에 Robo Flow 에서 받았던 데이터셋을 넣어준다 

- 폴더 안에 들어가면 아래와 같이 되어 있어야 한다

 

- data.yaml 을 편집해주자

안 열리는 사람들은 메모장을 이용해서 열어주면 된다.

 

- 아래와 같이 경로를 변경해주면 된다. (이 블로그를 보고 그대로 따라했다면 맨 위 두 줄을 아래 적힌 그대로 바꿔주면 된다.)

train: ..yolov5/data_learning/train/images
val: ..yolov5/data_learning/valid/images

- 이제 터미널에서 아래 코드를 입력한다

cd yolov5
python train.py --data .\data_learning\data.yaml --cfg yolov5s.yaml --weights yolov5s.pt --batch-size 16

--data : 아까 수정한 yaml 파일 경로

--cfg : yolov5s 를 사용했다. 마지막 소문자 s 대신에 m, l, x 도 사용 가능

(s --> m --> l --> x 순으로 성능이 좋아진다. 대신 학습시간도 길어진다.)

--weights : cfg 와 동일하기 yolov5s.pt 를 사용했다. 

--batch-size : 16 을 사용했는데 32, 64 도 가능하다.

 

- 학습이 돌아가는 사진

데스크탑에선 너무 오래걸려 취소했다

- 학습 완료 후 데이터가 담긴 파일

- 이걸 바탕으로 인식을 해봐야 한다

터미널로 가서 아래 코드를 입력한다.

"./best220924.pt" 는 아까 본 best.pt 를 이름을 바꾼 것이다. best220924.pt 는 yolov5 폴더에 들어 있어야 한다

python detect.py --source 0 --weights ./best220924.pt

--source 0 이라고 하면 webcam 을 쓰겠다는 뜻이고,

저 자리에 ~~.jpg, ~~.png 등 yolov5 폴더 안에 있는 사진의 파일명을 넣으면 된다.

동영상도 불러올 수 있다고 한다.(안 해봄)

--weights 는 아까 가져온 것 쓰면 된다.

- 터미널이 아니라 자체적으로 모델을 활용한 코드를 짜고 싶을 경우

~~.pt 파일을 활용해서 아래와 같이 코드를 짤 수 있다. "torch.hub.load" 를 하면 한 줄로 모델을 불러 올 수 있다.

"results = model(img)" 이런 식으로 인식 가능하다

사진 속 좌표는 results.xyxy 에서 볼 수 있다.

import torch
import cv2

model = torch.hub.load('yolov5','custom', path='yolov5/best220924.pt', force_reload=True, source='local')

# Image
img = '사진-9.JPG'
im = cv2.imread(img)
print(im.shape)
# Inference
results = model(img)
if not len(results.xyxy[0]) == 0:
    print(float(results.xyxy[0][0][0]))
# Results, change the flowing to: results.show()
    results.show()

- 결과 사진은 아래와 같다

 

- 구글을 이용해 학습을 해보는 건 또 다음에 리뷰해야 할 듯