머신러닝 20일차

ParkJinYoung·2022년 11월 14일
0

YOLO모델 : One-stage detector

객체 탐지(Object Detection)
roboflow에서 이미지 데이터 라벨링

# roboflow 라벨링 데이터 가져오기
!curl -L "https://app.roboflow.com/ds/FBf4zUhJC8?key=kNCETrugfA" > roboflow.zip; unzip roboflow.zip; rm roboflow.zip

# Yolo v5 사용에 필요한 파일 가져오기
# github에 있는 파일 다운로드
!git clone https://github.com/ultralytics/yolov5

# 파일 / 폴더 정리하기
# pwd (print working directory)
%pwd

# mkdir (make directory)
# 폴더만들기
%mkdir dataset

# mv (move)
# 데이터셋폴더에 데이터들 넣기 , 개수제한없지만 마지막에 옮길 장소적어야한다.
# %mv 옮길대상1 옮길대상2 옮길대상3 옮길장소
%mv ./README.dataset.txt ./README.roboflow.txt ./data.yaml train test valid /content/dataset

# 파일의 모든 경로가 담긴 train.txt, val.txt 파일만들기
# 모든 파일의 결로 가져오기
from glob import glob

train_img_list = glob('/content/dataset/train/images/*.jpg')
train_img_list

test_img_list = glob('/content/dataset/test/images/*.jpg')
val_img_list = glob('/content/dataset/valid/images/*.jpg')

# 이미지 경로들을 하나의 파일에 담아줌
# train.txt, val.txt
# w :write(쓰기)
with open('/content/dataset/train.txt','w') as f:
  f.write('\n'.join(train_img_list) + '\n')

with open('/content/dataset/val.txt','w') as f:
  f.write('\n'.join(val_img_list) + '\n')
  
# data.yaml파일 수정하기
import yaml
with open('/content/dataset/data.yaml','r') as f:
  data = yaml.safe_load(f)

print(data)

data['train'] = '/content/dataset/train.txt'
data['val'] = '/content/dataset/val.txt'

# data를 yaml파일에 덮어쓰기
with open('/content/dataset/data.yaml','w') as f:
  yaml.dump(data,f)
  
with open('/content/dataset/val.txt','w') as f:
  f.write('\n'.join(val_img_list) + '\n')
  
# GPU 환경설정 => Cuda, cudnn => 코랩에서는 생략
# YOLO v5 환경설정 => 관련 라이브러리 설치
%pwd

# cd(change directory)
%cd yolov5

!pip install -r requirements.txt

#--img 416 입력데이터 크기 ,batch 16 한번에 학습시킬 이미지수 ,epochs 50 학습수
#--data /content/dataset/data.yaml 학습할 데이터
#--cfg ./models/yolov5s.yaml yolo모델
#--name cat_dog_yolov5s_results 결과값 저장 폴더 이름

!python train.py --img 416 --batch 16 --epochs 50 --data /content/dataset/data.yaml --cfg ./models/yolov5s.yaml --name cat_dog_yolov5s_results

# detect =predict
# 1. detect.py
# 2. 학습후 결과로 나온 가중치 파일(pt)
# 3. 사용할 파일

from IPython.display import Image
Image(test_img_list[3])
test_img=test_img_list[3]

%pwd
#--weights 학습하고난 가중치, --img 입력한 이미지 크기, --conf 검출률 0.5 이상나온것들만 보여주세요, --source

rs=!python detect.py --weights /content/yolov5/runs/train/cat_dog_yolov5s_results/weights/best.pt --img 416 --conf 0.5 --source "{test_img}"

xy = rs[5]
class_conf = rs[6]
profile
꾸준히

0개의 댓글