첫번째. 공식문서를 본다.
https://github.com/AlexeyAB/darknet#how-to-train-to-detect-your-custom-objects
두번째. 공부를 한다.
0. yolov4.con.137(사전 훈련된 가중치 파일)을 다운로드
여기서 cfg파일이란 cmd 창에 ipconfig를 치는 것처럼 프로그램의 구성을 설명하는 파일이다. 여기서는 yolov4.cfg라고 하면 yolov4에 관한 소프트웨어 정보를 저장하는 구성 파일을 말한다.
1. yolov4-custom.cfg의 텍스트내용을 수정합니다. (아래는 yolov3.cfg로 되어 있지만 내용은 yolov4와 똑같다)
이처럼 cfg파일을 수정하면 되는데 일단, yolov4-custom.cfg파일을 열어보면 다음과 같이 적혀있다.
[net]
batch=64
subdivisions=8
# Training
#width=512
#height=512
width=608
height=608
channels=3
momentum=0.949
decay=0.0005
angle=0
saturation = 1.5
exposure = 1.5
hue=.1
learning_rate=0.0013
burn_in=1000
max_batches = 500500
policy=steps
steps=400000,450000
scales=.1,.1
여기에 적힌 내용들을 수정하면 되는 것이다.
1. batch = 64로 수정
2. subdivisions = 16로 수정
3. max_classes*2000 (클래스갯수*2000)로 수정
필자의 클래스는 1개이므로 1*2000 = 2000로 수정
4. steps를 max_classes의 80%, 90의 수치로 변경
필자는 2000이므로 1600,1800으로 수정
5. width,height을 416으로 수정 (훈련시킬 때 GPU메모리를 상당히 차지하므로 416을 수정) 32의 배수로 가능.
6. [yolo]의 classes와 [convolutional]의 filters를 수정. classes는 클래스의 갯수로 수정하고 filters는 (classes+5)*3으로 수정 각각 3개씩 있어서 3개 모두 수정해야한다. tiny의 경우엔 2개씩 있어서 2개 모두 수정.
핵심은 [yolo]앞에 있는 [convolutional]의 filters만 수정해야한다. 다른 [convolutional]의 filters를 수정하면 안된다.
필자는 classes는 1이고, filters는 (1+5)*3=18개이다.7. Gaussian_yolo는 사용하지 않으므로 건들지 않았다.
2. bulid\darknet\x64\data\경로에 obj.names파일을 만든다.
필자는 package.names 파일을 만들고
위와 같이 적었음.
3. bulid\darknet\x64\data\경로에 obj.data파일을 만든다.
위와 같이 만듬
이제 train과 vaild에 관해 만들어야 한다.
이제
yolov3, yolov3-tiny,yolov4-tiny모델 모두 동일한 방법으로 해당 cfg를 수정하면 되고 가중치파일을 모델에 맞게 바꾸면 된다.
참고 블로그
https://keyog.tistory.com/22?category=879585
yolov4.cfg수정
'STUDY > YOLO' 카테고리의 다른 글
YOLO_Label사용 (0) | 2022.05.20 |
---|---|
anaconda 설치 (0) | 2022.05.19 |
yolov4 테스트 (0) | 2022.05.12 |
오류수정 (0) | 2022.05.12 |
개발환경 (0) | 2022.05.12 |
댓글