0. Train 명령어
YOLO를 빌드하고 Dataset까지 준비했다면 이제 자신의 Dataset으로 학습을 해보자.
먼저 학습 명령어이다.
darknet.exe detector train data/obj.data yolo-obj.cfg yolov4.conv.137
- darknet.exe
빌드해서 나온 darknet 실행 파일
- detector train
detector의 train 함수 호출
- data/obj.data
학습에 필요한 .data 파일
- yolo-obj.cfg
학습에 필요한 .cfg 파일
- yolov4.conv.137
사전에 학습 된 가중치 파일 (git에서 받을 수 있다)
위 항목에서 .data, .cfg 파일은 사용자가 준비한 Dataset에 맞게 수정or작성해야 한다.
1. data file
미리 있는 .data file을 열어보면 다음과 같다.
- classes : dataset의 class 개수
- train : .txt파일의 경로, train dataset의 파일(이미지) 경로들이 적혀 있는 txt 파일
- valid : train 항목과 마찬가지로 학습 시 validation 할 파일 경로들이 적혀 있는 txt파일
- names : class의 이름들이 있는 파일
- backup : 학습 시 저장되는 가중치 파일 경로
나는 이미지중 찾는 class가 하나이기 때문에 classes=1.
data file안에 있는 train, vaild 항목은 학습에 필요한 dataset file들의 경로들이 있는 txt파일의 경로이다.
나는 test용으로 valid도 train set과 같이 썼다. (모든 경로는 darknet.exe에 대해 상대경로)
.names file에는 classes들의 이름을 나열해준다.
2. cfg file
cfg file에는 학습에 필요한 파라미터 및 모델구조가 들어있다. (cfg/yolov4-custom.cfg를 복사, 수정하여 사용...)
- batch
한번 학습 할 때 읽어들이는 batch size, 64 or 8의 배수
- subdivisions
batch를 얼마나 쪼개서 학습을 할건지에 대한 설정 값, 8의 배수로 조절
- width, height
기본값은 416. (or 32의 배수)
- max_batches
classes * 2000 으로 설정 (train image data보다 적으면 안된다...?)
- steps
보통 max_batches의 80%, 90%로 설정 (max_batches 6000일 때, steps=4800,5400)
- classes
[yolo] layer에 속하는 classes 3개를 자신의 dataset에 맞게 변경
- filters
filters = (classes + 5) x 3
[yolo] layer 바로 전에 있는 filters의 값을 위 공식대로 변경. (classes가 1이면 filters=18)
3. Train
cfg, data 파일을 수정하고, 0. 에서 작성한 명령어를 darknet.exe 경로에서 실행.
darknet.exe detector train data/obj.data yolo-obj.cfg yolov4.conv.137
*만약 여러 GPU를 사용하여 학습한다면, 먼저 위와 같은 방법으로 1000회 정도 학습 후 그 가중치 파일과 아래 명령어로 이어서 학습하면 된다.
darknet.exe detector train data/obj.data yolo-obj.cfg backup/yolo-obj_1000.weights -gpus 0,1,2,3
끝.
'DeepLearning > YOLO' 카테고리의 다른 글
[YOLOv8] YOLOv8 install windows 10 (0) | 2023.07.21 |
---|---|
[YOLO] yolov7 windows install 및 detect test (0) | 2022.12.09 |
3. YOLO c++, cpp dll 활용 (MFC) (4) | 2021.01.04 |
1. Yolo_mark, Image Data Labeling (0) | 2021.01.04 |
0. YOLO Setup (0) | 2021.01.02 |