코딩일지/TIL: Today I Learned

20221017 TIL

야언 2022. 10. 17. 19:36

오늘의 한 일

  • 사물인식 팀 프로젝트 발제
  • YOLOv5 커스텀 데이터 학습

사물인식 팀 프로젝트 발제

https://github.com/Taeeun99/sparta_PetDictionary_2L3J_project2

내일배움캠프 project 2. PetDictionary


소개

'PetDictionary'은 동물 검색 기능을 제공 하는 서비스입니다.


개발 일정

진행기간 2022년 10월 17일 ~ 2022년 10월 20일


팀 구성 및 작업 분배


API 설계


와이어 프레임

  • home

  • 검색 화면

  • 검색 결과

  • 결과값이 틀릴 시

  • 정확도 비교 그래프


ERD


주요 기능

  • 동물의 종 인식
    • 업로드 된 동물의 종을 판단
  • 사용자 평가를 통해 정확도 데이터 축적
    • 찾는 결과가 맞는지 확인
    • 틀린 값일 시, 사용자가 원하는 답을 적어 활용할 수 있게 만들기

트러블 슈팅


배포


시연

 

 

 

 

기간이 짧은 만큼 S.A는 단순하게 구성했다.

데이터셋 학습이라는 중요한 역할을 맡아서 부담감이 무겁군요..

 

 

 

YOLOv5 데이터셋 학습

 

 

https://public.roboflow.com/object-detection/oxford-pets/1

 

Oxford Pets Object Detection Dataset - by-breed

Download 3680 free images labeled with bounding boxes for object detection.

public.roboflow.com

yolo앱을 통해 동물의 종을 확인할 수 있도록 로보플로우에서 제공하는 Oxford Pets Object Detection Dataset을 이용하기로 했다.

 

구글 colab에서 진행

 

 

yolov5 다운로드

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

cd yolov5 

!pip install -r requirements.txt

 

데이터셋 다운로드

!pip install roboflow

from roboflow import Roboflow
rf = Roboflow(api_key="UfEJK9gLYFFnV2Spo2SK")
project = rf.workspace("brad-dwyer").project("oxford-pets")
dataset = project.version(3).download("yolov5")

oxford-pets 커스텀 데이터셋을 다운받고, 보기 편하게 네이밍해주었다.

 

 

커스텀 데이터셋 학습시키기

 

!python train.py --data "data/custom_dataset.yaml" --cfg yolov5s.yaml --weight "/content/yolov5/yolov5s-cls.pt" --batch-size 24 --epochs 40  # 데이터셋 훈련하기

 

 

--batch 배치 사이즈

--epochs 반복 횟수

--data 커스텀 데이터셋

--cfg cfg 파일 - 모델의 구조 l m s n

--weights pretrained 된 모델 (전이학습)

 

 

data/custom_dataset.yaml

path: /content/yolov5/custom_dataset  #root 디렉토리
train: train/images  # 학습데이터 경로
val: valid/images
test: test/images

nc: 37  # 클래스 수
names:
- cat-Abyssinian
- cat-Bengal
- cat-Birman
- cat-Bombay
- cat-British_Shorthair
- cat-Egyptian_Mau
- cat-Maine_Coon
- cat-Persian
- cat-Ragdoll
- cat-Russian_Blue
- cat-Siamese
- cat-Sphynx
- dog-american_bulldog
- dog-american_pit_bull_terrier
- dog-basset_hound
- dog-beagle
- dog-boxer
- dog-chihuahua
- dog-english_cocker_spaniel
- dog-english_setter
- dog-german_shorthaired
- dog-great_pyrenees
- dog-havanese
- dog-japanese_chin
- dog-keeshond
- dog-leonberger
- dog-miniature_pinscher
- dog-newfoundland
- dog-pomeranian
- dog-pug
- dog-saint_bernard
- dog-samoyed
- dog-scottish_terrier
- dog-shiba_inu
- dog-staffordshire_bull_terrier
- dog-wheaten_terrier
- dog-yorkshire_terrier

 

학습된 모델 검증하기

!python detect.py --weights "/content/yolov5/runs/train/exp3/weights/best.pt" --source "/content/yolov5/custom_dataset/test/images"  # 데이터셋 검증하기

 

 

트레이닝 과정에서 베스트값의 결과인 best.pt를 검증해보고

만족할만큼 성능을 보이면 이 모델을 가져와서 실제 프로젝트에 쓰면 될 것 같다

 

 

 

 

문제점

 

  • 실제로 이 pt 파일을 어떻게 적용시키느냐? 

사실상 yolo에 대해서 제대로 이해한 것이 아니고, 온라인 모델을 불러오는 것만 간신히 하는 정도라서 이 모델을 어떻게 불러와서 실제 프로젝트에 적용시키는지 방법을 모르겠다.. 일단 찾아보는중

 

참조

 

https://github.com/ultralytics/yolov5/issues/5647

 

How to use trained `pt` file for inference with pytorch? · Issue #5647 · ultralytics/yolov5

Search before asking I have searched the YOLOv5 issues and discussions and found no similar questions. Question I trained yolov5s and got model weights. Now I want to use it for inference. I'm ...

github.com