오늘의 한 일
- 사물인식 팀 프로젝트 발제
- 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
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