[2023년]
YOLO v8이 출시 되었습니다 !
사용 방법을 간단히 정리하였으니, 같이 봐주시면 감사하겠습니다 :)
YOLO v3가 Pytorch로 만들어진 코드를 Github에서 발견하였다.
https://github.com/ultralytics/yolov3
Pytorch로 구현되어 있어 쉽게 custom할 수 있고, 무엇보다 wandb(weights & bias)를 사용할 수 있어서 좋았다.
또한 향상된 YOLO v5 코드도 있어 똑같이 사용이 가능하다.
ultralytics 설치 방법
1. 설치를 원하는 project 또는 directory로 이동합니다.
$ cd project
2. ultralytics git 을 받아준 후 필요한 pip 파일을 받아줍니다.
$ git clone https://github.com/ultralytics/yolov3
$ cd yolov3
$ pip install -r requirements.txt
3. Directory 구성
- data
- train
- images
- 00001.jpg
- 00002.jpg
- labels
- 00001.txt
- 00002.txt
- valid
- images
- 00001.jpg
- 00002.jpg
- labels
- 00001.txt
- 00002.txt
4. cfg 파일 수정
- (생성) /data/project.yaml
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: data # dataset root dir
train: train/images # train images (relative to 'path')
val: valid/images # train images (relative to 'path')
# test: test-dev2017.txt # 20288 of 40670 images, submit to https://competitions.codalab.org/competitions/20794
# Classes
nc: 4 # number of classes
names: ['human', 'bike', 'car', 'dog'] # class names
- (수정) /model/yolov3.yaml - nc만 수정해줍니다.
# YOLOv3 🚀 by Ultralytics, GPL-3.0 license
# Parameters
nc: 4 # number of classes
depth_multiple: 1.0 # model depth multiple
width_multiple: 1.0 # layer channel multiple
anchors:
- [10,13, 16,30, 33,23] # P3/8
- [30,61, 62,45, 59,119] # P4/16
- [116,90, 156,198, 373,326] # P5/32
# 생략
- (수정) /data/hyps/hyp.srcatch.yaml - hyperparameter
lr0 : 0.01 # 초기 학습률(SGD=1E-2, Adam=1E-3)
lrf : 0.2 # 최종 OneCycleLR 학습률(lr0 * lrf)
모멘텀 : 0.937 # SGD 모멘텀/아담 베타1
weight_decay : 0.0005 # 최적화 프로그램 가중치 감소 5e-4
warmup_epochs : 3.0 # 워밍업 에포크(소수 확인)
warmup_momentum : 0.8 # 워밍업 초기 모멘텀
warmup_bias_lr : 0.1 # 워밍업 초기 바이어스 lr
box : 0.05 # box loss gain
cls : 0.5 # cls 손실 이득
cls_pw : 1.0 # cls BCEL 손실 positive_weight
obj : 1.0 # obj 손실 이득(픽셀로 스케일)
obj_pw : 1.0 # obj BCELs positive_weight
iou_t : 0.20 # IoU 교육 임계값
anchor_t : 4.0 # 앵커 다중 임계값
# 앵커: 3 # 출력 레이어당 앵커(무시하려면 0)
fl_gamma : 0.0 # 초점 손실 감마(EffectiveDet 기본 감마=1.5)
hsv_h : 0.015 # 이미지 HSV-색조 확대(분수)
hsv_s : 0.7 # 이미지 HSV-채도 증가(분수)
hsv_v : 0.4 # 이미지 HSV-값 증가(분수)
도 : 0.0 # 이미지 회전(+/- deg)
번역 : 0.1 # 이미지 번역(+/- 분수)
scale : 0.5 # 이미지 스케일(+/- 게인)
전단기 : 0.0 # 이미지 전단기(+/- deg)
원근감 : 0.0 # 이미지 원근감(+/- 분수), 범위 0-0.001
flipud : 0.0 # 이미지를 상하로 뒤집기(확률)
fliplr : 0.5 # 이미지 좌우 반전(확률)
모자이크 : 1.0 # 이미지 모자이크 (확률)
mixup : 0.0 # 이미지 믹싱(확률)
copy_paste : 0.0 # 세그먼트 복사-붙여넣기(확률)
5. Train & Test
- Train
python train.py --img 416 --batch 64 --epochs 500 --data /data/project.yaml --cfg /model/yolov3.yaml --hyp /data/hyps/hyp.scratch.yaml --weights yolov3.pt --device 0,1 --name [project name] --project [wandb project name]
--batch : batch size
--epochs : epoch num
--data : 수정한 yaml 경로
--cfg : 수정한 yaml 경로
--weights : 불러올 weight
--name : 학습된 정보를 runs 폴더 안에 저장할 이름
--project : wandb에 저장할 프로젝트 명
- Test
python detect.py --source /data/images/000001.jpg --weights 'runs/train/exp/weights/best.pt' --img 416 --conf 0.5 --save-txt
'ML & DL > Practice' 카테고리의 다른 글
YOLO v8 사용하기 (ultralytics) (0) | 2023.05.20 |
---|---|
[MMDetection 2.0] 정리 (0) | 2023.05.16 |
[MMDetection 3.0] 정리 (0) | 2023.05.12 |
[Ubuntu] YOLO Darknet(AlexeyAB) 학습 환경 구축 (0) | 2022.01.07 |
mrcnn(Mask-RCNN) 무작정 따라하기 (0) | 2021.11.07 |