-
CS : YOLO v5Computer Science/ML, DL 2021. 4. 9. 17:18728x90
YOLO : You Only Look Once
1. 이미지 전체를 단 한번만 본다.
- YOLO의 등장 이전의 모델 중 대표적으로 R-CNN 모델의 경우, 이미지에서 일정한 규칙으로 이미지를 여러장 쪼개서 CNN 모델을 통과시킨다.
- 때문에, 한 장의 이미지에서 객체 탐지를 수행해도 실제로는 수 천장의 이미지를 모델에 통과시킨다.
- 반면, YOLO는 이미지 전체를 말 그대로 한 번만 본다.
2. 통합된 모델을 사용한다.
- 다른 객체 탐지 모델들은 다양한 전처리 모델과 인공 신경망을 결합하여 사용한다.
- 반면, YOLO는 단 하나의 인공 신경망을 사용하여 처리한다.
3. 실시간 객체 탐지 모델이다.
- 높은 성능으로 객체를 탐지하는 모델은 아니지만, 실시간으로 여러장의 이미지를 탐지할 수 있다.
- Faster R-CNN보다 6배 빠른 성능을 보인다.
YOLO v5 : 사용 과정 (간단)
** 본 블로그의 [project - 유해 이미지 및 개인정보 이미지 탐지 시스템]에도 설명이 있습니다.
** URL : kxmjhwn.tistory.com/242?category=1121129
1. YOLO v5 학습 환경 구성
- colab에서 쉽게 환경을 구성할 수 있다.
2. txt 파일 생성 및 yaml 파일 수정
- 학습에 사용될 txt 파일을 생성한다.
- yaml 파일을 구성을 확인하고, 경로 수정을 해준다.
3. 학습 진행
- 다음과 같은 인자를 설정하여, 학습을 진행한다.
- img : image의 크기
- batch : 한 번에 학습할 데이터 사이즈 값
- epoch : 반복 학습 횟수 값
- data : dataset 정보가 담긴 yaml 파일 경로
- cfg : yolo v5의 아키텍처의 yaml 파일 경로
- weight : pre-trained model 파일 경로 (pre-trained model : 학습 파라미터가 잘 초기화 된 파일)
- name : 결과 파일 이름
4. 테스트 진행
- test dataset을 활용하여 model의 최종 성능을 검증한다.
- 다음과 같은 인자를 설정하여, 테스트를진행한다.
- source : 테스트 할 데이터의 경로
- weight : 학습이 완료된 weight 파일의 경로
- conf : conf_threshold 값 (0~1 사이의 값)
YOLO v5 : Backbone & Head
** 다음 블로그를 참고하였고, 일부 재구성하였습니다. 감사합니다. (url : ropiens.tistory.com/44)
1.
일반적인 detection 모델의 구성과 비슷하다.
크게, 'Backbone'과 'Head'로 구성되어 있다.
2. Backbone
- 이미지로부터 feature map을 추출하는 부분이다.
- 종류가 4가지이다.
3. Head
- 추출된 feature map을 바탕으로, 물체의 위치를 찾는 부분이다.
- 처음에 Anchor Box(=Default Box)를 설정하고, 이를 이용하여 최종적인 Bounding Box를 생성한다.
- 3가지 종류의 scale을 가진 Bounding Box를 생성할 수 있고, 각 scale마다 3개의 Anchor Box를 생성할 수 있다. (즉, 총 9개의 Anchor Box)
- 8 pixel version
- 16 pixel version
- 32 pixel version
YOLO v5 : files and functions
1. /yolov5/models/yolo.py
- yolo 아키텍처에 관한 코드이다.
- 이 코드를 통해 yolo의 아키텍처가 생성된다.
2. yolov5/model/common.py
- yolo 아키텍처를 구성하는 모듈(레이어)에 관한 코드이다.
- 이 코드에 모듈이 구현되어 있다.
3. yolov5/model/common.py - BottleneckCSP()
- yolo v5의 핵심 함수이다.
- 4개의 conv layer가 생성된다.
4. yolo v5의 backbone을 결정짓는 요소
- 앞서 설명했듯, yolo v5의 backbone은 4가지이다. (s, m, l, x)
- s의 backbone 크기가 가장 작고(= layer 수가 작고), x가 가장 크다.
- 이를 결정짓는 요소는 'Depth_Multiple'과 'Width_Multiple'이다.
- Depth_Multiple 값이 클수록, BottleneckCSP()가 더 많이 반복되어, 더 깊은 모델이 된다.
- Width_Multiple 값이 클수록, 해당 layer의 conv 필터 수가 증가한다.
5. yolo v5의 head을 결정짓는 요소
** 진행 중
728x90'Computer Science > ML, DL' 카테고리의 다른 글
CS : Deep Learning (2/2) (0) 2021.04.10 CS : BERT (2/2) (0) 2021.04.09 CS : BERT (1/2) (0) 2021.04.07 CS : Deep Learning (1/2) (0) 2021.04.06