본문 바로가기

AI

Yolov5, Yolov8 공부

728x90
반응형

# Yolov10 Custome Data 실습 

https://minyeong3.tistory.com/101

 

 

Yolov8 학습 과정
Data Preparation (이미지 데이터, 좌표 있는 정답 데이터 필요)
Loading Date Make YAML file Install Yolov8 Train model Prediction

valid 파일에는 train 데이터의 일부를 랜덤하게 split 해서 학습시킴
 


Yaml 파일
Yolov8 학습과 검증에 필요한 train, valid 데이터의 디렉토리 경로, Detection 하고싶은 클래스 개수, 해당 클래스의 (문자열) 이름 저장

  1. train : 학습 데이터 폴더 경로 (이미지)
  2. val : 검증 데이터 폴더 경로 (이미지)
  3. nc : 학습할 클래스 갯수
  4. names : 학습할 클래스 이름들
yaml_data = {
              "names": classes,
              "nc": len(classes),
              "path": "/content/drive/MyDrive/data/yolo",
              "train": "train",
              "val": "valid",
              "test": "test"
            }

 
데이터셋
이미지데이터, 텍스트 라벨 파일

(공모전에서는 train에 label을 함께 저장함, val 폴더는 yolo/train 에 한번 더 저장)
 
weights 폴더 - Pre-Trained 모델 파일 (학습 파라미터 weight, bias가 잘 초기화 된 파일) 저장
▷ 그 중 가장 학습이 잘 된 best.pt 사용
best.pt (가장 성능 좋은 pt 파일)
last.pt (최신 weight 파일)

 


Yolov5 구조
- Head, Backbone

Backbone

이미지로부터 Feature map을 추출하는 부분, CSP-Darknet를 사용 (YOLO v3의 Backbone은 Darknet53으로 CSP 적용X)

 YOLO v5의 backbone 종류가 4가지임. 제일 작고 가벼운 yolo v5-s부터 m, l, x 까지 포함해서 총 4가지 버전

 

Backbone 종류

  • yolo v5는 s, m, l, x의 4가지 버전이 있음
  • s가 가장 가벼운 모델
  • x가 가장 무거운 모델
  • s가 성능이 제일 낮지만 FPS가 가장 높고, x가 성능이 제일 높지만 FPS는 가장 낮음


Head

추출된 Feature map을 바탕으로 물체의 위치를 찾는 부분

Anchor Box(Default Box)를 처음에 설정하고 이를 이용하여 최종적인 Bounding Box를 생성

 

Yolov5과 Yolov8의 차이점

  • C3 모듈을 C2f로 교체
  • Backbone에서 첫번째 6x6을 3x3 Conv 로 교체
  • 두개 convolution layer 삭제
  • ConvBottlenaeck에서 첫번째 1x1 Conv를 3x3 Conv로 교체
  • 분리된 head 사용
728x90
반응형