객체 탐지(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]