본문 바로가기
Deep Learning (Computer Vision)/YOLO

YOLOv5 Custom Model 만들기(1) - LabelImg 사용법

by 187cm 2022. 8. 20.
반응형

You Only Look Once (YOLO) 의 특징

- 대표적인 One-Stage Detector로써 빠르고 정확한 Object Detection Model이다.

- 실시간 물체/객체 탐지가 가능하다.

우선 version 별 YOLO 모델의 특징을 간단하게 요약

YOLOv1

- "One-Stage Detector"를 사용하여 실시간 탐지 가능,

-  One-Stage Detector 구현을 위해 Loss Function에서 바운딩 박스의 크기, 위치, Class 종류까지 학습.

 

YOLOv2

- v1에 마지막에 들어가는 FC Layer대신 앵커박스 개념 도입 -> 바운딩 박스의 위치 정보를 살리기 위함

- 416으로 이미지 크기를 늘려 작은 물체도 감지하기 쉽게 (224 -> 416),

- BatchNormalization, Skip-connection 등 추가

 

YOLOv3 : 3개의 feature map과 더욱 많은 수의 모델 파라미터 (53 layer) v2에 비해 큰 차이 없음.

YOLOv4 : CSPNet 기반의 backbone과 neck, head에 대해 구조 변화, Bag of freebies, Data Augmentation 등 여러가지

VOLOv5 : v4에서 backbone을 EfficientNet으로 변경. mAP는 비슷하나 더욱 가볍고 빠름. (pytorch로 구현, v4는 Darknet)

 

프로젝트 목표 : 좌석 탐지 Custom Model 제작.

v5를 선택한 이유 : v4는 단일 GPU에서 빠른 학습 능력을 보여준다. Darknet을 통해 pre-train 모델에 fine-tining을 진행하는 v4의 Darknet 방식보다 직접 모델을 뜯어 고칠 수 있는 Custom Model을 만들고 싶었다. 또한 단일 GPU에서 빠른 학습을 보여주는 v4인데 병렬처리를 통해 학습을 진행하므로 더 빠른, 더 많은 FPS출력이 가능한 v5를 선택하였다.

 

사양 : 2080TI, 1080TI 를 병렬로 탑재한 리눅스 서버와 2080TI 하나 탑재한 내 컴퓨터 (윈도우)에서 진행했다.

따라서 코랩에서 사용하시는 분들, 윈도우에서 개발 진행예정이신분 모두 Custom Model 제작이 가능하다.

 

프로젝트 진행과정

1. Table 상태를 탐지하는 Custom Model1 

2. Table 모양을 탐지하는 Custom Model2

-> 오로지 하나의 라즈베리 카메라와 딥러닝 기술만 이용한 프로젝트

 

프로젝트 결과 - 캡스톤 디자인 금상!

팀원 분들이 열심히 해줬지만 Labelimg로 6000개 라벨링 한 나 자신.. ㅜㅠ 고생했다.

 

1. Custom Data 수집

-> 좌석 탐지를 하는 AI 모델을 만드는 것이 목표이므로 학습에 쓰일 이미지를 가져와야 한다.

학교의 북카페 좌석을 학습 데이터로 사용할 것이다.

학습  데이터가 준비 되었다면

2. Labelimg를 이용한 Custom data  labeling진행

아래 링크에 들어가서 본인 환경에 맞게 설명법을 보고 설치를 해도 되지만 아래 첨부파일을 다운 받은 후 밑에 명령어를 실행시켜도 된다. pip3 install labelimg 후 labelImg는 cd labelimg-master 경로 즉 아래 압축파일을 해제한 곳에서 이 명령어를 실행시켜야 한다.

labelImg-master.zip
6.30MB

pip install PyQt5
pip install lxml
pyrcc5 -o libs/resources.py resources.qrc
pip3 install labelImg 
python labelImg.py

https://github.com/heartexlabs/labelImg

 

GitHub - heartexlabs/labelImg: 🖍️ LabelImg is a graphical image annotation tool and label object bounding boxes in images

🖍️ LabelImg is a graphical image annotation tool and label object bounding boxes in images - GitHub - heartexlabs/labelImg: 🖍️ LabelImg is a graphical image annotation tool and label object boundin...

github.com

 

 

Q : 설치를 다 하였는데도 오류가 떠요 ->

