이 게시글은 YOLO를 학습시키기 위해 사전에 준비할 Dataset 구축에 관련된 내용을 다룬다.
YOLO를 학습시키기 위해서는 우선 원하는 class의 사진을 모아야 한다. 구글 이미지 크롤링과 아래의 사이트에서
이미지를 쉽게 구할수 있다. 이미지를 구하면 본인이 원하는 학습과 맞는 이미지인지 (ex 사람을 인식하고 싶은데 사람이 없는 사진 등) 먼저 눈으로 구분하고 삭제하는 과정을 거친다 필수는 아니지만 이렇게 하는게 마음이 편해서 지금까지 이렇게 진행하고 있다.
이렇게 이미지 Dataset이 모아졌으면 Annotation 과정을 진행해야한다. YOLO는 이미지 데이터와 해당 이미지 내의 객체 경계 상자를 포함한 레이블 데이터를 기반으로 모델을 학습하는 지도학습 모델이다.
따라서 YOLO를 학습시키기 위해서는 이미지에 bounding box를 그리는 Annotation 작업을 진행해야한다.
이런 작업을 수월하게 도와주는것이 YOLO_mark이다. 다른 Annotation tool도 있으나 써본적이 없음으로 YOLO_mark만 소개한다. YOLO_mark는 아래의 깃허브 사이트에 상세히 설명 되어있다.
https://github.com/AlexeyAB/Yolo_mark
우분투 20.04 환경에서 설치를 진행 했다. 설치는 아래의 코드를 입력해 설치를 진행하면 된다.
1. YOLO_mark 다운로드
$ sudo git clone https://github.com/AlexeyAB/Yolo_mark
2. YOLO_mark 컴파일
$ cd Yolo_mark
$ sudo cmake .
$ sudo make
3. YOLO_mark 실행
$ sudo ./linux_mark.sh
※실행 권한이 없어서 실행이 안되면 다음의 코드를 입력해 실행한다.
$ sudo chmod 700 linux_mark.sh
다음으로 자신이 모은 dataset(image)를 Yolo_mark/x64/Release/data/img 폴더에 이동시켜준다.
폴더의 구성은 아래의 사진과 같다. 사진은 img 폴더에 들어가 있다.
다음으로 각 파일의 구성을 보도록 하겠다.
1. obj.data
obj.data에는 아래 사진과 같이 구성되어 있다.
classes는 학습할 object의 갯수를 적는다. train,valid는 train,valid 경로
names는 object의 이름 파일, backup은 학습 결과를 저장할 경로이다.
여기서 classes의 숫자만 바꿔주면 된다.
2. obj.names
obj.names에는 object의 이름을 적어주는 곳이다. obj.data와 갯수가 같아야 한다.
3. train.txt
이미지의 경로가 저장되어 있는 곳이다.
이렇게 기본 본인의 dataset에 맞추어 설정을 다 끝냈으면 아래와 같이 YOLO_mark를 실행한다.
아래의 사진은 초기 실행 화면이다.
실행을 시키면 다음과 같은 화면이 뜨고 드래그 해서 Bounding Box를 그려 마킹해준다.
하단에 image num은 (현재 이미지 위치/전체 이미지 갯수) 로 표현된다.
object id는 obj.names에 따라 0~ 순서대로 지정된다.
YOLO_mark는 단축키는 다음과 같다.
[←] : prev_img = 이전 이미지
[→, space bar] : next_img = 다음 이미지
[ c ] : clear_marks = 모든 라벨링 삭제
[ 0_9 ] : obj_id = Object id 선택
[ m ] : show coords = 마우스 x,y좌표 보여지게 하기
[ esc ] : exit = 종료
[ w ] : line width = 라인 굵기
[ k ] : hide obj_name = 객체 이름 숨기기
[ o ] : track objects = 현재 라벨링을 다음 이미지에 복사
[ r ] : mouse delets selected = 현재 마우스 커서 라벨링 삭제
[ h ] = 도움말 보기
Reference
https://m.blog.naver.com/kthchunjae/222088500189
https://j-remind.tistory.com/64
정확한 정보 전달보단 공부 겸 기록에 초점을 둔 글입니다. 틀린 내용이 있을 수 있습니다.
틀린 내용이나 다른 문제가 있으면 댓글 남겨주시거나 또는 이메일로 보내주시면
감사하겠습니다.
'Object Detection > YOLO' 카테고리의 다른 글
YOLOv6 custom Train (0) | 2024.01.29 |
---|---|
YOLOv5 custom Train (0) | 2024.01.28 |
YOLOv4 custom Train (1) | 2024.01.27 |
YOLOv3 custom Train (0) | 2024.01.25 |
[Ubuntu 20.04 LTS] Darknet 설치 (0) | 2024.01.24 |