! ์ฃผ์ ! ์ด ๊ธ์๋ ์ ์ yolo v5์ ๋ํ ์์ฝ๊ณผ ์งง์ ์ฌ์ฉ๋ฒ, ๊ทธ๋ฆฌ๊ณ roboflow annotation์ ๋ํ ๊ฐ์ธ์ ์ธ ๊ฒฌํด๊ฐ ์ฐ์ฌ์์ต๋๋ค.
1. YOLOv5
Summary
- You Only Look Once - one stage detection ๋ชจ๋ธ
- R-CNN์ด๋ Faster R-CNN๊ณผ ๋ฌ๋ฆฌ ์ด๋ฏธ์ง ๋ถํ ์์ด ์ด๋ฏธ์ง๋ฅผ ํ ๋ฒ๋ง ๋ณด๋ ํน์ง
- ์ ์ฒ๋ฆฌ๋ชจ๋ธ๊ณผ ์ธ๊ณต์ ๊ฒฝ๋ง ํตํฉ
- ์ค์๊ฐ ๊ฐ์ฒดํ์ง
- Backbone : input image → feature map
- CSP-Darknet
- https://keyog.tistory.com/30
- Head : predict classes / bounding boxes
- Dense Prediction : One stage detector(predict classes + bounding boxes)
- R-CNN
- Sparse Prediction : Two stage detector(predict classes , bounding boxes ๋ถ๋ฆฌ)
- SSD, YOLO
- Dense Prediction : One stage detector(predict classes + bounding boxes)
=> ๊ตฌ์กฐ๋ฅผ ์ดํด๋ณธ ๊ฒฐ๊ณผ SSD์ ์๋น๋ถ๋ถ ์ ์ฌํ๋ค๊ณ ๋๊ปด์ก๋ค.
Repository
https://github.com/ultralytics/yolov5
Data format
- dataset.yaml
- train
- val
- test
- class name
train : # training data ์์ ํด๋ ex. ./datasets/train val: # validation data '' test: # test data '' names: 0: person 1: bicycle ...
- labels
- ์ข์ธก ์๋จ๋ถํฐ 0, 0(computer vision coordinates system ์ฐธ๊ณ )
- ํ ์ด๋ฏธ์ง๋น 1๊ฐ์ annotation ์ ๋ณด๋ฅผ ๋ด์ ํ ๊ฐ์ txt ํ์ผ ํ์
- # Class x_center y_center width height 0 0.48 0.63 0.69 0.71 # normalized
- background image์ธ ๊ฒฝ์ฐ ํ์ ์์
- normalized xywh(0 - 1)
- ์ ์ฒ๋ฆฌ ๋ฐ๋ก ํด์ค์ผํจ
- resize → x center, width / image width , y center, height / image height
- zero indexed
Train
- detect
!python detect.py --weights yolov5s.pt --img 640 --conf 0.25 --source data/images --device "cuda:0" display.Image(filename='yolov5\\\\data\\\\images\\\\zidane.jpg', width=600)
- validate
!python val.py --weights yolov5s.pt --data coco.yaml --img 640 --half
- train
!python train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov5s.pt --cache
Augmentation
- Mirroring (๋์นญ)
- Random Cropping
- Rotation
- Shearing
- Image HSV-Hue
- trainslation
- scaling
- flip up-down, left-right
- mosaic
- mixup
- copy-paste(segmentation option)
์ ๋ชฉ๋ก์ augmentation์ ์ง์ํ๋ค. ์์ธํ ๊ฒ์ hyp.scratch-low.yaml ํ์ผ ์ฐธ์กฐ.
YOLOv5 ์ฝ๋ ๋ถ์
๊น๋ํ๊ณ ์์ธํ ์ฝ๋๋ถ์ ๊ธ์ด ์์ด์ ์ฒจ๋ถํ๋ค.
[pytorch] yolov5 ์ฝ๋ ๋ถ์
2. Roboflow Annotation
์ฅ์ ๋ถํฐ ํ ๋ฒ ์์ ํด๋ณด๊ฒ ๋ค.
1. ๋ฐ์ดํฐ์ ์์ฑ์ด ๊ฐํธํ๋ค.
- YOLO ๊ณต์ ๊นํ๋ธ์์ ํ๋ณดํ๋ ์จ๋ผ์ธ annotation ํด๋ก, ์ด๋ฏธ์ง๋ฅผ ์ ๋ก๋ํ๊ณ ๋ค๊ฐํ / ๋ฐ์ด๋ฉ ๋ฐ์ค / ๋จ์ classification ๋ฑ์ผ๋ก ๋ถ๋ฅ ๋ชจ๋ธ์ ์ข ๋ฅ์ ๋ฐ๋ผ annotation์ ํ ์ ์๋ค. ๋ฐ์ดํฐ์ ์ ๋ง๋ค๊ณ ๋ ๋ค์๋ ๋ช๋ช ๋ชจ๋ธ์ ๋ง๋ ํ์์ผ๋ก export๋ ํด์ค๋ค.
2. ๊ณต๋์์ ์ ํจ๊ณผ์ ์ด๋ค.
- ์ฌ๋ฌ ์์ ์๊ฐ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ด๋ฏธ์ง๋ฅผ ๋ชจ๋ ๋๋ ์ ๊ฐ์ง๊ณ ์์ด์ผํ ํ์์์ด, ์จ๋ผ์ธ์ผ๋ก ์ ๋ก๋ํ ์ด๋ฏธ์ง๋ฅผ ๊ฐ๊ฐ์ธ์๊ฒ ํ ๋นํ ์ ์๋ค๋ ์ข์ ์ ์ด ์๋ค.
- 3. ๋ฒ์ ์ ๋ฐ๋ผ ์ ๋ฐ์ดํธ๋ ๋ฐ์ดํฐ์ ์ ๋ฐ์ดํธ ๋๊ธฐ ์ ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ก ๋ณด๊ดํ ์ ์๋ค.
- ์ ๋ก๋๋ ๋ฐ์ดํฐ์ ์ ๋ ์ด๋ธ๋ง์ ๋ง์น๊ณ ๋๋ฉด export๋ฅผ ์ํด ๋ฒ์ ์ ๋ง๋๋๋ฐ, ์ฌ๋ฌ ๋ฒ์ ์ ์์ฑํ ์ ์๋ค.
4. ๋ ์ด๋ธ๋ง ์ ๊ฐ์์ฑ์ด ์ข๋ค.
- annotation์ ํ ๋ ๋ฐ๋ก๋ฐ๋ก ๋ฐ์ด๋ฉ๋ฐ์ค์ ์ด๋ฏธ์ง๋ฅผ ๋ณผ ์ ์๋ ๊ฒ์ด ํธํ๋ค. ํ๋ ๋ฒ ๋ ๊ฒ์ฌํ๊ณ ์ถ๊ฑฐ๋ ์ด์ํ๊ฒ ๋ ์ด๋ธ๋ง๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๊ธฐ๊ฐ ์ฝ๋ค.
๊ทธ๋ฌ๋ ๊ฐ์ธ์ ์ผ๋ก๋ ํ์ด์ฌ ์ฝ๋ ๋ช ์ค ๋ ์ง์ format์ ์ง์ ๋ง์ถ๋๋ผ๋, ์ง๊ธ ๋น์ฅ roboflow๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์คํ๋ ค ๋ถํธํ ์๋ ์๋ค๊ณ ์๊ฐํ๋ค.
์ฌ์ฉํ๋ฉด์ ๋๋ ๋ช๊ฐ์ง ๋ถํธํ ์ ์ ์์ ํด๋ณด๊ฒ ๋ค.
1. ์ฆ๊ณ ์์ํ ์ค๋ฅ
- ์ด๋ฏธ์ง ์ด๋ ธํ ์ด์ ํ ๋ค์ ์ด๋ฏธ์ง๋ก ๋์ด๊ฐ๋๋ฐ 3๋ถ ๋๊ฒ ๊ฑธ๋ฆฌ๋ ๊ฒฝ์ฐ.
- ๋ฐ์ด๋ฉ ๋ฐ์ค๋ฅผ ์ ํํ ํ ๋ฑ๋ก์ด ๋์ง ์๋ ์ค๋ฅ.
2. ๋ฐ์ดํฐ์ ๋ฑ๋ก์ ๋ถํธํจ
- ์ด๋ฏธ ๋ฐ์ดํฐ์ ์ผ๋ก ์ ๋ก๋๋ฅผ ๋ง์ณค๋๋ฐ ์ด๋ฏธ์ง์ annotation์ด ์๋ชป๋ ๊ฒ์ ์์ ์ด ๊ฐ๋ฅํ๋, ํ์ต๋ฐ์ดํฐ์ ํฌํจํ๋ฉด ์๋๋ ์ด๋ฏธ์ง๊ฐ ๋ฐ์ดํฐ์ ์ ์ ๋ก๋ ๋ ๊ฒฝ์ฐ ๋ค์ unannotated ํญ์ผ๋ก ๋๋ ค๋ณด๋ผ ์ ์๋ค. ์์ ํ๋ก์ ํธ ์์ฒด์์ ์ด๋ฏธ์ง๋ฅผ ์ง์ฐ๊ณ , ์ฌ์ ๋ก๋ํด์ ๋ค์ ํด์ผํ๋ค๋ ๋ฒ๊ฑฐ๋ก์์ด ์๋ค.
- ๋ฐ์ดํฐ์ ์ ์ด๋ฏธ์ง๋ฅผ ํ ์ฅ๋ง ์๋ก ์ถ๊ฐํ๋ ค๊ณ ํด๋ ์๋ก ๋ฒ์ ์ ์์ฑํด์ผํ๋ค.
๋๋ถ๋ถ ๊ฐ์ ํ๊ธฐ ์ด๋ ค์ด ๋ฌธ์ ๋ค์ด ์๋๋ ์ง์์ ์ธ ์ ๋ฐ์ดํธ๋ก ์ ์ค๋ฅ์ ๋ถํธํ ์ ์ด ํด๊ฒฐ๋๋ค๋ฉด ์ด๋ฏธ์ง annotation ํ ๋, ํนํ ์ฌ๋ฌ ์ฌ๋๊ณผ ๋๋ ์ annotation์ ํ๋ ์ํฉ์์๋ ์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์์ ๊ฒ ๊ฐ๋ค.