A : 아나콘다의 경우 관리자 권한으로 위의 명령어 다시 쳐서 설치 진행하시면 됩니다. 제가 발견한 LabelImg 오류는 대부분 관리자 권한으로 실행하지 않아서 생기는 문제였어요.

다음과 같이 pyrcc5를 관리자 권한으로 적용하지 않아서 생겨서 오류가 떴었습니다. 

 

다음과 같은 GUI가 뜨면 성공적입니다. 

이제 아래 YOLO를 3번 눌러서 다시 YOLO로 한바퀴 돌려줍니다. 안해주면 XML형태로 저장이 됩니다.

그 다음 Open Dir 혹은 Open을 통해 위에서 수집한 Custom data 라벨링을 진행합니다.

 

이제 사진을 로드 했다면 라벨링을 진행합니다.

 

단축기 W를 통해 새로운 bounding box를 띄울 수 있습니다.

캡스톤을 위해 6000개의 라벨링을 진행했던 저의 개인적인 경험적인 팁을 알려드리자면

 

1. LabelImg를 끄면 아래 보이는 Label 정보가 다 날아가버립니다. 이전 정보 저장 안됩니다..ㅠㅠ

2. 1번의 이유 때문에 끄지 않는 것을 권장 드립니다. 특히 라벨이 많을 경우에는 더욱..!

3. 라벨의 수가 적은 경우에는 라벨의 순서를 적어둔 후 껐다 켰을 때 모든 라벨을 순서대로 입력을 해준 후 라벨링 작업을 진행하셔야 라벨이 섞이지 않습니다.

(* 중요: Table -> Longtable -> Person 순으로 라벨링했다가 종료 후 재실행 때 Person -> Table .. 순으로 섞어서 라벨링 할 경우 초반 데이터는 Table 0 Longtable 1 Person 2로, 후반 데이터는 Person 0 Table 1 이렇게 섞여버립니다)

4. 여러명이서 라벨링을 진행 할 경우 기준이 달라 정확하지 않은 탐지가 될 수 있습니다. 따라서 꼭 명확한 기준을 잡아주셔야 합니다.

(ex. A는 테이블을 테이블 다리까지 바운딩 박스로, B는 테이블의 윗부분만 바운딩 박스로 잡아둔다면 정확한 탐지가 불가능하겠죠?)

 

초반에 이 작업 때문에 엄청 시간을 날렸습니다. 기초적이지만 쉽게 놓치는 부분이기에 참고하시면 좋겠습니다.

 

저희는 테이블의 윗부분만 바운딩 박스를 잡았으며, 기본 table, longtable 2개의 라벨을 가지고 학습할 예정입니다.

+ longtable의 경우도 기준을 잡기가 매우 애매하기 때문에 확실한 기준이 필요했습니다.!

+ table의 경우에도 카메라의 위치때문에 기울어져있지만 테이블의 네 개의 점이 모두 포함되게 박스를 그려야 합니다.

작업이 끝났다면 저장을 해줍니다. 그러면 다음과 같이 Classes 파일이 생성됩니다. 순서대로 table이 0번, longtable이 1번입니다. 또한 바운딩 박스가 그려진 순서대로 다음과 같이 좌표가 찍혀있는 것을 알 수 있습니다. 이미지의 크기에 맞게 모두 0 ~ 1사이로 나타납니다. 순서대로 class_num, x,y 좌표 width, height를 나타냅니다.

 

다시한번 강조하지만 껐다가 키면 Classes의 정보가 날아가기 때문에 안끄는 것을 권장합니다..!

내용이 너무 길어져 2편에서 YOLOv5 Custom training을 보여드리겠습니다.

 

 

 

 

라벨링이 끝났다면 Custom Training Model 만들러가기.

 

YOLOv5 Custom Model 만들기(2) - Custom Model 학습

YOLO 커스텀 모델을 만들기 2번째 단계 -> Custom Model 만들기! 1번째 단계인 라벨링 작업은 하단 링크를 참조하세요 YOLOv5 Custom Model 만들기(1) - LabelImg 사용법 우선 version 별 YOLO 모델의 특징을 간단하

187cm.tistory.com

 

반응형

'Deep Learning (Computer Vision) > YOLO' 카테고리의 다른 글

YOLOv5 Custom Model 만들기(2) - Custom Model 학습  (9) 2022.09.12
YOLOv1 논문리뷰  (0) 2022.07.15