[2023년]

YOLO v8이 출시 되었습니다 !

사용 방법을 간단히 정리하였으니, 같이 봐주시면 감사하겠습니다 :)


YOLO v3가 Pytorch로 만들어진 코드를 Github에서 발견하였다.

 

https://github.com/ultralytics/yolov3

 

GitHub - ultralytics/yolov3: YOLOv3 in PyTorch > ONNX > CoreML > TFLite

YOLOv3 in PyTorch > ONNX > CoreML > TFLite. Contribute to ultralytics/yolov3 development by creating an account on GitHub.

github.com

 

Pytorch로 구현되어 있어 쉽게 custom할 수 있고, 무엇보다 wandb(weights & bias)를 사용할 수 있어서 좋았다.

또한 향상된 YOLO v5 코드도 있어 똑같이 사용이 가능하다.

 

https://wandb.ai/home

 

home

Weights & Biases, developer tools for machine learning

wandb.ai

 

ultralytics 설치 방법

 

1. 설치를 원하는 project 또는 directory로 이동합니다.

$ cd projectCopy Icon

 

2. ultralytics git 을 받아준 후 필요한 pip 파일을 받아줍니다.

$ git clone https://github.com/ultralytics/yolov3
$ cd yolov3
$ pip install -r requirements.txtCopy Icon

 

3. Directory 구성

- data
    - train
        - images
    		- 00001.jpg
        	- 00002.jpg
    	- labels
    		- 00001.txt
        	- 00002.txt
    - valid
        - images
    		- 00001.jpg
        	- 00002.jpg
    	- labels
    		- 00001.txt
        	- 00002.txtCopy Icon

 

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 namesCopy Icon
  • (수정) /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

# 생략Copy Icon
  • (수정) /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   # 세그먼트 복사-붙여넣기(확률)Copy Icon

 

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]Copy Icon

--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-txtCopy Icon

 

'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
욱근욱