모델 학습

승준·2023년 4월 28일
0

BoarGuard

목록 보기
3/7
post-thumbnail

Colab 세팅

이번에는 Roboflow 에서 생성한 Yolov5 PyTorch 형식의 데이터 세트를 학습시켜 줄 차례다.
먼저, 내 Google drive에 dataset을 담을 폴더를 생성해 주고 데이터 세트를 업로드 해준다.

그리고 드라이브에서 Google Colaboratory를 새로 만들어서 시작한다.

Colaboratory가 없으면 연결할 앱 더보기를 클릭하고 설치해야 한다.

Colab을 시작했으면 런타임 -> 런타임 유형 변경 -> GPU로 설정해 준다.

1. 구글 드라이브 마운트

나는 데이터 세트를 드라이브에 저장해 줬기 때문에
구글 드라이브에서 작업할 수 있도록 마운트 해줘야 한다.

마운트 이후에 작업경로를 내 드라이브로 변경해 준다.

2. 요구 사항 설치

아래의 코드를 입력해서 Yolov5를 설치하고,
yolov5 폴더로 이동하여 필요한 패키지들을 다운로드 한다.

3. 이미지 경로 지정

이제 내 데이터 세트의 data.yaml 파일에서 경로를 수정해 준다.
파일을 클릭하면 Colab에서 수정이 가능하다.

아래처럼 data.yaml 파일에서 train과 val에 images 폴더의 경로를 새로 작성한다.

4. Yolov5 모델 학습

위에서 설치한 yolov5의 train.py를 사용하여 학습을 진행한다.
각각 인수로 아래와 같이 줬다.

img 크기는 클수록 좋으며 batch는 수가 커질수록 하드웨어에 부담이 간다.
epochs 높을수록 좋지만, 너무 높이면 모델이 과적합되어 이미지 양에 맞는 적절한 값을 줘야한다.
weights로는 처리 속도를 높이기 위해서 작은 모델인 yolov5s를 사용했다.

Yolov5 모델 학습 팁
https://docs.ultralytics.com/yolov5/tutorials/tips_for_best_training_results/

img: 416으로 지정하면 학습에 사용할 이미지의 크기가 416x416 픽셀로 지정된다.
batch: 배치는 한 번에 학습에 사용할 데이터의 개수로 32로 지정하면 한 번에 32개의 데이터를 학습에 사용한다.
epochs: 에폭은 전체 데이터 셋에 대해 한 번 학습을 완료하는 것을 의미한다. 300으로 지정하면 전체 데이터 셋을 300번 학습한다.
weights: yolov5s.pt, yolov5m.pt, yolov5l.pt, yolov5x.pt가 있으며 이 중 yolov5s.pt 모델의 크기가 작고 가벼워서 속도가 빠르고, yolov5x.pt는 크고 무거워서 더 정확한 결과를 제공하지만, 속도가 느리다.
cache: DataLoader가 데이터를 로드한 후 캐시(cache) 파일에 데이터를 저장하고, 이후 학습 시에는 캐시 파일에서 데이터를 불러오게 된다. 이렇게 캐싱을 사용하면 데이터를 매번 로드할 필요 없이 캐시 파일에서 불러오기 때문에 학습 속도가 향상된다.

학습을 완료하면 아래와 같이 runs/train/exp3 경로에 학습된 모델이 저장된 것을 볼 수 있다.
가중치 파일은 runs/train/exp3/weights/ 경로에 best.pt와 last.pt가 있는데
best.pt가 학습된 모델 중 가장 성능이 좋은 모델이다. 이 best.pt를 사용하면 된다.

5. 학습 결과

텐서보드를 사용하지 않아도 runs/train/exp 에서 이미지로 결과를 확인할 수 있다.
아래는 val_batch0_pred.jpg

학습 결과 results.png

이제 이 best.pt 가중치 파일을 이용하여 멧돼지를 검출하면 된다.

다음은 라즈베리파이에서 yolov5의 detect.py를 이용하여 객체 검출을 할 수 있도록,
필요한 패키지들을 설치해 주는 yolov5 환경 세팅을 할 차례다.

profile
student

1개의 댓글

comment-user-thumbnail
2024년 9월 4일

안녕하세요 좋은 정보 감사합니다!! 혹시 best.py 공유 가능할까요..? 영상검출 테스트가 하고 싶어서요

답글 달기