YOLO v5는 논문이 없다. 2020년 6월에 배포 되었으며, v4에 비해서 낮은 용량과, 빠른 속도를 가지고 있다.
YOLO v3의 PyTorch 확장
YOLO v4 까지는 C, CUDA로 구현한 코드였다. 이를 Glenn Jocher가 PyTorch 버전으로 구현한 버전이 YOLO v5이다. 이 버전은 개발자들이 YOLO v3 Darknet의 weight를 PyTorch로 포팅한 다음 사용할 수 있는 용도로 인기가 많았다. 아래는 Ultralytics에서 수행한 업데이트 중 일부를 보여준다.
원래는 YOLO v4로 이름 지으려고 했으나, YOLO v4가 먼저 출시 되어 YOLO v5로 명명되었다. 처음에는 이름에 대해서 꽤 많은 논쟁이 있었고, 두 모델을 비교하는 기사 또한 있었다. 링크 된 게시글은 현재 참조하고 있는 roboflow에서 게시한 비교 글이다.
YOLO v5의 가장 큰 contribution은 Darknet framework를 Pytorch framework로 바꿨다는 데 있다. C언어로 작성 된 코드는 세밀하게 제어할 수 있는 장점이 있고, 이는 연구에 큰 도움이 되지만 새로 기능을 추가할 때, 새로운 gradient 계산을 추가 작성해야 하므로 코드 작성에 시간이 소요된다. PyTorch는 이러한 점에서 더 큰 이점을 얻을 수 있다.
모델
Architecture
성능과 시간에 비례하여 Yolov5s, Yolov5m, Yolov5l, Yolov5x 4가지로 나누어진다. s가 가장 가볍고 성능이 낮은 모델이고, x가 가장 무겁고 성능이 좋은 모델이다.
3가지 구성 요소로 이루어져 있다.
Backbone: 서로 다른 granularity(세분성)으로 이미지 특징을 집계하고 특징을 형성하는 conv net
Neck: 이미지 특징을 혼합(mix), 결합(combine)하여 prediect에 전달하는 레이어 집합
Head: Neck으로부터 feature를 받아서 box와 class predication 단계를 수행
Training Procedures
Data Augmentation
Scaling
Color Space Adjustments (pixel-wise adjustment인 듯)
Mosaic Augmentation (novelty)
특정 이미지를 random crop 하고, 섞어서 붙여 쓴다. Cutout and Cutmix라고 표현한다.
small object problem(작은 개체가 큰 개체만큼 정확하게 감지되지 않는 문제)를 해결하는 방법을 학습하는 데 도움이 된다. 특히 COCO 데이터셋에서 효과가 있다.
Loss Calculation
GIoU, obj 및 class loss function을 계산한다.
이러한 함수는 mean average precision을 최대화 하기 위해 설계
Auto Learning Bounding Box Anchors
k-means와 genetic learning 알고리즘을 사용한 custom 데이터셋의 bounding box 분포를 기반으로 anchor-box를 학습하는 아이디어를 소개
YOLO v4는 양이 너무 많아서 언젠간 완성 하겠습니다.. 그러나! 이번 주가 마지막이니까 다음 시리즈는 이어 가야겠음
YOLO v5
YOLO v5는 논문이 없다. 2020년 6월에 배포 되었으며, v4에 비해서 낮은 용량과, 빠른 속도를 가지고 있다.
YOLO v3의 PyTorch 확장
YOLO v4 까지는 C, CUDA로 구현한 코드였다. 이를 Glenn Jocher가 PyTorch 버전으로 구현한 버전이 YOLO v5이다. 이 버전은 개발자들이 YOLO v3 Darknet의 weight를 PyTorch로 포팅한 다음 사용할 수 있는 용도로 인기가 많았다. 아래는 Ultralytics에서 수행한 업데이트 중 일부를 보여준다.
원래는 YOLO v4로 이름 지으려고 했으나, YOLO v4가 먼저 출시 되어 YOLO v5로 명명되었다. 처음에는 이름에 대해서 꽤 많은 논쟁이 있었고, 두 모델을 비교하는 기사 또한 있었다. 링크 된 게시글은 현재 참조하고 있는 roboflow에서 게시한 비교 글이다.
YOLO v5의 가장 큰 contribution은 Darknet framework를 Pytorch framework로 바꿨다는 데 있다. C언어로 작성 된 코드는 세밀하게 제어할 수 있는 장점이 있고, 이는 연구에 큰 도움이 되지만 새로 기능을 추가할 때, 새로운 gradient 계산을 추가 작성해야 하므로 코드 작성에 시간이 소요된다. PyTorch는 이러한 점에서 더 큰 이점을 얻을 수 있다.
모델
Architecture
성능과 시간에 비례하여 Yolov5s, Yolov5m, Yolov5l, Yolov5x 4가지로 나누어진다. s가 가장 가볍고 성능이 낮은 모델이고, x가 가장 무겁고 성능이 좋은 모델이다.
3가지 구성 요소로 이루어져 있다.
Training Procedures
Data Augmentation
Cutout and Cutmix
라고 표현한다.small object problem
(작은 개체가 큰 개체만큼 정확하게 감지되지 않는 문제)를 해결하는 방법을 학습하는 데 도움이 된다. 특히 COCO 데이터셋에서 효과가 있다.Loss Calculation
Auto Learning Bounding Box Anchors
16 Bit Floating Point Precision
New Model Configuration Files
model configuration
을.cfg
를 쓰던 Darknet과 달리.yaml
파일을 사용.yaml
파일은 아래와 같이 파라미터를 전부 지정해두고, 선택해서 사용한다.anchors
anchors:
YOLOv5 backbone
backbone:
[from, number, module, args]
[[-1, 1, Focus, [64, 3]], # 0-P1/2 [-1, 1, Conv, [128, 3, 2]], # 1-P2/4 [-1, 3, BottleneckCSP, [128]], [-1, 1, Conv, [256, 3, 2]], # 3-P3/8 [-1, 9, BottleneckCSP, [256]], [-1, 1, Conv, [512, 3, 2]], # 5-P4/16 [-1, 9, BottleneckCSP, [512]], [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32 [-1, 1, SPP, [1024, [5, 9, 13]]], ]
YOLOv5 head
head: [[-1, 3, BottleneckCSP, [1024, False]], # 9
[-1, 1, Conv, [512, 1, 1]], [-1, 1, nn.Upsample, [None, 2, 'nearest']], [[-1, 6], 1, Concat, [1]], # cat backbone P4 [-1, 3, BottleneckCSP, [512, False]], # 13
[-1, 1, Conv, [256, 1, 1]], [-1, 1, nn.Upsample, [None, 2, 'nearest']], [[-1, 4], 1, Concat, [1]], # cat backbone P3 [-1, 3, BottleneckCSP, [256, False]], [-1, 1, nn.Conv2d, [na * (nc + 5), 1, 1]], # 18 (P3/8-small)
[-2, 1, Conv, [256, 3, 2]], [[-1, 14], 1, Concat, [1]], # cat head P4 [-1, 3, BottleneckCSP, [512, False]], [-1, 1, nn.Conv2d, [na * (nc + 5), 1, 1]], # 22 (P4/16-medium)
[-2, 1, Conv, [512, 3, 2]], [[-1, 10], 1, Concat, [1]], # cat head P5 [-1, 3, BottleneckCSP, [1024, False]], [-1, 1, nn.Conv2d, [na * (nc + 5), 1, 1]], # 26 (P5/32-large)
[[], 1, Detect, [nc, anchors]], # Detect(P5, P4, P3) ]
CSP Backbone
PA-Net Neck
성능
이 그래프는 FPS x축과 ms/img를 반전시키지만 YOLOv5 축을 빠르게 반전시켜 동일한 V100 GPU에서 숫자당 프레임을 약 200~300FPS로 추정하는 동시에 더 높은 mAP를 달성할 수 있습니다.
Darknet Repository에서 매우 작고 매우 성능이 뛰어난 모델인 YOLOv4의 새로운 릴리스를 여기에서 주목하는 것도 중요합니다.
말투가 이상합니다. 번역 그대로 가져왔기 때문입니다. 해석하기 귀찮습니다. 암튼 빠르다는 소리입니다.
COCO에서도 빠르다고 합니다. 암튼 PyTorce 저시기 뭐시기 빠른 YOLO v5였습니다.
참고