yolov5 데이터형식 맞춰주기
yolo의 데이터형식
- yolo는 데이터 형식이 (x_center, y_center, w,h)로 되어있다.
- 기존에 알고있는 (x_min,y_min,w,h)와 다른 모습인것을 유의합시다.
yolov5의 폴더 구조
- yolov5에 custom 데이터를 이용하기위해서는 폴더 구조를 맞춰줘야 한다.
- 폴더구조
- data
- images
- train - .jpg파일들이들어간다.
- val
- labels
- train - .txt파일이 들어간다.
- val
- images
- data
- 폴더가 images와 labels로 나뉜것을 볼 수 있다.
- images와 labels는 서로 같은 이름의
파일명
을 가지며 서로 쌍이된다.- images/train/image1.jpg
- labels/train/image1.txt
- labels폴더에는 쌍이되는 이미지의
카테고리 아이디 ,bbox(x_center,y_center,w,h)
가 저장해야한다.- 들어가는 좌표는 normalize되어야한다.
- ex) 이미지 크기512기준일때, x_center가 30일때 30/512가 들어가야한다.
- ex) 0 0.1 0.2 0.4 0.2
yolov5의 불러오는 방식
- yolov5는
data/
폴더 내에.yaml
형식으로데이터의 위치
,클래스 갯수
,클래스 라벨
을 지정해줘야한다. -
# 예시 train: /input/data/images/train # train폴더 위치 val: /input/data/images/val # validation폴더 위치 nc: 11 # 클래스갯수 names: ["UNKNOWN","General trash","Paper","Paper pack","Metal","Glass", "Plastic","Styrofoam","Plastic bag","Battery","Clothing"] # 클래스 라벨들
pretrain 가져오기
bash weights/download_weights.sh
실행
학습진행
- train.py파일 실행
python train.py --img-size 512 --batch-size 32 --epochs 100 --data bcai.yaml --weights yolov5x.pt
- 이미지크기 512, 배치 32, epoch 100
- bcai.yaml(위에서 만든 yaml, data폴더에 넣으면 알아서 인식)
- weight는 원하는 pretrain모델 가져온다.
학습결과 확인
- detect.py실행
python detect.py --img-size 512 --source /opt/ml/input/data/images/test --weights runs/train/exp/weights/best.pt --save-txt --save-conf
- 이미지 사이즈 512
- source는 test이미지 불러오기
- weight는 학습한 모델 경로
- save-txt는 학습결과를 txt로 출력할지
- save-conf는 bbox내의 물체분류한 confidence로 같이 출력할지 여부
참고
- https://github.com/ultralytics/yolov5