이전 포스팅의 준비를 다 해주셨으면 , cfg파일에 대한 수정이 필요합니다.
cfg파일은 training에 대한 정보가 담겨져 있습니다. 보시면은 이해가 쉬울거에요.
우선, /darknet/cfg/yolov4-tiny-custom.cfg로 이동합니다.
저는 이런 글을 볼때마다 잘 따라오고 있는게 맞는지 항상 의심되는데...
여러분이 찾은 이 파일이 맞습니다!
더블클릭하여 열어주시면, 알순없지만 대충 느낌만 오는 설정들이 있습니다.
다섯줄만 고쳐주면 됩니다!!
yolov4-tiny-custom.cfg수정하기
1. subdivisions변수 수정
7번째 줄에 있는 subdivisions를 subdivisions = 16으로 수정해주세요.
batch size인 64를 얼마나 나누어 학습을 할 것인지에 대한 설정 값을 조정해줍니다.
기본 사이즈는 8이지만, out of memory 방지를 위해 16으로 설정합니다.
만약 Colab에서 문제가 생기면 이 변수를 32로 변경하면 된다고 합니다.
더 부연설명을 드리자면... 정확하지는 않지만
batch size가 64이고, subdivision이 우리가 설명한 16이라면, 한번에 학습하는 이미지의 수는 64/16 = 4장입니다.
기본 설정인 8이라고하면 한번에 64/8 = 8이므로 8장이 되겠죠!
왜 컴퓨터 성능에 문제가 있으면 이 subdivisions변수를 늘려야 하는지, 어떤 기준(64를 나눌 수 있는 수!)으로 늘리는지에 대한 이유를 알 수 있을 것 같습니다.
2. max_batches변수 수정
20번재 줄에 있는 max_batches를 트레이닝 시킬 class의 수대로 수정해주어야 합니다.
클래스 갯수를 n이라고 한다면, n*2000이 해당 값이 됩니다.
예를 들어, 우리는 2개의 class를 구분하는데요, 저의 max_batches = 4000이 되겠습니다.
3. steps 변수 수정
22번째 줄에 있는 steps변수를 수정합시다. 방금 수정한 max_batches의 80%와 90%를 써줍니다.
두개를 어떻게 쓰냐구요??
제가 스샷을 찍어왔지롱요.
저는 max_batches가 4000이 나왔으므로, 다음과 같이 수정해주었습니다.
4. classes 변수 수정
220번째 줄과 269번째 줄에 있는 classes변수를 수정해줍니다.
classes = 트레이닝 시킬 class 개수가 되어야 합니다.
저는 2개의 클래스가 있으므로 2로 했습니다.
5. filters변수 수정
212번째 줄과 263번째 줄의 filters 변수를 수정해줍니다.
이건 이 포스팅에서 제일 어려우니 잘 들어주세요.
흠흠
filters = (classes+coords+1)*<number of mask>
*Yolov4-tiny의 경우,
classes = n,
coords = 4,
<number of mask> = 3
입니다. 후... 어렵죠??
근데 더 간단히, 우리는 yolov4의 tiny를 이용하려고 하니,
filters=(n+5)*3으로 수정해주시면 됩니다.
n이 뭐냐~~믄!! 여러분이 학습시킬 class 갯수에요.
저는 n=2이므로, 212번째 줄과 263번째 줄에 있는 이 변수를 21로 바꿔주었어요.
요기까지 해주셨으면 환경 설정은 끝입니다! 그럼 이제 Colab으로 학습하러 꼬우~~
'머신러닝 > JetsonNANO와 YOLO!' 카테고리의 다른 글
(하) Colab과 Darknet으로 YOLO를 학습시켜보자! (28) | 2021.11.17 |
---|---|
(상) Colab과 Darknet으로 YOLO를 학습시켜보자! (8) | 2021.10.05 |
YOLO Darknet을 학습해야 하는데 XML이나 Json으로 라벨을 붙인 나를 위한 Roboflow! (9) | 2021.10.04 |
이미지 라벨링 쉽게하기! Labelme (0) | 2021.10.03 |
[YOLO 논문 리뷰] 그래서 YOLO가 뭔데??? (0) | 2021.10.03 |