이제 다시 darknet 디렉토리로 돌아와서,
mkdir custom_data
사용할 폴더를 하나 만들어준다.
custom_data/custom.names
custom_data/images
custom_data/train.txt (= text.txt)
custom_data/custom.data
폴더에는 위 4개의 파일이 필요하다.
우선,
1. 첫번째 names 파일은 이전 포스팅에서 convert2Yolo 하는 과정에서 만들어 준 것을 해당 폴더로 mv 명령어를 통해 옮긴다.
2. 두번째 images폴더는 이미지파일(jpg)과 annotation(txt파일)이 같은 파일명으로 존재해야 폴더이다.
예를들면 000038_cam.jpg, 000028_cam.txt가 세트로 존재해야 한다.
annotation파일은 convert2Yolo를 성공적으로 마쳤다면,
와 같은 형식으로 적혀있을 것이다.
custom_data 폴더 밑에 images 폴더에 jpg사진들과 annotations파일들을 옮겨준다.
3. train.txt 파일은 사진파일들이 있는 위치의 절대경로가 적혀있는데
/home/oh2279/geo/Images/00006022_CAM3.jpg 와 같이 적혀있다.
test.txt파일도 동일하다.
두 파일의 차이는 훈련용 사진과 테스트용 사진, 그리고 양의 차이 정도가 있다.
4. custom.data 파일 생성
마찬가지로 custom_data 디렉토리에서 custom.data 파일을 생성해준 뒤, 본인이 사용할 class의 개수와 train, vaild, names 파일의 경로를 적어준다.
backup은 가중치 backup 파일이 저장되는 곳이다.
이제 필요한 폴더 및 파일들을 생성하였다면, cfg 파일을 수정해주자
cfg파일은 /darknet/cfg 디렉토리에 있다.
./cfg 폴더 밑에 있는 yolov3.cfg 파일을 복사해서 custom_data/cfg/yolov3-custom.cfg 파일을 만들어 사용하거나, 또는 직접 수정해주어도 상관은 없다.
sudo gedit yolov3.cfg 또는
sudo vi yolov3.cfg
batch line: 6
기본값 64. 건드리지 않는다.
subdivisions line: 7
배치 사이즈를 얼마나 쪼개서 학습할지 설정한다. 기본값은 8이지만 메모리 릭이 나면 16 32 등으로 조절한다.
witdh, height line: 8, 9
기본값은 416, 608로 변경하면 정확도가 좋아질 수 있다. 32의 배수로 조절한다.
learning_rate line: 18
기본값 0.001, multi gpu인 경우 0.001/gpu수로 설정한다. 예를들어 2개라면 0.0005를 써준다.
burn_in line: 19
기본값 1000, multi gpu인 경우 1000*gpu수로 설정한다. 예를들어 2개라면 2000을 써준다.
max_batches line: 20
이터레이션 갯수, class수*2000+200. 예를들어 5개 클래스라면 10200
steps line: 22
max_batches의 80%, 90%로 class갯수*2000의 80%, 90%를 설정한다. 예를들어 5개 클래스라면 8000,9000을 써준다.
classes line: 610, 696, 783
[yolo] 레이어에 있는 것으로 클래스 수를 적어준다. 예를들어 5개 클래스라면 5를 써준다.
filters: line: 603, 689, 776
(클래스 갯수+5)*3을 써준다. 예를들어 5개 클래스라면 30을 써준다.
문자열 검색을 하면 많이 나오는데 yolo레이어 바로 위에 있는 필터만 수정한다.
이제 모델을 돌려보자! (darknet 디렉토리로 이동한 뒤, 아래 코드 입력)
./darknet detector train custom_data/custom.data cfg/yolov3.cfg darknet53.conv.74
참고로 맨 뒤에 가중치 파일은 본인이 원하는 것을 wget 명령을 통해 다운할 수 있다.
sudo wget https://pjreddie.com/media/files/darknet53.conv.74
sudo wget https://pjreddie.com/media/files/yolov3.weights
등등..
자세한 내용은 아래 참고 사이트를 확인해주어도 좋다.
https://rio-kim.github.io/yolo/2020/05/14/yolo-v3-custom-data-train/
https://github.com/ssaru/convert2Yolo/issues/13
https://github.com/AlexeyAB/darknet
https://m.blog.naver.com/kthchunjae/222088446662
'AI' 카테고리의 다른 글
Neural Networks and Multi-Layer Perceptron 개념 간단 정리 (0) | 2022.09.28 |
---|---|
딥러닝 기본 용어 설명 (0) | 2022.09.28 |
Yolo v3 custom data 하나부터 열까지(Windows) (0) | 2022.09.27 |
인공지능 역사 (0) | 2022.07.12 |
인공지능 소개 (0) | 2022.07.12 |